Обновить

Все потоки

Сначала показывать
Порог рейтинга

Оперативный постмит

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

Недавно подсмотрел, как мой коллега во время встречи сразу шарит экран и на ходу фиксирует постмит: решения, экшн-поинты, ответственных, сроки.

Это оказалось супер удобно:

  • Сразу видно, что записывается, а участники могут поправить, уточнить, добавить

  • Все сразу понимают, кто на ком стоял, кто за что отвечает

  • Не нужно тратить время после встречи и что-то дооформлять

  • Шаблон постмита позволяет ускорить процесс ещё больше

Теги:
Рейтинг0
Комментарии0

Шаблонный сервис

Я всячески люблю, когда разработка идёт предсказуемо – и многое для этого делаю.  

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

Так зачем же нужен шаблонный сервис?

Легко ориентироваться в других сервисах. Иногда нужно залезть в сервис коллег, или поддерживаешь несколько сервисов. Никаких проблем – структура везде одинаковая, всё знакомо, не нужно тратить время на раскопки.

Быстрый старт. Стартуете новый сервис? Полчаса – и он готов. Никаких лишних приседаний.

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

Лучшие практики – в одном месте. Если появляется что-то классное, мы добавляем это в шаблон и новые сервисы сразу это наследуют.     

Обсервабилити, логирование, работа с секретами – готово из коробки. И меньше шансов, что кто-то забьёт на логирование до лучших времён»:)    

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

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

Унификация линтинга. Конфиги линтеров лежат в шаблоне. Ничего настраивать не нужно, а код-ревью идёт быстрее – обо всём уже однажды договорились и зафиксировали.

Базовый CI/CD. Для шаблонного сервиса существует шаблонный ci/cd – и это очень удобно.

Мы активно использовали шаблонный сервис в микросервисной архитектуре, но и для монолитных решений он тоже отлично зашёл – стартовали с ним несколько проектов.

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

В общем – заходите, смотрите, ставьте звездочки. И если с чем-то не согласны – пишите в комменты, автор обязательно ответит 🙂

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Впечатления от RoadCraft.

Добрался на выходных до демо-версии RoadCraft. Прохождение заняло (по цифрам Steam) около 4 часов.

Впечатления смешанные. Как и в случае с Expeditions, разработчики захотели сделать SnowRunner, но не совсем SnowRunner. Получилось так себе, как и с тем же Expeditions.

Самая большая проблема — они берут всего один аспект SnowRunner и выкручивают его на максимум. В Expeditions — это исследования местности, в RoadCraft — ремонт инфраструктуры. Но формула SnowRunner в таком случае рассыпается и играть становится не так интересно.

Чести ради, в RoadCraft было проще втянуться, чем в Expeditions, там я не продержался и пары часов. А тут демку до конца прошёл.

К слову, в отличие от SnowRunner, RoadCraft можно купить в ру-регионе Steam. Но смотрю на цены... Уф. Сейчас игра стоит 1749 рублей (30% скидка от 2499 руб.) Нет уж, я лучше пойду в классику какую-нибудь поиграю...

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии3

Работаем из Java с устройствами с serial-интерфейсом (COM и USB) без JNI — по TCP.

Раньше пользовались rxtx, затем jssc. После очередных крэшей JVM в коде нативных библиотек решил не выбирать замену, а отказаться от них полностью.

В качестве прокси serial-TCP можно взять ser2net или поэкспериментировать с socat, но я запилил свое простое (Rust, mio), под конкретную задачу:

  1. Запускается из основного приложения, свой процесс для каждого устройства

  2. Конфигурация через аргументы запуска и переменные окружения

  3. Завершает работу при отсутствии или отключении устройства (для USB), отключении или отсутствия подключения TCP-клиента

В качестве TCP-клиента Netty. Для интеграции с легаси данные читаются в кольцевой буфер ( OneToOneRingBuffer из agrona), а оттуда уже используются по месту в удобное время.

За счет неблокирующего чтения и использования epoll в mio и Netty минимальные задержки, моментальное оповещение о наличии данных (без Thread.sleep) и об отключении USB-устройства.

Задержки настолько меньше, что пришлось адаптировать кривой код, который не был готов к тому, что драйвер железного serial-порта в Linux отдает данные порциями по 8 байт. Решилось реализацией ByteToMessageDecoder, где возможно, а где нет — буферизацией на стороне прокси и отправкой по таймеру.

Для надежной работы уменьшаем и выравниваем буферы записи, пишем через writeAndFlush с ожиданием завершения, чтобы устройство успевало читать.

Бонус: можно работать с устройством, подключенным к другому системному блоку (например, для разработки) и использовать TCP-эмуляторы вместо реальных устройств без изменения кода интеграции.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

