axenov.dev
44 subscribers
26 photos
94 links
Канал о разработке, FOSS + кросспост из блога

Навигация: https://t.iss.one/axenov_dev/11

🚀 https://t.iss.one/axenov_dev?boost
✍️ @axenov_blog — оффтоп
🤕 @anthonyaxenov
🌐 https://axenov.dev
Download Telegram
Спец. рубрика — "Я не умею пользоваться IDE"

Для #laravel 5.5+, помимо основной документации, на основе докблоков генерируется подробный справочник по всем классам и их методам.

https://laravel.com/api/9.x/index.html

#php @axenov_dev
😁1
Есть такой малоизвестный микрофреймворк FlightPHP.

Я решил им воспользоваться для рефакторинга iptv.axenov.dev. Нацепил твиг, обмазал коллекциями, насыпал своих хелперов с конфигами, завернул в докер и получилось годно.

Местами запаривался, потому что привык запариваться к некоторым (действительно удобным) фишкам #laravel и попытался по минималке их имплементировать. Потом подчищал откровенно чересчур усложнённое, а местами поклал болт.

В чистом виде, этот проект на FlightPHP мог бы уместиться в паре файлов, как и ранее, но я хотел предсказуемого порядка. (Таки приятно, когда сам строишь свой движок, не упираясь в кем-то придуманную структуру и правила.)

Роутинг, шаблонизатор какой хочешь, DI, реквесты, респонсы, мидлвари. Всё, что тебе надо — в единственном фасаде. Чего не хватает — расширил фасад через map()/register() и ураагша.

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

Однако он довольно прост в использовании, гибок, шустр и расширябелен для небольших проектов и прототипов. Сам по себе зависимостей не тянет, самодостаточен, потихоньку развивается.

Вот как всё было плохо, и вот как всё стало прекрасно:
https://github.com/anthonyaxenov/iptv

Короче, рекомендую. Мне нравится. Хочу поверх него дописать свой framework-like boilerplate, чтобы уже на нём писать какие-нибудь небольшие проекты для души. Не везде же симфони с ларами пихать.

#моё #foss #php @axenov_dev
🔥2
PHP Coding Standard Generator

Генератор файлов конфигурации с правилами для PHP Mess Detector (phpmd) и PHP Code Sniffer (phpcs). Выбираешь правила чекбоксами, сохраняешь полученный результат в файл phpmd.xml / phpcs.xml.

Классный помогатор, когда необходимо (на самом деле, абсолютно всегда необходимо) подключить инструмент качественного анализа кода.

#tools #php @axenov_dev
🔥1
Как и хотел, достряпал свой бойлерплейт 💃

https://packagist.org/packages/axenov/blessphp

Постарался подготовить максимально готовый минимально сложный проект, который развернул и погнал. Под капотом twig, flightphp, bootstrap 5, ionicons 6, phpunit, готовый docker-compose.yml, мультиязычность, консольный скрипт bless и коллекции от ларки.

Вообще, местами я делал BlessPHP с оглядкой на #laravel (например, bless чем-то напоминает artisan, конфиги, функции-хелперы...). Для работы с БД из коробки (пока) ничего нет, ибо это легко расширяется вручную, но у меня есть желание доработать проект под PDO и Redis через psr-совместимые пакеты. Этого там не хватает и тогда получится вполне самодостаточная связка, при этом проект сильно не разжиреет.

У меня на packagist есть пакет-библиотека, это — проект, считай, чуть иной опыт, интересный. Щупайте, жду issues.

#composer #php #моё #foss @axenov_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3
Flexbox Playground

Простая, наглядная и открытая песочница для изучения работы flex-свойств CSS

#foss #tools #js #css @axenov_dev
👍1
Написал простой скрипт для копирования файлов из одной директории в другую. Что?

Ситуация: syncthing синхронит фотки/видюхи с мобилки на комп в один конец (и создание, и удаление). Это уже хорошо, но мне постоянно приходится держать файлы на мобилке, чтобы потом на компе их скопировать всё куда надо, и только потом уже чистить мобилку. Иначе на компе тоже всё затрётся.

Довольно поздно, но всё же я решил полениться правильно: по мере появления файлов, копировать их из директории syncthing в другую. Эта другая просто будет постепенно копиться и сортироваться мной уже в любое время вручную. Это даст мне безопасно очистить место на мобилке и не потерять копии на компе.

