В предыдущем подкасте мы упоминали Wish - один из продуктов под зонтиком группы Charm. 2 ноября группе Charm фонд Gradient от Google выделил USD 6*10e6. Главный репозиторий группы BubbleTea набрал 20к+ звезд на GitHub. BubbleTea - развитие двух предыдущих проектов группы Charm: Glow и Glamour.
Glow - удобный и красивый навигатор командной строки по markdown (md) файлам. less-навигация, плюс легкое сохранение (stashing) симметрично зашифрованных md-файлов в облаке (Charm Cloud). Облако, Charm Cloud, тоже с открытым исходным кодом.
Glamour - библиотека для красивого рендеринга md-файлов в терминале. Можно использовать готовые стили или создать свой. Стили в glamour описываются одним JSON-файлом.
Сам BubbleTea - это фреймворк для создания действительно красивых интерактивных приложений командной строки. Среди компонентов есть почти все: табы, прогресс-бары, спинеры, формы, таблицы, интерактивные селекты и т.д. Если мне нужно будет делать что-то интерактивное для командной строки, то я скорее всего возьму BubbleTea.
Главные преимущества командной строки:
Krater - дебаггер для Laravel в виде устанавливаемого приложения, т.е. есть GUI. Я много лет писал на PHP и знаком с Laravel (но больше предпочитал мета-фреймворк Symfony). Krater накапливает данные о выполнении web-приложения на базе Laravel в локальной БД (SQLite). Данные при этом сохраняются между сессиями.
Первая версия Krater была написана на Rust с GUI-фреймворком Tauri (70К+ звезд на GitHub) весной этого года. Rust был - для команды с бэкграундом разработки на PHP - новым языком. Спустя пару месяцев команда адаптировалась и темп разработки ускорился, но медленная сборка никуда не делась. В итоге решили перейти на Go + Wails (19К звезд на GitHub).
Почему отказались от Rust?
Кстати, если вы планируете написать десктоп-приложение и стоите перед выбором фреймворка для этого, то может пригодится репозиторий сравнения web-to-desktop фреймворков.
В подкасте мы рассматриваем ключевые аспекты работы со слайсами в языке программирования Go. Слайс, представляющий из себя дескриптор сегмента массива, описывается через его три основных параметра: ссылку на первый элемент, длину и емкость. Обсуждаются операции, такие как добавление элементов в конец слайса с использованием функции append, расширение слайса через слайсинг, различия между слайсами с равной длиной и емкостью, а также концепции полного слайса и реслайсинга.
Особое внимание уделяется сложности работы со слайсами из-за неявности информации о длине, емкости и массиве слайса в коде, что требует от программиста формирования ментальной модели для понимания процессов. В подкасте также затрагиваются вопросы оптимизации производительности при инициализации слайсов.
В конце подкаста мы рекомендуем обратить внимание на официальную документацию Go, особенно на раздел "Slice Tricks", и размышляем о необходимости слайсов в контексте отсутствия в Go динамических массивов.