Все потоки
Поиск
Написать публикацию
Обновить
365.24

Open source *

Открытое программное обеспечение

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

Проверка документации без боли: наш путь к автоматическому спелл-чеку через CI/CD (обзор и видео доклада)

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров1.8K

В статье рассматривается опыт команды технических писателей Deckhouse по внедрению автоматизированной проверки орфографии в документации. Описываются причины, по которым проверка текста является важной частью работы с документацией, а также анализируются различные подходы к решению этой задачи: от ручной проверки до автоматизации. Подробно разбираются этапы выбора и интеграции инструмента Hunspell в пайплайн CI/CD, особенности работы с различными форматами файлов (Markdown, HTML, YAML), настройка контейнерной среды и создание кастомного словаря терминов. Приводятся практические примеры реализации и результаты автоматической проверки в процессе работы с документацией.

Читать далее

Open Source: Галерея готовых решений + Telegram-бот для брифов

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.6K

В рамках инициативы поддержки и популяризации open-source в России, я выложил в открытый доступ минимально жизнеспособную версию (MVP) своей галереи готовых решений, которая призвана упростить запуск проектов для малого бизнеса, разработчиков и энтузиастов.

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

Первое опубликованное решение — Telegram-бот для автоматического сбора брифов от клиентов.

Читать далее

Удаление брошенных файлов в Greengage DB

Уровень сложностиСредний
Время на прочтение29 мин
Количество просмотров888

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

Читать далее

Наблюдаемость “по-взрослому”: опыт внедрения OpenTelemetry

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров8.9K

Когда микросервисов становится столько, что в них легко запутаться, а Prometheus уже не справляется с единой картиной мира, пора переходить на новый уровень observability.

Расскажу как именно я внедрял OpenTelemetry в своей инфраструктуре, с какими сложностями столкнулся и какие возможности открывает такой подход.

Спойлер: вышло хорошо

Узнать больше

15 минут — и у тебя бесплатная ИИ-модель для генерации кода, текста, чтения иллюстраций

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров77K

Я устал платить за GPT и думать, куда уходят данные. Нашёл Gemma 3 12B от Google и LM Studio — установил всё за 15 минут. В статье — подробная инструкция и советы, как запустить свою Gemma даже без опыта в ML.

Читать далее

Ansible для людей: автоматизировал и выдохнул

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров21K

Одна команда — и сервер настроен. Я больше не лезу вручную и не повторяю одно и то же десятки раз. Внутри рассказано о том, как Ansible помогает автоматизировать задачи, от настроек до деплоя.

Читать далее

Мета-акторы, готовый скелет микросервиса

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.8K

Я ненавижу руками создавать бойлерплейты. Любые. Нет, LLM-ки тут тоже не помогут: им надо писать промпты (а потом ещё проверять, что оно там нагенерировало). Мне всегда хотелось, чтобы остов приложения задавался конфигурацией, а я бы только добавлял бизнес-логику. Буквально, в уже сгенерированные для неё места.

Именно в такой парадигме написана моя библиотека finitomata, в которой конфигурация конечных автоматов задаётся текстовым представлением (PlantUML/Mermaid), а бизнес-логика просто распихивается по колбэкам переходов. Но мне этого оказалось мало, и я решил обернуть в такие же абстракции хранение и подписку на изменения.

Так родилась библиотека (пока не опубликована, доступна только в исходниках) persistomata.

Даже не библиотека, а (простите) фреймворк

Telegram AI Companion: веселый проект на Rust, Telegram и локальном ИИ

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров2.7K

Привет, Хабр! 👋

Недавно я собрал небольшой, но бодрый pet-проект — Telegram AI Companion. Это Telegram-бот, который умеет болтать с вами, используя локальную языковую модель через LocalAI. Без OpenAI, без облаков — всё на своём железе.

Цель проекта — не революция в AI, а именно учебное и увлекательное погружение в Rust, асинхронность, Telegram API и локальные LLM-модели. Такой себе “бот-компаньон”, но больше для разработчика, чем пользователя :)

Если вам интересно:

Читать далее

Мультиконтейнерные поды в Kubernetes: новые возможности и лучшие практики использования сайдкаров

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров4.2K

В Kubernetes 1.28 появилось новое поведение: init-контейнеры теперь могут иметь поле restartPolicy (KEP 753). Это позволяет явно указать kubelet’у, что такой контейнер следует считать сайдкаром, а не классическим init-контейнером. В Kubernetes 1.33 эта долгожданная фича наконец получила стабильный статус. Разбираемся, что такое сайдкар-контейнеры и когда их лучше использовать.

Читать далее

Загадочный параметр $live_site в configuration.php Joomla. Зачем он нужен?

Время на прочтение2 мин
Количество просмотров753

