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

GitHub *

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

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

Many-Notes: Простые заметки в Markdown на своем сервере

Наткнулся на Reddit на небольшой, но очень интересный проект для тех, кто любит полный контроль над своими данными и ценит минимализм. Это self-hosted приложение для заметок Many-Notes.

TL;DR: Коротко о главном

  • Что это? Опенсорсное web-приложение для работы с Markdown-записями, спроектированное с акцентом на минимализм и полный контроль над данными. Вы разворачиваете его у себя (self-hosted).

  • Главная фишка: Использует базу данных (SQLite по умолчанию, но поддерживается MariaDB, MySQL и PostgreSQL) для продвинутых функций вроде многопользовательности и быстрого поиска, но при этом все заметки физически лежат в виде .md файлов. База нужна не для хранения текста заметок, а для метаданных, пользователей и индексации поиска.

  • Технологии: Написано на PHP, рассчитано на простую установку через Docker.

  • Кому зайдет? Небольшим командам или продвинутым пользователям, которым нужна своя база знаний с совместной работой, но без привязки к конкретному сервису.

Что под капотом? Ключевые возможности:

Это не просто минималистичный блокнот - внутри полноценные инструменты для командной работы. Функциональность здесь серьезная:

  • Многопользовательский режим и совместная работа: Можно заводить отдельных пользователей и давать им доступ к «хранилищам» (vaults). Это выводит инструмент из категории «личный блокнот» в категорию «командная база знаний».

  • OAuth-авторизация: Поддерживается вход через GitHub, Google, Keycloak и другие популярные сервисы.

  • Продвинутый редактор: Markdown + визуальный интерфейс (WYSIWYG), со сплит-панелью предпросмотра. Есть шаблоны, теги, поиск по обратным ссылкам, автосохранение.

  • Быстрый поиск: Используется typesense для быстрого и отказоустойчивого поиска по заметкам. Но это отдельный сервис, его тоже нужно поднять.

  • PWA (Progressive Web App): Приложение можно установить на рабочий стол или смартфон для более удобного доступа.

Полезные ссылки:

А вы чем пользуетесь для ведения заметок? Предпочитаете облачные сервисы или self-hosted решения? Делитесь в комментариях.

Подобные находки и разборы я регулярно публикую в ТГ канале Код ИТ-директора. Если интересен прагматичный взгляд на ИТ-инструменты, присоединяйтесь.

PS: Были шероховатости в тексте поста, в частности по базе данных и php. Поправил

Теги:
-1
Комментарии6

🤖 Внедряю «зрение» в роботов Адам и Ева!

Детекция объектов через YOLO
Детекция объектов через YOLO
from ultralytics import YOLO
import app_adam_yagpt

# Загрузка модели YOLOv8l (официальная версия)
model = YOLO("yolo11l.pt")  # Автоматически скачает, если нет

# Детекция на изображении
results = model("image2.jpg")

# Получаем текстовый вывод в переменную
detection_summary = results[0].verbose()
resp = app_adam_yagpt.main(f"С помощью компьютерного зрения я передаю тебе данные об изображении. "
                           f"Опиши пространство в литературной форме, и классифицируй где ты находишьcя, "
                           f"что за обстановка и характер мероприятия или встречи, улица это или помещение, если перед тобой: {detection_summary}. "
                           f"Не нужно спрашивать ничего в конце твоего описания. ")
print(resp)

# Визуализация
results[0].show()  # Покажет результат
results[0].save("output.jpg")  # Сохранит
В пространстве находятся пять человек, двое из которых одеты в деловые костюмы. 
Присутствует телевизор, компьютерная техника — мышь и клавиатура, а также мобильный телефон. 
Обстановка выглядит как офисное помещение или место для работы и коммуникации.

Собрал связку YOLOv11 + GPT, чтобы робот не просто видел объекты, но и описывал обстановку почти как человек.

