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

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

лс: @lightalloy
Download Telegram
Live stream scheduled for
Пост для вопросов/комментариев.

Можно голосом, но возможно, это будет сложнее 😉
Live stream finished (1 hour)
Афтепати в 20:00 (тут была ссылка)
Можно обсудить стрим, бруг, офис, вологодское сообщество, другие темы 😏
👍3❤‍🔥2
Запись вчерашнего стрима.
Спасибо всем, кто поучаствовал в стриме и афтепати! Вы лучшие 🥰
Надеюсь, многие, как и я, узнали новое для себя и получили идеи для создания и развития офлайн-сообществ

#стрим@anna_codes
5
Как не хватает в последние n лет вот этого "ходить на сервер и удалять бд" 💔😁
🔥5💯2
Финальный пост о курсе "оптимизации Rails-приложений" от Thinknetica.

У меня вот так. На самом деле сдала все домашки, кроме двух, видео посмотрела почти все, кроме одного модуля (в прогрессе учитывается ещё всякое, типа записей финальных встреч прошлых выпусков)

Курс понравился (особенно с учётом скидки), хотя многие материалы хорошо бы обновить. И видео-формат - это тяжело для меня, особенно если не всё осталось актуальным. На домашки тяжело время находить, но считаю, что я справилась.

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

Были 2 домашки, которые можно (и нужно) делать на рабочем проекте. Это круто, но тяжело: масштаб другой + в рабочее время обычно нужно другими задачами заниматься, а после работы уже нужен отдых от проекта :D . Если это дз-загадка на оптимизацию, то куда проще делать даже в свободные полчаса.

Часть по фронтенду так и не сделала, хотя я люблю шире посмотреть. Кажется, там всё так быстро устаревает (но я не проверяла детали, что там конкретно! Расскажите, кто делал, насколько актуально) + в рабочих проектах меньше шанс там что-то поделать, это тоже повлияло на мотивацию.

Очень не хватило этапа рефлексии, на заключительном занятии была просто лекция. Тема интересная (файберы и тп), но рефлексию не заменяет. Было бы круто подвести итог, обсудить, что узнали, что будем применять на практике и тд. Даже хотела сама провести, но никто не горит желанием 🥲, так что будет другое )

Как у вас? 😏

#thinknetica@anna_codes
👍106💔1
Посмотрела keynote Матца на Rubyconf 2024, он впервые с 2019 года выступил офлайн.
Просмотров примерно, как у меня на "Как я делала курс по Ruby" (это потому что руби умер? но у меня тоже по руби...)

Рассказал о важных изменения в Ruby на протяжении всей истории:

От:
- YARV (Yet Another Ruby VM) (2007, ruby 1.9), который в своё время в 4-5 раз ускорил выполнение кода

Через:
- поддержку юникода (2013)
- изменения работы Garbage Collector'а
- и другие важные (ракторы, yjit) и не очень важные (single-line def :) штуки

До:
- Ruby.wasm (руби в браузере) и prism (новый парсер Ruby)

А что в следующих версиях Ruby?

Обещает изолированные пространства имён (refinements+packages). Хотели в Ruby 3.4.0 , но Сатоши был занят, поэтому в 4.0
Посмотрим, как будет реализовано

Долго рассуждает про Automated Typing . Предполагает, что скоро это будет прошлый век - писать типы руками, сравнивает статическую типизацию с МКПП, типа сейчас уже редко встретишь.

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

А как у вас насчёт акпп/мкпп и динамической/статической типизации? 😏

Следующий доклад хочу про ракторы посмотреть.
А вот ещё про GVL хороший.

Весь плейлист

#ruby@anna_codes
👍12👾3🔥1
Астрологи объявили неделю девопса:

Удалов о том, что нужно знать 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)…»