переключает журнал на ридонли когда на диске есть неустранимый сбой. может быть от драйверов ссд в принципе. даже от прошивки ссд.
14:25 15.08.2021
14:44 15.08.2021
Похожие вопросы
вчера в 06:21
Ребят есть возможность сменить путь установки программ из встроенного магазина?
вчера в 08:57
Так вы запускаете флешку с линуксом и у вас ошибка какая то ?
вчера в 14:09
что за флешка? из какого iso-файла записывалась? как?
вчера в 16:19
слёт груба при обновлении винды видали? я да
09:29 25.05.2023
Я в рот манал любителей нн-овых ноутов (подводка к coolstorybob) Купил один чувак ноунеим ноутбук Maibenben (модель x566). Там по стоку стоять должен Linux, причем хрен пойми .
10:29 25.05.2023
товарищи, есть какие проги для обхода frp? с винды помню сбрасывал, но под линукс прог не видел. порылся в тырнете — не нашёл, слепой может. если кто поможет буду благодарен.
15:10 25.05.2023
а где в правилах канала список добрых оффтопов?
Бесплатные сигналы и полезная информация в моем Telegram канале @TRADENJOY
15:09 25.05.2023
Для домашней папки все равно сколько памяти или на раздел ntfs можно перекидывать?
13:52 25.05.2023
Дуал бут может поставить мне? на одной Linux mint на другой windows 11 выделить по 120 гб?
Источник: telq.org
Словарь молодежного слэнга
Информация о художественном произведении, наносящая ущерб его восприятию и коммерческому успех.
Соглашение с чем-либо, с кем-либо; для краткости письма при согласии ставят «+»-это и есть про.
Подкалываешь, смеёшся над кем-то Уточнение: Шутишь над кем-то.
999xz — Никнейм популярного хакера который долго скрывал свою личность, но как позже уточнялос.
Крайнее удивление,сильный испуг,осознание того, что сделал непоправимую ошибку (реже).
Человек, который начал новую тему на форуме или где-то еще.
гражданин интернет-общества. В ЮЖной Корее они представляют собой довольно ощутимую силу и и.
Этими словами просят дать информацию под хайдом (скрытую) вам
видеохостинг, предоставляющий пользователям услуги хранения, доставки и показа видео.Пользоват.
Личная страница Л.с -личная страничка в каких либо соц.сетях
Добавить фото
выложить фотографию в соц.сеть
Слатшеймеры — люди которые думают что в праве указывать девушкам с кем им спать, когда и в как.
Программа для демонстрации фотографий
Видеть какого-либо человека на сайте. видность
Одинокий человек, постоянно сидящий в интернете. Быть угрюмым, мрачным; нерасположенность к об.
приложить к лицу лодонь. переносный смысл — стыд или чтото очень смешное
Когда тебе нравится Запись на стене или в группе
Посетитель имиджборды 2ch.hk
IRC (от англ. Internet Relay Chat) — клиент-серверная система, при помощи которой можно общать.
Файл, доступный только для чтения.
Обязательные книги для прочтения трейдеру 📊 Telegram в комментариях 👇 #форекс #трейдинг #трейдер
Люди, зависимые от Twitter`a .
Ищут сейчас
Сейчас на сайте
Последние Изменения
Популярное за сегодня
Обьясните людям?
Последние Изменения
Интересные определения:
Батл у хиппи означает бутылка (от англ. bottle), а в субкультуре хип-хоп батл — соревнование, состязание (от англ. battle — битва).
Трюкеры — обобщённое название трейсеров (паркура), байкеров, файерщиков, роллеров, скейтеров, ( список нуждается в дополнении ) и других молодёжных неформальных движений уличного экстремального спорта.
Источник: slang.su
Прагматичная разработка-3: телеграм-бот
Финальная часть разработки простого проекта про specialty-кофейни на Кипре. В первой части я рассказал про API микросервис, во второй — про фронтэнд-сайт и теперь — про телеграм-бота.
Update
Как и планировал, добавил тесты с замоканным ApiClient, который возвращает предопределённые ответы неограниченное количество раз в отличии от простых моков Guzzle. Пришлось немного порефакторить основной код.
Изначально перед ботом ставились простые задачи:
- /map — карта кофеен
- /list — список кофеен
- подробности о кофейне
- /random — случайная кофейня
- поиск кофейни по названию
- поиск ближайшей кофейни по своему местоположению или по команде /nearest
В ходе реализации выяснилось, что Telegram не умеет показывать встроенную карту с несколькими маркерами, а также не отправляет местоположение в веб-версии. Поэтому вместо карты пришлось показывать ссылку на сайт с картой, а при вместо ответа при получении пустого местоположения — сообщение-заглушку. Все остальное удалось реализовать.
Код проекта открыт, велкам в пул-реквесты. Адрес бота — в конце статьи.
Архитектура
После «долгих и тщательных раздумий» основой бота была выбрана библиотека Nutgram: наиболее лёгкая, простая и современная. Бонусом идёт полностью настроенный DI-контейнер, благодараю которому можно забыть о ручной инициализации сервисов и их передаче потребителям.
А использование PHP 8.1 позволило написать чуть меньше кода и получить чуть выше производительность. Promoted properties, readonly и строгая типизация сильно облегчают разработку.
Настройки composer’а максимально облегчены аналогично API. Итоговый composer.json.
Обновления от Telegram приходят на webhook endpoint и раздаются обработчикам определённых команд и типов сообщений. Обработчики отвечают самостоятельно или обращаются к REST API за данными. Дополнительно есть Fallback, Exception и ApiError-обработчики для всяких неожиданностей.
Использование коротких single-action invokable-обработчиков позволило уместить всю логику бота в 23 строки!
Пример команды /nearest:
sendMessage(‘Send your location to find the nearest coffee shop’, [ ‘reply_markup’ => ReplyKeyboardMarkup::make(resize_keyboard: true)->addRow(KeyboardButton::make(self::SEND_TEXT, request_location: true)), ]); > public static function getName(): string < return ‘nearest’; >public static function getDescription(): string < return ‘Show nearest specialty coffee shop’; >>
Пример обработчика местоположения:
public function __invoke(Nutgram $bot): ?Message < $location = $bot->message()->location; return $this->sender->sendItem( $this->api->getNearest((string)$location->latitude, (string)$location->longitude), [ ‘reply_markup’ => [‘remove_keyboard’ => true], ] ); > >
Для проверки легитимности сообщений, а также для валидации даных для поиска, используются такие же короткие и ёмкие middleware.
Конфигурация
Общие параметры и названия секретов — в .env, локальные переопределения — в .env.local
Тесты
Пока руками ¯_(ツ)_/¯
Но в библиотеке Nutgram есть достаточные возможно написания тестов, это радует.
Мониторинг
Sentry, в .env достаточно указать пустое значение SENTRY_DSN (для наглядности), а фактическое значение записать в секрет.
Деплой
Всё та же платформа Fly.io, но теперь с machines, загружающимися за 300ms. В общем случае это FaaS (serverless), но в моём случае с php-сервером — это всё-таки обычная VM.
Ради интереса использую встроенный php-сервер вместо обычного сочетания php-fpm + nginx/caddy + supervisor. Docker-образ, конечно, стал меньше, но пришлось использовать отдельный роутер:
- Для пропуска только POST-запросов к обработчикам бота
- Для редиректа dev-домена вида .fly.dev на основной домен
- Раздачи статики (robots.txt, favicon.ico и т.д.)
- Блокировки всех остальных запросов
Итоговый роутер и Dockerfile (такой же слоёный как в API).
CI/CD
Github Action очень прост: обновляем машину flyctl deploy и регистрацию вебхука curl -sS $>/setup.php .
Все секреты хранятся на платформе хостинга и частично дублируются в GitHub production Environment для регистрации вебхука.
На этом этапе бот работает, размещён в продакшн-окружении и доступен всем пользователям. Проект полностью выполнен 🙂
TODO
Теперь, после запуска проекта в спокойном порядке, можно:
- настроить внешний мониторинг доступности
- health check’и по настоящему ответу сервисов, а не просто «живучести» порта
- оптимизировать сборку с Caddy
- попробовать Buildpack
- заменить встроенный PHP-сервер бота на что-то более безопасное
- добавить типизацию (Typescript)
- добавить статистику использования API
- добавить статистику использования бота
- расширить отслеживание ссылок и событий в Google Analytics
- заменить Google Analytics на что-то полегче и более соответствующее GDPR.
Велкам в комментарии!
- Мессенджеры
- PHP
- Анализ и проектирование систем
- Геоинформационные сервисы
- Управление проектами
Источник: habr.com