Как стать автором
Обновить
2
0

Пользователь

Отправить сообщение

19 способов сделать сокет-сервер на Python. Эволюционный подход. Часть 5. Асинхронное программирование

Время на прочтение12 мин
Количество просмотров14K

Выше мы рассмотрели, как появились генераторы, как они работают и как их можно использовать в роли сопрограмм. Еще раньше было разобрано, как реализовать асинхронность на колбеках с помощью модуля selectors. Теперь соединим оба материала и реализуем настоящую асинхронность — на сопрограммах (coroutines).

В конце мы создадим минимально возможную версию asyncio и используем ее как лабораторный макет для изучения внутреннего устройства данной библиотеки. Как по мне, это лучший способ понять, как работает асинхронное программирование в Python.

Читать далее
Всего голосов 7: ↑6 и ↓1+6
Комментарии0

Как мы теперь договариваемся о новом бизнесе на берегу: юнит-тесты в реальном мире

Время на прочтение8 мин
Количество просмотров14K


Идея тестировать код постановкой его в неудобные ситуации появилась далеко не сразу. До этого не разработчик думал о том, как поломать код в разных тестах, а тестировщики пытались сделать это руками. Грубо говоря, предполагалось, что мудрый разработчик пронзит код мыслью и сразу представит все его состояния в квантовой суперпозиции.

Очень многие вещи из ИТ-сферы напрямую относятся к бизнес-процессам. Тойота в какой-то момент придумала промежуточные юнит-тесты на производстве в своей TPS («каждое следующее звено — внутренний заказчик с критериями приёмки»), но вот в областях типа переговоров истории сквозных проверок далеко не зашли. Вообще, в решении типовых переговорных ситуаций есть очень много гениальных механик вроде «русской рулетки» или «техасской перестрелки» при разделе имущества. Только мало кто договаривается подобное применять, потому что в конечном итоге нужно уметь декомпозировать ситуацию и отладить её.

Лет 7 назад я писал про очень простую модель того, как могут договариваться основатели небольшой компании на старте: кто за что отвечает, кто главный в ситуации клинча, как принимаются важные решения и так далее. Это была хорошая рабочая механика, но, как выяснилось за это время, случиться может вообще всякое. И все эти исключения надо обрабатывать. Например, я не думал, что у нас будет смерть соучредителя (и последовавшие проблемы для начала с почтой и доменом, зареганными на него, а потом ещё с кучей всего с наследством его доли).

И вот в какой-то момент к нам в гости завалился человек, который посвятил полжизни конфликтам учредителей. Первая мысль была: «Ну, это не про нас». А потом здравый смысл пересилил, и мы попробовали его механику договорки. И знаете, что? Отдаёт мазохизмом, но удивительно хорошо работает. В общем, давайте покажу, как выглядит очень далёкий, но всё же аналог юнит-тестов сотрудничества нескольких предпринимателей.
Читать дальше →
Всего голосов 53: ↑53 и ↓0+53
Комментарии14

Мёртвый код: найти и обезвредить

Время на прочтение14 мин
Количество просмотров26K


Меня зовут Данил Мухаметзянов, я работаю бэкенд-разработчиком в Badoo уже семь лет. За это время я успел создать и изменить большое количество кода. Настолько большое, что в один прекрасный день ко мне подошёл руководитель и сказал: «Квота закончилась. Чтобы что-то добавить, нужно что-то удалить».

Ладно, это всего лишь шутка — он такого не говорил. А жаль! В Badoo за всё время существования компании накопилось больше 5,5 млн строк логического бизнес-кода без учёта пустых строк и закрывающих скобок.

Само количество не так страшно: он лежит, есть не просит. Но два-три года назад я начал замечать, что всё чаще читаю и пытаюсь разобраться в коде, который на самом деле не работает в продакшен-окружении. То есть, по сути, мёртв.

Эту тенденцию заметил не только я. В Badoo поняли: наши высокооплачиваемые инженеры постоянно тратят время на мёртвый код.
Всего голосов 67: ↑67 и ↓0+67
Комментарии28

Маленькое удобство, способное прекратить вселенские споры

Время на прочтение4 мин
Количество просмотров8.6K
Все те, кто пишет на Си-подобных языках, знакомы с двумя немного отличающимися стилями кода. Выглядят они вот так:

for (int i=0;i<10;i++) {
    printf("Hello world!");
    printf("Hello world again!");
}

for (int i=0;i<10;i++)
{
    printf("Hello world!");
    printf("Hello world again!");
}

Различий немного, но споры вокруг них не затихают из-за неготовых отказаться от привычного стиля разработчиков. Поэтому нам нужен компромисс. Вот его-то и предлагается обсудить далее.
Читать дальше →
Всего голосов 62: ↑15 и ↓47-27
Комментарии71

Атомная электроэнергия до появления АЭС

Время на прочтение3 мин
Количество просмотров12K
67 лет назад, 20 декабря 1951 года, экспериментальный быстрый реактор EBR-1 стал одним из первых атомных источников электроэнергии. На фото показаны 4 лампочки мощностью 200 Вт, которые он «зажег» в тот день. До запуска первой в мире атомной станции в Обнинске оставалось около 3 лет.

К памятной дате небольшой рассказ о появлении этого реактора, фото того что с ним сейчас, и пояснение того почему он не считается полноценной АЭС.


Первая электроэнергия от реактора EBR-1 в 1951 году. Фото: DOE
Читать дальше →
Всего голосов 14: ↑13 и ↓1+12
Комментарии6

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность