Обновить
32K+

GitHub *

Веб-сервис для хостинга и разработки IT-проектов

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

Внешний Fuzzy‑поиск для 1С: транслит, синонимы и любые реквизиты

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

Всем привет!
Меня зовут Шатохин Дмитрий, я работаю в компании SM Lab старшим программистом 1С.

Выносим полнотекстовый поиск за пределы кластера 1С. Нечеткое соответствие, учет опечаток и регистра без нагрузки на сервер и СУБД основной базы.

Sku-search: кроссплатформенный сервис полнотекстового поиска для 1С — находит все по наименованию, артикулу, штрихкоду и любым реквизитам
Когда стандартный поиск 1С сдается, а Elasticsearch кажется пушкой по воробьям.

Знакомая боль?

Оператор в вашей 1С создает новую номенклатуру и вбивает «Болт М16 оцинк.». Система молчит. Он сохраняет — и в базе появляется дубль, потому что «Болт М16х60 оцинкованный ГОСТ 7798-70» уже существовал три года.

Или другой случай. Приходит прайс поставщика. В нем артикул ART-000002, в вашей 1С — тот же, но записан как Art-000002. На первый взгляд безобидно: строки в 1С по умолчанию сравниваются без учета регистра, и «в лоб» эти значения не отличить друг от друга. А для акцизных марок, марок Честного ЗНАКА, серийных номеров и артикулов, где регистр различает модификации, это ловушка: 1С выдает кучу ложных совпадений, а поиск «с учетом регистра» из стандартного запроса не настроить.

Читать далее

Новости

GitHub Actions убрал Node 20 и отключает старые раннеры: что проверить

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

23 сентября GitHub окончательно убрал Node 20 из раннеров GitHub Actions. JavaScript-экшены теперь выполняются на Node 24, а временный выключатель ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION, которым можно было вернуть Node 20, больше не работает. Через шесть дней, 29 сентября, на GitHub Enterprise Cloud включилась полная проверка версий self-hosted раннеров.

Две новости за неделю, и обе ломают тихо.

Читать далее

Трон для самого звёздного: я сделал игру, которая живёт внутри GitHub‑репозитория

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

Помните Million Dollar Homepage? В 2005 году студент продал миллион пикселей по доллару за штуку и заработал миллион. Никакой пользы в этих пикселях не было, но люди платили за участие в мемчике и за место, которое видят другие.

Мне захотелось сделать что‑то похожее для разработчиков, только вместо денег — валюта, которую у нас и так все копят: звёзды на GitHub.

Так появился Star Throne — репозиторий‑игра. Ставишь ему звезду, и через минуту‑две GitHub Actions считает, сколько звёзд у тебя самого. Если ты сильнейший в своей лиге, твоя аватарка появляется на троне прямо в README. Сервера нет, базы данных нет, хостинга нет. Всё работает на GitHub.

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

Познать истину

Пиар для раунда: чем отличается коммуникация продукта от коммуникации инвестиционного актива

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

Как IT-стартапу говорить с пользователями, инвесторами и медиа, не смешивая три разные истории в один пресс-релиз

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

По моим наблюдениям, стартапы часто начинают готовить PR к раунду с описания продукта, хотя инвестору важнее увидеть подтверждение спроса, скорость роста, экономику и условия для масштабирования. В то же время продуктовая коммуникация становится слабее, когда её перегружают языком рынка, оценок и будущих финансовых прогнозов. Эта разница определяет, какие данные мы собираем, какие публикации выпускаем, кого приглашаем в коммуникацию и что считаем результатом.

Поэтому продуктовый PR и PR для раунда в коммуникационном агентстве «ЛАМПА» мы не строим по одному шаблону. В первом случае мы отвечаем на вопрос: «Почему этим стоит пользоваться?» Во втором: «Почему в это стоит инвестировать сейчас?»

Читать далее

Как мы создали Open‑Source альтернативу закрытым платёжным системам на React, Node.js и WebNFC

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

Представьте парк аттракционов, фуд-корт на фестивале, корпоративную столовую или сеть автомоек. Что их объединяет? Всем им нужна своя закрытая платёжная система или внутренняя программа лояльности (клубные карты).

Обычно внедрение такой системы — это боль. Нужно покупать дорогие терминалы, нанимать интеграторов и пилить самописный софт. А что делать, если система нужна «на один раз» (для трёхдневного фестиваля) или у малого бизнеса просто нет бюджета?

Меня зовут Никита, и я решил закрыть эту боль, заодно прокачав своё портфолио. Я разработал легковесную, open-source альтернативу закрытым платёжкам, которая работает прямо в браузере, не требует скачивания приложений и сложного железа.

Под капотом — классический стек React + Node.js и капелька технологии в виде WebNFC.

Читать далее

