Игровая мини-консоль и трёхмерное портфолио

Выпуск № 59 ·

Проекты на C

  1. TIC-80

    Эмулятор и движок ретро-игр. TIC-80 работает на Windows, Linux, macOS и других популярных платформах. Он не только запускает множество небольших ретро-игр, но и позволяет создавать собственные: поддерживает несколько языков программирования и включает редакторы карт и звука. Настоящий «волшебный мини-компьютер» из прошлого.

    TIC-80

Проекты на C#

  1. tilt-brush

    Открытый VR-инструмент для рисования от Google. Позволяет создавать всевозможные работы в виртуальном трёхмерном пространстве и поддерживает популярные VR-устройства.

    tilt-brush

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

  1. winmerge

    Инструмент для сравнения и слияния файлов в Windows, написанный на C++. Сравнивает файлы и папки, наглядно показывает различия между двумя и даже тремя версиями и прост в использовании.

    winmerge

Проекты на Go

  1. bild

    Библиотека алгоритмов обработки изображений, целиком написанная на Go. Пример кода:

    package main
    
    import (
        "github.com/anthonynsimon/bild/effect"
        "github.com/anthonynsimon/bild/imgio"
        "github.com/anthonynsimon/bild/transform"
    )
    
    func main() {
        img, err := imgio.Open("input.jpg")
        if err != nil {
            fmt.Println(err)
            return
        }
    
        inverted := effect.Invert(img)
        resized := transform.Resize(inverted, 800, 800, transform.Linear)
        rotated := transform.Rotate(resized, 45, nil)
    
        if err := imgio.Save("output.png", rotated, imgio.PNGEncoder()); err != nil {
            fmt.Println(err)
            return
        }
    }
  2. darwinkit

    Go-библиотека с обёртками для API Apple и macOS. С ней приложение «Помодоро» для строки меню macOS можно написать менее чем в 80 строках кода — посмотреть исходный код.

    darwinkit
  3. gin-vue-admin

    Панель администрирования на Gin и Vue. Название сразу объясняет назначение проекта. Автор также подготовил бесплатные обучающие видео — хороший вариант для тех, кто ищет практический проект на Go.

    gin-vue-admin
  4. pyroscope

    Открытая платформа непрерывного профилирования в реальном времени на Go. Достаточно добавить в исходный код несколько строк, чтобы pyroscope помог найти проблемы с производительностью и причины высокой загрузки CPU, а затем показал результаты на множестве графиков и в деревьях вызовов. Поддерживает Go, Python и Ruby; есть описание на китайском.

    pyroscope

Проекты на Java

  1. dbeaver

    Настольный инструмент для управления популярными базами данных. Написан на Java и работает с любой БД, для которой существует JDBC-драйвер. У проекта есть бесплатная Community Edition и платная Enterprise Edition, но возможностей бесплатной версии большинству пользователей вполне достаточно.

    dbeaver
  2. fizz-gateway-node

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

    fizz-gateway-node
  3. jsoup

    Java-библиотека для загрузки и разбора HTML. Она уже хорошо известна, а разобраться с ней настолько просто, что достаточно взглянуть на пример кода.

    Document doc = Jsoup.connect("https://en.wikipedia.org/").get();
    log(doc.title());
    Elements newsHeadlines = doc.select("#mp-itn b a");
    for (Element headline : newsHeadlines) {
      log("%s\n\t%s", 
        headline.attr("title"), headline.absUrl("href"));
    }
  4. Recaf

    Редактор байт-кода Java. Позволяет работать с байт-кодом почти как с обычным исходным кодом. Если тема вам незнакома, сначала стоит изучить материалы по байт-коду, а уже затем экспериментировать с проектом.

    Recaf
  5. Sa-Token

    Лёгкий Java-фреймворк для аутентификации и управления правами. Прост в освоении и расширении, быстро решает задачи входа в систему, проверки прав, управления сессиями и другие связанные с доступом вопросы. Пример кода:

    // 在登录时写入当前会话的账号 ID 
    StpUtil.setLoginId(10001);  
    
    // 然后在任意需要校验登录处调用以下 API:如果当前会话未登录
    // 这句代码会抛出 `NotLoginException` 异常
    StpUtil.checkLogin();   
    
    // 还有以下功能
    StpUtil.logoutByLoginId(10001);     // 让账号为 10001 的会话注销登录(踢人下线)
    StpUtil.hasRole("super-admin");     // 查询当前账号是否含有指定角色标识, 返回 true 或 false
    StpUtil.setLoginId(10001, "PC");        // 指定设备标识登录
    StpUtil.logoutByLoginId(10001, "PC");   // 指定设备标识进行强制注销 (不同端不受影响)
    StpUtil.switchTo(10044);                // 将当前会话身份临时切换为其它账号

