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

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

лс: @lightalloy
Download Telegram
🧙‍♀️ Экзерзизм 🧙‍♀️

Недавно уже писала про него. Думала, решу hello world на го и на этом всё закончится, но что-то затянуло.
Прошла все учебные упражнения и немного дальше, в этот раз решила идти по порядку.
Удобно, что видно прогресс, и как будто можно быстро сделать что-то полезное. Пусть будет для кругозора.

Что хорошо на экзерцизме:
- удобный консольный клиент
- учебный режим: есть теория и дерево концепций, учебные упражнения специально для их усвоения
- есть не во всех языках: для go и ruby есть, для ts нет
- геймификация, отслеживание прогресса

Новое с тех пор, как я туда заглядывала:
- теперь не предлагает менторский режим по умолчанию, но можно запросить код-ревью у волонтёров
- есть слоты на менторинг, по-моему это и есть код-ревью на решения
- слоты дают за репутацию, а репутацию за публикацию решений

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

Мой старый обзор экзерцизма
(как обычно, не планировался для ютуба, поэтому есть особенности)

Как у вас? Что изучаете? 😏
👍18👾32
Ну как, посмотрели 6 часов dhh ?

Традиционно попросила perplexity, показалось, что темы скучные.

Включила начало - эмоционально, интересно. Харизматичный чел, конечно.

crud monkeys, непонимание базовых концепций программирования, торговля пиратским по 👍

Надо слушать 😁

Как вам?
👍6😁3😱2👀2
Please open Telegram to view this post
VIEW IN TELEGRAM
Анна Буянова (Anna Codes)
На самом деле это всегда было )
😁3👍1
В общем я досмотрела!

Много интересных тем, пропустила только про racing, зато Дима отметил
Кроме начала, где он получил права в 25 лет (да, я тоже, в 28)

Первая часть интереснее, понравились темы:

Будущее программирования, ИИ в обучении и работе [1:26]
Говорит, возможно, станет рекреационной активностью, как стала езда на лошади
Поживём - увидим. Если, что скажем, что "хорошая была профессия" 😏

Ценность монолита: микросервисы в нетфликсе vs микросервисы в команде на 20 человек (ни на что не намекаю 😁)
[2:06]

Как его бесят 1-1 и созвоны в целом :D [2:23]
В 37signals пробовали работать с engineering manager'ами , но им не зашло.
Почему-то эти менеджеры у них не технические, хотя у меня сложилось впечатление, что EM - это обычно человек с нормальным таким техническим бэкграундом.
Как у вас?

В девту у меня было 100500 менеджеров с разным бэкграундом, часто менялись, были и не очень технические. Сама люблю 1-1 (ну, наверное, не каждую неделю, как у них было) и встречи мне норм (в меру). Но это с точки зрения разработчицы, с точки зрения бизнеса может по-другому бы смотрела.

В конце про oss [5:32]

Пока слушала, в очередной раз вспомнила, насколько мне близка философия руби, "every programmer knows better". И практический подход rails ❤️
❤‍🔥13🔥4🌚3
Привет!

Опять выпадаю. У меня первый оплачиваемый отпуск с 2018 😁 (неоплачиваемые были, и много)

Покатались по Карелии на машине с семьёй. В прошлом году ездили на Бесов Нос, сейчас более обзорно: Спб-Сортавала-Суоярви-Петрозаводск-Медвежьегорск-Андома-гора (последняя уже у нас в области). Была возможность съездить как в туристические, так и не очень туристические места. Если кто-то тоже собирается, можете посмотреть подробнее на личном канале

Круто, но очень жарко, если не весь день сидишь в озере 🥵 Ну и сборы-разборы постоянные, т.к. по 1-2 дня в каждом месте.
Зато много где побывали.

Отдыхать тяжело, конечно, но надо 😁
А вы как, ходите в отпуск?

