Контейнер на C и музыка по текстовому промпту

Выпуск № 89 ·

Проекты на C

  1. barco

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

    $ sudo ./bin/barco -u 0 -m / -c /bin/sh -a . [-v]
    
    22:08:41 INFO  ./src/barco.c:96: initializing socket pair...
    22:08:41 INFO  ./src/barco.c:103: setting socket flags...
    22:08:41 INFO  ./src/barco.c:112: initializing container stack...
    22:08:41 INFO  ./src/barco.c:120: initializing container...
    22:08:41 INFO  ./src/barco.c:131: initializing cgroups...
    22:08:41 INFO  ./src/cgroups.c:73: setting memory.max to 1G...
    22:08:41 INFO  ./src/cgroups.c:73: setting cpu.weight to 256...
    22:08:41 INFO  ./src/cgroups.c:73: setting pids.max to 64...
    22:08:41 INFO  ./src/cgroups.c:73: setting cgroup.procs to 1458...
    22:08:41 INFO  ./src/barco.c:139: configuring user namespace...
    22:08:41 INFO  ./src/barco.c:147: waiting for container to exit...
    22:08:41 INFO  ./src/container.c:43: ### BARCONTAINER STARTING - type 'exit' to quit ###
    
    # ls
    bin         home                lib32       media       root        sys         vmlinuz
    boot        initrd.img          lib64       mnt         run         tmp         vmlinuz.old
    dev         initrd.img.old      libx32      opt         sbin        usr
    etc         lib                 lost+found  proc        srv         var
    # echo "i am a container"
    i am a container
  2. quake2-rerelease-dll

    Исходный код официального переиздания Quake II. Классический шутер от первого лица студии id Software вышел в 1997 году; здесь опубликован код версии, заново выпущенной в 2023 году.

    quake2-rerelease-dll
  3. trurl

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

    trurl

Проекты на C#

  1. GeekDesk

    Компактный запускатель программ для Windows. Бесплатная утилита «Гик-десктоп» с минималистичным интерфейсом ищет файлы по всему диску, вызывается одним действием и позволяет задать обои и напоминания по расписанию.

    GeekDesk
  2. Starward

    Открытый запускатель игр miHoYo. Поддерживает все компьютерные игры студии: загрузку, учёт времени в игре, смену аккаунтов, сохранение истории получения персонажей и предметов и инструменты сообщества HoYoLAB. Работает в Windows 10 и новее.

    Starward

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

  1. implot

    Библиотека интерфейса для графиков в реальном времени. Расширение Dear ImGui обновляет графики при действиях пользователя и поступлении данных, поддерживает ускорение на GPU, разные виды и комбинирование графиков. Для встраивания визуализации хватает небольшого объёма кода.

    int   bar_data[11] = ...;
    float x_data[1000] = ...;
    float y_data[1000] = ...;
    
    ImGui::Begin("My Window");
    if (ImPlot::BeginPlot("My Plot")) {
        ImPlot::PlotBars("My Bar Plot", bar_data, 11);
        ImPlot::PlotLine("My Line Plot", x_data, y_data, 1000);
        ...
        ImPlot::EndPlot();
    }
    ImGui::End();
    implot
  2. wslg

    Запуск графических приложений Linux в Windows. Открытый проект Microsoft обеспечивает естественную работу таких программ, включая копирование и вставку между приложениями Windows и Linux. WSLg встроен в Windows 10 и более новые версии и запускается командой wsl.

    wslg

