Pull to refresh
0
Alexzander thunder Shevchenko@thunderspb

DevOps

2
Subscribers
Send message

Я собрал Telegram-бота с лентой новостей, которая учится на твоих реакциях — и хостится за $5 в месяц

Level of difficultyMedium
Reading time15 min
Reach and readers8.1K

Хотел ленту новостей без двух вещей: дублей (одно событие из пяти каналов с разными заголовками) и потока негатива по утрам.

Получился Telegram-бот, который по умолчанию показывает только хорошие и нейтральные новости — а тяжёлый контент включается в настройках на 4 уровнях. Плюс он убирает дубли, переводит RU↔EN и подстраивает выдачу под твои реакции 🔥 ❤️ 😢.

Но самое интересное — он живёт на одной машине Fly.io за ~$5 в месяц. В статье разбираю, как:

заменил Postgres + pgvector на встраиваемый sqlite-vec и убрал отдельную БД-машину;

гоняю типизацию, перевод и оценку тональности через бесплатные LLM на OpenRouter (счёт $0–1/мес);

считаю эмбеддинги локально на fastembed/ONNX без внешних API;

собрал рекомендательное ядро на «векторе вкуса» с EWMA и анти-баблом.

И, конечно, грабли: sqlite-vec, который ломался на arm64; vec0 без INSERT OR REPLACE; fastembed, сменивший пулинг между версиями; и LLM, которая «подкручивала» оценки негатива, пока я не дал ей чёткую рубрику.

👉 Бот живой, можно потрогать: @futur_e_news_bot

Читать далее

Браузер вместо API: как я объединил DeepSeek, Qwen и ChatGPT в одного локального агента

Level of difficultyMedium
Reading time9 min
Reach and readers11K

Я хотел получить локального AI-агента без отдельного API для каждой модели — и превратил браузерные сессии DeepSeek, Qwen и ChatGPT в единый транспорт. В статье разбираю архитектуру AI Free: WASM proof-of-work, подписанные запросы через авторизованную вкладку, работу через штатный UI, общий оркестратор, память, skills и восстановление после сбоев. А ещё рассказываю, почему первый успешный запрос оказался самой простой частью проекта, который я разрабатываю один.

Читать далее

И снова самый быстрый парсер JSON. Очередной

Level of difficultyMedium
Reading time6 min
Reach and readers15K

За свои 17+ лет в активной разработке я встречал много проблем, но одна преследовала меня постоянно: JSON. Нет, с самим форматом все ок, но вот с его чтением — не все норм.

Когда я только начинал работать с PHP, я списывал это на скриптовость языка. Отчасти из‑за этого я даже поменял стек. Но когда приходили по‑настоящему большие файлы, это всегда было больно. Иногда — очень. Был проект, где мы ждали не обработку информации бизнес‑логикой, а банального парсинга. Файлы доходили до десятков гигабайт и не всегда влезали в оперативку. Тогда я и заработал себе персональный todo — разобраться с этим раз и навсегда.

Сейчас, находясь в поиске новых возможностей, я решил вспомнить эту старую боль. Я уже давно не PHP‑разработчик, но проблема в индустрии всё та же. Объемы данных растут, требования тоже, а воз и ныне там. Нет, есть море крутых решений. Даже тут, на Хабре. Но для меня всё не то.

Мне нужно решение, а не костыль. То есть: никакой кодогенерации и никаких JIT (я не противник JIT, просто не хочу тянуть эту сложность).

Я ступил на тонкий лед: в Go есть классная штука — пакет unsafe. Почему классная? Потому что она позволяет обойти тяжелые ненужные проверки. Плюс побитовые операции для ускорения всего, до чего только смогли дотянуться руки. Пока изучал чужие парсеры, столкнулся с обманом в репозиториях, подкручиванием статистики (куда же без него?) и перекладыванием ответственности (и аллокаций) на сторону разработчиков.

Заглянуть под капот

Выжать больше из локальных LLM. Ollama медленнее llama.cpp в 3 раза. UD_Q4_K_XL лучше чем Q4_K_M, а вес тот же и т.д

Reading time22 min
Reach and readers72K

Самый просто способ запустить локальную LLM - это установить ollama или LM Studio. Это быстро и просто, но вы теряете и в скорости, и в качестве. Почему UD_Q4_K_XL лучше при том же размере, почему квант Q3 может быть медленнее чем Q4. Хорошая ли идея взять REAP для вырезания ненужных экспертов из MoE. Кто быстрее, Linux или Windows. В общем как выжать больше из локальных LLM на домашнем железе.

Читать далее

Sing-Box Launcher: VPN клиент vless + WireGuard: split-tunneling для Windows MacOs

Level of difficultyEasy
Reading time10 min
Reach and readers41K

Многие, наверное, хотели сделать конфигурацию чтобы и рабочие ресурсы через WireGuard, и российские сайты напрямую, и заблокированные — через VLESS, а доступные только из РФ сервисы — через RU-прокси. В статье покажу, как собрать такую схему без единой строчки JSON и почему Sing-Box Launcher постепенно превратился в GUI-оркестратор конфигураций sing-box.

