Синхронизация файлов и программирование блоками

Выпуск № 56 ·

Проекты на C

  1. ucore

    Лабораторные работы к курсу операционных систем Университета Цинхуа. Подойдут тем, кто знаком с устройством компьютера, C, ассемблером и структурами данных и интересуется ОС. В проекте есть видеолекции, упражнения и методические материалы для лабораторных работ.

Проекты на C#

  1. ContextMenuManager

    Утилита для управления контекстным меню Windows. Возможности:

    • Включает и отключает пункты меню для файлов и папок, «Создать», «Отправить», «Открыть с помощью» и другие.
    • Позволяет переименовывать пункты, менять значки, переходить к записи в реестре и удалять пункты навсегда.
    • Добавляет собственные пункты и команды в контекстное меню.
    ContextMenuManager
  2. RevokeMsgPatcher

    Утилита для настольных версий WeChat и QQ в Windows, предотвращающая отзыв сообщений.

    RevokeMsgPatcher

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

  1. spdlog

    Быстрая и простая в освоении библиотека логирования на C++. Пример кода:

    #include "spdlog/spdlog.h"
    
    int main() 
    {
        spdlog::info("Welcome to spdlog!");
        spdlog::error("Some error message with arg: {}", 1);
    
        spdlog::warn("Easy padding in numbers like {:08d}", 12);
        spdlog::critical("Support for int: {0:d};  hex: {0:x};  oct: {0:o}; bin: {0:b}", 42);
        spdlog::info("Support for floats {:03.2f}", 1.23456);
        spdlog::info("Positional args are {1} {0}..", "too", "supported");
        spdlog::info("{:<30}", "left aligned");
    
        spdlog::set_level(spdlog::level::debug); // Set global log level to debug
        spdlog::debug("This message should be displayed..");    
    
        // change log pattern
        spdlog::set_pattern("[%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v");
    
        // Compile time log levels
        // define SPDLOG_ACTIVE_LEVEL to desired level
        SPDLOG_TRACE("Some trace message with param {}", 42);
        SPDLOG_DEBUG("Some debug message");
    }
  2. srpc

    Высокопроизводительный RPC-фреймворк Sogou на базе C++ Workflow. Совместим с протоколами Thrift и brpc, поддерживает перенос интерфейсов из protobuf и Thrift IDL в один шаг. Основной код занимает около 10 000 строк. Пример:

    class ExampleServiceImpl : public Example::Service
    {
    public:
        void Echo(EchoRequest *request, EchoResponse *response, RPCContext *ctx) override
        {
            response->set_message("Hi, " + request->name());
        }
    };
    
    int main()
    {
        SRPCHttpServer server;
        ExampleServiceImpl impl;
        server.add_service(&impl);
        server.start(1412);
        pause();
        server.stop();
        return 0;
    }
    访问:
    curl 127.0.0.1:1412/Example/Echo -H 'Content-Type: application/json' -d '{message:"from curl",name:"CURL"}'
    srpc

Проекты на CSS

  1. tailwindcss

    CSS-фреймворк, построенный на небольших и гибких служебных классах (utility-first). Идея в том, чтобы собирать и настраивать компоненты с помощью классов, а не добавлять индивидуальные стили к готовым компонентам. Мнения о подходе расходятся, но автору он понравился и захотелось его изучить.

    tailwindcss

Проекты на Go

  1. go-zero

    Надёжный веб- и RPC-фреймворк на Go. Даже новичок в Go сможет быстро создавать на его основе производительные и масштабируемые микросервисы. Пример кода:

    func main() {
      flag.Parse()
    
      var c config.Config
      conf.MustLoad(*configFile, &c)
    
      ctx := svc.NewServiceContext(c)
      server := rest.MustNewServer(c.RestConf)
      defer server.Stop()
    
      handler.RegisterHandlers(server, ctx)
    
      server.Start()
    }
    go-zero
  2. lazykube

    Консольная утилита для управления Kubernetes с поддержкой мыши. В отличие от k9s, не требует запоминать множество горячих клавиш. Полезна, когда в компании нет Rancher или Dashboard, а к кластеру можно подключиться только через бастион. Для работы достаточно терминала и мыши; для поиска понадобится и клавиатура.

    lazykube
  3. syncthing

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

    syncthing

