Plants vs. Zombies по сети и PaaS-платформа

Выпуск № 64 ·

Проекты на C

  1. X-TRACK

    Велокомпьютер с GPS на открытом коде. У него полный набор функций и аккуратный интерфейс: есть офлайн-карты, отображение маршрута и другие возможности. Смотреть на Bilibili (китайский видеохостинг)

    X-TRACK

Проекты на C#

  1. ToastFish

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

    ToastFish
  2. XboxDownload

    Помощник для загрузки игр на Xbox. Ускоряет загрузку игр и помогает сравнивать цены.

    XboxDownload

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

  1. Plants-vs.-Zombies-Online-Battle

    Сетевая игра Plants vs. Zombies по локальной сети. Обратная разработка и внедрение кода добавляют сетевой режим без исходников игры. После успешной загрузки последний уровень режима головоломок превращается в арену сетевого боя: один игрок расставляет растения для защиты, другой отправляет в атаку зомби. Проект объединяет обратную разработку, C++ и ассемблер и показывает, как расширить игру без доступа к исходному коду. Тем, кому интересна обратная разработка, будет полезно изучить исходники.

    Plants-vs.-Zombies-Online-Battle
  2. xpack

    Библиотека для преобразования структур C++ в JSON, XML и BSON и обратно. Новички в C++ могут на её примере изучить продвинутые приёмы с макросами и базовые варианты SFINAE.

    #include <iostream>
    #include "xpack/json.h" // 包含该头文件
    
    struct User {
        int id;
        std::string name;
        XPACK(O(id, name)); // 添加宏定义XPACK在结构体定义结尾
    };
    
    int main(int argc, char *argv[]) {
        User u;
        string data = "{\"id\":12345, \"name\":\"xpack\"}";
    
        xpack::json::decode(data, u);          // json转结构体
        cout<<u.id<<';'<<u.name<<endl;
    
        string json = xpack::json::encode(u);  // 结构体转json
        cout<<json<<endl;
        return 0;
    }

Проекты на CSS

  1. normalize.css

    Библиотека CSS для нормализации стилей браузера. У одного и того же элемента в разных браузерах могут отличаться стандартные параметры, например цвет подчёркивания ссылки. В отличие от reset-подхода, который сбрасывает стили, normalize.css решает эту задачу мягче и эффективнее, помогая одному CSS-файлу одинаково и корректно выглядеть в разных браузерах.

    normalize.css

Проекты на Go

  1. dtm

    Менеджер распределённых транзакций на Go. Он элегантно решает задачи идемпотентности, пустых компенсаций и зависших транзакций в микросервисной архитектуре, предлагая простое, быстрое и горизонтально масштабируемое решение. Клиенты доступны также для Python, PHP, Node.js и других языков.

      // 具体业务微服务地址
      const qsBusi = "http://localhost:8081/api/busi_saga"
        req := &gin.H{"amount": 30} // 微服务的载荷
        // DtmServer为DTM服务的地址,是一个url
        saga := dtmcli.NewSaga("http://localhost:8080/api/dtmsvr").
            // 添加一个TransOut的子事务,正向操作为url: qsBusi+"/TransOut", 补偿操作为url: qsBusi+"/TransOutCompensate"
            Add(qsBusi+"/TransOut", qsBusi+"/TransOutCompensate", req).
            // 添加一个TransIn的子事务,正向操作为url: qsBusi+"/TransOut", 补偿操作为url: qsBusi+"/TransInCompensate"
            Add(qsBusi+"/TransIn", qsBusi+"/TransInCompensate", req)
        // 提交saga事务,dtm会完成所有的子事务/回滚所有的子事务
      err := saga.Submit()
    dtm
  2. erda

    Универсальная PaaS-платформа для компаний. Мультиоблачная архитектура на базе Kubernetes с DevOps, ориентированным на приложения, и управлением микросервисами упрощает разработку, сопровождение, мониторинг и диагностику сложных систем. Платформа снижает сложность обслуживания разрозненных инструментов, технологической основы и облачных площадок, а интерфейс у неё аккуратный и простой.

    erda
  3. goim

    Лёгкий высокопроизводительный сервис мгновенных сообщений и push-уведомлений с поддержкой кластеров. Написан целиком на Go; поддерживает широковещательные сообщения, рассылку по комнатам, проверку безопасности и несколько протоколов. Для асинхронной доставки сообщений используется Kafka.

    goim
  4. hugo

    Генератор статических сайтов на Go. Он собирает HTML-страницы и CSS из локальных файлов с контентом, после чего готовые страницы можно загрузить на сервер. Такие инструменты помогают быстро запустить сайт: выбрав подходящую тему, автор может сосредоточиться на материалах. Hugo — один из самых популярных генераторов такого типа; у него много плагинов и тем, поэтому даже без опыта программирования можно быстро сделать блог или сайт.

    hugo
  5. TopList

    Агрегатор главных новостей и трендов с разных сайтов. Посмотреть онлайн

    TopList