Проекты на JavaScript

  1. folio-2019

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

    folio-2019
  2. instant.page

    JavaScript-библиотека, ускоряющая загрузку страниц с помощью предварительной загрузки. Работает на компьютерах и мобильных устройствах: начинает загружать страницу при наведении указателя на ссылку на компьютере или при появлении ссылки на экране смартфона. Благодаря этому после нажатия страница открывается быстрее. Для подключения достаточно добавить на сайт фрагмент HTML-кода.

    <script src="//instant.page/5.1.0" type="module" integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
    instant.page
  3. majestic

    Удобный и красивый графический интерфейс для JavaScript-фреймворка тестирования Jest. Тесты писать необходимо, а приятный интерфейс запуска хотя бы немного облегчает работу над модульными тестами.

    majestic
  4. monitor

    Лёгкая фронтенд-библиотека для сбора действий пользователей и ошибок на странице. По словам сопровождающего проекта, платформа для просмотра данных и серверная часть пока не открыты: компания ещё выбирает лицензию. Возможности клиентской части:

    • Отправка ошибок запросов и кода.
    • Сбор данных о нажатиях и переходах пользователей.
    • Поддержка React, Vue и мини-приложений WeChat.
    monitor
  5. node-jvm

    Реализация JVM на Node.js. Код проекта прост и понятен, а в каталоге examples есть примеры запуска Java-кода и все необходимые файлы.

    node-jvm

Проекты на PHP

  1. actionview

    Открытая платформа для отслеживания задач и требований, похожая на Jira. Фронтенд построен на React и Redux, а серверная часть — на PHP-фреймворке Laravel.

    actionview

Проекты на Python

  1. alive-progress

    Новая эффектная полоса прогресса для Python. Поддерживает Python 2.7–3.8. Пример кода:

    # 安装:pip install alive-progress
    from alive_progress import alive_bar
    
    with alive_bar(total) as bar:  # declare your expected total
        for item in items:         # iterate as usual over your items
            ...                    # process each item
            bar()                  # call after consuming one item
    alive-progress
  2. blind_watermark

    Python-библиотека для добавления скрытых водяных знаков на изображения. Такой знак незаметен глазу и извлекается программно: это невидимая «печать» для поиска источника утечек и защиты авторских прав. Библиотеку выпустила команда безопасности Alibaba. Её сильные стороны:

    • Для извлечения знака не требуется исходное изображение.
    • Обрезка и поворот изображения не уничтожают скрытый знак.
    • Поддерживается шифрование паролем.
    from blind_watermark import WaterMark
    
    bwm_obj = WaterMark(password_wm=1, password_img=1)
    # 原图
    bwm_obj.read_img('pic/原图.jpg')
    # 水印图
    bwm_obj.read_wm('pic/水印.png')
    # 打水印后的图
    bwm_obj.embed('output/结果.png')
    # 注意需要设定水印的长宽 wm_shape
    bwm_objextract(filename='output/结果.png', wm_shape=(120, 120), out_wm_name='output/解出的水印.png', )
    blind_watermark
  3. PyG2Plot

    Библиотека визуализации для Python 3, оборачивающая G2Plot. G2Plot — открытая библиотека визуальной аналитики от Ant Group, основанная на классификации диаграмм и включающая более 25 распространённых типов. Python-обёртка проста и готова к работе сразу после установки.

    from pyg2plot import Plot
    
    line = Plot("Line")
    
    line.set_options({
      "height": 400, # set a default height in jupyter preview
      "data": [
        { "year": "1991", "value": 3 },
        { "year": "1992", "value": 4 },
        { "year": "1993", "value": 3.5 },
        { "year": "1994", "value": 5 },
        { "year": "1995", "value": 4.9 },
        { "year": "1996", "value": 6 },
        { "year": "1997", "value": 7 },
        { "year": "1998", "value": 9 },
        { "year": "1999", "value": 13 },
      ],
      "xField": "year",
      "yField": "value",
    })
    
    line.render_notebook()
    PyG2Plot
  4. requests-html

    Удобная Python-библиотека для разбора HTML. При создании парсеров обычно используют BeautifulSoup, lxml или селекторы Scrapy, но теперь есть ещё один вариант — requests-html. Она поддерживает XPath, CSS-селекторы, динамические страницы и фильтрацию содержимого, а освоить её очень легко. Автор HelloGitHub использовал библиотеку в своём парсере Hydra, и разбирать HTML стало гораздо проще. Примеры полезных функций:

    # 找出元素下的所有链接
    about.absolute_links
    {'http://brochure.getpython.info/', 'https://www.python.org/about/quotes/', 'https://www.python.org/about/help/'}
    # 匹配内容
    >>> r.html.search('Python is a {} language')[0]
    programming
    # 直接提取属性的值
    >>> about.attrs
    {'id': 'about', 'class': ('tier-1', 'element-1'), 'aria-haspopup': 'true'}
    # 呈现加载 JS 后的动态内容
    r.html.render()
  5. vcrpy

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

    @vcr.use_cassette('fixtures/vcr_cassettes/synopsis.yaml')
    def test_iana():
        response = urllib2.urlopen('http://www.iana.org/domains/reserved').read()
        assert 'Example domains' in response

