Обновить
256K+

Linux *

Пишем под *nix

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

Биткорд мессенджер: как запустить собственный музыкальный HLS — сервис?

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

В этой статье речь пойдёт о том, как разработать и запустить собственный аудиосервис на площадке Bitcord Open Network. Напомню, что Bitcord по сути, это небольшая открытая социальная платформа, выполненная в виде приложения для смартфонов и работающая на базе клиент-серверной архитектуры. Здесь можно общаться с друзьями и коллегами, создавать публичные и частные каналы и даже запускать сторонние сервисы.

Приложение Bitcord занимает очень мало места. Размер его установочного пакета составляет чуть более 3 мегабайт (3.2 Мб. актуальный релиз). Оно не перегружено сложной графикой и не использует тяжёлые библиотеки или SDK. К примеру, реализованная в мессенджере видеосвязь, построенная по технологии WebRTC (P2P), задействует встроенные компоненты самой операционной системы, что позволяет сократить размер приложения на десятки мегабайт.

Читать далее

Новости

Cilium в качестве Load Balancer для локального Kind-кластера через Gateway API

Время на прочтение26 мин
Охват и читатели5.1K

Kind + Gateway API + Cilium в качестве Load Balancer

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

Читать далее

Русский язык в программировании. РУСИ++

Уровень сложностиСложный
Время на прочтение53 мин
Охват и читатели16K

Статья посвящена системному программированию на русском языке с C-подобным синтаксисом. Компилятор для языков программирования РУСИ, РУСИ++ и объектный-РУСИ создан путём модификации и пересборки компилятора GCC 14й версии с превращением его в полноценный русско-английский билингвальный компилятор. Отдельно дана инструкция модификации русской раскладки клавиатуры для добавления в неё фигурных, угловых и квадратных скобок - дабы не переключаться и не терять поток.

Читать::Далее();

Kubernetes без Kubernetes: запускаем Pod с помощью Podman

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

Можно ли запустить Kubernetes Pod без самого Kubernetes?

Познакомимся с Podman и попробуем на практике:

Запустить два контейнера из обычного Kubernetes YAML.

Проверить общий localhost и volumes.

Разобраться, где заканчиваются возможности Podman и начинается полноценная оркестрация.

Читать далее

Shared memory в ROS 2 Humble: CycloneDDS + iceoryx на практике

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели7.6K

Shared memory в ROS 2 это буквально чит-код на бесплатное ускорение? Одна строка в конфиге, и мегабайтные сообщения летят через общую память, а не через сеть, но ros2 node list показывает пустой список, хотя всё работает. Разбираемся в нюансах и фичах механизмов shm и zero-copy на примере ROS2 Humble + CycloneDDS.

Читать далее

Vite, OOM и сервер на 4 ГБ: как мы снизили память сборки на 52%

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели7.3K

Сборка нового Vue-приложения проходила локально, а на сервере с 4 ГБ RAM заканчивалась убийством Node по OOM. Мы ограничивали heap, меняли импорты, отключали минификацию и проверяли другие сборщики.

Рассказываю, что помогло, какие оптимизации почти ничего не дали и почему добавили Rsbuild. В наших серверных замерах пиковый RSS снизился с 1681 до 802 MiB, а время сборки — с 41 до 11,7 секунды. В статье — условия сравнения, таблицы и ограничения этих результатов.

Читать далее

Разворачиваем порты VPS'а: маленькая шалость программиста

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели10K

Подключаемся к разным сервисам на своём VPS через единственный открытый SSH-порт: пишем небольшую программку-роутер соединений на Go

Читать далее

Как добавить модели Anthropic в OpenCode через BotHub: два способа без лишней возни

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели7.4K

Бывает, открываешь OpenCode, идёшь в менеджер моделей, а нужной Claude там нет. Хотя через BotHub она доступна, API-ключ есть, деньги на балансе тоже. Казалось бы, что может пойти не так?

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

Я покажу два способа, как добавить нужную модель Anthropic через BotHub: попросить OpenCode сделать всё самому или пойти путём настоящего технаря и покопаться в конфиге ручками. Также разберемся как установить OpenCode на удалённый сервер и подключить Claude через BotHub.

Читать далее

Свой AI-агент с блекджеком: собираем из того, что есть

Время на прочтение8 мин
Охват и читатели5.7K

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

Читать далее

Make Perl Great Again. Часть 1: Hello World

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели9.4K

Все знают, что любая книга по программированию начинается с приведения примера программы hello world. Я тоже не буду оригинальничать и покажу, как надо писать hello world. Но в отличие от других авторов, которые очень быстро переходят от этой программы к каким-то очень высоким материям, философским обоснованиям, паттернам программирования и шаблонам проектирования (чтобы это всё ни значило), я ограничусь только hello world. Кто-то же должен заполнить пробел между hello world и… веб-сервером :-).

