Forwarded from Evil Martians
В недавно вышедшей Ruby on Rails 7.0 есть множество нововведений: больших и малых, революционных и не очень, полезных и противоречивых.
Сегодня расскажем об одном противоречивом: полезном, но очень опасном при неаккуратном использовании. Знакомьтесь, метод
С одной стороны, это очень удобная штука для быстрого получения обратных условий для выборки данных из базы:
Но проблема кроется в том, что инвертируются все where-условия, наложенные на скоуп, включая те, что были добавлены при сцеплении скоупов и в
При неаккуратном использовании можно сделать большую такую дыру в безопасности — например, выдать одному клиенту данные других клиентов в мультитенантном приложении.
Больше страшных примеров можно найти в этом блоге: 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 (Кто хочет поконтрибьютить в опенсорс? Вот хорошая задача!)
Используйте новые возможности языков и фреймворков с умом и меньше багов вам в наступившем году!
Сегодня расскажем об одном противоречивом: полезном, но очень опасном при неаккуратном использовании. Знакомьтесь, метод
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 (Кто хочет поконтрибьютить в опенсорс? Вот хорошая задача!)
Используйте новые возможности языков и фреймворков с умом и меньше багов вам в наступившем году!
Forwarded from Maga’s Journal
yup, that’s for sure youtube.com/watch?v=i-e_YPO-RYc
YouTube
jeen-yuhs: A Kanye Trilogy | Official Teaser | Netflix
Step inside the journey of Kanye West, over twenty years in the making.
jeen-yuhs: A Kanye Trilogy, the once in a lifetime three-week global event, begins February 16, only on Netflix. http://netflix.com/jeenyuhs
SUBSCRIBE: http://bit.ly/29qBUt7
About…
jeen-yuhs: A Kanye Trilogy, the once in a lifetime three-week global event, begins February 16, only on Netflix. http://netflix.com/jeenyuhs
SUBSCRIBE: http://bit.ly/29qBUt7
About…
Forwarded from Coding: работа и стажировки для программистов
Людям старше 17 лет без денег.
Ребят, ну в чём проблема? Зашли на @stagirovky, нашли работу за рубежом, вот вам деньги.
Работы за границей завались. Даже люди без опыта, диплома и знания английского получают по 100 000 в месяц. А если хоть что-то умеешь - то и до 400 000 дойдёт.
Все сидят на Headhunter, а в телеге найти работу за границей легче. В общем, зайдите на @stagirovky, выберите стажировку и поднимите деньжат.
Ребят, ну в чём проблема? Зашли на @stagirovky, нашли работу за рубежом, вот вам деньги.
Работы за границей завались. Даже люди без опыта, диплома и знания английского получают по 100 000 в месяц. А если хоть что-то умеешь - то и до 400 000 дойдёт.
Все сидят на Headhunter, а в телеге найти работу за границей легче. В общем, зайдите на @stagirovky, выберите стажировку и поднимите деньжат.
Forwarded from Дизайн-кабак
Alexey Romashin: «Запись моего Live от 20 декабря. “Как дизайнеру продавать дизайн”»
https://designpub.ru/4f8449b2f999
https://designpub.ru/4f8449b2f999
Medium
Запись моего Live от 20 декабря. “Как дизайнеру продавать дизайн”
Привет, читатели Кабака и мои подписчики. Перед самым 20 декабря я провёл Live на своём канале в Ютубе и делюсь с вами его записью.
Forwarded from Дизайн-кабак
Katya Tinmey: «Книжные дизайнеры»
https://designpub.ru/19f07f2d8add
https://designpub.ru/19f07f2d8add
Forwarded from Shock Design
This media is not supported in your browser
VIEW IN TELEGRAM
Анимированная обложка журнала The Economist в честь приближающихся переговоров России и США в Женеве
Forwarded from Coding: работа и стажировки для программистов
Также требуется человек для прохождения стажировки в Швеции! Оплата 4000 рублей! Срочно!
Подробности тут: https://t.me/stagirovky
Подробности тут: https://t.me/stagirovky
Forwarded from Дизайн-кабак
Anastasiya Mokhan: «3 правила выигрышного тритмента»
https://designpub.ru/4fec2e5e6012
https://designpub.ru/4fec2e5e6012
Medium
3 правила выигрышного тритмента
Сегодня мы поговорим о тритментах (режиссерских презентациях), которые создаются дизайнерами и режиссерами для участия в тендере. Тендер…
Forwarded from Defront — про фронтенд-разработку и не только (Alexander Myshov)
Релиз Chrome 97
На прошлой неделе вышла новая версия Chrome. Пит Лепаж и Джеселин Ин рассказали про новинки релиза — "New in Chrome 97".
В Chrome 97 по умолчанию включён WebTransport API. С его помощью обеспечивается быстрый обмен данными между клиентом и сервером в сетях с высокими задержками. Поддерживается передача данных без гарантии доставки пакетов с помощью Datagram API и с гарантиями доставки пакетов с помощью Streams API. WebTransport API работает только с HTTP/3.
Добавлена поддержка экспериментального метода
В JavaScript-движке у массивов появились методы
В Chrome DevTools добавлена вкладка "Recorder". С её помощью можно записывать и повторно воспроизводить действия на странице (user flows). Обновлён список эмулируемых устройств. На вкладке "Elements" появилось автодополнение при редактировании HTML. Настройки DevTools теперь можно синхронизировать между разными устройствами.
#chrome #release
https://developer.chrome.com/en/blog/new-in-chrome-97/
https://developer.chrome.com/blog/new-in-devtools-97/
На прошлой неделе вышла новая версия Chrome. Пит Лепаж и Джеселин Ин рассказали про новинки релиза — "New in Chrome 97".
В Chrome 97 по умолчанию включён WebTransport API. С его помощью обеспечивается быстрый обмен данными между клиентом и сервером в сетях с высокими задержками. Поддерживается передача данных без гарантии доставки пакетов с помощью Datagram API и с гарантиями доставки пакетов с помощью Streams API. WebTransport API работает только с HTTP/3.
Добавлена поддержка экспериментального метода
HTMLScriptElement.supports(). Благодаря ему можно определить, какой вид скриптов поддерживается браузером.В JavaScript-движке у массивов появились методы
findLast(), findLastIndex() для поиска элементов с конца.В Chrome DevTools добавлена вкладка "Recorder". С её помощью можно записывать и повторно воспроизводить действия на странице (user flows). Обновлён список эмулируемых устройств. На вкладке "Elements" появилось автодополнение при редактировании HTML. Настройки DevTools теперь можно синхронизировать между разными устройствами.
#chrome #release
https://developer.chrome.com/en/blog/new-in-chrome-97/
https://developer.chrome.com/blog/new-in-devtools-97/
Chrome for Developers
New in Chrome 97 | Blog | Chrome for Developers
Chrome 97 is rolling out now! There's a new option for sending real time messages between the client and server using Web Transport. You can use feature detection to see what types of scripts a browser supports. JavaScript gets better, and there's plenty…
Forwarded from Coding: работа и стажировки для программистов
Работа с клавиатурой в iOS: как минимизировать копипасту.
При разработке практически любого мобильного приложения разработчику придётся столкнуться с полями ввода. А где поля ввода — там и клавиатура, а также логика, связанная с обработкой событий её жизненного цикла: появления, сокрытия, изменения размеров.
Статья
При разработке практически любого мобильного приложения разработчику придётся столкнуться с полями ввода. А где поля ввода — там и клавиатура, а также логика, связанная с обработкой событий её жизненного цикла: появления, сокрытия, изменения размеров.
Статья
Forwarded from Node.JS [ru] | Серверный JavaScript
This media is not supported in your browser
VIEW IN TELEGRAM
Чтобы быстрее стать профессионалом во frontend, практикуйся на примерах реальных проектов!
На канале @uniquetemplates собраны макеты сайтов с такими элементами, как:
▫️GSAP-анимации
▫️фильтры, калькуляторы со сложной логикой
▫️личный кабинет с графиками и статистикой
Подписывайся на @uniquetemplates, и учись реализовывать сложные интерфейсы по готовым макетам!
На канале @uniquetemplates собраны макеты сайтов с такими элементами, как:
▫️GSAP-анимации
▫️фильтры, калькуляторы со сложной логикой
▫️личный кабинет с графиками и статистикой
Подписывайся на @uniquetemplates, и учись реализовывать сложные интерфейсы по готовым макетам!
Forwarded from Дизайн-снайпер
Редкий случай узкой специализации дизайн-студии. Loooop — студия, которая работает только с графикой и анимацией, которая использует замкнутую линию и у них достаточно много клиентов и проектов. Обычно такой стиль называют Line-art.
Посмотреть портфолио.
Посмотреть портфолио.