Motrix, Neovim и миллион соединений WebSocket

Выпуск № 35 ·

Проекты на C#

  1. IdentityServer4.Admin

    Бесплатная панель администрирования с открытым кодом для IdentityServer4 и Asp.Net Core Identity. Официальная панель IdentityServer4 платная, а этот проект служит полноценной альтернативой и позволяет удобно управлять сервером аутентификации на базе IdentityServer4.

    IdentityServer4.Admin

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

  1. FLIF

    Бесплатный современный формат изображений со сжатием без потерь. По степени сжатия превосходит PNG, lossless WebP, lossless BPG, lossless JPEG2000 и другие форматы.

Проекты на Go

  1. 1m-go-websockets

    Сервер на Go, способный поддерживать более миллиона WebSocket-соединений при потреблении менее 1 ГБ оперативной памяти. Скрипт setup.sh создаёт WebSocket-клиенты, а destroy.sh удаляет их.

  2. cds

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

    cds
  3. docui

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

    # Homebrew
    $ brew tap skanehira/docui
    $ brew install docui
    
    # go get
    $ go get -d github.com/skanehira/docui
    $ cd $GOPATH/src/github.com/skanehira/docui
    $ GO111MODULE=on go install
    docui
  4. go-echarts

    Библиотека для генерации интерактивных графиков ECharts из кода на Go. Пример:

    // example.go
    package main
    
    import (
        "log"
        "math/rand"
        "os"
        "time"
    
        "github.com/chenjiandongx/go-echarts/charts"
    )
    
    var nameItems = []string{"衬衫", "牛仔裤", "运动裤", "袜子", "冲锋衣", "羊毛衫"}
    var seed = rand.NewSource(time.Now().UnixNano())
    
    func randInt() []int {
        cnt := len(nameItems)
        r := make([]int, 0)
        for i := 0; i < cnt; i++ {
            r = append(r, int(seed.Int63()) % 50)
        }
        return r
    }
    
    func main() {
        bar := charts.NewBar()
        bar.SetGlobalOptions(charts.TitleOpts{Title: "Bar-示例图"}, charts.ToolboxOpts{Show: true})
        bar.AddXAxis(nameItems).
            AddYAxis("商家A", randInt()).
            AddYAxis("商家B", randInt())
        f, err := os.Create("bar.html")
        if err != nil {
            log.Println(err)
        }
        bar.Render(f)
    }
    go-echarts

Проекты на Java

  1. APIJSON

    Фреймворк для быстрой разработки API. Полностью автоматически создаёт API для простых операций добавления, удаления, изменения и чтения данных, сложных запросов и простых транзакций. Для большинства HTTP-запросов больше не требуется писать серверные методы и документацию. Подходит для небольших и средних проектов с раздельными фронтендом и бэкендом.

    APIJSON
  2. halo

    Система для ведения блогов на Java. Среди множества подобных систем редко встречаются лаконичные и элегантные решения на Java. Проект выделяется быстротой работы и богатой функциональностью. Установка:

    # 安装 Halo
    $ yum install -y wget && wget -O halo-cli.sh https://git.io/fxHqp && bash halo-cli.sh -i
    # 更新 Halo
    $ bash halo-cli.sh -u
    halo
  3. IQL

    Сервис для выполнения нерегламентированных запросов на базе SparkSQL. Основные возможности:

    • Удобное взаимодействие, поддержка разных источников и приёмников данных, а также совместной обработки нескольких источников.
    • Постоянно работающий сервис Spark и автоматическое обнаружение движков на базе ZooKeeper.
    • Параллельное выполнение запросов благодаря работе с несколькими сессиями.
    • И многое другое.
    IQL
  4. SpringBoot-Learning

    Учебное руководство по Spring Boot.

