Визуализация микросервисов и трёхмерная графика в браузере

Выпуск № 40 ·

Проекты на C

  1. SuperWeChatPC

    Расширенный настольный клиент WeChat. Помимо обычной переписки, предлагает дополнительные функции:

    • Неограниченный запуск нескольких экземпляров.
    • Сохранение сообщений после отзыва отправителем.
    • Резервное копирование голосовых сообщений.
    • И другие возможности.

    В репозитории также есть ссылки на статьи о техническом устройстве проекта.

  2. TDengine

    Платформа больших данных, оптимизированная для интернета вещей и мониторинга приложений. По заявлению авторов, запись и запросы работают в десять раз быстрее, чем в других базах, а вычислительных ресурсов нужно менее пятой части от типичных решений. Для разработки доступны интерфейсы Java, C/C++, Python, Go и RESTful API. Подойдёт для задач, где важна скорость записи, чтения и обработки данных.

Проекты на C#

  1. Common.Utility

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

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

  1. muduo

    Сетевая библиотека C++ на Boost с неблокирующим вводом-выводом и обработкой событий. Оборачивает низкоуровневые системные вызовы, реализует быстрый асинхронный журнал, многопоточный Reactor и простой разбор HTTP. Подходит для многопоточных серверных приложений под Linux; изучение исходников поможет разобраться в C++ и сетевом программировании.

Проекты на Go

  1. gocui

    Библиотека для терминальных интерфейсов. Даёт API, похожий на HTML canvas: интерфейс можно разбивать на области, а в некоторых терминалах поддерживаются даже нажатия мышью. Поможет сделать интерактивную консольную утилиту наподобие redis-cli без ручной отрисовки всего интерфейса.

    gocui
  2. lazydocker

    Инструмент управления Docker с текстовым интерфейсом в терминале. Позволяет работать с контейнерами через меню без установки большой платформы вроде Rancher.

    lazydocker
  3. mux

    Библиотека маршрутизации HTTP на Go. Поддержка регулярных выражений помогает повторно использовать обработчики. По устройству близка к http.ServeMux из стандартной библиотеки и mux.Router, но добавляет маршруты с регулярными выражениями, пользовательские переменные и вложенные маршруты. Пример:

    func main() {
        r := mux.NewRouter()
        r.HandleFunc("/", HomeHandler)
        r.HandleFunc("/products", ProductsHandler)
        r.HandleFunc("/articles", ArticlesHandler)
        http.Handle("/", r)
    }
    r := mux.NewRouter()
    r.HandleFunc("/products/{key}", ProductHandler)
    r.HandleFunc("/articles/{category}/", ArticlesCategoryHandler)
    r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)
  4. nps

    Лёгкий и функциональный прокси-сервер для доступа к внутренней сети. Перенаправляет TCP и UDP, поддерживает HTTP- и SOCKS5-прокси, сжатие Snappy, защиту сайтов, шифрование, мультиплексирование и нескольких пользователей. Есть веб-панель управления. Можно развернуть собственный сервис вместо платного туннеля и управлять им через графический интерфейс. Установка:

    go get -u github.com/cnlh/nps
    go build cmd/nps/nps.go # 服务端程序
    go build cmd/nps/npc.go # 客户端程序
    nps
  5. pan-light

    Графический клиент Baidu Netdisk на Go и Qt5 без ограничения скорости. По сравнению с прежним консольным клиентом пользоваться им удобнее: скачайте приложение со страницы выпусков и запустите.

    pan-light
  6. scope

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

    # 安装
    sudo curl -L git.io/scope -o /usr/local/bin/scope
    sudo chmod a+x /usr/local/bin/scope
    scope launch
    # 最后访问 http://localhost:4040
    scope

Проекты на Java

  1. arthas

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

    arthas
  2. mall

    Интернет-магазин на Spring Boot и MyBatis с витриной и административной частью. Набор функций делает его хорошим учебным проектом для практики разработки электронной торговли. Структура проекта:

    mall
    ├── mall-common -- 工具类及通用代码
    ├── mall-mbg -- MyBatisGenerator 生成的数据库操作代码
    ├── mall-admin -- 后台商城管理系统接口
    ├── mall-search -- 基于 Elasticsearch 的商品搜索系统
    ├── mall-portal -- 前台商城系统接口
    └── mall-demo -- 框架搭建时的测试代码
    mall
  3. QuestionAnsweringSystem

    Система вопросов и ответов на Java: автоматически разбирает вопрос и предлагает возможные ответы. Вдохновлена Watson от IBM, победившим людей в телеигре «Jeopardy!» в 2011 году. По современным меркам она может показаться простой, зато её легко развернуть и изучить; новичкам подойдёт для экспериментов и встраивания в приложение.

  4. wormhole

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

    wormhole

