Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month, 2 weeks ago
🛒 Магазин сообществ в соц. сетях 24/7
⚡️ В наличии любые тематики и количества, связь в ЛС @timur_chik1
ac99e5f0c33c6df9805b
Last updated 7 months, 3 weeks ago
Ruby on Rails получит прокси-сервис (написанный на Go)
Уже сейчас он работает в ONCE/Campfire и обеспечивает HTTP/2, public caching, X-Sendfile, gzip, SSL (Let's Encrypt). Обещают работу с любым Rails-приложением из коробки. Отличное дополнение для приложений, что деплоятся Kamal'ом в Docker. Сейчас всё это хорошо закрывает Cloudflare, но иметь hosted решение однозначно приятно.
https://github.com/rails/rails/issues/50479
GitHub
Add Thruster to Docker setup to get HTTP/2, X-Sendfile, Caching by default in Rails 8 · Issue #50479 · rails/rails
Puma does not support HTTP/2 out of the box, and there does not seem to be a short-term path to that changing. That means most people have to either stick nginx or a CDN in front of their app, whic...
По Ruby on Rails 2.5 года существовал клевый чат и канал по бесплатному обучению и вкатыванию в веб-разработку и руби/рельсы – @LearnRubyForPikabuChat. Я был там все эти 2.5 года как ментор и эксперт со стороны
Сейчас чат меняет владельца, и я не знаю как он будет развиваться, но хочу взять эстафетную палочку и продолжить развивать бесплатное вкатывание в IT и веб-разработку
Благо сам давно подумываю о написании Roadmap по входу в IT в 2022 (приветствую ваши вопросы и интересующие темы в комментариях)
А план обучения с того канала сохранил здесь: https://gambala.pro/roadmap
Доклады с RailsConf 2022 доступны для просмотра онлайнКаждый раз жду и наслаждаюсь будто новый сезон любимого сериала, после каждой конференции – прим. редhttps://youtube.com/playlist?list=PLbHJudTY1K0f1WgIbKCc0_M-XMraWwCmk
Офигенный материал по оптимизации скорости на бекеПолуторачасовой скринкаст (можно не смотреть целиком, ниже распишу как ускориться) и два примера (код на гитхабе) ДО и ПОСЛЕ оптимизаций.
Оптимизации наивкуснейшие и грамотно реализованные. Некоторые вещи могут быть слишком сложны (SQL портянка вместо ActiveRecord запросов) но даже взяв и внедрив лишь часть советов – можно получить прирост в производительности
Уверен, какие-то советы вы уже успешно применяете (асинк джобы те же), но все еще много мест и практик, которые можно почерпнуть и применить
– Статья: https://www.twnsnd.com/posts/how_i_100xd_bulk_import_speed_in_rails_with_some_gnarly_sql.html
– Скринкаст: https://www.youtube.com/watch?v=pOyvSxB9qFQ
– Пример ДО: https://github.com/ryantownsend/bulk-import-exercise
Точка входа – контроллер в API: https://github.com/ryantownsend/bulk-import-exercise/blob/main/app/controllers/movie_imports_controller.rb
От него можно (прям в гитхабе) ходить по другим классам и смотреть как выполняется запрос
– Пример ПОСЛЕ: https://github.com/ryantownsend/bulk-import-exercise-solution
Точка входа – тот же контроллер в API: https://github.com/ryantownsend/bulk-import-exercise-solution/blob/main/app/controllers/movie_imports_controller.rb
Список техник:– ActionController::Metal
– не триггерит и не тратит время на middleware, но params нужно пермиттить самостоятельно (отслеживая дыры в безопасности)
– jsonb поле в ActiveRecord автоматически сериализуется в ruby-object, для больших json-структур это долго и дорого по RAM. attribute :entries, :text
отключает авто-сериализацию
– Асинк джобы, очевидно
– MovieImport.where(id: movie_import_id).update_all("finished_at = now()")
быстрее чем
– MovieImport.find(movie_import_id).update(finished_at: Time.zone.now)
– Гигантские json структуры (речь про batch-bulk импорт данных) выгодно обрабатывать батчами, пусть даже в одном потоке – это делает лок БД не одним длинным, а серией коротких
– Гигантская SQL-простыня UPSERT_QUERY_TEMPLATE
– спорно, т.к. усложняется поддержка, но жутко интересно. Насколько оказывается PG SQL богат возможностями и быстр
– AfterCommitEverywhere
гем позволяет объявлять коллбеки after_commit
в любом месте программы внутри транзакции. Когда выполнится транзакция ApplicationRecord.transaction
– выполнится коллбек
EventStream
– офигенно используется концепт ActiveSupport::CurrentAttributes
, чтобы в рамках реквеста накопить в синглтоне какие-то данные, а потом в самом конце реквеста, что-то с этими данными сделать
TWNSND
100x'ing bulk import speed in Rails with gnarly SQL
A presentation covering how I improved bulk import performance on a large-scale Rails application to less than 1% of it's original processing time.
Как думаете, почему эта тема в Ruby/Rails канале? И как применима в руби/рельсах (и в разработке в целом)?
Simple ≠ EasyФраза популярная, но на русском не всегда понятная. В переводе на русский оба слова кажутся синонимами:
Просто ≠ Легко
Но чтобы сохранить исходный смысл, Easy лучше переводить как «Привычно». И фраза трансформируется в:
Легко, потому что просто ≠ Легко, потому что привычноОб этом правиле важно помнить и носить с собой, делая тот или иной выбор
Бывает непонятно, какой из вариантов выбрать. Но если смотреть на варианты сквозь правило, часто выясняется, что один из вариантов кажется легким просто потому что он привычный – хотя на самом деле внутри сложнее другого
И совет в общем виде простой:
Выбирайте Simple, не Easy
Вышли Ruby on Rails 7.0Помимо фронтенда без сборки или со сборкой быстрым esbuild (уже обсуждали на этом канале) в новых рельсах есть еще пара клевых вещей, но важным я вижу не это
Важнее то, как DHH с командой изменили подачу рельс в публичном пространстве. Рельсы теперь не просто уютный фреймворк, на котором можно быстро начать пилить веб-сервисы. Теперь это мощный фреймворк с сильными примерами компаний, кода. DHH активно продает фреймворк
Даже уютную милую картинку с человечками при старте нового рельсового приложения убрали и заменили на лого фреймворка в новом фирменном стиле
Удастся ли лучше продавать такой фреймворк ребятам из Долины? Поживем – увидим
Снова попробовал мигрировать с turbolinks на новый turbo в RailsBasecamp в своем репертуаре – ломают API, плюют на совместимость, сообщество своими силами поднимает upgrading guide'ы
Но ситуацию это пока не спасает – Rails UJS и формы в Devise не работают
Сохранил тикет на будущее, буду отслеживать https://github.com/hotwired/turbo-rails/issues/122
Канал для поиска исполнителей для разных задач и организации мини конкурсов
Last updated 1 month, 2 weeks ago
🛒 Магазин сообществ в соц. сетях 24/7
⚡️ В наличии любые тематики и количества, связь в ЛС @timur_chik1
ac99e5f0c33c6df9805b
Last updated 7 months, 3 weeks ago