dizballanze

24 августа 2015

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

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

7:11

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

7:11

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

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

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

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

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

7:51

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

7:53

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

7:54

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

7:56

. @freiksenet_ru @Stammru не все идеально, конечно, но новая модель типов данных str/unicode мне кажется более удобной и правильной

8:03

. @freiksenet_ru @Stammru это довольно старый пост, интересно было бы увидеть свежую статистику

8:04

На тему Python 3 – в версии 3.5 будет очень удобный синтаксис для coroutines (async/await), то чего реально не хватало.

8:09
@backendsecret Вот ИМХО главная проблема питона - все двигается медленно. В JS async/await появился через месяц после появления стандарта.
8:17
@backendsecret В питоне надо годами ждать ценных изменений.
8:17

. @freiksenet_ru да, но в 3й ветке все равно добавление новых фич довольно быстро идет. От PEP до реализации async/await около недели

8:20
@backendsecret какого типа проекты пишешь на Python и node.js? Какие то веб-сервисы или просто сайтики?
8:20

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

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

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

8:31

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

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

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

8:36
@backendsecret давайте поговорим про yield from и его применении в продакшне! Серьезно. Я не пробовал просто. Можно пример? :)
8:36

. @grevtsev yield from в асинхронном io удобно использовать, чтобы делегировать часть функционала другому генератору

8:42
@backendsecret node.js и python в разных проектах или вместе бывает?
8:43

. @dmzkrsk бывало что использовал в одном проекте node.js и python. Чтобы, например, добавить какие-нибудь RT-фичи в дефолтный джанго-апп.

8:44

. @dmzkrsk в основном из-за того, что было много опыта с node.js и мало опыта с асинхронным python. Так смысла не много зоопарк разводить

8:45
@backendsecret К какой парадигме больше душа лежит?
8:46

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

8:47

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

8:50

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

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

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

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

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

9:20

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

9:20

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

9:23

Пользуясь случаем попиарю свой pet-проект: debugmail.io. Сервис для совместной работы над email рассылками в dev окружении.

9:41

А какие у вас pet-проекты? Присылайте ссылки с описанием – буду ретвитить.

9:42
@backendsecret датамайнинг, огромные графы с шахматами и куртизанками. Но не опенсорсю пока что)
9:45
@backendsecret *шутка про pet-проекты, идущие в школу через неделю*
9:45
@backendsecret mkdev.me, платформа для менторства + курсы по веб-разработке
10:06
@backendsecret yupe-project.ru - движочек для сайтиков и интернет-магазинов )
10:32
@backendsecret сегодня собираюсь перевести маленькую утилиту для конвертации статей на сайтах в пдф, позже дам ссылучку
10:32
kurs585.ru и мобильное предложение к нему. Полезно ювелирам на каждый день расчет цены золота в пробу 585 @backendsecret
10:37
@xomaa @backendsecret 2soseda.com - поиск комнаты или соседа для подселения
11:13
@backendsecret вот тот проектик для конвертации статейв пдфки про который я говорил github.com/polyx/HTMLtoPDF
11:20

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

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

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

14:57

Data streaming in #Python: generators, iterators, iterables rare-technologies.com/data-streaming…

15:48
@backendsecret дебажить проще, проверка на тип вывалиться раньше, а не после n вызовов
15:54

. @sanek_kh насколько я знаю никаких проверок CPython не делает, т.е. это что-то вроде комментариев

15:54
@backendsecret Для js хорошо работает (Flow), для питона думаю тоже. Считай это ещё одним линтером.
15:54

. @freiksenet_ru я так и воспринимаю, но мне кажется оно того не стоит, слишком много дополнительного кода, который мешает читабельности

15:55
@backendsecret Дело привычки, это может добавить читабельности если в коде много словарей и списков, тк ясно что внутри.
15:57

. @freiksenet_ru да, но в отличии от языков со статической типизацией – Python не валидирует аннотации и соответсвенно

15:58

. @freiksenet_ru поддерживать аннотации в актуальном состоянии будет достаточно сложно

15:58
@backendsecret Да, я это в теории. Нужен валидатор как Flow, с выводом типов.
16:00
@backendsecret В текущем состоянии согласен что бесполезно.
16:00
@backendsecret aif.io либа по анализу естественного языка, планируем делать чато-бота
17:22

# Вторник 16 твитов

. @mktums согласен

8:07

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

8:13

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

8:50

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

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

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

11:02

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

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

cc @backendsecret

11:26

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

11:29

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

13:02

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

13:10
@backendsecret в догонку - песики :) httpstatusdogs.com
14:28
@backendsecret @RusAlexander cloudflare юзают. Собсно основной разработчик openresty @agentzh сам оттуда.
14:53

Если кто еще не видел – скриншоты обновленной админки #Django 1.9. pic.twitter.com/3Y6KncKuMh

14:55

Самое главное, что разметка шаблонов не изменилась – отличная новость для разработчиков пакетов под Django.

15:05
@backendsecret оформление админки уже сейчас можно попробовать. pypi.python.org/pypi/django-fl…
15:53

Large scale refactoring pocket.co/sojKY6
Хорошие советы о том как убедить начальство в необходимости рефакторинга :)

16:31

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

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

9:40

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

10:08

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

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

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

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

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

10:31

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

10:33

Крутая шпаргалка по форматированию строк в #Python pyformat.info

10:37
@backendsecret вот еще неплохая библиотека для скрейпинга github.com/datalib/libext…
11:17

В uwsgi оч много фич – task queue, reverse proxy, static files serving, caching.Для небольшого проекта самое то, чтобы не разводить зоопарк

11:35

Ссылка по этой теме
lincolnloop.com/blog/uwsgi-swi…

11:36

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

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

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

14:03

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

