27 October 2024

Xiaomi 14: итого

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

Но сначала про Zenfone 8. Все-таки какой же это ладно скроенный телефон! Даже сейчас, спустя годы, берешь его в руки и восхищаешься компактностью и дизайном. Если бы не дохлая батарейка, которая с годами, естественно, стала еще хуже, то можно было бы сидеть на нем и дальше. Тем более, что Asus исхитрились засунуть в эту малютку бескомпромиссную производительность и в этом плане после апгрейда я вообще не заметил никаких улучшений. 
Краем уха смотрел я и на Zenfone 10, но тут, как говорится, надо очень сильно хотеть аудио-джек в телефоне, чтобы еще раз пойти по этой дорожке. Ибо в плане софта у Asus все совсем не радужно. После обновлений регулярно слетали ярлыки приложений на рабочем столе. Безмерно выбешивал криво работающий "pocket mode", когда телефон не засыпал нормально при ношении в карманах и при длительных прогулках высаживал и без того полудохлую батарею. Да и вообще, судя по всему, сами Asus разуверились в возможность покорить рынок супер компактными телефонами. 

В теории, переходя на Xiaomi 14, я должен был получить улучшения в следующий областях:
- размер экрана
- производительность
- камеры
- автономность.
По итогу, большинство из этих пунктов меня мало парят. Большой экран сегодня вообще совершенно бросовая штука, рынок завален бюджетными моделями с весьма приличными OLED экранами на 6.7". Поэтому X14 брал, в первую очередь, потому, что это один из самых компактных флагманов сегодня. А не потому, что в нем больше экран, чем в моем старом телефоне. 
Производительность? У меня не было ни одного сценария, где Zenfone работал медленнее, чем новый телефон. Оба супер-быстрые, оба с экраном 120 Гц. 
Камеры? Стали сильно лучше, но у меня тут точкой отсчета служит полнокадровая беззеркалка, поэтому на улучшения в этой области мне плевать. В Zenfone камеру явно принесли в жертву компактности и это был тот компромисс, который меня ну вообще не парил.

04 August 2024

За это ваш Snapdragon

После того, как я разобрался с работой камер в новом телефоне, дошли руки покопать тему производительности. 
Вообще, скорость работы моего старого Zenfone 8 меня целиком и полностью устраивала.
В игры я на телефоне почти не играю, а если и играю, то это что-то, что будет бегать и на телефонах десятилетней давности... Поэтому любопытство мое в области попугаев носит исключительно праздный характер: захотелось понять, а как последние достижения Qualcomm соотносятся, к примеру, со стареньким SoC из моего Steam Deck

Синтетическим бенчмаркам в этом вопросе я не сильно доверяю, но для начала решил запустить хотя бы Geekbench.  Deck выбил 1315 в однопотоке и 4512 в многопотоке. Телефон -- 2205 и 6549 соответственно. Т.е. по процессору телефон раза так в полтора быстрее, что особенно впечатляет, с учетом того, что работает он на пассивном охлаждении да еще и на более низких частотах.

24 July 2024

Снова опять again за тот самый "исскуственный интеллект"

Давно не посещал Калифорнию, но даже из-за океана начинает казаться, что если сегодня в Кремневой долине кто-то во время "elevator pitch", широко улыбаясь, скажет волшебную аббревиатуру "AI", то тут же получит по морде тяжелым портфелем с документами. 
Как-то несколько утомил движ вокруг этой истории. 

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


Но, как говорится, "ну что, сынку, помог тебе твой дегеративый AI?". 

14 July 2024

Так что там с камерами в телефонах?

После трех лет эксплуатации отправил на пенсию свой Asus Zenfone 8. Взял Xiaomi 14.
Немного погонял камеру и теперь готов поделиться первыми впечатлениями.
За широкий угол рассказывать не интересно, этот вопрос в телефонах закрыли давно, а вот теле с ЭФР 75 мм -- совсем другая история.
Сенсор, естественно, размером с мышиный анус, примерно 1/3.5". Светосила заявлена f/2. Ну и сверху -- чудесные чудеса современной цифровой обработки снимков. 

Для сравнения взял свой компакт c дюймовым сенсором Sony RX100 IV. У него на длинном конце 70 мм и f/2.8. 

Самый простой сценарий -- смотрим, что у нас с деталями при идеальном дневном освещении. 

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

02 June 2024

Гештальт закрыт

 С "Yoshi's Woolly World" получилась особая история.

Именно эту игру мы с малой проходили в феврале 22-го года. 

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

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

Потом... потом было столько всего!... 

К игре мы вернулись спустя много-много месяцев и начали проходить сначала уже вне Украины. На этих выходных наконец-то прошли ее до конца. 

А дома где-то на компьютере валяется сохраненка. От 24.02.22. 


06 April 2024

За Милан

Некоторые мысли о северной столице Италии. 

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

Погода в Милане это просто писец, зонтик забывать дома нельзя. Фактор личного невезения я опроверг сухими (на самом деле, мокрыми) цифрами. В Одесса в марте месячная норма осадков -- 32 мм, а в Милане -- 82 мм. Короче, фактор погоды надо как-то понимать и учитывать. 

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

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

