タグ

ブックマーク / qiita.com/kyntk (15)

  • new_framework_defaults_x_xを更新しても、値が反映されないことがあるので注意 - Qiita

    Railsのアップデートの際に、新しいバージョンの config のデフォルト値を少しずつ反映させるときに new_framework_defaults_x_x を使うと思います。 今回、config.load_defaults 6.1 へ上げる前に、Rails.application.config.active_record.has_many_inversing = trueの設定をしても反映されないことがありました。 たまたま今回は has_many_inversing でハマりましたが、他の設定でも同様ですし、new_framework_defaults 以外の config/initializers/* での設定も同様にRails.application.config.xxxの設定が反映されない可能性があるので記事にしてみました。 結論 初期化時の読み込み順によっては、config

    new_framework_defaults_x_xを更新しても、値が反映されないことがあるので注意 - Qiita
  • ユーザー体験と向き合う2年間で学んだこと - Qiita

    はじめに 2年前(2021年)にQiitaにて「CX向上グループ」という、ユーザー体験を良くすることをミッションとしたチームが発足しました。そこで私は、日々ユーザー体験と向き合いながら開発などをしてきました。 一旦2年間経ったので、今まで学んだことをまとめてみようと思いました。今回の内容が、ユーザー体験と向き合っている方々と共通するところが少しでもあれば嬉しいです。 組織をどういう狙いで立ち上げ、どのようなことをやっていたのかについては、以下の記事にまとめてあるのでご覧ください。 やっていたこと 「ユーザー体験を良くする」ことをミッションとして、やっていたことは大きく2つあります。 サイトのユーザー体験を良くするための開発 GitHub Discussionsやユーザーインタビューなどでユーザーの皆さまとのコミュニケーション 私たちにとっての「ユーザー体験」はサイト上にとどまらず、サイト外

    ユーザー体験と向き合う2年間で学んだこと - Qiita
  • Rails 7.1でlibディレクトリを自動読み込みするデフォルトプラクティスが決まった - Qiita

    lib = root.join('lib') config.autoload_paths << lib config.eager_load_paths << lib Rails.autoloaders.main.ignore( lib.join('assets'), lib.join('tasks') ) 詳しくはPull Requestを確認してください。 libディレクトリすべてを自動読み込みしないほうがいい理由について libディレクトリ全てを自動読み込みする設定は推奨されていませんでした。 1 autoload_libが追加されたPull Requestによると、 Some history The lib directory was in the autoload paths by default in the early versions of Rails. However, l

    Rails 7.1でlibディレクトリを自動読み込みするデフォルトプラクティスが決まった - Qiita
    mziyut112
    mziyut112 2023/10/27
  • RubyKaigi2023 "Ractor" reconsideredで分からなかった部分などを調べてみた - Qiita

    RubyKaigi2023が始まりました!!! 待ちに待ったRubyKaigiがついに始まりました。 今年はRubyKaigiにオンライン参加として、オフィスでRubyKaigiを生中継しながらワイワイする会をやりました。 Qiitaとしてはスポンサーとして協賛、ブース出展しており、現地参加メンバーもいます。 "Ractor" reconsidered 初日の今日もいくつかセッションを見ましたが、その中で理解の不十分だったこのセッションについて、過去の発表等も振り返りながら調べてみました。 Ractorについて Ractorについては色々な記事ですでに説明されているのですが、軽くおさらいします。 RubyKaigi Takeout 2020 Ractorはマルチコアを使って並列に処理を行えるように作られました。 マルチプロセスを使う方法もありますが、データの共有に制限があったり、メモリ空間

    RubyKaigi2023 "Ractor" reconsideredで分からなかった部分などを調べてみた - Qiita
    mziyut112
    mziyut112 2023/05/12
  • has_manyのdependent: xxxが実行される前に、before_destroyを実行する方法 - Qiita

    has_manyのdependent: xxxが実行される前に、before_destroyを実行する方法RubyRails この記事で説明したいこと before_destoryのprependオプションについて 背景 has_many :hogehoges, dependent: destroyとなっているhogehogesがある。 このとき、親のレコードの削除に伴い、紐づくhogehogesがdestroyされる前に行いたい処理があった。 例えば、 class Like < ApplicationRecord module Likable extend ActiveSupport::Concern included do has_many :likes, dependent: :destroy end end end class Article < ApplicationRecord

    has_manyのdependent: xxxが実行される前に、before_destroyを実行する方法 - Qiita
  • Lighthouseのパフォーマンスのスコアは、計測するデバイスによって変わる! - Qiita

    Web Vitalsのスコアを計測するためにLighthouseを用いることがあると思うのですが、このスコアは実行するデバイスのCPUスペックによって変化するので注意が必要です。 一般的に、Lighthouseはリアルユーザー環境での計測と違い、計測ごとのスコアのブレが少ないという特徴があります。 ただし、計測ごとにスコアのブレが少ないものの、そもそものスコアの値は環境により異なります。 これは、Lighthouseで計測するときのスロットリング方法によるものです。 (リアルユーザー環境とラボ環境での計測の違いについてはこちらをご覧ください) Lighthouseで計測するときのスロットリング方法 Lighthouseでは、計測の際にスロットリングを行います。 例えば、Mobile Deviceを想定してLighthouseを実行する時に、NetworkスロットリングとCPUスロットリング

    Lighthouseのパフォーマンスのスコアは、計測するデバイスによって変わる! - Qiita
    mziyut112
    mziyut112 2023/01/18
  • RubyGemsでrust extensionがリリースされたので、Rustでgemを作ってみた - Qiita

    Ateam Group U-30 のカレンダーの2日目はQiitaの @kyntk が担当します。 今年、RubyGems 3.3.11でRust extensionsのexperimentalリリースがありました。 変更されたPull Requestは↓です。 この変更でCargoBuilderが実装され、Cargo.tomlファイルを見つけるとcargoRustのビルドができるようになりました。 今まではRust用にビルドの設定をする必要があったのですが、かんたんにビルドができるようになりました。 ちょうど、Qiita社でもRustを使う機会がありそうだったので、勉強がてらRustでgemを作成してみました。

    RubyGemsでrust extensionがリリースされたので、Rustでgemを作ってみた - Qiita
  • mini_racerでNode.jsのURL APIを使うときに注意すること - Qiita

    正確にはmini_racerを使う時に限ったことではないのですが、Node.jsのAPIのURLには、legacy APIとWHATWG準拠のAPIがあることに注意しましょう (ブラウザのURL APIもWHATWG API準拠) 上記のAPIドキュメントから引用します。 下の図は'https://user:pass@sub.example.com:8080/p/a/t/h?query=string#hash'というURLを両方のAPIでパースしたときの違いを表しています。 上半分がlegacy APIのurl.parse()を使ったときで、下半分がWHATWGのURLオブジェクトのプロパティを表しています。 originプロパティなど、いろいろ違いがあります。 ┌───────────────────────────────────────────────────────────────

    mini_racerでNode.jsのURL APIを使うときに注意すること - Qiita
  • npm versionコマンドでpackageのバージョンを上げる - Qiita

    npmのバージョンを上げ、タグを切ってくれるコマンドがnpmにあるのを知らなかったので、触りながら調べてみました。 sandbox用のpackage作成 npm initをして、最初にversion 0.0.0で作ったpackageを使っていきます。 npm versionのコマンドの使い方はこちらです。 $ npm version -h Bump a package version Usage: npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease | from-git] Options: [--allow-same-version] [--no-commit-hooks] [--no-git-tag-version] [--json] [--prei

    npm versionコマンドでpackageのバージョンを上げる - Qiita
  • GraphQL Rubyのvisible?, authorized?について - Qiita

    GraphQLでは、MutationやQueryのそれぞれのobject, field単位などで、認可を行います。 これにより、どのようなクエリが発行されても、ユーザーが参照する権限を持っているかを各field, objectなどの単位で確認して、結果を返すことができます。 contextでユーザーの情報を持ち、認可を行います。 ビジネスロジックレイヤーでの認可設定 この記事では、GraphQL RubyのVisibility、Authorizationについて説明しますが、そのようなGraphQLレイヤーでの認可の前に、ビジネスロジックレイヤーでの認可を検討すべきと言われています。 例えば、Modelにロジックを書くことで、すべてのfieldに同じ処理を書く必要がなくなります。 class Post < ActiveRecord::Base def self.posts_for(user

    GraphQL Rubyのvisible?, authorized?について - Qiita
  • CodeMirror 6のExtensionの分類まとめ - Qiita

    CodeMirrorについては先日、こちらの記事を投稿しました。 CodeMirrorでは、自分の好きなようにエディタを拡張することができ、独自の機能も追加することが可能です。 この役割を担っているのが、Extensionです。 CodeMirrorにおいて重要なExtensionですが、色々な種類のExtensionがあるので、調べてまとめてみました。 Extensionとは Extensionとはエディタを拡張するもので、イメージしやすいのは、何らかのDOMイベントをフックに、エディタのstateを変化させるものです。 System Guideに載っている図を用いると、DOM eventからtransactionを作成、dispatchしてstateを更新する機能です。 それ以外に、タブサイズなどの設定値を保持したり、keymapや、エディタのテーマを設定したりできます。 いくつか説明

    CodeMirror 6のExtensionの分類まとめ - Qiita
  • CodeMirror 6のStateの更新の流れについてまとめる - Qiita

    CodeMirrorとは Web上で動作するコードエディタを作成できるライブラリです。 自由に拡張機能を設定することで、独自のエディタを作成することができます。 先日、長らくベータ開発中だった、CodeMirrorのバージョン6が正式リリースされました。 CodeMirror 6はゼロから実装し直したということもあり、APIが変わっているところも多く、新しい概念も追加されています。 エディタのStateとその更新 CodeMirror 6のSystem Guideとして、アーキテクチャの概要などが説明されています。 その中でもっとも基的な、Stateの更新部分についてまとめます。 view更新までの流れ System Guideに以下の図が掲載されています。 エディタの状態をstateとして管理しているのですが、その更新にはtransactionというものを使っています。 入力や、DOM

    CodeMirror 6のStateの更新の流れについてまとめる - Qiita
  • 新しいパフォーマンス指標のINPをChrome UXレポートで見れるように設定する - Qiita

    先月Googleが新たに発表したパフォーマンスの指標である、Interaction to Next Paint (INP)をChrome UXレポートのダッシュボードに追加する方法について説明します。 Chrome UXレポートやパフォーマンスを継続的に計測する方法などについてはこちらの記事で説明していますので、ご覧ください。 Interaction to Next Paint (INP) とは INPとは、Experimentalとして発表された指標で、サイトの応答性を表します。 Interaction to Next Paint (INP) is an experimental field metric that assesses responsiveness. 応答性に関する指標としてFIDが存在しますが、FIDは最初の入力に対する応答性を計測するのに対して、INPはすべての応答性を

    新しいパフォーマンス指標のINPをChrome UXレポートで見れるように設定する - Qiita
  • peerDependenciesMetaのoptionalとoptionalDependenciesの違いとは? - Qiita

    package.jsonに設定する項目に、peerDependenciesMeta optional:trueと書かれているのを見て、optionalDependenciesとの違いが分からなかったので調べてみました。 違い このように書かれていました。 they're entirely different, albeit similar. optionalDependencies means, if the dep fails to install, don't fail the overarching install. peerDependenciesMeta allows you to provide extra information about peer deps, and marking one "optional" means "it's not an error if it

    peerDependenciesMetaのoptionalとoptionalDependenciesの違いとは? - Qiita
  • Turborepoを使ってMonorepoへ移行する - Qiita

    あるアプリケーションをMonorepoで管理したくなり、Turborepoを使ったのでまとめます。 Turborepoとは 昨年末にVercelに買収されたことで話題となった、monorepoを管理するためのツールです。 この分野ではLernaが人気ですが、Turborepoも昨年末以降ダウンロード数を伸ばしているようです。 Monorepoツールの比較 それぞれのMonorepo管理ツールで何ができるかといった機能の比較などはこちらにまとまっていました。 LernaのメンテをNrwlが引き継ぐなどのニュースもあったので、今どれがベストかを判断するというよりも、好きに試してみるというモチベーションでTurborepoを選択しています。 手順 Workspaceの設定をする Turborepoはyarn workspaceなどと互換性があります。 そのため、まず単一のリポジトリからWorks

    Turborepoを使ってMonorepoへ移行する - Qiita
  • 1