Обновить
-2
@borshakread⁠-⁠only

Пользователь

Отправить сообщение

Telegram Боты на Aiogram 3.x: Текстовая клавиатура и Командное меню

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели28K

Привет! Продолжаем разбор темы разработки Telegram ботов с помощью Aiogram 3. В прошлой статье мы рассмотрели:

Магические фильтры (кратко)

Фильтры Command и CommandStart

Роутеры и диспетчер

Создание токена бота через BotFather

Выполнили первый запуск бота

Работали в рамках структуры, разработанной мной

Если вы новичок, предлагаю следовать моей структуре бота, но дальше – на ваше усмотрение.

О чём сегодня пойдёт речь:

Читать далее

Отложенные задачи в рамках микро-сервисной архитектуры

Время на прочтение9 мин
Охват и читатели19K

Часто в проектах возникает необходимость выполнения отложенных задач, таких как отправка email, push и других специфических задач, свойственных доменной области вашего приложения. Сложности начинаются, когда обычного crontab уже не достаточно, когда пакетная обработка не подходит и когда у каждой единицы задачи свое время выполнения или оно назначается динамически.

Для решения такой задачи было создано очередное решение под названием Trigger Hook. Принципиальная схема работы показана на рисунке 1. На схеме показано, что происходит с заданиями в течения всего их жизненного цикла. Смена цвета означает смену статуса задачи.

Читать далее

(Не)очередной MQTT-телеграм-бот для IoT

Время на прочтение6 мин
Охват и читатели17K
Всем привет! Сегодня хочу поделиться опытом разработки универсального телеграм бота для получения информации и управления IoT устройствами посредством протокола MQTT.

Почему (не)очередной? Потому что это не просто бот с двумя захардкоженными кнопками для управление лампочкой, примеров которых в интернете много, а это бот, который поддерживает гибкую настройку подписок и компанд для управления прямо из своего меню, без изменения исходного кода. NoCode solution, так сказать.

Бот разрабатывался на языке Go, исходный код выложен в свободный доступ на гитхаб под лицензией MIT. В статье хочу рассказать о некоторых технических моментах реализации и получившемся функционале с примерами использования.
Читать дальше →

Шаблон телеграмм бота на go

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели28K

Шаблон для телеграмм ботов на go - Ваш надежный помощник в создании удобного и функционального бота.

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

Run Go, Run !

Как я пишу HTTP-сервисы спустя 13 лет работы с Go

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели49K

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

Тот пост оказался довольно популярным и вызвал обсуждения, повлиявшие на то, как я делаю это сегодня. И спустя годы ведения подкаста Go Time, обсуждения Go в X/Twitter и поддержки подобного кода я решил, что настало время обновить информацию.

(Если вы педант и скажете, что Go не совсем 13 лет, то я отвечу, что начал писать HTTP-сервисы на Go версии .r59.)

В этом посте рассматривается широкий спектр тем, связанных с созданием сервисов на Go

Читать далее

Уведомления через Telegram-бота при помощи почтового триггера Yandex Cloud Functions

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели9.8K

Привет, Хабр!

Возможно, многие сталкивались с задачей: есть сервер с некими cronjob-ами, результат выполнения которых хотелось бы мониторить определенному числу лиц, но при этом сервер находится в каком-нибудь intranet и не имеет доступа к сети интернет. Вот и у нас однажды возникла подобная проблема. Единственным доступным средством коммуникации с внешним миром у сервера был почтовый шлюз, через который можно было отправить электронную почту. До некоторого времени задача решалась отправкой нескольких копий письма, но со временем стало понятно, что гораздо  удобнее читать уведомления в Telegram. Такую настройку мы произвели с помощью Yandex Cloud Functions.

Читать далее

Структурированное логирование в Go с помощью Slog

Время на прочтение22 мин
Охват и читатели58K

Более 10 лет разработчики на Go жаловались на отсутствие структурированного логирования в ядре Golang. Участники сообщества Golang даже создали несколько собственных пакетов, таких как Logrus, Zap и Zerolog. В 2023 году, команда разработчиков Google Go наконец-то представила Slog — высокопроизводительный пакет для структурированного ведения логов в стандартной библиотеке Go. Мы перевели гайд о возможностях slog.

Читать далее

Кот, меняющий строки

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели4.4K

Первая и пока единственная сказка из серии cказкок для инженеров-программистов младшего уровня .

Эта статья была опубликована на моём личном блоге. Эта статья практически полностью её повторяет, лишь отредактирована под Хабр (частично).

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

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

Читать далее

SOLID в Go и щепотка паттернов

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели8.4K

SOLID-ная статья о принципах SOLID, которую вы можете предложить тем, кто хочет понять эти принципы в контексте языка Go. Или прочитать самостоятельно, если это интересно и вам.

И да, как сказал бы волк из небезызвестного мультика: «SOLID? Шо, опять?»

Читать далее

Выжимаем из Go максимум производительности

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели18K

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

Меня зовут Никита Галушко. Я старший программист-разработчик в отделе высоконагруженных систем и оптимизации ВКонтакте. В статье поделюсь, какие хитрости помогут использовать Go на полную мощность.

Читать далее

Техники повторного использования кода и разбиения сложных объектов на составные

Время на прочтение19 мин
Охват и читатели14K

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

Будет рассказано о декораторах, стратегиях, Entity Component, Entity Component System, деревьях, State Machine, частично о хранении хуков в React.

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

Читать далее

Причины говнокода во фронтенде. Мнение мимокрокодила

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели38K

