Шахматный движок и домашнее облако

Выпуск № 77 ·

Проекты на C

  1. EasyLogger

    Сверхлёгкая библиотека логирования для C/C++. Потребляет мало ресурсов и подходит для проектов на микроконтроллерах и устройствах интернета вещей. Простая в освоении, расширяется с помощью плагинов. Возможности:

    • Вывод в терминал, файл, последовательный порт, Flash и другие направления
    • Работа с разными операционными системами
    • Потокобезопасность
    • Цветовое выделение сообщений
    EasyLogger
  2. foolrenderer

    Программный рендерер, написанный с нуля на C. Всего несколько тысяч строк кода без графических API реализуют базовые функции, похожие на OpenGL, и методы рендеринга в реальном времени для игр: тени, карты нормалей в касательном пространстве и физически корректную систему материалов. Подробные комментарии и выводы математических формул помогают разобраться в работе GPU, основах рендеринга и шейдеров.

    foolrenderer
  3. unicorn

    Лёгкий многоплатформенный фреймворк для эмуляции процессоров разных архитектур. Основан на QEMU; часто используется для обратной разработки и выполнения вредоносного кода. Особенности:

    • Разные архитектуры: ARM, ARM64, RISC-V, TriCore и другие
    • Интерфейсы для Python, Rust, Java, Go, JavaScript и других языков
    • Тонкая настройка мониторинга на разных уровнях

Проекты на C#

  1. Bili.Uwp

    Неофициальное приложение Bilibili (китайского видеохостинга) для Windows. Клиент на основе UWP с простым интерфейсом подходит для Windows 10/11 и Xbox.

    Bili.Uwp

Проекты на C++

  1. annoy

    Библиотека для приближённого поиска ближайших соседей. Методы ANN решают задачу поиска ближайших соседей приближённо и применяются, например, в рекомендациях и поиске. Готовая библиотека Annoy для C++ и Python строит индекс из бинарных деревьев с помощью случайных проекций, ускоряя запросы. Очередь с приоритетом и поиск по «лесу» повышают точность и позволяют искать в больших массивах данных в реальном времени.

    from annoy import AnnoyIndex
    import random
    
    f = 40  # Length of item vector that will be indexed
    
    t = AnnoyIndex(f, 'angular')
    for i in range(1000):
        v = [random.gauss(0, 1) for z in range(f)]
        t.add_item(i, v)
    
    t.build(10) # 10 trees
    t.save('test.ann')
    
    # ...
    
    u = AnnoyIndex(f, 'angular')
    u.load('test.ann') # super fast, will just mmap the file
    print(u.get_nns_by_item(0, 1000)) # will find the 1000 nearest neighbors
    annoy
  2. RedPanda-CPP

    Лёгкая и удобная среда разработки для C/C++. IDE «Малая панда C++» создана для начинающих и студентов: работает сразу после установки без сложной настройки. Есть автодополнение, подсветка синтаксиса, компиляция, запуск и отладка программ. Встроены учебные библиотеки ege, turtle graphics и raylib, а также набор задач и поддержка систем проверки решений (OJ).

    RedPanda-CPP
  3. Stockfish

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

    Stockfish
  4. xbmc

    Свободный многофункциональный медиаплеер. После настройки может стать домашним медиацентром: воспроизводит локальное видео, файлы с NAS, трансляции, телевидение и подкасты, поддерживает плагины и трансляцию на другие устройства. Работает на Linux, macOS, Windows, Android и iOS; интерфейс доступен в том числе на китайском языке.

    xbmc

Проекты на CSS

  1. Cnblogs-Theme-SimpleMemory

    Тема для чтения блогов на Blog Garden (Cnblogs). Эта блог-платформа позволяет пользователям менять оформление. Открытая тема снабжена подробной инструкцией по установке, поэтому начать пользоваться ею легко. Она немного замедляет загрузку блога, зато выглядит лаконично и приятно.

    Cnblogs-Theme-SimpleMemory