Проекты на Go

  1. etree

    Лёгкая библиотека XML для Go без лишних структур. Стандартная библиотека Go требует описывать вложенные структуры данных для XML. Вдохновлённая Python ElementTree библиотека etree позволяет гибко читать и создавать XML-документы без определения структур.

    doc := etree.NewDocument()
    doc.CreateProcInst("xml", `version="1.0" encoding="UTF-8"`)
    doc.CreateProcInst("xml-stylesheet", `type="text/xsl" href="style.xsl"`)
    
    people := doc.CreateElement("People")
    people.CreateComment("These are all known people")
    
    jon := people.CreateElement("Person")
    jon.CreateAttr("name", "Jon")
    
    sally := people.CreateElement("Person")
    sally.CreateAttr("name", "Sally")
    
    doc.Indent(2)
    doc.WriteTo(os.Stdout)
  2. golang-design-pattern

    Примеры паттернов проектирования на Go. Автор законспектировал китайскую книгу «Разбираем паттерны проектирования» и реализовал на Go все 23 описанных в ней паттерна.

  3. ls-lint

    Проверка правил именования файлов и каталогов. Быстрый линтер на Go с небольшим числом зависимостей настраивается через YAML: можно задать правила и исключения. Подходит для Git hooks, GitHub Actions и образов Docker.

    ls:
      .js: snake_case
      .ts: snake_case | camelCase
      .d.ts: PascalCase
      .html: regex:[a-z0-9]+
    
    ignore:
      - node_modules
    ls-lint
  4. webp_server_go

    Готовый сервер для преобразования изображений в WebP. Написанный на Go сервис без доработок превращает JPG, PNG, BMP, SVG и другие форматы в WebP — формат Google для ускорения загрузки картинок. Это уменьшает размер файлов и расход трафика.

    webp_server_go

Проекты на Java

  1. Jailer

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

    Jailer
  2. OneAccount

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

    OneAccount
  3. triplea

    Пошаговая военная настольная игра на Java. Бесплатная игра с открытым кодом позволяет разыгрывать сражения Второй мировой и Наполеоновских войн. Работает в Windows, Linux и macOS.

    triplea

Проекты на JavaScript

  1. biomes-game

    Открытая браузерная песочница MMORPG. Компания Global Illumination, позже приобретённая OpenAI, создала многопользовательскую игру на React, Next.js, TypeScript и WebAssembly. В ней можно исследовать мир, строить дома, торговать и общаться — без установки, прямо в браузере.

    biomes-game
  2. docsify

    Генератор сайта документации без сборки. Позволяет опубликовать документы сразу после написания, без отдельного этапа сборки. Есть полнотекстовый поиск, собственные темы оформления, богатый API и поддержка эмодзи.

    docsify
  3. poster-design

    Онлайн-редактор изображений и плакатов. Инструмент на Vue 3, Vite 2, Vuex и Element Plus помогает создавать картинки для интернет-магазинов, длинные иллюстрации к статьям, обложки видео и публикаций в WeChat.

    poster-design
  4. warriorjs

    Ролевая игра для изучения JavaScript. Командами на JavaScript игрок ведёт воина в бой, спасает пленников и поднимается по башне к легендарному мечу JavaScript.

    warriorjs
  5. WeHalo

    Блог в формате мини-приложения WeChat. Проект использует серверную часть Halo и переносит статьи в WeChat. Поддерживает личную карточку, публикации, комментарии, поиск и настройку панели навигации.

    WeHalo

Проекты на Python

  1. DrissionPage

    Автоматизация браузера и веб-запросов на Python. Инструмент, похожий на Selenium, работает с браузерами на Chromium и объединяет управление страницей с отправкой запросов в едином простом API.

    # 下载星巴克产品图
    from DrissionPage import SessionPage
    from re import search
    
    # 以s模式创建页面对象
    page = SessionPage()
    # 访问目标网页
    page.get('https://www.starbucks.com.cn/menu/')
    
    # 获取所有class属性为preview circle的元素
    divs = page.eles('.preview circle')
    # 遍历这些元素
    for div in divs:
        # 用相对定位获取当前div元素后一个兄弟元素,并获取其文本
        name = div.next().text
    
        # 在div元素的style属性中提取图片网址并进行拼接
        img_url = div.attr('style')
        img_url = search(r'"(.*)"', img_url).group(1)
        img_url = f'https://www.starbucks.com.cn{img_url}'
    
        # 执行下载
        page.download(img_url, r'.\imgs', rename=name)
  2. learndb-py

    Реляционная база данных с нуля на Python. Учебный проект помогает понять внутреннее устройство баз данных и потренироваться в реализации; для рабочего использования он не предназначен.

  3. nvitop

    Мониторинг GPU NVIDIA и процессов в стиле top. Цветной интерфейс обновляет сведения об устройствах и процессах в реальном времени, поддерживает фильтрацию, управление мышью и отправку сигналов.

    nvitop
  4. upiano

    Электронное пианино в терминале. Небольшое приложение легко установить и запустить; играть можно с клавиатуры или мышью.

    upiano
  5. watchgha

    Состояние GitHub Actions прямо в консоли. Одна команда показывает в реальном времени ход workflow для текущей ветки.

    watchgha

