Ретро-терминал и Linux на iOS

Выпуск № 33 ·

Проекты на C

  1. json-tutorial

    Руководство Майло Ипа по созданию библиотеки JSON на C с нуля. Содержание:

    1. Начало работы: среда компиляции, введение в JSON, разработка через тестирование, основные функции парсера и структуры данных.
    2. Разбор чисел: синтаксис чисел в JSON.
    3. Разбор строк: хранение вариантов через union, автоматически расширяемый стек, синтаксис строк JSON, valgrind.
    4. Unicode: основы Unicode и UTF-8, обработка Unicode в строках JSON.
    5. Разбор массивов: синтаксис массивов JSON.
    6. Разбор объектов: синтаксис объектов JSON, переработка функции разбора строк.
    7. Генератор: создание JSON и важные нюансы; упражнение по реализации генератора.
    8. Доступ и другие возможности: чтение и изменение массивов и объектов JSON.

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

  1. LeetCodeAnimation

    Анимированные объяснения решений задач LeetCode.

Проекты на CSS

  1. lit

    Адаптивный CSS-фреймворк размером всего 395 байт.

Проекты на Go

  1. ptt-daily-beauty

    Каждый вечер в 23:00 автоматически присылает фотографии девушек из трёх самых популярных публикаций раздела Beauty на PTT, крупнейшем форуме Тайваня. Подписаться.

    ptt-daily-beauty
  2. q

    Библиотека отладки для Go: автоматически выводит типы переменных и форматирует их значения.

    q
  3. tldr

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

    tldr
  4. yeetgif

    Консольная утилита для создания GIF-анимаций и сочетания эффектов для мемов. Поддерживает вращение, дрожание, зацикленные движения и другие режимы, которые можно комбинировать.

    yeetgif

Проекты на Java

  1. AndroidWM

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

    AndroidWM
  2. xLog

    Простая, удобная, мощная и расширяемая библиотека логирования для Android и Java. Может одновременно писать в несколько каналов: Logcat, консоль и файлы. Возможности:

    • Глобальные настройки (TAG, форматтеры и другое) или настройки для отдельной записи.
    • Вывод любых объектов и настраиваемые форматтеры объектов.
    • Вывод логов произвольной длины без ограничения в 4 000 символов.
    • Форматированный вывод XML и JSON.
    • И другие функции.
    xLog

Проекты на JavaScript

  1. better-onetab

    Удобный инструмент для управления множеством вкладок браузера. Есть расширения для Chrome и Firefox; поддерживаются сохранение вкладок и объединение их в группы.

    better-onetab
  2. js2image

    Сжимает исходный код в форме новогодней ёлки. После такого сжатия кода для продакшена обязательно проверьте его работу. Можно попробовать сделать и другие формы — занятная идея.

    js2image
  3. lint-md

    Консольная утилита для проверки правил оформления Markdown на китайском языке. Её удобно включать в CI, есть вызов через API. Полезна для исправления оформления; код проверки правил на основе AST тоже пригодится для изучения.

    lint-md
  4. swc

    Написанная на Rust более быстрая альтернатива Babel, за которой стоит следить.

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

  1. ish

    Запускает оболочку Linux на iOS и позволяет работать с устройством с помощью команд Linux.

    ish
  2. JXCategoryView

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

    • Логика индикаторов оформлена через протоколы, поэтому их внешний вид можно свободно настраивать.
    • Широкий набор эффектов с гибкой настройкой.
    • Стили ячеек управляются через подклассы: логика понятнее, расширять проще.
    JXCategoryView
  3. LongestCocoa

    Программистам на Objective-C хорошо знакомы длинные описательные имена. Какие методы и константы во фреймворке Cocoa самые длинные? Проект собрал такие имена.

  4. NudeIn

    Компонент форматированного текста для iOS на основе UITextView, чей стиль записи напоминает Masonry. Позволяет задавать оформление декларативно, цепочкой вызовов. По сравнению с императивным подходом код получается короче, понятнее и удобнее. Пример:

    #import "NudeIn.h"
    
    /// 声明控件为你的成员变量
    
    @property (nonatomic,strong) NudeIn *attrLabel;
    
    /// Do it yourself
    
    _attrLabel = [NudeIn make:^(NUDTextMaker *make) {
        make.text(@"this is a ").font(14).color([UIColor blackColor]).attach();
        make.text(@"BlueLink").font(17).color([UIColor blueColor]).link(self,@selector(linkHandler:)).attach();
        make.text(@", and this is a ").font(14).color([UIColor blackColor]).attach();
        make.text(@"RedLink").font(17).color([UIColor redColor]).link(self,@selector(linkHandler:)).attach();
    }];
    
    /// 对声明了 link 属性的部分定义回调
     (void)linkHandler:(NUDAction *)action {
    
        if ([action isKindOfClass:[NUDLinkAction class]]) {
    
            NUDLinkAction *linkAction = (NUDLinkAction *)action;
    
            UIAlertController *alertController = [UIAlertController alertControllerWithTitle:linkAction.string message:nil preferredStyle:UIAlertControllerStyleAlert];
    
            [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            }]];
    
            [self presentViewController:alertController animated:YES completion:nil];
    
        }
    
    }