Как это работает:
1️⃣ YOLO детектит объекты на изображении
2️⃣ GPT анализирует их и генерирует "очеловеченное" описание
3️⃣ Profit! - получаем не слепого робота, а полноценного собеседника!

Зачем это Адаму и Еве?

Роботы смогут:

  • Опознавать людей и их действия («Вы пьёте кофе?).

  • Находить предметы по запросу («Где мои ключи?»).

  • Да просто прикольно описывать этот мир! («Обстановка выглядит как офисное помещение или место для работы и коммуникации.»)

Следующие шаги:
🔜 Внедрение в «железо» - тесты на реальных роботах.
🔜 Голосовой вывод - чтобы Адам комментировал увиденное вслух.
🔜 Обратная связь - если робот ошибся, он запомнит исправление.

Сценарии использования:

Дома: «Ева, кто оставил грязную кружку?» → «Это сделал Сергей, 5 минут назад» (по детекции лица + времени).

В офисе: Адам предупредит: «Переговоры начнутся через 10 минут - в зале пока только двое».

📢 Если было интересно — подписывайтесь на мой Telegram-канал robotltdco.

Спойлер: На самом деле второй пункт («Голосовой вывод») сделан! ✔️
Но об этом позже!

Теги:
+1
Комментарии2

1С и цвет. Как из одной строчки HEX-кода выросла целая библиотека

Все началось с банальной задачи. Я хотел нормально сохранять настройки цветов в конфигурации «Управление IT-отделом 8».

В веб-разработке все привыкли к формату вроде #FABC01. Мне показалось логичным использовать его и в 1С. Это просто, понятно и универсально. Но оказалось, что в платформе нет готовых функций для конвертации такого формата в стандартный тип Цвет. И обратно.

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

Так маленький «велосипед» постепенно оброс фичами и превратился в полноценную библиотеку color1c. Я понял, что решаю не только свою проблему, и выложил инструмент в опенсорс.

Ссылка на GitHub, забирайте: https://github.com/Diversus23/color1c

Что умеет инструмент, если коротко

  • Полная конвертация Преобразование между Цвет1СHEXRGBCMYKHSV и HSL.

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

  • Получение случайных светлых или темных оттенков, что идеально для диаграмм и графиков.

  • Каталоги Встроена работа с каталогами RAL, пастельные цвета и т.д. При этом можно легко добавлять свои.

  • Градиенты Расчет градиентного перехода между двумя и более цветами.

Это демонстрация, но здесь продемонстрировано гораздо меньше возможностей чем есть под капотом
Это демонстрация, но здесь продемонстрировано гораздо меньше возможностей чем есть под капотом

Почему это важно не только для разработчика

Этот инструмент не просто для кодеров, он решает три важные задачи для руководителя.

  1. Экономия ресурсов. Ваши разработчики перестают тратить часы на написание однотипного кода. Они берут готовую, отлаженную библиотеку и занимаются бизнес-задачей, а не технической рутиной.

  2. Единый стандарт. У вас появляется один инструмент вместо десятка разных самописных реализаций. Это сильно упрощает код-ревью, поддержку и развитие всей системы.

  3. Качество UX. Удобная работа с цветом позволяет быстро и без боли кастомизировать интерфейс. А хороший UI, как мы знаем, это не просто «красивости». Он снижает количество ошибок пользователя и повышает его производительность.

Мы у себя в «Управлении IT-отделом 8» уже давно перевели всю работу с цветом на этот механизм. Окупилось многократно.

Буду рад, если инструмент окажется полезным и вам. Если есть идеи по доработке или желание внести свой вклад, pull request на GitHub горячо приветствуются.

---

Понравилась моя разработка? В моем ТГ канале Код ИТ-директора я гораздо чаще делюсь подобными инструментами, мыслями и короткими кейсами, которые не всегда доходят до формата большой статьи.

Теги:
+1
Комментарии1