Насчет пропитания скажу так. В центре города все грустно и даже выложив 50-60 евро на человека в приличном ресторане за обед или ужин (без алкоголя) вряд ли вы получите что-то хотя бы как-то оправдывающее расходы такого порядка. За столовки и забегаловки я тоже ничего хорошего сказать не могу.
Но! Вкусную еду можно найти в заведениях спальных районов, есть места, где действительно вкусно и не за все деньги мира. Другой вопрос, кто из туристов, прилетевших на пару дней, будет тратить драгоценное время на такого рода вылазки. Да, еще есть интересный нюанс, что открываются такого рода заведения обычно в 12-00 дня, а с 15-00 до 18-00 у них время обеденного перерыва. В это время итальянцы не кушают. Терпят.   
Да, еще могу похвалить продукты в супермаркетах -- почти все, что я покупал, было вкусное и отличного качества. 

08 February 2024

Генеративные алгоритмы, продолжаем наблюдение

Не все с этими новомодными AI алгоритмами так уж и плохо.
Я вот, к примеру, недавно пописал код на C# в Visual Studio 2022 и был приятно удивлен качеством подсказок, которые мне выдавались по ходу работы. Чаще всего они были тривиальными, из области каких-то общеизвестных алгоритмических вещей (типа поиска минимального или максимального значения). Да и объем анализируемого кода, исходя из которого можно было бы сгенерировать такого рода подсказу, обычно весьма скромный, на уровне класса из двух-трех десятков строк. И сами подсказки, как правило, ограничивается строго одной строкой. Но, тем не менее, работа в связке с такими вот полуавтоматическими подстановками кода это особый, весьма прикольный опыт. 

С другой стороны, надо понимать, что где-то в 10-15% случаев подсказки оказываются нерелевантными и это, на самом деле, большая проблема. Получается, что программист все равно должен напрягаться в полную силу и держать в голове корректный код. И вряд ли кто-то всерьез будет считать, что главное достоинство такого рода подсказок заключается в том, что ты просто набираешь чуть меньше букв -- производительность программиста редко когда упирается просто в скорость набора текста. 
Короче, из-за несовершенства алгоритма подсказок, получается ситуация точно как с автопилотом в электрокарах Tesla. Он вроде как есть, но доверять ему нельзя и нужно все время следить за тем, что он делает и за ситуацией на дороге. Потому что иногда он ошибается и такого рода ошибки могут стоит жизни пассажирам авто. При написании кода ставки, безусловно, не столь высоки, но уверен, что активно пользующиеся такого рода фичами, могут рассказать о случаях, когда машинально принятая подсказка приводила потом к потерянному времени в отладчике и тщетным попыткам найти непонятно откуда взявшийся баг в совершенно банальном коде.  


***

И если мой опыт с AI в Visual Studio это скорее позитивная история, то вот общение с ChatGPT это бесконечная череда разочарований. 

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

Вот список проблем:

  • потеря контекста в самых простых и однозначных диалогах. Машина внезапно "забывает" то, о чем вы общались буквально одно-два предложения назад и начинает выдавать совершенно нерелевантные ответы, без учета очевидных, подразумевающихся из контекста, факторов. Например, с самого начала код просили писать на C++, а через пару промптов выдача почему-то начинается на другом языке программирования.  
  • выдача абсолютно общих, бессодержательных ответов на конкретно сформулированные запросы. 
  • выдача откровенной лжи и некорректной информации (т.н. эффект галлюцинаций). Иногда речь идет о совершенно базовых и общеизвестных вещах, сведения о которых находятся в Википедии за пару секунд. 
  • работа в режиме безграничного доверия и потакания клиенту: исходные запросы и утверждения имеют какие-то сверхприоритеты в системе, поэтому их содержание очень часто перекрывает истинное положение вещей. Если в запросе попросили перечислить виды слонов, обитающих в Латинской Америке, то AI кинется их перечислять, а не поставит под сомнение изначальную корректность этой просьбы.  Если человек скажет, что написанный выше (абсолютно корректный) код не компилируется, то AI готов до бесконечности искать, находить и "исправлять" несуществующие ошибки. 

Несколько иллюстраций. 

Вот, к примеру, мой запрос о сравнении работы SIP протокола поверх TCP и поверх WebSocket. 
Абсолютно некорректная (и просто бредования) выдача:

Кто не в курсе, WebSocket это надстройка поверх TCP, т.е. быть более эффективной и легковесной она просто не может быть по определению.  

Так же ужасно обстоят дела с "написанием" кода. Однажды попросил написать сохранение скриншота окна в BMP файл под Windows. Сразу получил достаточно правдоподобный код, который скомпилировался и даже сохранял BMP файл при работе. Только файл был некорректного формата и не открывался ни одной программой. После нескольких безуспешных итераций в попытках исправить код (во время которых мне на руки стали выдаваться версии, которые уже просто не компилировались), AI предложил кардинально сменить стратегию и начать использовать для работы с BMP изображением какой-то там специализированный COM класс, который тянет внешние зависимости. На выходе получился принципиально новый код, который, разумеется, тоже корректно не работал. И не заработал даже после того, как я намекнул AI, что нужно все-таки не забывать вызывать CoInitialize (кстати, код имел кучу точек отказа и ноль строчек для их диагностики и обработки). После ряда безуспешных попыток на свет родилась еще одна, принципиально новая, версия с использованием GDI+. Точно такая же неработающая. 