Проекты на Java

  1. dataease

    Открытый инструмент для визуализации и анализа данных на стеке Spring Boot и Vue.js. Разнообразные графики помогают наглядно представить данные.

    • Подключение к данным: реляционные БД, файлы Excel, платформы больших данных вроде Hadoop, NoSQL и другие источники.
    • Отображение графиков: поддерживаются компьютеры, мобильные устройства и большие экраны.
    • Создание графиков: широкий выбор типов диаграмм и быстрая сборка дашбордов перетаскиванием.
    • Движок данных: прямое подключение и локальный режим.
    dataease
  2. guava

    Набор сторонних библиотек для Java с открытым кодом от Google. В нём собраны готовые утилиты для коллекций, ввода-вывода, кэширования, многопоточности и других задач; их можно подключить к любому Java-приложению. Исходный код проекта Google также полезен для изучения.

  3. Mybatis-PageHelper

    Универсальный плагин пагинации для MyBatis, как пользоваться

Проекты на JavaScript

  1. 50projects50days

    Подборка из 50 небольших фронтенд-проектов на HTML, CSS и JS. В каждом есть исходники веб-страницы и демонстрация результата; это проекты начального уровня с открытым кодом. Новичкам они помогут увидеть, чем интересен фронтенд, а простой код снизит порог входа. И даже опытных разработчиков результат какой-нибудь страницы может приятно удивить.

    50projects50days
  2. etherpad

    Редактор форматированного текста WYSIWYG с совместной работой в реальном времени.

    etherpad
  3. gogocode

    Инструмент для упрощённой работы с абстрактным синтаксическим деревом JavaScript (AST). Он использует подходы, знакомые по синтаксису jQuery, и идею построения AST из строк, снижая порог изучения и сложность разработки. На его основе команда проекта выпустила плагин для миграции с Vue 2 на Vue 3.

    gogocode
  4. rubick

    Модульный набор инструментов с плагинами на базе Electron. Автор проекта пользовался uTools, но тот был закрытым, а ещё ему нужно было подключить внутренние инструменты компании — так появился Rubick (Рубик). Он реализует большую часть возможностей uTools, совместим со множеством его плагинов с открытым кодом и позволяет запускать нужные инструменты по мере необходимости.

    rubick
  5. sjcl

    Криптографическая библиотека для JavaScript с открытым кодом от Стэнфордского университета. Она компактна и поддерживает разные алгоритмы шифрования и расшифровки данных.

    sjcl.encrypt("password", "data") //加密数据
    sjcl.decrypt("password", "encrypted-data") //解密数据

Проекты на Kotlin

  1. thunderbird-android

    Почтовый клиент с открытым кодом для Android.

    thunderbird-android

