Бодрый кодер
475 subscribers
259 photos
25 videos
7 files
168 links
Меня зовут Лев, я руководитель направления в ПСБ. Это мой личный блог о DevOps, разработке, системном анализе, AI и управлении IT-командами. Делюсь своими мыслями, инсайтами, полезными инструментами и тем, что меня вдохновляет.

Автор: @nemirlev
Download Telegram
TIOBE опубликовал новый рейтинг языков программирования. Вот самые интересные изменения:

1. Rust прыгнул с 17-го на 13-е место. Авторы TIOBE связывают растущую популярность Rust с рекомендациями со стороны правительства США, которое предложило разработчикам переходить с C/C++ на этот язык из соображений безопасности.
2. Golang поднялся с 13-го на 7-е место.
3. Мой любимый PHP упал с 9-го на 16-е место, а Ruby наоборот, поднялся с 16-го на 14-е.
4. Fortran вошел в топ 10, переместившись с 11-го на 9-е место. Интересно, почему?

Обсуждаем, что вы думаете об этих изменениях и какие языки программирования вы предпочитаете! 👇

#TIOBE #рейтингязыков #Rust #Golang #PHP #Ruby #Fortran #программирование #языки #тренды2024
👍3
Всегда было сложно собраться и сделать нормальный Changelog. На это уходило кучу времени — нужно, чтобы было и красиво, и понятно. Пока не открыл для себя утилиту git-cliff, и жизнь стала проще.

Эта штука написана на Rust и умеет генерировать удобный и понятный Changelog. Но, конечно, сама по себе она не сделает всё за вас — важно, чтобы вы использовали conventional commits при написании коммитов. Это не только помогает генерировать Changelog на автомате, но и дисциплинирует в стандартизации того, что пишете.

Пару примеров — на скринах.

P.S. Если хотите автоматизировать это на GitHub — есть удобный git-cliff-action. Теперь весь процесс можно сделать в пару кликов.

#git #changelog #gitcliff #разработка #conventionalcommits #GitHub #автоматизация #Rust
👍5
В свободное время начал изучать Rust и сразу делаю параллели с Go.

Простой 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
Команда Rust порадовала нас самой крупной редакцией языка за всю историю! Версия 1.85.0 и Edition 2024 уже доступны в стабильном канале.

Главные новинки:
- Асинхронные замыкания (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
Решил немного поэкспериментировать с современными технологиями проксирования. Долгое время использовал связку NGINX + Lua для кастомной логики, но настало время двигаться дальше.

Сейчас активно тестирую Envoy в паре с WebAssembly (WASM) и уже вижу несколько серьезных преимуществ:

- Более чистый код — кастомную логику теперь пишу на Go вместо Lua. Типизация, современные инструменты разработки и экосистема делают процесс гораздо приятнее. Писать на Lua в 2025 году — такое себе удовольствие, если честно 😅
- Горячая перезагрузка — это просто космос! Можно обновлять модули без перезапуска всего прокси. С NGINX PRO такое тоже возможно, но с Envoy это работает намного элегантнее.
- Производительность — по тестам выходит примерно на 15-20% лучшие результаты по throughput.
- Тестирование — инфраструктура для тестирования WASM-модулей гораздо более зрелая. Теперь могу нормально покрывать тестами всю проксирующую логику.

Конечно, есть и свои подводные камни. Документация по Envoy далеко не такая дружелюбная как у NGINX, а экосистема WASM-плагинов еще не такая богатая. Приходится немного больше писать с нуля.

В целом, первые впечатления очень позитивные. Думаю со временем полностью мигрировать на эту связку.

А вы пробовали Envoy? Делитесь опытом в комментариях!

#envoy #webassembly #wasm #nginx #rust #golang #проксирование #микросервисы #оптимизация
Вчера занятную статейку на хабое прочитал - https://habr.com/ru/articles/905248/, суть ее в том что Golang уже не торт, практически умер и надо писать на Rust.

Примерно тоже самое я уже больше 10-лет слышу про PHP. Единственный довод, с которым я согласен, не нужно привязывать к одному языку, прошли те времена когда один язык мог тебя кормить и поить, в выигрыше будут те, кто научится применять скальпель вместо молотка.

#языки #выбор #войтивайти #go #rust
👍1