The Dragon Code News
260 subscribers
218 photos
7 videos
4 files
239 links
Рассказываем о том, над чем работаем и что может быть полезным разработчикам 🙂

dragon-code.pro
Download Telegram
HTTP Macros - это расширение функциональности Http фасада для удобства преобразования данных.

Из коробки предоставлено два базовых метода - toData и toDataCollection, преобразующих возвращаемые данные в конкретный класс или коллекцию классов.

Также можно легко создать и зарегистрировать любой макрос.

https://github.com/TheDragonCode/laravel-http-macros
🔥4
Laravel Http Macros 1.3.1 released

Changed

- Added information about requests to the configuration section
- Removed default helper files
- Removed unnecessary block from README.md

- Removed unused class for tooltips in Laravel Idea

Fixed

- Fixed dock block typing for extending the Response object

https://github.com/TheDragonCode/laravel-http-macros/releases/tag/1.3.1

#laravel_http_macros #http #laravel #macros
🔥 The algorithms — крупнейшая библиотека алгоритмов с открытым исходным кодом на GitHub

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

👉 Сайт: https://the-algorithms.com/ru

👉 GitHub: https://github.com/TheAlgorithms
🔥1
Во время разработки иногда возникает необходимость быстрой подсказки имён файлов из какой-либо директории.

Обычно мы пишем полный путь начинающийся либо от текущего местоположения (__DIR__), либо от функции-хелпера Laravel (base_path(), resource_path() и т.д.).

Минусы этого способа в том, что:

1. нужно всегда помнить где находится файл либо искать его, надеясь на подсказки шторма;
2. таких мест вызова может быть много и в случае изменения расположения файлов, нужно их все обновлять.

При помощи плагина Laravel Idea для PhpStorm можно значительно упростить это действие.

Допустим у нас есть функция webhook(), в которую мы хотим передавать не полный, а относительный директории путь.

Для этого создаём в корне проекта файл ide.json и вставляем в него следующее содержимое, не забыв изменить имя функции (или нескольких), а также путь к директории:

{
"$schema": "https://laravel-ide.com/schema/laravel-ide-v2.json",
"completions": [
{
"complete": "directoryFiles",
"condition": [
{
"functionNames": ["webhook"],
"place": "parameter",
"parameters": [1]
}
],
"options": {
"directory": "tests/Fixtures",
"recursive": true
}
}
]
}


И добавляем префикс директории в функции. Например:

function webhook(string $filename): void
{
$content = json_decode(file_get_contents(
base_path('tests/Fixtures/' . $filename)
), true);

// some actions
}


Всё! Обращение к пути выглядит компактно, красиво и функционально:

it('with reply', function () {
webhook('Callbacks/welcome.json');
});


В качестве бонуса работает Ctrl/Cmd+Click по пути - плагин перебросит Вас в файл 🙂
🔥5
⚡️ Laravel Octane для тех, кто хочет быстро вкатиться, но не знает с чего начать

Возникла необходимость запустить вышеупомянутый сервис с RoadRunner на одном из проектов, и чтобы не ходить вокруг да около, прилагаю процесс в "сухом" виде:

При разработке под Windows нужно обязательно войти в подсистему Linux (wsl или в контейнер виртуализации), так как под самим Windows запустить RoadRunner можно, но вот Laravel Octane - нет. Причина в использовании функций сигналов, отсутствующих в Windows. Дальше для всех одинаково.



1. Устанавливаем зависимости:

composer require laravel/octane spiral/roadrunner spiral/roadrunner-cli spiral/roadrunner-http


2. Выполняем консольную команду php artisan octane:install выбирая следующие пункты:
2.1. Which app? roadrunner
2.2. Download binary? Yes

Всё. Октан готов к работе. Можете запускать консольную команду php artisan octane:start --poll и наслаждаться им.

Но есть один нюанс, во всяком случае под Windows. Запуская октан в wsl, он не будет сохранять состояние приложения и при каждом обновлении страницы будет его заново инициализировать. Решение очень простое - нужно указать количество воркеров для работы, например, один:

php artisan octane:start --poll --workers=1


Всё. Теперь октан будет гарантированно запоминать состояние. Но есть, опять же, нюанс - если к этой команде добавить параметр --watch, то она упадёт.

Для сравнения, загрузка страницы со списком товаров из базы при старте через artisan serve и с БД в докер-контейнере, занимает у меня около 150-300 мс. Сервис, запущенный из wsl отдаёт данные за 5-7 секунд. Laravel Octane справляется за 41 мс.

Также можно дополнить блок scripts в файле composer.json:

{
"scripts": {
// ...
"post-install-cmd": [
"@roadrunner"
],
"post-update-cmd": [
"@php artisan vendor:publish --tag=laravel-assets --ansi --force",
"@php artisan vendor:publish --tag=telescope-assets --ansi --force",
"@roadrunner"
],
"octane": [
"Composer\\Config::disableProcessTimeout",
"@php artisan octane:start --poll --workers=1"
],
"roadrunner": [
"rm -f rr",
"@php vendor/bin/rr get-binary -o linux"
]
}
}


После этого, при вызовах команд composer install и composer update октан будет автоматически обновляться.

