dizballanze

24 августа 2015

# Понедельник 62 твита

Всем привет! Эту неделю здесь с вами буду я @dizballanze. Спасибо @dcromster за приглашение.

10:11

Я Team Lead и backend разработчик (Python/Node.js). В последнее время больше Python 3.

10:11

Говорить будем про #Python, #OSS, котиков и другое )

10:11
@backendsecret если подключать экстеншен к ноде, в виде C кода, то гц к нему не прикасается ведь? Т.е. stop the world на этом участке нет?
10:46

Насколько я знаю GC в аддонах работает @Umren

10:47
@backendsecret скажи, ещё продолжается свистопляска между 2 и 3?
10:48

Python 2.7 по фичам зафиксирован, все новое появляется в 3й ветке и сейчас уже, ИМХО, новые проекты нужно начинать на 3ке @Stammru

10:51

Основная причина сидеть на 2.7 – поддержка пакетов, но сейчас уже очень многие пакеты поддерживают 3ку @Stammru

10:53

304/360 топовых пакетов в PyPI поддерживают Python3 py3readiness.org @Stammru

10:54

. @grevtsev @Stammru например, я ) Больше года на 3ке – полет нормальный

10:56

. @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

. @wootsup в последнее время больше веб-сервисы, RESTful API для мобильных приложений.

11:22
@backendsecret @Stammru а профит, профит-тот в чем?
11:26

. @grevtsev unicode, новые конструкции вроде yield from, причесанный API (вызов super без аргументов итд), улучшенная стандартная библиотека

11:31

. @grevtsev но куда важнее то, что дальнейшее развитие языка будет в 3й ветке, чтобы начинать проект сейчас на python 2 нужны веские причины