Давным-давно, когда Joomla ещё была маленькой, в неё внедрили параметр $live_site. В ней хранился домен текущего сайта на случай, если Joomla не могла его определить из-за неверной настройки сервера. Нужно это было для разных SEO-компонентов, для использования редиректов и т.д.

Со временем для работы собственно сайта этот параметр перестал быть нужным. Уже в начале 2010-х стали встречаться рекомендации оставлять этот параметр пустым, дабы оный не привёл к лишним проблемам и путанице. Тем более, в web-админке нет места, где его можно указать или посмотреть его значение. Только в configuration.php, а туда смотрят не часто.

Однако, параметр всё же остался в ядре Joomla. Зачем он нужен?

Читать далее

Генератор синтетических документов для обучения моделей ИИ

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров1.4K

Где взять пару миллионов документов с разметкой для обучения модели ИИ? Сгенерировать синтетически! Меня зовут Никита, я работаю в ИСП РАН и веду блог по ИИ. Выложил в открытый доступ проект, который поможет дата-саентистам самостоятельно создавать датасеты сканированных документов с разметкой, используя только CPU. Подойдет для предобучения мультимодальных трансформеров, OCR и проч.

Читать далее

Kubernetes для RISC-V? Оцениваем работу популярных оркестраторов на процессоре с открытой архитектурой

Время на прочтение19 мин
Количество просмотров1.6K

Чем быстрее прогресс RISC-V, тем острее встает вопрос адаптации ПО под эту архитектуру. Например, инструментов для работы с микросервисами, без которых уже сложно представить современную разработку. Есть ли место контейнеризации в открытой архитектуре?

Под катом вас ждет тестирование современных инструментов оркестрации — Kubernetes, K3s и Docker Swarm. Мы — команда совместной лаборатории «Технологии программирования» Санкт-Петербургского политехнического университета Петра Великого и YADRO — попробовали запустить их на микрокомпьютере Lichee Pi 4A и оценили их производительность.

Читать далее

Как я решил проблему бардака в инфраструктуре в рабочих и личных проектах

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров14K

Это история о том, как я устал держать в голове инфраструктуру по всем своим проектам.

Прод падает — а ты тратишь время на то чтобы вспомнить где лежит Grafana, где настраивается DNS, чей Docker Registry мы используем, есть ли у нас CDN и какой.

В итоге я запилил легковесное решение чтобы разобраться с вопросом системно, а не просто наклепать закладок в браузере.

Читать далее

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

Веб-камера — глаза робота. Пишу веб-приложение на FastApi для управления DIY-проектом. Часть 2

Уровень сложностиСредний
Время на прочтение17 мин
Количество просмотров2.7K

В предыдущей статье я начал разработку open-source веб-приложения для стриминга видео с веб-камеры и управления роботом. Написал фронтенд, который принимает видеопоток от mjpg_streamer, а также отправляет команды через WebSocket на бэкенд, написанный на FastAPI.

Во второй части я расскажу, как отправлять команды роботу с WebSocket-бэкенда. Мой робот работает на плате Orange Pi Zero, передавая и принимая информацию через Wi-Fi. Я покажу, как настроить сервер Nginx на роботе в качестве обратного прокси, а также напишу Python-код для приёма команд с веб-приложения.

Статья будет полезна любителям робототехники и веб-программистам, интересующимся фреймворком FastAPI. Я продемонстрирую работу с несколькими WebSocket-соединениями в одном веб-приложении, а также покажу настройку Orange Pi Zero для работы.

Читать далее

Flutter + Jules (настройка контейнера для background AI Agent)

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.5K

На этом Google IO google показал новый инструмент разработки - https://jules.google.com

В чем плюсы: пока бесплатный, работает на gemini, и это AI Agent.

Что это значит (пример):
Часто бывает проблема, что кол-во модулей в проекте или библиотек которые хотелось бы сделать, превышает кол-во которое можно поддерживать. Особенно если ведешь open source библиотеку.

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

Чтобы начать, обычно можно использовать небольшой промпт чтобы предсоздать план по которому Jules будет частично следовать (на самом деле она пересоздаст план, но имея рефренсы ей будет проще):

Читать далее

Cozypkg: как мы упростили локальную разработку с Helm + Flux

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров2.3K

Привет! Я Андрей Квапил (или kvaps) и в этой статье я опишу наш путь организации доставки приложений в Kubernetes, объясню недостатки классического GitOps в локальной разработке и покажу, как новая утилита cozypkg решает эти проблемы. Материал рассчитан на разработчиков, знакомых с Helm и Flux.

У нас есть общий репозиторий — в нем мы описываем общую конфигурацию всех компонентов, а также темплейты для их деплоя. Для того чтобы максимально упростить процесс поддержки каждого из компонентов, мы следуем определенному процессу.В основе этого процесса лежит идея о том, что каждый компонент — это Helm-чарт.

Читать далее

