tmux и детектор лиц весом 1 МБ

Выпуск № 43 ·

Проекты на C

  1. tmux

    Терминальный мультиплексор, который заметно повышает эффективность работы.

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

Проекты на C#

  1. BenchmarkDotNet

    Мощная библиотека для бенчмаркинга .NET.

    BenchmarkDotNet

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

  1. CppCon2019

    Коллекция слайдов и сопутствующих материалов конференции C++ 2019.

  2. CppNet

    Многопоточная сетевая библиотека на основе паттерна Proactor, работающая поверх TCP. В ней реализованы вызовы интерфейсов ОС, обработка обратных вызовов, таймеры, управление кешем и другие механизмы. Библиотека охватывает все детали сетевого взаимодействия от операционной системы до прикладного уровня, поэтому подходит начинающим для учёбы и практики.

    • Простота: наружу выведен минимум интерфейсов, объявления которых похожи на системный socket API. Для клиентского кода добавлен лишь один тип buffer.
    • Скорость: для обработки событий используются производительные epoll и IOCP, а проблему «громоподобного стада» решает ядро. У каждого соединения есть собственный пул памяти, память из которого управляется умными указателями.
    • Понятная структура: библиотека разделена на три слоя — обработка событий, управление сессиями и интерфейсы; уведомления передаются вверх через обратные вызовы. Обязанности модулей чётко разграничены, а крупнейший класс содержит не более 500 строк кода.
  3. dbg-macro

    Журналирование — один из основных способов отладки C++. dbg-macro вдохновлён макросом rust-lang dbg и предлагает более удобную макрофункцию, чем printf и std::cout. Основные возможности:

    • Красивый цветной вывод с автоматическим отключением цвета вне интерактивного терминала.
    • Совместимость с C++11 и поставка в виде header-only библиотеки.
    • Вывод базовых типов и контейнеров STL.
    • Вывод имени и типа переменной вместе с основной информацией.
    • Создание release-сборки при включённом DBG_MACRO_DISABLE.
    #include <vector>
    #include <dbg.h>
    
    // You can use "dbg(..)" in expressions:
    int factorial(int n) {
      if (dbg(n <= 1)) {
        return dbg(1);
      } else {
        return dbg(n * factorial(n - 1));
      }
    }
    
    int main() {
      std::string message = "hello";
      dbg(message);  // [example.cpp:15 (main)] message = "hello" (std::string)
      const int a = 2;
      const int b = dbg(3 * a) + 1;  // [example.cpp:18 (main)] 3 * a = 6 (int)
      std::vector<int> numbers{b, 13, 42};
      dbg(numbers);  // [example.cpp:21 (main)] numbers = {7, 13, 42} (size: 3) (std::vector<int>)
      dbg("this line is executed");  // [example.cpp:23 (main)] this line is executed
      factorial(4);
      return 0;
    }
    dbg-macro