Проекты на JavaScript

  1. cdfang-spider

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

    cdfang-spider
  2. javascript-questions

    Список сложных вопросов по JavaScript с ответами. Есть версия на китайском.

  3. licia

    Практичная библиотека утилит JavaScript с функциями, часто нужными в проектах. Устанавливается через npm и легко встраивается в современную фронтенд-разработку, помогая экономить время. Пример:

    const uuid = require("licia/uuid");
    const dateFormat = require("licia/dateFormat");
    const now = require("licia/now");
    const randomBytes = require("licia/randomBytes");
    console.log(randomBytes(5));
    console.log(uuid());
    console.log(dateFormat(now(), "yyyy-mm-dd"));
  4. styled-components

    Библиотека для стилизации React-компонентов через шаблонные строки ES6 в подходе CSS-in-JS. Позволяет писать стили прямо в файле компонента, а не хранить их отдельно. Сторонники подхода считают, что простое разделение файлов не даёт настоящей изоляции компонентов.

    styled-components
  5. vue-unit-test-with-jest

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

    import { shallowMount, createLocalVue } from '@vue/test-utils'
    import FilterTest from '@/components/FilterAddWatchTest.vue'
    ...
    // 测试内容:filter ---- filter 不能通过 wrapper 或者 vm 获取,只能通过组件获取
    // filter 需要测试函数的所有可能性
    it('filter test', () => {
      // console.log(FilterTest.filters)
      expect(FilterTest.filters.formatText('12345678')).toBe('12...78')
      expect(FilterTest.filters.formatText('12345')).toBe('12345')
      expect(FilterTest.filters.formatText()).toBe('')
    })
    ...
  6. x-build

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

  7. zdog

    Небольшой движок 3D-графики на JavaScript для Canvas и SVG. Позволяет строить объёмные модели с плоским оформлением, используя знакомые веб-технологии. В библиотеке около 2 800 строк кода, минимальный размер — 28 КБ; декларативный API не требует сложной настройки. Ниже показаны работы, созданные с её помощью.

    zdog

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

  1. GHDropMenuDemo

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

    GHDropMenuDemo

Проекты на PHP

  1. CRMEB

    Бесплатная система интернет-магазина для новой розницы с открытым кодом на ThinkPHP 5.0, Vue и EasyWeChat. Объединяет управление отношениями с клиентами и маркетинговую торговлю. Через публичный канал WeChat, мини-приложение, ПК и мобильное приложение позволяет вести участников программы лояльности, анализировать данные и настраивать адресный маркетинг. Подходит для записи на услуги, O2O, нескольких магазинов и других сценариев.

    CRMEB

Проекты на Python

  1. cufflinks

    Библиотека графиков на основе Plotly и pandas. Помогает наглядно показать данные после обработки в pandas и строить разнообразные выразительные визуализации всего несколькими строками кода.

    cufflinks
  2. one-python-craftsman

    Руководство по качественному коду на Python через внимание к деталям: когда использовать исключения, как называть переменные и строить условные ветвления. Автор с большим опытом разработки разбирает простые на вид, но важные вопросы на примерах из реальной работы. Материалы помогут улучшить повседневную практику программирования.

Проекты на Ruby

  1. rubocop

    Статический анализатор и форматтер Ruby. Сразу после установки проверяет код по многим правилам принятого в сообществе руководства по стилю. Гибко настраивается, сообщает о проблемах и умеет автоматически исправлять часть из них. Один из распространённых инструментов проверки Ruby-кода. Пример:

    $ gem install rubocop
    $ cd my/cool/ruby/project
    $ rubocop