Проекты на Swift

  1. Maccy

    Лёгкий менеджер буфера обмена для macOS. Хранит историю скопированных данных, поддерживает быстрый поиск и выбор записей горячими клавишами.

    Maccy
  2. SQLite.swift

    Лёгкий фреймворк для SQLite3, целиком написанный на Swift. Цепочки вызовов делают управление базой данных лаконичным и выразительным. Код легко понять, а выполнять запросы можно даже без знания SQL.

    import SQLite
    
    let db = try Connection("path/to/db.sqlite3")
    
    let users = Table("users")
    let id = Expression<Int64>("id")
    let name = Expression<String?>("name")
    let email = Expression<String>("email")
    
    try db.run(users.create { t in
        t.column(id, primaryKey: true)
        t.column(name)
        t.column(email, unique: true)
    })
    
    // CREATE TABLE "users" (
    //     "id" INTEGER PRIMARY KEY NOT NULL,
    //     "name" TEXT,
    //     "email" TEXT NOT NULL UNIQUE
    // )

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

  1. avatarify-python

    Инструмент для замены лица в реальном времени во время видеоконференций. Модель машинного обучения отслеживает движения лица, совмещает их с изображением и выводит результат без задержки. Поддерживает OBS, Zoom, Skype, Teams, Slack и другие программы для трансляций и конференций.

    avatarify-python

Прочее

  1. AndroidSDK

    Docker-образ с полноценным окружением Android SDK. Подходит для разных сценариев непрерывной интеграции Android: запуска приложений в эмуляторе, автоматизированного тестирования интерфейса и подключения к облачным сервисам тестирования. Это один из вариантов контейнеризации сборки Android, не нарушающий лицензионное соглашение; проект представляли на официальной конференции DockerCon EU 2017.

    AndroidSDK
  2. awesome-macos-command-line

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

  3. coding-fonts

    Минималистичный сайт с описаниями и демонстрацией шрифтов для программирования. Попробовать онлайн.

    coding-fonts
  4. computer-science

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

    computer-science
  5. data-engineer-roadmap

    Карта обучения для инженера данных.

    data-engineer-roadmap
  6. docker-curriculum

    Учебник по Docker для начинающих. Читать онлайн.

    docker-curriculum
  7. github1s

    Инструмент для быстрого чтения кода проектов GitHub в онлайн-версии VS Code. Если GitHub или клонирование репозитория работают медленно, добавьте 1s после github в адресе проекта — код откроется в браузере без ожидания.

    github1s
  8. qwerty-learner

    Удобный и увлекательный сайт для запоминания слов во время тренировки печати. Многие интуитивно считают, что умеющий забивать сверху хорошо играет в баскетбол, а быстро печатающий силён в программировании. Если верить такой логике, проект поможет и выучить слова, и стать сильнее в программировании.

    qwerty-learner