Игры на любом экране и Game Boy без батареи

Выпуск № 84 ·

Проекты на C

  1. linked-list-good-taste

    Рассуждение Линуса Торвальдса о хорошем стиле кода на примере связного списка. В интервью TED 2016 года он сравнил два способа удаления элемента из односвязного списка. В одном варианте удаление первого элемента требует отдельного случая, в другом — нет. Торвальдсу больше нравится второй.

  2. rpi4-osdev

    Руководство по написанию ОС для Raspberry Pi 4. Технический директор RealVNC показывает, как создать операционную систему непосредственно на устройстве. В 15 главах последовательно реализуются её части; к каждой есть пояснения и исходный код.

    rpi4-osdev
  3. xdotool

    Консольная утилита для имитации действий клавиатуры и мыши. Командами можно вводить текст, нажимать кнопки мыши, перемещать окна, менять их размер и переводить фокус. В сочетании с shell позволяет автоматизировать работу с интерфейсом. Поддерживает Ubuntu, macOS и FreeBSD.

    // 打字
    xdotool type "HelloGitHub"
    // 组合键
    xdotool key ctrl+l
    // 移动鼠标
    xdotool mousemove x y
    // 关闭窗口
    xdotool selectwindow windowclose

Проекты на C#

  1. DnsServer

    DNS-сервер для нескольких платформ. Работает сразу после установки без настройки, предлагает удобный веб-интерфейс и мониторинг. Развёртывается через Docker или запускается в Windows, Linux, macOS и Raspberry Pi OS.

    DnsServer
  2. Flow.Launcher

    Быстрый запуск программ и файлов в Windows. Аналог Alfred для Mac позволяет открывать приложения и искать файлы и закладки. Поддерживает плагины, предпросмотр файлов, системные команды и игровой режим.

    Flow.Launcher
  3. Playnite

    Менеджер компьютерных игр с открытым кодом. Собирает в одном интерфейсе игры из Steam, Epic, GOG, Battle.net и других платформ, автоматически подгружая сведения из IGDB. Открытый исходный код позволяет проверить безопасность учётных записей. Есть китайский и другие языки; работает в Windows 7 и новее.

    Playnite

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

  1. dragonfly

    База данных в памяти, задуманная как замена Redis. API полностью совместимы с Redis и Memcached, поэтому перейти можно без изменения кода. По заявлению разработчиков, один экземпляр обрабатывает миллионы запросов в секунду, обеспечивает пропускную способность в 25 раз выше Redis и работает с наборами данных объёмом в терабайты.

    dragonfly
  2. moonlight-qt

    Инструмент для игры в компьютерные игры почти на любом устройстве. По протоколу NVIDIA GameStream передаёт изображение с ПК на iOS, Android или телевизор, а команды управления — обратно. Игру не нужно загружать и запускать на мобильном устройстве. Настройка потребует времени, но позволит играть в требовательные игры вдали от компьютера.

    moonlight-qt
  3. oceanbase

    Распределённая реляционная база данных из Китая. Корпоративная система Ant Group использует протокол Paxos и распределённую архитектуру. Поддерживает смешанную нагрузку OLTP и OLAP, отличается высокой доступностью, производительностью и горизонтальным масштабированием, совместима с SQL.

    oceanbase
  4. rr

    Лёгкий отладчик C/C++ для Linux. Записывает и воспроизводит выполнение программы, а также позволяет выполнять её в обратном направлении. Повторяемый процесс значительно ускоряет отладку.

