# Понедельник 62 твита
Всем привет! Эту неделю здесь с вами буду я @dizballanze. Спасибо @dcromster за приглашение.
10:11Я Team Lead и backend разработчик (Python/Node.js). В последнее время больше Python 3.
10:11@backendsecret если подключать экстеншен к ноде, в виде C кода, то гц к нему не прикасается ведь? Т.е. stop the world на этом участке нет?10:46
@backendsecret скажи, ещё продолжается свистопляска между 2 и 3?10:48
Python 2.7 по фичам зафиксирован, все новое появляется в 3й ветке и сейчас уже, ИМХО, новые проекты нужно начинать на 3ке @Stammru
10:51Основная причина сидеть на 2.7 – поддержка пакетов, но сейчас уже очень многие пакеты поддерживают 3ку @Stammru
10:53304/360 топовых пакетов в PyPI поддерживают Python3 py3readiness.org @Stammru
10:54. @freiksenet_ru @Stammru не все идеально, конечно, но новая модель типов данных str/unicode мне кажется более удобной и правильной
11:03. @freiksenet_ru @Stammru это довольно старый пост, интересно было бы увидеть свежую статистику
11:04На тему Python 3 – в версии 3.5 будет очень удобный синтаксис для coroutines (async/await), то чего реально не хватало.
11:09@backendsecret Вот ИМХО главная проблема питона - все двигается медленно. В JS async/await появился через месяц после появления стандарта.11:17
@backendsecret В питоне надо годами ждать ценных изменений.11:17
. @freiksenet_ru да, но в 3й ветке все равно добавление новых фич довольно быстро идет. От PEP до реализации async/await около недели
11:20@backendsecret какого типа проекты пишешь на Python и node.js? Какие то веб-сервисы или просто сайтики?11:20
@backendsecret @Stammru а профит, профит-тот в чем?11:26
. @grevtsev unicode, новые конструкции вроде yield from, причесанный API (вызов super без аргументов итд), улучшенная стандартная библиотека
11:31. @grevtsev но куда важнее то, что дальнейшее развитие языка будет в 3й ветке, чтобы начинать проект сейчас на python 2 нужны веские причины
11:32@grevtsev @backendsecret @Stammru «Вы все геронтофилы, один я д`Артаньян», конечно же :D11:33
@backendsecret @grevtsev Я из-за этих улучшений однажды reduce потерял.
from functools import reduce :)
twitter.com/webholt/status…
@backendsecret давайте поговорим про yield from и его применении в продакшне! Серьезно. Я не пробовал просто. Можно пример? :)11:36
. @grevtsev yield from в асинхронном io удобно использовать, чтобы делегировать часть функционала другому генератору
11:42@backendsecret node.js и python в разных проектах или вместе бывает?11:43
. @dmzkrsk бывало что использовал в одном проекте node.js и python. Чтобы, например, добавить какие-нибудь RT-фичи в дефолтный джанго-апп.
11:44. @dmzkrsk в основном из-за того, что было много опыта с node.js и мало опыта с асинхронным python. Так смысла не много зоопарк разводить
11:45@backendsecret К какой парадигме больше душа лежит?11:46
. @webholt пока не определился ) Интересно и функциональное и ООП, думаю есть смысл под задачу выбирать
11:50. @webholt нет у меня почему-то любимой парадигмы, видимо я как Python – мультипарадигмальный :)
11:53@backendsecret а с какими фреймворкаи ты работаешь12:03
@backendsecret Расскажи о best practice для python standalone app пожалуйста!12:14
. @askJuise при разработке long running процессов на #python нужно много внимания уделять расходу памяти. Модель памяти CPython такова...
12:20. @askJuise что память никогда не возвращается системе и нужно мониторить, чтобы такие процессы много памяти не выделяли.
12:20Пользуясь случаем попиарю свой pet-проект: debugmail.io. Сервис для совместной работы над email рассылками в dev окружении.
12:41А какие у вас pet-проекты? Присылайте ссылки с описанием – буду ретвитить.
12:42@backendsecret датамайнинг, огромные графы с шахматами и куртизанками. Но не опенсорсю пока что)12:45
@backendsecret *шутка про pet-проекты, идущие в школу через неделю*12:45
@backendsecret mkdev.me, платформа для менторства + курсы по веб-разработке13:06
@backendsecret yupe-project.ru - движочек для сайтиков и интернет-магазинов )13:32
@backendsecret сегодня собираюсь перевести маленькую утилиту для конвертации статей на сайтах в пдф, позже дам ссылучку13:32
kurs585.ru и мобильное предложение к нему. Полезно ювелирам на каждый день расчет цены золота в пробу 585 @backendsecret13:37
@xomaa @backendsecret 2soseda.com - поиск комнаты или соседа для подселения14:13
@backendsecret вот тот проектик для конвертации статейв пдфки про который я говорил github.com/polyx/HTMLtoPDF14:20
. @dmitr_y кстати вот хороший пост о том, как правильно распространять cli-утилиты на Python
gehrcke.de/2014/02/distri…
@backendsecret самодельный аналог HoundCI для Atlassian Stash github.com/vassilevsky/fa… production ready, но ещё не 1.015:52
Кто что думает про type annotations в Python? ИМХО, фича не особо нужная.
17:57Data streaming in #Python: generators, iterators, iterables rare-technologies.com/data-streaming…
18:48@backendsecret дебажить проще, проверка на тип вывалиться раньше, а не после n вызовов18:54
. @sanek_kh насколько я знаю никаких проверок CPython не делает, т.е. это что-то вроде комментариев
18:54@backendsecret Для js хорошо работает (Flow), для питона думаю тоже. Считай это ещё одним линтером.18:54
. @freiksenet_ru я так и воспринимаю, но мне кажется оно того не стоит, слишком много дополнительного кода, который мешает читабельности
18:55@backendsecret Дело привычки, это может добавить читабельности если в коде много словарей и списков, тк ясно что внутри.18:57
. @freiksenet_ru да, но в отличии от языков со статической типизацией – Python не валидирует аннотации и соответсвенно
18:58. @freiksenet_ru поддерживать аннотации в актуальном состоянии будет достаточно сложно
18:58@backendsecret Да, я это в теории. Нужен валидатор как Flow, с выводом типов.19:00
@backendsecret В текущем состоянии согласен что бесполезно.19:00
@backendsecret aif.io либа по анализу естественного языка, планируем делать чато-бота20:22
# Вторник 16 твитов
Coding style для контрибьютеров Django очень ок. Разумные отступления от PEP8 + специфичные для Django дополнения docs.djangoproject.com/en/1.8/interna…
11:13Недавно углубился в системное программирование под linux и сокеты. Мне кажется всегда полезно копнуть на уровень ниже чем обычно работаешь.
11:50SSH Kung Fu
blog.tjll.net/ssh-kung-fu/
много интересных способов использования ssh
было интересно почитать про использование nginx как обработчик contact form. Есть другие варианты такого подхода? @backendsecret
dizballanze.com/drugoe/primene… twitter.com/RusAlexander/s…
14:02Есть такой проект openresty.org, включает множество компонентов и позволяет разрабатывать полноценные проекты на lua под Nginx
14:04Деплой через `git archive` или `git pull`?14:26
HTTP Status Cats
flickr.com/photos/girliem…
котики, как и обещал )
. @RusAlexander крупный китайский e-commerce (вроде alibaba) используют openresty в продакшн
16:10@backendsecret в догонку - песики :) httpstatusdogs.com17:28
@backendsecret @RusAlexander cloudflare юзают. Собсно основной разработчик openresty @agentzh сам оттуда.17:53
Если кто еще не видел – скриншоты обновленной админки #Django 1.9. pic.twitter.com/3Y6KncKuMh
17:55Самое главное, что разметка шаблонов не изменилась – отличная новость для разработчиков пакетов под Django.
18:05@backendsecret оформление админки уже сейчас можно попробовать. pypi.python.org/pypi/django-fl…18:53
Large scale refactoring pocket.co/sojKY6
Хорошие советы о том как убедить начальство в необходимости рефакторинга :)
# Среда 52 твита
Что вы используете для dev-окружения? Для меня хорошо работает связка Vagrant+Ansible, которую также использую на CI для запуска тестов.
12:40Минус работы из дома – соседи, которые затеяли громкий ремонт. Видимо сегодня придется работать из кафе.
13:08Mock yourself, not your tests
hernantz.github.io/mock-yourself-…
Полезный пост о том, как не злоупотреблять моками при тестировании.
@backendsecret Очень хорошо! А то есть java стайл написания тестов, где мочится *все* и тестируется каждый implementation detail.13:14
@backendsecret Такие тесты протухают очень быстро.13:14
@backendsecret vagrant+puppet Какой CI используешь ?13:17
Использую Team City на физическом сервере. После срабатывания хуков с гитхаба CI сервер запускает vagrant и затем тесты в нем
@NilzBor
@backendsecret vagrant+chef13:27
@backendsecret Зачем так сложно? virtualenv уже не достаточно? Или для изоляция баз данных и подобного?13:28
Все верно, нужно еще изолировать БД и другие зависимости, которые не поставишь в virtualenv @freiksenet_ru
13:31Несоответствия и странности #Python
gist.github.com/DRMacIver/4751…
нужно знать недостатки и подводные камни языка, на котором работаешь.
Крутая шпаргалка по форматированию строк в #Python pyformat.info
13:37@backendsecret вот еще неплохая библиотека для скрейпинга github.com/datalib/libext…14:17
В uwsgi оч много фич – task queue, reverse proxy, static files serving, caching.Для небольшого проекта самое то, чтобы не разводить зоопарк
14:35Ссылка по этой теме
lincolnloop.com/blog/uwsgi-swi…
Советы по работе с ненадежными API
blog.instavest.com/working-with-u…
@backendsecret Не написали про кешинг. Если данные информационные (взять рейтинг с йелпа), самое оно его закешировать нафиг.15:41
О том как disqus масштабировал #django до 8млрд хитов в месяц.
blog.disqus.com/post/621878061…
Правда там больше про #varnish, но всеравно интересно
Кто как мониторит свою продуктивность? Я уже больше года использую rescuetime.com.
17:25Во время сдачи проектов бывает такая статистика: pic.twitter.com/bexQdzlSN5
17:25@backendsecret wakatime.com, но там только время в текстовом редакторе17:33
Завтра в @GolangShow будет гость из Docker - и ему можно задавать вопросы! golangshow.com/post/2015/08-2… RT! /cc @rubyunderhood @backendsecret18:53
@backendsecret откуда информацию по разработке черпаешь? часто вижу интересные вещи из pocket у тебя ;)18:53
Раньше читал RSS, сейчас на это времени не хватает и читаю только weekly рассылки ну и твиттер @zulus
18:55как там настраивать, какая активность является продуктивной? В rescuetime приходится часто вручную отмечать @gruz0
18:59А вот здесь можно посмотреть список таких еженедельных рассылок на разные темы github.com/jondot/awesome…
@michael_borisov @zulus
да, с приложениями нет проблем, с сайтами уже сложнее, приходится раз в неделю поднастраивать, чтобы статистика не портилась @gruz0
19:03. @mktums раньше тоже чисто его использовал, потом надоели баги в стиле "а на моей тачке работает" )
19:10.@olebedev у #Django своя ниша - более-менее типичные контентные сайты. Что-то более кастомное, особенно с NoSQL я бы не стал делать.
20:46.@olebedev @mikashkin для проектов своей ниши у #django много преимуществ, куча батареек проверенных, быстрая разработка.
20:57.@olebedev @mikashkin Но нужно понимать, что это все не бесплатно и что-то сильно кастомное будет больно делать.
20:57.@rusgautama @olebedev есть Django non-rel, но оно кажется совершенно не юзабельным. Проще взять Flask+Mongoengine.
21:04.@olebedev @mikashkin также как на любом full-featured фреймворке
21:04.@l0kix2 @olebedev @mikashkin например, если проект должен использовать БД, которую не поддерживает ORM.
21:16.@olebedev @l0kix2 @mikashkin realtime - согласен, фоновые задачи вполне ок Celery решает.
21:17.@olebedev @rusgautama к счастью в этом направлении есть улучшения
21:21.@olebedev #golang не панацея, у всех технологий своя сфера для применения и свою преимущества и недостатки.
21:26. @rusgautama @olebedev пост на эту тему, автор рассказывает, как можно преодолеть этот недостаток #django
aeracode.org/2015/6/17/beyo…
.@rusgautama @olebedev сейчас, ИМХО, для асинхронного io нужно смотреть в сторону asyncio, который появился в 3.4
21:30.@l0kix2 @olebedev @mikashkin никакой, ИМХО, в таких случаях проще использовать что-то легкое, чем пытаться делать на django
21:33.@l0kix2 @olebedev @mikashkin т.е. это не специфичные для django проблемы, это проблемы большинства подобных фреймворков
21:34.@olebedev @rusgautama никакой сложности, вполне удачная реализация, поддержка async/await
21:35@backendsecret а ты рассказывал как контролируешь делегированные задачи? @rubyunderhood @iamstarkov21:57
Задачи ставлю в трекер (basecamp) с назначенным сроком выполнения. Когда задача выполнена - разработчик открывает PR, тесты в котором ...
22:01...должны быть зелеными и линтеры все должны успешно проходить. Далее цикл код-ревью и передача задачи в тестирование.
22:01Спасибо @iamstarkov ! Сайт починен backendsecret.ru/stats/22:05
Список всех awesome списков %)
getawesomeness.com
@backendsecret это какая-то подделка. вот настоящий github.com/sindresorhus/a…
Да, этот похоже более полный twitter.com/iamstarkov/sta…
22:15Недавно перевел шпаргалку по #Vim на русский
vim.rtorr.com/lang/ru/
# Четверг 20 твитов
Вот еще полезный ресурс по #vim
vimawesome.com
каталог плагинов с категориями и поиском
Программист получил работу в Google решив спрятанный в поиске тест nyv.me/l/yX4B
10:45Недавно прочитал "Just for fun".
Отличная книга, интересно узнать про историю unix, linux и OSS.
amazon.com/Just-Fun-Story…
В #pocket появилась вкладка "Рекомендации"! pic.twitter.com/ONGodO1zJ7
14:26Есть большая вероятность, что всем нам придется переходить на HTTP/2 в скором будущем docs.google.com/presentation/d…
15:19Протокол в целом стал намного более сложным, по сравнению с относительно простым и текстовым HTTP/1.1.
15:21Как вам кажется стоит ли использовать HTTP/2 с учетом его сложности и усилий на обновление инфраструктуры?
15:23Еще и придется отказаться от костылей используемых годами - вроде спрайтов, склеивание css/js, domain sharding.
15:24.@Borovikov вероятно придется использовать TLS, т.к. браузеры видимо будут только секьюрный HTTP/2 реализовывать.
15:29Всякие прокси/варниши/фаерволы нужно будет переписывать и быстро это не получится сделать.
@Borovikov
Протокол обычно критикуют за то, что он лишь решает старые проблемы HTTP, вместо того, чтобы нацелеваться на будущее varnish-cache.org/docs/trunk/phk…
15:35.@andreypopp @shuvalov_anton в HTTP/2 не нужно отдельные соединения делать для js/css, а значит можно грузить только то что нужно
17:12.@andreypopp @shuvalov_anton а не все css/js хотя на странице возможно только малая часть используется
17:12.@andreypopp @shuvalov_anton да, но с HTTP/2 накладные расходы на "грузить то что нужно" уменьшаются
17:18.@andreypopp @shuvalov_anton согласен
17:20Использование #python без ОС
lwn.net/Articles/64124…
интересный юзкейс от разработчиков железа
@jsunderhood @mishcherin @psyw @SelenIT2 отличная практика, надо предложить @backendsecret ввести подобное.18:55
Code review best practice
kevinlondon.com/2015/05/05/cod…
Как писать модули для #python на Go 1.5 :O
blog.filippo.io/building-pytho…
Import and use #python packages in #nodejs.
github.com/mateogianolio/…
# Пятница 9 твитов
А вы пользуетесь какими-либо техниками повышения производительности? GTD/Pomidoro/etc?
12:01Для меня работает только техника Get Shit Done aka "соберись, тряпка и иди работай" :)
12:02Генератор переключатель на #python:
def toggle():
while True:
yield True
yield False
g = toggle()
next(g)
@backendsecret недавно начал использовать GTD. Pomodoro использую, но только когда сроки горят12:22
.@lowl4tency тоже использую @rescuetime, обсуждали эту тему пару дней назад
12:36Мне очень нравится техника «Если буду волоёбить, то выгонят ссаными тряпками и я не найду работу потому что я дно» 😊 twitter.com/backendsecret/…13:06
А вы деплоите на продакшн по пятницам, комрады? :-D // cc @rubyunderhood, @backendsecret
Регулярно :) twitter.com/gruz0/status/6…
15:24@backendsecret, когда какое-нибудь УГ пилю — ставлю помидорки. Но обычно и так код затягивает, и получается продуктивно.15:59
Кто-то спрашивал про long-running процессы на #python, вот проект на тему:
github.com/walkr/oi
# Суббота 7 твитов
Репозиторий с множеством бесплатных книг
github.com/vhf/free-progr…
thefuck - магическая утилита для исправления опечаток при работе в консоле :)
github.com/nvbn/thefuck pic.twitter.com/csIzQVtEWX
Я правильно понимаю, что с появлением ES6 всякие #coffeescript больше не нужны?
13:35Коллекция шаблонов проектирования на #python
github.com/faif/python-pa…
@backendsecret Коллекция решений wordcount в разных стилях программирования на #python github.com/crista/exercis…14:42
Если в вашей #github репе неправильно определяется язык – посмотрите сюда github.com/github/linguist
15:35Письмо Линуса в начале разработке #linux
"small poll for my new operating system"
groups.google.com/forum/#!origin…
# Воскресенье 4 твита
Сегодня последний день веду @backendsecret. Так что если есть вопросы – не стесняемся :)
11:54Крутые цветовые темы для текстовых редакторов (Visual Studio, Eclipse, Qt, #SublimeText, LiteIDE, #Vim, Notepad++)
themebow.com
Моя неделя на @backendsecret заканчивается через считанные часы. Всем спасибо за активность :)
20:21Напоминаю что с вами был @dizballanze, если я кому-то вдруг не успел надоесть за эту неделю – подписывайтесь :)
20:22# Ссылки
github.com
- https://github.com/polyx/HTMLtoPDF
- https://github.com/vassilevsky/face_control
- https://github.com/datalib/libextract
- https://github.com/jondot/awesome-weekly
- https://github.com/mateogianolio/node-pip
- https://github.com/walkr/oi
- https://github.com/vhf/free-programming-books
- https://github.com/nvbn/thefuck
- https://github.com/faif/python-patterns
- https://github.com/crista/exercises-in-programming-style
- https://github.com/github/linguist
other
- http://py3readiness.org/
- https://debugmail.io/
- http://yupe-project.ru/
- http://www.kurs585.ru/
- http://2soseda.com/
- https://gehrcke.de/2014/02/distributing-a-python-command-line-application/
- http://rare-technologies.com/data-streaming-in-python-generators-iterators-iterables/
- http://aif.io/
- https://docs.djangoproject.com/en/1.8/internals/contributing/writing-code/coding-style/
- http://blog.tjll.net/ssh-kung-fu/
- http://dizballanze.com/drugoe/primenenie-nginx-lua-dlia-obrabotki-prostykh-form/
- https://openresty.org/
- https://www.flickr.com/photos/girliemac/sets/72157628409467125
- http://httpstatusdogs.com/
- https://pypi.python.org/pypi/django-flat-theme
- http://pocket.co/sojKY6
- http://hernantz.github.io/mock-yourself-not-your-tests.html
- https://gist.github.com/DRMacIver/47519854a0e62538b542
- https://pyformat.info/
- https://lincolnloop.com/blog/uwsgi-swiss-army-knife/
- http://blog.instavest.com/working-with-unreliable-web-apis
- http://blog.disqus.com/post/62187806135/scaling-django-to-8-billion-page-views
- https://www.rescuetime.com/
- https://wakatime.com/
- http://golangshow.com/post/2015/08-26-before-014/
- http://www.aeracode.org/2015/6/17/beyond-request-response/
- https://basecamp.com/tour
- https://backendsecret.ru/stats/
- http://getawesomeness.com/
- http://vim.rtorr.com/lang/ru/
- http://vimawesome.com/
- http://nyv.me/l/yX4B
- http://www.amazon.com/Just-Fun-Story-Accidental-Revolutionary/dp/0066620732
- https://docs.google.com/presentation/d/1r7QXGYOLCh4fcUq0jDdDwKJWNqWK1o4xMtYpKZCJYjM/present?slide=id.p19
- https://www.varnish-cache.org/docs/trunk/phk/http20.html
- http://lwn.net/Articles/641244/
- http://kevinlondon.com/2015/05/05/code-review-best-practices.html
- https://blog.filippo.io/building-python-modules-with-go-1-5/
- https://groups.google.com/forum/#!original/comp.os.minix/dlNtH7RRrGA/SwRavCzVE7gJ
- http://themebow.com/