Файловый менеджер и терминал в браузере

Выпуск № 83 ·

Проекты на C

  1. sds

    Простая библиотека динамических строк для C. Её написал автор Redis. По сравнению с обычными строками C она удобнее: позволяет получать длину за постоянное время, безопасно работать с двоичными данными, включая изображения и звук, и совместима с частью строковых функций C.

    sds mystring = sdsnew("Hello World!");
    printf("%s\n", mystring);
    sdsfree(mystring);
    
    output> Hello World!
  2. sigma-file-manager

    Современный файловый менеджер. Бесплатную программу поддерживает сообщество разработчиков. Есть умный поиск, настраиваемая главная страница, обмен и загрузка файлов, удобное перетаскивание и защита файлов. Работает в Windows и Linux.

    sigma-file-manager
  3. ttyd

    Консольная утилита для предоставления доступа к терминалу через сеть. Веб-терминал на libuv и WebGL2 прост в установке и использовании, поддерживает SSL, передачу файлов и вывод изображений Sixel. Работает в Windows, macOS, Linux и OpenWrt; подходит для удалённого администрирования и управления устройствами.

    ttyd

Проекты на C#

  1. ambie

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

    ambie
  2. FluentTerminal

    Красивый терминал для Windows. Приложение на UWP позволяет гибко настраивать темы оформления, поддерживает несколько окон, SSH и поиск. Интерфейс доступен на китайском.

    FluentTerminal
  3. gsudo

    Аналог sudo для Windows. Позволяет запускать команды с максимальными правами почти так же, как sudo в Unix и Linux. Поддерживает CMD, PowerShell и git-bash.

    gsudo

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

  1. Clipboard

    Компактная консольная утилита для буфера обмена. Программа на C++ позволяет копировать, вырезать и вставлять данные из любой части терминала почти так же удобно, как в графическом интерфейсе. Работает в Windows, Linux и macOS.

    Clipboard
  2. doctest

    Быстрый фреймворк тестирования C++ в одном заголовочном файле. Лёгок в использовании, быстро работает и сокращает время компиляции. Поддерживает C++11, C++14, C++17 и C++20.

    #define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
    #include "doctest.h"
    
    int factorial(int number) { return number <= 1 ? number : factorial(number - 1) * number; }
    
    TEST_CASE("testing the factorial function") {
        CHECK(factorial(1) == 1);
        CHECK(factorial(2) == 2);
        CHECK(factorial(3) == 6);
        CHECK(factorial(10) == 3628800);
    }
    doctest
  3. pocketpy

    Интерпретатор Python для встраивания в игровые движки. Лёгкая реализация на C++ включает компилятор, виртуальную машину для байткода и интерактивную консоль. Всё находится в одном заголовочном файле pocketpy.h, внешних зависимостей нет; приложение сразу получает возможность выполнять код Python.

    #include "pocketpy.h"
    
    int main(){
        // 创建一个虚拟机
        VM* vm = pkpy_new_vm(true);
    
        // Hello world!
        pkpy_vm_exec(vm, "print('Hello world!')");
    
        // 构建一个列表
        pkpy_vm_exec(vm, "a = [1, 2, 3]");
    
        // 对列表进行求和
        char* result = pkpy_vm_eval(vm, "sum(a)");
        printf("%s", result);   // 6
    
        // 释放资源
        pkpy_delete(result);
        pkpy_delete(vm);
        return 0;
    }
    pocketpy
  4. QGIS

    Свободная настольная ГИС с открытым кодом. Написана на C++, интерфейс построен на Qt. Позволяет визуализировать, редактировать и анализировать геоданные в разных форматах. Работает в Windows, Linux, macOS, BSD и на мобильных устройствах.

    QGIS

