Разработка кода и здоровый шмептицизм
209 subscribers
227 photos
23 videos
1 file
109 links
Пишу про коммерческую веб-разработку с ИИ и без него, тимлидинг и будни моей небольшой студии netspark.ru. 20 лет опыта с Drupal, также работаю с Laravel и Vue.js.

Между постами про разработку пишу просто про жизнь, которая в это время происходит.
Download Telegram
Спешу сообщить вам, дорогие друзья, что на днях я выпустил в интернет свирепых Ботопотамов. Рассказываю, как так вышло.

Как-то зимой я баловался телеграм-ботами и решил написать один, который бы для меня мониторил сайты, писал мне в телегу если что, а также принимал произвольные сообщения и перенаправлял в чатик. Похожиие функции у меня когда-то были в слаке, но со слаком случилось известно что и всё прикрыть. Захотел сделать аналог в телеграме. В общем, в свободное время стал писать бота с админкой и заодно обнаружил, что если писать админку правильно, то она сгодится как для одного бота, так и для множества разных ботов. И писать сразу стало интереснее. 

В общем, закончил промежуточную версию и решил для разнообразия сразу выложить результаты, а не вылизывать их еще три года. Сайт проекта называется Botopotamus.ru. Веб-часть выглядит примерно как на приложенной картинке.

А чат с ботом в телеграме выглядит как другие чаты с ботами в телеграме.

Первого бота зовут Botopotamus Monitor Bot и он умеет следующие вещи:

✔️ мониторит заданный список сайтов (посредством обращения по указанному адресу);

✔️ отправляет сообщение в телеграм, если сайт вернул ошибку, завис, или недоступен;

✔️ сохраняет пинг, с которым загрузился сайт;

✔️ ведет небольшую статистику аптайма, строит графики за последнюю неделю, хранит измерения за 30 дней;

✔️ выводит графики в личном кабинете на сайте, а небольшое summary по аптайму — прямо в чат;

✔️ генерирует (в чате или на сайте) ключик авторизации для отправки уведомлений;

✔️ принимает запросы, авторизованные этим ключиком, и отправляет сообщения из этих запросов в чат. То есть позволяет отправлять из других программ уведомления в телеграм о чем угодно.

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

Если не хотите получать уведомления от моего ботопотама, можно добавить реквизиты своего. Тогда он будет мониторить и отправлять уведомления сам. Но эта опция пока заблокирована, предполагается что она будет частью платного тарифа за сколько-нибудь денег, а тариф еще не включен. Но вручную, если что, подключить можно.

Чтобы начать пользоваться ботопотамами, нужно зарегистрироваться на сайте и в профиле указать никнейм или id в телеграме. Регистрацию через ТГ еще не прикрутил, но сделаю, без неё немного странно.

В ближайшем будущем предполагаю для платформы несколько направлений развития:

1️⃣ использовать бэкэнд для быстрого прикручивания к заказным ботам (с передачей кода платформы);

2️⃣ добавить поддержку Max, на всякий случай. API там похожее а боты уже давно работают;

3️⃣ развить функции мониторинга сайтов, чтобы было поудобней и поинтересней, например добавить проверку сертификатов;

4️⃣ добавить полезных технических плюшек;

5️⃣ выпустить еще несколько ботопотамов, и закрытого, и общедоступного толка.

Примерно так. Заходите в гости к Ботопотамам, если интересно, задавайте вопросы, постараюсь ответить.

Про техническую часть пишу в конце отдельно, чтобы не пугать людей говорением на языках. Бэкэнд сервиса сделан на Laravel с панелькой Orchid. Фрондэнд без изысков: bootstrap 5 + blade, поскольку основные функции доставляются через ботов. Сами боты работают в режиме вебхуков, но есть и поддержка лонг-поллинга (с ним отлаживать удобнее).
Посидели с чатом жопотэ, смастерили скрипт под docker compose, чтобы разворачивать быстро и чтоб всё на контейнерах. Не сказать что вышел шедевр, но думаю может выложить сборку с комментариями, вдруг кому пригодится? Скажем, как пособие, в котором разворачивается:

⚙️ nginx + php + mysql — чтобы приложение работало;

⚙️ redis — для кэшей и очередей;

⚙️ supervisor — чтобы очереди всегда обрабатывались;

⚙️ certbot — для https;

⚙️ cron для крона;

⚙️ logrotate чтобы автоматически пересохранять логи за несколько дней;

⚙️ postfix с opendkim — чтобы отправлять письма с восстановлением пароля и они долетали до адресатов.

Незамысловато, но зато всё работает. Хочу добавить horizon, loki, возможно прометея с графаной по классике, и еще пару вещей.
🔥2👏21
Как известно, ИИ заменяет нас одного за другим. И вместе с тем создает новые рабочие места)
"Вывожу из двухнедельного вайбкодинга", "кодирую на год от джемини", "Снимаю с чата жопотэ, порчу перплексити" — вот где будущее!
🙏1
Forwarded from VG/Двач (Nikko)
ИИ создаёт новые профессии: «Vibe code cleanup specialist» — теперь так называют себя люди, готовые за дополнительную плату исправить весь тот код, который сгенерировали нейросети
😁3👀3
Пострижен газон.
Путь лопаты и снега
осенью ждёт нас.

🍂 🥷
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
В английском языке есть такая устоявшаяся и часто встречающаяся идиома — in spades. Означает она:

— в большом количестве
— очень много
— максимально достаточно
— в изобилии, избытке

To have something in spades значит — у тебя чего-то дофига, как у дурака махорки. Применяется как в прямом, так и в переносном смысле (дофига ума, наглости, проблем).

