пятница, 7 апреля 2023 г.

[prog.flame] Нет, с любителями PascalCase (да и camelCase) нам не по пути!

Никто, ну вот вообще никто, не убедит меня, что:

TransformObtainedVideoFrameForFurtherProcessing

читается лучше, чем:

transform_obtained_video_frame_for_further_processing

Опять же никто не сможет привести хоть сколько нибудь убедительные аргументы, доказывающие, что:

transform_obtained_video_frame_for_further_processing

это плохое, негодное и слишком длинное имя.

Никто, слышите?! Даже и не пытайтесь.

PS. Полагаю, что +50% к ЗП может изменить точку зрения на прямо противоположную.

PPS. Тяпница же на дворе ;)

среда, 5 апреля 2023 г.

[prog.c++] Очередное небольшое обновление для RESTinio

Благодаря одному из пользователей RESTinio получил обновление, исправляющее проблему с обработкой запросов с сжатым посредством zlib телом. Новая версия 0.6.18 уже доступна через Conan и vcpkg, так что есть смысл обновиться.

У меня лично работа над этим обновлением вызвала довольно сильные эмоции.

Был рад получить еще одно подтверждение тому, что RESTinio все еще используется (и, как я понял, используется активно и в нагруженных проектах). Даже не смотря на то, что дальнейшую разработку мы уже пару лет как поставили на паузу. Тем не менее, проект поддерживается, мы реагируем на открытые issue и сделанные PR.

Однако, время от времени кто-то говорит, что RESTinio, мол, не выглядит живым. Что неприятно, т.к. не соответствует действительности: проект никто не бросал и, уж тем более, не хоронил.

Посему отрадно узнавать, что RESTinio продолжает использоваться. Мелочь, а приятно ;)

Но самым сильным впечатлением было осознание того, насколько же RESTinio большой проект для нашей крошечной компании. Большой в смысле того, сколько там всего сделано. И я сейчас не столько про код самой библиотеки (хотя и там тоже столько всего, что я уже очень и очень многого вообще не помню). Но прежде всего про объемы тестов и документации.

Когда шла активная разработка RESTinio это не ощущалось. Подумаешь, очередная фича, очередной тест, очередной раздел в документации. Но вот когда заглядываешь под капот RESTinio в первый раз за последние полгода, то несколько офигеваешь от того, сколько же всего было сделано. Даже не верится, что это все мы...

PS. Дальнейшая разработка RESTinio приостановлена потому, что у нас пока нет собственных средств на ее дальнейшую разработку. Сам по себе RESTinio денег не приносит, а ведь жить на что-то надо, поэтому пока что наше время тратится на другие проекты. Но, если кто-то хочет видеть в RESTinio какую-то функциональность и готов это проспонсировать, то возобновление работ на RESTinio можно предметно обсудить ;)

вторник, 4 апреля 2023 г.

[prog.c++] Две отличные статьи про неочевидные моменты C++

Две небольшие, но отличные статьи на сайте devblogs.microsoft.com: "C++17 creates a practical use of the backward array index operator" и "The mystery of the crash that seems to be on a std::move operation". Они, хоть и на английском, но читаются легко. Да и самое главное там -- это примеры. Посему решил сохранить их в склерознике :)

Позволю себе процитировать оттуда пару-тройку фрагментов.

Из первой статьи:

Another practical use is to bypass any possible overloading of the [] operator, as noted in Chapter 14 of Imperfect C++:

#define ARRAYSIZE(a) (sizeof(a) / sizeof(0[a]))

By flipping the order in 0[a], this bypasses any possible a[] overloaded.

std::vector<int> v(5);
int size = ARRAYSIZE(v); // compiler error

However, it isn’t foolproof. You just need to create a more clever fool: If v is a pointer or an object convertible to a pointer, then that pointer will happily go inside the 0[...].

struct Funny
{
    operator int*() { return oops; }
    int oops[5];
    int extra;
};

Funny f;
int size1 = ARRAYSIZE(f); // oops: 6