Проекты на Swift

  1. uPic

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

    uPic

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

  1. DG-Net

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

    1. Качественные изображения создаются без дополнительной разметки поз, атрибутов и ключевых точек. Внешний вид двух людей меняется обменом извлечённых признаков; варианты основаны на реальных данных обучения, а не случайном шуме.
    2. Сопоставление частей тела не требуется. Модель улучшается за счёт большего числа примеров: из N исходных снимков генерируются N × N обучающих изображений. На иллюстрации первые строка и столбец — настоящие снимки, остальные — сгенерированные.
    3. Обучение идёт циклом: синтетические снимки поступают в модель распознавания, а извлечённые ею признаки возвращаются в генератор и улучшают изображения.
    DG-Net
  2. hub

    Каталог классических моделей компьютерного зрения и обработки естественного языка в PyTorch Hub. Модели ResNet, BERT, GPT, VGG, PGAN и MobileNet можно загрузить одной строкой кода. Примеры использования:

    1、查询可用的模型
    
    用户可以使用 torch.hub.list() 这个API列出 repo 中所有可用的入口点。
    比如你想知道 PyTorch Hub 中有哪些可用的计算机视觉模型:
    
    >>> torch.hub.list(‘pytorch/vision’)
    >>>
    [‘alexnet’,
    ‘deeplabv3_resnet101’,
    ‘densenet121’,
    …
    ‘vgg16’,
    ‘vgg16_bn’,
    ‘vgg19’,
    ‘vgg19_bn’]
    
    2、加载模型
    
    在上一步中能看到所有可用的计算机视觉模型,如果想调用其中的一个,也不必安装,只需一句话就能加载模型。
    
    model = torch.hub.load(‘pytorch/vision’, ‘deeplabv3_resnet101’, pretrained=True)
    
    至于如何获得此模型的详细帮助信息,可以使用下面的 API:
    
    print(torch.hub.help(‘pytorch/vision’, ‘deeplabv3_resnet101’))
    
    如果模型的发布者后续加入错误修复和性能改进,用户也可以非常简单地获取更新,确保自己用到的是最新版本:
    
    model = torch.hub.load(…, force_reload=True)
    
    对于另外一部分用户来说,稳定性更加重要,他们有时候需要调用特定分支的代码。
    例如 pytorch_GAN_zoo 的 hub 分支:
    
    model = torch.hub.load(‘facebookresearch/pytorch_GAN_zoo:hub’, ‘DCGAN’, pretrained=True, useGPU=False)
    
    3、查看模型可用方法
    
    从 PyTorch Hub 加载模型后,你可以用 dir 查看模型的所有可用方法。以 bertForMaskedLM 模型为例:
    
    >>> dir(model)
    >>>
    [‘forward’
    …
    ‘to’
    ‘state_dict’,
    ]
    
    如果你对forward方法感兴趣,使用 help 了解运行运行该方法所需的参数。
    
    >>> help(model.forward)
    >>>
    Help on method forward in module pytorch_pretrained_bert.modeling:
    forward(input_ids, token_type_ids=None, attention_mask=None, masked_lm_labels=None)
    …
  3. LIS-YNP

    Руководство по PyTorch с базовыми уроками, дополнительными материалами и интересными практическими проектами.

  4. TabNine

    Инструмент дополнения кода на основе языковой модели OpenAI. На момент публикации поддерживал 23 языка программирования и пять редакторов: VS Code, Sublime Text, Atom, Emacs и Vim. Прост в использовании и даёт впечатляющие результаты.

Прочее

  1. from_coder_to_expert

    Коллекция внутренних технических докладов крупных интернет-компаний за 2019 год: документы, PDF и презентации. Материалы охватывают путь от разработчика до CTO и помогают углубить профессиональные знания.

  2. getAwayBSG

    «Побег из Пекина, Шанхая и Гуанчжоу» — визуализация данных о вакансиях и ценах на жильё, полученных веб-скрейпингом. Помогает ИТ-специалистам, которые хотят переехать из крупнейших городов Китая, сравнить возможные направления.

    getAwayBSG
  3. git-open

    Консольная утилита git open открывает страницу текущего репозитория в браузере. Удобно после отправки кода проверить изменения на сайте. Поддерживает GitHub, GitLab и Bitbucket.

    git-open
  4. sqli-labs

    Подробное руководство по SQL-инъекциям на английском языке. Подойдёт тем, кто начинает изучать информационную безопасность.

  5. Student-resources

    Подборка льгот для школьников и студентов. Среди примеров — предложения GitHub, Microsoft, AWS, JetBrains и сезонная скидка Apple; часть доступна и учащимся школ. Автор призывает пользоваться своими правами ответственно и не перепродавать льготные аккаунты, чтобы преимущества сохранялись для других.

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

  1. flutter-in-action

    Книга «Flutter на практике». Читать онлайн на китайском.

  2. go101

    «Go 101» — руководство, сосредоточенное на синтаксисе и семантике Go. Читать онлайн на китайском.