Продолжаем публиковать обзоры Open Source проектов, наиболее популярных на сайте Github за последнюю неделю. Среди них часто попадается что-нибудь полезное или забавное.
1. Как создать компьютерную операционную систему C++. Обучающий курс от французского программиста, который несколько лет назад, будучи в старших классах школы, попытался написать свою UNIX-подобную операционную систему на языке C++. Сейчас он уже более опытный программист — и на базе старого кода пишет целый учебник. Опубликовано уже 6 из 19 глав, с исходниками.
2. Life: создание отсортированного по датам списка важных событий в жизни, в минималистском стиле, для публикации на GitHub Pages. Очевидно, «таймлайн» в текстовом стиле кому-то кажется симпатичнее, чем визуализация на Facebook’е. Здесь можно подключить собственные стили оформления.
3. Dispatch-proxy: SOCKS5/HTTP прокси, который уравновешивает трафик по нескольким каналам доступа к интернету (WiFi/Ethernet/3G/4G). Например, если у вас дома есть кабельное подключение с ограничением по скорости X, беспроводное WiFi-подключение с ограничением по скорости Y и 3G-интернет с ограничением по скорости Z, то с помощью этого прокси вы можете скачивать файлы на скорости X+Y+Z. Как вариант, можно настроить прокси таким образом, чтобы разные устройства использовали разные сетевые интерфейсы. Программа работает под Mac OS X, Windows и Linux.
4. Resume: автоматический генератор резюме для программиста на базе его активности на Github. Сразу показывает, какие языки программирования программист использует чаще всего. Официальный сайт проекта, откуда можно в один клик сгенерировать собственное резюме.
5. List.js: быстрая и маленькая библиотека для добавления поиска, сортировки и фильтров в имеющиеся таблицы и списки. Легко подключается к существующим HTML-документам, официальный сайт, примеры.
6. Chronic: таймер и профайлер на Питоне, позволяет замерить скорость выполнения отдельных процессов и вести статистику в логе. Например, можно собрать статистику по скорости выполнения разных операций в MongoDB — и понять, из-за чего страдает производительность приложения.
import chronic
from pymongo import MongoClient
client = MongoClient()
class ProfilingMiddleware(object):
def process_response(self, request, response):
mongo_client.app.timings.insert(chronic.timings)
return response
7. oriDomi: складывание DOM-элементов как оригами: пользователь может мышкой комкать картинки на странице, демо.
8. Hugo: генерация логов на основе примечаний в исходном тексте программы. Предназначено для Android-разработчиков, которые часто добавляют текстовые примечания в важных местах кода программы. Теперь, если добавить плагин с процессингом аннотаций Hugo (просто написать @DebugLog в начале), то по результатам выполнения программы можно получить дебаггерский лог с результатами выполнения всех аннотированных вызовов, аргументами, переменными и проч. При этом процессинг срабатывает только в дебаггерском билде программы, но не в финальном релизе.
Например, такой код программы.
@DebugLog
public String getName(String first, String last) {
SystemClock.sleep(15); // Don't ever really do this!
return first + " " + last;
}
На выходе имеем в логе.
D/Example: ⇢ getName(first="Jake", last="Wharton")
D/Example: ⇠ getName = "Jake Wharton" [16ms]
9. FBDigitalFont: библиотека для генерации различных шрифтов средствами графической подсистемы iOS, исключительно алгоритмически, без использования TTF или других файлов со шрифтами, так что не нужно заботиться о получении лицензии на использование или внедрять шрифт в приложение.
Пример реализации можно посмотреть в приложении Flashback Calendar для iOS, где почти все шрифты сгенерированы таким образом.
10. Gmail.js: Неофициальные JavaScript API для Gmail, можно использовать при разработке расширений Chrome.