вторник, 1 января 2030 г.

О блоге

Более двадцати лет я занимался разработкой ПО, в основном как программист и тим-лид, а в 2012-2014гг как руководитель департамента разработки и внедрения ПО в компании Интервэйл (подробнее на LinkedIn). В настоящее время занимаюсь развитием компании по разработке ПО stiffstream, в которой являюсь одним из соучредителей. Поэтому в моем блоге много заметок о работе, в частности о программировании и компьютерах, а так же об управлении.

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

понедельник, 31 декабря 2029 г.

[life.photo] Характерный портрет: вы и ваш мир моими глазами. Безвозмездно :)

Вы художник? Бармен или музыкант? Или, может быть, коллекционер? Плотник или столяр? Кузнец или слесарь? Владеете маленьким магазинчиком или управляете большим производством? Реставрируете старинные часы или просто починяете примус? Всю жизнь занимаетесь своим любимым делом и хотели бы иметь фото на память?

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

суббота, 13 августа 2022 г.

[prog.wow] Это высказывание достойно быть отлитым в граните

Нашел в ленте LinkedIn замечательную мудрость-афоризм, которая в моем вольном переводе звучит так:

Программисты недооценивают все на свете, за исключением своих собственных возможностей.

цынк

четверг, 11 августа 2022 г.

[prog.c++] Внезапное продолжение вчерашней темы и неожиданное для меня поведение компиляторов GCC и clang

Сегодня ради спортивного интереса попробовал добить начатую вчера тему с созданием хитрого предиката для static_assert. Там нужно было сделать проверку для двух случаев. Для первого случая я сделал быстро, а про второй случай подумал, что он гораздо сложнее. Но, оказалось, что не так уж сложнее. Так что предикат получить удалось.

Но вот поведение компиляторов GCC и clang при его использовании меня удивило. С VC++ не проверял, не знаю как бы он себя повел бы.

Под катом большой кусок кода и короткий рассказ о том, как же вели себя компиляторы.

среда, 10 августа 2022 г.

[prog.c++.humour] Как можно сделать хуже в попытке сделать лучше

Выдалась возможность потратить некоторое время на очистку кода RESTinio от (полу)забытых FIXME. Один из них выглядит так:

templatetypename Extra_Data, typename Producer, typename Handler >
class actual_router_entry_t : public router_entry_t< Extra_Data >
{
   //FIXME: compatibility between Extra_Data and Handler should be
   //checked by static_assert. If it's possible.

Суть здесь в том, что когда пользователь задает обработчик входящего запроса (тип Handler), то должна быть возможность передать в этот обработчик ссылку на generic_request_handle_t<Extra_Data>. А если это не так, например, если пользователь забыл про свой Extra_Data и подсовывает обработчик для простого request_handle_t, то будет ошибка компиляции.

Ошибки компиляции в шаблонном C++ном коде не самое приятное чтиво и разбираться с ними то еще удовольствие. Поэтому хотелось поставить в код какой-то static_assert, который бы явно говорил программисту: у тебя Handler не дружит с твоим же собственным Extra_Data.

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

Вот, руки дошли. Попробовал написать такой static_assert.

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

Написал, удовлетворил компилятор, попытался проверить как этот новый static_assert себя поведет.

Под катом два лога с сообщениями об ошибках компилятора GCC 9.4 в режиме C++14. Первый -- это старая версия с FIXME и без static_assert-а. Вторая -- новая версия без FIXME и со static_assert-ом.

Лично мне кажется, что разобраться с ошибкой в старой версии проще. Потому что благодаря static_assert-у на несчастного пользователя вываливается намного больше совершенно ненужной информации, разобраться в которой, на мой взгляд, гораздо сложнее.

Ну и да, видимо, этот FIXME из кода просто удалю и не буду делать никаких static_assert-ов. Потому что сложность кода растет, а пользы от этого никакой :(

Upd. Тема получила неожиданное продолжение.

суббота, 6 августа 2022 г.

[life.audiophilia.diy] Попытка переставить 10mm динамики из одних корпусов в другие

Покупать и ждать доставки готовых наушников просто и не интересно. Это все могут ;) Я же подсел на собственноручную сборку наушников. А с недавнего времени и на их переделку.

В данном случае имелись:

Наушники Yincrow RW-919, приобретенные когда-то на заре увлечения бюджетной аудиофилией. Куплены были за копейки (по меркам аудиофилии), но звучали достаточно прилично, хотя я и не сразу распробовал их звук, как и удобство корпуса.

Собственноручно сделанные (и уже несколько раз переделанные) затычки с 10mm динамиками в деревянном корпусе (с металическими звуководами). Очень детальный и аргессивный звук, к которому постепенно начал привыкать.

Проблема с самодельными затычками была в том, что, как оказалось, именно эти корпуса в мои уши не садились. Думаю, что дело в прямом звуководе, расположенном точно по осевой корпуса. Тогда как в Yincrow RW-919 и просто отлично садящихся мне AKG K321 звуковод направлен в сторону.

С Yincrow RW-919 вообще были странные взаимотношения. Сначала они мне не зашли, а т.к. внутриканалок у меня собралось больше, чме было нужно, то выставил RW-919 на продажу. Но никто не заинтересовался и это оказалось к лучшему, т.к. буквально через несколько дней после снятия объявления о продаже у наушников переломился провод у штекера. Было бы неприятно, если бы это произошло у покупателя.

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

Кабель у RW-919 был откровенно дерьмовый: слишком тонкий, склонный и к скручиванию, и к завязыванию, да еще и с микрофонным эффектом. Давным-давно хотел поменять его на что-нибудь другое. Даже была мысль установить туда MMXC разъемы, чтобы можно было и балансные кабеля использовать, но не решался вскрывать корпуса, т.к. с моими растущими не из того места руками было слишком много шансов все поломать без шансов на восстановление.

Но вот давеча устроил сравнение RW-919 и самодельных затычек... И офигел от того, насколько большая разница в звучании. Не в пользу RW-919.

Настолько большая разница, что я таки решился разобрать RW-919 и поставить туда 10mm динамики из самодельных затычек. Что и проделал сегодня с утра. Естественно, не без приключений. С неприятными сюрпризами. И с полной переделкой :)