Как привинтить Python к Go

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров4.7K

Здравствуйте,

Меня зовут Александр Певзнер, и я программирую на Си и Go. Go обычно ассоциируется с бакендом, микросервисами и вот этим вот всем. Но я использую его необычным образом: я пишу на нём системное ПО.

Почему я это делаю именно на Go? Этот язык привлекает меня своей простотой, лаконичностью, ясной семантикой, прекрасной документацией и великолепной стандартной библиотекой.

Одна из моих программ, ipp-usb, написанная на Go, входит во все дистрибутивы Linux и *BSD и делает возможным использование принтеров и сканеров, которые подключаются к USB и поддерживают IPP over USB протокол - т.е., примерно всех современных.

А еще я член OpenPrinting - небольшой, но очень плодотворной группы людей, которая ответственна за печать и, отчасти, сканирование на всех UNIX-like OS и за формирование индустриальных стандартов в этой области.

Это всё начиналось для меня, как хобби, но сейчас это - часть моей оплачиваемой работы.

В силу особенностей моей работы меня не очень интересуют такие вещи, как поддержка миллиона запросов в секунду и прочий high load (это не значит, что мои программы тормозные. Но никто не дёргает системный принтер миллион раз в секунду). Но зато приходится разбираться с некоторыми другими непростыми штуками.

Об одной из таких штук и пойдёт речь в этой статье.

Понадобился мне для одного проекта на Go встроенный скриптинг. Ну т.е., чтобы программа могла всосать в себя скрипт, который определяет некоторые аспекты её поведения.

Размышляя о том, на каком языке программа должна скриптоваться, в выбирал между JS, Lua и Python.

Однако, JS и Lua - слишком нишевые языки. JS ассоциируется у всех с вебом а Lua - с разработкой игр. Таким образом, выбор естественным образом пал на Python. Этот язык знают все, а я испытываю некоторую надежду, что скрипты для моей программы буду писать не только я. Хотя сам я, должен признаться, Python не знаю и не люблю :)

Таким образом, осталось только придумать, как встроить интерпретатор Python-а в программу на Go.

Об этом и пойдёт речь в этой публикации

Как я хотел сделать говорящую банку, а получилось нечто гораздо большее: история RuFA Hub

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров2.8K

В декабре 2024 года я сел за написание дипломного проекта. Хотелось сделать не просто формальность для зачёта, а что-то реально рабочее, полезное и интересное. Так родилась идея RuFA Станции — по сути, «говорящей банки» с пинами, через которую можно было управлять внешними устройствами. Представьте себе что-то вроде умной колонки, которой можно сказать: «RuFA, подай 5V на пин 13», — и она выполнит.

Я поделился этой задумкой с одним знакомым, хорошо разбирающимся в схемотехнике. Мы встретились в кофейне, я начал описывать идею, а он выдал фразу, которая определила дальнейший путь:

«Слушай, ну это... идея так себе. Ты можешь лучше».

Читать далее

Что будет, если пригласить на свидание OCR и GPT?

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров1.9K

Привет, Хабр! Снова на связи Кирилл Пронин, разработчик PIX RPA из PIX Robotics, со мной Александр Сулейкин, Founder DUC Technologies и сегодня мы с вами затронем тему «Что будет, если объединить OCR и GPT?».
Признайтесь честно, видели какие ужасные результаты распознавания выдают современные open source решения для кириллицы? Вряд ли из коробки, можно что-то использовать сразу в своих решениях роботизации и автоматизации. Но что же будет, если мы обучим модель не через стандартные методы машинного обучения, а через GPT? Каков будет результат? Стоит ли это исследовать и браться за реализацию? Обо всем подробно в этой статье.

Читать далее

Почему Rust так мало волнует производительность компилятора

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров8.2K

Наверно, чаще всего на Rust жалуются из-за его медленного цикла обратной связи и долгого времени компиляции. Я слышу и читаю об этом постоянно; в подкастах по Rust, в постах блоговопросах, докладах с конференций и офлайн-обсуждениях. Я и сам, как пользователь Rust, регулярно жалуюсь на это!

Кроме того, наряду с обычными жалобами на время компиляции, я начал замечать от раздражённых разработчиков на Rust и подобные заявления: «Почему Rust Project не занимается активнее этой важной и очевидной проблемой? Почему с этим что-нибудь не сделают?». Я участник рабочей группы по производительности компилятора Rust, поэтому воспринимаю такие вопросы очень серьёзно. И, разумеется, у меня есть мнение по этому поводу. В этом посте я приведу свои размышления, способные служить ответами на эти (и похожие) вопросы.

Предупреждение: все выраженные в этом посте мнения исключительно мои и необязательно отражают точку зрения Rust Project (группы контрибьюторов и мейнтейнеров тулчейна Rust).

Читать далее

Вклад авторов