Pull to refresh
0
Alexzander thunder Shevchenko@thunderspb

DevOps

2
Subscribers
Send message

Sing-Box Launcher: как собрать VPN + WireGuard + split-tunneling без JSON-конфигов

Level of difficultyEasy
Reading time10 min
Reach and readers27K

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

Читать далее

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

Reading time25 min
Reach and readers11K

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

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

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

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

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

Читать далее

Что такое Skills и как их использовать? (Cursor, Claude Code)

Level of difficultyEasy
Reading time6 min
Reach and readers17K

Вы наверняка ловили себя на том, что раз за разом копипастите в чат с ИИ одни и те же инструкции: «Пиши на TypeScript», «Не используй сторонние библиотеки», «Добавляй тесты». В программировании мы по сути называем это нарушением принципа DRY (Don't Repeat Yourself). Но почему мы продолжаем это делать при общении с нейросетями?

В этой статье мы разберем концепцию Skills (Скиллов) - переиспользуемых «навыков» для ИИ-ассистентов, которые живут прямо в вашем репозитории и делают работу агентов предсказуемой, чистой и профессиональной.

Читать далее

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

Level of difficultyMedium
Reading time9 min
Reach and readers98K

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 readers11K

После бума люди побежали устанавливать 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 time127 min
Reach and readers80K

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

Читать далее

Полноценный 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 readers106K
В каждой теме, касающейся Облака Mail.Ru, имеются комментарии — «когда будет WebDAV?» и родственное «Как подключить Облако Mail.ru как сетевой диск?». Судя по тому, что обещают уже несколько лет (хотя в облаке для бизнеса webdav имеется), бесплатные пользователи его не дождутся.

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

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

Reading time5 min
Reach and readers149K
Время пришло. Я купил себе второе 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 readers230K
На Хабре есть интересная статья о том, как энтузиасты делают погоду. Энтузиасты делают, а мы воспользуемся плодами их трудов — получим эту самую погоду от OpenWeatherMap.org скриптом на Python'е.

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


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

Squid с фильтрацией HTTPS без подмены сертификата, интеграция с Active Directory 2012R2 + WPAD

Reading time13 min
Reach and readers52K
Этот мануал был написан в связи производственной необходимостью мониторить трафик (http и https) пользователей, а также распределения доступа по белым и черным спискам. За основу были взяты статьи: эта и вот эта , в которых использовалась технология peek-n-splice. В данных статьях конфигурация предполагает использование хоста со squid как шлюз, после доработки конфига, получился полноценный прокси-сервер с возможностью распределения прав доступа по группам из Active Directory. По завершению конфигурирования встал вопрос передачи настроек прокси-сервера для пользователей. В виду того, что в офисе часто ноутбуки берут домой — вся затея зашла в тупик. Изначально рассматривался вариант выдачи настроек прокси-сервера через DHCP, но он не самый лучший, т. к. офисы в разных подсетях, и разное оборудование, выходом из данной ситуации стал WPAD. Вкратце о данной технологии можно сказать так, клиентские машины на OS Windows ищут хост с именем wpad.example.ru (вплоть до доменов третьего уровня), чтобы запросить файл настроек для работы в сети. Исходя из такого принципа, нужно поднять веб-сервер, который просто бы отдавал файл wpad.dat Можно на самом хосте с прокси-сервером поднять веб-сервер (что и было сделано), а в DNS-сервере создать cname wpad на прокси-сервер. Прокси-сервер лучше использовать с возможностью сбора и просмотра статистики, благо выбор предостаточный. В виду некоторых консервативных соображений, было решено выбрать SARG. Он легкий в настройке, достаточно приемлемая статистика для офиса со штатом до 100 сотрудников.
Читать дальше →

Блокировщик рекламы для дома на коленке

Reading time3 min
Reach and readers30K

Предыстория


Прожорливый Bind9


Пришлось мне пару лет назад покинуть свой родной дом и переехать в другой город. В результате свой самосборный медиа-центр пришлось оставить, а на новом месте купить телеприставку AuraHD Plus. Весьма не плохой девайс за свои деньги, особенно если учесть, что в нем встроены приложения для доступа к сервисам с фильмами и т.п.


Все бы ничего, но реклама там крутится на каждый чих. Пришлось изобретать, как же ее "порезать". Первая мысль была — поднять свой DNS сервер и отправлять все неугодные домены в /dev/null на 127.0.0.1. К этому моменту мой домашний серверок вернулся ко мне и занял свое почетное место на шкафу в качестве NAS сервера.


Сказано — сделано. Поднят Bind9, прописаны конфиги для нескольких доменов, все отлично. Летим.

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

Кластер высокой доступности на postgresql 9.6 + repmgr + pgbouncer + haproxy + keepalived + контроль через telegram

Reading time32 min
Reach and readers63K
image

На сегодняшний день процедура реализации «failover» в Postgresql является одной из самых простых и интуитивно понятных. Для ее реализации необходимо определиться со сценариями файловера — это залог успешной работы кластера, протестировать его работу. В двух словах — настраивается репликация, чаще всего асинхронная, и в случае отказа текущего мастера, другая нода(standby) становится текущем «мастером», другие ноды standby начинают следовать за новым мастером.

На сегодняшний день repmgr поддерживает сценарий автоматического Failover — autofailover, что позволяет поддерживать кластер в рабочем состоянии после выхода из строя ноды-мастера без мгновенного вмешательства сотрудника, что немаловажно, так как не происходит большого падения UPTIME. Для уведомлений используем telegram.

Появилась необходимость в связи с развитием внутренних сервисов реализовать систему хранения БД на Postgresql + репликация + балансировка + failover(отказоустойчивость). Как всегда в интернете вроде бы что то и есть, но всё оно устаревшее или на практике не реализуемое в том виде, в котором оно представлено. Было решено представить данное решение, чтобы в будущем у специалистов, решивших реализовать подобную схему было представление как это делается, и чтобы новичкам было легко это реализовать следуя данной инструкции. Постарались описать все как можно подробней, вникнуть во все нюансы и особенности.
Читать дальше →
1
23 ...

Information

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