Написал README к нашему старому проекту pgmigrate.
Кому-то интересно почитать подробнее о проекте?
Color Me Curious
Sade Olutola
h
🩵 avery cochrane 🩵

oozey mess
todays bird
occasionally subtle

shark vs the universe
𓃗
let's talk about Bridgerton tea, my ask is open
sheepfilms
🪼

izzy's playlists!
YOU ARE THE REASON
Cookie Run:Kingdom Official!
Fai_Ryy
Cosimo Galluzzi

tannertan36
almost home
Cosmic Funnies
seen from Vietnam
seen from United States
seen from United States
seen from United Kingdom

seen from Türkiye
seen from Bulgaria

seen from France
seen from United States
seen from France
seen from Colombia

seen from Brazil

seen from Malaysia

seen from Canada

seen from Italy

seen from Japan

seen from United Kingdom

seen from Japan

seen from Malaysia
seen from Indonesia

seen from Netherlands
@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.
Первый тумблер