Анна Буянова (Anna Codes) – Telegram
Анна Буянова (Anna Codes)
401 subscribers
82 photos
1 video
1 file
149 links
Бэкенд-разработчица (Ruby). Иногда делаю образовательные проекты.

Личный канал о разработке ПО, программировании (на Ruby и не только), образовании в it.

лс: @lightalloy
Download Telegram
Астрологи объявили неделю девопса:

Удалов о том, что нужно знать devops
Angry Beard о взаимоотношениях с камалом

У thinkneticи скоро будет воркшоп "Масштабирование Rails-приложений".
Кажется, Rails там не так много, есть универсальные темы. Сегодня начался last call!

Раньше периодически приходилось "админить" сервера и настраивать деплой с capistrano/mina. До руби тоже иногда нужно было поправить код по фтп настроить LAMP.
Обычно воспринималось, как что-то отвлекающее от основных задач, но на самом деле было очень полезно

Вообще я согласна с DHH: нужно уметь всё, пусть не на продвинутом уровне. Ну реально, бесит, что многого не умею/не понимаю.
В современных инструментах пока плохо разбираюсь (но я буду 😁)

А как у вас?

P.S. Считаю, что если для деплоя пушить на heroku, то особо ничему не научишься.
Хотя для своих целей это был хороший инструмент.
7👍7
Сегодня из кафехи 😁
Правда, не работаю, а пишу.
А вы ходите поработать/поучиться/поделать свои проекты?
12👍4🔥4
Юмор не для всех 🌚

Посмотрела пару докладов про параллелизм в руби, сделаю саммари 😏
👍5🌚5🔥2
Посмотрела доклад Коичи Сасада про ракторы.

Не так много нового про сами ракторы, зато дал хороший "рефрешер" о проблемах параллелизма :

Чем отличается параллельное выполнение от конкурентного?
- одновременное выполнение vs переключение между несколькими задачами

GVL/GIL в Ruby:
- ограничивает одновременное выполнение потоков, за счёт этого избавляет от многих проблем параллелизма
- иногда параллельное выполнение возможно, если один из потоков выполняет I/O операцию

Что за ракторы и зачем они?
- Руби-акторы
- появились в Ruby 3.0 (2020)
- для параллельного выполнения кода
- у каждого рактора есть свой GVL: потоки внутри одного рактора будут работать в основном конкурентно, а не параллельно.
А вот потоки внутри разных ракторов могут выполняться параллельно.

Почему нельзя просто взять и выполнять Руби-потоки параллельно?
(с точки зрения разработчиков языка)
- у потоков, запущенных в рамках одного процесса, общее пространство памяти, нужно следить за shared mutable objects, а это сложно
- в руби много shared mutable стейта + основные структуры типа строк и массивов не потокобезопасные

Есть мнение из 1995 года, что нужно вообще запретить параллельное выполнение потоков, т.к слишком сложно следить "вручную" (смотрите картинку :)

Какие есть варианты избавиться от сложности?
- запретить мутабельные объекты (elixir/erlang)
- отслеживать с помощью типов (Rust)
- ограничить mutations (clojure)
- отслеживать мутации и лочить внешними средствами (clang, helgrid/valgrind)
- запретить шарить объекты, форкать процессы (shell, druby)
- отделить shareable и не shareable объекты - Ракторы!

Что относительно нового:

- M:N планировщик тредов, появился в Ruby 3.3.0
M руби-тредов теперь "мапятся" на N тредов ОС, (N = количество ядер, M > N)
Описание в трекере
По умолчанию M:N планировщик в главном ракторе выключен, тогда всё работает, как обычно: 1 рубишный поток соответствует одному потоку ОС.

В ракторах всё так же много проблем:
- мало поддерживающих их библиотек
- вообще мало что можно запустить, но вот на простых расчётах типа фибоначчи можно проверить
- есть особенности с производительностью, иногда код работает ещё медленнее, чем без ракторов

Интересно, дойдёт ли когда-нибудь до production-ready 🤔
Но надо понимать, что мы всегда в ракторе - посмотрите Ractor.current.

Можно глянуть планы и обширный список проблем с ракторами в трекере

#ruby@anna_codes
👍6❤‍🔥4🔥43👏1
Вот ещё крутой доклад In-Depth Ruby Concurrency от JPCamara

Рассказывает про распараллеливание с помощью процессов, потоков, файберов и немного ракторов.
Разбирает особенности, плюсы и минусы каждого подхода, даёт конкретные примеры из жизни. Например, app-серверов, к-е используют эти модели.

Посмотрите, если хотите разобраться или вспомнить.
👍143
Привет!