По итогу, потеряв полчаса, я пошел гуглить и через 10 секунд нашел идеально работающую версию необходимого кода на StackOverflow (на 99% совпадающую с примером из MSDN).  
Даже не знаю, что тут еще комментировать... Кстати, а как там обстоят дела с запретом на использование AI для написание ответов на SO? Он все еще действует?  

Мне вообще повезло, потому что все закончилось относительно быстро, но вообще в жизни случаются куда как более веселые истории. Вот тут рассказ о том, как человек попросил ChatGPT сгенерировать ему LUT обработку данных для Python. Буквально 10 строчек кода, с которыми человек потом сношался несколько часов. Знаете почему? Потому что AI при вызове функции рисования графика почему-то переставил координаты x и y местами. Ошибка, с которой можно бороться очень, очень долго даже в таком маленьком объеме кода...  

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


01 December 2023

Про хобби вне работы

Есть такой старый анекдот про проститутку, когда у нее спрашивают, как она развлекается в свободное от работы время... 

Пару месяцев назад поставил себе игрушку "Human Resource Machine", в которой надо решать задачи путем программирования. Визуализировано это дело через трудовые будни офисного работника, но используемый язык программирования при этом весьма примитивен и больше всего похож на язык ассемблера. Из-за чего даже самые простые задачи решаются весьма многословно и крайне моторошно. Но, не смотря на все это, игруха меня так крепко зацепила, что я начал рубиться в нее просто в режиме запоя и не успокоился, пока полностью не добил в течении нескольких дней.  

А теперь спросите меня, чем я занимаюсь на работе...

 

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

Я вообще чертовски далек от всех этих продвинутых фокусов типа "динамического программирования", алгоритмов балансировки деревьев, бла-бла-бла, но решение задачек оказалось чертовски увлекательным и аддитивным занятием, даже более веселым, чем пазлы в "Human Resource Machine". 

На некоторых задачках получилось показать даже весьма приличные результаты:


Интереса ради посмотрел на лучшие ответы для решенных задач на JavaScript, чтобы понять, как они соотносятся с эффективностью моих C++ решений. 

Так вот, JS это нечто, что работает как минимум на порядок медленнее и жрет в 6 раз больше памяти. Причем надо понимать, что плюсовый код запускают под санитайзером памяти, что, скорее всего, садит производительность как минимум в несколько раз...

По итогу, как набор пазлов, LeetCode штука прикольная, но насиловать этим людей на интервью -- упаси госпади!





04 November 2023

Как я оказался в Тулче, хоть изначально даже не знал о существовании этого города...

Вообще за Румынией водится много печальных рекордов в области ДТП.
К примеру, по итогам 21-го года, именно Румыния была на первом месте в Евросоюзе по количеству смертей вследствие происшествий на дорогах. Что представляет из себя эта статистика на практике мне удалось испытать на собственной шкуре. 

Крошечный, ничем не примечательный, румынский городишко Мэчин.
Перекресток, где наша машина должна была уступить главную дорогу. В плане обзора перекресток просто ужасный, прям вот хуже не придумаешь. Перед ним -- знак "STOP". Жена за рулем, она останавливает машину и начинает медленно въезжать на перекресток, чтобы получить ну хоть какую-то видимость. Я на долю секунды моргаю, а когда открываю глаза, то вижу, что наша машина въезжает в бок автомобиля, который летит по главной дороге...

Местный житель города Мэчин по имени Ник вечером пятницы вез троих детей из школы.
Путь от его дома до школы -- пять минут от силы. Но доехать за пять минут это очень долго и неинтересно, особенно в вечер пятницы. Поэтому Ник летит по родному городу на скорости 120 км/ч. В том числе и через все перекрестки с никакущей видимостью, где дополнительно стоят знаки ограничения скорости и даже зеркала, чтобы хоть как-то видеть, что происходит на пересекающих главную дорогах... 
А жена Ника, пребывающая в этот момент дома, за руль, кстати, сама сесть не может. Она сидит без водительских прав. Потому что три недели назад их у нее забрал местный полицейский по имени Мэдолин. И забрал их за злостное превышение скоростного режима.   

По итогу все участники ДТП, можно сказать, отделались легким испугом. Мы то знак видели и поэтому двигались на минимальной скорости, готовые в любой момент уступить дорогу. Но когда на перекрестке с таким обзором кто-то летит на скорости 100+, пересечь его безопасно становится практически невыполнимой задачей...