Находки на рыбалке: FastStream! Сходили с автором половить рыбу и пожарить всякое вкусное на углях. И пока было время – говорили про программирование.

Для тех, кто еще не успел познакомиться с новинкой, рассказываю: FastStream – аналог FastAPI, но для работы с событиями в брокерах / очередях.

Пример:

from faststream import FastStream
from faststream.kafka import KafkaBroker

broker = KafkaBroker("localhost:9092")
app = FastStream(broker)

@publisher("another-topic")
@subscriber("first-topic")
async def handle(user: str) -> str:
     return f"Hi, {user}!"

Что делает данный код? Читает сообщения из first-topic, парсит из них поле user типа str, выполняет вашу логику обработки, отправляет новое сообщение в another-topic. Просто? Удобно? Да!

Что нам дает такой подход?

  • Декларативное описание, чего мы хотим. Не надо руками создавать коннекты и рулить потоком выполнения

  • AsyncAPI документацию (аналог OpenAPI в вебе)

  • Удобное тестирование

  • Кучу других плюшек!

Внутри видео обсудили:

  • Детали работы DI фастстрима

  • Встроенное Observability

  • Open Tracing

  • Сообщество фреймворка (тут не будет проблемы "одного автора", сообщество живет!)

  • Отличия от Celery: почему интструменты совсем разные?

Репозиторий: https://github.com/ag2ai/faststream
Документация: https://faststream.ag2.ai

Обсуждение: используется ли в ваших проектах асинхронная архитектура? Как вы работаете с событиями?

Теги:
+13
Комментарии0

⚙️ Настройка разных пользователей Git для разных проектов

В домашней директории есть три папки:

- ~/ProjectHome/
- ~/ProjectWork/
- ~/ProjectOther/

В каждой нужно работать от своего пользователя:

- userHome
- userWork
- userOther

Чтобы работать в каждом проекте без дополнительных переключений, нужно сделать следующее:
1. Добавить настройки в .gitconfig

Откройте файл ~/.gitconfig и добавьте в него:

[includeIf "gitdir:~/ProjectHome/"]
path = ~/.gitconfig-home
[includeIf "gitdir:~/ProjectWork/"]
path = ~/.gitconfig-work
[includeIf "gitdir:~/ProjectOther/"]
path = ~/.gitconfig-other

2. Создать отдельные конфиги для каждого пользователя
Создайте в домашней директории три файла:

- ~/.gitconfig-home
- ~/.gitconfig-work
- ~/.gitconfig-other

3. Прописать пользователя и SSH-ключ в каждом конфиге
Пример содержимого для ~/.gitconfig-home:

[user]
name = userHome
email =userHome@mail.ru
[core]
sshCommand = "ssh -i ~/.ssh/id_userHome_ed25519"

Аналогично создайте .gitconfig-work и .gitconfig-other, указав соответствующего пользователя, почту и путь к ключу.

⚠️ При этом из основного .gitconfig нужно удалить секции [user] и [core.sshCommand], чтобы не было конфликтов.

4. Указать правильный remote для каждого проекта в своей папке

Для проектов в ~/ProjectHome/:
git remote set-url origin git@github.com:userHome/ProjectHome.git

Для проектов в ~/ProjectWork/:
git remote set-url origin git@github.com:userWork/ProjectWork.git

Для проектов в ~/ProjectOther/:
git remote set-url origin git@github.com:userOther/ProjectOther.git


💡 ProjectHome.git, ProjectWork.git, ProjectOther.git - это просто примеры названий репозиториев, они могут быть любыми.

📌 Важно: эти команды нужно выполнять для каждого проекта отдельно, а не один раз для всей папки.

5. Разместить SSH-ключи

В директории ~/.ssh/ должны находиться три приватных ключа, которые вы сгенерировали для каждого пользователя.

Например:
- id_userHome_ed25519
- id_userWork_ed25519
- id_userOther_ed25519


Убедитесь, что имя ключа соответствует указанному в параметре sshCommand внутри соответствующего .gitconfig-*