Проекты на Go

  1. dragonfly

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

    dragonfly
  2. ghz

    Простая утилита для нагрузочного тестирования gRPC. Консольная программа на Go помогает эффективно проверять gRPC-сервисы и поддерживает настраиваемые параметры.

    ghz
  3. req

    HTTP-клиент для Go с полезной автоматикой. По умолчанию декодирует ответы в UTF-8, чтобы избежать проблем с кодировкой, разбирает их по Content-Type, определяет сервер и выбирает оптимальную версию HTTP, а также повторяет запросы при необходимости. Есть удобные средства отладки.

    package main
    
    import (
        "github.com/imroc/req/v3"
    )
    
    func main() {
        req.DevMode() // Treat the package name as a Client, enable development mode
        req.MustGet("https://httpbin.org/uuid") // Treat the package name as a Request, send GET request.
    
        req.EnableForceHTTP1() // Force using HTTP/1.1
        req.MustGet("https://httpbin.org/uuid")
    }
    req
  4. sqlc

    Генератор типобезопасного кода Go из SQL. Преобразует SQL-запросы в читаемый код для работы с базой данных. Поддерживает MySQL, PostgreSQL и SQLite.

    sqlc
  5. tinykv

    Руководство по созданию распределённой базы данных «ключ — значение». Показывает, как на Go реализовать отказоустойчивое хранилище с горизонтальным масштабированием и распределёнными транзакциями.

Проекты на Java

  1. bt

    Библиотека BitTorrent для Java. Поддерживает DHT, magnet-ссылки и шифрование. На её основе можно создавать собственные инструменты для раздачи и загрузки торрентов.

    // Create a torrent
    Path torrentRoot = Paths.get("/home/torrents/mytorrent");
    Path file1 = Paths.get("/home/torrents/mytorrent/file1.bin");
    Path file2 = Paths.get("/home/torrents/mytorrent/file2.bin");
    Path dirToAdd = Paths.get("/home/torrents/mytorrent/dir_with_files");
    byte[] torrentBytes = new TorrentBuilder()
            .rootPath(torrentRoot)
            .addFiles(file1, file2, dirToAdd)
            .announce("http://example.com/announce")
            .build();
    Files.write(Paths.get("/home/torrents/mytorrent.torrent"), torrentBytes);
    bt
  2. RoaringBitmap

    Сжатые битовые карты для Java. Битовые карты помогают быстро искать элементы в больших наборах данных и удалять дубликаты. RoaringBitmap работает быстрее обычных битовых карт и занимает меньше памяти; его используют, в частности, Spark и Hive.

    import org.roaringbitmap.RoaringBitmap;
    
    public class Basic {
    
      public static void main(String[] args) {
            RoaringBitmap rr = RoaringBitmap.bitmapOf(1,2,3,1000);
            RoaringBitmap rr2 = new RoaringBitmap();
            rr2.add(4000L,4255L);
            rr.select(3); // would return the third value or 1000
            rr.rank(2); // would return the rank of 2, which is index 1
            rr.contains(1000); // will return true
            rr.contains(7); // will return false
    
            RoaringBitmap rror = RoaringBitmap.or(rr, rr2);// new bitmap
            rr.or(rr2); //in-place computation
            boolean equals = rror.equals(rr);// true
            if(!equals) throw new RuntimeException("bug");
            // number of values stored?
            long cardinality = rr.getLongCardinality();
            System.out.println(cardinality);
            // a "forEach" is faster than this loop, but a loop is possible:
            for(int i : rr) {
              System.out.println(i);
            }
      }
    }

Проекты на JavaScript

  1. chatgpt-web

    Демонстрационная веб-страница ChatGPT с настраиваемым API. Создана на Express и Vue 3 для демонстрации GPT-3; поддерживает подключение к API GPT-3 или веб-версии ChatGPT.

    chatgpt-web
  2. illa-builder

    Гибкая платформа для разработки с минимумом кода. Команда из Китая активно поддерживает проект и быстро отвечает на отзывы. Десятки готовых компонентов, включая графики, таблицы и формы, добавляются перетаскиванием. Через графический интерфейс можно подключить базу данных или API и быстро собрать внутреннее приложение. Доступны онлайн-версия, облачный сервис и локальное развёртывание через Docker.

    illa-builder
  3. memos

    Лёгкий и аккуратный сервис для заметок. Приложение на React, Tailwind, TypeScript и Go напоминает минималистичный микроблог. Поддерживает личные и публичные записи, теги, интерактивный календарь и развёртывание через Docker.

    docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos neosmemo/memos:latest
    memos
  4. SingleFile

    Браузерное расширение для сохранения веб-страниц. Одним нажатием собирает текст, изображения и другие элементы страницы в единый HTML-файл. Работает в Chrome, Firefox, Safari и Microsoft Edge.

    SingleFile
  5. zx

    Инструмент для написания shell-скриптов на JavaScript. Поддерживает функции cd, fetch и within, а библиотеки fs, os и yaml доступны без отдельного импорта.

    #!/usr/bin/env zx
    
    await $`cat package.json | grep name`
    
    let branch = await $`git branch --show-current`
    await $`dep deploy --branch=${branch}`
    
    await Promise.all([
      $`sleep 1; echo 1`,
      $`sleep 2; echo 2`,
      $`sleep 3; echo 3`,
    ])
    
    let name = 'foo bar'
    await $`mkdir /tmp/${name}`