Проекты на PHP

  1. meedu

    Бесплатная образовательная онлайн-платформа с открытым кодом. Включает три модуля: видео по запросу, электронные книги и платное членство. Попробовать онлайн.

Проекты на Python

  1. loguru

    Библиотека, которая упрощает логирование в Python.

    loguru
  2. lsbasi

    Серия уроков по созданию простого интерпретатора на Python.

  3. mkdocs

    Быстрый и простой генератор статических сайтов на Python, прежде всего для документации проектов. Исходники пишутся в Markdown, настройки задаются в YAML-файле, а способ работы напоминает Hexo.

    mkdocs

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

  1. deep-learning-papers-translation

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

  2. MTCNN_face_detection_alignment

    Классическая работа по обнаружению лиц, основанная на статье с ECCV 2016 года. Метод успешно применялся на практике: во многих компаниях модули детекции использовали MTCNN или его ускоренный вариант. Одна модель обучается одновременно обнаруживать лица и ключевые точки; при выполнении она выдаёт и рамки лиц, и координаты ключевых точек.

    MTCNN_face_detection_alignment
  3. S3FD.pytorch

    Реализация на PyTorch метода из статьи S3FD: Single Shot Scale-invariant Face Detector. На момент публикации S3FD входил в число лидеров теста FDDB по точности обнаружения лиц. Статья посвящена проблеме масштаба лиц и улучшению обнаружения маленьких лиц.

    S3FD.pytorch
  4. SSH

    Реализация метода из статьи ICCV 2017 SSH: Single Stage Headless Face Detector.

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

    SSH

Прочее

  1. Back-End-Developer-Interview-Questions

    «Вопросы для backend-собеседования». Перевод на китайский.

  2. codelf

    Инструмент для подбора имён переменных. Две самые трудные задачи в информатике — сброс кеша и выбор названий. Можно искать прямо на китайском: Codelf подбирает английские слова и синонимы, а затем ищет в исходном коде открытых проектов на GitHub, Bitbucket, Google Code и других площадках подходящие имена переменных и функций. Попробовать онлайн.

  3. cool-retro-term

    Эмулятор терминала с видом старого кинескопного экрана. Лёгкий, приятный глазу, с настройкой оформления; работает на Linux и macOS. Добавьте Vim или Emacs — и получите атмосферу программирования хакеров прошлого века.

    cool-retro-term
  4. nginxconfig.io

    Сайт для генерации конфигурации Nginx. Попробовать онлайн.

  5. the-art-of-command-line

    Одностраничная шпаргалка по работе в командной строке. Автор собрал приёмы, найденные во время работы с Linux: от самых простых до сложных и не сразу понятных. Статья короткая, но освоение всех перечисленных приёмов многое расскажет о командной строке и поможет программировать гибче и быстрее.

  6. weekly

    Еженедельный технический дайджест Жуань Ифэна, выходящий по пятницам.

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

  1. Cpp_Concurrency_In_Action

    Перевод книги «Параллельное программирование на C++» (C++ Concurrency in Action) на китайский язык. Читать онлайн.

  2. ddia

    Перевод книги «Проектирование приложений, интенсивно использующих данные» (Designing Data-Intensive Applications) на китайский язык.