Предпросмотр файлов и Земля со спутника

Выпуск № 32 ·

Проекты на C

  1. nvtop

    Монитор процессов в стиле (h)top для видеокарт NVIDIA. Отслеживает сразу несколько GPU и выводит сведения о них в привычном формате htop.

    nvtop
  2. os-tutorial

    Англоязычное руководство по созданию операционной системы с нуля.

Проекты на C#

  1. QuickLook

    Быстрый просмотр содержимого файлов в Windows по нажатию пробела — аналог Quick Look из macOS.

    QuickLook

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

  1. oatpp

    Лёгкий и производительный веб-фреймворк без зависимостей, целиком написанный на C++. Пример кода:

    ENDPOINT("GET", "demo/api/json", getJson) {
      auto dto = MyDto::createShared();
      dto->statusCode = 200;
      dto->message = "Hello json";
      return createDtoResponse(Status::CODE_200, dto);
    }
    
    Output:
    {"message": "Hello json", "statusCode": 200}

Проекты на Go

  1. archiver

    Консольная утилита для упаковки и распаковки архивов. Больше не придётся запоминать tar -czvf. Примеры команд:

    # Syntax: arc archive [archive name] [input files...] 压缩
    
    $ arc archive test.tar.gz file1.txt images/file2.jpg folder/subfolder
    
    # Syntax: arc unarchive [archive name] [destination] 解压缩
    
    $ arc unarchive test.tar.gz
  2. athens

    Прокси-сервис для загрузки Go Modules, который решает проблемы с установкой Go-пакетов в Китае. Зависимости больше не помешают спокойно пообедать. Порядок использования:

    $ export GO111MODULE=on
    $ export GOPROXY=http://127.0.0.1:3000
    $ git clone https://github.com/athens-artifacts/walkthrough.git
    $ cd walkthrough
    $ go run .
    go: downloading github.com/athens-artifacts/samplelib v1.0.0
    The 🦁 says rawr!
  3. dive

    Консольная утилита для исследования файловой системы каждого слоя Docker-образа и поиска способов уменьшить его размер. Команда запуска: dive 镜像名.

    dive
  4. go-sniffer

    Сниффер перехватывает сетевые пакеты с запросами к базам данных и Redis, а затем преобразует их в соответствующие выражения. Удобен для отладки: код менять не нужно, утилита напрямую отслеживает запросы проекта. Инструкция:

    =======================================================================
    [使用说明]
    
        go-sniffer [设备名] [插件名] [插件参数(可选)]
    
        [例子]
              go-sniffer en0 redis          抓取redis数据包
              go-sniffer en0 mysql -p 3306  抓取mysql数据包,端口3306
    
        go-sniffer --[命令]
                   --help 帮助信息
                   --env  环境变量
                   --list 插件列表
                   --ver  版本信息
                   --dev  设备列表
        [例子]
              go-sniffer --list 查看可抓取的协议
    
    =======================================================================
    [设备名] : lo0 :   127.0.0.1
    [设备名] : en0 : x:x:x:x:x5:x  192.168.1.3
    [设备名] : utun2 :   1.1.11.1
    =======================================================================
    go-sniffer
  5. soar

    Инструмент для автоматической оптимизации и перезаписи SQL. Улучшает запросы семейства диалектов MySQL и объясняет причины каждой правки. Возможности:

    • Работает на разных платформах.
    • Пока оптимизирует только SQL семейства диалектов MySQL.
    • Поддерживает эвристическую оптимизацию выражений.
    • Оптимизирует многоколоночные индексы в сложных запросах UPDATE, INSERT, DELETE и SELECT.
    • И многое другое.
    echo "select title from sakila.film" | ./soar 
    # Query: 25807E6B94BEA72C
    ★ ★ ★ ★ ☆ 80分
    SELECT
      title
    FROM
      sakila. film
    ##  最外层SELECT未指定WHERE条件
    * **Item:**  CLA.001
    * **Severity:**  L4
    * **Content:**  SELECT语句没有WHERE子句,可能检查比预期更多的行(全表扫描)。对于SELECT COUNT(\*)类型的请求如果不要求精度,建议使用SHOW TABLE STATUS或EXPLAIN替代。
  6. websocketd

    Утилита передаёт вывод консольной программы из stdout и stderr через WebSocket-сервис. Порядок запуска:

    1. Установите утилиту: brew install websocketd.
    2. Создайте count.sh с приведённым ниже содержимым.
    3. Запустите count.sh командой ./count.sh.
    4. Запустите WebSocket-сервер командой websocketd --port=8080 ./count.sh.
    5. Создайте HTML-файл с приведённым ниже кодом.
    6. Откройте count.html и посмотрите результат.
    count.sh 文件内容如下
    
    #!/bin/bash
    for ((COUNT = 1; COUNT <= 3; COUNT++)); do
      echo $COUNT
      sleep 1
    done
    
    count.html 文件内容如下
    
    <!DOCTYPE html>
    <pre id="log"></pre>
    <script>
      // helper function: log message to screen
      function log(msg) {
        document.getElementById('log').textContent += msg + '\n';
      }
    
      // setup websocket with callbacks
      var ws = new WebSocket('ws://localhost:8080/');
      ws.onopen = function() {
        log('CONNECT');
      };
      ws.onclose = function() {
        log('DISCONNECT');
      };
      ws.onmessage = function(event) {
        log('MESSAGE: ' + event.data);
      };
    </script>