Проекты на Java

  1. Mindustry

    Бесплатная песочница с элементами защиты башни на Java. Доступна для Windows, Linux, macOS и Android.

    Mindustry
  2. novel

    Сайт для чтения романов и комиксов на Spring Boot. Богатый набор материалов и функций; доступны веб-версия, приложение Android и мини-приложение WeChat. Сервер состоит из сайта и панели управления и использует Spring Boot, MyBatis, MySQL и Redis. Подойдёт начинающим Java-разработчикам как практический проект.

    novel

Проекты на JavaScript

  1. AdminLTE

    Шаблон панели управления на Bootstrap 4.5 и jQuery.

    AdminLTE
  2. blockly

    Веб-редактор визуального программирования с открытым кодом от Google. Позволяет создавать программы перетаскиванием блоков даже без навыков программирования и генерировать код на Python, JavaScript, PHP и других языках. Если онлайн-демо работает медленно, установите проект командой npm install blockly и изучайте локально.

    blockly
  3. lucky-canvas

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

    • Гибкая настройка призов и вероятности выигрыша.
    • Синхронное и асинхронное проведение розыгрышей.
    • Поддержка мобильных устройств.
    • И другие функции.
    lucky-canvas
  4. piano

    Приложение-пианино на Omi и Omi Snippets. Даже без знания теории музыки можно сыграть на клавиатуре простые знакомые мелодии. Автор проекта благодарит музыку и программирование за поддержку и посвящает работу тем, кто много трудится, в том числе программистам с графиком «996». Он приводит строку из песни Ван Лихома о том, что музыка дарит чувство безопасности и помогает мечтам ожить. Автор подборки признаётся: раньше он уже рекомендовал другое пианино, которое звучало лучше, но это понравилось ему больше благодаря вниманию и теплоте создателя. Попробовать онлайн на Gitee (китайском аналоге GitHub). Пример кода:

    playSong(song) {
      this.setSong([...song])
      let offset = 0
      let time = 0
      let playSong = async () => {
        // 右边是从外部来中断递归
        if (offset < song.length && this.store.data.song.length > 0) {
          switch (typeof song[offset]) {
            // 简谱2演奏方法 根据 ++12345--6. 简单旋律情况
            case 'string':
              let letters = song[offset].match(/[0-9]/g)
              switch (letters.length) {
                case 1:
                  time = this.handleString(song, offset)
                  break
                default:
                  time = this.handleStrings(song, offset)
                  break
              }
              break
            // 简谱1演奏方法 根据 CDEFGAB,复杂旋律情况,比如有和弦
            case 'object':
              console.log(song[offset]['note'])
              time = song[offset]['time'];
              this.playNote(song[offset]['note'])
              break;
            case 'number':
              // 休止符
              switch (song[offset]) {
                case 0:
                  time = 1000
                  break
              }
              break
          }
          await new Promise((resolve) => {
            let timer = setTimeout(() => {
              clearInterval(timer)
              resolve()
            }, time)
          })
          offset++
          // 自定义事件,跟下面底部的音符自动跳动结合
          this.add()
          playSong()
        } else {
          // 暂停播放
          clearTimeout(this.timer)
          this.store.data.song = []
          this.store.data.count = 0
          return
        }
      }
      playSong()
    }
    piano
  5. screenity

    Расширение Chrome для записи экрана и добавления пометок. Возможности:

    • Записывает содержимое любого приложения, в том числе изображение с веб-камеры.
    • Позволяет размещать текст, стрелки и другие пометки в любом месте экрана.
    • Выделяет на записи щелчки мыши и указатель.
    • Экспортирует видео в MP4, GIF и другие распространённые форматы.
    • Обрезает и удаляет записи.
    screenity

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

  1. Sloth

    Утилита для macOS, показывающая файлы, сокеты, каналы и другие ресурсы, открытые процессами. По сути, графическая версия lsof.

    Sloth