int* p = f;
int size2 = ARRAYSIZE(p); // oops: 1

Из второй статьи.

Вот этот код на ARM-е ломается при компиляции в режиме C++14:

void polarity_test(std::shared_ptr<Test> test)
{
    test->harness->callAndReport([test2 = std::move(test)]() mutable
    {
        test2->reverse_polarity();
        ::resume_on_main_thread([test3 = std::move(test2)]()
        {
            test3->reverse_polarity();
        });
    });
}

Ломается потому, что вот здесь:

test->harness->callAndReport([test2 = std::move(test)]() mutable

значение test может быть перестать актуальным еще до того, как произойдет обращение к test->harness.

Но, начиная с C++17 это уже не проблема.

воскресенье, 2 апреля 2023 г.

[life.cinema] Очередной кинообзор (2022/03)

По традиции в начале каждого из списков перечислено то, что понравилось больше, а в конце то, на что можно не тратить свое время.

Фильмы

О чем говорят мужчины. Простые удовольствия (2023). Посмотрел с большим удовольствием, хотя в начале как-то не очень заходило, но к концу фильма все раскочегарилось и зашло более чем норм.

Операция «Фортуна»: Искусство побеждать (Operation Fortune: Ruse de Guerre, 2022). Нормальное развлекательное кинцо. Мне показалось, что Гай Ричи сделал это с изрядной долей стеба над фильмами про супершпионов, но может это только показалось.

Тест (El Test, 2022). Глянуть можно, если больше нечего. Но это не комедия. Уж точно не комедия в привычном для меня смысле.

Марлоу (Marlowe, 2022). Очень красиво, но очень скучно.

Заговор в Каире (Walad Min Al Janna, 2022). Посмотреть было любопытно, но не скажу, что фильм впечатлил. Во-первых, не хватило понимания того, что и как происходит в мусульманском мире. Во-вторых, мне показалось, что не угадали с выбором актера на главную роль: слишком уж забитым и робким выглядел его персонаж, поэтому в то, что он делал в конце фильма, не верилось от слова совсем.

Вкус жизни (Smagen af sult, 2020). Сюжет, как по мне, так ничего выдающегося, как и сам фильм, собственно. Хотя, любителям жанра "мелодрамы" может и зайдет. Но вот работа оператора местами настолько шикарная, что у меня просто челюсть на пол падала от красоты и качества картинки.

На краю (The Ledge, 2022). Посмотреть можно только если есть желание каждые десять минут вопрошать "Да что за фигню нам здесь показывают".

Сериалы

Больница Никербокер (The Knick, сезоны 2014-2015). Отлично. Ну вот просто отлично. Посмотрел благодаря наводке Алексея Водовозова вот из этой лекции и не пожалел. Хотя во втором сезоне, как по мне, слишком уже много времени уделялось романтическим линиям (кто с кем что крутил-мутил), но сильно впечатления это не испортило.

Медленные лошади (Slow Horses, второй сезон, 2022). Если понравился первый сезон, то смело можно смотреть и второй. Мне первый сезон понравился, второй вроде бы тоже ничего так, в стиле первого. Но нашлась во втором сезоне пара моментов, которые лично мне несколько подпортили общее впечатление.

Темпл (Temple, первый сезон, 2019). Не то, чтобы разочаровался, но ожидал сильно большего. В принципе, можно и посмотреть, но меня хватило только на первый сезон, второй смотреть уже не захотелось.

Фарт (Luck, первый сезон, 2011). Содержание сильно так себе, развитие одной из сюжетных линий (криминальной) я так и не понял. Но зато попал под обаяние картинки показывающей скачки и жизнь вокруг скачек (в молодости с удовольствием читал детективы Дика Френсиса и кадры этого сериала как будто погружали меня в мир, описанный Диком Френсисом).

Одни из нас (The Last Of Us, первый сезон, 2023). Редкостная гадость. Повелся на высокий рейтинг и кучу хвалебных отзывов, как выяснилось, очень зря.