Как стать автором
Поиск
Написать публикацию
Обновить
387.64

Open source *

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

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

/GNUser/Degoogle

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

На днях вдохновился видосом некоего шведского блогера, популярного в широких кругах, который решил, что слишком сильно зависит от жадных ублюдков капиталистов, засевших в последнее время в Google. Конечно, идея отказаться от всей проприетарщины в пользу опенсорса беспокоила меня и без шведского чувака, но подумалось, раз уж и этот парень это понял, то я уже слишком долго сомневаюсь. Дело в том, что чел в не айтишник в узком смысле. Да, геймер, да в технике, наверное, разбирается. Но что бы вот так?

Читать далее

Новости

Как собрать npm-пакет в 2025 и не облажаться

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

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

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

Минификация: помогает или мешает?

Транспиляция: как не перестараться?

Полифиллы: да, но нет.

Сорсмапы: кому они вообще нужны?

Бандлить или не бандлить?

Читать далее

Joomla-дайджест. 2-й квартал 2025 года

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

С небольшим запозданием, но всё же читайте все главные новости из мира Joomla с апреля по июнь 2025 года в одной статье. Традиционно наш дайджест обозревает новости, расширения, шаблоны и статьи из мира Joomla. Прошлый выпуск вы можете прочитать здесь.

Читать далее

Сравнение двух Excel онлайн в оперативной памяти. Добавлен Экспорт

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

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

Начну с небольшого вступления, почему я начал делать данный инструмент. Я работаю инженером данных и довольно многое автоматизировал в своей работе. В последнее время я занимаюсь миграцией различных скриптов из SAS в Databricks. Для сравнения таблиц есть несколько готовых инструментов типа datacompy, а также свои наработки. Там всё просто, можно преобразовать любые форматы и сравнить. Но вот появилась необходимость сравнить Excel, как результат работы скрипта и CSV выгруженный из Databricks. Есть несколько способов сделать это:

Читать далее

Проектирование и кодогенерация DDD-моделей на Kotlin

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

В статье рассматривается разработка доменных моделей в соответствии с тактическими паттернами DDD — Value Object и Entity, с целью создания собственной строгой иерархии функциональной системы типов (ФСТ). Предложен фреймворк, включающий методологию проектирования и кодогенерации доменных моделей на языке Котлин. Рассматриваются вопросы и ставятся задачи …​ организации, планирования, документирования, моделирования, регулирования, управления, оценка результата [Д] как код (DSL). Разработка фреймворка ведется в значительной части на основе научных работ Д.А. Новикова по организации, управлению и методологии деятельности, приведенных в конце статьи. Используемые понятия, термины и определения основаны на [5] и выделяются полужирным шрифтом. Общие термины и понятия, которые легко ищутся в поисковых системах, выделяются курсивом. Слова, относящиеся к кодовой базе, выделяются обратными кавычками.

Читать далее

Что за зверь такой — Pinokio? Досконально разбираем его подкапотную

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

Что же такое — Pinokio? Почему о его исходном коде известно так мало, что стоит за непонятным кодом на github, и правда ли, что автор что‑то скрывает?

Читать далее

Rust 1.89.0: явный вывод аргументов для константных обобщений, проверка синтаксиса времён жизни, i128 и u128 в extern C

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

Команда Rust рада сообщить о новой версии языка — 1.89.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.

Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.89.0 вам достаточно выполнить команду:

$ rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.

Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.

Что стабилизировано в 1.89.0

Создаем свой пакет на PHP

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

Хочу поделиться с вами своим опытом, с которым столкнулся, и предоставить шаблон, который написал для пакетов/проектов:
https://github.com/deniskorbakov/skeleton-php-docker

Буду очень рад звёздочке на GitHub и обратной связи после прочтения статьи!

Читать далее

Личное облако Sandstorm. Платформа для опенсорсных веб-приложений

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

Раньше облачные сервисы воспринимались как удобный и безопасный способ хранения данных и работы с веб-приложениями. Сегодня к ним относятся более осознанно: всё чаще звучит мысль, что облако — это просто чей-то чужой компьютер под управлением посторонних людей. Это не всегда удобно. Доступ к сервису может быть ограничен по разным причинам, а данные — недоступны в критический момент.

Чтобы избежать рисков, лучше самостоятельно контролировать свою компьютерную инфраструктуру. Вот почему сейчас особенно актуален софт для «личного облака»: серверы веб-приложений на своём хостинге, полностью под контролем владельца. Одно из самых известных решений такого рода — Sandstorm, в каком-то роде аналог Google Apps, но на своём сервере.

Читать далее

Как я устал вручную писать сервис-воркеры и сделал next-pwa-pack, чтобы больше не страдать

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

Сколько лет уже кто-то говорит: «А можно, чтобы оно работало без интернета и ставилось на домашний экран?» И каждый раз после этой фразы начинается медленный спуск в персональный ад — ты лезешь в документацию по PWA, где всё разваливается на ровном месте, service worker живёт своей жизнью, кеш то работает, то ломается, App Router рушит весь твой кастомный пайплайн, а пользователи сидят на старых версиях, потому что вручную обновлять им, конечно, влом.