Проекты на JavaScript

  1. ant-design-vue

    Реализация Ant Design для Vue, которую признала официальная команда Ant Design.

  2. Chart.js

    Библиотека визуализации на базе canvas. Подходит для создания простых графиков в H5 и закрывает базовые повседневные задачи визуализации.

    Chart.js
  3. Gitter

    Клиент GitHub в виде мини-приложения. Отличается красивым интерфейсом и подходит для практического изучения интеграции мини-приложений с GitHub.

    Gitter
  4. Motrix

    Бесплатный полнофункциональный менеджер загрузок с открытым кодом. Создан на Vue, Vuex и Element, отличается лаконичным интерфейсом и поддерживает загрузку через BitTorrent и magnet-ссылки. Помогает избавиться от ограничений скорости и всплывающей рекламы, а его стек подходит для изучения разработки настольных приложений.

    • Поддерживает Windows, Linux и macOS.
    • Одновременно загружает до 10 задач.
    • Использует до 64 потоков для одной задачи.
    • Позволяет ограничивать скорость отправки и загрузки данных.
    • При удалении задачи может также удалить связанные файлы.
    • И многое другое.
    Motrix
  5. rainbow

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

    // JS关键字判断
    Rainbow.extend('javascript', [
    
        /**
         * matches $. or $(
         */
        {
            name: 'selector',
            pattern: /\$(?=\.|\()/g
        },
        {
            name: 'support',
            pattern: /\b(window|document)\b/g
        }
    ...

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

  1. iWeChat

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

Проекты на Python

  1. ruia

    Асинхронный фреймворк для веб-скрейпинга на Python 3, построенный на asyncio и aiohttp. Отличается простотой освоения, неблокирующей работой и широкими возможностями расширения. Пример:

    from ruia import TextField, Item, Spider
    
    class HackerNewsItem(Item):
        target_item = TextField(css_select='tr.athing')
        title = TextField(css_select='a.storylink')
    
    
    class HackerNewsSpider(Spider):
        start_urls = ['https://news.ycombinator.com/news?p=1']
    
        async def parse(self, response):
            async for item in HackerNewsItem.get_items(html=response.html):
                yield item
    
    if __name__ == '__main__':
        HackerNewsSpider.start()
    ruia
  2. spug

    Открытая платформа для эксплуатации ИТ-систем на Python и Vue. Раздельные фронтенд и бэкенд упрощают доработку, а распространение в виде Docker-образа — установку и обновление. Поддерживает типовые задачи: управление хостами и расписанием заданий, публикацию и развёртывание, мониторинг и оповещения.

    spug

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

  1. deep-learning-drizzle

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

  2. gpt-2

    Универсальная языковая модель GPT-2 с 1,5 млрд параметров от OpenAI — крупнейшая на момент публикации. Демонстрирует перспективный подход к созданию систем обработки языка, которые учатся выполнять задачи на примерах из естественных данных. Пример:

    export PYTHONIOENCODING=UTF-8
    python3 src/generate_unconditional_samples.py | tee samples
    python3 src/generate_unconditional_samples.py --top_k 40 --temperature 0.7 | tee samples
    python3 src/interactive_conditional_samples.py --top_k 40
  3. stanza

    Официальная библиотека Stanford NLP на Python для разных естественных языков. Включает современный полностью нейросетевой конвейер для общей задачи CoNLL 2018 и пакет для доступа к серверу Stanford CoreNLP на Java. Пример:

    import stanfordnlp
    stanfordnlp.download('en')   # This downloads the English models for the neural pipeline
    nlp = stanfordnlp.Pipeline() # This sets up a default neural pipeline in English
    doc = nlp("Barack Obama was born in Hawaii.  He was elected president in 2008.")
    doc.sentences[0].print_dependencies()
  4. Tensorflow-Cookbook

    Простое и удобное учебное руководство по TensorFlow.

Прочее

  1. devhub

    Клиент для управления уведомлениями GitHub на Android, iOS, Web и настольных компьютерах. Помогает удобно получать, просматривать и обрабатывать сообщения, события и другие обновления GitHub.

    devhub
  2. Micro8

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

  3. neovim

    Редактор, нацеленный на улучшение сопровождаемости и расширяемости Vim. Мощный инструмент с активно развивающимися проектом и сообществом — Vim нового поколения.

    neovim
  4. OI-wiki

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

  5. USTC-Course

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

    USTC-Course

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

  1. cppwasm-book

    Книга «Программирование для WebAssembly на C/C++». Читать онлайн.

  2. d2l-zh

    Перевод книги «Dive into Deep Learning» — «Практическое глубокое обучение». Читать онлайн.

  3. You-Dont-Know-JS

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