Мне не раз попадались такие проекты, от кода которых берет оторопь. Такое чувство, что сами авторы не смогут объяснить - почему у них все выглядит именно так. В этот момент у меня возникает вопрос: как так получилось? Если вас он тоже волнует, то могу пожелать лишь приятного чтения.

Читать

Браузер на страже API-запросов: строим безопасное общение фронтенда с бэкендом

Время на прочтение15 мин
Охват и читатели34K


Команде разработчиков, создающей одностраничное приложение (SPA), рано или поздно придётся столкнуться с ограничениями браузерной безопасности. С одной стороны, нужно сделать так, чтобы фронтенд-сторона могла беспрепятственно общаться с бэкенд API-сервером, а с другой — защитить такое общение от злоумышленников. Сложности начинаются, когда фронтенд и бэкенд находятся на разных доменах, так как на такое взаимодействие браузер накладывает более строгие правила.


В клиентском HTML-JS приложении браузер выполняет важную роль «инспектора» внешних запросов и содержит в арсенале мощные инструменты. Наша задача — установить правила, по которым он будет применять эти инструменты к нашему приложению.


Я — разработчик в хостинг-провайдере FirstVDS. При создании SPA для одного из наших проектов я искал решения и применял их на практике, чтобы подружить фронтенд с API и обезопасить их общение. В этой статье я собрал свои мысли и опыт воедино, чтобы поделиться с вами.

Приступим

Топовые подходы к решению алгоритмических задач

Время на прочтение11 мин
Охват и читатели55K

Привет! Меня зовут Дмитрий Королёв, я бэкенд-разработчик в Авито. В этой статье я расскажу про ключевые аспекты и концепции работы с наиболее популярными алгоритмами и структурами данных. Это поможет и в реальных проектах, и чтобы глубже понять алгоритмические принципы. Статья подойдёт специалистам, которые хотят углубить свои знания в программировании, и укрепить навыки нахождения оптимальных решений алгоритмических задач.

Читать далее

JSON in GO

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели65K

Это перевод одноименной статьи.

Базовое использование

Сериализации JSON в Go

В стандартном пакете encoding/json присутствуют механизмы сериализации marshaling и десериализации unmarshaling JSON.

Пример:

Читать далее

Rust глазами Python-разработчика

Время на прочтение14 мин
Охват и читатели28K


Привет! Мы – часть команды разработки «Рамблер/Медиа» (портал «Рамблер»). На протяжении трех лет мы поддерживаем и развиваем несколько больших python-приложений. Чуть больше года назад перед нами встала задача написать еще одно большое приложение – API к основному хранилищу новостей, и мы сделали это на Rust.


В статье мы расскажем о том, что заставило нас отойти от привычного стека технологий, и покажем, какие плюсы по сравнению с Python есть у Rust.


Мы не ответим на вопрос, почему выбор пал именно на Rust, а не Go, например, или на какой-либо другой язык. Также мы не будем сравнивать производительность Python- и Rust-приложений – эти темы достойны отдельного обсуждения.

Почему язык Go популярен

Время на прочтение16 мин
Охват и читатели107K

Go, также известный как Golang, — это язык программирования с открытым исходным кодом. Представленный публике в 2009 году, Go был разработан для упрощения задач программирования и повышения эффективности. Он родился из потребности в языке, который был бы прост для понимания, эффективен для выполнения и прежде всего способен справиться с масштабами, в которых работает Google. Его отличают простота, эффективность, многопоточное программирование, кроссплатформенность и высокая скорость компиляции.

Меня зовут Рафаэль Мустафин, я ментор на курсе «Go-разработчик» в Яндекс Практикуме. Я написал эту статью для новичков и тех, кто рассматривает Go в качестве первого языка программирования. В ней я приведу практические примеры того, что понимаю под преимуществами Go.

Let's GO

Коллеги, вы меня огорчаете

Время на прочтение12 мин
Охват и читатели226K
В июле и августе 2020 года я, с подачи Григория Петрова, проводил для компании Evrone технические интервью на позицию Senior Golang Backend developer. И, видимо, буду вынужден продолжать проводить, о чём ниже.

Задача формулировалась как «найти человека, который сможет задать и поддерживать высокий уровень профессионализма в применении языка Go». То есть, сформулирована она была по-человечески, перевод на канцелярит — мой. Под эту задачу я сформировал новый опросник вместо того, которым пользовался несколько лет — старый был с жестким закосом под DevOps. Методику, которой я пользуюсь для создания опросников и количественной оценки соответствия кандидатов, я излагал в своем докладе «Техническое интервью как инженерная задача» на конференции Saint TeamLead 2019.

И вот что я хочу сказать вам, коллеги: вы меня огорчаете.


Читать дальше →

SQLx: raw SQL в Rust

Время на прочтение9 мин
Охват и читатели16K

Когда речь заходит об использовании SQL, экосистеме Rust есть что нам предложить: к счастью, нам доступны несколько отличных готовых к использованию решений. SQLx — это чисто асинхронный, независящий от рантайма SQL-крейт, позволяющий использовать проверяемые во время компиляции запросы без какого-либо DSL.

Читать далее

Да кто такой этот ваш impl Trait

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.8K

В преддверии выхода Rust 1.75.0, наполненным async trait-ами и return-position impl Trait in trait, надо разобраться, что такое impl Trait и с чем его едят.

После прочтения статьи вы сможете битбоксить с помощью новых акронимов понимать, что за наборы символов RPIT, RPITIT и т.д. используют в Rust сообществе.

Читать далее

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность