2026-05-23

Их разыскивает милиция

Несколько лет назад на одном рабочем созвоне коллега в шутку сказал:

— Кажется, я видел твоё фото на доске «Разыскивается полицией».

Мы посмеялись — такого точно не могло быть.

Но через несколько минут он прислал фотографию из полицейского участка в Самаре. И там действительно висело моё фото. Оказалось, местная полиция скачала мое фото с моего же сайта как пример как нужно кадрировать фото на заявление на паспорт.

В то время у меня был небольшой pet project — сервис для подготовки фотографий на документы. Он автоматически форматировал фото в соответствии с требованиями для паспортов и виз, чтобы их можно было быстро распечатать где угодно.

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

И вот что меня действительно удивило.

То, что раньше требовало серьёзного backend’а, сложной обработки изображений и большого количества времени, сегодня можно собрать буквально за несколько часов.

Современный браузер теперь умеет:

  • удалять фон прямо на клиенте,
  • автоматически кадрировать фото,
  • подгонять его под официальные требования,
  • и готовить финальную версию для печати практически на любом принтере или в фотокиоске супермаркета.

Весь проект получился полностью open source и задеплоен на GitHub Pages. Privacy First - фото остается в браузере, open source - все как я люблю.

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

 

Оставить комментарий

 
  2026-03-28

Блеск и нищета float

Какое расстояние между соседними числами в float? Что будет если к числу с плавающей точной прибавить другое чесло с плавающей точкой? Зависит от значения, результат может равняться ожидаемому но в некторых случаях разница между результатом и исходным числом может быть нулевой а в некторых отличаться на несколько сотен!

#include <stdio.h>

int main(void) {
    float x = 1e10f;

    printf("x        = %.0f\n", x);
    printf("x + 1    = %.0f\n", x + 1.0f);
    printf("x + 1000 = %.0f\n", x + 1000.0f);
    printf("x + 1024 = %.0f\n", x + 1024.0f);

    return 0;
}
	

x = 10000000000
x + 1 = 10000000000
x + 1000 = 10000001024
x + 1024 = 10000001024

Из-за особенностей хранения float при малых значениях точность представления чисел сопоставима с int а на больших значениях рассторяния между числами на численной оси увеличиваются и достигают довольно больших значений. Прям очень неожиданно может получиться если это не учитывать!

 

Оставить комментарий

 
  2026-03-17

Диаграммы и ztools

Выложил новую версию ztools. Добавил примеры работы с графикой - круговые и пончиковые диаграммы. Примеры почти целиком сгеренировал Codex. Из-за отсутствия прослойки вроде виртуального DOM размер библиотеки получается минимальный - ее можно включить в промт агенту целиком и агент сразу понимает как писать код с ее использованием.  Получается AI Friendly Dom-First Reactivity. Прям здорово!

 

Оставить комментарий

 
  2026-02-28

Опубликовал ztools

Меня давно волнует вопрос - почему javascript библиотеки такие грамоздкие? Репозиторий React занимает больше гигабайта! А точно, проблема, которую решает реакт может должна решаться набором программ с кодовой базой размером в 10 инсталлятора Windows NT?

Оживил, вернее переписал с нуля ztools.org.

Ztools - это небольшая библиотека размером всего в несколько сотен строчек кода на JavaScript, которые добавляют реактивность, конcтруирование dom элементов, веб-компоненты, SSR и многое другое...

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

 

Оставить комментарий

 
  2026-02-20

Поставил OpenClаw

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

 

Оставить комментарий

 
  2026-01-12

Визуализация клавиатуры на экране

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

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

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

 

Оставить комментарий

 
  2025-12-03

Запускаем локальный MCP сервер как удаленный

MCP-сервера — это супер-хайповая тема последних дней. Что в ней хайпового? Вы даёте LLM возможность взаимодействовать с реальным миром. Идея проста: LLM умеет формулировать запросы в JSON, а значит, она может почти без магии общаться с внешними инструментами по протоколу JSON-RPC!

Самый простой способ вызова MCP — это через локальный процесс через STDIO. Например, один из самых простых MCP-серверов — @modelcontextprotocol/server-filesystem — умеет работать с файловой системой. Говорим системе: вызови npx -y @modelcontextprotocol/server-filesystem /some/folder/name, и наша LLM теперь видит файловую систему и может её менять так, как вы её попросите.

Но в таком виде вызов MCP-сервера не имеет большого смысла: если вы используете IDE, то там агенты уже и так могут работать с файловой системой. Но что, если мы хотим иметь доступ не локально, а удалённо? В этом случае, установив на удалённый сервер тот же самый MCP-сервер, мы можем просто обращаться к нему через SSH, предварительно забросив на удалённый сервер SSH-ключи, чтобы сервер не спрашивал пароль. Обмен будет всё так же происходить через stdin/stdout, но сессия будет поддерживаться через SSH!

[mcp_servers.remote-filesystem] 
command = "ssh" 
args = ["user@someserver.com", "mcp-server-filesystem /home/user/foldertoaccess"]

Этот способ открывает широкие возможности для создания лёгких универсальных мобильных ассистентов, упрощает администрирование серверов, и ещё можно сделать многое, чему пока не дали названия. Но будьте осторожны — ведь удалить ваши файлы теперь LLM тоже сможет без проблем, поэтому пользуйтесь этой силой с умом!

 

Оставить комментарий

 
  2025-04-16

Самоиграющийся тетрис

Денис Ширяев в своем Telegram канале опубликовал интересный скрипт - тетрис который играет сам в себя постоянно улучшая свою игру при помощи генетического алгоритма. Примечательно то, что все это сделано одним промтом при помощи модели Gemini.

У на моем компьютере скрипт работает уже сутки - из 1000 генераций сделал 350, и все еще играет. Думаю при помощи градиентного спуска можно получить не менее эпичный результат!

 

Оставить комментарий

 
  2025-04-14

Фрактальная фотография

Вот тут чувак делает крутые фрактальные эффекты из стопкадров на видео - что это если не искусство?

 

Оставить комментарий

 
  2025-03-17

Вкалывают роботы

Попробовал новый инструмент Browser Use. Browser Use - это система автоматизации браузера на базе искуственного интеллекта. Для использования нужно использовать Python но есть и версия с интерфейсом. Говоришь системе, что ты хочешь и браузер автоматически делает то что тебе нужно - ищет в сети товары, делает онлайн заказ, ищет для нас работу, или работников, что угодно.

Я прям под впечатлением. Система использует OpenAI ключи, так что за пользование системой придется платить, один запуск стоит несколько центов, что в принципе вполне терпимо. Для автоматизации используется playwright который, оказывается умеет открывать браузер со всеми расширениями и пользовательскими сессиями, не знаю как он это делает но работает это круто!

 

Оставить комментарий