Лента
GitHub не был началом. До этого были проверки SVN, которые ломались, если на ниЧитать далее…
OpenSSH creator Theo de Raadt was pushed out of NetBSD, lost a DARPA grant and fought half of open source. Now his paranoid code guards the world's servers.
I. Half a Second
Until the last days of March 2024, almost nobody outside a small circle of programmers had heard of liblzma. It was a compression library, a piece of plumbing buried deep in Linux, and for two years someone had been preparing to use it to walk through the front door of the internet.
He called hЧитать далее…
Я опять перестал писать в блог. Каждый раз говорю себе: «пиши!», а другая моя часть говорит «лень!». В этот раз немного поборю лень.
Наверное, стоит написать про то, что делал, да что происходило... А делал я вот что:
CreoCode (https://creocode.io/)
Читать далее…Вчера с моим ноутбуком случилась досадная неприятность - вышла из строя система охлаждения. Точнее, она работает, но издаёт душераздирающий скрежет. Работать стало невозможно.
Систему охлаждения в сборе я решил заказать целиком, благо это стоило совсем небольших денег, примерно 2.5К₽. Но загвоздка в том, что идти из Китая будет достаточно долго и придёт только 16-18 июня по обещаниям. То есть больше чем на две недели я остаюсь без рабочего инструмента!
Но не беда! У меня же есть прекрасный Steam Deck, который хоть и считается игровой консолью, но по факту достаточно мощный и портативный x86 ПК.
Читать далее…В мире всяких аналогов make создано достаточно. И даже больше чем достаточно! Есть как альтернативные реализации (GNU Make vs BSD Make), так и совсем самобытные (redo). В моей практике, как разработчика НЕ на Си — make используется исключительно как запускалка некоторых частых команд. И это притом, что make всё же несколько для другого. И в целом, именно запускалка — скорее побочный эффект.
Казалось бы, тогда для большей красоты — стоит использовать специализированное решение, например, Taskfile. Но тогда каждому для работы с проектом придётся ставить приложение для работы с Taskfile. Выглядит как такое себе решение.
Но! У всех же точно есть POSIX sh! Так что мешает делать очень минималистичный sh скрипт, суть которого в простом запуске команд? Да ничего! Вот самый простой вариант:
Читать далее…Мне надоело!
Надоела сложность с которой я сталкиваюсь при написании новых постов в блог!
Поэтому я всё же выделил время и настроил пайплайн так, чтобы хотя бы писать посты было удобно. А именно, в Obsidian. Который и сам на себя берёт управление статикой, которую я прикладываю и красивое оформление и управление тегами, потому что я не помню какие теги есть, а каких нет.
Читать далее…Буквально только что пришло письмо, что наконец-то опубликовано публично моё первое расширение для Firefox!
Без долгих разгонов, вот ссылка: https://addons.mozilla.org/ru/firefox/addon/groupper/
И, конечно же, исходники: https://gitrepo.ru/NeonXP/Grouper
Читать далее…Для собственного интереса написал на Go реализацию IRC-подобного чата, который работает поверх прокола SSH.
Умеет пока немного, но много я от него и не хотел. Основная идея в том, чтобы его можно было запустить без конфигурации, с минимальными усилиями на любой «картошке» и чтобы он могу обслуживать, например, небольшую группу пользователей в одной локальной сети (хотя может работать и по интернету).
Получилось очень гиковски и лампово. Так сказать, чатик на случай ядерной войны :)
Читать далее…Вчера гуляли с супругой на набережной, а сегодня чисто случайно решили прогуляться в сквере филармонии им.Тукая. Людей было немного, что только создавало больше уюта и ламповости этому хорошо украшенному скверику. К сожалению, гулять прям долго-долго особо не вышло, т.к. хоть и всего -7°, но продрогли сильно, т.к. гулять изначально не планировали и не были одеты соответственно. Сейчас дописываю этот пост и пытаюсь отогреться :)
Как водится, дальше будет немного фотографий :)

