Динамические обои и эмулятор Wii U

Выпуск № 78 ·

Проекты на C

  1. acl

    Кроссплатформенная сетевая библиотека и серверный фреймворк. Подходит и для сетевых клиентов, и для серверов. Поддерживает распространённые протоколы HTTP, SMTP, ICMP, MQTT, Redis и Memcache, а также форматы XML, JSON и BASE64.

    • lib_acl — базовая библиотека
    • lib_protocol — реализация HTTP и протоколов ICMP/PING
    • lib_fiber — библиотека сопрограмм: перехватывает системные API read/write и вместе с epoll позволяет создавать высоконагруженные сетевые приложения
    acl
  2. CPU-X

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

    CPU-X
  3. gifsicle

    Утилита для сжатия и редактирования GIF-анимаций. Компактный, но функциональный инструмент умеет объединять GIF-файлы, извлекать все кадры, показывать сведения об изображении, уменьшать число кадров, задавать количество повторов и задержку, а также редактировать отдельные кадры.

    # 安装
    brew install gifsicle
    # 查看
    gifsicle -I input.gif | head
    # 优化/压缩
    gifsicle input.gif -O3 -o output.gif

Проекты на C#

  1. Text-Grab

    Лёгкая OCR-утилита для Windows. Она использует встроенный в Windows 10 API распознавания текста, чтобы преобразовывать в текст любые надписи на экране. Программа быстро запускается, не остаётся работать в фоне и доступна офлайн.

    Text-Grab
  2. WinDynamicDesktop

    Динамические обои для Windows по мотивам macOS. Программа переносит функцию динамического рабочего стола macOS в Windows 10: определяет время рассвета и заката с учётом местоположения и меняет обои в течение дня. Приложение доступно в Microsoft Store.

    WinDynamicDesktop
  3. XCharts

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

    XCharts

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

  1. aseprite

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

    aseprite
  2. Cemu

    Эмулятор игровой консоли Nintendo Wii U. Написан на C++ и распространяется с открытым кодом. Запускает большинство игр для Wii U и любительские игры; поддерживает Windows, Linux и macOS.

    Cemu
  3. kys-cpp

    Ремейк игры «Герои Цзинь Юна» на C++. Игра создана на SDL2; большая часть ресурсов взята из версии для DOS. Разработка завершена, игра работает.

    kys-cpp
  4. wiliwili

    Неофициальный клиент Bilibili (китайский видеохостинг), рассчитанный на управление геймпадом. Приложение на C++ предназначено для Nintendo Switch и по удобству просмотра приближается к официальному клиенту Bilibili для ПК. Поддерживаются сенсорное управление и кнопки геймпада.

    wiliwili

Проекты на CSS

  1. 30diasDeCSS

    Марафон: за 30 дней создать 30 мини-проектов на HTML и CSS. Для каждого проекта есть анимированная демонстрация результата, исходный код и перечень использованных приёмов.

    30diasDeCSS

Проекты на Go

  1. cobra

    На момент выхода выпуска это был самый популярный Go-фреймворк для создания CLI-приложений. С его помощью легко собирать консольные программы; им пользуются многие известные Go-проекты, в том числе Kubernetes, Hugo и GitHub CLI. Есть автодополнение, генерация структуры проекта и вложенные подкоманды.

    var rootCmd = &cobra.Command{
      Use:   "hugo",
      Short: "Hugo is a very fast static site generator",
      Long: "A Fast and Flexible Static Site Generator built with love by spf13",
      Run: func(cmd *cobra.Command, args []string) {
        // Do Stuff Here
      },
    }
    
    func Execute() {
      if err := rootCmd.Execute(); err != nil {
        fmt.Println(err)
        os.Exit(1)
      }
    }
    cobra
  2. fq

    Просмотр двоичных файлов одной командой. Эта консольная утилита помогает изучать и обрабатывать файлы разных форматов, включая MP4, FLAC, MP3 и JPEG; её легко установить и использовать.

    fq
  3. HackBrowserData

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

    HackBrowserData
  4. statsviz

    Веб-приложение для наблюдения за показателями Go-программ в реальном времени. Графики показывают данные среды выполнения: кучу, объекты, Goroutines, MSpan и MCache.

    mux := http.NewServeMux()
    statsviz.Register(mux)
    statsviz
  5. v2

    Минималистичная читалка RSS и Atom-лент. Простота заложена даже в устройстве программы: без веб-фреймворка и ORM, только Go, PostgreSQL и JavaScript. Неприхотливый интерфейс сочетается с практичными функциями: быстрым развёртыванием на своём сервере, управлением источниками, автоматической загрузкой материалов, горячими клавишами и учётными записями.

    v2

