Написал README к нашему старому проекту pgmigrate.
Кому-то интересно почитать подробнее о проекте?
taylor price
Phantogram Three
almost home

Product Placement

shark vs the universe
No title available
todays bird

oozey mess
"I'm Dorothy Gale from Kansas"
NASA
Color Me Curious
Keni
Cosimo Galluzzi
Fai_Ryy

Discoholic 🪩
noise dept.

Love Begins
untitled

Game Changer & Make Some Noise

#extradirty
seen from Saudi Arabia

seen from Saudi Arabia

seen from United Kingdom

seen from Germany

seen from Malaysia
seen from Malaysia
seen from Denmark
seen from Türkiye

seen from Russia

seen from Türkiye

seen from United States
seen from United Kingdom

seen from United States

seen from Germany

seen from United States
seen from United States

seen from Türkiye

seen from Türkiye
seen from Saudi Arabia
seen from Libya
@rushman-blog-blog
Написал README к нашему старому проекту pgmigrate.
Кому-то интересно почитать подробнее о проекте?
Небольшая, но очень правильная статья о не очень часто используемом паттерне Value Object, и неизменяемых объектах
Do not switch Python to Node.JS
Ребята из CloudKick рассказывают о том как заменили Python на NodeJS.
Мне их жалко.
Нет, я согласен, Twisted на первый взгляд может быть непростым, но Node.JS это однозначно не лучший вариант.
В наших проектах мы сделали несколько сервисов на Node.JS. Используя async.js можно заметно упростить код, но несмотря на это, с ростом сложности кода, очень быстро растёт уровень вложенности вызовов async.js, и спустя какое-то время, опять, разобраться в этой мешанине становится невозможно.
То ли дело Python. Устав бороться с многоуровневыми вызовами коллбеков, мы за несколько дней переписали код на Python с использованием greenlet'ов из gevent.
Кто не в курсе -- гринлет это fancy-name для сопрограмм -- асинхронно выполняющихся блоков кода использующих кооперативную многозадачность. При использовании гринлетов программа по прежнему выполняется в один поток, и этот поток выполняет одновременно выполняет только один гринлет. При вызове любой блокирующей операции (например чтения, или записи в сокет), текущий гринлет останавливается и управление передаётся в другой, который готов продолжить выполнение. Выполнение предыдущего продолжится после того как операция которую он ждал будет завершена.
Таким образом gevent позволяет писать обычный Python код, который при этом будет выполняться асинхронно. Это гораздо проще и намного выразительней чем месиво из callback'ов в NodeJS.
Я глубоко убеждён что ребята из Cloudkick, имея к тому же обширную базу код на Python, сделали неправильный выбор. Не повторяйте их ошибки, выбирайте Python.
Первый тумблер