10 января 2006 года Стив Джобс представил первый MacBook Pro на выставке Macworld в Сан-Франциско. Это был первый ноутбук Apple на базе процессора Intel. В честь этого события в компании провели ребрендинг. Ранее ноутбуки Apple для профессионалов назывались PowerBook и работали на чипах PowerPC. Первый MacBook Pro был представлен только с экраном 15 дюймов. Базовая конфигурация стоила $1999 и оснащалась процессором Intel Core Duo 1,67 ГГц, 512 МБ ОЗУ DDR2 с частотой 667 МГц и жёстким диском на 80 ГБ. Запись презентации первого MacBook Pro 2006 года.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии2

В 2025 году я активно занимался программированием. Работал над двумя проектами: NodehistJ и StingrayTV Alice. NodehistJ - это программа для анализа списка узлов сетей Фидонет, а StingrayTV Alice помогает подключать оборудование Триколора к умному дому от Яндекса. Эти проекты помогли мне лучше понять Java-стек.

Проект FidoJ (фидософт на современном Java-стеке) я планирую заново начать в марте (когда получу диплом). Это будет моей главной задачей на этот год, если не появится новая работа.

Сейчас проекты NodehistJ и StingrayTV Alice завершены. Я достиг своих целей, и теперь обновления будут выходить гораздо реже, и содержать меньше изменений.

Теги:
Рейтинг0
Комментарии0

Представлен «Тамагочи» для растений Senso. Съемные модули и зарядное устройство позволяют оставлять небольшой электронный зонд на горшке с возможностью получать данные через щупы из почвы. Освещенность, температура, влажность в комнате и влажность почвы отображаются на дисплее небольшого блока для понимания, как себя чувствует растение.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

В Китае в округе Цзиньюн появился геймерский отель Master-K. За $50/сутки можно получить апартаменты для двоих пользователей с топовыми ПК, а также к лобби с игровым клубом и общению с другими фанатами игр.

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Достойный внимания proof-of-concept с GitHub: превращаем обычный ноутбук в устройство с сенсорным экраном без какой-либо электроники.

Что понадобится: маленькое зеркало, картон, клей. Бюджет — около 100 рублей

Как это работает:

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

  2. Под острым углом обзора дисплей становится частично отражающим — камера видит палец и его отражение в стекле экрана

  3. Алгоритм анализирует расстояние между пальцем и отражением: если они соприкоснулись — регистрируется клик, есть зазор — курсор следует за пальцем без нажатия

Ограничения очевидны: зависимость от освещения, калибровка, точность. Но как демонстрация принципа — отлично

Репозиторий проекта: github.com/bijection/sistine

Ещё больше интересного и полезного из мира IT — в моём Telegram-канале

Теги:
Всего голосов 9: ↑9 и ↓0+12
Комментарии2

Dotfiles для NVIM v0.10.

За прошедший год меня несколько раз спрашивали: каким конфигом NVIM я пользуюсь?

Люблю брать дефолтный NVIM и накидывать минимум плагинов, которые чуть-чуть упрощают жизнь. Для локальной машины добавляю LSP, линтинг, авто-форматтеры и тему.

Единственная особенность конфига — прибиваю гвоздями версии плагинов, чтобы они были совместимы с NVIM v0.10. Некоторые плагины уже требуют v0.11+, но я на Debian Trixie и в стабильных репах живёт только v0.10. Бэкпортов пока не завезли...

В общем как-то так, вот репа на GitHub.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Проект Pentaract позволяет сделать Telegram бесконечное хранилище файлов и превратить мессенджер в личное облако. Основа — PostgreSQL. Технология максимально экономит место, не создаёт лишний мусор, таблицы или списки. Работает без ограничений и без нарушений политики и целостности Telegram.

Теги:
Всего голосов 3: ↑1 и ↓2+1
Комментарии6

Представлена мойка для обуви с искусственным интеллектом. Модель Brolan ClearX использует «датчики» (хотя производитель не пояснил, какие именно) и ИИ для определения материала, из которого сделана ваша обувь, и выбора соответствующего цикла очистки и сушки, а также «технологию микро- и нанопузырьков» для дополнительной очистки. В ClearX планируют начать продажи мойки в середине 2026 года по цене от $500 до $800.

Теги:
Всего голосов 4: ↑0 и ↓4-4
Комментарии2

💀 Когда диаграмма - источник истины, архитектура умирает первой.

📝 Аналитики, использующие PlantUML, Miro, Draw.io, Visio, Structurizer и прочее, забывают что знания в диаграммах - всё равно что код в скриншотах.