Проекты на Java

  1. caffeine

    Высокопроизводительная библиотека кэширования для Java. Она развивает идеи Guava и ConcurrentLinkedHashMap: локальный кэш обеспечивает более высокую долю попаданий и более быструю запись и чтение.

    LoadingCache<Key, Graph> graphs = Caffeine.newBuilder()
        .maximumSize(10_000)
        .expireAfterWrite(Duration.ofMinutes(5))
        .refreshAfterWrite(Duration.ofMinutes(1))
        .build(key -> createExpensiveGraph(key));
    caffeine
  2. ghidra

    Бесплатный инструмент с открытым кодом для анализа программ. Национальное агентство безопасности США открыло исходный код Ghidra; с её помощью можно исследовать скомпилированные программы.

    ghidra
  3. hippo4j

    Динамический пул потоков со сбором метрик и оповещениями. Параметры пула можно менять во время работы, а его состояние — отслеживать в реальном времени. Поддерживается интеграция с RocketMQ, RabbitMQ, Tomcat и другими компонентами. Фреймворк помогает решать проблемы с оценкой параметров и непрозрачностью работы потоков.

    @Bean
    @DynamicThreadPool
    public Executor sendMessageConsumeDynamicThreadPool() {
        String threadPoolId = "send-message-consume";
        ThreadPoolExecutor sendMessageConsume = ThreadPoolBuilder.builder()
                .threadPoolId(threadPoolId)
                .threadFactory(threadPoolId)
                .dynamicPool()
                .build();
        return sendMessageConsume;
    }
  4. solon

    Лёгкий фреймворк для разработки приложений на Java. Помогает быстро создавать веб-проекты; основной фреймворк занимает всего 0,1 МБ. Подобно Flask в Python, он предлагает компактное ядро и сборку приложения из нужных плагинов.

    @Controller
    public class App {
        public static void main(String[] args) {
            Solon.start(App.class, args, app -> {
                //手写模式
                app.get("/hello1", ctx -> ctx.output("Hello world!"));
            });
        }
    
        //注解模式
        @Get
        @Socket
        @Mapping("/hello2")
        public String hello2(@Param(defaultValue = "world") String name) {
            return String.format("Hello %s!", name);
        }
    }

Проекты на JavaScript

  1. jsoncrack.com

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

    jsoncrack.com
  2. m3u8-downloader

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

    // 下载整合后的 TS 文件
    downloadFile(fileDataList, fileName, fileType) {
        this.tips = 'ts 碎片整合中,请留意浏览器下载'
        const fileBlob = new Blob(fileDataList, { type: 'video/MP2T' }) // 创建一个 Blob 对象,并设置文件的 MIME 类型
        const a = document.createElement('a')
        a.download = fileName + '.' + fileType
        a.href = URL.createObjectURL(fileBlob)
        a.style.display = 'none'
        document.body.appendChild(a)
        a.click()
        a.remove()
    }
    m3u8-downloader
  3. notesnook

    Заметки со сквозным шифрованием. Приложение уделяет особое внимание приватности и шифрует данные алгоритмами XChaCha20-Poly1305 и Argon2. Функций много, но бесплатная версия сильно ограничена: в ней, например, нет поддержки Markdown и вставки изображений.

    notesnook
  4. sakana

    Милый симулятор Sakana. Мем Sakana появился благодаря аниме «Ликорис Рикойл»: забавное движение персонажа и возглас «Sakana» («рыба») быстро разошлись в сети. Проект помогает легко воссоздать этот момент.

    sakana
  5. tldraw

    Компактный, но продуманный онлайн-инструмент для рисования. Можно добавлять стикеры, сохранять ход работы, экспортировать рисунок как изображение и рисовать вместе с другими.

    tldraw

Проекты на PHP

  1. Piwigo

    Онлайн-фотоальбом с открытым кодом. Веб-приложение на PHP и MySQL помогает управлять фотографиями; его легко установить и настроить с помощью тем и плагинов. Через приложения для iOS и Android можно загружать фотографии и управлять альбомом на ходу.

    Piwigo

