Выясняем, чем пахнет код, и печатаем реактивные компоненты.
В этом дайджесте, помимо уже привычных утилит для работы в терминале можно найти виртуального шахматного тренера, минималистичный калькулятор и Python-библиотеку для обработку видео.
Скриншоты из терминала
Termshot
Простой скриншот можно сделать с помощью команды termshot –show-cmd — lolcat -f <(figlet -f big foobar). Выглядеть он будет так:
Скриншот: homeport / GitHub
Проект доступен для Linux и macOS. Установить его можно с помощью пакетного менеджера Homebrew или собрать самому.
Открыть репозиторий
Коллекция запахов плохого кода
Bad Code Smells
Запахи кода (code smells) — термин, который популяризировали Мартин Фаулер и Кент Бек в книге Refactoring: Improving the Design of Existing Code. Он обозначает признаки потенциальных проблем в коде. Так же как неприятный запах может сигнализировать, например, о том, что еда испортилась, так и «запахи кода» указывают на возможные недостатки или проблемы в программе.
Ниже пример кода «с запашком», который возвращает словарь с кодом статуса и данными, проводя при этом дополнительную проверку статуса при каждом вызове. Это нагружает проект и заставляет компьютер выполнять лишние действия.
def create_foo() -> dict: response = requests.get(‘https://api.github.com/events’) if response.status_code != requests.codes.ok: return {‘status_code’: response.status_code, ‘foo’: None} return { ‘status_code’: response.status_code, ‘foo’: Foo(**response.json()) } foo_response: dict = create_foo() if foo[‘status_code’] != requests.codes.ok: foo: Foo = foo_response[‘foo’] …
Лучше было бы использовать исключение для сигнализации об ошибке и сразу выбрасывать ошибку, если что-то пошло не так. Это упростит код и сделает его более читаемым.
def create_foo() -> Foo: response = requests.get(‘https://api.github.com/events’) if response.status_code != requests.codes.ok: raise Exception(‘Что-то пошло не так’) return Foo(**response.json()) foo: Foo = create_foo()
Проект пригодится как начинающим, так и опытным программистам. Новички могут изучить примеры плохого кода и стараться не делать так в своих проектах. Матёрые разработчики часто ссылаются на «запахи кода» во время код-ревью.
Открыть репозиторий
Управление музыкой из терминала
Retro
Примеры команд Retro:
- retro play «https://www.youtube.com/….» — воспроизводит трек по ссылке.
- retro play queue_music — запускает плейлист.
- retro play ~/Music/ — воспроизводит все файлы в папке по очереди.
- retro play ~/Music/Despacito.mp3 — включает конкретный файл.
Так работает Retro
Изображение: Malwarize / GitHubОткрыть репозиторий
Библиотека для работы с SVG
SVG.js
Главный плюс библиотеке в небольшом размере, а это значит, что её можно использовать в проектах и не нагружать систему. Кроме того, она работает быстрее конкурентов, например Snap.svg.
Открыть репозиторий
Бесплатный учитель шахмат
Chessli2
Приложение можно запустить локально по инструкции в репозитории. Для интеграции с Lichess понадобится токен API.
Открыть репозиторий
UI для лендингов
Page UI
Лендинг, сделанный с помощью Page UI
Скриншот: Shipixen / Page UIОткрыть репозиторий
Распечатываем React
ReactToPrint
Скриншот: ReactToPrint / Skillbox Media
У проекта есть демо, в котором можно попробовать разные варианты печати компонентов.
Открыть репозиторий
Универсальный перетаскиватель
Swapy
Перетаскивание элемента с помощью Swapy
Скриншот: Swapy / Skillbox Media
Библиотеку можно использовать со всеми популярными фреймворками для фронтенда. Swapy доступен в пакетном менеджере PNPM.
Открыть репозиторий
Рисуем графики
Recharts
Скриншот: RechartsОткрыть репозиторий
Калькулятор
Numara
Изображение: bornova / GitHub
Помимо обычных функций калькулятора, Numara поддерживает переменные. Это значит, что можно посчитать промежуточный результат, сохранить его и после использовать для других подсчётов. Также приложение строит графики функций, конвертирует валюты и считает выражения с датами, например, «сегодня + 3 недели».
Numara доступен для Windows, macOS и Linux. Есть веб-версия, которую можно открыть даже в мобильном браузере.
Открыть репозиторий
Умный навигатор по папкам
Zoxide
Открыть репозиторий
Конвертер в Markdown и JSON
Docling
Готовые файлы в JSON и Markdown нужны для нейросетей. Всё дело в том, что они не очень хорошо понимают привычные для человека форматы, поэтому документы надо чётко структурировать. Разработчики интегрировали LlamaIndex и LangChain, чтобы полученные файлы сразу отправлялись к языковой модели.
Открыть репозиторий
Редактор видео
MoviePy
Если вы не занимаетесь монтажом, но хорошо пишете код на Python, то можете стать участником проекта. Сейчас команда MoviePy ищет разработчиков.
Открыть репозиторий
Консольный файловый менеджер
Yazi
Также в файловом менеджере есть продвинутый поиск, предпросмотр файлов, можно выбрать сразу несколько файлов и отображение папок в отдельных вкладках. Yazi доступен для Windows, Linux и macOS.
Открыть репозиторий