Проекты на Go

  1. bk-cmdb

    Открытая платформа управления конфигурациями от Tencent. Корпоративная система для учёта активов и приложений: управляет хостами, организационной структурой и правами доступа, ведёт аудит действий. Строгая проверка изменений помогает поддерживать качество и читаемость кода; исходники полезно изучить.

    bk-cmdb
  2. CasaOS

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

    CasaOS
  3. colly

    Один из самых известных фреймворков для веб-скрейпинга на Go. Дружелюбный API и множество примеров помогают быстро начать работу. На одном ядре обрабатывает до 1 000 запросов в секунду; позволяет управлять методами запросов, паузами между ними и пределом параллельных запросов.

    func main() {
        c := colly.NewCollector()
    
        // Find and visit all links
        c.OnHTML("a[href]", func(e *colly.HTMLElement) {
            e.Request.Visit(e.Attr("href"))
        })
    
        c.OnRequest(func(r *colly.Request) {
            fmt.Println("Visiting", r.URL)
        })
    
        c.Visit("https://go-colly.org/")
    }
  4. ddns-go

    Простая утилита динамического DNS. IP-адрес домашнего устройства обычно меняется, поэтому обычная привязка домена к постоянному адресу мешает подключаться к нему из интернета. DDNS решает эту задачу: утилита автоматически определяет текущий публичный IP устройства и обновляет запись у поставщика DNS.

  5. nightingale

    Открытая облачная система мониторинга. Корпоративная платформа объединяет сбор данных, оповещения и визуализацию; поддерживает разные способы развёртывания, включая Docker. Высокопроизводительная база временных рядов позволяет собирать, хранить и анализировать сотни миллионов временных рядов. Система прошла проверку в рабочих средах более тысячи компаний.

    nightingale

Проекты на Java

  1. doris

    Высокопроизводительная аналитическая база данных. Система на архитектуре MPP выполняет анализ в реальном времени и особенно хорошо работает с большими объёмами данных и высокой нагрузкой. Её используют многие известные компании для анализа пользователей, поиска по логам и построения пользовательских профилей.

    doris
  2. plantuml

    Генератор UML-диаграмм из текстового описания. По простому тексту строит диаграммы последовательности и вариантов использования, а также архитектурные схемы, диаграммы Ганта, интеллект-карты и ER-диаграммы. Доступен онлайн, из консоли и как настольное приложение.

    java -jar plantuml.jar 文本文件
    将得到一个同名的 png 文件
    plantuml

Проекты на JavaScript

  1. koodo-reader

    Удобная программа для чтения электронных книг. Поддерживает EPUB, форматы Kindle, PDF и комиксы. В лаконичном интерфейсе доступны настройка шрифтов, заметки, закладки, перевод выделенного текста, импорт книг и синхронизация данных. Есть клиенты для Windows, macOS и Linux, а также веб-версия.

    koodo-reader
  2. nocobase

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

    nocobase
  3. vanblog

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

    vanblog
  4. video.js

    Популярный видеоплеер для HTML5. Готовый к использованию веб-плеер поддерживает HTML5-видео и потоковые форматы. На момент публикации его использовали более 450 000 сайтов.

    video.js
  5. vue-idle-game

    Небольшая браузерная игра в жанре idle RPG. Написана на Vue.js: снаряжение выпадает случайным образом, заданий нет — игровой процесс строится на постоянном сборе добычи.

    vue-idle-game

Проекты на Kotlin

  1. Unciv

    Одиночная мобильная стратегия в духе «Цивилизации». Пошаговая игра размером всего 6 МБ позволяет создать собственную империю. По сути, это открытая версия «Цивилизации» для Android: пиксельная графика не мешает игровому процессу, есть китайский язык, много содержимого и высокая реиграбельность.

    Unciv

Проекты на Python

  1. dooit

    Консольная утилита для списка дел. Интерактивная программа на Python проста в использовании: поддерживает клавиатурные сокращения и мышь, позволяет менять тему оформления и значки.

    dooit
  2. gradio

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

    import gradio as gr
    def sketch_recognition(img):
        pass# Implement your sketch recognition model here...
    
    gr.Interface(fn=sketch_recognition, inputs="sketchpad", outputs="label").launch()
    gradio
  3. label-studio

    Открытый инструмент разметки данных. Позволяет размечать и комментировать аудио, тексты, изображения, видео и временные ряды.

    # 安装
    pip install -U label-studio
    # 运行
    label-studio
    label-studio
  4. libtmux

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

    import libtmux
    server = libtmux.Server()
    server.list_sessions()
    # [Session($3 foo), Session($1 libtmux)]
  5. nas-tools

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

    nas-tools
  6. whoogle-search

    Поиск Google для размещения на своём сервере. Ориентированная на конфиденциальность метапоисковая система показывает результаты Google без рекламы, не отслеживает IP-адреса и не сохраняет cookie. Быстро и просто развёртывается через Docker.

    whoogle-search