Читать далее

Hybrid RAG knowledge base за 15 минут — почему пришлось собрать свою lite версию RAG и в чем опасность RAG фреймворков

Reading time25 min
Reach and readers12K

Архитектура Hybrid RAG систем заняла нишу корпоративных баз знаний, став стандартом для построения сервисов генерации контента на основе внутренних корпоративных данных. Уже пару лет у этого подхода практически нет альтернатив, когда речь заходит о сочетании возможностей генеративного ИИ с требованиями корпоративной безопасности и доверия к полученным результатам. Ключевое преимущество RAG перед обычным взаимодействием с нейросетями заключается в прозрачности: мы четко видим, на основе каких документов был сформирован ответ, и можем проверить каждый шаг пайплайна

Почти в каждом проекте, которые мне удалось наблюдать, происходило одно и то же - сначала команда стартует с LangChain или LlamaIndex через пару месяцев пайплайн становится неуправляемым, далее половина фреймворка выкидывается и пишется свой костомный retrieval. В итоге архитектура почти всегда выглядит одинаково - Frontend + Python backend + vector search + LLM API

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

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

Основной актив, с которым должны работать такие системы это регламенты, техническая документация, договоры, инструкции и неструктурированные базы знаний. И здесь RAG действительно незаменим. Но существует и обратная сторона медали:

Читать далее

Наконец-то: AmneziaWG в Mikrotik

Level of difficultyMedium
Reading time9 min
Reach and readers143K

TLDR: Создана рабочая легковесная реализация AmneziaWG для Mikrotik для подключения к AmneziaWG серверам.

Оффлайн(!) конфигуратор на основе AWG-конфига, копия gitlab

Исходники в Github (MIT) копия на gitlab (плз форкайте, а то уже разок github снес мой проект)

upd: Добавлена поддержка протокола AmneziaWG v2.

upd2: Переписали на C, летает. Лучшая версия.

Читать далее

Самый простой способ пощупать OpenClaw с помощью VirtualBox и понять, из чего состоит его «душа»

Level of difficultyEasy
Reading time6 min
Reach and readers15K

После бума люди побежали устанавливать OpenClaw на сервер, Mac mini, на всё что угодно.

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

Разберём, какие есть плюсы:

Читать далее

RAG на PHP + Qdrant: быстрый MVP для внутренней базы знаний

Reading time22 min
Reach and readers12K

RAG на PHP - звучит непривычно. Делюсь опытом построения чат-бота для поиска по внутренней базе документов: Symfony, Qdrant с гибридным поиском, YandexGPT для embedding и генерации ответов. Внутри — готовый код, подводные камни чанкинга и советы, которые сэкономят вам время.

Читать далее

AI & RAG. Помощник по техническим вопросам систем управления освещением

Level of difficultyMedium
Reading time11 min
Reach and readers12K

Свою первую программу я написал в 1988 году на калькуляторе МК52. Очень хотелось программировать и даже максимально странный интерфейс не останавливал. Утекло почти 40 лет. Были Атари, Синклеры, 286 IBM, Интернет, смартофоны. Но все эти технологии входили как-то постепенно, приспосабливаясь и без шока.

AI ворвался в жизнь бывалого ИТшника как пыльным мешком по голове. После первого шока, скормленных Дипсику результатов анализов, идей подарков, профессиональная «чуйка» потребовала придумать новой чудо‑технологии боевое применение в том, чем я занимаюсь каждый день на протяжении всей сознательной жизни.

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

Читать далее

Четыре способа получить аудио вк или «это не баг, а фича»

Reading time132 min
Reach and readers81K

Всем привет! Сегодня я расскажу вам о моем опыте с ВК, найденных багах, об отношении к пользователям и, собственно, как получить аудиозаписи вк, пользуясь "не багами а фичами", как меня заверяли сотрудники данной корпорации. Итак, приступим!

Читать далее

Полноценный Kubernetes с нуля на Raspberry Pi

Reading time12 min
Reach and readers35K


Совсем недавно одна известная компания объявила, что переводит линейку своих ноутбуков на ARM-архитектуру. Услышав эту новость, я вспомнил: просматривая в очередной раз цены на EC2 в AWS, обратил внимание на Graviton'ы с очень вкусной ценой. Подвох, конечно же, был в том, что это ARM. Тогда мне и в голову не приходило, что ARM — это довольно серьезно…

Для меня эта архитектура всегда была уделом мобильных и прочих IoT-штучек. «Настоящие» серверы на ARM — как-то необычно, в чем-то даже дико… Однако новая мысль засела в голову, поэтому в один из выходных решил проверить, что вообще можно сегодня запустить на ARM. И для этого решил начать с близкого и родного — кластера Kubernetes. Причем не просто какого-то условного «кластера», а всё «по-взрослому», чтобы он был максимально таким же, каким я привык его видеть в production.

