Узкие уроки от октября 2022 г.

Мы любим читать, смотреть и слушать, чтобы наши навыки оставались острыми, а взгляды свежими. Вот некоторые ресурсы, которые мы узнали за этот месяц.

Практическое влияние GVL на масштабирование в Ruby

В «Практическом влиянии GVL на масштабирование в Ruby» Нейт Беркопек дает отличный практический обзор параллелизма и параллелизма, а также проблемы, которые они создают для интерпретаторов на основе C. Этому посту несколько лет — «Ракторы» теперь реальность, — но экспозиция стоит того, чтобы немного перемотать ее в уме. Краткая версия: мы обычно разделяем задачи на те, которые связаны с ЦП, тратя большую часть своего времени на выполнение инструкций, и те, которые связаны с вводом-выводом, тратя большую часть своего времени на ожидание отправки или получения данных. Чтобы наилучшим образом использовать интерпретатор Ruby на основе C, вам необходимо оценить, какое место в этом спектре занимает ваша работа.

расширить себя в Ruby

Модули — отличный способ инкапсулировать логику, совместно используемую объектами. Но что, если вы хотите использовать эту логику напрямую (например, MyModule.my_method)? Оказывается, это нельзя вызвать, если оно не определено как def self.my_method. Хотя это означало бы, что другие объекты, которые extend MyModule больше не смогут вызывать этот метод; не то, что мы хотим. Если вместо этого MyModule сам extends, #my_method становится непосредственно доступным на MyModule и остается доступным на любых объектах extending 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 создает программное обеспечение.