Результат

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

Можно добавить и больше папок с пользователями - принцип остаётся тем же.

Добавлю еще вариант, подходит для Gitlab:
https://qna.habr.com/q/1400592

Теги:
Всего голосов 10: ↑9 и ↓1+9
Комментарии0

💫 Получите развернутый анализ GitHub репозитория через ChatGPT Deep Research

Не все про это знают, но с помощью ChatGPT Deep Research можно изучить любой GitHub проект

В режиме Deep Research через селектор выберите желаемый репозиторий, а через 5 минут получите детальный анализ по вашему запросу

Иногда пользуюсь этой функцией, чтобы разобрать архитектуру проекта, объяснить логику кода или найти потенциальные проблемы и улучшения. Сам я не кодер, поэтому мне это очень сильно помогает

Особенно полезно при изучении чужих проектов, когда надо быстро вкатиться

Вот тут можете посмотреть, как ChatGPT сделал разбор моего тестового репозитория, опираясь на мой неполноценный промпт

Теги:
Всего голосов 5: ↑4 и ↓1+4
Комментарии3

Скрипт синхронизации GitHub Issues для Cursor IDE

ghsync.py позволяет Агенту взаимодействовать с задачами (issues) в репозитории GitHub.

Скачать: https://github.com/Artemonim/Artemonim-Little-Tools/tree/master/AgentTools/GithubIssueSynchronizationScript

Скрипт позволяет читать все метки и задачи, редактировать существующие задачи и создавать новые. Поддерживается изменение статуса задачи, но удаление задач не предусмотрено.

Для массовых изменений рекомендуется создать премиальной моделью файл temp.txt со списком команд, а затем выполнить их с помощью бесплатной модели. Gemini 2.5 Flash справляется с этим. Cursor Small и GPT-4o-mini не тестировались.

Требования

  1. Python 3: Убедитесь, что у вас установлен Python 3.

    • Если проект не использует Python, создайте локальное окружение Python. В Cursor или VSCode откройте терминал и выполните:

      python -m venv env_py
      

      После этого IDE сама предложит активировать окружение.

  2. GitHub CLI (gh): Должен быть установлен GitHub CLI и пройдена аутентификация:

    gh auth login
    

Настройка

Добавьте папку .cursor в ваш репозиторий и следуйте предыдущему разделу.

Использование

Пример запроса к модели:
В соответствии с @git-interactions.mdc выполни {действие}

Основные команды, поддерживаемые ghsync.py

  • -d, --download: Скачивает все метки и задачи.

  • -u, --upload: Создает новую задачу.

    • Обязательный аргумент: --title <заголовок>

    • Опционально: --body <тело> или --body-from-file <имя_файла> (из .cursor/Gitdata/temp_bodies), --labels <метка1> <метка2> ...

  • -e, --edit <НомерЗадачи>: Редактирует существующую задачу.

    • Опционально: -NewTitle <новый_заголовок>, -NewBody <новое_тело> или -NewBodyFromFile <имя_файла> (из .cursor/Gitdata/temp_bodies), -NewLabels <метка1> <метка2> ..., -NewState <open|closed|not_planned>

При использовании --body-from-file или -NewBodyFromFile, положите файл с содержанием задачи в папку .cursor/Gitdata/temp_bodies. Скрипт считает содержимое и автоматически удалит файл после использования.

Примечания

  • Скрипт и связанное правило пытаются обойти текущие проблемы Cursor с захватом вывода терминала для Агентов. Следите за исполнением, так как Агент может не следовать инструкциям в git-interactions.mdc и проверять вывод консоли вместо статус-файла

  • Я пытался создать Agent Tools через MCP-сервер, но ни Gemini, ни Claude не смогли корректно подключить MCP к Cursor, поэтому я забил.

  • Если хотите, чтобы действия Агента отображались отдельно от ваших, создайте для него отдельный аккаунт GitHub. Вроде как ещё можно создать под него GitHub App, но мне лень, учитывая, что я работаю один в приватном репозитории.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