Давно не стримили. Теперь давайте про Ruby.

Обсудим, куда идёт Ruby, а куда рельсы:
- что нового обещают в руби
- идеи dhh, one-person framework
- рельсовый фронтенд
- ИИ + руби
- is ruby dead
- куда перекатываться, если что 😁

Буду с подругами: мы с Катей рубистки, Олеся разрабатывает платформу для интерактивных курсов по музыке с бэкендом на Ruby on Rails.

В воскресенье 27 апреля, в 16:00

Заходите послушать и поговорить. После - афтепати на свободную тему

#стрим@anna_codes #ruby@anna_codes
🔥14❤‍🔥83👍3
Статья для подготовки к стриму "Rails: when "nothing changed" is the best feature"😏

Порадовала цитата про падающий нокогири:

Recently I had to implement a tiny backend app. I dusted off Rails and everything was the same. Same commands, same gems, even nokogiri crashed the same way during bundle install, just like 10 years ago…


И коммент от Матца. Завтра обсудим )

#ruby #rails
8❤‍🔥1👍1
Live stream scheduled for
Пост для комментариев к стриму + примерные темы:

- что с Ruby
Ruby Kaigi 2025
- ruby 4.0
- programming language for AI age
Final keynote Rubykaigi 2024 (talk)
презентация
- performance (yjit, парсер, паралеллизм, memory opts, tooling)
- static typing :D
- руби 4-0 - изолированные пространства имён
Руби-компании

- Rails
- rails 8
- solid trifecta
- sqlite для прода
- серверофобия и линукс, камал
- one-person framework
- рельсовый фронтенд
- ?? Rails: when "nothing changed" is the best feature
- rails 7.2

- что с ии + руби
- что используете
- что у нас на рынке труда
- куда перекатываться, если что )
8😱1
Анна Буянова (Anna Codes) pinned «Пост для комментариев к стриму + примерные темы: - что с Ruby Ruby Kaigi 2025 - ruby 4.0 - programming language for AI age Final keynote Rubykaigi 2024 (talk) презентация - performance (yjit, парсер, паралеллизм, memory opts, tooling)…»
Live stream finished (2 hours)
Спасибо, что пришли на стрим и афтепати! Было интересно
❤‍🔥7👍1😱1
Привет!

Пока готовилась к стриму, узнала, что в апреле была RubyKaigi и там было много интересного.

Например, Matz всё-таки анонсировал Ruby 4.0 в этом году.
На всякий случай сделал это 1 апреля, чтобы если что, сказать, что шутка ))

Ещё рассказывал про Ruby и AI

Из того, что обещал в прошлом году:
Изолированные пространства имён , презентация
Бинарники из руби - на уровне игрушки, но и Матц упоминал в виде "мечты"

Мне показалось, много низкоуровневого, но может на РубиКайги всегда так. Кто был? )

Пока записей докладов нет, но можно посмотреть тенденции и некоторые презентации:

Типизация
rbs via tests
steep
sorbet

JIT
YJIT , презентация
ZJIT

IoT/микроконтроллеры
mruby/c and data-flow programming for small devices
MicroRuby
PicoRuby

Ракторы/GC
Toward Ractor local GC

Оптимизация Ruby
JRuby
Low-level Ruby Observability APIs

Ускорение Class#new

Расписание

Есть что-нибудь интересное? Keynote от Матца точно надо будет глянуть

#ruby@anna_codes
11👍5🔥51
Интересный доклад от Ирины Назаровой, СЕО Evil Martians.

Она считает, что рельсы находятся на пути к "плато продуктивности" после относительного упадка (см. график)

Рассказывает, почему новые стартапы выбирают руби и рельсы. Точнее сами основатели рассказывают.
Всё как мы любим - продуктивность, developer experience, близость к бизнесу.

Также уделила время ai-инструметам для руби и рельсовому фронтенду (hotwire, rubyui, инерции)

Ещё понравился интерактив с poll everywhere, тоже рубишным. Надо попробовать )

Выбрали бы рельсы для своего нового стартапа? 😏

#ruby@anna_codes
👍10💯2❤‍🔥1
Помните ко мне на стрим приходила Олеся? Она разрабатывает платформу для интерактивных онлайн-курсов по музыке
Теперь можно следить за проектом и узнавать о музыкальном образовании у неё в @enjoythegrind
12❤‍🔥3🔥1
Что хочется
4💯2
Что нужно
👍9😢5
Нужно и хочется - на самом деле
5
Забыла написать, что это exercism.
Хорошая штука - есть теория и практика, даже немного код-ревью от менторов, но там как повезёт.
🔥8👍5🤔1👀1