Проекты на Go

  1. gorss

    Консольный RSS-клиент на Go. Прост и незаметен в использовании; поддерживает предпросмотр, открытие ссылок в браузере, настройку сочетаний клавиш и темы, а также подсветку слов.

    gorss
  2. gosec

    Инструмент проверки безопасности исходного кода Go. Анализирует AST и обнаруживает, среди прочего, пароли в коде, XSS и SQL-инъекции.

  3. skopeo

    Утилита для управления образами контейнеров в удалённых реестрах. Просматривает сведения об образах, копирует, синхронизирует и удаляет их. Работает с docker.io, quay.io и частными реестрами.

    $ skopeo inspect docker://registry.fedoraproject.org/fedora:latest
    {
        ...
        "Architecture": "amd64",
        "Os": "linux",
        "Layers": [
            "sha256:2a0fc6bf62e155737f0ace6142ee686f3c471c1aab4241dc3128904db46288f0"
        ],
        "LayersData": [
            {
                "MIMEType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
                "Digest": "sha256:2a0fc6bf62e155737f0ace6142ee686f3c471c1aab4241dc3128904db46288f0",
                "Size": 71355009,
                "Annotations": null
            }
        ],
        "Env": [
            "DISTTAG=f37container",
            "FGC=f37",
            "container=oci"
        ]
    }
  4. yaegi

    Интерпретатор Go без внешних зависимостей. Написан целиком на Go и использует только стандартную библиотеку. Предлагает простой API и полностью поддерживает спецификацию языка, включая версии Go 1.18 и 1.19.

    package main
    
    import (
        "github.com/traefik/yaegi/interp"
        "github.com/traefik/yaegi/stdlib"
    )
    
    func main() {
        i := interp.New(interp.Options{})
    
        i.Use(stdlib.Symbols)
    
        _, err := i.Eval(`import "fmt"`)
        if err != nil {
            panic(err)
        }
    
        _, err = i.Eval(`fmt.Println("Hello Yaegi")`)
        if err != nil {
            panic(err)
        }
    }
    yaegi

Проекты на Java

  1. AndroidBitmapMonitor

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

    AndroidBitmapMonitor
  2. frostmourne

    Платформа мониторинга от китайского автомобильного портала Autohome. Построена на Spring Boot, MyBatis и XXL-JOB. Подключается к Elasticsearch, HTTP, Prometheus, MySQL/TiDB и другим источникам; отправляет оповещения через DingTalk, Feishu, SMS и другие каналы.

    frostmourne

Проекты на JavaScript

  1. koishi

    Расширяемый фреймворк для чат-ботов. Консоль управления и каталог плагинов позволяют собрать бота за несколько минут без навыков программирования. Поддерживаются QQ, Telegram, Discord и Feishu.

    koishi
  2. nginx-proxy-manager

    Веб-панель для управления Nginx. Развёртывается через Docker и позволяет настраивать сервер в браузере: проксирование, перенаправления, SSL-сертификаты и дополнительные параметры.

    nginx-proxy-manager
  3. qinglong

    Платформа управления заданиями по расписанию для разных языков. Позволяет редактировать скрипты и переменные среды через браузер, просматривать журналы и задавать расписание с точностью до секунды. Поддерживает Python 3, JavaScript и shell.

    qinglong
  4. snk

    Змейка, которая «съедает» все отметки вашей активности на GitHub. Строит маршрут по графику вкладов и создаёт анимацию в формате GIF или SVG.

    snk
  5. uptime-kuma

    Минималистичный мониторинг доступности сервисов. Красивый интерфейс, развёртывание через Docker, уведомления, несколько страниц статуса и китайская локализация.

    uptime-kuma

Проекты на PHP

  1. dujiaoka

    Система автоматической продажи цифровых товаров на PHP с открытым кодом. Платформа на Laravel и Bootstrap продаёт, например, коды активации и учётные записи и выдаёт их после оплаты. Интегрированы WeChat Pay, Alipay и PayPal.

    dujiaoka

Проекты на Python

  1. bar_chart_race

    Анимированные столбчатые диаграммы на Python. Создаёт «гонку» графиков, в которой столбцы меняют положение согласно рейтингу, наглядно показывая изменение данных во времени.

    bar_chart_race
  2. dataset

    Простая библиотека Python для работы с базами данных. Поверх SQLAlchemy создаёт слой, в котором поиск, запись и обновление данных напоминают работу с JSON-файлом. Поддерживает SQLite, PostgreSQL и MySQL.

    import dataset
    
    db = dataset.connect('sqlite:///:memory:')
    
    table = db['sometable']
    table.insert(dict(name='John Doe', age=37))
    table.insert(dict(name='Jane Doe', age=34, gender='female'))
    
    john = table.find_one(name='John Doe')
  3. GreaterWMS

    Система управления складом с открытым кодом, пригодная для коммерческого использования. В основу положены процессы послепродажной логистики Ford в Азиатско-Тихоокеанском регионе. Есть модули для работы с клиентами, заказами, остатками, поставщиками и инвентаризацией; интерфейс доступен на телефоне и компьютере.

    GreaterWMS
  4. secretflow

    Фреймворк конфиденциальных вычислений от Ant Group. Такие технологии позволяют участникам использовать данные, не раскрывая их друг другу. Проект написан на Python и поддерживает основные подходы: MPC, федеративное обучение (FL), доверенные среды выполнения (TEE), гомоморфное шифрование (HE) и дифференциальную приватность (DP).

    secretflow
  5. shynet

    Минималистичная платформа веб-аналитики. Небольшое и удобное приложение на Django не использует cookie для отслеживания, поддерживает нескольких пользователей, а его скрипт сбора данных занимает менее 1 КБ.

    shynet