Учтите, что обновление происходит путём скачивания zip архива при помощи curl без пробрасывания авторизационного токена, установленного в Composer, поэтому чревато схватить ошибку 403 API rate limit exceeded.


И вторая команда - composer octane вместо запуска самого октана.

Всё 🙂
🔥74👍1👎1
🤖 Поддержка нескольких ботов в DefStudio Telegraph

Программный продукт Telegraph от DefStudio работает шустро и работать с ним одно удовольствие. Но не обошлось и без ложки дёгтя в этом меду - несмотря на возможность работы с несколькими ботами, обработчик для них всех будет лишь один. Благо есть лёгкий способ это исправить.

https://habr.com/ru/articles/848240/
👍8🍓2💊1
Forwarded from Kvede Новости
Состоялся релиз первой альфа-версии проекта Kvede Bot

Всё что можно было протестировать юнит-тестами и руками в тестовых группах, протестировано.

В данный момент текущий функционал @KvedeBot содержит всё что было у @LightCleanerBot с некоторыми доработками в сторону улучшений.

Веб-интерфейса пока ещё нет, он появится в следующих релизах после фиксов возможных багов.

Инструкция по миграции:

1. Удаляем из группы @LightCleanerBot
2. Добавляем в группу @KvedeBot с обязательным назначением прав администратора на удаление сообщений и блокировку пользователей.
3. Всё.

Старый бот будет полностью отключен 31-го октября.
Forwarded from Kvede Новости
Проект находится в стадии альфа-тестирования

В это время использовать его может каждый абсолютно бесплатно.

Для начала работы добавьте @KvedeBot в Вашу группу и назначьте администратором, выдав права на удаление сообщений и блокировку пользователей.

Тонкие настройки групп можно передать @Helldar (веб-интерфейс находится в разработке) или в чат поддержки @KvedeSupport.

Главный бот: @KvedeBot
Новостной канал: @KvedeNews
Группа поддержки: @KvedeSupport
Фид спам-блокировок: @KasFeed

Панель управления: https://kvede.com (в разработке)
Фид блокировок: https://kas.kvede.com/feed (в разработке)

Группа в ВК: https://vk.com/kvede
👍3
Forwarded from Kvede Новости
Большой апдрейт 🤩

За последние четыре дня код проекта несколько вырос начиная с полного рефакторинга тестов, что позволило полностью покрыть все стороны работы бота, сделав простым и прозрачным процесс "общения" с Telegram API.

Коротко о нововведениях:

- При классификации текста на предмет спама теперь учитывается не только имя пользователя, если оно было указано, но ещё и названия кнопок, если они были прикреплены к сообщению;
- В личные фиды блокировок были добавлены кнопки для взаимодействия с заблокированными пользователями. Доступно три кнопки: "спам", "не спам" и "избранные". Названия можно переименовывать для каждого канала;
- Добавлен новый модуль "Избранные пользователи". Он позволяет отмечать пользователей в чате, на которых не будет распространяться анти-спам проверка;
- Посты из каналов теперь не будут удаляться при анти-спам проверке;
- Сообщения длиной менее трёх символов не будут проходить классификацию спама;
- Исправлена ошибка инициализации системы, вследствие которой в ответ на вебхук для условного Ивана писалось сообщение "Руслан, Вы не можете это использовать", где имя "Руслан" могло рандомно меняться;
- Добавлен прогрев авторизационного токена Яндекса, что при деплое позволит сразу закэшировать его результат. До этого первый запрос к нему длился около 5-10 секунд, т.к. системе нужно было время для шифрования данных при подготовке запроса;
- Теперь для администраторов и "обычных" пользователей бот будет показывать разные наборы команд, в т.ч. на разных языках (пока что доступны русский и английский, но кнопки могут иметь прежний вид, т.к. функционал тестируется);
- Улучшили работу с колбэк функциями. Telegram не позволяет передавать данные длиной свыше 60 байт, вследствие чего для некоторых методов колбэки не срабатывали, т.к. совокупность идентификаторов чата, сообщений, пользователя и названия методов превышала допустимый объём. Теперь такого не будет;
- Исправлена ошибка при обработке плейсхолдера с частью отсутствующих данных;
- Исправлена ошибка определения идентификатора сообщения при вызове колбэков.

Далее в очереди новый модуль "Доверенные пользователи", переработка системы приветствий и команда проверки настроек чата 👷‍♂️

@KvedeBot | Чат поддержки: @KvedeSupport
Forwarded from Kvede Новости
@KvedeBot - Ваш надёжный помощник в борьбе со спамом

Хотите избавиться от спама в вашей группе или канале в Telegram? Тогда наш @KvedeBot может стать вашим надёжным помощником! Он автоматически удаляет спам и блокирует нежелательных участников, чтобы вы могли сосредоточиться на общении с друзьями и коллегами. Просто добавьте бота в свою группу или канал, назначьте его администратором и наслаждайтесь чистым и безопасным общением в Telegram!

Бот находится в стадии beta разработки и абсолютно бесплатен для использования.

@KvedeBot | Чат поддержки @KvedeSupport
❤‍🔥11👍1
Почему мы постим новости о каком-то @KvedeBot?

Всё просто! Этот проект - наша разработка 😎
3