Собственно, было-стало:

Кому интересен фотоотчет об этом эксперименте, то милости прошу под кат.

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

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

Как обычно, в начале списков перечислено то, что понравилось больше, а в самом конце откровенный шлак, на который можно не тратить свое время.

Фильмы

Джерри и Мардж играют по-крупному (Jerry & Marge Go Large, 2022). Милое и доброе кино.

Флэшбэк (Memory, 2022). Очередной фильм с Лиамом Нисоном в роли "боевого пенсионера". На этот раз более-менее приличный, т.к. Нисону здесь отведена роль только одного из ключевых персонажей. И уровень его крутости хотя бы попытались привести в соответствие с возрастом и физической формой.

Серый человек (The Gray Man, 2022). Адская смесь из "Джеймса Бонда", "Миссия невыполнима" и "Форсаж". Красочный и мегадинамичный аттракцион. Но блин, какая же сказка! Смотреть можно только отключив мозги и только в качестве аттракциона.

Рубикон (Rubikon, 2022). На удивление неплохо, как по мне, хотя бюджетность постановки и ощущается. Но главная претензия -- это неспешность повествования, было бы динамичнее, было бы получше. Однако, в целом, лично мне следить за происходящим было интересно.

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

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

Виртуоз (The Virtuoso, 2021). Какая-то антреприза с вышедшими в тираж хорошими в прошлом актерами. Могло бы получиться более-менее пристойно, если бы хронометраж сократить минут на 20-30 и избавиться от такого количества закадрового текста.

Криминальный город 2 (Beomjoе dosi 2, 2022). Странное кино: местами нелепая буффонада, местами звериная жестокость. Мне не зашло.

9 жизней (Nine Bullets, 2022). Ерунда.

Мир Юрского периода: Господство (Jurassic World Dominion, 2022). Смело можно не смотреть, редкая гадость.

Сериалы

Убийство на ферме «Уайтхаус» (White House Farm, 2020). Отличное атмосферное кино. Финал фильма меня лично приятно удивил, именно такой развязки я не ожидал.

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

Медленные лошади (Slow Horses, 2021, первый сезон). Отлично, мне понравилось.

Списов смертников (The Terminal List, 2022, первый сезон). Начинался пусть и скучновато, но смотрибельно. Но к финалу скатился в такую невероятную сказочку, что аж жутко стало.

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