Читать далее

Как собрать Linux‑контейнер с нуля без Docker: unshare, pivot_root и rootfs

Уровень сложностиСредний
Время на прочтение27 мин
Охват и читатели9.1K

За одной командой docker run скрывается целая последовательность операций с файловой системой Linux. Но что потребуется, чтобы воспроизвести их вручную? Пройдём путь от создания пространств имён и настройки rootfs до запуска приложения в собственном контейнере, используя стандартные инструменты Linux.

Разобраться в изоляции

Сломанный Ctrl+C — сначала гасла VM, а потом не прерывался sleep: Java, KVM и Linux

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели9.1K

Обычный Ctrl+C оказался для моей Java VM неожиданной проблемой: сначала он завершал саму виртуальную машину, а после исправления перестал останавливать команды внутри Linux. Чтобы разобраться, пришлось пройти весь путь от host terminal через UART и KVM до гостевого TTY и Unix-сигналов. В статье разберём не только причину, но и метод диагностики, который пригодится далеко за пределами виртуализации.

Разбираемся, куда пропал Ctrl+C

ThinkPad X230i спустя 14 лет. Есть ли жизнь на Sandy Bridge?

Время на прочтение3 мин
Охват и читатели11K

Приветствую всех читателей Хабра. В этой статье я хочу поделиться своим опытом использования Lenovo ThinkPad X230i. Приписка "i" в данном случае означает урезанную по производительности версию, в ноутбуке установлен Intel Core i3 2370M вместо более мощного Core i5 следующего поколения.

Читать далее

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

Vodka, или почему nginx.exe у нас в шесть раз быстрее, чем под Wine

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

Всем привет!

Вторая статья про революционный проект Vodka, где будут реальные замеры производительности nginx.exe. А ещё на этот раз я более подробно расскажу про архитектуру проекта. И даже покажу, как это, установить Windows на Linux!

Читать далее

Библиотека EMX Controls для Avalonia UI — Обновление 1.5 — Октябрь 2026

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели7.7K

Друзья, мы готовимся к очередному релизу библиотеки контролов EMX Controls для Avalonia UI. В этом обновлении мы добавили одну из самых полезных функций в контролах Data Grid и Tree List, расширили визуальные темы, включили сервисы для работы с окнами и диалогами и многое другое.

Читать далее

SSD как кэш, HDD как постоянное хранилище: экспериментируем с кэшированием в bcachefs

Уровень сложностиПростой
Время на прочтение18 мин
Охват и читатели66K

Вы когда-нибудь задумывались над смыслом названия этой файловой системы? А между тем ключевая фича, с которой все начиналось, — это как раз кэширование.

Читать далее

Мониторинг SSL: как не пропустить истекающий сертификат

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели16K

Максимальный срок публичных сертификатов с марта этого года сократился с 398 до 200 дней. С 2029 года они будут действительны всего 47 дней, а забыть о продлении проще простого, ведь есть и более важные дела. Под катом собрал семь способов удобно следить за сроками SSL.

Читать

Чем различаются способы установки приложений на сервер

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели9K

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

Читать далее

Linux из Java без JNI: от FFM и /dev/kvm до интерактивной консоли

Уровень сложностиСложный
Время на прочтение9 мин
Охват и читатели8.8K

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

Обычно Java и KVM находятся довольно далеко друг от друга: с одной стороны JVM и управляемая память, с другой /dev/kvm, ioctl, регистры vCPU и физическая память guest ОС. В этой статье разберём, как связать эти два мира через Foreign Function & Memory API без JNI. На примере panama-kvm пройдём путь от первого вызова KVM API до загрузки Linux, настройки памяти, обработки VM exits и интерактивной консоли внутри гостевой системы.

Запустить VM из Java

Чёрная магия C++: Быстрый кольцевой буфер

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели16K

Однажды у меня возникла потребность в кольцевом буфере на C++ для хранения довольно объёмных потоковых данных. Проблема заключалась в том, что мне было необходимо поддерживать непрерывность и упорядоченность данных в памяти, чтобы в любой момент времени я мог считать все элементы буфера одним бесшовным куском в порядке поступления элементов.

Как правило, кольцевой буфер реализуется через списки, вроде std::list или std::deque, либо через плоские массивы, вроде std::vector или boost::circular_buffer. Но ни одна реализация не гарантирует непрерывность и упорядоченность одновременно. В данной статье я расскажу про реализацию буфера через трюк с виртуальной памятью, сохраняющую упорядоченность элементов в непрерывной ограниченной области памяти.

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