Проекты на Python

  1. django-silk

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

    # 安装
    pip install django-silk
    
    # 中间件的方式使用
    MIDDLEWARE = [
        ...
        'silk.middleware.SilkyMiddleware',
        ...
    ]
    
    INSTALLED_APPS = (
        ...
        'silk'
    )
    django-silk
  2. Games

    Подборка небольших настольных игр, полностью написанных на Python. Здесь больше 20 разных игр на библиотеках cocos2d, pygame, PyQt и других. Они не отличаются высокой увлекательностью, зато код проектов прост и подойдёт новичкам для обучения.

    Games
  3. OCRmyPDF

    Инструмент, который делает PDF доступными для поиска. Он распознаёт текст с помощью движка Tesseract OCR и добавляет в документ текстовый слой. После этого содержимое PDF можно искать и копировать; поддерживается более 100 языков.

    OCRmyPDF
  4. pendulum

    Библиотека, упрощающая работу со временем в Python. Она предлагает более удобный API, совместимый со стандартным модулем datetime, и позволяет напрямую заменить объекты datetime в коде. Поддерживает арифметику с датами, описание промежутков человеческим языком и работу с часовыми поясами.

    >>> import pendulum
    
    >>> now_in_paris = pendulum.now('Europe/Paris')
    >>> now_in_paris
    '2016-07-04T00:49:58.502116+02:00'
    
    >>> tomorrow = pendulum.now().add(days=1)
    
    >>> past = pendulum.now().subtract(minutes=2)
    >>> past.diff_for_humans()
    '2 minutes ago'
    
    >>> delta = past - last_week
    >>> delta.hours
    23
    >>> delta.in_words(locale='en')
    '6 days 23 hours 58 minutes'
  5. pg_activity

    Консольная утилита мониторинга PostgreSQL, похожая на top. Одной командой можно посмотреть состояние базы и подробности выполнения каждого SQL-запроса: длительность, использование ресурсов и скорость чтения и записи.

    pg_activity

Проекты на Ruby

  1. wpscan

    Сканер безопасности сайтов на WordPress. Он ищет уязвимости, проверяет установленные плагины и темы, а также выявляет слабые пароли.

    wpscan

Проекты на Rust

  1. easy_rust

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

  2. espanso

    Умный инструмент для расширения текста на Rust. При вводе заданного ключевого слова он автоматически подставляет заранее подготовленный текст. Работает практически с любыми приложениями в Windows, macOS и Linux.

    espanso

Проекты на Swift

  1. TinyPNG4Mac

    Неофициальный клиент TinyPNG для macOS. Сайт TinyPNG бесплатно сжимает изображения, а приложение позволяет обойтись без браузера и ручного скачивания файлов: достаточно перетащить JPEG или PNG в окно программы.

    TinyPNG4Mac

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

  1. stable-diffusion

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

    # make sure you're logged in with `huggingface-cli login`
    from torch import autocast
    from diffusers import StableDiffusionPipeline
    
    pipe = StableDiffusionPipeline.from_pretrained(
        "CompVis/stable-diffusion-v1-4", 
        use_auth_token=True
    ).to("cuda")
    
    prompt = "a photo of an astronaut riding a horse on mars"
    with autocast("cuda"):
        image = pipe(prompt)["sample"][0]  
    
    image.save("astronaut_rides_horse.png")
    stable-diffusion
  2. style2paints

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

    style2paints

Прочее

  1. bats-core

    Система автоматизированного тестирования Bash. Она проверяет, соответствует ли результат работы скрипта ожиданиям, определяя успех теста по параметру Bash errexit (set -e).

    #!/usr/bin/env bats
    
    @test "addition using bc" {
      result="$(echo 2+2 | bc)"
      [ "$result" -eq 4 ]
    }
    
    @test "addition using dc" {
      result="$(echo 2 2+p | dc)"
      [ "$result" -eq 4 ]
    }
  2. Crash-Course-Computer-Science-Chinese

    Курс Crash Course Computer Science с китайскими субтитрами. Все 40 выпусков на YouTube снабжены выверенным переводом; курс охватывает темы от транзисторов до операционных систем и искусственного интеллекта. Это научно-популярное введение, а не обучение программированию.

    Crash-Course-Computer-Science-Chinese
  3. missing-semester

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

    missing-semester
  4. nginx-tutorial

    Бесплатный краткий учебник по Nginx. В нём разобраны установка, основные команды, обратное проксирование и балансировка нагрузки — этого достаточно, чтобы новичку освоить основы Nginx.

    nginx-tutorial
  5. The-Art-of-Linear-Algebra

    Линейная алгебра в иллюстрациях. «Linear Algebra for Everyone» — хорошо оценённый общедоступный курс; проект основан на нём и представляет материал в виде иллюстрированных конспектов.

    The-Art-of-Linear-Algebra
  6. WebKit

    Движок веб-браузера с открытым кодом от Apple. На WebKit работают Safari, App Store, Mail и другие приложения в macOS и iOS. Его форк Blink — одна из ключевых частей Chromium, на котором основаны популярные браузеры.

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

  1. Cookbook

    «Кулинарная книга инженера данных» (Data Engineer Cookbook). Книга рассказывает, какие знания и навыки нужно освоить, чтобы стать хорошим инженером данных.

    Cookbook