#личное@anna_codes
🔥145👍3
Кто в СПб, сходите к Маше на митап 🙌
❤‍🔥5
Forwarded from Masha`s Day
У меня (Маши) день рождения 31 июля. В этом году я решила отпраздновать его в компании моих любимых женщин, которые делают восхитительное. Приходите поговорить, послушать. Зовите сестру, подругу.

📕 Программа события:

🚘 Автоматизация тестирования: делаем первые шаги
🩹 Соло-разработчица: гид по выживанию и процветанию. Практики, инструменты, общение
✈️ Обзор возможностей n8n для AI агентов


🐸 Митап бесплатный

🐤 Дата и время: суббота 2 августа 2025, 18:00 – 20:00 GMT+3

💖 Место проведения: Санкт-Петербург, Failover bar 4-я Советская ул., 7


Регистрация: место в залах ограниченно, поэтому мы просим вас зарегистрироваться: https://mariya-osipenko.timepad.ru/event/3457405/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥62🔥21
Заглянула в книгу Fundamentals of Software Architecture (как-нибудь обязательно дочитаю)

В конце книги есть глава про карьеру, о том, как для архитекторов важна "широта взглядов" (technical breadth) и как трудно найти время на её развитие.
Авторы предлагают способ найти время - "Правило 20 минут". Просто тратить по 20 минут в день на чтение статей, предлагают ходить на ресурсы с картинки.

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

Я тоже замечала, что если с утра не сделать, потом всё, шансов мало. Раньше так по утрам читала технические книги. Конечно, за полчаса мало успеваешь, особенно если тратить время на заметки. А если надо что-то попробовать "руками", то тем более. Но консистентность рулит - в сумме на длительных промежутках узнаёшь многое. Хорошо, если получается дополнять более длительными отрезками времени на обучение, но и так уже неплохо.

В последнее время то занималась, то нет, летом вообще всё отвалилось, хочу вернуть.

А вы как находите время на обучение?

Как насчёт study with me на стриме в 8:30 утра по будням (по Москве)? 😏 (я серьёзно)
11🔥4😁1
Domain-Driven Design

Часто стала всплывать эта тема, значит пора вспоминать. А пока подборка того, где попадалось в последнее время.

Послушала ОргПрог на эту тему [ymusic]
Ничего нового не узнала, но понравилось 😁

Интересная мысль, что в монолите обычно всё красиво, а вот в микросервисах в плане общей архитектуры всё нормально, зато внутри сервисов хаос и надо больше внимания уделять именно этому.
Не знаю, как вы, а я видела совсем другое :D Наверное, это специфика работы на аутсорсе и в стартапе. В реальности бывает по-разному, нужно обращать внимание на качество и там, и там.

Гость порекомендовал книгу Влада Хононова.
(есть и на русском) Сразу захотелось прочитать, вы читали?

Заодно зацепилась за подкаст с автором, надо послушать.

У синкнетики тоже скоро воркшоп по DDD (Снова с Игорем Симдяновым ) Надеюсь, получится применить что-то в реальной жизни.

Сама читала Вернона Distilled DDD , но давненько. Upd. И ещё Domain Driven Rails от Arkency, аналогично (смотрите в комментах)

#книги@anna_codes #DDD
9🔥2
Азалия @zazaraisovna_chanel делает крутую игру "Сквозь ветер"!
Посмотрите, если вам интересна культура Башкирии, её мифы и легенды

Сейчас можно поиграть в демку (в браузере на компьютере).
Посмотреть видео об игре

Я думаю, что это очень крутая идея - объединять игры и мифологию. На прошлогоднем хакатоне в Вологде была тема "Мифология, как искусство". Вот тут немного писала про это.
Правда, тогда поиграть так ни во что и не удалось, и где теперь найти эти игры?

Считаю, что важно показывать свои наработки, начиная с демо. Азалии успехов с разработкой игры, будем следить 💪
17❤‍🔥7👍4
📚 Всё-таки книжный клуб 📚

Книга - "Проектирование приложений Ruby on Rails слой за слоем" Владимира Дементьева
Она же - Layered Design for Ruby on Rails Applications
Она же - "Слоёные рельсы" (моя интерпретация)

По Ruby на русском практически ничего не издаётся, а значит я просто обязана её прочитать эту книгу 🙌

Формат стандартный:

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

Будем с Катей и Олесей со стрима по руби
Хотела "публичный" формат, но оставила эту идею на будущее. Буду просто постить по результатам )

Время - для сильных духом: в 8:00 по Москве, по вторникам. Старт - 2.09
Если хотите присоединиться, напишите в личку (@lightalloy) - созвонимся до старта, обсудим формат и ожидания.

#книги@anna_codes
#книжный_клуб@anna_codes
#layered_rails
14🔥9👍5❤‍🔥1🤓1
Вчера была первая встреча книжного клуба.
Пришлось выйти из дома в 7 утра, чтобы успеть к 8 :D

Классно пообщались

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

Спасибо, тем, кто пришли. Встретимся в следующий вторник ❤️

Получилось обсудить такие темы:

- плюсы и минусы rails way, монолиты и микросервисы - взаимодействие, кол-во абстракций; переход от монолиту к микросервисам и обратно
- аналогия конвейера и станков для обработки запросов в приложении
- решения для дата-миграций и их особенности

- решения для отложенных задач, их + и - (sidekiq, rabbitmq, solidqueue и тд)
- scheduling отложенных задач (sidekiq-scheduler и тд vs запуск по крону) - плюсы и минусы подходов
- проблема "многоразового" выполнения отложенных задач в sidekiq, проблемы sidekiq-unique-jobs, идемпотентность отложенных задач

- к какому слою относятся фоновые задачи; вопрос с собеседований

- кейсы для использования "абстракций в бд" (например, аналог записи timestamps для нерельсовых приложений)
- дублирование логики валидации на уровне приложения и базы данных - ок или не ок (ок!)
- решения для мягкого удаления, их плюсы и минусы

Полезные ссылки:
maintenance_tasks - engine для управления дата-миграциями от shopify, в т.ч. через ui
rabbitMQ вместо sidekiq для отложенных задач
Как написать MVC веб-фреймворк на Ruby (для понимания, как устроены rails) (за впн)
Гайд по rack

#книги@anna_codes
#книжный_клуб@anna_codes
#layered_rails
17👍72🔥1
Посмотрели keynote dhh с Railsworld? (не 6 часов!)

Как обычно, критикует сложность современной разработки и деплоя.
Rails, как end-to-end фреймворк, тоже стандартно.
Ругает Apple, продвигает Omarchy

Новое в Rails:
- поэтапные Active Jobs
- рендер markdown (format.md { render markdown: @page })
- локальный CI
- новый редактор Action Text Lexxy
- Action Push Native (пуши для мобилок)

Эти не нашла сейчас, но где-то были (если найдёте, скиньте):
- Active Record Tenating (гемчик от basecamp)
- Kamal Geo Proxy

Release Notes к Rails 8.1beta
👍15🔥8🤔1
На этой неделе в книжном клубе обсудили вторую главу "слоёных рельсов" 😌

Темы получились такие:
- наш опыт работы с разными orm/без orm
- нормализованные и денормализованные данные - как хранить и валидировать
- sql и nosql субд, когда использовать
- куда девать валидации (модель, валидатор, форм-обжект, etc)
- допустимо ли использовать коллбеки и когда, что вместо них
- churn vs compexity, инструменты для их измерения и что делать с полученными данными
- явные и неявные интерфейсы в разных яп

Ссылки:
- Servactory - инструменты для организации кода, "новый взгляд на service object"
- jsonb_accessor - для работы с jsonb
- CAP и PALELC
- Breaking Up the Behemoth, Sandy Metz
роль хорошего дизайна и его отсутствия на разных этапах жизни приложения
- attractor - гем для метрик churn vs complexity
- rubycritic - тоже гем для метрик

#книжный_клуб@anna_codes
#layered_rails
17
Прочитали и обсудили третью главу, там не так много информации, поэтому напишу про globalid (тоже тема из книги).

Знали про такую штуку?

Универсальный идентификатор для моделей, вида gid://YourApp/Some::Model/id

Основной юзкейс - замена сериализации в отложенных джобах. Будет использоваться, если вы передадите в джобу ar-объект.
Вы этого даже не увидите, но работает так:

Создаётся объект:

[3] pry(main)> gid = u.to_global_id
=> #<GlobalID:0x000074a394a41f58 @uri=#<URI::GID gid://practical-developer/User/12>>


Вместо десериализации - вытащит ar-объект через find:
[15] pry(main)> GlobalID::Locator.locate gid
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 12], ["LIMIT", 1]]
=> #<User id: 12, apple_username:


find прямо прописан в геме в дефолтном локаторе, но можно написать свой (смотрите в ридми гема или в книге).
Круто, конечно, но по мне так лучше AR-объекты в джобы не передавать, а явно передать идентификатор и явно достать из бд (в стандартном случае).

Помните ещё в delayed_job можно было? Вообще не писать джобу, а сделать так:

(примеры из доки)
# without delayed_job
@user.activate!(@device)

# with delayed_job
@user.delay.activate!(@device)


Или так:

class Device
def deliver
# long running method
end
handle_asynchronously :deliver
end

device = Device.new
device.deliver


А потом ловить ошибки, что у вас уже нет соответствующих записей на момент выполнения джобы.
Это вообще зло, есть соблазн для разработчиков лепить, не думая, а потом разгребать. Как-то выпиливала всё это с девту (потом ещё саму dj)
То же и с передачей ar-объектов.

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

И в целом что думаете по поводу явного/скрытого здесь?

#layered_rails #rails
#книжный_клуб@anna_codes
👍72
Зашёл воркшоп.
Даже сделала все домашки, что бывает нечасто 🌚

#DDD
12🔥11👍9
Посоветуйте vps для пет-проектов/экспериментов.
Где хоститесь? У меня раньше был на линоде, отказалась от него.
Сейчас в России будет удобнее.
1👍1