Знания должны храниться в виде взаимосвязанных элементов Модели, а диаграммы должны быть лишь их Проекциями. Разработчики ArchiVision.org это прекрасно понимают. Именно это делает систему ArchiVision значительно более эффективным инструментом для хранения знаний об ИТ системах чем все вышеназванные сервисы. При этом, генерируемые ею диаграммы живые, интерактивные и редактируемые. Система также поддерживает горячие клавиши для эффективной работы с моделью и диаграммами. Горячие клавиши позволяют рисовать быстрее, чем большинство перечисленных сервисов, тем более чем писать в PlantUML, Structurizer и аналогичных.

⚡ Ключевое отличия:
- 👎 в названных выше инструментах вы редактируете диаграммы;
- 👍 в ArchiVision вы работаете с моделью, а диаграммы - это её визуальная проекция, через которую тоже можно развивать модель.

🔄 За счет этого:
- 🧠 модель становится единственным источником истины;
- 🧱 диаграммы перестают быть хрупким артефактом;
- 🧩 структура модели позволяет устранять разночтения, дублирование и рассинхронизацию;
- ✅ система способна контролировать ввод и проверять полноту данных;
- 🧼 архитектура перестаёт расползаться по версиям и интерпретациям;
- ⌨️ навигация и горячие клавиши — это часть работы с моделью, а не удобство интерфейса.

🎥 Это видео - пример того, как сочетание модели, интерактивных диаграмм и горячих клавиш меняет процесс проектирования.

Ну а вот сам канал с видеоинструкциями находится здесь.

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии2

Ближайшие события

Как я пошел на курсы ALT Linux и что из этого вышло.

Привет! Решил поделиться личным опытом — от импульсивного желания «прокачаться» с сертификатом до суровой реальности вендорных экзаменов. Если вы тоже раздумываете о сертификации по отечественным дистрибутивам, мой путь, надеюсь, поможет избежать подводных камней.

Часть 1: Выбор пути. ALT против Astra и шок от цен.

Всё началось с желания проверить и структурировать знания по отечественным Linux-системам, с которыми приходится работать. Изначально смотрел в сторону Astra Linux, но глазам сразу бросилась разница в цене. ALT Linux предлагал обучение на более доступных условиях, а поскольку в работе я касаюсь обеих ОС, выбор стал очевидным. Начал изучать предложения на официальном сайте. И вот тут — первый удар. Стоимость курсов в некоторых учебных центрах заставила меня серьезно задуматься: «А нужна ли мне эта подготовка, если вроде бы и так всё знаю?» Но любопытство победило. Я решил тестировать, попробовать .

Часть 2: Организация. Поиск курсов и «неспешные» менеджеры.

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

Совет №1: настройтесь на ожидание. Ответ пришел далеко не сразу, прошло несколько дней. Видимо, такова специфика. Но как только контакт состоялся, всё пошло быстро: договор, оплата, зачисление — и вот я уже студент.

Часть 3: Учёба.

Проверенный университетский формат. Мне прислали ссылку и дату старта. Формат напомнил университет: · Лекции — в записи. Смотрел в свободное время, очень удобно. Практика — раз в неделю, онлайн с преподавателем. На ней разбирали лабораторные и отвечали на вопросы. Первая ступень — это два курса: «Альтадмин 1» и «Альтадмин 2». Каждый длится около 4 недель и включает лекции, 4 лабы и итоговый тест. Всё прозрачно и понятно. Обратная связь и преподаватель: Здесь мне повезло. Преподаватель отвечал на вопросы на учебной платформе молниеносно. Чувство юмора у него было своеобразное, но это мелочь. Главное — экспертиза и готовность помочь были на высоте.

Часть 4: Впечатления и нюансы. Кому стоит идти?

В целом курсы «зашли», и я их рекомендую, но с важными оговорками.

Плюсы:

1. Структурированный, практический материал.

2. Быстрая обратная связь.

3. Гибкий формат (запись + живая практика).

Нюансы (о которых стоит знать):

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

2. В лабах встречаются «подводные камни». Иногда в условиях всплывают неочевидные ошибки или недоговоренности. Но иногда о них предупреждают. Если у вас есть даже небольшой опыт, вы с ними справитесь. Для меня это даже стало плюсом — пришлось глубже копать.Иногда версии virtual box показывали сюрпризы,то версии дистрибутивов Linux. Воооообщем разбирался.

Часть 5: Разочарование в сертификации.

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

Итоги и выводы

1. Качество обучения — на хорошем уровне. Если нужны структура и практика, курсы отличные.

2. Целевая аудитория — не абсолютные новички, а те, кто хочет систематизировать опыт и разобрать задачи с экспертом.

