Загрузчик видео и музыкальная лаборатория

Выпуск № 24 ·

Проекты на C

  1. reading-code-of-nginx-1.9.2

    Подробный разбор исходного кода nginx 1.9.2 с пояснениями на китайском к функциям и комментариями о последовательности их вызовов.

Проекты на Go

  1. knowledge

    Карта знаний по Go.

  2. lux

    Быстрая, простая и аккуратная программа для скачивания видео на Go. Поддерживает Bilibili (китайский видеохостинг) и YouTube.

    $ annie -c cookies.txt https://www.bilibili.com/video/av20203945/
    
     Site:      哔哩哔哩 bilibili.com
     Title:     【2018拜年祭单品】相遇day by day
     Type:      video
     Stream:
         [default]  -------------------
         Quality:         高清 1080P60
         Size:            220.65 MiB (231363071 Bytes)
         # download with: annie -f default "URL"
    
     16.03 MiB / 220.65 MiB [==>----------------------------]   7.26% 9.65 MiB/s 19s

Проекты на Java

  1. PreLoader

    В Android сетевой запрос обычно отправляют только после инициализации UI, чтобы корректно показать полученные данные. Из-за такого последовательного выполнения общая инициализация экрана занимает больше времени. Инструмент позволяет загрузить данные перед открытием экрана, а после инициализации UI получить готовый результат и показать его. Это сокращает время запуска и улучшает впечатления пользователя. Пример:

    // 开启预加载任务
    int preLoaderId = PreLoader.preLoad(new Loader());
    Intent intent = new Intent(this, PreLoadBeforeLaunchActivity.class);
    intent.putExtra("preLoaderId", preLoaderId);
    startActivity(intent);
    // 预加载任务:模拟网络接口请求获取数据
    class Loader implements DataLoader<String> {
        @Override
        public String loadData() {
            //此方法在线程池中运行,无需再开子线程去加载数据
            try {
                Thread.sleep(600);
            } catch (InterruptedException ignored) {
            }
            return "data from network server";
        }
    }
    
    // 在Activity(或Fragment)中UI初始化完成后开始监听预加载数据
    PreLoader.listenData(preLoaderId, new Listener());
    
    // 数据加载完成后,会调用DataListener.onDataArrived(...)来处理加载后的数据
    class Listener implements DataListener<String> {
        @Override
        public void onDataArrived(String data) {
            //此方法在主线程中运行,无需使用Handler切换线程运行
            Toast.makeText(activity, data, Toast.LENGTH_SHORT).show();
        }
    }
  2. SuperLike

    Анимация вылетающих реакций из Toutiao — китайского новостного сервиса.

    SuperLike

Проекты на JavaScript

  1. 30-seconds-of-code

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

    30-seconds-of-code
  2. chrome-music-lab

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

    chrome-music-lab
  3. mpvue

    Фронтенд-фреймворк для мини-приложений. Он основан на ядре Vue.js, но использует изменённые реализации runtime и compiler, поэтому работает в среде мини-приложений и даёт привычные возможности разработки на Vue.js. Пятиминутное вводное видео

    • Полноценная компонентная разработка повышает повторное использование кода
    • Все привычные возможности разработки на Vue.js
    • Удобное управление данными через Vuex для создания сложных приложений
    • Быстрая сборка с webpack: собственные стратегии сборки и hotReload во время разработки
    • Поддержка внешних зависимостей из npm
    • Быстрая инициализация проекта с помощью консольной утилиты vue-cli
    • Преобразование и компиляция H5-кода в целевой код мини-приложения
  4. node-in-debugging

    Автор «Руководства по отладке Node.js» собрал опыт и подходы к отладке, накопленные за несколько лет разработки на Node.js.

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

  1. LSAnimator

    LSAnimator для Objective-C и CoreAnimator для Swift позволяют создавать сложные и удобные в сопровождении анимации небольшим объёмом кода, а также устраняют критический недостаток JHChainableAnimations. Подробное описание

    LSAnimator
  2. WeChatPlugin-MacOS

    Помощник для WeChat на Mac. Поддерживает автоматические ответы, защиту сообщений от отзыва, удалённое управление, запуск нескольких копий WeChat, перемещение диалогов вниз списка, вход без подтверждения и быстрые ответы из уведомлений.

    WeChatPlugin-MacOS

Проекты на PHP

  1. dzzoffice

    Комплект офисных приложений с открытым кодом. Позволяет компаниям и командам развернуть собственную платформу для совместной работы, похожую на Google Workspace и Microsoft Office 365. Онлайн-демонстрация

    dzzoffice

Проекты на Python

  1. haipproxy

    Высокодоступный распределённый пул IP-прокси на Scrapy и Redis. Обеспечивает крупные распределённые веб-краулеры доступными прокси с низкой задержкой.

    from client.py_cli import ProxyFetcher
    args = dict(host='127.0.0.1', port=6379, password='123456', db=0)
    # 这里`zhihu`的意思是,去和`zhihu`相关的代理ip校验队列中获取ip
    # 这么做的原因是同一个代理IP对不同网站代理效果不同
    fetcher = ProxyFetcher('zhihu', strategy='greedy', redis_args=args)
    # 获取一个可用代理
    print(fetcher.get_proxy())
    # 获取可用代理列表
    print(fetcher.get_proxies()) # or print(fetcher.pool)

    Результаты реального теста производительности пула при сборе данных с Zhihu (китайского аналога Quora):

    haipproxy
  2. MovieHeavens

    Программа на PyQt4 для поиска фильмов на сайте Movie Heaven: больше не придётся терпеть рекламу и лишние переходы по ссылкам.

    MovieHeavens
  3. WechatSogou

    Простая в освоении библиотека для сбора данных о публичных аккаунтах WeChat через поиск Sogou WeChat. Пример:

    import wechatsogou
    
    ws_api = wechatsogou.WechatSogouAPI()
    ws_api.get_gzh_info('微信名称')

Проекты на Swift

  1. iina

    Мультимедийный проигрыватель с открытым кодом для Mac. Поддерживает несколько языков и предлагает стильный интерфейс. Установка: brew cask install iina

    iina

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

  1. ailearning

    «Машинное обучение на практике» от ApacheCN. Если вы уверенно программируете, рекомендуем видео «Машинное обучение на практике — учебная версия» на Bilibili (китайском видеохостинге).

    Если опыта программирования меньше, рекомендуем «Машинное обучение на практике — версия с обсуждением».

  2. DeepLeague

    Небольшой проект по машинному обучению для League of Legends, подходящий для изучения применения алгоритмов компьютерного зрения и ML.

    DeepLeague
  3. tensorflow-docs

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

Прочее

  1. blog

    Блог технической команды Ant Data Experience.

  2. CS-Notes

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

  3. front-end-interview-handbook

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

  4. work-in-australia

    Руководство о том, как программисту устроиться на работу в Австралии.