По жизни я вообще не фаталист. Человек не суеверный. Но когда с тобой происходит такое, волей-неволей лезут в голову всякие странные мысли. Если бы наша машина заехала на это злополучный перекресток буквально на секунду раньше, то последствия могли бы быть немного печальнее. 
И вот ты начинаешь что-то вспоминать, анализировать, прокручивать. Подъезжая к городу останавливались, чтобы сбегать в кусты у дороги. А могли бы и не останавливаться -- нам до отеля в Галаце ехать оставалось меньше часа. Или вот, допустим, черт с ним, остановились, но ты на один раньше меньше бы стряхнул и сложилось бы все по другому... 
Но самое интересное, что прокручивая в голове десятки факторов из-за которых моя семья могла бы прекратить свое существование в этом месте, в это самое время, я понял, что самый главный фактор, он всего один. 
24 февраля 2022 года. 

 



22 July 2023

Дегенеративный AI

После нескольких первых сессий с ChatGPT я оказался в числе тех, кто с огромным скепсисом воспринял новую технологию. 

Безусловно, это прикольное свойство такого рода алгоритмов -- вести вроде как осмысленный диалог, с "пониманием" его текущего контекста, но вот к потенциальной пользе такого рода "бесед" есть большие вопросы.
Практически все мои диалоги на профессиональные темы (т.е. по теме программирования) состояли из некорректных и крайне сомнительных ответов машины, хоть какой-то "смысл" из которых мог бы извлечь разве что специалист, глубоко разбирающийся в теме. Новичка же программирование с подсказками AI будет постоянно заводить на крайне опасные территории. И нет ничего удивительного, что сообщество "Stack Overflow" практически моментально среагировало на появление ChatGPT тотальным запретом на постинг результатов работы этого алгоритма в качестве ответа на задаваемые вопросы. 

Да ладно, хрен с ним, с программированием, я вот сегодня, смеха ради, закинул в ChatGPT совсем простой запрос "best coop platformers of all time" и получил (вместе с предупредительным "это очень субъективно") следующую десятку игр:
    New Super Mario Bros. Wii (2009)
    Rayman Legends (2013)
    Cuphead (2017)
    Donkey Kong Country: Tropical Freeze (2014)
    Trine 2 (2011) 
    Overcooked 2 (2018) 
    LittleBigPlanet 2 (2011) 
    Super Mario 3D World (2013) 
    Guacamelee! (2013) 
    Lovers in a Dangerous Spacetime (2015) 

Все хорошо, не считая небольшой проблемы -- "Overcooked 2" и "Lovers..." это не платформеры никаким боком.  



Т.е. даже в самой тривиальной выдаче 20% информации это мусор, для отсеивания которого не нужны какие-то супер специфические, экспертные знания.  

Ради продолжение шоу ввел точно такой же запрос три минуты спустя.
Получил следующую десятку:
    Super Mario Bros. Series (Various Nintendo Consoles)
    Rayman Legends (Multiplatform)
    Donkey Kong Country Series (Various Nintendo Consoles)
    New Super Mario Bros. Series (Nintendo Consoles)
    Castle Crashers (Multiplatform)
    Cuphead (Multiplatform)
    Trine Series (Multiplatform)
    LittleBigPlanet Series (PlayStation Consoles)
    Spelunky 2 (Multiplatform)
    Guacamelee! Series (Multiplatform)

Какие изменения мы видим в новом списке? 
Во-первых, AI почему-то начал писать про серии игр (6 элементов в списке), хотя запрос был точно такой же и спрашивали его просто про игры, а не серии. 
Во-вторых, если сохранять хоть какую-то системность выдачи и исходить из серий, то мы должны были бы видеть "Spelunky Series", которая представлена точно так же всего двумя играми как и "Guacamelee!". 
В-третьих, в выдаче по прежнему есть мусор -- "Castle Crashers" это не платформер. 
В-четвертых, а куда подевался год выпуска? Почему в первой выдаче он был, а во второй этот момент перестал быть важным и появилась платформа?  
И вообще, а это в принципе правильно, что каждый свой ответ AI генерирует, имея глубоко в фундаменте огромный фактор случайности, и ни один из пяти одинаковых запросов не даст одинаковый результат?  

Теперь про выводы из всей этой истории.
В своем текущем виде такого рода AI алгоритмы мне видятся не то, чтобы полезными, а даже вредными. Подкупающая простота получения глубоких "аналитических" ответов по абсолютно любой теме приводит к тому, что многие, в силу лени, принимают их за истину в последней инстанции, даже не пытаясь задействовать минимальный уровень скепсиса и производить хотя бы поверхностную предварительную проверку. 
А многие держатели ресурсов с контентом уже начали потирать ручки, надеясь заваливать свои сайты дешевым генерированным материалом типа "Лучшие TWS наушники, которые вы можете купить прямо сейчас" или "Десять причин, почему вам стоит попробовать анальный секс". Сеть начала активно заполняться информационными помоями, которые представляют из себя миллионную перекомпиляцию того, что уже давно было написано людьми, с досыпанным ворохом ошибок, неточностей и дезинформации...
 
Как говорится, добро пожаловать в Web нового поколения
 



03 May 2023

Лытдыбр

Решил отписаться по всяким мелочам, чисто чтобы не терять форму и чтобы Google этот бложек на радостях не перевел в архивное состояние.

Погнали!


***

Зеленский сегодня (3-го мая) внезапно прибыл с визитом в Финляндию. 

