вторник, 24 декабря 2024 г.

Мои итоги 2024

моё лицо, когда я пишу эти строки

Я воздержался в своё время от итогов 2023, так как они вышли невнятными и депрессивными, но в этом году всё же решился, всё же предыдущие были три года назад. Я вступал в год без каких-то серьёзных планов и собирался импровизировать на ходу. Раскрою сразу конец поста: эта часть не меняется. Увы, планировать что-то сложное в условиях исторических событий является бессмысленным занятием. Нет, я не предлагаю продать всё (и пропить), но большие планы в условные 20 пунктов — это полная ерунда в нынешнее время.

суббота, 21 декабря 2024 г.

Короткий депрессивный пост про мотивацию

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

Базовая идея мотивации заключается в 100% вовлечении человека в работу, чтобы он прямо ей горел, всего себя ей отдавал. И это хорошо работает, если проект интересный и дела в нём идут замечательно, он выстреливает, растёт, а с проектом — и ценность сотрудника.

Проблемы начинаются с того момента, когда перспективы становятся неясными, что не всегда зависит от сотрудника и компании — есть конъюнктура рынка и другие внешние рамки, которые могут помешать выстрелить. И в этих условиях, когда человек никак не может изменить результат, есть два варианта: 100% гореть, что ведёт к депрессии (сколько ни копай, всё равно не выкопаешь), иначе хотя бы завести хобби. Во втором случае рано или поздно окажется, что проще работать формально и где-то забивать побольше. Очевидно, что второе для конечного индивидуума лучше — проект потом можно и новый начать, а вот расстройство от неудач ещё сто́ит пережить. Но идеи-то требуют противоположного!

В общем, такая себе проблема. Как по мне, идеального решения здесь нет.

вторник, 10 декабря 2024 г.

k-means и pixel-art

 У меня на практике давно встала нехитрая задача перевода картинки в ограниченное количество цветов, по сути — пиксель-арт на минималках. Нужно это в нескольких случаях:

  • Изображение сильно большое и тратить время пиксель-артиста — очень дорого, да и мало кто возьмётся.
  • На изображении немного чётких деталей, так что тратить на него ценное время художника не стоит.
Довольно долго я использовал ручной скриптик на питоне, который считал статистику пикселей, их цветов, пытался как-то через евклидову норму их группировать, но результаты частенько не устраивали — важные цвета терялись, а неважные иногда считались важными.
Попробовал подумать глубже в тему и пришёл к выводу, что технически это... задача кластеризации же! У нас  известно количество кластеров, под которыми подразумеваются результирующие цвета, и нам надо по ним разложить исходные.
Чтобы протестировать эту идею, я взял условный k-means из scikit (sklearn) Питона и попробовал сделать через него — т. е. пиксель по умолчанию имеет тот цвет, что и центр кластера, в который попадает. Но здесь я немного сделал пару хаков - во-первых, цвета взял в HSV, чтобы не кластеризовать условные красные, зелёные и синие цвета, а скорее исходить из оттенка, а во-вторых, добавил мультипликаторы для исходных значений, которые должны давать потенциальное улучшение результата.
Чтобы подизерить результат через евклидово расстояние ищется ближайший подходящий кластер, в который не входит текущий пиксель, оцениваются расстояния до текущего центра и второго и вычисляется вероятность того, что будет браться другой цвет. Это создаёт неплохой эффект, но не идеальный — потому что рандомный дизеринг сам по себе не очень.
В целом результатом доволен, хотя явно можно лучше. В будущем планирую попробовать другие алгоритмы кластеризации, ну и как-то стоит анализировать и само изображение для более хорошего дизеринга.

В заключение небольшой пример:

Исходное изображение

Результат (32 базовых цвета, альфа сохранена, т.к. важное)

Не идеально, но в принципе ок.




пятница, 29 ноября 2024 г.

Про ожидания, опенсурс и планирование.

 Вообще, я уже давно столкнулся с проблемой, которую трудно охарактеризовать. Она заключается в том, что, читая ченджлоги блендеров, редакторов кода и прочего возникает ощущение, что проблем в "обычном" прикладном софте не осталось - всё легко, покрыто туториалами. Бери туториал и пользуйся. И есть ощущение, что мелкие проекты часто сносно можно планировать - даже с учётом обновлений: разобрался раз, потом уже будет быстрее и проблем не будет.

четверг, 28 ноября 2024 г.

Прикладное программирование в 2024 на C++... На TURBO C++!

    Неожиданно набрёл на забавное - книгу "Прикладное программирование на C/C++"

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

    А нет, ни разу. Оказалось что это переиздание какой-то очень древней книги, где предлагается кодить на TURBO C++ (MS-DOS, ееее) и верх работы с вышеуказанным - это работа с WinAPI.

    В общем, если надо современный C++ с серьёзной работой с сетью, изображениями и прочим, не рекомендую. Но, если вдруг решите поностальгировать, как там жилось в прошлом, как надо было кодить году максимум в 2005 - однозначно, 10 из 10, одни скриншоты с Windows 98 чего стоят. Ну и на букинистический экспонат это точно годится.

Blender Transparent Film + Bloom

    Недавно перешёл на более новый (4.2) Blender, потому что в старом почему-то нормально не работала анимация. Обнаружил неприятное.

воскресенье, 27 октября 2024 г.

Давайте уже в январе

Я что-то давно ничего не постил и тому было много причин. 

В первую очередь, я в сентябре надолго уехал на отдых и не жалею. Оказалось, что мне этого реально не хватало и я замечательно отдохнул, несмотря на то, что умудрился в это время приболеть. Но санаторий - это просто тема, я по минимуму сидел за компом, в наглую игнорируя всякие местные новости и проблемы, и это сильно помогло. Из-за этого, пожалуй, должен отметить, что, судя по всему, до этого я отдыхал как-то НЕ ТАК. В связи с этим, придётся всё же пересмотреть свой режим - я всё же не молодею, и, судя по всему, кодинг в свободное время придётся сокращать.

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

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

В результате - пока hrtp-demake я не занимался. Кое-какие наработки по продолжению у меня висят на винте, и я к ним вернусь, но - ничего быстрого пока не будет. Скорее всего, к чему-то более-менее серьёзному по этому проекту я всё же вернусь в январе, т.к. ноябрь - очень мрачный месяц, в который обычно не тянет работать сверх обычного уже никого и меня в том числе. Хотя и не факт, что я вернусь к проекту - у меня нет уверенности в том, что это стоит делать. 

Посты, тем не менее, будут, но, скорее всего, по другим темам.