В репозитории Tencent Cloud SDK for Go на GitHub содержится более 200 000 тегов Git. Это так много, что попытка взаимодействия с тегами в этом репозитории может фактически привести к сбоям в работе GitHub (504 Gateway Time-out. The server didn't respond in time).

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Кардинальное упрощение привязки GitHub, GitLab, Bitbucket в Amvera Cloud

Привязка репозиториев GitHub, GitLab, BitBucket вызывала у наших пользователей затруднения, и мы обещали упростить процесс.

Теперь для привязки репозитория достаточно указать токен и выбрать ветку и репозиторий.

Способ позволяет организовать максимально простой деплой и обновление приложений через git push. Для обновления приложения достаточно сделать коммит в привязанный репозиторий, и оно соберется и бесшовно запустится автоматически.

Заполняем три поля и CI/CD готов
Заполняем три поля и CI/CD готов

Подробная инструкция по подключению доступна по ссылке.

Amvera Cloud — это облако для простого деплоя приложений через git push (или интерфейс). Встроенный CI/CD, бэкапы и мониторинг позволяют развернуть проект тремя командами в IDE и не думать о настойке инфраструктуры. Amvera проще, чем использование VPS.

Теги:
Всего голосов 2: ↑1 и ↓1+1
Комментарии0

Представлен инструментарий Turns Codebase into Easy Tutorial with AI, который превращает любой репозитарий GitHub в учебник. Нейросеть анализирует весь код, разбирается в нём и создаёт гайд, в котором просто и понятно расписано как ресурс работает. С помощью решения можно легко учить новые технологии, изучать программирование по готовым проектам; писать документацию к своим репо.

Пример гайда по Tutorial: MCP Python SDK.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Представлен открытый проект на Python под названием Autonomous Networked Utility System. У решения функционал, архитектура, дизайн и код идентичные платному Manus AI. Проект решает сложные математические задачи, пишет код на уровне сеньора, бронирует отели и даже анализирует операционные цели бизнеса. MIT License позволяет внедрять ИИ-агента в любые сервисы и использовать в разных задачах.

Примечательно, что проект набрал более 1,5 тыс звёзд на GitHub менее чем за сутки.

Теги:
Всего голосов 4: ↑2 и ↓20
Комментарии2

Наш backend developer Дмитрий делится Open Source-проектом, который поможет разработчикам Telegram Mini Apps (TMA) упростить валидацию Init Data — проверку, что HTTP-запрос действительно был отправлен из приложения в Telegram.

Дмитрий реализовал Python-пакет, в котором имплементировал алгоритмы, позволяющие проверять подлинность данных, передаваемых из Mini Apps. С ним можно легко реализовать механизм авторизации/аутентификации для Backend-части приложения.

👉 Забирайте репозиторий: https://github.com/swimmwatch/telegram-webapp-auth

Также у проекта есть документация, в которой описывается применение этой библиотеки с популярными веб-фреймворками: Django, FastAPI.

Когда мы начинали разрабатывать TMA, то столкнулись с недостатком информации, кейсов, спросить или подсмотреть было не у кого – не так много компаний, которые занимаются созданием мини эппов. Сегодня же мы успешно реализовали несколько Telegram Mini Apps, накопили ценный опыт и готовы делиться своими Open Source-проектами с сообществом разработчиков и вкладываться в развитие технологии. Подписывайтесь на наш телеграм-канал!

Если у вас есть идея Telegram Mini App, то Doubletapp поможет ее воплотить, подробнее о наших кейсах – на сайте.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0

Разработчик под ником OXY2DEV рассказал, что написал 24 451 строку кода для плагина Neovim (markview.nvim), используя только свой смартфон. Эту историю заметили другие разработчики, включая его коллег из Бангладеш. Они придумали, как отправить разработчику рабочий ноутбук, чтобы OXY2DEV смог работать более удобно и продуктивно, а также не просить проверить код на ПК, так как у него со смартфона не было возможности сделать тесты должным образом.

Теги:
Всего голосов 3: ↑2 и ↓1+2
Комментарии3

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

Исследовал интернет и наткнулся на GitHub Unwrapped. Он на основе активности в GitHub создаёт видео, где можно увидеть часто используемые языки, часы спонтанной работы, звёзды и всё остальное. Достаточно ввести только имя профиля, чтобы получить видео. Код открыт.

Сделано с использованием Remotion — тоже с открытым кодом, которая позволяет автоматизировать создание видео на React в веб. Документация хорошая, но надо разбираться. Увидел это и решил, что круто, надо поделиться!

P.S. Моя активность в этом ролике, если кому-то будет интересно.

Теги:
Всего голосов 4: ↑3 и ↓1+3
Комментарии0

Довольно давно, когда работал сисадмином, написал пару скриптов, чтобы от обычного ping получить несколько большую информационную отдачу, об этом в видео. Скрипты выложил на GitHub.

Теги:
Всего голосов 4: ↑2 и ↓2+2
Комментарии5

Компания Gartner опубликовала отчет о состоянии рынка ИИ-помощников по кодированию в своей ежегодной серии квадрантов. GitHub вошел в группу лидеров

Gartner включила в квадрант ИИ-помощников по кодированию 12 решений на основе их способности к выполнению задач и полноты видения. GitHub со своим ИИ-помощником Copilot вошел в группу лидеров и занял первое место по исполнительности.

Figure 1: Magic Quadrant for AI Code Assistants
Figure 1: Magic Quadrant for AI Code Assistants

Миссия GitHub Copilot – расширить границы человеческой креативности с помощью генеративного искусственного интеллекта. Copilot уже пользуются миллионы разработчиков и более 77 тысяч компаний, и это решение облегчает им работу и повышает продуктивность, заявляют авторы инструмента.

Планы на будущее

Чтобы добиться статуса самого популярного ИИ-инструмента для разработчиков, GitHub планирует расширять и укреплять Copilot, уделяя внимание усовершенствованной модернизации приложений, оптимизации миграции кода, повышению производительности и скорости разработки и другим факторам.

Также компания планирует серьезно расширять аудиторию Copilot. «Мы видим мир, в котором новички, любители и профессиональные разработчики могут создавать программное обеспечение с помощью магии Copilot. Мы считаем, что такая доступность позволит творить миллиардам разработчиков во всем мире» – заявил генеральный директор Томас Домке.

Теги:
Всего голосов 3: ↑3 и ↓0+7
Комментарии1

Microsoft опубликовала первое стабильное обновление новой ветки дистрибутива Azure Linux 3.0, который ранее распространялся под именем CBL-Mariner.

Проект развивается в качестве универсальной базовой платформы для Linux-окружений, используемых в облачной инфраструктуре, edge-системах и различных сервисах Microsoft. Решение нацелено на унификацию применяемых в Microsoft Linux-решений и упрощение поддержания Linux-систем различного назначения в актуальном состоянии.

Наработки проекта распространяются под лицензией MIT. Сборки пакетов формируются для архитектур aarch64 и x86_64. Размер установочного образа 740 МБ.

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

Изменения в новой версии:

  • ядро Linux обновлено до версии 6.6;

  • добавлена поддержка GPU Nvidia A100 и H100, а также предоставлен Nvidia GPU Operator для автоматизации управления драйверами Nvidia на узлах с Azure Linux;

  • добавлены инструменты для замены других дистрибутивов (OSsku In‑Place Migration) на узлах в облаке Microsoft Azure, например, можно заменить установленный Ubuntu на Azure Linux;

  • система принудительного контроля доступа SELinux переведена по умолчанию в режим enforcing.

Источник: OpenNET.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии1

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