Проекты на Kotlin

  1. ReadYou

    RSS-клиент для Android в стиле Material. У него лаконичный интерфейс; можно подписываться на RSS-ленты, получать уведомления об обновлениях и читать в полноэкранном режиме.

    ReadYou

Проекты на Python

  1. eg

    Справочник примеров команд Linux. Показывает распространённые варианты использования команд: короткие, практичные примеры легко найти.

    eg
  2. gel

    База данных с графово-реляционной моделью и открытым кодом. Работает поверх PostgreSQL, сочетая свойства реляционных баз данных с декларативной схемой в духе ORM и глубокими запросами в стиле GraphQL. Веб-интерфейс позволяет редактировать данные, выполнять запросы и визуализировать связи.

    type Person {
      required property name -> str;
    }
    
    type Movie {
      required property title -> str;
      multi link actors -> Person;
    }
    gel
  3. manim

    Фреймворк для математической анимации на Python. Позволяет создавать красивые анимации небольшим количеством кода и наглядно объяснять сложные математические задачи.

    from manim import *
    
    class SquareToCircle(Scene):
        def construct(self):
            circle = Circle()
            square = Square()
            square.flip(RIGHT)
            square.rotate(-3 * TAU / 8)
            circle.set_fill(PINK, opacity=0.5)
    
            self.play(Create(square))
            self.play(Transform(square, circle))
            self.play(FadeOut(square))
    
    # 运行:manim -p -ql example.py SquareToCircle
    manim
  4. sunfish

    Шахматный движок на Python в 131 строку. Консольная игра использует только стандартную библиотеку Python. Код хорошо прокомментирован и разделён на шахматную логику, поиск ходов и пользовательский интерфейс.

    sunfish
  5. xalpha

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

    jiaoyidan = xa.record(path) # 额外一行先读入 path 处的 csv 账单
    shipan = xa.mul(status=jiaoyidan) # Let's rock
    shipan.summary() # 看所有基金总结效果
    shipan.get_stock_holdings() # 查看底层等效股票持仓
    xalpha

Проекты на Rust

  1. lemmy

    Форум для обмена ссылками на Rust. Построен на веб-фреймворке Actix и ORM Diesel. Как и на Hacker News, здесь можно подписываться на темы, публиковать ссылки, обсуждать их и голосовать.

    lemmy
  2. onefetch

    Консольная утилита для просмотра сведений о Git-репозитории. Написана на Rust и показывает в терминале лицензию, число коммитов, статистику кода и другие данные локального репозитория.

    onefetch
  3. windows-rs

    Библиотека Microsoft для вызова Windows API из Rust. Упрощает разработчикам Rust доступ к системным API и работу над приложениями для Windows.

    use windows::{
        core::*, Data::Xml::Dom::*, Win32::Foundation::*, Win32::System::Threading::*,
        Win32::UI::WindowsAndMessaging::*,
    };
    
    fn main() -> Result<()> {
        let doc = XmlDocument::new()?;
        doc.LoadXml(h!("<html>hello world</html>"))?;
    
        let root = doc.DocumentElement()?;
        assert!(root.NodeName()? == "html");
        assert!(root.InnerText()? == "hello world");
    
        unsafe {
            let event = CreateEventW(None, true, false, None)?;
            SetEvent(event).ok()?;
            WaitForSingleObject(event, 0);
            CloseHandle(event).ok()?;
    
            MessageBoxA(None, s!("Ansi"), s!("Caption"), MB_OK);
            MessageBoxW(None, w!("Wide"), w!("Caption"), MB_OK);
        }
    
        Ok(())
    }