Словом, если ты когда-то пробовал прикрутить оффлайн-режим к Next.js-проекту, ты наверняка вспоминал всех, кто придумал этот стек. Я — точно. Поэтому, как человек, у которого было слишком много кофе и слишком мало терпения, я сделал единственное разумное: написал свою обёртку.

Так и появился next-pwa-pack — дроп-ин пакет, который превращает любой Next.js-проект в полноценное PWA, буквально одной строкой. Да, даже с App Router. Просто заворачиваешь свой layout в PWAProvider, и всё: приложение можно установить, оно кэширует страницы, работает оффлайн, синхронизирует вкладки и даже показывает отладочную панель, чтобы не гадать, сработало ли что-нибудь. Воткнул — и живи дальше.

А то:

Сервис-воркер? Напиши вручную.
Кешировать HTML? Сам придумай как.
Синхронизация вкладок? Ну это уже магия, удачи.
Обновление кеша после деплоя? Ну ты ж senior, сам справишься. 🤡

И ты сидишь, как идиот, с 300 вкладками про Workbox, cache-first, network-only, костылями из Stack Overflow 2019 года, и потеешь.

Если раньше каждый запрос «сделай оффлайн» вызывал у меня флэшбэк на тему next-pwa, неподдерживаемых версий, кривого кеша и плясок с бубном вокруг обновлений — теперь всё это ушло. Я хотел простой setup, который просто работает: предзагрузка, нормальные TTL, понятное обновление и синхронизация. Без фокусов, без багов, без “подожди, сейчас DevTools открою”.

Погнали дальше!

Библиотека визуализации графов: как мы решили дилемму Canvas vs HTML в Gravity UI

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

Меня зовут Андрей, я разработчик интерфейсов в команде User Experience инфраструктурных сервисов Яндекса. Мы развиваем Gravity UI — опенсорсную дизайн‑систему и библиотеку React‑компонентов, которую используют десятки продуктов внутри компании и за её пределами. Сегодня расскажу, как мы столкнулись с задачей визуализации сложных графов, почему существующие решения нас не устроили, и как в итоге появилась @gravity‑ui/graph — библиотека, которую мы решили сделать открытой для сообщества.

Эта история началась с практической проблемы: нам нужно было рендерить графы на 10 000+ элементов с интерактивными компонентами. В Яндексе много проектов, где пользователи создают сложные пайплайны обработки данных — от простых ETL‑процессов до машинного обучения. Когда такие пайплайны создаются программно, количество блоков может достигать десятков тысяч.

Существующие решения нас не устраивали:

— HTML/SVG‑библиотеки красиво выглядят и удобны в разработке, но начинают тормозить уже на сотнях элементов.

— Canvas‑решения справляются с производительностью, но требуют огромного количества кода для создания сложных UI‑элементов.

Мы решили не выбирать между Canvas и HTML, а использовать всё лучшее из обеих технологий. Идея была проста: автоматически переключаться между режимами в зависимости от того, насколько близко пользователь смотрит на граф.

Читать далее

Лучшие статьи Хабра в июле 2025 года

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

С возвращением в ежемесячный дайджест Хабра! Прошло несколько месяцев с последнего выпуска, и я захотел узнать изменилось ли что-нибудь за это время на платформе?

Посмотрим, какие темы стали трендовыми в июле 2025, как поменялись интересы аудитории и кто из авторов оказался в центре внимания.

Этот выпуск особенный: с марта прошло четыре месяца, и важно понять - стал ли Хабр более техническим, более «историко-социальным» или окончательно ушёл в сторону лайфстайл-контента?

Внутри:

✅ Методология и критерии
✅ Топ по просмотрам, комментариям, закладкам и рейтингу
✅ Скрытые жемчужины
✅ Лучшие авторы месяца
✅ И аналитика главных трендов месяца.

Инфоцыгане тут?

Континентальный код: практические подходы и подводные камни управления мультикультурными open-source командами

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

В этой статье разбираются реальные кейсы и технические приёмы для эффективного управления распределёнными open-source командами, объединяющими разработчиков из разных культурных и временных зон. Поделюсь личным опытом, покажу примеры кода для синхронизации процессов и расскажу о неожиданных «подводных камнях», с которыми сталкивался сам.

Когда над проектом работают люди из Берлина, Сан-Франциско, Шанхая и Москвы, возникает масса вопросов: как согласовать митинг, чтобы никто не проснулся в три ночи? Как выстроить код-ревью, чтобы тон шутки не стал причиной конфликта? В своём первом крупном OSS-проекте я чуть не вылетел из роли мейнтейнера из-за одного некорректного эмодзи в комментарии. С тех пор я выработал несколько практических приёмов, которыми и делюсь ниже.

Читать далее

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

Explyt Spring Debugger

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