По моей задумке, кластер должен быть доступным из интернета, в нём должно выполняться некоторое веб-приложение и еще должен быть как минимум мониторинг. Для реализации этой идеи понадобится пара (или больше) Raspberry Pi не ниже модели 3B+. Площадкой для экспериментов могла бы стать и AWS, но мне были интересны именно «малины» (которые всё равно стояли без дела). Итак, мы развернём на них кластер Kubernetes с Ingress, Prometheus и Grafana.
Читать дальше →

Релизный цикл для Infrastructure as Code

Reading time13 min
Reach and readers10K

На просторах интернета можно встретить немало статей на тему Infrastructure as Code, утилит SaltStack, Kitchen-CI и так далее, однако, сколько я не встречал различного рода примеров IaC, они зачастую остаются только кодом, как правило, с делением на бранчи в VCS соответствующие наименованию типа среды, например dev/int, возможно даже с тэгами, а говорить о полноценном цикле разработки конфигураций как правило не приходится. Во всяком случае с компаниями, с которыми знаком именно такая ситуация, да и статей не находил.
Может быть оно и понятно — тотальный Agile и "раз-раз и в продакшен".
Попробую исправить ситуацию данной статьей.

Читать дальше →

Как создать Viber-бота с помощью PHP

Reading time4 min
Reach and readers147K

В ноябре 2016 года Viber внедрил публичные аккаунты (Viber public account, или просто PA). С их выходом стало доступно и api, которое позволяет:


  • вести переписку с пользователем
  • проверять статус подписчиков (онлайн, оффлайн)
  • получить информацию о конкретном подписчике
  • вносить записи (посты) на свою страницу

Все это позволяет создать довольно неплохого бота, или же интегрировать бота в уже существующий проект, что вполне может улучшить качество взаимодействие с пользователями. Если вы уже создавали ботов для telegram или slack — то создать бота для Viber не составит большого труда.

Читать дальше →

Снова про WebDAV и Облако Mail.Ru

Reading time2 min
Reach and readers107K
В каждой теме, касающейся Облака Mail.Ru, имеются комментарии — «когда будет WebDAV?» и родственное «Как подключить Облако Mail.ru как сетевой диск?». Судя по тому, что обещают уже несколько лет (хотя в облаке для бизнеса webdav имеется), бесплатные пользователи его не дождутся.

В общем, гора к Магомету не идёт, но и Магомет как-то не торопился, хотя, казалось бы, все для этого есть — и реализации API, и реализации webdav-серверов. Вполне логично было бы взять и то, и другое и объединить.
Читать дальше →

Как я взломал свою ip-камеру и нашел там бекдор

Reading time5 min
Reach and readers150K
Время пришло. Я купил себе второе IoT устройство в виде дешевой ip-камеры. Мои ожидания относящиеся к безопасности этой камеры были не высоки, это была самая дешевая камера из всех. Но она смогла меня удивить.

Читать дальше →

Телевидение через Acestream на Raspberry PI. Теперь в docker контейнерах

Reading time4 min
Reach and readers78K

На хабре уже неоднократно упоминался AceStream: технология, предоставляющая пользователю доступ к видеопотокам по закрытому P2P протоколу AceStream, т.н. torrent телевидение. AceStream предоставляет доступ к распределенной сети доставки контента, т.е. просматривая телеканал пользователь передает данные другим пользователям, что позволяет кардинально снизить стоимость услуг.


А теперь хорошая новость для обладателей медиаплеера на основе raspberry (OSMC, LibreELEC): нашлась сборка acestream под arm, что позволило установить его прямо на raspberry pi. В этой статье предлагается инструкция по установке acestream, и всего необходимого для просмотра ТВ в докер-контейнерах под raspberry. На момент написания статьи, предлагаемое решение позволяет смотреть бесплатно большое количество телеканалов, впрочем без гарантий: acestream в любой момент может перестать быть бесплатным.


kodi live tv channels list screenshot

Читать дальше →

WebRTC: Делаем peer to peer игру на javascript

Reading time13 min
Reach and readers40K
Недавно мне довелось поработать над прототипом видеочата. Это был отличный повод поближе познакомиться с концепциями WebRTC и опробовать их на практике. Как правило, когда говорят про WebRTC, подразумевают организацию аудио- и видеосвязи, но эта технология может применяться и для других интересных вещей. Я решил попробовать сделать peer-to-peer игру и поделиться опытом ее создания. Видео того что получилось и подробности реализации под катом.


Читать дальше →

Узнаем текущую погоду и прогноз простеньким скриптом на Python'е

Reading time4 min
Reach and readers231K
На Хабре есть интересная статья о том, как энтузиасты делают погоду. Энтузиасты делают, а мы воспользуемся плодами их трудов — получим эту самую погоду от OpenWeatherMap.org скриптом на Python'е.

Для получения доступа к сервису погоды придется пройти несложную процедуру регистрации на сайте OpenWeatherMap.org. Сформируем и отправим запрос, разберем ответный пакет в формате JSON, и получим текущую температуру с описанием состояния погоды.


Читать дальше →
1
23 ...

Information

Rating
5,756-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity