VuePress, Airflow и инструменты для разработчиков

Выпуск № 25 ·

Проекты на C

  1. swipe-workspace

    Управление рабочими столами Linux жестами двумя пальцами на базе libinput. Программа переключает экраны свайпами по сенсорной панели. Возможности пока скромные, а поддержка ограничена одной платформой, но самостоятельная реализация полезной функции приносит особое удовлетворение.

    swipe-workspace

Проекты на CSS

  1. tabler

    Бесплатный open-source шаблон панели управления на базе Bootstrap 4.

    tabler

Проекты на Go

  1. mqant

    Лаконичный и производительный распределённый фреймворк игровых серверов на Go. В руководстве по быстрому старту автор также объясняет выбор Go и некоторые архитектурные решения.

Проекты на JavaScript

  1. battle-city

    Классическая игра Battle City на React — её можно запустить онлайн. Все желающие могут присоединиться к разработке и отправить свой код в проект.

    battle-city
  2. gcoord

    Лёгкая JS-библиотека для работы с географическими координатами. Из-за особенностей регулирования геоданных в Китае координаты из API могут отображаться на картах Baidu или Amap со смещением в несколько сотен метров. gcoord преобразует координаты между системами и исправляет это смещение. Пример преобразования в систему координат Baidu Maps:

    var result = gcoord.transform(
        [ 116.403988, 39.914266 ],    // 经纬度坐标
        gcoord.WGS84,                 // 当前坐标系
        gcoord.BD09                   // 目标坐标系
    );
    
    console.log( result );  // [ 116.41661560068297, 39.92196580126834 ]
  3. SVG-Skeleton

    Описание заглушек скелетного экрана с помощью SVG-элементов. Поддерживает JSX для привычной записи SVG, повторное использование SVG-фрагментов и компоненты в виде классов. Интерфейс становится удобнее, подход соответствует современным тенденциям, а размер в 2 КБ почти не влияет на загрузку. Пример:

    import SVGSkeleton from 'svg-skeleton';
    
    const { h, render } = SVGSkeleton;
    
    // 内置 #shining 动画
    const Item = (
        <svg width="750" height="191">
            <circle cx="95" cy="102" r="63" fill="#edeff0" mask="url(#shining)" ></circle>
            <rect width="160" height="35" x="190" y="45" fill="#edeff0" mask="url(#shining)" ></rect>
            <rect width="400" height="35" x="190" y="90" fill="#edeff0" mask="url(#shining)" ></rect>
            <line x1="0" y1="190" x2="750" y2="190" stroke="#edeff0"></line>
        </svg>
    );
    
    const Page = ( ( ) => {
        let List = [ ];
    
        for ( let i = 0; i < 6; i++ ) {
            List.push( ( <Item y={ i == 0 ? 0 : i * 191 } ></Item> ) );
        }
    
        return (
            <svg width="750" height="1334" fill="#fafafa">
                { List }
            </svg>
        );
    } )( );
    
    render( Page,  document.body );
    SVG-Skeleton
  4. vuepress

    Официальный генератор статических сайтов от Vue. Похоже, пришло время обновить личные блоги. Доступна официальная документация на китайском.

    vuepress
  5. zan-proxy

    Набор инструментов для перенаправления HTTP-запросов, имитации ответов и настройки собственного DNS. Позволяет отлаживать локальный код на опубликованных страницах, не завися от окружения. Для разработчиков с неудобной средой разработки это настоящее облегчение.

    zan-proxy

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

  1. RDM

    Утилита для удобного изменения разрешения Retina-дисплея MacBook.

    RDM

Проекты на Python

  1. airflow

    Платформа для управления заданиями по расписанию. Управляет и планирует различные фоновые периодические задачи, а также предоставляет веб-интерфейс. Когда число таких задач достигает сотни, эффективно и удобно управлять ими через crontab уже не получается — эту проблему и решает проект.

    airflow
  2. pook

    Библиотека для имитации ответов на HTTP-запросы, полезная, например, в модульных тестах. Пример вызова с помощью декораторов:

    import pook
    import requests
    
    @pook.get('http://httpbin.org/status/500', reply=204)
    @pook.get('http://httpbin.org/status/400', reply=200)
    def fetch(url):
        return requests.get(url)
    
    res = fetch('http://httpbin.org/status/400')
    print('#1 status:', res.status_code)
    
    res = fetch('http://httpbin.org/status/500')
    print('#2 status:', res.status_code)
  3. Synonyms

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

    import synonyms
    synonyms.seg("能量")
    Synonyms
  4. wtfpython

    Коллекция интересных, неожиданных и малоизвестных фрагментов кода на Python. Доступен перевод на китайский.

    wtfpython

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

  1. pytorch-book

    Примеры кода из книги «Фреймворк глубокого обучения PyTorch: введение и практика». Материалы можно использовать как самостоятельное вводное руководство и учебник по PyTorch. Структура содержания показана на изображении ниже.

    pytorch-book

Прочее

  1. javascript-lessons

    Учебник «JavaScript: прохождение уровней», в некоторых главах которого предусмотрены тщательно продуманные испытания.

  2. linux-insides

    Устройство ядра Linux изнутри. Доступен перевод на китайский.

  3. open-source-mac-os-apps

    Англоязычная коллекция open-source приложений для macOS с указанием языка программирования каждого из них.

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

  1. advanced-go-programming-book

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

  2. modern-cpp-tutorial

    Книга «Быстрый старт с C++ 11/14/17». Перед чтением стоит учитывать следующее:

    1. Книга рассчитана на читателей, которые уже знакомы с классическим C++ и без труда читают код на нём. Она особенно подойдёт опытным разработчикам на классическом C++, желающим быстро разобраться в возможностях современного C++.
    2. В книге рассматриваются некоторые приёмы «магии» современного C++, но лишь в ограниченном объёме. Она предназначена для быстрого знакомства и не подойдёт тем, кто ищет углублённый курс. Впрочем, опытные читатели смогут с её помощью повторить материал и проверить свои знания современного C++.