Проекты на Go

  1. bigcache

    Высокопроизводительная библиотека на Go для больших кешей. Результаты тестов на Ubuntu 18.04 LTS с процессором i7-6700K 4,00 ГГц и 32 ГБ оперативной памяти:

    go version
    go version go1.13 linux/amd64
    
    cd caches_bench; go test -bench=. -benchmem -benchtime=4s ./... -timeout 30m
    goos: linux
    goarch: amd64
    pkg: github.com/allegro/bigcache/v2/caches_bench
    BenchmarkMapSet-8                       12999889           376 ns/op         199 B/op          3 allocs/op
    BenchmarkConcurrentMapSet-8              4355726          1275 ns/op         337 B/op          8 allocs/op
    BenchmarkFreeCacheSet-8                 11068976           703 ns/op         328 B/op          2 allocs/op
    BenchmarkBigCacheSet-8                  10183717           478 ns/op         304 B/op          2 allocs/op
    BenchmarkMapGet-8                       16536015           324 ns/op          23 B/op          1 allocs/op
    BenchmarkConcurrentMapGet-8             13165708           401 ns/op          24 B/op          2 allocs/op
    BenchmarkFreeCacheGet-8                 10137682           690 ns/op         136 B/op          2 allocs/op
    BenchmarkBigCacheGet-8                  11423854           450 ns/op         152 B/op          4 allocs/op
    BenchmarkBigCacheSetParallel-8          34233472           148 ns/op         317 B/op          3 allocs/op
    BenchmarkFreeCacheSetParallel-8         34222654           268 ns/op         350 B/op          3 allocs/op
    BenchmarkConcurrentMapSetParallel-8     19635688           240 ns/op         200 B/op          6 allocs/op
    BenchmarkBigCacheGetParallel-8          60547064            86.1 ns/op       152 B/op          4 allocs/op
    BenchmarkFreeCacheGetParallel-8         50701280           147 ns/op         136 B/op          3 allocs/op
    BenchmarkConcurrentMapGetParallel-8     27353288           175 ns/op          24 B/op          2 allocs/op
    PASS
    ok      github.com/allegro/bigcache/v2/caches_bench 256.257s
  2. go-admin

    Платформа на Go для визуализации данных и создания панелей администрирования. Основные возможности:

    • Высокая продуктивность: красивую панель администрирования можно собрать за 10 минут.
    • Темы: по умолчанию используется adminlte, а другие темы находятся в разработке; авторы ждут отзывов.
    • Плагины: если одного плагина недостаточно, можно использовать два.
    • Аутентификация: готовая к работе система RBAC.
    • Поддержка фреймворков: подключается к большинству фреймворков, упрощая освоение и расширение.
    go-admin
  3. pacgo

    Терминальная игра Pac-Man, написанная на Go.

    pacgo
  4. RedisShake

    Открытый инструмент Alibaba для синхронизации данных Redis. Схема работы приведена ниже:

    RedisShake
  5. zerolog

    Быстрая библиотека, созданная специально для вывода журналов в формате JSON. С zerolog больше не придётся разбирать журналы с нерегулярной структурой. Также есть менее производительный режим с красивым выводом в консоль. Пример кода:

    package main
    
    import (
        "github.com/rs/zerolog"
        "github.com/rs/zerolog/log"
    )
    
    func main() {
        zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
    
        log.Info().Msg("hello world")
    }
    
    // Output: {"time":1516134303,"level":"info","message":"hello world"}
    zerolog

Проекты на Java

  1. AutoUpdateProject

    Простая в использовании и подключении библиотека для онлайн-обновления Android-приложений с несколькими вариантами интерфейса. Пример кода:

    //更新库配置
    UpdateConfig updateConfig = new UpdateConfig()
            .setDebug(true)//是否是Debug模式
            .setBaseUrl("http://www.cretinzp.com/system/versioninfo")//当 dataSourceType 为 DATA_SOURCE_TYPE_URL 时,配置此接口用于获取更新信息
            .setMethodType(TypeConfig.METHOD_GET)//当 dataSourceType 为 DATA_SOURCE_TYPE_URL 时,设置请求的方法
            .setDataSourceType(TypeConfig.DATA_SOURCE_TYPE_URL)//设置获取更新信息的方式
            .setShowNotification(true)//配置更新的过程中是否在通知栏显示进度
            .setNotificationIconRes(R.mipmap.download_icon)//配置通知栏显示的图标
            .setUiThemeType(TypeConfig.UI_THEME_AUTO)//配置 UI 的样式,一种有 12 种样式可供选择
            .setRequestHeaders(null)//当 dataSourceType 为 DATA_SOURCE_TYPE_URL 时,设置请求的请求头
            .setRequestParams(null)//当 dataSourceType 为 DATA_SOURCE_TYPE_URL 时,设置请求的请求参数
            .setCustomActivityClass(CustomActivity.class)//如果你选择的 UI 样式为 TypeConfig.UI_THEME_CUSTOM,那么你需要自定义一个 Activity 继承自 RootActivity 并参照 demo 实现功能,在此处填写自定义 Activity 的 class
            .setModelClass(new UpdateModel());
    AppUpdateUtils.init(this, updateConfig);
    AutoUpdateProject
  2. eladmin

    Система администрирования с разделёнными фронтендом и бэкендом на Spring Boot 2.1.0 и Vue. Поддерживает справочники и управление правами на данные, генерацию кода фронтенда и бэкенда одним действием, динамическую маршрутизацию меню и другие функции. В технологический стек входят нереляционная база данных Redis, инструмент тестирования API Swagger, источник данных Druid, библиотека для электронной почты javax.mail, SDK сторонних платёжных и облачных сервисов, а также шаблонизатор Freemarker. Разнообразный стек делает проект полезным практическим пособием для начинающих.

    eladmin
  3. spring-analysis

    Разбор исходного кода фреймворка Spring. Охватывает spring-core, spring-aop, spring-context, spring-task, spring-mvc и другие компоненты.

