В свободное время начал изучать Rust и сразу делаю параллели с Go.
Простой Hello World telegram-бот на Go:
А вот на Rust:
Пока не могу найти явные приемущества Rust для веб-сервисов. Может кто-то из практикующих поделится, где реально выстреливает?
#Rust #Golang #разработка #изучаюязыки
Простой Hello World telegram-бот на Go:
package main
import (
"log"
"os"
tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5"
)
func main() {
bot, err := tgbotapi.NewBotAPI(os.Getenv("TELEGRAM_APITOKEN"))
if err != nil {
log.Panic(err)
}
u := tgbotapi.NewUpdate(0)
u.Timeout = 60
updates := bot.GetUpdatesChan(u)
for update := range updates {
if update.Message == nil {
continue
}
msg := tgbotapi.NewMessage(update.Message.Chat.ID, "Hello World!")
bot.Send(msg)
}
}
А вот на Rust:
use teloxide::{prelude::*, utils::command::BotCommands};
use std::error::Error;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
pretty_env_logger::init();
log::info!("Starting bot...");
let bot = Bot::from_env();
teloxide::repl(bot, |bot: Bot, msg: Message| async move {
bot.send_message(msg.chat.id, "Hello World!").await?;
Ok(())
})
.await;
Ok(())
}
Пока не могу найти явные приемущества Rust для веб-сервисов. Может кто-то из практикующих поделится, где реально выстреливает?
#Rust #Golang #разработка #изучаюязыки
👍3
Целых два дня без постов, поэтому захожу сразу с темы для дискуссии - метрики в разработке. Тема интересная тем, что бизнес их очень любит, а исполнители часто стараются избегать, считая бесполезной бюрократией. Выскажу свое мнение, а вы поделитесь своим.
Я считаю, что метрики очень важны, но к ним нужно относиться не как к инструменту, с помощью которого можно карать и миловать, а как к индикаторам, благодаря которым можно принимать решения проактивно, а не постфактум. Я пришел к делению на два блока:
Бизнес метрики - это здоровье продукта, основное. Конечно, всё зависит от специфики проекта, но за основу можно взять Retention Rate (сколько пользователей возвращаются через X дней), NPS, активных пользователей (DAU/WAU/MAU), конверсию в целевые действия, среднее время до целевого действия, количество багов на пользователя и, конечно, SLA/SLO/SLI.
Метрики разработки (не конкретных разработчиков, а всех ролей, которые участвуют!) - тут важны Lead Time и Cycle Time, частота релизов, количество ошибок после релиза, частота неудачных деплоев, MTTR, время код-ревью и эффективность тестового покрытия. Можно добавить соотношение затраченного времени к планируемому,
А как вы относитесь к метрикам? Какие считаете действительно полезными?
#разработка #метрики #management #teamlead #продакт
Я считаю, что метрики очень важны, но к ним нужно относиться не как к инструменту, с помощью которого можно карать и миловать, а как к индикаторам, благодаря которым можно принимать решения проактивно, а не постфактум. Я пришел к делению на два блока:
Бизнес метрики - это здоровье продукта, основное. Конечно, всё зависит от специфики проекта, но за основу можно взять Retention Rate (сколько пользователей возвращаются через X дней), NPS, активных пользователей (DAU/WAU/MAU), конверсию в целевые действия, среднее время до целевого действия, количество багов на пользователя и, конечно, SLA/SLO/SLI.
Метрики разработки (не конкретных разработчиков, а всех ролей, которые участвуют!) - тут важны Lead Time и Cycle Time, частота релизов, количество ошибок после релиза, частота неудачных деплоев, MTTR, время код-ревью и эффективность тестового покрытия. Можно добавить соотношение затраченного времени к планируемому,
А как вы относитесь к метрикам? Какие считаете действительно полезными?
#разработка #метрики #management #teamlead #продакт
🤔3❤🔥1👍1
Вышел Go 1.24! Что нового? 🚀
Решил поделиться интересными обновлениями из свежего релиза Go 1.24. Опубликовали 11 февраля, и там есть действительно полезные штуки:
Наконец-то добавили поддержку обобщённых псевдонимов типов (generic type alias). Теперь при определении псевдонима можно указывать параметры типа.
Оптимизировали runtime - нагрузка на CPU снизилась на 2-3%. Добавили новую реализацию map на основе Swiss Table, улучшили работу с памятью для мелких объектов и обновили mutex.
Для Go-модулей появился механизм отслеживания исполняемых зависимостей через директиву tool (например, линтеров). Теперь можно добавлять их через go get -tool.
В стандартной библиотеке появились криптоалгоритмы из FIPS 140-3 и пакеты для квантово-устойчивого шифрования (ML-KEM-768 и ML-KEM-1024).
Улучшили поддержку WebAssembly - можно собирать Go-приложения как библиотеки или WASI-обработчики.
#golang #релиз #разработка #программирование
Решил поделиться интересными обновлениями из свежего релиза Go 1.24. Опубликовали 11 февраля, и там есть действительно полезные штуки:
Наконец-то добавили поддержку обобщённых псевдонимов типов (generic type alias). Теперь при определении псевдонима можно указывать параметры типа.
Оптимизировали runtime - нагрузка на CPU снизилась на 2-3%. Добавили новую реализацию map на основе Swiss Table, улучшили работу с памятью для мелких объектов и обновили mutex.
Для Go-модулей появился механизм отслеживания исполняемых зависимостей через директиву tool (например, линтеров). Теперь можно добавлять их через go get -tool.
В стандартной библиотеке появились криптоалгоритмы из FIPS 140-3 и пакеты для квантово-устойчивого шифрования (ML-KEM-768 и ML-KEM-1024).
Улучшили поддержку WebAssembly - можно собирать Go-приложения как библиотеки или WASI-обработчики.
#golang #релиз #разработка #программирование
🔥4❤1
Всех с первым рабочим днем. Предлагаю по дороге домой прочитать мою новую статью, первую в этом году - https://habr.com/ru/articles/883300/
Актуальна даже если не работаете с php.
Лайки статье очень приветствуются :)
#docker #laravel #php #nginxunit
Актуальна даже если не работаете с php.
Лайки статье очень приветствуются :)
#docker #laravel #php #nginxunit
Хабр
История создания идеального Docker для Laravel
Казалось бы, упаковать PHP в контейнер и настроить GitHub Actions - дело пяти минут. Но как часто бывает, реальность оказалась сложнее. Это история о том, как я вернулся к разработке на PHP и решал...
🔥5
Стоило только написать первую статью в этом году, как тут же пришли с отличной новостью - мой доклад приняли на конференцию Merge (https://tatarstan2025.mergeconf.ru)! Буду выступать в секции DevOps.
Можно сказать, первая ласточка в этом году. В работе ещё 4 заявки, держим кулачки! 🤞
#конференции #merge #devops #публичныевыступления #татарстан
Можно сказать, первая ласточка в этом году. В работе ещё 4 заявки, держим кулачки! 🤞
#конференции #merge #devops #публичныевыступления #татарстан
tatarstan2025.mergeconf.ru
IT-конференция Merge в Иннополисе 2025
Профессиональная межрегиональная IT-конференция | 25 - 26 апреля 2025 года, Иннополис
🔥10❤🔥1❤1
Сегодня хочу затронуть тему, которая волнует многих DevOps-инженеров и разработчиков: Terraform или Pulumi? Оба инструмента помогают управлять инфраструктурой как кодом (IaC), но подходы у них разные. И если вы ещё не пробовали Pulumi, то, возможно, после этого поста захотите! 😉
---
Terraform: классика жанра
Terraform — это, без сомнения, стандарт индустрии. Он использует декларативный подход, где вы описываете, *какой* должна быть инфраструктура, а Terraform сам решает, *как* этого достичь.
Плюсы:
- Огромное сообщество и поддержка множества провайдеров.
- Простота в освоении (HCL — это не язык программирования, а конфигурационный файл).
- Состояние инфраструктуры хранится в файле
Минусы:
- HCL (HashiCorp Configuration Language) ограничен в возможностях.
- Нет типизации, что может приводить к ошибкам.
- Сложности с повторным использованием кода (хотя модули помогают, но это не всегда достаточно).
---
Pulumi: инфраструктура как настоящий код
А теперь давайте посмотрим на Pulumi. Это инструмент, который позволяет описывать инфраструктуру на реальных языках программирования: Python, TypeScript, Go, C# и других. Да, вы не ослышались — это Infrastructure as Real Code!
Плюсы:
- Pulumi использует строгую типизацию, что помогает избежать множества ошибок на этапе написания кода. IDE подскажет, если вы что-то сделали не так.
- Вы получаете все плюшки вашей любимой IDE: автодополнение, проверка типов, рефакторинг и даже отладку. Попробуйте это сделать в Terraform с его HCL!
- Не нужно учить новый синтаксис (HCL). Если вы уже пишете на Python, TypeScript или Go, то можете сразу начать использовать Pulumi.
- Функции, классы, модули — всё это доступно в Pulumi. Вы можете писать более структурированный и поддерживаемый код.
- Pulumi также хранит состояние, но предлагает больше гибкости в управлении им. Вы можете использовать Pulumi Service, S3, Azure Blob Storage и другие бэкенды.
А что с минусами?
- Сообщество пока меньше, чем у Terraform.
- Не все провайдеры поддерживаются так же хорошо, как в Terraform.
- Может быть избыточным для простых задач.
---
Когда выбирать Pulumi?
- Если вы разработчик и хотите использовать знакомые языки программирования.
- Если вам нужна типизация и поддержка IDE.
- Если ваш проект сложный и требует повторного использования кода.
Когда выбирать Terraform?
- Если вам нужен проверенный инструмент с огромным сообществом.
- Если ваша инфраструктура относительно простая.
- Если вы уже используете Terraform и не хотите мигрировать.
---
Итог
Pulumi — это мощный инструмент для тех, кто хочет писать инфраструктуру как настоящий код. Он идеально подходит для разработчиков, которые хотят использовать свои навыки программирования. Terraform же остаётся надёжным выбором для классического подхода к IaC.
А какой инструмент используете вы? Делитесь в комментариях! И если ещё не пробовали Pulumi, может, самое время? 😉
#DevOps #IaC #Terraform #Pulumi #InfrastructureAsCode
---
Terraform: классика жанра
Terraform — это, без сомнения, стандарт индустрии. Он использует декларативный подход, где вы описываете, *какой* должна быть инфраструктура, а Terraform сам решает, *как* этого достичь.
Плюсы:
- Огромное сообщество и поддержка множества провайдеров.
- Простота в освоении (HCL — это не язык программирования, а конфигурационный файл).
- Состояние инфраструктуры хранится в файле
terraform.tfstate, что удобно для отслеживания изменений. Минусы:
- HCL (HashiCorp Configuration Language) ограничен в возможностях.
- Нет типизации, что может приводить к ошибкам.
- Сложности с повторным использованием кода (хотя модули помогают, но это не всегда достаточно).
---
Pulumi: инфраструктура как настоящий код
А теперь давайте посмотрим на Pulumi. Это инструмент, который позволяет описывать инфраструктуру на реальных языках программирования: Python, TypeScript, Go, C# и других. Да, вы не ослышались — это Infrastructure as Real Code!
Плюсы:
- Pulumi использует строгую типизацию, что помогает избежать множества ошибок на этапе написания кода. IDE подскажет, если вы что-то сделали не так.
- Вы получаете все плюшки вашей любимой IDE: автодополнение, проверка типов, рефакторинг и даже отладку. Попробуйте это сделать в Terraform с его HCL!
- Не нужно учить новый синтаксис (HCL). Если вы уже пишете на Python, TypeScript или Go, то можете сразу начать использовать Pulumi.
- Функции, классы, модули — всё это доступно в Pulumi. Вы можете писать более структурированный и поддерживаемый код.
- Pulumi также хранит состояние, но предлагает больше гибкости в управлении им. Вы можете использовать Pulumi Service, S3, Azure Blob Storage и другие бэкенды.
А что с минусами?
- Сообщество пока меньше, чем у Terraform.
- Не все провайдеры поддерживаются так же хорошо, как в Terraform.
- Может быть избыточным для простых задач.
---
Когда выбирать Pulumi?
- Если вы разработчик и хотите использовать знакомые языки программирования.
- Если вам нужна типизация и поддержка IDE.
- Если ваш проект сложный и требует повторного использования кода.
Когда выбирать Terraform?
- Если вам нужен проверенный инструмент с огромным сообществом.
- Если ваша инфраструктура относительно простая.
- Если вы уже используете Terraform и не хотите мигрировать.
---
Итог
Pulumi — это мощный инструмент для тех, кто хочет писать инфраструктуру как настоящий код. Он идеально подходит для разработчиков, которые хотят использовать свои навыки программирования. Terraform же остаётся надёжным выбором для классического подхода к IaC.
А какой инструмент используете вы? Делитесь в комментариях! И если ещё не пробовали Pulumi, может, самое время? 😉
#DevOps #IaC #Terraform #Pulumi #InfrastructureAsCode
👍3
Второй доклад тоже залетел, летом буду выступать в секции Системный анализ, в Новосибирске. https://15.codefest.ru
Осталось дождаться решения программных комитетов по 3-м заявкам. Ждать вообще не люблю.
Осталось дождаться решения программных комитетов по 3-м заявкам. Ждать вообще не люблю.
CodeFest 15 / 31 мая-1 июня 2025
CodeFest 15. Юбилейный!
🔥10❤🔥1
Написал статью по observability - https://habr.com/ru/articles/885224/. В одну часть всё не влезло (как обычно 😅), так что планирую цикл из 4 статей.
По традиции буду рад лайку, плюсу в карму и вашим комментариям. Обратная связь очень помогает делать контент лучше!
P.S. Статья юбилейная, 10-я :)
#habr #observability #мониторинг #devops #статья #разработка
По традиции буду рад лайку, плюсу в карму и вашим комментариям. Обратная связь очень помогает делать контент лучше!
P.S. Статья юбилейная, 10-я :)
#habr #observability #мониторинг #devops #статья #разработка
Хабр
Как я создавал Observability для своих pet-проектов. Часть 1
Это в какой-то степени продолжение моей статьи — История создания идеального Docker для Laravel . В ней я рассказывал о том, как собрал идеальный Docker-образ для Laravel с Nginx Unit. Это был один из...
👍10🔥2
Команда Rust порадовала нас самой крупной редакцией языка за всю историю! Версия 1.85.0 и Edition 2024 уже доступны в стабильном канале.
Главные новинки:
- Асинхронные замыкания (async closures): теперь можно писать
- Новый атрибут
- FromIterator и Extend теперь работают с кортежами от 1 до 12 элементов - можно создавать сразу несколько коллекций одним вызовом collect().
В Edition 2024 внесли множество изменений, улучшающих безопасность и эргономику:
- Блоки extern теперь требуют ключевое слово unsafe
- Изменены правила временной области для if let и последних выражений в блоках
- Улучшена работа с #![deny(unsafe_op_in_unsafe_fn)]
- Зарезервированы ключевые слова gen и синтаксис защищенных строк #"foo"#
Чтобы обновиться, просто выполните
#rust #programming #update #edition2024
Главные новинки:
- Асинхронные замыкания (async closures): теперь можно писать
async || {}, что решает проблемы с захватом значений из контекста. Также добавлены трейты AsyncFn, AsyncFnMut и AsyncFnOnce.- Новый атрибут
#[diagnostic::do_not_recommend] для скрытия нежелательных реализаций трейтов в диагностике компилятора.- FromIterator и Extend теперь работают с кортежами от 1 до 12 элементов - можно создавать сразу несколько коллекций одним вызовом collect().
В Edition 2024 внесли множество изменений, улучшающих безопасность и эргономику:
- Блоки extern теперь требуют ключевое слово unsafe
- Изменены правила временной области для if let и последних выражений в блоках
- Улучшена работа с #![deny(unsafe_op_in_unsafe_fn)]
- Зарезервированы ключевые слова gen и синтаксис защищенных строк #"foo"#
Чтобы обновиться, просто выполните
rustup update stable. Для перехода на Edition 2024 в большинстве случаев поможет cargo fix.#rust #programming #update #edition2024
Не я один от этого страдаю - https://habr.com/ru/articles/883858/. Но как в комментах заметили, сосредоточились не на том. Самая главная проблема - актуализировать одно и тоже резюме на нескольких площадках.
#карьера #cv
#карьера #cv
Хабр
Как сделать красивое резюме используя JSON
Описание проблемы Для меня всегда был острым вопрос поддержания резюме в актуальном состоянии. Казалось бы, задача простая, но на самом деле она достаточно сложная, ведь резюме — это не только список...
Бодрый кодер
Depseek явно всех подстегнул. Недавно вышла Sonnet 3.7, а сегодня GPT 4.5. Остальные разработчики тоже подтянулись. #openai #ai #chatgpt #gpt4.5
Расходимся . Пока доступна только для мажоров с аккаунтом Pro за 200$. Для народа на следующей неделе.
😁7
На выходных устроил себе небольшой марафон чтения технических статей. Выбрал для вас самое вкусное, что зацепило и заставило задуматься 🤔
Как конфигурировать Git
https://habr.com/ru/articles/886538/
Отличная статья о том, как правильно настроить Git, чтобы работать максимально эффективно. Автор разбирает кучу полезных настроек, которые помогают избежать типичных ошибок и ускоряют работу с репозиториями.
Я и сам использовал примерно половину описанных приёмов, но вторую половину сразу забрал себе в копилку. Если вы работаете с гитом ежедневно, как я, эта статья точно стоит вашего времени!
20 лет работы над одним продуктом
https://habr.com/ru/companies/ruvds/articles/886284/
Эта история меня удивила. Автор рассказывает, как уже 20 лет (!) развивает один проект, который стал его основным источником дохода. И самое неожиданное — это десктопное приложение для рассадки гостей.
Никогда бы не подумал, что такая узкоспециализированная ниша может быть настолько востребованной и приносить стабильный доход годами. Отличный пример того, что иногда не нужно гнаться за мейнстримом, а можно найти свою уникальную нишу и преуспеть в ней.
Прощай, Хабр Фриланс... 😢
https://habr.com/ru/companies/habr/articles/886798/
Эта новость вызвала у меня настоящий приступ ностальгии. Я в разработке уже больше 15 лет, и примерно треть в начале карьеры отдал именно фрилансу.
Зарегистрировался на своей первой бирже лет в 13 — это был Free-lance.ru, первая фриланс-платформа в России. Примерно в то же время завёл аккаунты на Elance и oDesk. Потом появились weblancer и множество похожих сайтов. Free-lance.ru со временем превратился в fl.ru, а Elance и oDesk объединились в Upwork.
Хабр Фриланс действительно был глотком свежего воздуха — там публиковались по-настоящему интересные проекты от адекватных заказчиков. Жаль, что площадка закрывается.
А какие интересные статьи прочитали вы на этой неделе? Делитесь в комментариях! 💬
#технологии #программирование #git #фриланс #разработка #статьи_недели
Как конфигурировать Git
https://habr.com/ru/articles/886538/
Отличная статья о том, как правильно настроить Git, чтобы работать максимально эффективно. Автор разбирает кучу полезных настроек, которые помогают избежать типичных ошибок и ускоряют работу с репозиториями.
Я и сам использовал примерно половину описанных приёмов, но вторую половину сразу забрал себе в копилку. Если вы работаете с гитом ежедневно, как я, эта статья точно стоит вашего времени!
20 лет работы над одним продуктом
https://habr.com/ru/companies/ruvds/articles/886284/
Эта история меня удивила. Автор рассказывает, как уже 20 лет (!) развивает один проект, который стал его основным источником дохода. И самое неожиданное — это десктопное приложение для рассадки гостей.
Никогда бы не подумал, что такая узкоспециализированная ниша может быть настолько востребованной и приносить стабильный доход годами. Отличный пример того, что иногда не нужно гнаться за мейнстримом, а можно найти свою уникальную нишу и преуспеть в ней.
Прощай, Хабр Фриланс... 😢
https://habr.com/ru/companies/habr/articles/886798/
Эта новость вызвала у меня настоящий приступ ностальгии. Я в разработке уже больше 15 лет, и примерно треть в начале карьеры отдал именно фрилансу.
Зарегистрировался на своей первой бирже лет в 13 — это был Free-lance.ru, первая фриланс-платформа в России. Примерно в то же время завёл аккаунты на Elance и oDesk. Потом появились weblancer и множество похожих сайтов. Free-lance.ru со временем превратился в fl.ru, а Elance и oDesk объединились в Upwork.
Хабр Фриланс действительно был глотком свежего воздуха — там публиковались по-настоящему интересные проекты от адекватных заказчиков. Жаль, что площадка закрывается.
А какие интересные статьи прочитали вы на этой неделе? Делитесь в комментариях! 💬
#технологии #программирование #git #фриланс #разработка #статьи_недели
❤2