Проекты на Python

  1. bigdata_analyse

    Подборка практических проектов по анализу больших данных. Здесь есть примеры анализа данных с Taobao (китайский маркетплейс), рынка аренды жилья и вакансий; к ним прилагаются код на Python, SQL и HQL и ссылки на наборы данных. Всё готово для обучения — осталось приступить.

    bigdata_analyse
  2. JDMemberCloseAccount

    Практический проект по автоматизации действий в Selenium из Python. На примере автоматического отказа от участия в программах лояльности магазинов JD.com разбираются основы Python-автоматизации и варианты её реализации.

    JDMemberCloseAccount
  3. OnlineJudge

    Открытая система онлайн-проверки решений (OJ) от Циндаоского университета, реализованная на Django и Vue.js. Возможности:

    • Развёртывание одной командой с помощью Docker.
    • Два режима соревнований: ACM и OI; проверка решений в реальном времени и с задержкой.
    • Наглядные графики, которые помогают быстро разобраться в результатах.
    • Поддержка C/C++, Java, Python 2 и 3.
    • Ограничение IP-адресов участников (CIDR ranges).
    OnlineJudge
  4. Pillow

    Самая популярная библиотека обработки изображений для Python. Pillow появилась, поскольку PIL давно не обновлялась и с 2011 года перестала поддерживаться: энтузиасты открытого кода создали Pillow на её основе. Библиотека поддерживает множество форматов и предлагает широкие возможности обработки изображений, поэтому это отличный выбор для работы с картинками в Python.

    # 安装:pip install pillow
    # 注意安装的版本,不同版本支持的 Python 版本也不同
    
    from PIL import Image
    # 打开 jpg 图像文件
    im = Image.open('hellogithub.jpg')
    # 转换成黑白图像
    grayscale = tatras.convert('L')
    # 展示图像
    grayscale.show()
    Pillow
  5. tqsdk-python

    Фреймворк для алгоритмической торговли на Python с открытым кодом. Небольшого объёма кода достаточно, чтобы написать торговую программу; доступны исторические и актуальные данные, тестирование стратегий, торговля на реальном рынке и графический интерфейс. Бесплатная версия показывает актуальные котировки всех фьючерсов, товарных и финансовых опционов, а также индексов SSE 50, CSI 300 и CSI 500. Платная версия охватывает больше инструментов и обеспечивает более стабильный сервис.

    from tqsdk import TqApi, TqAuth, TqAccount, TargetPosTask
    
    api = TqApi(TqAccount("H海通期货", "4003242", "123456"), auth=TqAuth("信易账户", "账户密码"))      # 创建 TqApi 实例, 指定交易账户
    q_1910 = api.get_quote("SHFE.rb1910")                         # 订阅近月合约行情
    t_1910 = TargetPosTask(api, "SHFE.rb1910")                    # 创建近月合约调仓工具
    q_2001 = api.get_quote("SHFE.rb2001")                         # 订阅远月合约行情
    t_2001 = TargetPosTask(api, "SHFE.rb2001")                    # 创建远月合约调仓工具
    
    while True:
      api.wait_update()                                           # 等待数据更新
      spread = q_1910.last_price - q_2001.last_price        # 计算近月合约-远月合约价差
      print("当前价差:", spread)
      if spread > 250:
        print("价差过高: 空近月,多远月")
        t_1910.set_target_volume(-1)                              # 要求把1910合约调整为空头1手
        t_2001.set_target_volume(1)                               # 要求把2001合约调整为多头1手
      elif spread < 200:
        print("价差回复: 清空持仓")                               # 要求把 1910 和 2001合约都调整为不持仓
        t_1910.set_target_volume(0)
        t_2001.set_target_volume(0)
    tqsdk-python