Проекты на JavaScript

  1. chart-race-react

    Простой и удобный React-компонент для анимации Bar Chart Race — гонки столбчатых диаграмм. Пример кода:

    import ReactDOM from 'react-dom';
    import BarChart from 'chart-race-react';
    
    ReactDOM.render(<BarChart />, document.getElementById('root'));
    chart-race-react
  2. fiora

    Многофункциональный онлайн-чат с поддержкой разных платформ. У него лёгкий и аккуратный интерфейс, а к базовым возможностям чата добавлено озвучивание сообщений. Проект написан на TypeScript и React 16.9, отличается понятной логикой и подробными комментариями, поэтому подходит для изучения Node.js, TypeScript, React и других технологий.

    fiora
  3. nzh

    JS-библиотека для преобразования арабских чисел в китайскую запись и обратно. Пример кода:

    var nzhcn = Nzh.cn;                 // 使用简体中文,  另外有 Nzh.hk -- 繁体中文
    nzhcn.encodeS(100111);              // 转中文小写 >> 十万零一百一十一
    nzhcn.encodeB(100111);              // 转中文大写 >> 壹拾万零壹佰壹拾壹
    nzhcn.encodeS("1.23456789e+21");    // 科学记数法字符串 >> 十二万三千四百五十六万万七千八百九十万亿
    nzhcn.toMoney("100111.11");         // 转中文金额 >> 人民币壹拾万零壹佰壹拾壹元壹角壹分
  4. request

    Простой и удобный HTTP-клиент для JavaScript. Пример кода:

    const request = require('request');
    request('https://hellogithub.com', function (error, response, body) {
      console.error('error:', error); // 如果请求发生错误将被打印
      console.log('statusCode:', response && response.statusCode); // 输出返回的状态码
      console.log('body:', body); // 输出返回的 HTML 
    });
  5. SandDance

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

    SandDance

Проекты на Python

  1. RPA-Python

    Библиотека для автоматизации действий с помощью Python. Например, она может автоматически открыть веб-страницу и сделать снимок экрана:

    t.init()
    t.url('https://www.google.com')
    t.type('q', 'decentralization[enter]')
    t.snap('page', 'results.png')
    t.close()
    RPA-Python

Проекты на Ruby

  1. shift

    Онлайн-инструмент миграции баз данных MySQL, написанный на Ruby.

    shift

Проекты на Swift

  1. Percentage

    Добавляет в Swift тип для процентов и устраняет проблемы с потерей точности. Пример кода:

    import Percent
    
    10% + 5.5%
    //=> 15.5%
    -10% / 2
    //=> -5%

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

  1. dimensionality_reduction_alo_codes

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

    dimensionality_reduction_alo_codes
  2. Ultra-Light-Fast-Generic-Face-Detector-1MB

    Лёгкая модель обнаружения лиц размером 1 МБ. Она предназначена для устройств периферийных вычислений и построена на основе libfacedetection с заменой исходной сети на сжатую архитектуру.

    Ultra-Light-Fast-Generic-Face-Detector-1MB

Прочее

  1. Administrative-divisions-of-China

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

  2. BigData-Notes

    Вводное руководство по большим данным. Оно знакомит с основами и ключевыми понятиями распространённых технологий: Hadoop, Spark, Storm, HBase, Hive, ZooKeeper, Kafka и других.

  3. cascadia-code

    Открытый моноширинный шрифт Microsoft. Его интересная особенность — объединение символов в новые глифы. Результат показан ниже:

    cascadia-code
  4. curlconverter

    Инструмент преобразует команды curl в код на разных языках, включая Python, JavaScript, PHP, R и Go. Попробовать онлайн

  5. hub

    Консольная утилита для работы с GitHub, которая поддерживает большинство операций: создание и удаление удалённых репозиториев, отправку pull request, управление issue и многое другое. Частые команды:

    • Создать удалённый репозиторий: hub create github-repository.
    • Удалить удалённый репозиторий: hub delete github-repository.
    • Создать форк проекта: hub fork.
    hub
  6. vim-airline

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

    vim-airline

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

  1. book

    Книга на английском языке «Космический Python» (Cosmic Python) о том, как организовать приложения в духе Python и управлять их сложностью.