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

dragon-code.pro
Download Telegram
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
Forwarded from Kvede Новости
📣 Встречайте обновление 0.16 beta!

Мы сделали наш продукт ещё лучше, чтобы управление группами и борьба со спамом были максимально эффективными.

Что нового?

- Отслеживание новых участников. Больше не упустите ни одного пользователя! 🥳
- Проверка настроек чата. Удобная команда /check всегда под рукой.
- Защита от блокировок. Спамеры больше не помешают в личных группах и избранных чатах. 🚫
- Исправление ошибок. Теперь сообщения отображаются корректно, даже если они отправлены от имени публичного канала.

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

Не упустите возможность попробовать новое обновление! Установите его прямо сейчас и убедитесь в эффективности изменений. 🚀
5
Новая версия Laravel 11.32 принесла небольшой сюрприз тем, кто проверяет факт инициализации классов через хелпер app()->resolved().

На первом скриншоте отображено поведение на версии 11.31 и ниже (верхний блок) и 11.32 (нижний блок).

На втором скриншоте отображено решение проблемы, во всяком случае для тестов.
Быстрое обновление данных в снапшот-тестировании

При изменении данных в снапшотах, официальная документация PEST рекомендует вызывать консольную команду vendor/bin/pest --update-snapshots.

Работает она достаточно просто: удаляет содержимое папки tests/.pest и запускает тесты в "обычном" режиме и принцип работы самих тестов не менее прост: если файлов нет, они будут созданы, иначе результат выполнения будет сверяться с тем, что существует в файлах.

К сожалению, параметр --update-snapshots не работает при запуске параллельного тестирования, но есть один лайфхак - нужно всего лишь удалить вышеупомянутую папку и тогда тесты будут создавать новый дамп.

Для упрощения взаимодействия можно использовать скрипты композера:

{
"scripts": {
"test:unit": [
"Composer\\Config::disableProcessTimeout",
"@php artisan test --parallel --recreate-databases --drop-databases"
],
"test:update": [
"rm -rf tests/.pest",
"@test:unit"
]
}
}


Теперь при вызове команды composer test:unit будут запущены параллельные тесты для проверки, а при вызове composer test:update будут обновлены снапшоты.

Разница в цифрах:

$ composer test:update
> rm -rf tests/.pest
> @php artisan test --parallel --recreate-databases --drop-databases

...<some>...

Tests: 517 passed (2775 assertions)
Duration: 57.83s
Parallel: 16 processes

$ php artisan --compact --update-shapshots

...<some>...

Tests: 517 passed (2775 assertions)
Duration: 223.81s


Пользуйтесь 😎
🔥1
Не знаю как так получилось, но сегодня RoadRunner приказал долго жить...

В рамках одной из задач был задеплоен код следующего содержания (упрощён):

try
{
// какое-то действие
return $result;
} catch (Throwable $e) {
return report(
fn () => new CustomException($e, $chat, $user, $module),
fn () => null
);
}


При деплое также стоял на его триггер и в консоли вывело ошибку:

PHP Fatal error:  Maximum call stack size of 8339456 bytes
(zend.max_allowed_stack_size - zend.reserved_stack_size) reached during compilation.
Try splitting expression in .../vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 1


И всё. Даже убрав этот участок кода, перезапустив RoadRunner с Laravel Octane и даже перезапустив сам веб-сервер, RR отказывается запускаться постоянно дополняя лог текстом:

worker stopped, and will be restarted
worker stopped, and will be restarted

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

При всём этом:
$ art octane:status

INFO Octane server is running.


Решение, пока что, не найдено.
Проблема найдена и устранена...

# .env

#
LOG_CHANNEL=stack
LOG_STACK=stack

#
LOG_CHANNEL=stack
LOG_STACK=single

Вот что значит не брать во внимание мелочи...

...и деплоить не критические изменения в час ночи...🤦🤦🤦

В дополнение, эти изменения были внесены задолго до того злосчастного деплоя. На сервере используется кэширование конфигураций и в какой-то момент почему-то подумал что так будет лучше - зашёл, обновил да и забыл... А при деплое, разумеется, и не вспомнил даже... Причину нашёл когда перебирал все логи, поднимал все выполненные за последние сутки задачи, вспоминая что делал, и только так удалось обнаружить первоисточник.
🤯6👍2
Завтра состоится релиз PHP 8.4

В нём нас ожидают:

- Хуки свойств
- Асимметричная область видимости свойств
- Атрибут #[\Deprecated]
- Новые возможности ext-dom и поддержка HTML5
- Новые функции array_*()
- SQL-парсеры, специфичные для драйверов PDO
- new MyClass()->method() без скобок

И немного ещё 🎉

https://www.php.net/releases/8.4/ru.php
🔥5
Немного не по теме, но будьте бдительны и не открывайте картинки и ссылки от незнакомых лиц!
🍌1🤝1
Forwarded from Kvede Новости
Классификаторы на базе YandexGPT в публичном доступе

С одной стороны это отличная новость, ведь Яндекс завершает этап тестирования классификаторов выводя их в продакшен 9-го декабря.

