четверг, 20 августа 2020 г.

[prog.c++] Незапланированный, но показательный релиз RESTinio

Сегодня была зафиксирована очередная версия RESTinio: 0.6.10. В ней только одно нововведение, но зато оно показательно.

Пару дней назад пользователь открыл issue на GitHub, в котором попросил возможность сделать так, чтобы экземпляр asio::ssl::context можно было разделять между RESTinio-сервером и другими частями приложения. Что изначально в RESTinio предусмотренно не было.

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

Мораль сей басни: если вы что-то хотите видеть в RESTinio, то дайте нам об этом знать. Попробуем решить вопрос.

Да, и это касается не только RESTinio ;)

понедельник, 17 августа 2020 г.

[life] В связи с кризисом в нашей стране исчезну с радаров

Думаю, что многие знают, что в Беларуси сейчас очень серьезный кризис, результатом которого вполне может стать смена власти. Ситуация весьма сложная и неоднозначная. Если кто-то вне РБ составляет впечатление о происходящем у нас по информации из прозападных СМИ или постам в соцсетях, где можно увидеть многотысячные митинги/шествия людей под бчб-флагами, то могу заверить, что на самом деле здесь все не так однозначно. И даже если эти митинги одномоментно собирают пусть миллион человек по всей стране, то это безусловно много. Но не нужно забывать, что вне транслируемых митингов остается еще более восьми миллионов человек, у которых есть собственное мнение. И это мнение может быть прямо противоположным раскручиваемому в информационном мейнстриме.

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

Попробую пояснить почему так думаю.

четверг, 13 августа 2020 г.

[prog.c++] My view of the near (and not so) future of the RESTinio project

Now, after the official release of RESTinio-0.6.9, it's a good time to share some thoughts about the near (and not only near) future of the RESTinio project.

It is worth noting that the text below is only my point of view. This point of view can change over time.

This text is split into two parts. The first part tells about rather practical things that I want to see in the upcoming releases of RESTinio. The second part is more philosophical and intended for the discussion about the role of RESTinio in the modern C++ landscape.

Part One. What I want to have in RESTinio 0.6 and what could be seen in 0.7?

суббота, 1 августа 2020 г.

[prog.thoughts] Какой способ информирования об ошибках мне бы хотелось иметь для написания надежного кода?

Много лет занимаюсь разработкой софта, который должен работать в режиме 24/7 и, зачастую, под приличной нагрузкой. Это не mission-critical софт, скорее business-critical. Т.е. если будет глючить и падать, то никто не умрет. Так что писать "пуленепробиваемый" и "не убиваемый" кода пока не приходилось. Тем не менее, нестабильная работа написанного нами софта -- это авралы, стрессы, неприятности с клиентами. Понятное дело, что никому такое не нужно.

В связи с этим при написании кода меня регулярно терзает мысль "а насколько он надежен?" Мысль понятная и вопрос вполне себе по теме. Но вот ответ на этот вопрос далеко не всегда очевиден.

Написание надежного софта -- это очень большая тема и я не могу сказать, что хорошо в ней разбираюсь. Поэтому в данном посте я попробую сосредоточится только на одном из аспектов разработки надежного софта. А именно об информировании о возникающих ошибках.

Сперва постараюсь рассказать о том, что лично я бы хотел видеть в языке программирования. А потом скажу пару слов о том, почему C++ в этом плане не очень хорош (впрочем, как и другие мейнстримовые языки).

пятница, 31 июля 2020 г.

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

Подошло время очередного кинообзора. Сегодня опять будет два списка. Сперва список отсмотренных фильмов, затем список отсмотренных мини-сериалов. В каждом списке элементы упорядочены по убыванию. Т.е. вначале идут те фильмы, которые понравились больше всего. А замыкают списки фильмы, которые понравились сильно меньше.

Фильмы

Офицер и шпион (J'accuse, 2019). Мне понравилось, посмотрел с удовольствием.

Грейхаунд (Grayhound, 2020). Добротно рассказанная история, за которой интересно следить. И хорошо показанные персонажи, которым сопереживаешь. Слегка разочаровала, разве что, графика. Слишком уж нарисованными выглядели некоторые сцены.

Форпост (The Outpost, 2020). На мой взгляд весьма достойный военный фильм.

Гори, гори ясно (Brightburn, 2019). В принципе, идея мне понравилась. Вот что было бы, если бы Супермен оказался бы плохишом. Но подвело то, что в фильме всего одна звездная актриса, Элизабет Бэнкс, однако, главным-то героем должна была бы быть не она. Так что оттягивание внимания от пацана с суперспособностями на единственную звезду сделало фильм менее интересным, чем он мог бы быть.

Темное наследие (Inheritance, 2020). Ну так себе. По ходу просмотра очень быстро начинают возникать вопросы "А почему так-то?", а затем и желание воскликнуть "Не верю". Еще больше этих вопросов и реплик "Не верю", остается после просмотра. Так что по итогу впечатление остается "ну так себе".

Всегда верен (Semper Fi, 2019). Купился на хороший трейлер и ожидал напряженный и динамичный фильм про побег из тюрьмы. Но оказалось, что того самого побега в фильме всего 1/5 часть времени. В лучшем случае. Все остальное что-то вроде мелодрамы. В общем, вполне можно и не смотреть.

Призраки войны (Ghosts of War, 2020). Начинался как заштатный фильм ужасов на тему призраков в антураже Второй Мировой. Ближе к финалу авторы замутили твист. Который, как мне показалось, на пользу совсем не пошел. И уж лучше бы фильм оставался заштатным фильмом ужасов на тему призраков в антураже Второй Мировой.

Мой создатель (Archive, 2020). Ну очень нудное кино. Ну очень нудное. Ну очень. Насколько нудное и усыпляющее, что даже финальный твист вызывает скорее раздражение, нежели удивление.

Бессмертная гвардия (The Old Guard, 2020). Редкая бредятина по отдаленным мотивам "Горца". С кучей соплей и чрезмерной толерастией, из-за чего сопли временами оказываются даже не розовыми, а голубыми.

Сериалы

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

Голова (The Head), первый сезон. Посмотреть можно. Но развязка оказалась несколько предсказуемой.

Настоящий детектив (True Detective), третий сезон. В принципе, как детектив он мне понравился гораздо больше, чем второй сезон. Тут, действительно, была линия расследования загадочного преступления. Но очень не понравились две вещи. Во-первых, скакание из одного исторического отрезка в другой. Понятно, что это нужно было для большего драматизма и придания глубины, чтобы зрители лучше осознали, что все это тянулось не один десяток лет. Но меня лично такие перескакивания отвлекали. Во-вторых, слишком уж много внимания было уделено личной жизни одного из детективов. Как мне показалось, если бы выбросить лишние семейные сопли, то можно было бы сделать на пару серий меньше, но зато оставшиеся были бы интереснее, а повествование динамичнее и напряженнее.

суббота, 25 июля 2020 г.

[prog.c++] Пример использования шаблонов для создания C-шных коллбэков из методов C++-ных классов

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

Итак, есть известная чисто-С-шная библиотека http_parser, которую много кто использует (в том числе и мы в RESTinio). Для работы с ней нужно создать у себя в программе экземпляр типа http_parser и экземпляр типа http_parser_settings. Где http_parser_settings должен содержать набор указателей на С-шные коллбэки, которые будут вызываться во время парсинга HTTP-сообщений.

Возникла задача сделать так, чтобы коллбэками для http_parser выступали нестатические методы C++ ного класса.

Решалась эта задача в два этапа.