В итоге написал простую обёртку над inotifywait. Он ждёт, пока наступит событие MOVED_TO. Здесь фига в том, что syncthing при синхронизации создаёт временный скрытый файл, пишет его и потом переименовывает (перемещает) в правильное имя. Когда файл записан, событие MOVED_TO, в отличие от многих других, гарантированно возникает лишь единожды. А чтобы игнорировать лишние файлы, я строго урезал нужные по регулярке.

В общем, если у тебя есть какой-то похожий кейс, то можешь заточить скриптик под себя:

👩‍💻 https://gist.github.com/anthonyaxenov/49c640dd4aaee77e8df33d6f5d2eeb0c

#foss #моё #shell @axenov_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
👩‍💻 scottslowe/learning-tools

Репозиторий с материалами для изучения по разным проверенным годами технологиям. Нацелен на профи, которые хотят вкатиться во что-то новое и повысить продуктивность. Обновляется редко, охватывает прежде всего *nix операционные системы, инструменты контейнеризации, деплоя и оркестрации.

#docs #github #codecamp @axenov_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
👩‍💻 tldr.sh

Утилита для получения короткой справки по командам с конкретными примерами использования. Поддерживается сообществом.

#foss #javascript #shell #docs 👨‍💻@axenov_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 direnv.net

Утилита для установки переменных окружения в зависимости от текущей директории. Более простая альтернатива: 👩‍💻 hyperupcall/autoenv

#foss #shell 👨‍💻@axenov_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 ytdlcue.sh (mirror)

Написал скрипт для генерации cue-sheet к аудиофайлам, которые были скачаны через youtube-dl. Вкратце: качаешь аудио-дорожку с YT или YTM (можно моим готовым алиасом) вместе с метаинформацией, запускаешь ytdlcue с указанием аудио файла и БАМ — готовый cue оказывается рядом.

Для этого в видео должны быть метки: их можно заметить по засечкам и названиям конкретных мест на полосе перемотки (например, как здесь).

Когда я собирал инфу о том, какие вообще есть решения, их оказалось по пальцам одной руки, да и те — на питоне и js. Мне потребовались только баш и jq для парсинга json, который выкачивает youtube-dl с метаинформацией о видео.

Скрипт не учитывает некоторые мелочи, но отрабатывает очень хорошо, результат проверен.

#моё #foss #shell 👨‍💻@axenov_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
onelinerhub.com

2800+ примеров однострочных решений по 75 технологиям с объяснениями; как #foss, так и языкам программирования.

#docs 👨‍💻@axenov_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Почему Laravel пытается подключиться к БД при инициализации?

Столкнулся на работе с занятной проблемой на Laravel 9.

Однажды, я, прогоняя тесты phpunit, никак не мог добиться их удачного выполнения: они постоянно падали, но написаны гарантированно верно, вчера их запускал. Через какое-то время всё прошло. Я не был удивлён: на БД-песочнице проводились работы, вскоре она была перезапущена и я таки прогнал тесты с успехом.

Но осознав произошедшее меня обдало ледяным потом -- стоп, а какого хуя? В моих тестах нет подключения к БД!

https://axenov.dev/почему-laravel-пытается-подключиться-к-бд-пр/

#блог #моё
👨‍💻@axenov_dev 👍@axenov_blog
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 git-quick-stats.sh

Утилита для сбора статистики по 👩‍💻 git-репозиторию

#foss #shell #git 👨‍💻@axenov_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 jamesob/desk

Простая и гениальная утилита для ручного управления рабочим окружением оболочки. Например, при вызове desk myproj выполняет shell-сценарий ~/.desk/desks/myproj.sh, т.о. можно на лету менять контекст (шелл-функции, алиасы, переменные окружения) и выполнять прочие необходимые команды для быстрой подготовки к дальнейшей работе.

#foss #shell 👨‍💻@axenov_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Deprecating spatie/data-transfer-object

Пакет для работы с ДТО прекратили развивать. В посте предлагаются альтернативные пакеты, но также можно создать форк и подключить его, либо явно включить пакет в проект.

#php 👨‍💻@axenov_dev
Please open Telegram to view this post
VIEW IN TELEGRAM