Узкие уроки от октября 2022 г.
Мы любим читать, смотреть и слушать, чтобы наши навыки оставались острыми, а взгляды свежими. Вот некоторые ресурсы, которые мы узнали за этот месяц.
Практическое влияние GVL на масштабирование в Ruby
В «Практическом влиянии GVL на масштабирование в Ruby» Нейт Беркопек дает отличный практический обзор параллелизма и параллелизма, а также проблемы, которые они создают для интерпретаторов на основе C. Этому посту несколько лет — «Ракторы» теперь реальность, — но экспозиция стоит того, чтобы немного перемотать ее в уме. Краткая версия: мы обычно разделяем задачи на те, которые связаны с ЦП, тратя большую часть своего времени на выполнение инструкций, и те, которые связаны с вводом-выводом, тратя большую часть своего времени на ожидание отправки или получения данных. Чтобы наилучшим образом использовать интерпретатор Ruby на основе C, вам необходимо оценить, какое место в этом спектре занимает ваша работа.
расширить себя в Ruby
Модули — отличный способ инкапсулировать логику, совместно используемую объектами. Но что, если вы хотите использовать эту логику напрямую (например, MyModule.my_method
)? Оказывается, это нельзя вызвать, если оно не определено как def self.my_method
. Хотя это означало бы, что другие объекты, которые extend
MyModule
больше не смогут вызывать этот метод; не то, что мы хотим. Если вместо этого MyModule
сам extend
s, #my_method
становится непосредственно доступным на MyModule
и остается доступным на любых объектах extend
ing MyModule
!
ActiveRecord поддерживает типы перечислений Postgres
Перечисления отлично подходят для ужесточения проверок. Но чтение целочисленных значений может быть немного загадочным. Одним из решений является использование типов перечислений Postgres в миграциях. И теперь Rails 7 дает нам усиление с перечисленными типами Postgres, запечёнными в AR.
Веб-альманах: JavaScript в 2022 году
Веб-альманах, в отличие от Альманаха фермера, не скажет вам, когда начинается зима или через какое время после последнего полнолуния в октябре вы должны сажать чеснок, но он дает представление о состоянии сети. Этот раздел посвящен специально JavaScript, его тенденциям и использованию, но в альманахе есть и другие полезные вещи — обязательно найдите время, чтобы проверить другие разделы, посвященные CSS, UX, разметке и многому другому!
redirect_back_or_to
Иногда мы не знаем точно, куда мы хотим пойти или как мы хотим туда добраться. В такие моменты мы можем воспользоваться удобными методами, такими как redirect_back_or_to
. По умолчанию браузер будет перенаправлен обратно на реферер. Реферер определяется через заголовок запроса (HTTP Referer
(так в оригинале)) — который не всегда доступен, поскольку он основан на настройках безопасности браузера и предпочтениях пользователя. Но даже в том случае, если заголовок отсутствует, все равно ничего страшного, потому что вместо этого мы можем указать резервное местоположение для перенаправления!
Данные.определить
В Ruby 3.2 простой собственный объект-значение будет добавлен в Ruby в качестве базового класса. Здравствуйте, Data
. Хотя я не особенно в восторге от названия, я в восторге от реализации, так как часто тянусь к ценным объектам. Метод define
будет использоваться для инициализации экземпляра этого класса с позиционными или ключевыми аргументами. Моей первой мыслью было, что этот класс звучит жутко похоже на Struct
. Однако Structs
являются изменяемыми, похожими на коллекции и словари, а Data
- нет. PR для этой функции указан в заголовке, но вы можете ознакомиться с предложением здесь.
Авторы:
Узнайте больше о том, как The Gnar создает программное обеспечение.