Git в терминале и графовая база данных

Выпуск № 29 ·

Проекты на C

  1. libaco

    Быстрая и лёгкая библиотека асимметричных корутин на C. Документация на китайском. Особенности проекта:

    • Библиотека корутин на C для промышленного применения.
    • Реализация ядра занимает менее 700 строк кода и включает все основные функции библиотеки корутин.
    • По результатам теста на AWS c5d.large переключение контекста между корутинами занимает всего 10 нс при раздельных стеках.
    • Десять миллионов одновременно работающих корутин используют лишь 2,8 ГБ физической памяти.
  2. redis-3.0-annotated

    Комментарии к исходному коду Redis 3.0, которые Хуан Цзяньхун написал во время работы над книгой «Проектирование и реализация Redis». Пригодятся тем, кто хочет разобраться в исходниках Redis.

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

  1. BurstLinker

    Кодировщик GIF на C++, созданный прежде всего для Android. Поддерживает распространённые алгоритмы квантования цветов и дизеринга.

Проекты на Go

  1. dgraph

    Бесплатная распределённая графовая база данных с открытым кодом. Для системы связей между пользователями графовая БД может подойти лучше реляционной: по утверждению автора, поиск связанных пользователей через SPARQL бывает в сотни раз быстрее SQL-запроса. В комплекте есть графический интерфейс, импорт RDF и другие необходимые инструменты. Установка: curl https://get.dgraph.io -sSf | bash

    dgraph
  2. git-bug

    Распределённая система учёта и управления ошибками, встроенная в Git. Хранит сведения об ошибках проекта в каталоге .git: после клонирования репозитория они доступны без отдельного хранилища. Основные команды:

    # 安装
    go get github.com/MichaelMure/git-bug
    
    # 创建新 bug
    git bug new
    
    # 把 bug 推送到远程
    git bug push [<remote>]
    
    # 列出现有的 bug
    git bug ls
    git-bug
  3. lazygit

    Git-клиент для терминала. Запускается во много раз быстрее графических клиентов и предлагает почти те же возможности. Установка: go get github.com/jesseduffield/lazygit. Затем запустите lazygit.

    lazygit
  4. rclone

    Аналог rsync на Go. В отличие от rsync, rclone умеет синхронизировать файлы с хранилищами разных облачных сервисов и CDN.

    # 安装
    $ curl https://rclone.org/install.sh | sudo bash
    # 例如同步本地文件夹到 AWS S3 存储桶
    $ rclone sync /home/local/directory remote:bucket

Проекты на Java

  1. CoolViewPager

    Настраиваемый компонент ViewPager. Поддерживает автоматическое циклическое прокручивание в обе стороны с гибкими настройками, обновление интерфейса в реальном времени, настройку краевого эффекта и вертикальное перелистывание. Пример кода:

    public class ActivityEdgeEffectColor extends BaseActivity {
        private CoolViewPager vp;
    
        private void initViewPager(){
            vp = findViewById(R.id.vp);
            vp.setScrollMode(CoolViewPager.ScrollMode.VERTICAL);
            vp.setAutoScroll(true,1000);
            vp.setAutoScrollDirection(CoolViewPager.AutoScrollDirection.BACKWARD);
            vp.setInfiniteLoop(true);
            vp.setScrollDuration(true,600);
            vp.setDrawEdgeEffect(true);
            vp.setEdgeEffectColor(getResources().getColor(R.color.colorPrimary));
        }
    }
    CoolViewPager
  2. FileDownloader

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

    • Многопоточная загрузка одного файла через несколько соединений с разбиением на части.
    • Высокая степень параллелизма.
    • Работа в отдельном процессе или в процессе приложения.
    • Автоматическое возобновление прерванной загрузки.
    FileDownloader
  3. Heart-First-JavaWeb

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