Проекты на Swift

  1. Wave

    Библиотека плавных анимаций для Swift. Движок анимации для iOS и macOS не имеет внешних зависимостей и легко подключается к проектам на UIKit, SwiftUI или AppKit.

    if panGestureRecognizer.state == .ended {
    
        // Create a spring with some bounciness. `response` affects the animation's duration.
        let animatedSpring = Spring(dampingRatio: 0.68, response: 0.80)
    
        // Get the gesture's lift-off velocity, and pass it into the Wave animation.
        let gestureVelocity = panGestureRecognizer.velocity(in: view)
    
        Wave.animate(withSpring: animatedSpring, gestureVelocity: gestureVelocity) {
            // Update animatable properties on the view's `animator` property, _not_ the view itself.
            pipView.animator.center = pipViewDestination     // Some target CGPoint that you calculate.
            pipView.animator.scale = CGPoint(x: 1.1, y: 1.1)
        }
    }
    Wave

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

  1. cog

    Инструмент для упаковки моделей машинного обучения в контейнеры. По конфигурации автоматически собирает среду и зависимости модели, избавляя от ручного написания Dockerfile и настройки CUDA. Для вызова модели также запускает HTTP API.

    $ cog build -t my-colorization-model
    --> Building Docker image...
    --> Built my-colorization-model:latest
    
    $ docker run -d -p 5000:5000 --gpus all my-colorization-model
    
    $ curl http://localhost:5000/predictions -X POST \
        -H 'Content-Type: application/json' \
        -d '{"input": {"image": "https://.../input.jpg"}}'
  2. stable-diffusion-webui

    Веб-интерфейс для Stable Diffusion. Позволяет использовать модель в браузере: генерировать изображения по тексту или картинке, работать с текстовыми эмбеддингами и менять размер изображений.

    stable-diffusion-webui

Прочее

  1. blurhash

    Алгоритм и реализации для создания заглушек изображений с открытым кодом. Кодирует картинку в строку длиной всего 20–30 символов; при декодировании получается размытая заглушка на основе оригинала, улучшающая восприятие загрузки. Есть официальные реализации на C, Swift и TypeScript, а также много сторонних библиотек.

    blurhash
  2. esp32-weather-epd

    Самодельный погодный экран на электронных чернилах. Устройство состоит из микроконтроллера ESP32 с Wi-Fi и дисплея E Ink диагональю 7,5 дюйма. Показывает текущую погоду и прогноз из API, а также температуру и влажность в помещении по данным датчиков.

    esp32-weather-epd
  3. localsend

    Открытая альтернатива AirDrop. Безопасно передаёт файлы и сообщения между устройствами поблизости через локальную сеть, без интернета и внешнего сервера. Поддерживает Windows, Linux, macOS, Android и iOS.

    localsend
  4. mactype

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

    mactype
  5. raft.github.io

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

    raft.github.io

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

  1. algorithmica

    «Алгоритмы для современного оборудования» (Algorithmica). Книга российской некоммерческой образовательной организации Tinkoff Generation, подготовившей около половины финалистов российской олимпиады по информатике. Исследователи и студенты найдут в ней практические способы ускорить программы.

    algorithmica
  2. comprehensive-rust

    «Всесторонний курс Rust» (Comprehensive Rust). Четырёхдневный курс команды Android в Google: от базового синтаксиса Rust до обобщений и обработки ошибок. Последний день посвящён разработке для Android.

  3. scientific-visualization-book

    «Научная визуализация: Python и Matplotlib» (Scientific Visualization: Python + Matplotlib). Книга с открытым кодом состоит из четырёх частей: основы Matplotlib, практическая разработка, продвинутые темы — 3D-графика, оптимизация и анимация — и галерея примеров.

    scientific-visualization-book