Проекты на Java

  1. ratel

    Сетевая консольная версия китайской карточной игры «Борьба с землевладельцем». Ratel состоит из клиента и сервера: можно подключить клиентов друзей к своему серверу или играть через публичный сервер автора.

    ratel
  2. SpiderMan

    Просмотр журналов сбоев Android прямо на мобильном устройстве. Пример кода:

    SpiderMan.init(this)
    //设置回调异常信息,友盟等第三方崩溃信息收集平台会用到,
    .setOnCrashListener(new SpiderMan.OnCrashListener() {
        /**
          *
          * @param t
          * @param ex
          * @param model 崩溃信息记录,包含设备信息
          */
        @Override
        public void onCrash(Thread t, Throwable ex, CrashModel model) {
    
        }
    });
    SpiderMan

Проекты на JavaScript

  1. hexo

    Быстрый, простой и производительный генератор статических блогов на Node.js. С Hexo можно быстро создать статический блог, выбрав дополнения из обширной библиотеки плагинов и оформление из каталога тем. Также можно создать и настроить собственную тему.

  2. picojs

    Библиотека распознавания лиц всего на 200 строках кода. Доступен онлайн-пример.

  3. storybook

    Среда для разработки и тестирования UI-компонентов. Компоненты можно создавать на React, React Native, Vue, Angular и Ember, а многочисленные плагины Storybook помогают в разработке и тестировании. Доступны онлайн-примеры.

  4. three.js

    Известная JavaScript-библиотека для трёхмерной графики. По мере роста популярности визуализации данных и Web AR three.js применяется всё чаще, особенно вместе с Vue и React. На официальном сайте есть множество примеров и полная документация на китайском — хорошая возможность освоить библиотеку на нескольких демопроектах.

    three.js

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

  1. MacPass

    Бесплатный, практичный менеджер паролей с открытым кодом для macOS.

    MacPass

Проекты на Python

  1. himawaripy

    Скрипт на Python 3 периодически загружает снимки Земли почти в реальном времени с японского метеоспутника «Химавари-8» и устанавливает их в качестве обоев рабочего стола. Для регулярного запуска нужно настроить планировщик.

    himawaripy

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

  1. AIAlpha

    Интересный проект, который прогнозирует цены акций с помощью обучения с учителем и без учителя. Порядок запуска:

    git clone https://github.com/VivekPa/AlphaAI.git
    cd AlphaAI
    pip install -r requirements.txt
    python run.py
    AIAlpha
  2. awesome-machine-learning

    Тщательно отобранная коллекция фреймворков, библиотек и программ для машинного обучения.

  3. bert

    Новая модель представления языка — двунаправленные кодировщики на основе Transformer. На момент публикации это была сильнейшая предобученная модель NLP, установившая рекорды в 11 задачах обработки естественного языка.

    bert
  4. deepvariant

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

    deepvariant
  5. fastai

    Упрощает обучение нейросетей с помощью лучших на тот момент алгоритмов глубокого обучения. В комплект входит множество готовых инструментов и поддержка моделей Vision, Collab и других. Пример кода:

    # here's how to train an MNIST model using resnet18
    untar_data(MNIST_PATH)
    data = image_data_from_folder(MNIST_PATH)
    learn = create_cnn(data, tvm.resnet18, metrics=accuracy)
    learn.fit(1)

Прочее

  1. Best-websites-a-programmer-should-visit

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

  2. lemonade-stand

    «Практическое руководство: как заработать на open-source проектах». Китайская версия.

  3. Linux-Tutorial

    Linux глазами Java-программиста.

  4. rootfont

    Коллекция шрифтов для программирования, подходящих разработчикам. В ней уже более 30 необычных гарнитур.

    rootfont
  5. search-engine-optimization

    Англоязычная подборка многочисленных рекомендаций по поисковой оптимизации сайтов.

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

  1. sdn-handbook

    Несмотря на обилие материалов и книг, начать изучать SDN по-прежнему непросто. Проект собирает базовую теорию, практические примеры и опыт работы с SDN, чтобы помочь читателям разобраться в теме.

  2. write-you-a-haskell

    Англоязычная книга «Напишем вам Haskell» (Write You a Haskell).