Проекты на JavaScript

  1. hotkeys-js

    Надёжная JavaScript-библиотека для обработки нажатий клавиш и их сочетаний. Не имеет зависимостей, а после сжатия занимает около 3 КБ. Онлайн-демонстрация.

  2. pacman

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

    pacman
  3. react-developer-roadmap

    Схема пути изучения React: показывает, какие темы освоить, чтобы стать React-разработчиком. Есть версия на китайском.

    react-developer-roadmap
  4. react-image-process

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

    import React from "react";
    import ReactDOM from "react-dom";
    import ReactImageProcess from "react-image-process";
    
    const onComplete = data => {
      console.log("data:", data);
    };
    
    ReactDOM.render(
      <ReactImageProcess mode="base64" onComplete={onComplete}>
        <img src="YOUR_IMG_URL" />
      </ReactImageProcess>,
      document.getElementById("root")
    );

Проекты на Objective-C

  1. SBSAnimoji

    Позволяет записывать Animoji длительностью до 60 секунд и сразу делиться записью через кнопку расширения. Подойдёт для изучения AvatarKit.

    SBSAnimoji
  2. SGPlayer

    Фреймворк медиаплеера на базе AVPlayer и FFmpeg. Возможности:

    • Воспроизведение панорамного видео с обзором 360°.
    • Управление обзором 360° с помощью жестов и датчиков.
    • Стереоскопический режим с коррекцией искажений и хроматической аберрации.
    • Поддержка iOS, macOS и tvOS.
    • Аппаратное декодирование H.264 через VideoToolBox.
    • Воспроизведение потокового видео по RTMP, RTSP и другим протоколам.
    • И другие функции.
    SGPlayer

Проекты на Python

  1. FeelUOwn

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

    • Простая установка, удобная для начинающих.
    • В комплекте плагины китайских музыкальных сервисов NetEase Cloud Music, Xiami и QQ Music.
    • Широкие возможности расширения и настройки.
    • Основные модули хорошо документированы и покрыты тестами.
    FeelUOwn
  2. hue

    Система с открытым кодом для работы с Apache Hadoop через веб-интерфейс. Hue позволяет взаимодействовать с кластером Hadoop в браузере, анализировать и обрабатывать данные. Основные функции:

    • Визуализация данных.
    • SQL-редактор с поддержкой Hive, Impala, MySQL и других систем.
    • Редактирование и просмотр рабочих процессов.
    hue
  3. TGmeetup

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

    TGmeetup
  4. tinydb

    Небольшая NoSQL-база данных на чистом Python, которая хранит данные в JSON-файле. Как и SQLite, не требует внешнего сервера, но, в отличие от неё, не использует реляционную модель. Подходит для настольных и клиентских приложений, однако не рассчитана на веб-приложения и высокопроизводительные запросы. Пример простого API:

    >>> from tinydb import TinyDB, Query
    >>> db = TinyDB('path/to/db.json')
    >>> User = Query()
    >>> db.insert({'name': 'John', 'age': 22})
    >>> db.search(User.name == 'John')
    [{'name': 'John', 'age': 22}]
    tinydb

Проекты на Ruby

  1. snibox

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

    snibox

Проекты на Swift

  1. Bartinter

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

    Bartinter

Прочее

  1. chinese-independent-developer

    Список проектов независимых разработчиков из Китая.

  2. Front-End-Performance-Checklist

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

  3. project-based-learning

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

  4. skill-map

    Открытый проект технологического сообщества Geekbang: карты навыков программиста. Участники собирают и систематизируют схемы изучения тем из IT — ИИ, фронтенда, мобильной и серверной разработки, — а также интернет-продуктов, управления ими и их продвижения. Карты помогают выстроить структуру знаний; проект также пытается предложить пути обучения и подборки полезных ресурсов.

  5. system-design-primer

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

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

  1. simple_os_book

    Учебный проект по основам операционных систем и их практической реализации. На базе процессора с архитектурой RISC-V создаётся небольшая, но полнофункциональная операционная система ucore под названием «Воробей».