Заметки в своём GitHub без сервера: как я оживил BatNoter и написал синхронизацию на Git Data API

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

Мне давно нравится идея хранить заметки обычными Markdown-файлами в своём репозитории на GitHub. Файлы остаются твоими, их можно открыть на github.com или в любом редакторе, а история изменений достаётся даром: это просто коммиты.

Был проект BatNoter, который делал ровно это, но ему нужен был собственный сервер для входа через GitHub. В конце 2022 года сервер перестал отвечать, и приложение умерло.

Я переписал его так, чтобы сервер был не нужен вовсе. Получился Notewing: браузер сам ходит в GitHub API, изменения копятся офлайн и отправляются одним коммитом, а конфликтующие правки не теряются. В статье расскажу, как устроена синхронизация через Git Data API, где были подводные камни и как всё это тестировать, не трогая настоящий GitHub.

Как устроена синхронизация

Как взвесить чужой репозиторий, не запуская его: 138 проектов из трендов GitHub

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

За месяц дайджест трендов GitHub про ИИ-агентов принёс мне 138 уникальных репозиториев. Я взвесил каждый, ничего не запуская: скачал архив через API и посчитал отдельно код, прозу, тесты и сгенерированное. 56 % оказались платформами, которые форкают только с намерением сопровождать. Лёгких, которые можно переписать под себя за вечер, всего 24, и половина из них вообще не инструменты. Лицензия оказалась фильтром раньше веса: у 9 репозиториев её нет совсем, а один файл начинается словами MIT и ниже запрещает коммерческое использование. В статье метод, таблицы и три признака накрутки звёзд, которые я пытался автоматизировать и которые не сработали.

Читать далее

Я устала листать вакансии в телеге и собрала себе агрегатор. Бесплатный, на GitHub Pages и без API нейросетей

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

Если вы ищите работу и у вас много телеграм-каналов с вакансиями, слова апи, python, гитхаб вам знакомы, то вам будет полезно. Мой кейс: когда я искала работу то смотрела по 50+ постов в день в десятках каналов в телеге, из них подходящих вакансий было штук 10, одна и та же вакансия висит в четырёх каналах, половина постов это курсы и "ищу работу", фильтров никаких. Платить за агрегатор мне не хотелось.

Собрала свой сервис, который вы можете адаптировать под любую роль: скрипт читает папку каналов в Telegram, отсеивает не-вакансии, вытаскивает компанию, грейд, город и зарплату, склеивает дубли и раз в день выкладывает одну страницу с фильтрами на GitHub Pages. Стоимость - ноль, ключи нужны только от Telegram.

Читать далее

Легковесная альтернатива cAdvisor и сборщик логов для отправки в Loki

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

В данной статье расскажу про проект logporter, который для меня полностью заменил решение от Google для централизованного и полнофункционального мониторинга контейнеров Docker.

Экспортер написан на Go и совмещает функции сборщика метрик, логов, проверки обновлений образов и встроенной панели мониторинга в одном легковесном образе.

Читать далее

ТОП-100 MCP-серверов: лучшие инструменты для ИИ, агентов и автоматизации (3.1 млн звезд на GitHub)

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

MCP-сервер - это по переходник между ИИ и внешним сервисом. Например, один MCP читает файлы на ПК, другой - программирует, третий - ищет инфу в интернете. 

То есть ИИ в основном отвечает на вопросы, анализирует и генерит картинки, а через MCP он может еще подключаться к Figma, Google Drive, базе данных, браузеру, почте и тысячам других сервисов.

В этой подборке я собрал 100 самых популярных MCP-серверов - вместе они набрали ⭐3.1 млн звезд на GitHub.

Читать далее

Тернарная нейронка на C#

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

Мода на квантизацию скоро закончится...когда появятся они: модели, обученные на тернарной/тритовой/троичной логике.

Или нет?

Пройдемся по форматам обучения от FP32 до FP4, а потом сделаем аналог модели Microsoft Bitnet 1.58 на C#, размером 29Кб (в экстремальном варианте — 17,1 КБ).

Читать далее

lukidown — Telegram бот для загрузки всего отовсюду

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

Я написал бота на Python, используя библиотеки kurigram, yt‑dlp и ffmpeg. Данный бот умеет скачивать что‑то (в зависимости от площадки) из следующих платформ: YouTube, TikTok, Instagram, Pinterest, Rutube, VK, Spotify, Shazam, Yandex Music, SoundCloud, VK Music, Deezer, Apple Music, Tenor, JioSaavn, Twitch (только клипы), Snapchat, Reddit, Kinopoisk.

Читать далее

Свой git без gitlab‑комбайна: настраиваем gitea, подключаем ci и проверяем полное восстановление

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

