Свой Git-сервер и качественные GIF

Выпуск № 31 ·

Проекты на C

  1. C

    Реализации базовых алгоритмов и структур данных на C. Проект open-source-сообщества TheAlgorithms содержит примеры реализации основных алгоритмов на разных языках программирования.

  2. obs-studio

    Бесплатная программа с открытым кодом для стриминга и записи, которую развивает проект OBS. Поддерживает Windows 7, macOS 10.10 и Ubuntu 14.04. Подходит для прямых трансляций и записи экрана. Скачать.

    obs-studio

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

  1. CppCon2018

    Слайды и материалы конференции CppCon 2018.

Проекты на Go

  1. gitea

    Простой в установке, быстрый и удобный Git-сервис для размещения на своём сервере. Серверная часть написана на Go; поддерживаются Linux, macOS, Windows и другие системы. Доступно онлайн-демо. Установка:

    $ git clone https://github.com/go-gitea/gitea
    $ cd gitea
    $ TAGS="bindata" make generate all
    $ ./gitea web 
  2. thunder

    Реализация протокола Facebook GraphQL на Go. В отличие от более ранних библиотек GraphQL, она умеет с помощью рефлексии и тегов структур автоматически генерировать схему для клиентской части, упрощая разработку. Пример:

    // Friend is a small struct representing a person.
    type Friend struct {
      FirstName string
      Last string `graphql:"lastName"` // use a custom name
    
      Added time.Date `graphql:"-"` // don't expose over graphql
    }
    
    // FullName builds a friend's full name.
    func (f *Friend) FullName() string {
      return fmt.Sprintf("%s %s", f.FirstName, f.Last)
    }
    
    // registerFriend registers custom resolvers on the Friend type.
    //
    // Note: registerFriend wouldn't be necessary if the type only
    // had the default struct field resolvers above.
    func registerFriend(schema *schemabuilder.Schema) {
      object := schema.Object("Friend", Friend{})
    
      // fullName is a computed field on the Friend{} object.
      object.FieldFunc("fullName", Friend.FullName)
    }
  3. wechat-go

    Реализация API веб-версии WeChat на Go. Поддерживает вход в WeChat через браузер, работу с контактами, отправку и получение сообщений, автоматические ответы бота и другие возможности. Фрагмент кода:

    func main() {
        // 创建session, 一个session对应一个机器人
        // 二维码显示在终端上
        session, err := wxweb.CreateSession(nil, nil, wxweb.TERMINAL_MODE)
        if err != nil {
            logs.Error(err)
            return
        }
    
        // 注册插件, 所有插件默认是开启的
        faceplusplus.Register(session)
        replier.Register(session)
        switcher.Register(session)
        gifer.Register(session)
    
        // 你也可以自己选择关闭插件里的handler(消息处理器)
        session.HandlerRegister.DisableByName("faceplusplus")
    
        // 登录并接收消息
        if err := session.LoginAndServe(false); err != nil {
            logs.Error("session exit, %s", err)
        }
    }
  4. wxpay

    SDK для WeChat Pay на Go. Закрывает нехватку Go-инструментов для интеграции платежей WeChat. Поддерживает оплату банковской картой, создание и поиск заказа, отмену и закрытие заказа и другие операции. Пример:

    // 创建支付账户
    account1 := wxpay.NewAccount("appid", "mchid", "apiKey", false)
    account2 := wxpay.NewAccount("appid", "mchid", "apiKey", false)
    // 新建微信支付客户端
    client := wxpay.NewClient(account1)
    // 设置证书
    account.SetCertData("证书地址")
    // 设置支付账户
    client.setAccount(account2)
    // 设置http请求超时时间
    client.SetHttpConnectTimeoutMs(2000)
    // 设置http读取信息流超时时间
    client.SetHttpReadTimeoutMs(1000)
    // 更改签名类型
    client.SetSignType(HMACSHA256)

Проекты на Java

  1. AndroidAutoSize

    Решение для адаптации Android-интерфейсов под разные экраны с очень низким порогом освоения. Его уже используют известные приложения в рабочих версиях.

    AndroidAutoSize
  2. MyPerf4J

    Высокопроизводительный инструмент мониторинга и сбора статистики для Java-приложений с высокой нагрузкой и низкой задержкой. Возможности:

    • Высокая производительность: один поток записывает 10 миллионов измерений времени отклика в секунду, тратя на каждое всего 73 наносекунды.
    • Работа без вмешательства в код: подключается через JavaAgent и не требует изменений в приложении.
    • Низкое потребление памяти: повторно использует выделенную память и за весь жизненный цикл создаёт совсем немного временных объектов, поэтому не мешает сборке мусора.
    • Высокая точность: измеряет время отклика в наносекундах.
    • Мониторинг в реальном времени: минимальный интервал составляет 1 секунду.
    MyPerf4J
  3. XChart

    Лёгкая Java-библиотека для построения графиков. Пример:

    double[] xData = new double[] { 0.0, 1.0, 2.0 };
    double[] yData = new double[] { 2.0, 1.0, 0.0 };
    // Create Chart
    XYChart chart = QuickChart.getChart("Sample Chart", "X", "Y", "y(x)", xData, yData);
    // Show it
    new SwingWrapper(chart).displayChart();
    // Save it
    BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.PNG);
    // or save it in high-res
    BitmapEncoder.saveBitmapWithDPI(chart, "./Sample_Chart_300_DPI", BitmapFormat.PNG, 300);
    XChart