Сообщаю об этом ребенку и получаю ответ в духе времени:
- А что его выпустили? Ему разрешили выехать?  


***

На Steam Deck периодически поигрываю в игры Nintendo в эмуляторах (угу, сейчас это "Advance Wars").

Постоянно спотыкаюсь о бесячую проблему, которая доставала и дома, когда в течении дня мог играть во что-то и на Switch и на ПК. Речь идет про разное расположение кнопок на геймпадах. 
Испокон веков у большой N кнопка "A" находится правее кнопки "B". У Microsoft же все наоборот. Причем с точки зрения логики использования, функции кнопок "A" и "B" аналогичны на обоих платформах -- первая это операция подтверждения, а вторая -- отмены. 

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

Для гайдзинов, естественно, геймпады адаптировать никто не стал. И так пусть в ноги кланяются после своих Atari. 


***

Смотрю потихоньку сериал "Mad Men" про будни рекламного агентства в Нью-Йорке 60-х. 

Самое первое и самое удивительное, что подметил -- запредельное количество симпатичных женщин.
Сериал, правда, не супер свежий -- первый сезон это 2007-й год -- но все равно, разница в подходе в сравнении с современными американскими сериалами прямо режет глаз. 

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

А ведь раньше это практически был билет на большой экран или в телевизор...

Что касается самого сериала -- он очень крутой. Правда, похоже, что четвертый сезон был пиком. Досматриваю сейчас пятый и вижу, что сценаристы как-то подисчерпались и медленно дрейфуют в сторону "jumping the shark".

11 February 2023

Steam Deck: первые впечатления

Прошлой осенью стукнуло четыре года, как у меня в доме появился Nintendo Switch. Более чем достаточно, чтобы в полной мере распробовать прелести портативного гейминга. Поэтому, когда Valve анонсировали Steam Deck, я сразу же им заинтересовался. Некоторое время после старта продаж эта консоль была в жутком дефиците и, даже если что и доезжало к нам в страну, у барыг это продавалось по совершенно неприличным ценникам.
Как мы знаем, в прошлом году наконец-то завершилась острая фаза дефицита полупроводников, консоль начала свободно продаваться, а значит некоторые товарищи, доставляющие к нам консоли из Европы, поумерили свои аппетиты. 

Так как у меня за плечами богатый опыт использования актуальной портативки Nintendo, то, рассказывая о Deck, я буду, в первую очередь, сравнивать конкретно эти две приставки. 

И еще. Deck, как и Switch, умеет работать в док-режиме, но т.к. лично у меня на хозяйстве есть современный ПК, подключенный к 75" телевизору, и внушительная коллекция Xbox геймпадов, то приставку от Valve я буду рассматривать исключительно в портативном сценарии использования.   


Внешний вид 

Steam Deck очень большой. В сравнении со Switch -- прям таки огромный. 
Если использовать приставку исключительно в помещении, то никаких особых неудобств это не приносит. Она не тяжелая, очень удобно лежит в руках и с ней без проблем управляется даже моя одиннадцатилетняя дочь.  
На самом деле, такие габариты дают немало преимуществ. Есть куда отводить тепло, чтобы оно не проходило через области, где игрок держит руки. Valve не поскупились на огромный хват и держать Deck намного комфортнее, чем плоский как доска Switch. Большой экран в 7", использовать который сильно приятнее 6.2" малыша, который ставят в модели без OLED технологии. 
И, наконец, органы управления -- их много, сильно больше, чем у Switch, и они заметно удобнее. Но про управление надо писать отдельно. 

Во-первых, стики, которые имеют большой ход и по размерам соизмеримы со стиками классических полноразмерных контроллеров, а не с огрызками, которые ставят на джойконы.
Во-вторых, нормальная крестовина, вместо кнопок. Единственная к ней претензия (да и вообще, единственная претензия из области органов управления) -- она не очень удобная для прожима диагоналей в файтингах. Если что, в этом смысле, Switch Pro Controller не сильно лучше.
В-третьих, есть четыре дополнительные кнопки на тыльной стороне, на которые можно цеплять, к примеру, клавиатурные "Enter" и "Escape" для игр, которые не идеально управляются с геймпада.     
В-пятых -- целых два тачпада, которые закрывают вопрос с играми, заточенными под управление мышкой. Дополнительный бонус -- на левом тачпаде, кроме центрального клика, есть еще четыре клика по периметру.

09 January 2023

Heroes of Might and Magic III: как работает сложная система правил

Когда почти четверть века назад я начал играть в только-только вышедшую третью часть легендарных "Героев", я уже был программистом. В то время это еще не стало моей профессией и особых денег не приносило, но мыслил я уже исключительно в этой парадигме и, к примеру, когда сталкивался с той или иной программой, постоянно задавал себе вопрос "а как они это сделали?". В случае "Героев", я прокручивал в голове способы реализации сложной системы правил, по которым живет эта игра. Те, кто играл, знают, что к огромному количеству однозначно описываемых понятий, типа параметров героя или рекрутированных существ, есть бесконечное число "модификаторов": исключений из правил, которые трансформируют их поведение. Иммунитет к тому или иному виду магии, невозможность сбежать с поля боя, бонус при атаке определенных классов существ, модификаторы перемещения по карте, нестандартные правила регенерации манны и т.д. и т.п. 