А пошла идиома, как оказалось, из бриджа и карточных игр. Дело в том, что spades (то есть пики) — в бридже и многих других играх старшая масть. Соответственно, если у тебя есть на руках какая-то комбинация, это хорошо. А если она на пиках (то есть in spades), то максимально хорошо. Как в покере, стрит флеш на пиках лучше, чем какой-либо другой стрит флеш.

Козырная, в общем, идиома.

#TIL
👍7
Вжух! И лето прошло.
Проведи последние выходные лета грандиозно, username!
6
Хотел последнюю субботу лета провести как всё лето. Сидеть, кодить и тимлидствовать, периодически выходить на веранду, ворчать, что погода хорошая, а надо кодить и тимлидствовать.

Но реальность внесла коррективы и я отправился в город. Погода чудная, а от обилия живых человеческих людей на улице стало совсем благостно. И Мия Романовна смеялась в голос над уходящим августом. Это, конечно, между попытками выскочить из коляски, сбежать по ступеням и уйти вплавь по-чапаевски.

В городе, короче, хорошо. И тикеты в джире, смотрящие на меня с укоризной, ничуть не расстраивают.
🤩43
Если пропустили хорошую новость, сообщаю: с сегодняшнего дня отменяется ежегодная традиционная апрельская миниатюра "Предприниматели пишут письмо в СФР для подтверждения кода деятельности"
https://e-kontur.ru/blog/16117/ne-pridotsya-yezhegodno-podtverzhdat-okved
👍1
А вот дайджест моих постов за август и французский собак для милоты.

Технические 👨‍💻
— Написал лонгрид с примерами о том, как новичку попробовать TDD и объяснением основных принципов. Больше апологетики TDD — вскоре.

Нетехнические ✍️
Куда «почему-то» пропадают разработчики

Про жизнь 🧐
— Один день из жизни вайб-кодера

А ещё в августе я выпустил в интернет свирепых ботопотамов — сервис мониторинга сайтов с репортами и произвольными в телеграм и платформу для запуска произвольных телеграм-ботов. Зайдите в гости на Botopotamus.ru, погладьте ботопотамчика.

Пост за июль
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Я календарь переверну и снова среда, my dudes!
Вот вам по случаю средовое пиво, чтобы не пропасть в кострах рябин
👍5
Я не понимаю. Какое сейчас время? Время слать кружочки?
😁5🦄1
Запустил я в общем сериального ботопотама здесь, в телеграме:

https://t.me/tv_botopotamus_bot 🚀

Бот рассказывает:
1) что сериального выходит сегодня
2) какие премьеры и возвращения выходят в этом месяце

Например в сентябре к нам вернутся Slow Horses (да!) и Brassic (что там еще показывать?!). А Netflix выпустит очередную попытку экранизировать Wayward Pines (что довольно интересно, но раньше получалось не очень).

Пока бот выдает расписание для США, Великобритании и глобальных стримингов, и только для сериалов на английском языке. Подробности расскажу позже.

#сериалы #разработка
👏53
Как-то сделали мы крутой магазин на Drupal 9 американскому отделению известного бренда, называть который конечно же не следует.

Импорт товаров, постоянная синхронизация складов, десяток видов доставки, трекинг, фасеты. Поиск и каталог на Apache Solr с кастомизированным индексом: заказчик хотел, чтобы некоторые атрибуты товара отображались в каталоге как отдельные позиции, а страница у товара была при этом одна.

Пару лет поддерживали, до Drupal 10 поапгрейдили. А потом решил заказчик сменить всю маркетинговую команду, а команда, соответственно — субподрядчика по сайту, то есть разработчика.

А потом новые подрядчики приходят и говорят — проконсультируете нас по коду, если что, расскажете чего зачем?

Я говорю, конечно, завсегда, обращайтесь. А они через несколько дней такие — вы знаете, мы все изучили, и у вас так хорошо написано, всё понятно и без комментариев.

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

Ведь закрыть задачу в трекере и закрыть задачу в трекере хорошо — это, как говорится, две большие разницы. И мы будем дальше стараться, свой ли проект, чужой, можно ли его всем показывать, или нельзя, или его потом вообще заберут. Такая наша работа.

Думаю только — вот бы и нам такие проекты на поддержку передавали.
👍6
☝️ Да, было бы здорово, конечно. Но где бы тогда я находил вот такие экономичные паттерны разработки:

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

Экономим две минуты
Допустим у тебя есть модуль или плагин, который больше не нужен. Но в то же время есть задача в трекере, совершенно с модулем не связанная, но для неё нужно написать немного кода. Правильный порядок действий:
1. Сотри всё что происходило в ненужном больше модуле.
2. Вставь туда новый функционал.
3. Описание и название модуля не меняй. Все равно никто не читает.

Экономим… что-то экономим
Определенно, это жемчужина моей небольшой и беспорядочной коллекции.
Нам нужно аяксифицировать кнопочки в Drupal. Чтобы события не навешивались повторно, используется once(), который добавляет элементу атрибут data-once="ajax". Но чтобы враги ничего не поняли, сделаем так:

1. Кнопочки будем рендерить сразу с атрибутом data-once="ajax" 😮
2. В коде JS первым делом удалим этот атрибут 😱
3. Скрестим пальцы и вознадеемся на правильный порядок исполнения и что вызов ajax-биндинга произойдет позже и не заметит удаленных атрибутов 🤯

Возможно, таким образом пытались победить какие-то «гонки» в JS. Ведь, как известно, чтобы победить racing condition, нужно самому стать racing condition.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5