Всем привет! На связи команда Explyt Spring. Недавно была статья от JetBrains, а также ее перевод на Habr, где они рассказывали о новом плагине Spring Debugger и о том как используют нативный код Spring для лучшего понимания контекста приложения. С помощью non‑suspending breakpoints JetBrains «вклиниваются» в жизненный цикл Spring и собирают все необходимые для плагина данные. Но ведь это почти тоже что и мы пытались делать в нашем плагине с помощью javaagent, о котором писали статьи. И нам даже показалось, что они вдохновлялись нашими статьями, первая из которых увидела свет в октябре 2024 года (возможно только показалось).

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

Нам эта идея понравилась, к тому же у нас почти все готово — есть javaagent с помощью которого мы патчим байт код Spring и получаем его контекст, поэтому возьмем текущий наш механизм и просто улучшим UX и посмотрим что из этого получилось.

Читать далее

Как разработать CSI-драйвер с поддержкой Swordfish API и запустить его без железа

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

Контейнерные приложения все чаще требуют постоянного хранилища, будь то базы данных, кэш или файловые серверы. Но Kubernetes по умолчанию не «умеет» работать напрямую с системами хранения данных, в этом ему помогает CSI (Container Storage Interface). А если хочется управлять хранилищем через единый стандарт и без привязки к конкретному вендору, на помощь приходит спецификация Swordfish.

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

Читать далее

Вышел релиз GitLab 18.2 с Duo Agent Platform в IDE (бета-версия) и настраиваемыми статусами рабочего процесса

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

Вышел релиз GitLab 18.2 с Duo Agent Platform в IDE (бета-версия) и настраиваемыми статусами рабочего процесса для тикетов и заданий

Читать далее

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

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

В предыдущей статье я показал, как настроить одноплатный компьютер Orange Pi Zero для работы. Написал обратный прокси на Nginx, который перенаправляет видеострим. Также реализовал сервис robot_pi_service для приёма команд от веб-приложения и отправки ответов. В веб-приложение добавил код для отправки команд роботу и получения ответов.

В третьей части статьи я расскажу, как управлять GPIO-пинами одноплатника на примере Orange Pi Zero с помощью Python. Я покажу, как подключить светодиод (LED) и управлять им через веб-приложение. Также проведу отладку задержек.

Статья будет полезна любителям DIY-проектов и веб-разработчикам, интересующимся фреймворком FastAPI.

Читать далее

Data Internals X 2025: взгляд изнутри на настоящее и будущее data-инженерии

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

Data Internals X 2025 уже совсем скоро! 23 сентября начнётся профессиональное погружение в инженерию данных, системы хранения и обработки данных. Поэтому мы поговорили с членом программного комитета конференции Алексеем Жиряковым, чтобы узнать, что нас ждёт в этом году. Ведь лучший взгляд — это взгляд изнутри. Так лучше раскрывается опыт создания data-инфраструктуры и многочисленные вызовы одной из самых быстроразвивающихся отраслей IT.

Читать далее

Удаляем незваных подписчиков из своего телеграм канала

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

Казалось бы - все бьются над увеличением количества подписчиков в своих Telegram-каналах - зачем уменьшать их число?

Я сам заинтересовался этой темой после странного всплеска трафика. Опубликовал статью про голосовых ассистентов - и из-за неудачного заголовка она внезапно стала вирусной. Обычно мои тексты собирают около 7 тысяч просмотров (медиана), но в этот раз счётчик вырос до 140 тысяч. А до этого я уже слышал истории, как на каналы без рекламы и инфоповодов «наливаются» сотни или тысячи подписчиков. Звучит как подарок судьбы, но на практике это тревожный сигнал: чаще всего - это фейковые аккаунты.

Мёртвая аудитория - это падение вовлеченности (ER - уровень вовлеченности, ERR - вовлеченность на охват), потеря интереса со стороны рекламодателей и снижение позиций канала в поиске Telegram. Особенно сейчас, когда алгоритмы всё больше ориентируются на наличие Premium-подписчиков.

В этой статье покажу, как выявить и удалить нежелательных подписчиков с помощью open-source скрипта на Python - который работает даже несмотря на ограничения Telegram API, позволяющий получить лишь последние 200 участников.

Боты, уходите!

Scribe: Управляем ПК голосом. Бесплатно, оффлайн и с открытым кодом

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

Всем привет!

Многие знают, что в Windows есть встроенная функция «Распознавание речи», а в новых версиях — «Голосовой ввод» (Win + H). Это неплохие инструменты, но меня в них всегда смущали несколько моментов: непрозрачность в вопросах приватности, ограниченная кастомизация и глубокая интеграция в систему, которую не всегда удобно настраивать.

Хотелось чего-то простого, гарантированно оффлайнового и с открытым исходным кодом, чтобы точно знать, как оно работает. Так родилась идея создать Scribe — полностью автономного и максимально гибкого голосового ассистента.

В основе — приватность, автономность и гибкость.

Я постарался реализовать функции, которых мне не хватало в других программах.

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

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