Node.js Readable streams distilled

Readable stream is an abstraction for some data source. Which is hard to grasp and even harder to use...

Everybody knows that for a readable stream there are two modes of operating: flowing and paused. It's not that easy to understand the implications though.

I usually like to think about a program I'm developing in terms of processes. Even though in Node everything is happening in a single thread, we might usually pick out independent logical processes our program consists of.

Let's try to think about some reading procedure (eg. reading a big file from disk). What would be the ways to organize it?

Читать дальше

Дайджест интересных ссылок – Июль 2016

Почему объектно-ориентированное программирование - отстой, как технологии обманывают наш мозг и почему нужно избегать поверхностных задач...

Читать дальше

Пишем свой веб-сервер на Python: сокеты

Начнем с того, что четко ответим на вопрос, что же такое веб-сервер?

В первую очередь - это сервер. А сервер - это процесс (да, это не железка), обслуживающий клиентов. Сервер - фактически обычная программа, запущенная в операционной системе. Веб-сервер, как и большинство программ, получает данные на вход, преобразовывает их в соответствии с бизнес-требованиями и осуществляет вывод данных. Данные на вход и выход передаются по сети с использованием протокола HTTP. Входные данные - это запросы клиентов (в основном веб-браузеров и мобильных приложений). Выходные данные - это зачастую HTML-код подготовленных веб-страниц.

Читать дальше

Наследование в JavaScript

Наследование - это один из способов повторного использования кода. Оно бывает двух типов: на основе классов (class-based) и прототипное (prototypal). В любом случае, так как речь про объектно-ориентированное программирование, наследование - это про создание множества объектов, обладающих общими свойствами, на основе уже существующих.

Читать дальше

Мастерить!

Есть два типа языков: языки, где есть только один очевидный/правильный путь реализовать что-либо (Python, Java), и языки, где одну и ту же фичу можно закодить тысячей и одним способом (C++, JavaScript, Ruby). Первые больше похожи на детские конструкторы, вторые - на пластелин.

Читать дальше