Проекты на Swift

  1. firefox-ios

    Исходный код браузера Firefox для iOS.

    firefox-ios
  2. SwifterSwift

    Библиотека более чем с 500 расширениями для Swift. В ней собраны дополнительные функции, удобный синтаксис, типы данных, расширения UIKit и более производительные классы Cocoa. Она помогает разрабатывать на Swift быстрее и подходит для iOS, macOS, tvOS и других систем.

    // 原来使用 UIAlertController 实现提醒的代码如下:
    let alert = UIAlertController(title: "测试", message: "HelloGitHub", preferredStyle: .alert)
    let okAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
    
    alert.addAction(okAction)
    present(alert, animated: true, completion: nil)
    
    // 改成 SwifterSwift 后:
    let alert = UIAlertController(title: "测试", message: "HelloGitHub")
    alert.show()
    SwifterSwift

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

  1. DouZero_For_HappyDouDiZhu

    ИИ-помощник для карточной игры «Весёлый Доу-ди-чжу» на основе открытого фреймворка обучения с подкреплением от Kuaishou (китайская платформа коротких видео).

    DouZero_For_HappyDouDiZhu
  2. HyperLPR

    Открытый фреймворк для распознавания китайских автомобильных номеров. Его можно вызывать из Python, Android, C++ и других сред; подключение несложное, точность высокая. Подойдёт для задач распознавания номерных знаков.

    HyperLPR
  3. insightface

    Библиотека для анализа лиц в 2D и 3D на Python. Работает на PyTorch и MXNet и использует современный метод распознавания лиц ArcFace для быстрого обнаружения и распознавания.

    insightface
  4. Statistical-Learning-Method_Code

    Реализация на Python алгоритмов из книги «Метод статистического обучения» (Tongji Xuexi Fangfa).

Прочее

  1. adarkroom

    «Тёмная комната» — увлекательная текстовая приключенческая игра. Она поддерживает китайский язык и работает в браузере, на iOS и Android. В браузере прогресс автоматически сохраняется локально, а сохранения можно импортировать и экспортировать. Небольшое предупреждение: поначалу игра может показаться непонятной, поскольку события запускаются не сразу. Читайте появляющийся текст, нажмите «Подбросить дров» и подождите около 30 секунд. Если вам нравятся игры с постепенным развитием, она придётся вам по вкусу. Попробовать онлайн

    adarkroom
  2. developer-roadmap

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

    developer-roadmap
  3. elasticsearch-dump

    Утилита для импорта и экспорта данных Elasticsearch, подходит для резервного копирования и переноса данных.

  4. freeCodeCamp

    Сообщество с открытым кодом для бесплатного изучения программирования. С 2014 года оно помогло множеству людей освоить программирование; сайт на китайском запустился в 2021 году. freeCodeCamp предлагает проходить интерактивные онлайн-задания и получать помощь от активного сообщества. Новичкам советуют больше писать и запускать код, придерживаясь подхода RSA: сначала читать документацию, затем искать ответ в поисковике и только потом, если другие способы не помогли, задавать вопрос. Такая привычка помогает научиться задавать хорошие вопросы и пригодится на всю жизнь. Некоммерческая организация предоставляет бесплатные курсы и публикует исходный код сайта.

    freeCodeCamp
  5. git-split-diffs

    Консольная утилита для наглядного просмотра изменений в коде. Стандартный вывод git diff в терминале бывает трудно читать; инструмент показывает изменения в стиле сайта GitHub и предлагает несколько тем оформления.

    git-split-diffs
  6. hyper

    Стильный терминал на базе Electron. Внешний вид важен и при выборе инструментов: Hyper работает в Windows, Linux и macOS. Попробуйте — он сделает терминал стильным, не умаляя его возможностей.

    hyper
  7. nocodb

    Открытый инструмент для создания умных таблиц. Сначала можно принять nocodb за настольный менеджер баз данных, но его возможности шире: он представляет данные из баз, изображения и другие материалы в виде таблиц, поддерживает командную работу, подключение рабочих процессов и открытый API. Команда может работать с данными в удобном формате, держа их под рукой. Это открытая альтернатива Airtable — сочетанию электронной таблицы и базы данных.

    nocodb

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

  1. CheatSheetSeries

    Сборник шпаргалок OWASP по безопасности веб-приложений. Эксперты сообщества собрали распространённые угрозы и способы защиты, чтобы укрепить ваши веб-приложения. Читать онлайн

    CheatSheetSeries
  2. http-api-guide

    «Руководство по проектированию HTTP API» содержит рекомендации по созданию веб-API.

  3. understand_linux_process

    Книга «Понимание процессов Linux».