Проекты на Rust

  1. cheats.rs

    Шпаргалка по языку Rust. Содержит основы синтаксиса, подробности порядка выполнения и важные замечания для разработчиков. Дополнена примерами кода (EX), книгами (BK), материалами по стандартной библиотеке (STD) и другими ресурсами.

    cheats.rs
  2. py-spy

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

    # 安装
    pip install py-spy
    
    # record 命令将配置文件记录到文件中,可用来生成火焰图
    py-spy record -o profile.svg --pid 进程ID
    
    # top 命令实时展示函数花费时间
    py-spy top --pid 进程ID
    
    # dump 命令显示每个 Python 线程的当前调用堆栈
    py-spy dump --pid 进程ID
    py-spy
  3. reqwest

    HTTP-клиент для Rust. Написан целиком на Rust, прост в использовании, поддерживает асинхронную работу и предлагает удобный API.

    use std::collections::HashMap;
    
    fn main() -> Result<(), Box<dyn std::error::Error>> {
        let resp = reqwest::blocking::get("https://httpbin.org/ip")?
            .json::<HashMap<String, String>>()?;
        println!("{:#?}", resp);
        Ok(())
    }

Проекты на Swift

  1. MonitorControl

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

    MonitorControl
  2. SwiftMessages

    Гибкая библиотека уведомлений для iOS. Компонент на Swift отображает сообщения сверху, снизу или по центру экрана и предлагает готовые макеты и темы оформления.

    // 例化一个消息视图
    let view = MessageView.viewFromNib(layout: .cardView)
    
    // 带有警告样式的主题消息元素
    view.configureTheme(.warning)
    
    // 增加阴影
    view.configureDropShadow()
    
    // 设置消息标题、正文和图标
    let iconText = ["🤔", "😳", "🙄", "😶"].randomElement()!
    view.configureContent(title: "Warning", body: "Consider yourself warned.", iconText: iconText)
    
    // 增加卡片周围的外部边距
    view.layoutMarginAdditions = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
    
    // 显示消息
    SwiftMessages.show(view: view)
    SwiftMessages

Искусственный интеллект

  1. fauxpilot

    Сервис помощи в написании кода по образцу GitHub Copilot для размещения на своём сервере. Использует модель Salesforce CodeGen на NVIDIA Triton Inference Server и подключается к расширению Copilot для VS Code.

  2. mmdetection

    Открытый набор инструментов обнаружения объектов от OpenMMLab. Основан на PyTorch и поддерживает распространённые алгоритмы, включая Faster R-CNN, Mask R-CNN и RetinaNet.

    mmdetection

Прочее

  1. allcontributors.org

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

    allcontributors.org
  2. gibMacOS

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

  3. mackup

    Автоматическая синхронизация настроек приложений. Помогает быстро сохранять и синхронизировать конфигурации программ для macOS и Linux, включая Zsh, Vim, iTerm2 и MySQL. Поддерживает Dropbox, iCloud, Git и другие способы синхронизации.

    # 安装
    brew install mackup
    # 备份
    mackup backup
    # 恢复
    mackup restore
  4. sql-injection-payload-list

    Сборник материалов о SQL-инъекциях. Объясняет принцип работы SQL-инъекций на распространённых примерах и показывает, как находить, эксплуатировать и предотвращать такие уязвимости.

    sql-injection-payload-list
  5. system-design

    Руководство по проектированию систем от основ до собеседования. Начинается с базовых протоколов, затем знакомит с базами данных, очередями сообщений и другими сервисами, а завершается вопросами для собеседований и разбором практических случаев. Материал идёт от простого к сложному и сопровождается схемами.

    system-design

Открытые книги

  1. babel-handbook

    Руководство по Babel. Состоит из двух частей: «Руководство пользователя» об установке и настройке Babel и «Руководство по плагинам» о создании расширений для него.

  2. EffectiveModernCppChinese

    Китайский перевод книги «Эффективный современный C++» (Effective Modern C++). Книга учит писать корректный, быстрый и удобный в сопровождении код на C++; перевод был полностью завершён.

    EffectiveModernCppChinese