Проекты на Rust

  1. carbonyl

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

    carbonyl
  2. lsd

    Обновлённая версия команды ls. Утилита на Rust показывает содержимое каталогов, добавляя цвет и значки.

    lsd
  3. typst

    Язык разметки для вёрстки, который проще освоить, чем LaTeX. Система набора документов отличается лаконичным синтаксисом, красиво выводит формулы и поддерживает разные шрифты.

    typst

Проекты на Swift

  1. DevToysMac

    Набор инструментов разработчика для macOS. Версию DevToys для Mac достаточно скачать и распаковать. В ней есть преобразование временных меток, кодирование и декодирование Base64, форматирование JSON и другие повседневные функции.

    DevToysMac
  2. wikipedia-ios

    Официальное приложение «Википедии» для iOS с открытым кодом. Позволяет искать статьи, просматривать популярные материалы, сохранять их, читать на разных языках и включать ночной режим.

    wikipedia-ios

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

  1. Bringing-Old-Photos-Back-to-Life

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

    Bringing-Old-Photos-Back-to-Life
  2. ChatGLM-6B

    Двуязычная диалоговая модель команды KEG Университета Цинхуа. ChatGLM-6B основана на архитектуре GLM, содержит 6,2 миллиарда параметров и работает с китайским и английским языками. Для инференса достаточно одной видеокарты 2080 Ti.

    >>> from transformers import AutoTokenizer, AutoModel
    >>> tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
    >>> model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
    >>> model = model.eval()
    >>> response, history = model.chat(tokenizer, "你好", history=[])
    >>> print(response)
    你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。
    ChatGLM-6B
  3. DI-engine

    Платформа для создания ИИ, принимающего решения, от OpenDILab. Движок на PyTorch предлагает более 60 алгоритмов и свыше 40 типов сред. Подходит для настройки обучения и прикладных задач, включая игровой ИИ, автономное вождение и прогнозирование биологических последовательностей.

    DI-engine
  4. llama.cpp

    Запуск большой языковой модели LLaMA на ноутбуке. Проект обеспечивает плавную работу модели на CPU в macOS, Linux и Windows.

    llama.cpp

Прочее

  1. .tmux

    Красивый универсальный файл конфигурации tmux. Терминальный мультиплексор с этими настройками выглядит лучше и удобнее в работе; прилагается подробная инструкция по установке.

    .tmux
  2. ark-pixel-font

    Пиксельный шрифт с открытым кодом для китайского, японского и корейского языков. Предназначен для основного текста в играх; сейчас содержит около 10 000 китайских иероглифов размером 12 пикселей.

    ark-pixel-font
  3. bpf-developer-tutorial

    Руководство по разработке на eBPF от основ до продвинутых тем. Использует libbpf и CO-RE — подход «скомпилировать один раз, запускать где угодно». Объясняет базовые понятия, показывает код и практические сценарии через 20 небольших инструментов.

  4. ENGAGE

    Самодельная Game Boy без батареи. Приставка питается от солнца и энергии, получаемой при нажатии кнопок. Запускает «Тетрис» и при отключении питания сохраняет состояние так, что после перезапуска падающий блок остаётся на том же месте. Проект содержит всё необходимое для сборки устройства.

    ENGAGE
  5. GameDevMind

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

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

  1. PPHC

    «Философские принципы высокой нагрузки» (高并发的哲学原理, PPHC). Книга последовательно рассматривает масштабирование веб-сервисов: Apache, Nginx, epoll, сетевые коммутаторы, Kubernetes, базы данных, распределённые системы и микросервисную архитектуру.

  2. py_regular_expressions

    «Регулярные выражения Python: от основ до мастерства» (Python 正则表达式从入门到精通). Книга с сотнями примеров и упражнений охватывает применение регулярных выражений в Python от начального до продвинутого уровня.

    py_regular_expressions