Laravel Multilang

Добавили автоматические роуты для интернационализации.

Было:

Route::get('/', 'ShowHomeController')->name('en.home');
Route::get('/fr', 'ShowHomeController')->name('fr.home');

Стало:

Route::multilingual('/', 'ShowHomeController')->name('home');

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

protected $middlewareGroups = [
    'web' => [
        \ChinLeung\LaravelMultilingualRoutes\DetectRequestLocale::class,
        // ...
    ]
];

Пример конфигурации:

// config/locales.php
'supported' => [
    'en',
    'es',
    'fr',
],

Пакет GitHub

Laravel Horizon

Познакомился недавно с laravel horizon, очень прикольная, а главное полезная штука для моих проектов.

Некое управление джобами и очередями в лаврухе с удобной админой со всякой метрикой и управлением джобами.

Не буду пересказывать вам что оно из себя представляет т.к. в официальной доке все написано, НО столкнулся с проблемой, что у меня были очень долги джобы связанные с запросами на сторонние сервисы для сбора большой информации и поэтому джоба часто улетала в тайм аут . Вы скажете почему ты ее не разобьешь на еще другие джобы, но это не решит проблему, вообщем после серфинга и перебора кучи документации узнал про флаг —timeout я думаю обьяснять зачем не стоит, так как тут все понятно 🙂 (не знаю как обьяснить 😀 )

Вообщем поставил на 0 и все работало как надо

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

Короче поставил таумаут 0, а ретрай больше. Вроде сработало и работает. Будем смотреть что будет дальше

А так очень удобная фича, особенно порадовало распределение воркеров по нагрузке очередей.

Puphpeteer или библиотека для веб скрапинга

Недавно пришлось переписать скрипт с py3 на php из-за частых зависаний (зомби процессов). Кстати, все тот же хром только типа консольная версия.

Оказывается используваемая библиотека написанная на nodejs, которую я использовал для питона есть и на пехепе.

Вот же она https://github.com/nesk/puphpeteer — интерфейс

Дока самой библиотеки https://github.com/GoogleChrome/puppeteer/

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

Вроде все работает быстрее и без зависаний, что главное было достигнуто.

Надеюсь теперь не нужно будет каждый раз заходить на сервер, проверять логи, не зависли ли скрипты, затем убивать процессы и удалять pid (не спрашивайте почему 🙂 )

Вообщем юзайте пехепешники 🙂 GL & WS (Web scrapping)

Laravel helpers

О очень обожаемом нашем фреймворке Laravel имеются вспомогательные функции.

$truncated = Str::limit('The quick brown fox jumps over the lazy dog', 20, $replace = '');

Пригодится для обрезки строки.

$plural = Str::plural('car', 123); //cars
$singular = Str::singular('cars'); // car

Преобразование в многочисленный род и наоборот в ед.

$slug = Str::slug('Laravel 5 Framework', '-');

Для урлов

Laravel SQL команды миграций в файл.

Иногда возникает проблемы деплоя на продакшен не через git как мы все привыкали, а через ftp, но как быть с миграции, когда хостинг самый дешевый и вызвать миграции способом php artisan migrate не вариант, то следующая команда вам поможет.

php artisan migrate --pretend > migrations.sql

Hello world или «вот я и блогер» :)

Ну вот я и добрался до собственного блога о разработке. Здесь периодически буду выкладывать в виде черновиков по различным лайф хакам или подсказкам при программировании.