К огромному сожалению, оригинальный код игры так и не стал доступен публично, но так как игра имеет прямо таки культовый статус (особенно в русскоязычном пространстве), собралась команда энтузиастов, которая решила просто взять и переписать игру с нуля, стараясь по максимуму повторять поведение оригинала. Проект называется VCMI engine и я, не без интереса, покопался в его исходниках. Особенно в той части, которая касалась реализации описанных выше "исключений из правил". 

Надо сказать, авторы VCMI подошли к решению вопроса основательно. 

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

Во-вторых, та самая сложная система исключений из правил получила название "бонус" и это стало общим механизмом, пронизывающим все игру насквозь. Свойства любого артефакта это перечень бонусов. Любая особенность монстра это тоже бонус. Скиллы героя это бонусы. И все эти бонусы сведены и описаны в одной огромной таблице. Герой, которые научился ходить по воде, имеет в игре бонус WATER_WALKING. Стреляющий во время битвы монстр отмечен как SHOOTER. А если на него кастанули Forgetfulness, то он получит "бонус" FORGETFULL  и разучится стрелять на определенное время (время жизни -- один из атрибутов бонуса). 

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

Схема распространения бонусов в игре

В итоге, к примеру, Ангелы описаны в конфигурационном файле castle.json таким вот образом:

    "angel" :
    {
        "index": 12,
        "level": 7,
        "faction": "castle",
        "abilities":
        {
            "hateDevils" :
            {
                "type" : "HATE",
                "subtype" : "creature.devil",
                "val" : 50
            },
            "hateArchDevils" :
            {
                "type" : "HATE",
                "subtype" : "creature.archDevil",
                "val" : 50
            },
            "const_raises_morale" :
            {
                "stacking" : "Angels"
            }
        },
        "upgrades": ["archangel"],

Массив abilities как раз и описывает бонусы, например, ненависть к дьяволам имеет бонус типа HATE, subtype указывает класс существ, против которых он работает, а val -- процент дополнительного урона. 

14 October 2022

Многоядерность: компиляция и декомпрессия

После апгрейда начала этого многострадального года, когда я переехал с 4х ядерного процессора на 10 ядер, периодически ловлю себя на мысли, что я оказался в ситуации чувака, который купил себе sports car, чтобы каждый день стоять на нем в городских пробках. При казуальных сценариях использования ПК дома хоть какую-то серьезную нагрузку на процессор дают ну разве что игры. При этом для современных многоядерных камней речь идет о нагрузке порядка 30-40%, т.е. две трети мощностей тупо простаивает. Как по мне, для гейминга оптимум по процессору находится где-то в области нынешних бюджетных решений со схемой 4C/8T (при условии, что эти ядра будут работать на достаточно высоких частотах)... 
Да, на моем i5-12600K есть возможность выбивать красивые цифры во всякой там синтетике, типа Cinebench, но синтетика она и есть синтетика и постепенно приходит осознание, что у тебя в ПК стоит процессор, которому вообще-то место не дома, а на рабочем месте в машинах класса "workstation". Короче, в один прекрасный день, наблюдая за тем, как неторопливо идет компиляция проекта на моем ноутбуке для работы (с не самым дохлым i7-10850H), я понял, что мне определенно стоит попробовать стоящий рядом домашний ПК в роли рабочей лошадки. 

Наконец-то дошли руки поставить Visual Studio 2022, а в качестве real-world бенчмарка решено было использовать компиляцию boost (достаточно большую по размеру и сверх популярную C++ библиотеку). Скачал последнюю актуальную версию 1.80, это целых 200 мегабайт исходников. 

Перед тем, как показывать и обсуждать какие-то цифры, напомню, что в одной из прошлых заметок я поделился выводами о том, как нужно оценивать многопоточный потенциал процессора i5-12600K с учетом того, что он содержит в себе аж целых три разных вида ядер -- производительные P-ядра, их виртуальных копии для режима hyperthreading и "экономичные" E-ядра. Многочисленные бенчмарки говорят о том, что для хорошо масштабирующейся нагрузки этот процессор можно интерпретировать как содержащий 10 P-ядер: 6 фактических, +2 ядра дают 6 HT ядер (с коэффициентом 1 к 3) и +2 ядра дают 4 E-cores (с коэффициентом 1/2). Т.е. если какая задача, при переходе от выполнения на одном ядре к работе на всех 16-ти ядрах, ускоряется в 10 раз, то можно говорить о том, что она практически идеально масштабируется под многопоточность. 

27 June 2022

Олдскул по-молодежному

Недавно вышла игра "Teenage Mutant Ninja Turtles: Shredder's Revenge" у которой хватает достоинств, но сегодня мне захотелось поговорить об одном из ее недостатков. 

Расцвет жанра beat'em up пришелся на рубеж 80-х и 90-х годов прошлого века, а самые лучшие его представители, как по мне, были выпущены для 16-ти битной консоли Sega: те же "черепашки", легендарные серии Golden Axe и Streets of Rage. Это я все к тому, что когда сегодня сталкиваешься с игрой, которая во всем старается подражать классике тридцатилетней давности, то последнее, чего от нее ожидаешь это... тормозов и жестких просадок частоты кадров. В своем анализе игры Digital Foundry показывает, что на Nintendo Switch в некоторых моментах фреймрейт проседает вдвое -- ниже 30 кадров в секунду! 

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

15 June 2022

Про лозунг "Армия! Мова! Вiра!"

Сразу важный дисклеймер -- я категорически против политических срачей во время войны. Этот текст я пишу про запас, чтобы к нему можно было вернуться спустя какое-то время. Поэтому если вы читаете эти строки, а над Ялтой еще не реет жовто-блакитний прапор -- закрывайте эту страницу, ее время еще не пришло...

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

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

О языковой компоненте этого призыва я очень подробно писал еще в 19-м году. Это крайне мерзкая манипуляция на почве лжепатриотизма, когда в огромной стране, где украинский язык в качестве основного едва ли использует половина населения, появляется лозунг о том, что добрая половина твоих сограждан это просто люди второго сорта. Подход, раздирающий страну на части, который, кстати, первой взяла на вооружение славнозвестная "Партия Регионов". Этот ужасный раскол по принципу противопоставления востока страны и ее запада. Такие штучки, кстати, однозначный признак крайне слабой политической силы, потому что ты гарантировано теряешь огромную часть электората.  

С языком разобрались, теперь насчет "веры". Если кто не в курсе, под этим словом в лозунге имеется ввиду религия, а вернее сказать -- Украинская Православная Церковь, которая в начале 19-го года получила Томос, событие, сопровождаемое невероятным количеством политического пиара вокруг него... И мы снова получаем раскол, деление на правильных и граждан второго сорта, ибо Украина по своей конституции это светское государство, в котором свободно живут люди самых разных вероисповеданий и религиозных конфессий, а также атеисты и те, кто вообще не верит ни в какого Бога. Зачем им ваша УПЦ? 

Ну и про последний компонент лозунга -- про армию. 
Начну несколько издалека. На сегодня ствольная артиллерия армии рф на 100% состоит из пушек и гаубиц, произведенных еще в Советском Союзе. Тоже самое можно в значительной степени сказать и про танковый парк, хотя есть у них некоторое количество танков модели Т-90, произведенных уже после 91-го года. 
Это я все к чему -- если в армию вкладывать деньги, как это делал в данном случае СССР, то потом этим ресурсом можно пользоваться даже спустя несколько десятилетий. Если бы Петр Алексеевич реально заботился бы о переоснащении и вооружении украинской армии, то спустя пару лет президентства Зеленского, которого армия типа совсем не интересовала, мы бы все равно имели бы чем воевать. 
А так -- воевать не чем, кроме разного советского барахла, которое старое, изношенное и его мало, а вопрос нашего выживания целиком и полностью находится в руках наших "западных партнеров" и того оружия, которое они нам поставят. Ну или не поставят.  

Ситуацию с армией за последние восемь лет единодушно оценивают все воинские эксперты. Например, Олег Жданов говорит о том, что все эти годы гособоронзаказ был провален. Военный бюджет был на уровне проедания, на него хоть как-то можно было только содержать армию, но не решать вопросы перевооружения и переоснащения. Непрерывный рост военного бюджета, которым любят хвастать некоторые политики -- чистая фикция, этот рост едва закрывал инфляцию в стране. Очевидно, что последствия такого последовательного подхода по снабжению армии, когда не были решены даже относительно простые вопросы, типа производства 152 мм снарядов, мы в полной мере увидели после начала масштабного вооруженного вторжения сил рф.
Вот и выходит, что слово "Армия" в том самом лозунге Порошенко не более, чем пустое слово. Что совершенно не удивительно для нашей политики, основанной на бесконечном популизме и невыполненных обещаниях...   

Вот тыкаешь наугад в какого-то погибшего на этой войне украинского воина-героя, а он при жизни говорил по-русски, в бога не верил, а погиб, блин, потому, что воевать нашей армии толком-то и нечем.
Зато над его телом реет красивый патриотический петин лозунг.
Тот самый, "Армия! Мова! Вiра!". 


21 May 2022

О производительности современных процессоров

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

Тотальный апгрейд домашнего ПК я сделал еще в январе, с той поры активно его использовал, бенчмаркал и всячески экспериментировал, что в итоге позволило накопить ряд интересных наблюдений. Ну и, помимо всего прочего, переезжал я с i5-6600K на i5-12600K, т.е. процессоры одного класса из разных поколений, а это позволяет ретроспективно оценить успехи процессоростроения компании Intel на интервале в шесть лет.    


Многопоточная производительность

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

В случае 12600K тема многоядерности усложняется фактором гетерогенности, в этом процессоре реализовали аж целых три вида ядер: полноценные высокопроизводительные (P-cores), паразитирующие на них hyper-threading ядра и плюс ядра энергоэффективные (E-cores).

01 February 2022

Сказ о том, как мне было лень апгрейдить ПК, но я все-таки сделал это

Лет 30 назад это была главная мечта в моей жизни -- иметь дома персональный компьютер. Поэтому не удивительно, что когда это все-таки случилось в 96-м году, домашний компьютер стал центром Вселенной, вокруг которого вращалась вся моя жизнь. И это при том, что Интернета тогда не было и вообще компьютер не играл тогда роль медиацентра для воспроизведения музыки, фильмов и так далее. Зато на компьютере можно было рисовать и рендрить 3D модели, набирать тексты, делать расчеты для института, программировать и, конечно же, играть в игры. Именно моя безудержная страсть к вычислительной технике в 90-х предопределила мою будущую профессиональную карьеру. 

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

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


***

Последний раз домашний апгрейд я затеял летом 16-го года. Я переезжал с двухъядерного Pentium E6500 на i5 6600K, помимо всего прочего, еще и прикупив себе первый SSD на 256 Гб для установки системы. Видик я не брал тогда от слова совсем, планируя обойтись интегрированным. 

Главный сюрприз от апгрейда преподнесла "мать". На материнках я никогда не экономил и в тот раз взял Asus Z170 Pro Gaming, понятно, что не гейминга ради, а просто как решение определенного качества и класса. И так как мать была игровая, Asus дарила к ней код для бесплатного скачивания Doom 16-го года. А я, хоть и был в тот момент совершенно равнодушен к ПК играм, но все-таки повелся: Doom есть Doom, моя самая любимая игра из 90-х, да еще и пресса тогда ее нахваливала самым безбожным образом. В общем, даже мне, хоть краешком глаза, на него посмотреть захотелось. Тем более, что был код, а на торрентах не было пиратки.

31 January 2022

Про руки программистов — прямые и не очень

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

Сто лет как пользуюсь Notepad++, это бесплатный, функциональный, легковесный и очень быстрый редактор текста с фичами для программистов. Как бы быстрый, ибо есть одна оговорка. Функция поиска текста по множеству файлов работает с совершенно черепашьей скоростью. Если взять за референс аналогичную функцию в Total Commander (где она, судя по всему, реализована максимально прямолинейно, без всяких там фокусов имени Бойера-Мура), то Notepad++ делает это как минимум на порядок медленнее.
Понятно, что речь идет о поиске по данным на диске, доступ к которым, конечно же, может быть узким местом. Но у меня по работе часто бывает, что при рефакторинге многократно ищешь что-то в одном и том же, относительно компактном, наборе файлов, который гарантировано будет закэширован операционной системой в память.

 

Первая мысль, которая возникла в голове по поводу этой тормознутости — ну окей, вы написали свой алгоритм поиска по тексту несколько криво, но сейчас 22-й год на дворе, у всех давно стоят многоядерные процессоры, запустите его параллельно по этим ядрам и получите многократный прирост на ровном месте. Для сферического текстового редактора в вакууме такую переделку можно реализовать за несколько дней работы... Пошел гуглить по теме и узнал много чего интересного. Потом таки скачал исходники Notepad++ и ошарашенный очень долго приходил в себя. Тут получилось как иной раз с красивой женщиной — восхищаешься ее задницей ровно до того момента, пока она не откроет рот.

17 January 2022

Киномарафон на каникулах

Решил в беглой манере написать о том, что получилось посмотреть на новогодних каникулах. 
Поехали!

 "Не смотри вверх" -- кино в крайне редком нынче жанре социальной сатиры, за одно только это его стоит посмотреть. А если к этому еще прибавить неприлично звездный актерский состав, то колебаний насчет просмотра вообще не должно быть. 
Лично мне несколько обидно, что пытаясь препарировать современные проблемы американского общества, режиссер тактично обошел стороной повесточку "diversity and inclusion", увлечение которой в Штатах приняло какую-то совершенно патологическую форму. 
Что же касается идеи о том, что нынешнее состояние общества таково, что оно не сможет сплотиться перед лицом смертельной угрозы, то мне кажется, что тут вполне себе уместны аналогии с COVID эпидемией и, наверное, на практике все не так уж и плохо. Хотя, безусловно, соцсети как источник антиваксерской ереси -- системная проблема, которая хорошо освещена в фильме. 
Забавный факт: сидящий на коксе глава администрации Белого Дома мордой прям один в один наш Ермак. 

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

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

"Агнец" -- невероятно атмосферный ужастик, который вряд ли можно рекомендовать любителям щекочущего нервы жанра. Тут все происходит крайне неторопливо и драмы, пожалуй, сильно больше, чем мистики. Снято все на натурных съемках в Исландии и история рассказывается на фоне таких пейзажей, что только ради этого стоит решиться на просмотр. Мне понравилось, хорошее кино.  

"Случайность и догадка" -- японское кино не кино. Картинка тут вообще не играет никакой роли, этот фильм -- бесконечная череда диалогов о человеческих чувствах. Диалогов очень глубоких,  психологически достоверных, словно бы написанных в лучших традициях русской классики XIX века. Да, внезапно оказалось, что японцы умеют в такое.
Фильм состоит из трех законченных миниатюр, каждая из которых посвящена вопросам любви и случайности. Мне понравилось, хотя еще раз повторюсь, что это совершенно не кино, это скорее книга.