Как завести свой Git на небольшом VPS и не превратить его обслуживание в отдельный проект? Показываю свой путь с Gitea: настройку пользователей и SSH, перенос репозиториев из GitHub и подключение CI через Gitea Actions. А затем проверяю бэкап делом - восстанавливаю из внешней копии. С командами, ошибками и оговорками по безопасности - для личных проектов и небольших команд.

Читать далее

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

Измерительные приборы под контролем — универсальный SCPI-драйвер управления: Python + Keysight, АКИП, R&S

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

Привет! В предыдущей статье https://habr.com/ru/articles/1042328/ я рассказал о математической оценке коэффициента шума (КШ) методом отношения сигнал-шум. Сегодня перейдем от теории к практике - к автоматизации радиоизмерений. Покажу, как построить гибкую систему управления измерительными приборами на Python, которая не боится разношёрстного парка оборудования в лаборатории.

Читать далее

Работа с файлами Git: от самого простого к сложному

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

Всем привет!

Почти каждый, кто работал с Git больше пары недель, хоть раз сталкивался с одной и той же путаницей: почему git add — это не сохранение, зачем нужен какой‑то отдельный индекс, если есть коммит, откуда вообще берутся конфликты при мерже, если мы просто оба поправили один файл. И почему иногда git status показывает файл как изменённый, хотя вы точно ничего не трогали.

Если вы так же знакомы с этими проблемами, а также с другими проблемами при работе с Git — эта статья для вас.

В этой статье cначала покажем, как Git на самом деле хранит файлы и их изменения, что такое индекс и почему он существует отдельно от рабочей директории и коммитов. Далее — как устроены ветки на уровне данных, а не только как указатель текущей линии разработки. После этого разберём, как Git определяет, какие именно строки поменялись, и как из этого механизма следует слияние т.е merge и, самое главное, конфликты при слиянии.

Изучив модель, пройдёмся по основным командам работы с файлами: add, rm, mv, restore, diff, log, stash, работу с .gitignore и с большими файлами.

А в конце мы вам покажем, как это всё применяется на практике.

Читать далее

Четыре пул-реквеста, четыре полных прогона, один ответ

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

Merge queue гоняет полный сьют один раз на каждый пул-реквест в группе. Четверо ждут посадки — четыре полных прогона, причём последний из них уже содержит три остальных. Обязаны ли те три прогоняться? Мы построили одноразовый стенд, прогнали на нём четыре способа останавливать лишние прогоны и померили каждый: один сажает сломанный код, один залипает намертво, один безопасен и стоит ровно столько же, сколько мы платим сейчас. Четвёртый — наш, и он экономит около 19 машинных минут на посаженный пул-реквест ценой примерно четырёх минут ожидания.

Читать далее

Как я перестал платить за macOS-минуты: перенос iOS-сборки с GitHub Actions на Xcode Cloud, с цифрами

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

Одна минута macOS-раннера в GitHub Actions стоит десять минут Linux. Я перенёс iOS-сборку Flutter-приложения в Xcode Cloud: с ~45 оплачиваемых минут на релиз до 6, без .p12 и профилей в секретах, с тремя shell-скриптами вместо 90 строк YAML. Внутри — схема тегов ios/v* и android/v*, настройки Xcode Cloud, которые молча сжигают compute-часы, и таблица семи падений первого живого прогона — ни одно из них не было ошибкой миграции. Плюс чек-лист и открытый скилл, который из этого вырос.

Читать далее

Шесть миллиардов прогонов ради одной галочки: как устроено ревью научного софта на GitHub

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

Последние месяцы я рецензирую научный софт для JOSS, Journal of Open Source Software. Это настоящий рецензируемый журнал с редколлегией, только статья в нём короткая, около тысячи слов, а главный объект ревью - репозиторий с кодом. Ревью идёт в публичном GitHub-треде под именем рецензента, и весь процесс от заявки до вердикта открыт любому желающему. Я инженер, не учёный: ни PhD, ни публикационного списка у меня нет.

Читать далее

AWG-Easy 3: как с помощью вайб-кода сделал простую панель для AmneziaWG 3.x

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

Как я навайбкодил панель для Wireguard ASC 3.x чтобы не просто безопасно выходить в Интернет, но и объединять устройства в одну сеть.

Читать далее

Make STL Cringe Again: Как я динамические строки на C создавал

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

Привет, Хабр! Однажды я подумал, что вот не умеют разработчики жить. В каждом из языков есть свои напасти (от которых, в принципе, спасаются разве что разработчики-полиглоты). Возьмем хотя бы C++ — даже без его шаблонов, исключений, и т.д., там все еще много мраков. Возьмем хотя бы iostream — он, блин, весит 2 МБ в последней версии GCC при компиляции под Windows! Или, вот, std::string — динамическая строка. Звучит интересно на бумаге, учитывая, что язык не из добрейших, но на практике...

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