Проекты на JavaScript

  1. 33-js-concepts

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

  2. chrome-plugin-demo

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

  3. d3

    Полное название D3 — Data-Driven Documents. Библиотека предлагает множество простых и удобных функций, которые значительно упрощают работу с данными в JavaScript. Это одна из ключевых технологий для визуализации данных. Доступны вводное руководство и примеры.

  4. TypeScript-React-Starter

    Созданное Microsoft подробное руководство по подготовке шаблона React-проекта на TypeScript с помощью create-react-app. TypeScript добавляет JavaScript строгость типизированного языка, сохраняя его гибкость. React — очень популярный фронтенд-фреймворк, поэтому их сочетание стоит изучить.

Проекты на Python

  1. awslogs

    Простая консольная утилита для локального поиска по журналам Amazon CloudWatch. Умеет объединять для просмотра журналы нескольких экземпляров. Пример команды: awslogs get /var/logs/syslog ALL -s1d

    awslogs
  2. CUP

    CUP — открытая базовая Python-библиотека от Baidu. Она избавляет разработчиков от низкоуровневых и вспомогательных операций, позволяя сосредоточиться на бизнес-логике сервисов.

    Библиотека уже охватывает разные стороны создания сервиса; первое представление о ней можно получить из структуры кода, wiki и документации.

    cup
        |-- cache.py                module              缓存相关模块 ( Memory cache related module )
        |-- decorators.py           module              python 修饰符,比如 @Singleton 单例模式 (Decorators of python)
        |-- err.py                  module              异常 exception 类, Exception classes for CUP
        |-- __init__.py             module              默认__init__.py, Default __init__.py
        |-- log.py                  module              打印日志类,CUP 的打印日志比较简洁、规范,设置统一、简单(cup logging module)
        |-- mail.py                 module              发送邮件 ( CUP Email module (send emails))
        |-- net                     package             网络相关操作( Network operations, such as net handler parameter tuning )
        |-- oper.py                 module              一些混杂操作(Mixin operations)
        |-- platforms.py            module              跨平台、平台相关操作函数(Cross-platform operations)
        |-- res                     package             资源获取、实时用量统计等,所有在 /prco 可获得的系统资源、进程、设备等信息 ( Resource usage queries (in /proc)、Prcoess query、etc )
        |-- shell                   package             命令 Shell 操作 pakcage ( Shell Operations、cross-hosts execution )
        |-- services                package             构建服务支持的类(比如心跳、线程池 based 执行器等等) Heartbeat、Threadpool based executors、file service、etc
        |-- thirdp                  package             第三方依赖纯 Py 模块( Third-party modules:pexpect、httplib2 )
        |-- timeplus.py             module              时间相关的模块(Time related module)
        |-- unittest.py             module              单元测试支持模块( Unittest、assert、noseClass )
        |-- util                    package             线程池、可打断线程、语义丰富的配置文件支持( ThreadPool、Interruptable-Thread、Rich configuration、etc )
        |-- version.py              module              内部版本文件,CUP Version
  3. supervisor

    Клиент-серверный инструмент управления процессами на Python для Linux и Unix; Windows не поддерживается. Он умеет отслеживать, запускать, останавливать и перезапускать один или несколько процессов. Если управляемый процесс аварийно завершится, Supervisor обнаружит это и автоматически запустит его заново. Такое восстановление повышает стабильность системы и сервисов, поэтому инструмент часто используют в продакшене.

Проекты на Swift

  1. Gifski

    Программа с открытым кодом для преобразования серии изображений или видео в высококачественный GIF. Качество результата — её главная особенность; описание охватывает использование программы и её оценку. Gifski работает в Windows, macOS и Linux. Версия для macOS содержит встроенный инструмент извлечения кадров, поэтому видео можно просто перетащить в окно программы. На других платформах сначала придётся разбить видео на кадры сторонней программой, а затем запустить обработку из консоли.

    Gifski

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

  1. nndl

    Курс «Нейронные сети и глубокое обучение» знакомит с основами нейронных сетей и глубокого обучения, главными моделями — в том числе свёрточными и рекуррентными нейросетями — и их применением в компьютерном зрении, обработке естественного языка и других областях. Читать онлайн.

  2. pwc

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

Прочее

  1. puppeteer-api-zh_CN

    Документация Puppeteer на китайском языке, синхронизированная с официальной.

  2. quick-SQL-cheatsheet

    Шпаргалка по SQL. Доступна версия на китайском.

  3. README

    Синтаксис GFM с примерами. GitHub расширил стандартный синтаксис Markdown и назвал получившийся диалект GitHub Flavored Markdown, сокращённо GFM. Удобный README формирует первое впечатление о проекте, поэтому ему стоит уделить внимание.

  4. zh-google-styleguide

    Руководства Google по стилю open-source-проектов на китайском языке.