m-ito27のブックマーク (76)

  • Railsの太ったモデルをダイエットさせる方法について - メドピア開発者ブログ

    こんにちは。メドピアのRuby(Rails)化をお手伝いしている@willnetです。最近はよくリファクタリングをしています。 今回は、最近僕がリファクタリングしている内容についてまとめようと思います。 メドピアではFat Model/Controllerを避けるために、rubocopの設定を利用しクラスの行数が300行以下になるよう制限しています*1。最近300行を超えるモデルが出てきたので、一部の処理を別のクラスに切り出し始めました。 このとき、Railsが提供している機能であるconcernsを利用すると楽に行数を減らすことができますが、それだとrubocopの指摘を回避できるという意味しかないので、なるべく委譲(composition)を利用して処理を別クラスに移していっています*2。 複数モデルにまたがる処理を切り出す Railsアプリケーションを書いていると、複数のモデルを一度

    Railsの太ったモデルをダイエットさせる方法について - メドピア開発者ブログ
  • JSのレスポンシブ対応をresizeからmatchMediaに移行した

    JS でブレークポイント毎に処理を分ける場合の方法を resize から matchMedia に移行したので、その際のメモ書きです。 昔ながらの方法 恥ずかしながら、最近まで JS でブレークポイント毎に JS 処理を切り替える場合、 以下のように昔ながらの resize イベントの監視を使っていました... /** * イベントリスナー */ const listener = () => { // リサイズ時に行う処理 if (window.innerWidth >= 768) { // 768px以上 console.log('PC用ブレークポイント用処理'); } else { // 768px未満 console.log('SP用ブレークポイント用処理'); } }; // リスナー登録 window.addEventListener('resize', listener); /

    JSのレスポンシブ対応をresizeからmatchMediaに移行した
  • なぜMACアドレスとIPアドレスは両方必要なのか?

    この記事は,ネットワークの学習の序盤につまずくポイントである 「MACアドレスとIPアドレスってどっちか片方だけじゃだめなの?」「レイヤ2と3って結局何が違うの?」 という疑問について,私なりの回答をまとめた記事です。世に不正確な記事が出回っているように見受けられるので,正確な回答をまとめたく、長文になってしまいました。とはいえ,初学者向けにかなり初歩的なところから書いたつもりですので是非読んでみてください。 この記事について この記事を読むと何が分かるか MACアドレスとIPアドレスの役割の差が分かる レイヤ2(=同一サブネットの通信)とレイヤ3(=サブネット間の通信)の仕組みが分かる ネットワーク設計時にレイヤ2・レイヤ3のいずれで設計すべきか判断できる なお,教科書的な説明ではなく,概念や捉え方の説明となっていますので,試験勉強には役立ちません。実務としてネットワーク設計を行う方の役

    なぜMACアドレスとIPアドレスは両方必要なのか?
    m-ito27
    m-ito27 2024/03/03
    “なぜMACアドレスとIPアドレスは両方必要なのか?”
  • MySQL 8.0 への移行が完了しました ~さようなら全ての MySQL 5.7~ - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは。クラウド運用チームの飯塚です。 私たちは cybozu.com 番環境の MySQL を昨年末から順次 8.0 系へアップグレードしており、前回の定期メンテナンスにおいて全てのインスタンスのアップグレードを完了しました。この記事では、私たちが MySQL 8.0 への移行に取り組んだ理由と必要になった対応について紹介します。 なぜ MySQL 8.0 へ移行したのか GTID-based レプリケーションにおける制限の緩和 再起動時に AUTO_INCREMENT のカウンタが巻き戻る問題の解消 実際に対応が必要だった MySQL 8.0 の変更点 utf8mb4 の照合順序のデフォルト値の変更 SQL_CALC_FOUND_ROWS と FOUND_ROWS() が deprecated に Connector/J のメタデータ取得処理の性能低下 sys.innodb_lo

    MySQL 8.0 への移行が完了しました ~さようなら全ての MySQL 5.7~ - Cybozu Inside Out | サイボウズエンジニアのブログ
    m-ito27
    m-ito27 2024/02/05
  • Ruby / Rails の企業として新卒氏が入社した後にウォッチするように伝えるもの - koicの日記

    先日、神速さんのエントリを見てあとで書こうと思ったもの。 表題ママだけれど、Ruby / Rails の企業として新卒氏が入社した後にウォッチするように伝えているもの。もちろん流量も結構なものなので実際にどの程度ウォッチしているかは人に委ねている。自分も全部は見れていない。メールでのタイトルか送信者 (PR や Issue を出した人) で興味を引かれたものが基準。 Rails 研修での Rails Tutorial の流れで、upstream とそれに近い情報源を伝えている。特に y-yagi さんのブログは、子供の頃に読み始めた新聞と同じで最初は分からなくても読み続けているうちに分かることが増えてくるので継続するのが力になることと共に伝えている。 GitHub 上のリポジトリ https://github.com/rails/rails ... ruby/ruby のリポジトリと一緒

    Ruby / Rails の企業として新卒氏が入社した後にウォッチするように伝えるもの - koicの日記
    m-ito27
    m-ito27 2024/01/22
  • Ruby 3.3’s YJIT: Faster While Using Less Memory

    This year, the YJIT team has been working hard to improve and optimize YJIT. We’re proud to say that the version of YJIT to be included with Ruby 3.3 is leaps and bounds ahead of Ruby 3.2’s. It provides better performance across the board, while also warming up faster and using less memory. The 3.3 release is also more robust, including a number of bug fixes along with an improved test suite. In t

    Ruby 3.3’s YJIT: Faster While Using Less Memory
    m-ito27
    m-ito27 2024/01/22
  • `Thread.current[:hoge]`はスレッドローカル変数を参照していると思いきや実際はファイバーローカル変数だった - おもしろwebサービス開発日記

    このエントリはSmartHR Advent Calendar 2021の23日目の記事です。 SmartHRでは毎週「Rubyist@SmartHR(仮)」という名の定例ミーティング*1が行われています。このミーティングはバックエンドエンジニアが集まり、チームをまたいだ情報共有や相談をすることを目的としています。その中では僕がTipsなどを共有する「willnetさんのありがたいお言葉」というコーナーが常設されています。 このエントリでは、そのコーナーで共有した内容をひとつ紹介します*2。 Thread#[]で取得できる値はファイバーローカル変数なのだった アプリケーションのコードではあまり見かけませんが、ライブラリ中でスレッドセーフを意識している設定を読むと Thread.current[:locale] = :ja のようになっているのをよく見かけます。それで僕はThread#[]はス

    `Thread.current[:hoge]`はスレッドローカル変数を参照していると思いきや実際はファイバーローカル変数だった - おもしろwebサービス開発日記
    m-ito27
    m-ito27 2023/11/13
  • .orを使ってActiveRecordのスコープを定義するときは.mergeで囲わないと意図しない挙動になるかも? | クラッソーネ開発者ブログ

    こんにちは、山口拓弥(@yamat47)です。 最近、いまさらながら Netflix の梨泰院クラス にハマっています。 勧善懲悪なストーリーはわかりやすく面白いし、見れば見るほどチャミスルが飲みたくなりますね 🍻 https://twitter.com/yamat47/status/1586206595842646016 さて日は、最近業務で書いた ActiveRecord の scope の実装の話をします。 危うく重大な不具合を含んだままアプリをリリースしそうになったので... 自戒も込めて記事にします...! 不具合を含んでいたコードを早速紹介します サンプルで扱うモデルの説明 業務のコードをそのまま公開するのは文脈を伝えづらく難しかったので、この記事ではシンプルなまったく別の状況を扱います。 大まかな説明ですが、こんな感じの状況を想定してください: 不特定多数とオンライン対戦

    .orを使ってActiveRecordのスコープを定義するときは.mergeで囲わないと意図しない挙動になるかも? | クラッソーネ開発者ブログ
    m-ito27
    m-ito27 2023/11/09
  • ブラウザでリロードしながらキャッシュの挙動を確認してる全ての開発者へ | blog.jxck.io

    Intro こういうタイトルを付けるのはあまり好きではないが、あえてこのようにした。 「ブラウザでキャッシュがヒットしない」 以下は、 Web における Caching の FAQ だ。 サーバで Cache-Control を付与したのにキャッシュがヒットしない サーバで ETag を付与したのに If-None-Match が送られない サーバで Last-Modified-Since を付与したのに If-Modified-Since が送られない 先日も、筆者が書いた MDN の Cache セクションで「記述が間違っているのでは?」と同様の質問を受けた。 Issue about the Age response header and the term "Reload" · Issue #29294 · mdn/content https://github.com/mdn/cont

    ブラウザでリロードしながらキャッシュの挙動を確認してる全ての開発者へ | blog.jxck.io
    m-ito27
    m-ito27 2023/11/06
  • Ruby アプリケーションのトレース

    フルサポートは、すべてのトレーサー機能が利用可能であることを示します。 非推奨は、将来のリリースでサポートがメンテナンスに移行することを示します。 メンテナンスは、重大なバグ修正のみが EOL までバックポートされることを示します。 EOL は、サポートが提供されなくなったことを示します。 Apple macOS 対応macOS での ddtrace の使用は、開発ではサポートされていますが、実稼働環境ではサポートされていません。 Microsoft Windows サポートMicrosoft Windows での ddtrace の使用は現在サポートされていません。コミュニティの貢献や課題は引き続き受け付けますが、優先順位は低いと判断します。 インストールRuby アプリケーションにトレースを追加するには、いくつかの簡単なステップを踏むだけです。 トレース用の Datadog Agent

    Ruby アプリケーションのトレース
    m-ito27
    m-ito27 2023/07/06
  • ClamAVによるリアルタイムスキャンの設定 | 稲葉サーバーデザイン

    北海道札幌市在住、サーバー専門のフリーランスエンジニアです。クラウドサービスを利用してWebサイト、ITシステムのサーバー構成設計とサーバー構築を行います。 (2023.12.12追記) ClamAV 1.0 のリアルタイムスキャン設定について、新しい記事を書きました。 RHEL 9系での設定については、そちらを参照するとよいと思います。 ・ClamAVによるリアルタイムスキャンの設定(ClamAV 1.0版) https://inaba-serverdesign.jp/blog/20231122/clamav-realtime-scan-v10.html2023.12.12追記ここまで) はじめに ClamAVのリアルタイムスキャン機能 ClamAVのインストール ウイルスデータベースの取得と更新設定 clamdの設定と動作確認 リアルタイムスキャンの設定と動作確認 リアルタイムスキ

    ClamAVによるリアルタイムスキャンの設定 | 稲葉サーバーデザイン
  • rails v7.0.5, v7.0.6 非互換変更まとめメモ - ruby-jp

    https://github.com/rails/rails/releases/tag/v7.0.5 https://github.com/rails/rails/releases/tag/v7.0.6 割と非互換な変更が多いのでまとめておく has_one関連でのcreate_associationの挙動変更 https://github.com/rails/rails/pull/46386 のバックポートがさりげなくv7.0.5, v7.0.6に入っている code:ruby ActiveRecord::Schema.define do create_table(:suppliers, force: true) do |t| end create_table(:accounts, force: true) do |t| t.references :supplier, index: {

    rails v7.0.5, v7.0.6 非互換変更まとめメモ - ruby-jp
  • Ruby 3の静的解析機能のRBS、TypeProf、Steep、Sorbetの関係についてのノート - クックパッド開発者ブログ

    こんにちは、フルタイムRubyコミッタとして働いてる遠藤(@mametter)です。 Ruby 3 は「静的型解析」を備えることが目標の 1 つになっています。遠藤が開発してる TypeProf は Ruby 3 の静的型解析エコシステムの中の 1 ツールです。しかし Ruby 3 の静的解析というと、RBS、TypeProf、Steep、Sorbet などいろいろなツール名が出てきてよくわからない、という声を何回か聞いたので、かんたんにまとめておきます。 3 行まとめ RBS:Ruby の型情報を扱う言語。Ruby 3 にバンドルされる。 TypeProf:型注釈のない Ruby コードを型解析するツール。Ruby 3 にバンドルされる。 Steep/Sorbet:Ruby で静的型付けのプログラミングができるツール。 詳しくはそれぞれ以下で解説します。 RBS とは RBS は、Rub

    Ruby 3の静的解析機能のRBS、TypeProf、Steep、Sorbetの関係についてのノート - クックパッド開発者ブログ
  • [Git] 自分の環境だけgitignoreする方法(2つ) - YoheiM .NET

    こんにちは、@yoheiMuneです。 Gitを使って開発をしていると、時々自分だけgitignoreにしたいファイルができます(例えばエディタのメタファイルとか)。そのようなファイルを、自分の環境からバージョン管理から外す方法をブログに書きたいと思います。 特定のプロジェクトにある指定したファイルを、自分だけgitignoreしたい 掲題のような場合には、.git/info/excludeのファイルにバージョン管理外にしたいファイルを指定します。 # .git/info/exclude my-gitignore-target.txt すると、ファイルをGitレポジトリ上に追加しても、バージョン管理対象外になります。 # ファイルを追加する $ touch my-gitignore-target.txt # しかし、バージョン管理対象に入らない $ git status # On bran

    [Git] 自分の環境だけgitignoreする方法(2つ) - YoheiM .NET
    m-ito27
    m-ito27 2023/06/23
  • Linuxコマンド:sedの基礎とオプション | IT職種コラム

    はじめに Linux上で全ての文字列を置換処理を行ったり指定した範囲の文字列を抽出・削除を行ったりと様々なテキスト編集を行うコマンド「sed:Stream Editor」の基的な使い方とオプションについて説明を行っていきます。 Linuxコマンド「sed」の基 「sed」コマンドはオプションや書式によって様々な機能を発揮します。その例として以下には文字列の「指定条件にマッチする最初の文字列を一時的に置換処理」「指定条件にマッチする全ての文字列を置換処理」「指定条件にマッチする文字列を置換した上で上書き処理」「指定文字列を削除処理」「空白文字を削除する」「空行を削除する」「指定する行の前後にテキストを挿入する」「指定キーワードの前後にテキストを挿入する」処理コマンドを記載します。 基書式 $ sed [オプション](スクリプトコマンド)(入力ファイル) 指定条件に対して各行上で最初にマ

    m-ito27
    m-ito27 2023/06/23
  • sed コマンドで上書き保存(macOS) | ex1-lab

    macOSだと、sed コマンドで上書き保存できない sedコマンドで文字を置換して上書き保存するように「sed -i 's/置換前/置換後/g’ (ファイル名)」とコマンドをうっても以下のようにエラーになります $ echo "aaa" > hoge.txt $ sed -i "s/aaa/xxx/g" hoge.txt sed: 1: "hoge.txt": extra characters at the end of h command $ echo "aaa" > test.txt $ sed -i "s/a/x/g" test.txt sed: 1: "test.txt": undefined label 'est.txt' sed コマンドで上書き保存する場合のオプション 「sed -i 〜〜」だと、置換後に上書き保存ができません。上書き保存するには「sed -i -e 's/

    sed コマンドで上書き保存(macOS) | ex1-lab
    m-ito27
    m-ito27 2023/06/23
  • AWSで出来る、特定国からのWebアクセスをブロックしたい | DevelopersIO

    こんにちは。 ご機嫌いかがでしょうか。 "No human labor is no human error" が大好きな ネクストモード株式会社 の吉井です。 Web サービスを AWS 上で展開しているシステムでは、特定国からのアクセスを遮断したいケースがあると思います。(深い意味はありません) 今回はその方法を紹介したいと思います。 CloudFront 対象のディストリビューションを開くと 地理的制限 というタブがあります。 編集ボタンを押すと以下の3つから制限タイプを選択可能です。 許可、または、ブロックを選択した場合はさらに国を指定します。 制限なし 許可リスト ブロックリスト ALB インターネットとの接地点に ALB を利用しているケースです。 ALB に WAF を紐付けて特定国からのアクセスをブロックします。 詳細な手順は以下のブログを参照ください。 API Gatewa

    AWSで出来る、特定国からのWebアクセスをブロックしたい | DevelopersIO
    m-ito27
    m-ito27 2023/06/22
  • AWS Systems Manager Maintenance Windows - AWS Systems Manager

    AWS Systems Manager の一機能である Maintenance Windows では、オペレーティングシステムのパッチ適用、ドライバーの更新、ソフトウェアやパッチのインストールなど、ノードに対して破壊的になり得るアクションを実行するスケジュールを定義できます。Maintenance Windows により、Amazon Simple Storage Service (Amazon S3) バケット、Amazon Simple Queue Service (Amazon SQS) キュー、AWS Key Management Service (AWS KMS) キーなど、他の AWS リソースタイプでアクションをスケジュールできます。メンテナンスウィンドウのターゲットに含めることができるサポートされているリソースタイプの詳細なリストについては、「AWS Resource Gr

    m-ito27
    m-ito27 2023/06/22
  • Object#public_send()で安全にメソッドを呼び出す - siso9toの日記

    rubyで動的にメソッド呼び出しをしたい時、Object#send()を使うと文字列やシンボルでメソッドを呼び出す事が出来ます。 ただこの機能を使うと意図せずにカプセル化を壊す事が出来てしまうため、publicメソッドのみ呼び出すようにしたい場合はObject#public_send()を使うと良いです。 myclass.rb class MyClass def hoge "hogehoge" end private def fuga "fugafuga" end end public_sendを使ってprivateメソッド(fuga)を実行してみます。 [2] pry(main)> require './myclass.rb' => true [3] pry(main)> obj = MyClass.new => #<MyClass:0x007fe89b2043e8> [4] pry(m

    Object#public_send()で安全にメソッドを呼び出す - siso9toの日記
    m-ito27
    m-ito27 2023/06/21
  • Rubyの配列で組み合わせを列挙する(翻訳)|TechRacho by BPS株式会社

    概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Enumerating Combinations with Ruby Arrays 原文公開日: 2023-05-08 原著者: Domhnall Murphy サイト: VectorLogic Rubyの配列には、さまざまな問題を解決するのに役立つ振る舞いがぎっしり詰まっています。記事では、「配列の配列」で可能なすべての組み合わせを評価する方法を2通り見ていくことにします。 🔗 はじめに この間、限られた時間の中で、ささやかながらRuby技術調査を行い、つらい思いをしました。振り返ってみると、「配列の配列」から派生する組み合わせを列挙する方法の調査に時間をかけすぎていました。 調査が終わった後もこの点に未練が残っていたので、トラウマを克服するためにこの概念を記事にまとめることにしました。皆さんも私の旅に参加してみません

    Rubyの配列で組み合わせを列挙する(翻訳)|TechRacho by BPS株式会社
    m-ito27
    m-ito27 2023/06/18