3. Главный минус — невозможность для физлица получить полноценный вендорный сертификат после обучения. Уточняйте этот момент ДО оплаты курсов. Мой опыт получился познавательным, но с послевкусием. Надеюсь, мой рассказ поможет вам сделать выбор.

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии8

Объяснять знакомыми образами

У меня есть собака породы Акита-ину. Заметная, красивая, статная, сдержанная. Прохожие часто обращают на неё внимание, просят погладить или задают какие-нибудь вопросы:

— Ого, какой красивый пёс! А что за порода? Лайка? Хаски?

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

Но я же маркетолог 😎 Поэтому я начал применять эффект образного знакомого мышления и добавлять: "Помните фильм "Хатико"? Вот в нём была такая же собака".

В 80% случаев непонимание меняется на блаженную улыбку, а прохожий уже чувствует симпатию к моему пёселю и ещё больше хочет его погладить.

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

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

Тогда я достаю козырь из рукава: "Ну что же вы? Такую ещё Путину дарили". И закрываю понимание у другого сегмента ЦА. Образ другой, но объект тот же, всё та же собака.

Это важный момент в коммуникации: Не менять продукт, а менять язык, на котором о нём рассказываешь. И когда этот язык совпадает с языком аудитории - появляется узнавание, доверие и желание взаимодействовать.

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

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии3

Представлен открытый сервис SmartImage, который проверяет ресурсы в сети и ищет первоисточник картинки на базе нескольких алгоритмов поиска: SauceNao, IQDB, Ascii2D, trаce.mоe и других. Можно искать через перетаскивание и загрузку изображений, в текстовом поле, через буфер обмена, а также через командную строку.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Представлен открытый бесплатный сервис Maltrail для анализа входящего и исходящего трафика и вредоносов в нём. Проект умеет:

  • обнаруживать опасные домены, URL и IP;

  • распознавать вредительские HTTP User‑Agent‑строки;

  • выявлять актуальные инструменты атак на ПК;

  • высокий уровень сетевой безопасности без сложного развёртывания — сервис ставится за один клик;

  • может помочь найти вирусы, майнеры и прочий мусор, который обращается в сети.

Теги:
Всего голосов 5: ↑4 и ↓1+4
Комментарии0

polluSensWeb теперь поддерживает 26 датчиков и веб-хуки

polluSensWeb
polluSensWeb

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

До сих пор polluSensWeb был в основном инструментом визуализации и диагностики. Данные оставались в сессии браузера. Это было удобно для тестирования, калибровки или демонстрации, но ограничивало возможности реального применения.

При включенных веб-хуках данные датчиков могут автоматически отправляться на внешний конечный пункт в режиме реального времени.
Это позволяет:

  • Пересылать измерения в базы данных.

  • Запускать оповещения или автоматизацию.

  • Отсылать данные в панели мониторинга, такие как Grafana.

  • Интегрироваться с платформами сообществ или пользовательскими API.

Открытый деплоймент
Проект на GitHub

Теги:
Всего голосов 2: ↑1 и ↓1+2
Комментарии0

Клиент YouTube для Android под названием Download YT PRO весит всего 60 кБ (48 кБ в архиве). Приложение не требует Root-прав, убирает рекламу, даже спонсорскую. Видео не ставится на паузу, если свернуть приложение или заблокировать экран. Есть встроенный загрузчик видео и шортсов. Добавлен ИИ Gemini, который сразу сделает саммари даже часовых лекций и выдаст факты и советы по контенту.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии2

Podman, OCI и HEALTHCHECK.

Восстанавливал работоспособность одной репы и столкнулся с забавной особенностью.

Compose файлы, которые там есть — предельно простые. Есть цепочка сервисов, которые запускаются друг за другом. Первым стартует БД, никаких проблем. Вторым — сервис с API для загрузки данных в БД. Опять никаких проблем. Третьим — контейнер с wrk для нагрузочного тестирования. И вот тут загвоздка. Контейнер зависал в бесконечном состоянии "Created".

Подебажил. Оказалось, что при сборке образа API никак не фиксировался HEALTHCHECK! Podman по-умолчанию использует именно OCI спеку контейнеров, а не Docker, и там нет поддержки HEALTHCHECK. Из-за этого не срабатывал condition: service_healthy в Compose-файле, подвешивая контейнер с wrk.

Чтобы решить эту проблему, нужно явно указать формат спеки как Docker при сборке Dockerfile/Containerfile. У Podman это выглядит так:

podman build --format docker .

А вот так для Podman Compose:

podman-compose --podman-build-args='--format docker' build

Альтернативный вариант, если не хочется передавать аргумент каждый раз — установить переменную окружения:

export BUILDAH_FORMAT=docker

Вот такие пироги :)

Теги:
Всего голосов 7: ↑7 и ↓0+9
Комментарии2