Проекты на Python

  1. flask-state

    Лёгкое расширение Flask для мониторинга состояния компьютера. Пример кода:

    flask_state.init_app(app)
    // npm
    import 'echarts';
    import 'flask-state/flask-state.min.css';
    import {init} from 'flask-state';
    // Create a DOM node with ID 'test'. After init() binds the node, click to open the listening window
    init({dom:document.getElementById('test')});
    flask-state
  2. gopup

    Библиотека Python для сбора разнообразных открытых данных из авторитетных источников. Пример кода:

    # 安装:pip isntall gopup 
    
    import gopup as gp
    covid_baidu_df = gp.covid_baidu(indicator="热搜谣言粉碎")
    print(covid_baidu_df)
    gopup
  3. python-cheatsheet

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

    # $ pip3 install tqdm
    >>> from tqdm import tqdm
    >>> from time import sleep
    >>> for el in tqdm([1, 2, 3], desc='Processing'):
    ...     sleep(1)
    Processing: 100%|████████████████████| 3/3 [00:03<00:00,  1.00s/it]
  4. running_page

    Проект на Python для личной страницы с результатами пробежек. Возможности:

    • GitHub Actions автоматически синхронизирует данные о пробежках и создаёт новые страницы.
    • Быстрый статический сайт строится на Gatsby.
    • Маршруты отображаются через Mapbox.
    • Поддерживаются данные Nike, Runtastic, Garmin и Keep.
    • Файлы GPX автоматически сохраняются для резервного копирования и загрузки в другие приложения.
    running_page

Проекты на Swift

  1. eul

    Минималистичная бесплатная утилита мониторинга состояния macOS. Автор пользуется ей сам и рекомендует попробовать.

    eul

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

  1. DeepLearningProject

    Курс по глубокому обучению с открытым кодом от Гарвардского университета.

  2. EasyOCR

    Готовая к работе библиотека OCR на Python с поддержкой разных языков, включая китайский, японский и корейский. Пример кода:

    import easyocr
    reader = easyocr.Reader(['ch_sim','en']) # need to run only once to load model into memory
    result = reader.readtext('chinese.jpg')
    # 输出
    [([[189, 75], [469, 75], [469, 165], [189, 165]], '愚园路', 0.3754989504814148),
     ([[86, 80], [134, 80], [134, 128], [86, 128]], '西', 0.40452659130096436),
     ([[517, 81], [565, 81], [565, 123], [517, 123]], '东', 0.9989598989486694),
     ([[78, 126], [136, 126], [136, 156], [78, 156]], '315', 0.8125889301300049),
     ([[514, 126], [574, 126], [574, 156], [514, 156]], '309', 0.4971577227115631),
     ([[226, 170], [414, 170], [414, 220], [226, 220]], 'Yuyuan Rd.', 0.8261902332305908),
     ([[79, 173], [125, 173], [125, 213], [79, 213]], 'W', 0.9848111271858215),
     ([[529, 173], [569, 173], [569, 213], [529, 213]], 'E', 0.8405593633651733)]
  3. examples

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

Прочее

  1. CopyTranslator

    Инструмент перевода выделенного текста на веб-страницах и в PDF. Помогает избежать неправильных переносов строк, нечитаемых символов и ошибок перевода, когда нужно перевести большой фрагмент PDF.

    CopyTranslator
  2. Front-End-Interview-Notebook

    Качественные конспекты для подготовки к собеседованиям по фронтенду, составленные автором на основе собственного опыта. Вопросы и ответы охватывают HTML, CSS, JavaScript, алгоритмы и компьютерные сети. После нескольких предложений работы от крупных компаний автор собрал материалы для тех, кто готовится к собеседованию или смене работы.

  3. pi-hole

    Бесплатный DNS sinkhole с открытым кодом, который легко развернуть. Позволяет блокировать рекламу на уровне маршрутизатора для всех устройств сети. Установите проект на Raspberry Pi и настройте его как DNS-сервер в маршрутизаторе, поддерживающем пользовательский DNS. Пошаговая инструкция.

    pi-hole
  4. styleguide

    Руководства Google по стилю кода. Единый стиль облегчает понимание больших проектов. В подборке есть правила для C++, C#, Swift, Python, Java и других языков.

  5. upptime

    Бесплатный сервис мониторинга доступности сайтов с открытым кодом. Работает на бесплатных возможностях GitHub: GitHub Actions проверяет сайт каждые пять минут, GitHub Issues фиксирует сбои, а GitHub Pages показывает состояние сайта. Автору нравится такой способ обходиться без отдельной инфраструктуры и расходов.

    upptime
  6. winapps

    Проект для запуска офисных и других Windows-приложений в Linux, в том числе Ubuntu и Fedora. Поддерживает Microsoft Excel, Word, PowerPoint, Adobe Photoshop и другие программы.

    winapps