Дима Дорошев

Последние посты из блога:
Книги

Вскрытие покажет. Записки увлеченного судмедэксперта

Прочитал на днях книгу про работу судмедэксперта. Местами хорошо и познавательно (например, про то, как настоящая работа отличается от того, что нам показывают в фильмах), местами противно и хочется поскорее дочитать главу (например, про детали трупного разложения утопленников).

Еще там есть картинки, и они в основном страшные.

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

Оценка: 3 из 5.

медицина
Жизнь

Telegram Premium

Если кто-то раздумывает над покупкой Telegram Premium, рассчитывая получить что-нибудь полезное - ничего такого там нет. Вчера позарился на то, что при оплате через бот цена упала до 299 рублей, решил раскошелиться, и получил какую-то херню на постном масле. То есть получил я ровно то, что рекламируется: свистелки и перделки, которыми вряд ли буду пользоваться. Единственная полезная фича - расшифровка голосовых сообщений - работает медленно и очень плохо, по сравнению с тем же @voicybot. При этом Voicy еще и "кружочки" умеет расшифровывать, поэтому продолжу пользоваться им.

Самым приятным моментом была оплата подписки картой через бота, это прям кайфец.

А так, Telegram Premium - ерунда для детей. Разве что вам хочется поддержать разработчиков, но тогда можно просто мне сотку на карту закинуть. Я-то вам всяко ближе какого-то телеграма буду, и тоже разработчик как-никак.

telegram
Dev

Как же хорошо, что у всех интервалы времени измеряются в одинаковых единицах и фразу "через 15 минут" понимают одинаково во всем цивилизованном мире.

Нет такого, что у одного минута длится дольше, чем у другого. Или что в США вместо секунды используют какой-нибудь "тик", который равен 1.672 секунды, и день состоит не из 24 часов, а из 4 "квартосуток".

Если бы еще и такое было, программисты бы вообще свихнулись. Им и так хватает високосных секунд и часовых поясов.

время
Dev

Go: Отложенная обработка событий файловой системы

Допустим, вам нужно что-то сделать при возникновении какого-то события файловой системы. Например, перезапустить веб-сервер при изменении файлов. Довольно частая практика при разработке: повесить "слушателя" файловой системы, запустить приложение, сразу же после редактирования файлов "на лету" перекомпилировать проект и заново запустить его.

Этот сайт написан на Go, и недавно я решил добавить в него подобный hot-reload для markdown-файлов с постами: кладешь новый файл в папку, веб-сервер это замечает и переналивает внутренний in-memory-storage с публикациями без перезапуска самого себя. При этом мне хотелось именно "слушать" файловую систему, а не сканировать ее раз в несколько секунд.

Читать далее
go concurrency channels fs
Dev

Абстракции и наследование в Си - стреляем по ногам красиво

TL;DR https://github.com/pomidoroshev/c-inheritance

Иногда нет-нет да и хочется что-нибудь абстрагировать и обобщить в коде на Си. К примеру, хочешь ты принтануть содержимое структуры несколько раз, пишешь везде, как дурак, printf("%s %d %f\n", foo->bar, foo->baz, foo->boom), и интуитивно кажется, что есть способ сделать foo->print(foo), и так вообще со всеми структурами, не только с foo.

Возьмем пример: есть некий чувак с именем и фамилией, и есть птица, у которой есть имя и владелец.

typedef struct Person Person;
struct Person {
    char *first_name;
    char *last_name;
};

typedef struct Bird Bird;
struct Bird {
    char *name;
    Person *owner;
};

Чтобы вывести информацию про этих животных, кондовый сишник напишет просто две функции:

void Person_Print(Person *p) {
    printf("%s %s\n", p->first_name, p->last_name);
}

void Bird_Print(Bird *b) {
    printf("%s of %s %s\n", b->name, b->owner->first_name, b->owner->last_name);
}

И будет таки прав! Но что если подобных структур у нас много, а наш мозг испорчен веяниями ООП?

Читать далее
c oop упрлс