11:32
@grevtsev @backendsecret @Stammru «Вы все геронтофилы, один я д`Артаньян», конечно же :D
11:33
@backendsecret @grevtsev Я из-за этих улучшений однажды reduce потерял.

from functools import reduce :)
twitter.com/webholt/status…

11:36
@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

. @grevtsev @mktums EventPool + async/await :)

11:47

. @webholt пока не определился ) Интересно и функциональное и ООП, думаю есть смысл под задачу выбирать

11:50

. @webholt нет у меня почему-то любимой парадигмы, видимо я как Python – мультипарадигмальный :)

11:53
@backendsecret а с какими фреймворкаи ты работаешь
12:03

. @dmitr_y django, flask, webapp2 (для app engine проектов), express (Node.js).

12:04
@backendsecret Расскажи о best practice для python standalone app пожалуйста!
12:14

. @askJuise при разработке long running процессов на #python нужно много внимания уделять расходу памяти. Модель памяти CPython такова...

12:20

. @askJuise что память никогда не возвращается системе и нужно мониторить, чтобы такие процессы много памяти не выделяли.

12:20

. @askJuise ну и стандартные советы:

12:23

Пользуясь случаем попиарю свой 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 @backendsecret
13:37
@xomaa @backendsecret 2soseda.com - поиск комнаты или соседа для подселения
14:13
@backendsecret вот тот проектик для конвертации статейв пдфки про который я говорил github.com/polyx/HTMLtoPDF
14:20

. @dmitr_y кстати вот хороший пост о том, как правильно распространять cli-утилиты на Python
gehrcke.de/2014/02/distri…

14:21
@backendsecret самодельный аналог HoundCI для Atlassian Stash github.com/vassilevsky/fa… production ready, но ещё не 1.0
15:52

Кто что думает про type annotations в Python? ИМХО, фича не особо нужная.

17:57

Data 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 твитов

. @mktums согласен

11:07

Coding style для контрибьютеров Django очень ок. Разумные отступления от PEP8 + специфичные для Django дополнения docs.djangoproject.com/en/1.8/interna…

11:13

Недавно углубился в системное программирование под linux и сокеты. Мне кажется всегда полезно копнуть на уровень ниже чем обычно работаешь.

11:50

SSH Kung Fu
blog.tjll.net/ssh-kung-fu/
много интересных способов использования ssh

12:07
было интересно почитать про использование nginx как обработчик contact form. Есть другие варианты такого подхода? @backendsecret

dizballanze.com/drugoe/primene… twitter.com/RusAlexander/s…

14:02

Есть такой проект openresty.org, включает множество компонентов и позволяет разрабатывать полноценные проекты на lua под Nginx

14:04
Деплой через `git archive` или `git pull`?

cc @backendsecret

14:26

. @kmmbvnr использую git pull, но у git archive есть свои преимущества

14:29

HTTP Status Cats
flickr.com/photos/girliem…
котики, как и обещал )

16:02

. @RusAlexander крупный китайский e-commerce (вроде alibaba) используют openresty в продакшн

16:10
@backendsecret в догонку - песики :) httpstatusdogs.com
17: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
Хорошие советы о том как убедить начальство в необходимости рефакторинга :)

19:31

# Среда 52 твита

Что вы используете для dev-окружения? Для меня хорошо работает связка Vagrant+Ansible, которую также использую на CI для запуска тестов.

12:40

Минус работы из дома – соседи, которые затеяли громкий ремонт. Видимо сегодня придется работать из кафе.

13:08

Mock yourself, not your tests
hernantz.github.io/mock-yourself-…
Полезный пост о том, как не злоупотреблять моками при тестировании.

13:12
@backendsecret Очень хорошо! А то есть java стайл написания тестов, где мочится *все* и тестируется каждый implementation detail.
13:14
@backendsecret Такие тесты протухают очень быстро.
13:14
@backendsecret vagrant+puppet Какой CI используешь ?
13:17

Использую Team City на физическом сервере. После срабатывания хуков с гитхаба CI сервер запускает vagrant и затем тесты в нем
@NilzBor

13:20
@backendsecret vagrant+chef
13:27
@backendsecret Зачем так сложно? virtualenv уже не достаточно? Или для изоляция баз данных и подобного?
13:28

Все верно, нужно еще изолировать БД и другие зависимости, которые не поставишь в virtualenv @freiksenet_ru

13:31

Несоответствия и странности #Python
gist.github.com/DRMacIver/4751…
нужно знать недостатки и подводные камни языка, на котором работаешь.

13:33

Крутая шпаргалка по форматированию строк в #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…

14:36

Советы по работе с ненадежными API
blog.instavest.com/working-with-u…

15:34
@backendsecret Не написали про кешинг. Если данные информационные (взять рейтинг с йелпа), самое оно его закешировать нафиг.
15:41

О том как disqus масштабировал #django до 8млрд хитов в месяц.
blog.disqus.com/post/621878061…
Правда там больше про #varnish, но всеравно интересно

17:03

Кто как мониторит свою продуктивность? Я уже больше года использую rescuetime.com.

17:25

Во время сдачи проектов бывает такая статистика: pic.twitter.com/bexQdzlSN5

17:25
@backendsecret wakatime.com, но там только время в текстовом редакторе
17:33

И как, дополнительные метрики по коду бывают полезными? @ewnd9

17:33
Завтра в @GolangShow будет гость из Docker - и ему можно задавать вопросы! golangshow.com/post/2015/08-2… RT! /cc @rubyunderhood @backendsecret
18:53
@backendsecret откуда информацию по разработке черпаешь? часто вижу интересные вещи из pocket у тебя ;)
18:53

Раньше читал RSS, сейчас на это времени не хватает и читаю только weekly рассылки ну и твиттер @zulus

18:55

как там настраивать, какая активность является продуктивной? В rescuetime приходится часто вручную отмечать @gruz0

18:59

А вот здесь можно посмотреть список таких еженедельных рассылок на разные темы github.com/jondot/awesome…
@michael_borisov @zulus

19:01

да, с приложениями нет проблем, с сайтами уже сложнее, приходится раз в неделю поднастраивать, чтобы статистика не портилась @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

.@olebedev в посте вполне удачные способы оптимизации для django описаны.

21:14

.@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…

21:27

.@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 @iamstarkov
21:57

Задачи ставлю в трекер (basecamp) с назначенным сроком выполнения. Когда задача выполнена - разработчик открывает PR, тесты в котором ...

22:01

...должны быть зелеными и линтеры все должны успешно проходить. Далее цикл код-ревью и передача задачи в тестирование.

22:01
Спасибо @iamstarkov ! Сайт починен backendsecret.ru/stats/
22:05

Список всех awesome списков %)
getawesomeness.com

22:12
@backendsecret это какая-то подделка. вот настоящий github.com/sindresorhus/a…

Да, этот похоже более полный twitter.com/iamstarkov/sta…

22:15

Недавно перевел шпаргалку по #Vim на русский
vim.rtorr.com/lang/ru/

23:00

# Четверг 20 твитов

Вот еще полезный ресурс по #vim
vimawesome.com
каталог плагинов с категориями и поиском

10:29

Программист получил работу в Google решив спрятанный в поиске тест nyv.me/l/yX4B

10:45

Недавно прочитал "Just for fun".
Отличная книга, интересно узнать про историю unix, linux и OSS.
amazon.com/Just-Fun-Story…

11:39

В #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

15:29

Протокол обычно критикуют за то, что он лишь решает старые проблемы 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…
интересный юзкейс от разработчиков железа

18:30
@jsunderhood @mishcherin @psyw @SelenIT2 отличная практика, надо предложить @backendsecret ввести подобное.
18:55

Code review best practice
kevinlondon.com/2015/05/05/cod…

19:30

Как писать модули для #python на Go 1.5 :O
blog.filippo.io/building-pytho…

20:30

Import and use #python packages in #nodejs.
github.com/mateogianolio/…

21:29

# Пятница 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)

12:06
@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

20:33

# Суббота 7 твитов

Репозиторий с множеством бесплатных книг
github.com/vhf/free-progr…

12:24

thefuck - магическая утилита для исправления опечаток при работе в консоле :)
github.com/nvbn/thefuck pic.twitter.com/csIzQVtEWX

13:05

Я правильно понимаю, что с появлением ES6 всякие #coffeescript больше не нужны?

13:35

Коллекция шаблонов проектирования на #python
github.com/faif/python-pa…

14:10
@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…

15:55

# Воскресенье 4 твита

Сегодня последний день веду @backendsecret. Так что если есть вопросы – не стесняемся :)

11:54

Крутые цветовые темы для текстовых редакторов (Visual Studio, Eclipse, Qt, #SublimeText, LiteIDE, #Vim, Notepad++)
themebow.com

15:27

Моя неделя на @backendsecret заканчивается через считанные часы. Всем спасибо за активность :)

20:21

Напоминаю что с вами был @dizballanze, если я кому-то вдруг не успел надоесть за эту неделю – подписывайтесь :)

20:22

github.com

other


@de_gis