А с другой, теперь все запросы к нему будут платными. До этого момента у них были другие правила тарификации, но пробный период позволил им оценить стоимость и теперь за каждый запрос длиной до 250 токенов к нему они будут взимать по 15 копеек.

Учитывая что некоторые спам-сообщения достигают объёма в 300-400 токенов, стоимость их проверки будет варьироваться от 15 до 45 копеек, в среднем. Также стоит учесть, что классификатор проверяет абсолютно все сообщения на факт спама.

Мы уже приняли меры для сокращения данных затрат - если текст раннее был проверен классификатором, он не будет повторно проверяться.

По нашей статистике, с момента первого релиза @KvedeBot 27-го октября, было:

- подключено 28 чатов
- опубликовано 3'120 сообщений за октябрь (~624 в день)
- опубликовано 32'689 сообщений за ноябрь (~1089 в день)
- опубликовано 4'088 сообщений за декабрь (~1362 в день)

Да, с 1 по 3 декабря уже 4 тысячи сообщений было опубликовано.

Таким образом, можно предположить средний ежемесячный счёт в 5'500 рублей грубых подсчётов с учётом минимальной статистики использования.

Тем не менее, @KvedeBot продолжит работать в бесплатном режиме для всех подключенных чатов за наш счёт.

Поддержать нашу работу Вы можете как на Boosty, так и на YooMoney.

Также уведомляем о том, что при превышении объективных лимитов по списанию денежных средств за проверки запросов, мы будем вынуждены ограничивать запросы к классификатору.
👍1
WSL не хочет работать с репозиторием при подключенном VPN, в том числе корпоративным? Решение есть!

Если Вы работаете под управлением ОС Windows с подключенным VPN и хотите взаимодействовать с git репозиторями из WSL, но постоянно получаете ошибку подключения, решение очень простое:

Перейдите внутрь WSL выполнив консольную команду wsl, далее откройте файл /etc/wsl.conf и добавьте в него параметр:

[network]
generateHosts = false


После этого выйдите из wsl и ребутните его консольной командой wsl --shutdown. Всё. После этого сеть заработает.

Последовательность команд:

wsl
sudo nano /etc/wsl.conf

# insert params

# ctrl + x
# y
# enter

exit
wsl --shutdown
🔥4
Хотите запускать проекты внутри WSL без использования JetBrains Gateway? Легко!

Есть два варианта держать проекты внутри подсистемы Linux работая с ними "снаружи".

Вариант 1
: при создании проекта, например, в JetBrains PhpStorm, выбрать пункт создания проекта в WSL. В этом случае Шторм зайдёт внутрь подсистемы и начнёт скачивать выбранную Вами IDE, после чего при помощи JetBrains Gateway будет с ней взаимодействовать.

Но есть вариант ещё проще:

Вариант 2: все файлы подсистемы доступны из Windows по пути \\wsl$. Да, просто открываем и всё. Дальше останется выбрать путь при создании проекта. Просто работаем с папкой как с обычной папкой. В моём случае проекты лежат по пути \\wsl.localhost\Ubuntu\home\helldar\projects\
🤔3🔥2👍1
Laravel Data Dumper 1.1.1 released

What's Changed

- The code style has been fixed
- Removed tests for minor versions of MySQL 8
- Added the ability to specify links to model classes
- Fixed tag

https://github.com/TheDragonCode/laravel-data-dumper/releases/tag/1.1.1

#laravel_data_dumper #data #dumper #laravel
ChatGPT идёт лесом - LLama нашё всё 😏

Запустить нейронную модель Meta Llama 3.1 на локальном компе в докере очень просто:

docker run -d -p 11434:11434 --gpus=all -v ollama:/root/.ollama --name ollama --restart always ollama/ollama

docker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda

docker exec ollama ollama run llama3.1

И всё :)

Дальше можно с ней хоть через консоль общаться (не удобно), хоть через веб-интерфейс (https://localhost:3000).

Основная фишка - модель может работать без интернета и также можно её подключить к тому же PhpStorm через плагин https://plugins.jetbrains.com/plugin/21056-codegpt. Вдобавок, работает через Docker, так что в ОС ничего дополнительно ставить не надо, но если хотите - можно 🙂

Модель может работать на CPU, но это будет значительно медленней чем на ядрах RTX GPU.

PS:
- Почему модель Llama 3.1? Она же старая. Есть версия 3.3
- Да, есть, но сколько для неё нужно ресурсов?.. Модель Llama версии 3.1 доступна в трёх вариантах: 8b, 70b и 405b, где "b" означает количество миллиардов параметров. Для модели 8b нужно около 10 гигабайт оперативной памяти, например. Модель Llama 3.2 доступна в вариантах на 1b и 3b. Лично мне это кажется очень маленьким. А версия Llama 3.3 доступна только в варианте на 70b параметров.


Источники:

- Сервис для запуска: https://github.com/ollama/ollama
- Веб-интерфейс: https://github.com/open-webui/open-webui
- Где нашёл: https://www.youtube.com/watch?v=bYn8JNTFXpc
🔥52👍2