Проекты на Ruby

  1. OpenFarm

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

    OpenFarm

Проекты на Rust

  1. rjvm

    Учебная мини-JVM на Rust. В проекте, реализующем JVM 7, уже работают базовые типы Java, обработка исключений, трассировка стека, сборка мусора и разбор файлов .class.

  2. starship

    Лёгкое и быстрое приглашение командной оболочки. Программа на Rust работает с разными оболочками, готова к использованию сразу после установки и гибко настраивает вид промпта. Поддерживает Windows, Linux, Android и macOS.

    starship

Проекты на Swift

  1. Mist

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

    Mist
  2. SkeletonView

    Библиотека Swift для экранов загрузки. Пока данные страницы загружаются, скелетный экран показывает её примерную структуру. Библиотека проста в освоении, имеет удобный API, работает со всеми UIView и поддерживает собственную анимацию.

    SkeletonView

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

  1. audiocraft

    Генерация музыки и звука по тексту от Meta. Открытая библиотека создаёт качественное аудио по промпту: например, свист на ветру или танцевальную поп-музыку для пляжной сцены.

    audiocraft
  2. Fooocus

    Готовая программа генерации изображений. Объединяет удачные идеи Stable Diffusion и Midjourney, просто устанавливается и избавляет от сложной настройки параметров: достаточно ввести промпт. По оценке автора, качество сравнимо с Midjourney. Работает локально и без сети; минимум — 8 ГБ оперативной памяти и видеокарта NVIDIA с 4 ГБ памяти.

    Fooocus
  3. machine-learning-notes

    Курс машинного обучения профессора Иды Сюй. Открытые конспекты и ссылки на видеолекции преподавателя Гонконгского баптистского университета посвящены машинному обучению, вероятностным моделям и глубокому обучению.

    machine-learning-notes

Прочее

  1. beepy

    Карманный компьютер Linux с полноценной клавиатурой. Плата за 79 долларов сочетает клавиатуру BlackBerry, ЖК-экран 400 × 200 и аккумулятор на 2 000 мА·ч. С Raspberry Pi Zero W она превращается в мини-компьютер в духе BlackBerry.

    beepy
  2. cloc

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

    cloc
  3. How-To-Secure-A-Linux-Server

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

  4. linux-tutorial

    Практический учебник по Linux. Вместо энциклопедического охвата здесь собраны повседневные команды, администрирование системы и программ, а также распространённые скрипты оболочки.

  5. weekly

    Еженедельная подборка о заработке на собственных продуктах. Посвящена независимой разработке и способам монетизации проектов.

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

  1. lean-side-bussiness

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

  2. putting-the-you-in-cpu

    Что происходит при запуске программы? Небольшая книга объясняет основы устройства компьютера и операционной системы, в том числе как Linux загружает исполняемый файл.

    putting-the-you-in-cpu
  3. theByteBook

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

    theByteBook
  4. typescript-tutorial

    Курс TypeScript от Жуань Ифэна. Открытый учебник для начинающих объясняет основные понятия и приёмы работы с TypeScript.