Сегодня с супругой съездили для интереса на ярмарку OSM (нет, это не OpenStreetMaps, а OpenSpaceMarket :) ) в гастрокомплексе «Кайт». Ярмарка не скажу что была сильно большой, но нам понравилось. Купили всякого не сильно много, поднос да пару ароматных свечек с зимними ароматами. Фотографии покупок да и самой прогулки прилагаю. Всё таки у нас очень красивый город!
P.S. на фотку можно кликнуть, тогда она откроется в большем размере.
Покупочки
Читать далее…Пришло в голову, почему бы не рассказать как у меня организован личный органайзер.
Для начала стоит очертить то, какие у меня потребности от органайзера:
- Вести список ежедневных, еженедельных, ежегодных, а так же, одноразовых
событий - Вести быстрый список ближайших задач (ToDo список). Под быстрым, я
подразумеваю то, что внести новый пункт в него я могу не дольше, чем за пару
десятков секунд. Если это будет требовать бо́льших усилий, то я себя знаю: я
это быстро заброшу, т.к. это станет для меня не помощью, а повинностью. - Место для быстрых заметок в формате «бесконечного текстовика». Аналогично,
это должно быть под рукой в быстром доступе. Obsidian себя показал слишком
медленным. Настолько, что мне стало проще запоминать, чем испытывать свои
нервы каждый раз, наблюдая его длительный запуск. Да, звучит на первый взгляд
глупо, но у меня так: запуск Obsidian
После вчерашнего поста мне написал один хороший человек с дельным замечанием, что не стоит для этих целей использовать make. Действительно так. И предложил хорошее решение, что это стоило сделать просто sh скриптами.
У меня только один вопрос. А почему я сам-то так сначала не сделал? Это же буквально на поверхности!
Штош, бывает, затупил. Да и привык для всех гвоздей использовать этот молоток.
Читать далее…А ещё, я решил поделиться тем как я пишу в блог. Потому что, почему бы и нет.
Во-первых, у меня есть такой вот Makefile просто в корне home:
new-post:
@printf "Введите имя поста (латиницей, без пробелов) [new-post]: "; \
read postname; \
if [ -z "$$postname" ]; then \
postname="new-post"; \
fi; \
date=$$(date +%Y-%m-%d); \
file="neonxp.ru/posts/$$date-$$postname.md"; \
echo "---" > "$$file"; \
echo "title: " >> "$$file"; \
echo "date: $$da
echo "tags: []" >> "$$file"; \
echo "---" >> "$$file"; \
echo "" >> "$$file"; \
echo "---" >> "$$file"; \
echo "Комментариев в блоге не предусмотрено, но вы всегда можете написать мне на e-mail [i@neonxp.ru](mailto:i@neonxp.ru) или в джаббер [i@neonxp.ru](xmpp:/i@neonxp.ru)" >> "$$file"; \
nvim "$$file"
Читать далее…Я продолжаю погружаться в печать не просто готовых моделей из интернета, что не очень интересно, но так же и в проектирование и печать собственных изделий. Сегодня моя любимая супруга попросила напечатать ей органайзер для косметики. Показала референс, какой она хочет. ТЗ понятное, размеры подобрали, осталось дело за малым — непосредственно запрограммировать изделие.
На практике, это пока самое сложное по детализации изделие из всех, что я делал. Код получился кривоватым, но рисует то, что нужно.
Вот так результат в редакторе:
Читать далее…Некоторое время назад я по глупости запорол свои бокорезы, так, что для откусывания ножек радио деталей они больше не годятся. К счастью, стоят они совершенно не дорого, и тем же днём были заказанные новые в небезызвестном сервисе, который в девичестве содержал в себе название моего родного города. При получении я немного огорчился тем, что в комплекте к ним не шёл колпачок, который был у предыдущих, хотя выглядят они идентично.
Штош. Я решил восполнить этот недостаток с интересом для себя и решил этот колпачок самостоятельно спроектировать и напечатать на 3D принтере, который есть у меня на хозяйстве.

Некоторое время назад наткнулся в блоге Евгения Степанищева на потрясающую штуку - Meshtastic, или как в народе её называют - «мышастик». Вкратце, это протокол и, в первую очередь, специальная прошивка для целого спектра устройств, которые позволяют организовать mesh сеть поверх протокола LoRa.
Базово, как это выглядит при использовании:
У каждого участника сети есть небольшое портативное радиоустройство (готовое или самодельное - не важно), прошитое специальной прошивкой. К устройству, чаще всего (но необязательно!) подключен смартфон со специальным одноимённым приложением. Устройство ищет и старается подключиться к другим подобным устройствам, а со смартфо
Читать далее…Давно ничего не писал, да и не было особо о чём. Немного играюсь с нейросетями и LLM в последнее время. Если выйдет что интересное - напишу об этом.
А пока хотел написать вот о чём.
Не помню, чтобы я когда-либо писал о том, какой у меня основной сетап, хотя сам с удовольствием читал о том, как он организован у других людей. Пожалуй, пришло время и мне его описать.
Читать далее…Давно ничего не писал, да и не было особо о чём. Немного играюсь с нейросетями и LLM в последнее время. Если выйдет что интересное - напишу об этом.
А пока хотел написать вот о чём.
Не помню, чтобы я когда-либо писал о том, какой у меня основной сетап, хотя сам с удовольствием читал о том, как он организован у других людей. Пожалуй, пришло время и мне его описать.
Читать далее…Так получилось, что с Нового Года я ничего в блог не писал. Тому причина в личной загруженности, и в не менее личной лени. Так же я делал некоторые эксперименты над самим блогом, потому что моё внутреннее чувство прекрасного не даёт мне просто остановиться и не трогать то, что работает.
Но всё же, я чувствую внутреннюю потребность написать небольшую заметку с размышлениями, которые недавно приходили ко мне в голову.
А связаны они с тем, что есть определённые догмы в индустрии, которые непонятно (ну или понятно) почему появились, и которым слепо следуют, хотя, как будто они уже не имеют смысла.
Читать далее…Просто собираю подборку интересных ссылок по гошке на почитать потом.
- Extra — Моё. Пакет с разными полезными
функциями без дополнительных зависимостей. - Серия видосов про создание игры в стиле Animal Crossing на golang с помощью
raylib —
https://www.youtube.com/watch?v=iWp-mCIQgMU&list=PLVotA8ycjnCsy30WQCwVU5RrZkt4lLgY5&index=1 - Самописный распределенный типа Postgres
https://notes.eatonphil.com/distributed-postgres.html. Под капотом raft от
hashicorp, boltdb и самое интересное — парсинг SQL - Рассчет расстояния между двумя Geo точками:
import "math"
...
// https://en.wikipedia.org/wiki/Haversine_formula
func GetDistance(lat1, lon1, lat2, lon2 float64) float64 {
lat1 *= math.Pi / 180
lon1 *= math.Pi / 180
lat2 *= math.Pi / 180
lon2 *= math.Pi / 180
return 12742 * math.Asin(
math.Sqrt(
math.P
Читать далее…