ブックマーク / techracho.bpsinc.jp (18)

  • Railsでメールアドレスをバリデーションする方法(翻訳)|TechRacho by BPS株式会社

    RailsのActive Recordは、意味のあるデータを確実に得られるようにするためのバリデーション機能をActive Modelライブラリ経由で提供しています。 ユーザーにメールを送信可能であることを確認する処理は、アプリケーションを正しく設定するうえで非常に重要なので、既に皆さんもUser#email属性でバリデーションを行っていることでしょう。 🔗 以下の方法ではなく 手作り正規表現や、Railsの古いAPIドキュメントにあるものを使う。 class User < ApplicationRecord validates :email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i }, presence: true, uniqueness: { case_insensitive: true } end

    Railsでメールアドレスをバリデーションする方法(翻訳)|TechRacho by BPS株式会社
    tmtms
    tmtms 2024/04/05
    うーん、ローカルパートは ASCII なら何でも OK くらいでいいと思う
  • ruby.wasmはじめの一歩: Ruby Next Playground構築の舞台裏(翻訳)|TechRacho by BPS株式会社

    概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: First steps with ruby.wasm: or how we built Ruby Next Playground—Martian Chronicles, Evil Martians’ team blog 原文公開日: 2024/02/06 原著者: Vladimir Dementyev(首席バックエンドエンジニア)、Travis Turner(技術記事編集者) サイト: Evil Martians -- ニューヨークやロシアを中心に拠点を構えるRuby on Rails開発会社です。良質のブログ記事を多数公開し、多くのgemのスポンサーでもあります。 日語ブログ: 合同会社イービルマーシャンズ - Qiita はじめに 当初はHTMLCSSのレンダラーに過ぎなかったWebブラウザは、やがて洗練された実行環境へ

    ruby.wasmはじめの一歩: Ruby Next Playground構築の舞台裏(翻訳)|TechRacho by BPS株式会社
    tmtms
    tmtms 2024/03/25
  • Ruby: メモ化のイディオムが現代のRubyパフォーマンスに与える影響(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Performance impact of the memoization idiom on modern Ruby | Rails at Scale 原文公開日: 2024/02/14 原著者: Jean Boussier(byroot) CC BY-NC-SA 4.0 Deed | 表示 - 非営利 - 継承 4.0 国際 | Creative Commons Ruby 3.2における主要な内部変更のひとつに、オブジェクトシェイプ(object shape)の導入があります。 記事では、オブジェクトシェイプが導入された理由、仕組み、制限事項について解説します。 🔗 オブジェクトのインスタンス変数はどのように保存されるのか Rubyは非常に動的な言語なので、インスタンス変数へのアクセスという単純な操作でも多くの作業を伴います

    Ruby: メモ化のイディオムが現代のRubyパフォーマンスに与える影響(翻訳)|TechRacho by BPS株式会社
    tmtms
    tmtms 2024/03/04
    なるほどなー。シェイプじゃなくてもインスタンス変数を単純に使う方法だと false と nil がメモ化されないし、メモ化するにしてもたとえばインスタンス変数のハッシュに持つようにするとかした方がいいのかもしれないな
  • Ruby 3.3で大幅に強化されたIRBの解説(翻訳)|TechRacho by BPS株式会社

    概要 原著者の依頼を受けて翻訳・公開いたします。 英語記事: Unveiling the big leap in Ruby 3.3’s IRB | Rails at Scale 原文公開日: 2023/12/25 原著者: Stan Lo -- ruby/irb、ruby/relineruby/tracerのメンテナーです 記事では、Ruby 3.3でIRBに導入された主な機能強化と、現時点で来年に導入が予定されている機能について詳しく解説いたします。 Ruby 3.3のIRB強化の要点: デバッグ機能強化 オートコンプリートの使用感を強化 全体的な使用感を改善 耳より情報: Ruby 2.7以降のプロジェクトであれば、Gemfileにgem "irb"を追加することで、Ruby 3.3に今すぐアップグレードしなくてもRuby 3.3と同じバージョンのIRB(v1.11.0)を利用でき

    Ruby 3.3で大幅に強化されたIRBの解説(翻訳)|TechRacho by BPS株式会社
    tmtms
    tmtms 2023/12/27
  • 私がTDDを実践しない理由(翻訳)|TechRacho by BPS株式会社

    概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: 37signals Dev — Pending tests 原文公開日: 2023/03/01 原著者: Jorge Manrubia -- 37signalsのエンジニアです 日語タイトルは内容に即したものにしました。 私は「テストファースト」で作業することも、テストでコードの設計を支援することも、めったにありません。 最近の私は、37signalsである新しいことに取り組み始めました。何も決まっていない白紙の状態なので作業はすいすい進み、来る日も来る日もこってりしたプルリクを作成しています。会議に先立って早めに投げておきたいと思っていたプルリクには、もれなく以下が含まれていました。 ご覧のように、私はほとんどの場合テストを最後に書いていることが見て取れます。例外があるとすれば、テストを書くことで最短で結果をフィードバックで

    私がTDDを実践しない理由(翻訳)|TechRacho by BPS株式会社
    tmtms
    tmtms 2023/05/29
    自分もテストコードはだいたい最後に書いてるな。TDD 苦手マン。
  • Ruby: 数値のゼロチェックには'== 0'よりも'zero?'メソッドを使おう(翻訳)|TechRacho by BPS株式会社

    概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Use zero? for comparison of numerics like Integer, Float and BigDecimal - Andy Croll 原文公開日: 2022/10/31 著者: Andy Croll 日語タイトルは内容に即したものにしました。 Rubyの構文や標準ライブラリが提供するメソッドは、他の言語に比べて読みやすさ(と喜び)をしばしば優先しています。 その例の1つは、値をゼロと比較するときのシンタックスシュガーです。 それぞれのドキュメントのzero?メソッドの項を読んでみてください。 Integer#zero? Float#zero? Numeric#zero? BigDecimal#zero?1 🔗 以下のように書くよりも 値が0に等しいかどうかのチェックを条件に書く。 if n

    Ruby: 数値のゼロチェックには'== 0'よりも'zero?'メソッドを使おう(翻訳)|TechRacho by BPS株式会社
    tmtms
    tmtms 2023/05/10
    自分は `== 0` 派です。 “うっかりnumber = 0と書いてしまう凡ミスが非常に起きやすくなります” そうかなぁ? そんなことない気がする。
  • ThinkPad T14 Gen 3の重量について|TechRacho by BPS株式会社

    ThinkPadのTシリーズには、T14とT14sがあります。このシリーズ、以前から 重くて厚い代わりに、ポートが充実していてお値段が安いT14 軽くて薄い代わりに、ポートが減ってお値段が高いT14s という棲み分けがされていました。 しかし、Gen3 (第12世代Core, AMD Ryzen 6000シリーズ世代) になって、スペック上の重量表記が逆転していることに違和感を覚えた方も多いと思います。 仕様表 ThinkPad T14 Gen 3 約1.21kg~ ThinkPad T14s Gen 3 約1.22kg~ 販売代理店モデル製品仕様書 ThinkPad T14 Gen 3: 約1.3kg (平均値) ThinkPad T14s Gen 3: 約1.42kg (平均値) インテル、AMDでスペック表での差異は見られません。ちなみにGen2はこんな感じでした。 ThinkPad

    ThinkPad T14 Gen 3の重量について|TechRacho by BPS株式会社
    tmtms
    tmtms 2022/07/21
    ThinkPad T14 Gen3 の重量の違いはバッテリーの容量の違いによるものだったのかー。いや、しかし自分の ThinkPad T14 Gen3 はバッテリーは小さいやつのはずなのに実測 1.42kg もあるぞ。一体何が詰まってるんだ…。
  • Rails: where.firstとfind_byの違いを知る(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Know what your scopes are doing: where.first vs find_by - Andy Croll 原文公開日: 2022/03/14 原著者: Andy Croll 日語タイトルは内容に即したものにしました。 参考: 週刊Railsウォッチ20220328 where.firstとfind_by Active RecordのようなORM(Object-Relational Mapper)でSQLを生成することには多くのメリットがあります。明確で再利用しやすい抽象化を手に入れられるので、時間も節約でき、可読性も向上します。 ただし、ORMの便利な抽象化機能そのものが思わぬ結果をもたらすこともあります。 データベースサーバー上で実行される「実際の」SQLはフレームワークが生成するので、気をつけ

    Rails: where.firstとfind_byの違いを知る(翻訳)|TechRacho by BPS株式会社
    tmtms
    tmtms 2022/04/06
    first すると勝手に ORDER BY がつくのか。Rails むずいなー。
  • 週刊Railsウォッチ(20200714後編)ruby-warning gemでワーニングを手軽に抑制、rubocop -aの振る舞いが変わる、書籍『MySQL徹底入門 第4版』ほか|TechRacho by BPS株式会社

    2020.07.14 週刊Railsウォッチ(20200714後編)ruby-warning gemでワーニングを手軽に抑制、rubocop -aの振る舞いが変わる、書籍『MySQL徹底入門 第4版』ほか こんにちは、hachi8833です。昨日のGitHubダウン皆さまお疲れさまでした。 解決したのでもう消えているが、問題発生中はSMSで経過を通知してもらうボタンが出てた。GitHub止まったときは使えそう。https://t.co/ZYHUjgtwrf — Daisuke Sawada (@daisuke7) July 13, 2020 ⚓Rubyruby-warning: ワーニングにフックをかけるgem リポジトリ: jeremyevans/ruby-warning: Add custom processing for warnings 元記事: Rubyのwarningから不

    週刊Railsウォッチ(20200714後編)ruby-warning gemでワーニングを手軽に抑制、rubocop -aの振る舞いが変わる、書籍『MySQL徹底入門 第4版』ほか|TechRacho by BPS株式会社
    tmtms
    tmtms 2020/07/18
    ヽ(=´▽`=)ノ “「このmysql-params.tmtms.netというサイト↓、MySQLのバージョン間でどんなパラメータが増えたり減ったりしたかのdiffが見れるのがスゴい」”
  • Ruby 3.0のキーワード引数変更のスケジュールが変更に|TechRacho by BPS株式会社

    こんにちは、hachi8833です。 昨日BPS社内で「週刊Railsウォッチ」のつっつき会をZoom開催する2時間ほど前に、@_ko1さんの以下のツイートを目にしました。 [New 2.7/3.0 keyword argument pain point - Ruby on Rails Discussions](https://t.co/M4zP3yeFQi) — _ko1 (@_ko1) May 14, 2020 その後Matz自身もツイートしているのを見つけました。 Link: New 2.7/3.0 keyword argument pain point - Ruby on Rails Discussions: https://t.co/ngpHvWjeT7 — Yukihiro Matz (@yukihiro_matz) May 14, 2020 今回取り急ぎ記事にしましたが、もち

    Ruby 3.0のキーワード引数変更のスケジュールが変更に|TechRacho by BPS株式会社
    tmtms
    tmtms 2020/05/15
    2.7 の今の状態がつらいのはわかるけど、3.0 で仕様変更されることは問題ないと思ってた。
  • Rails: モデルの外では名前付きスコープだけを使おう(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Only use named scopes outside models - Andy Croll 原文公開日: 2018/03/04 著者: Andy Croll 前回の記事では#whereメソッドで「hashスタイル」を使おうというお話をいたしましたが、あまり自分が現実に使うことのなさそうなコード例でした💦。 次のようには書かないこと コントローラやビューで#whereスコープを使う。 class PostsController < ApplicationController def index @posts = Post.where(status: 'published') end end 次のように書くこと 名前付きスコープはモデルでのみ定義する。 class Post < ApplicationRecord scope

    Rails: モデルの外では名前付きスコープだけを使おう(翻訳)|TechRacho by BPS株式会社
    tmtms
    tmtms 2018/06/15
    まあ同意なんだけど、もっと機械的にそんなことできないような制約をつけるってことはできないんかしら。
  • Ruby: mallocでマルチスレッドプログラムのメモリが倍増する理由(翻訳)|TechRacho by BPS株式会社

    要約 メモリ断片化は測定や診断が困難ですが、驚くほど簡単に修正できることもあります。マルチスレッドのCRubyプログラム(mallocのスレッド単位メモリアリーナ)におけるメモリ断片化の原因を追ってみましょう。記事のボリュームは3343語、20分程度です。 単純な設定変更だけで問題を完全に解決できることはめったにありません。 私の顧客のSidekiqプロセスが大量のメモリを消費していたことがありました(1プロセスあたり1 GB程度)。開始当初の各プロセスは300MB程度でしたが、時間の経過とともにじわじわと肥大化してほぼギガバイトレベルにまで達したところで落ち着き始めました。 私は顧客にMALLOC_ARENA_MAXというたった1つの環境変数の変更を依頼しました。「2に設定してください」と。 プロセス再起動後、「じわじわ肥大化」現象はピタリと止みました。プロセスのメモリ使用量は以前の半

    Ruby: mallocでマルチスレッドプログラムのメモリが倍増する理由(翻訳)|TechRacho by BPS株式会社
    tmtms
    tmtms 2017/12/29
  • 3年以上かけて培ったRails開発のコツ集大成(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Things I learned developing Ruby and Rails apps over the past 3+ years | by Filippos Vasilakis | Kollegorna 原文公開日: 2017/01/30 著者: Filippos Vasilakis 2017/11/20: 初版公開 2023/06/08: 訳文を更新 順序は特に決まっていません。 🔗 1. トップレベルにrescue_fromを書く ルートコントローラにrescue_fromを書くと、その下で発生したすべての例外をキャッチできるので非常に便利です。Webアプリにこれを追加すると、リクエスト/レスポンスのサイクルで実行されるほとんどのコードがさらに便利になります。 シンプルなAPIを例に考えます。rescue_fro

    3年以上かけて培ったRails開発のコツ集大成(翻訳)|TechRacho by BPS株式会社
    tmtms
    tmtms 2017/11/21
    "PostgreSQL以外のデータベースをメインで使うのであれば十分な理由付けが必要" / MySQL使うなってことかと思ったらMongoDB使うなって話だった。
  • Rubyスタイルガイドを読む: コレクション(Array、Hash、Setなど)|TechRacho by BPS株式会社

    2017.03.27 Rubyスタイルガイドを読む: コレクション(Array、Hash、Setなど) 参照: bbatsov/ruby-style-guide 7-01【統一】配列やハッシュの作成は[]や{}によるリテラル表記が望ましい Prefer literal array and hash creation notation (unless you need to pass parameters to their constructors, that is). Array#newやHash.newによる作成は、コンストラクタにパラメータを渡す必要がある場合のみとします。タイプ量が少ないという点も含めて、リテラル表記に揃えるスタイルにしたということですね。 # 不可 arr = Array.new hash = Hash.new # 良好 arr = [] hash = {} 7-0

    Rubyスタイルガイドを読む: コレクション(Array、Hash、Setなど)|TechRacho by BPS株式会社
    tmtms
    tmtms 2017/04/02
    "values.eachを使うこと" は "each_valueを使うこと" の間違い / "変数のようなミュータブルなオブジェクト" はたぶん何か勘違いしてる / 個人的には %w %i はあまり好きじゃないし、配列やハッシュの末尾に「,」をつける方が好み。
  • Ruby 2.4.1新機能: Onigmo正規表現の非包含演算子(?~ )をチェック|TechRacho by BPS株式会社

    2017.03.23 Ruby 2.4.1新機能: Onigmo正規表現の非包含演算子(?~ )をチェック こんにちは、hachi8833です。Ruby 2.4.1リリースおめでとうございます。 多くの修正・変更点の中から、私にとって関心の高い非包含演算子を取り急ぎチェックしてみました。結構奥が深そうなので、何かわかったら別途記事にするかもしれません。 「特定の文字列を含まない文字列にマッチする」なんて夢のようじゃありませんか。 参考情報 公式ニュース: Ruby 2.4.1 Released 2.4.0以降のコミット: Comparing changes 公式のコミットはmergeばかり並んでいて読みづらいので、RubyFlowの速報も参照しました。 Ruby 2.4.1 Onigmoアップデートで非包含演算子が導入 Rubyの正規表現エンジンとしておなじみのOnigmoRubyとは独

    Ruby 2.4.1新機能: Onigmo正規表現の非包含演算子(?~ )をチェック|TechRacho by BPS株式会社
    tmtms
    tmtms 2017/03/24
  • Ruby 2.1.0リリース!注目の新機能を見てみましょう|TechRacho by BPS株式会社

    2013年12月25日。おめでとうございます、Ruby 2.1.0がリリースされました! 日時間で26日という細かい突っ込みをしている場合ではありません。 まだ使ったことがない方、簡単に変更点を見てみましょう。 文法の変更 デフォルト値を伴わないキーワード引数 Ruby 2.0が出たときから誰もが思っていた疑問、「なんでキーワード引数はデフォルト値必須なんだ?」がついに解消されました。以下の記法で、デフォルト値をつけないキーワード引数を宣言できます。この場合、呼び出し時に対応する実引数を渡さないとArgumentErrorになります。 def hello(name: ) puts name end hello(name: "taro") # => taro hello # => ArgumentError: missing keyword: name キーワード引数同士ではデフォルト引数

    Ruby 2.1.0リリース!注目の新機能を見てみましょう|TechRacho by BPS株式会社
    tmtms
    tmtms 2013/12/26
    Ruby 2.1 便利そう
  • システム開発を適正な価格で発注し,プロジェクトを成功させる方法(その1:見積編)|TechRacho by BPS株式会社

    2013.04.20 システム開発を適正な価格で発注し,プロジェクトを成功させる方法(その1:見積編) こんにちは.morimorihogeです. 僕は普段受託開発の案件を中心に,要件定義から設計,実装,サーバ構築してリリースし,運用に乗るまで一通り携わる仕事をしています. Web開発自体はかれこれ学生時代からやっていて(当時は今の会社ではないですが),最初は純粋なプログラマとして入り,その後順当にやれる幅を広げていった形になります.もうそろそろ10年目みたいです.時が経つのは早いです. 昔に比べて最近は,お客様と開発の間の調整をしたり,案件の見積をしたりすることが多くなりました. そんな中,うまくいったプロジェクトもあり,こちらの力が至らずうまくできなかったプロジェクトもあります.いくつものプロジェクトを経験していく中で,最近はそうしたプロジェクトの差が見える様になってきた気がするので,

    システム開発を適正な価格で発注し,プロジェクトを成功させる方法(その1:見積編)|TechRacho by BPS株式会社
    tmtms
    tmtms 2013/04/21
  • Rails 3.2.11にアップデートしましょう|TechRacho by BPS株式会社

    Ruby on Rails 3.2.11がリリースされました。 3.2.10が出てから数日ですが、合わせてかなり重大なセキュリティFIXが含まれているので、確実に更新しましょう。 3.2.11での変更点 (1) URLを知っている人だけがアクセスできる隠しページや、パスワードリセット機能などで、token認証をすることがよくあります。 たとえば以下のようなコードです。 if params[:token] @user = User.find_by_token(params[:token]) end ここで、仮にparams[:token]が空のハッシュ {} の場合、if文は当然真と評価されて通過しますが、find_by_tokenの部分は条件無しと見なされます。 User.find_by_token({}) User.where(:token => {}) このようなコードは、whereが

    tmtms
    tmtms 2013/01/11
    Rails こわい
  • 1