14:25

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

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

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

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

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

15:55

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

15:59

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

16:01

да, с приложениями нет проблем, с сайтами уже сложнее, приходится раз в неделю поднастраивать, чтобы статистика не портилась @gruz0

16:03

. @mktums раньше тоже чисто его использовал, потом надоели баги в стиле "а на моей тачке работает" )

16:10

.@olebedev у #Django своя ниша - более-менее типичные контентные сайты. Что-то более кастомное, особенно с NoSQL я бы не стал делать.

17:46

.@olebedev @mikashkin для проектов своей ниши у #django много преимуществ, куча батареек проверенных, быстрая разработка.

17:57

.@olebedev @mikashkin Но нужно понимать, что это все не бесплатно и что-то сильно кастомное будет больно делать.

17:57

.@rusgautama @olebedev есть Django non-rel, но оно кажется совершенно не юзабельным. Проще взять Flask+Mongoengine.

18:04

.@olebedev @mikashkin также как на любом full-featured фреймворке

18:04

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

18:14

.@l0kix2 @olebedev @mikashkin например, если проект должен использовать БД, которую не поддерживает ORM.

18:16

.@olebedev @l0kix2 @mikashkin realtime - согласен, фоновые задачи вполне ок Celery решает.

18:17

.@olebedev @rusgautama к счастью в этом направлении есть улучшения

18:21

.@olebedev #golang не панацея, у всех технологий своя сфера для применения и свою преимущества и недостатки.

18:26

. @rusgautama @olebedev пост на эту тему, автор рассказывает, как можно преодолеть этот недостаток #django
aeracode.org/2015/6/17/beyo…

18:27

.@rusgautama @olebedev сейчас, ИМХО, для асинхронного io нужно смотреть в сторону asyncio, который появился в 3.4

18:30

.@l0kix2 @olebedev @mikashkin никакой, ИМХО, в таких случаях проще использовать что-то легкое, чем пытаться делать на django

18:33

.@l0kix2 @olebedev @mikashkin т.е. это не специфичные для django проблемы, это проблемы большинства подобных фреймворков

18:34

.@olebedev @rusgautama никакой сложности, вполне удачная реализация, поддержка async/await

18:35
@backendsecret а ты рассказывал как контролируешь делегированные задачи? @rubyunderhood @iamstarkov
18:57

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

19:01

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

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

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

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

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

19:15

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

20:00

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

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

7:29

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

7:45

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

8:39

В #pocket появилась вкладка "Рекомендации"! pic.twitter.com/ONGodO1zJ7

11:26

Есть большая вероятность, что всем нам придется переходить на HTTP/2 в скором будущем docs.google.com/presentation/d…

12:19

Протокол в целом стал намного более сложным, по сравнению с относительно простым и текстовым HTTP/1.1.

12:21

Как вам кажется стоит ли использовать HTTP/2 с учетом его сложности и усилий на обновление инфраструктуры?

12:23

Еще и придется отказаться от костылей используемых годами - вроде спрайтов, склеивание css/js, domain sharding.

12:24

.@Borovikov вероятно придется использовать TLS, т.к. браузеры видимо будут только секьюрный HTTP/2 реализовывать.

12:29

Всякие прокси/варниши/фаерволы нужно будет переписывать и быстро это не получится сделать.
@Borovikov

12:29

Протокол обычно критикуют за то, что он лишь решает старые проблемы HTTP, вместо того, чтобы нацелеваться на будущее varnish-cache.org/docs/trunk/phk…

12:35

.@andreypopp @shuvalov_anton в HTTP/2 не нужно отдельные соединения делать для js/css, а значит можно грузить только то что нужно

14:12

.@andreypopp @shuvalov_anton а не все css/js хотя на странице возможно только малая часть используется

14:12

.@andreypopp @shuvalov_anton да, но с HTTP/2 накладные расходы на "грузить то что нужно" уменьшаются

14:18

.@andreypopp @shuvalov_anton согласен

14:20

Использование #python без ОС
lwn.net/Articles/64124…
интересный юзкейс от разработчиков железа

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

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

16:30

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

17:30

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

18:29

# Пятница 9 твитов

А вы пользуетесь какими-либо техниками повышения производительности? GTD/Pomidoro/etc?

9:01

Для меня работает только техника Get Shit Done aka "соберись, тряпка и иди работай" :)

9:02

Генератор переключатель на #python:

def toggle():
while True:
yield True
yield False

g = toggle()
next(g)

9:06
@backendsecret недавно начал использовать GTD. Pomodoro использую, но только когда сроки горят
9:22

.@lowl4tency тоже использую @rescuetime, обсуждали эту тему пару дней назад

9:36
Мне очень нравится техника «Если буду волоёбить, то выгонят ссаными тряпками и я не найду работу потому что я дно» 😊 twitter.com/backendsecret/…
10:06
А вы деплоите на продакшн по пятницам, комрады? :-D // cc @rubyunderhood, @backendsecret

Регулярно :) twitter.com/gruz0/status/6…

12:24
@backendsecret, когда какое-нибудь УГ пилю — ставлю помидорки. Но обычно и так код затягивает, и получается продуктивно.
12:59

Кто-то спрашивал про long-running процессы на #python, вот проект на тему:
github.com/walkr/oi

17:33

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

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

9:24

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

10:05

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

10:35

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

11:10
@backendsecret Коллекция решений wordcount в разных стилях программирования на #python github.com/crista/exercis…
11:42

Если в вашей #github репе неправильно определяется язык – посмотрите сюда github.com/github/linguist

12:35

Письмо Линуса в начале разработке #linux
"small poll for my new operating system"
groups.google.com/forum/#!origin…

12:55

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

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

8:54

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

12:27

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

17:21

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

17:22

github.com

other


@de_gis