fv17の日記 - Coding Every Day

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

Ruby - なぜmapとかcollectとか、エイリアスが沢山あるのか?

ズバリの記事を発見map と collect、reduce と inject ―― 名前の違いに見る発想の違いRubyで「なぜこうなっているのか?」は多くの場合、Lisp、SmallTalk、あとPerl起源が多い気がする。 逆にJavaは世に出た時期がほぼ同じで影響を受けてないから、全然違う…

長時間集中して勉強するには

最近工夫していること、意識していること 勉強する場所 図書館 自宅だとダラダラ過ごし必要以上に休んでしまう。 図書館だと休憩していても周りが集中モードなので、適度に休憩できて"さぁやるか!"となりやすい We Workなどのシェアオフィスを借りる 自宅や…

Ruby、Railsで日付を扱う

下記参照qiita.com

Git - 【stashコマンド】変更分を一時避難し、コミットせずに別ブランチへ移動する

Git

作業中にコミットせずに別ブランチへ移動しなければならなくなった場合の操作方法。 git stashで一時避難 git stashで作業内容を一時保存し、別ブランチへ移動することが可能になる。 git stashこの時、下記2つのファイルが一時避難され、変更前の状態に戻…

Git - リモートの最新情報をローカルに反映する(fetchとpull)

Git

リモート(GIthubなど)から最新情報を取得し、それをローカルに反映させるには2つの方法がある。一つがfetchでもう一つがpull。 fetch fetchはリモートリポジトリからローカルリポジトリに最新情報を取得する。 この時、ワークツリー(ローカルで実装している…

AWSで無料枠利用なのに毎月4$弱課金されていた件

AWS

Elastic IPで毎月4$課金されてた 何も使ってないのに課金された!と叫んでいたら、これを思い出しました。 togetter.com明細にここ数ヶ月、毎月300~400円前後 Amazon Web Serviceの記載があったが、遂に対応。 先人たちに解消方法を学ぶ 下記記事で先人たち…

【オブジェクト指向】単一責任の原則について理解を深める

単一責任の原則(SRP)についての理解を深めてくれる良記事。 SRPに違反しているコードを徐々に改良していく丁寧な解説で非常に分かりやすい。medium.com 記事を紹介する背景 Sandi Metz氏の「オブジェクト指向設計実践ガイド」を数週読了。 しかし、SOLID原則…

Rails - content_tagの使い方

content_tagメモ before <div class="alert alert-<%= message_type %>"><%= message %></div> after <%= content_tag(:div, message, class: "alert alert-#{message_type}") %>

Rails - byebug gemを導入してdebuggerでデバッグする

debuggerの使い方メモ (RubyMineでいいじゃん感) 導入と使い方 byebug gemを導入 debuggerをソースに組み込む Railsを実行するとコマンドラインで該当箇所で止まって色々調査できる Ctrl-Dで抜ける 代表的なコマンド コマンド 説明 eval 変数の値、メソッド…

Rails - テーブルにカラムを追加する

rails g migration add_<カラム名>_to_<テーブル名> <カラム名>:<カラムの型>具体例 rails g migration add_password_digest_to_users password_digest:string

Rails - バージョン5.2よりconfig/secrets.ymlが仕様変更

下記参照 qiita.com

Ruby - Refinementsとは

書籍「メタプログラミング Ruby」の写経兼復習用。Refinementsとは、Rubyにおけるオープンクラスのスコープを特定の範囲に限定するもの。具体的に見ていくと、下記のようなオープンクラスを用いた場合、その影響範囲はアプリケーション全体となり、予期せぬ…

【オブジェクト指向】SOLID原則について

ググったけどリスコフの置換原則などに関して分かりやすい良記事が見つからなかった。TODO(後で読む)https://www.amazon.co.jp/dp/4797347783 アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技

【デザインパターン】テンプレードメソッドパターン

下記がわかりやすい。 Rubyでの解説 Rubyによるデザインパターン【Template Method】-テンプレは準備した、あとはお好きに- - Qiita Javaでの解説 デザインパターン「Template Method」 - Qiita

RuboCop Airbnbの導入方法

RailsにRubocop Airbnbを導入する。 参照URL Rubocop AirbnbのGithub https://github.com/airbnb/ruby/tree/master/rubocop-airbnb#installationRubocopの公式Doc https://docs.rubocop.org/en/latest/ 設定方法 Rubocop AirbnbのGithubのInstallationに導入…

Ajaxとは? - 基礎と起源

Ajaxとは? qiita.com Ajaxの起源 Ajax: A New Approach to Web Applications | Adaptive Path

正規表現 - 肯定の先読み・後読みなどの復習

下記の復習用qiita.com投稿してから気づいたが、上記の記事の「まとめ」読めばいいじゃん... まぁ写経がてら学べたからよしとしよう。 \b 単語の境界 「単語の境界」を意味する。下記から英単語「ear」を抽出したい時に、「\bear\b」とすることで「hearing」…

Rubyにおけるprivateの仕様が他言語と違う理由

「メタプログラミングRuby」に「privateの本当の意味」というコラムがあるのだが、そもそもJavaなどの言語と仕様が違う理由は何か?、なぜJavaのようなシンプルな設計となっていないのか?、設計思想は?、と気になったので調べてみた。 ズバリの記事があっ…

RSpec - マッチャ一覧

参照は下記。本記事にないマッチャはいずれかを参照すれば見つかる。 公式Doc Built in matchers - RSpec Expectations - RSpec - Relish File: README — Documentation for rspec-expectations (3.8.2) @jnshitoさんの記事 使えるRSpec入門・その2「使用頻…

Git - コミット時のコメントの書き方について

Git

下記で話題になっているので参考。 Git公式でこう書けばGoodだよ的な記事はないのだろうか。qiita.comqiita.com

Ruby - 文字列操作に関するメソッド一覧

=~ todo match todo scan Stringのメソッド。 正規表現のパターンとマッチする部分を文字列からすべて取り出し、配列にして返す。 '123 456 789'.scan(/\d+/) # => ['123', '456', '789'] 参考 : scan (String) - Rubyリファレンス split Stringのメソッド。…

ゼロから学ぶ正規表現

文字列の検索や置換を行うための技術、ミニ言語的な立ち位置としての正規表現を学ぶ。アプリにおけるユーザーの入力制御、クローラーを使ったWebスクレイピングでの情報抽出、開発途中におけるテストデータの一括修正など、利用場面が多い。エンジニア1~3年…

RubyMine - No Ruby interpreter configured for the projectの解決方法

稀にエラーとなり、外部ライブラリが見えなくなる。 解決方法 RubyMineを閉じる .idea/ フォルダーを削除する 再度RubyMineで該当のプロジェクトを開く git管理している場合の .idea/ 削除方法 git statusでUntracked filesに .idea/と出てきたら下記コマン…

N+1問題とは

N+1問題とは、必要以上にSQLクエリが発行され、その結果、速度低下に繋がりユーザビリティが悪くなる問題のこと。 具体的には? 下記の記事を参照。 ruby-rails.hatenadiary.comもしくは、Rails ガイドの「13 関連付けを一括読み込みする」に「N + 1クエリ問…

【パーシャル】:collectionオプションによる複数オブジェクトのレンダリング

パーシャルにオブジェクトの複数形を渡し、見やすいコードにする 基本の使い方 collectionオプションにより、コレクションのメンバごとにパーシャルをレンダリングする <%= render partial: "product", collection: @products %> 具体的な使い方 Before Refa…

Ruby - if文を一行にまとめる技

ある値がnilかどうかでif文を分岐させる場合、引数で || 記法が使えないかを検討する if文で分岐させる書き方 def redirect_back_to(default) if session[:forwarding_url].nil? redirect_to default else redirect_to session[:forwarding_url] session.del…

Ruby - 場所によって変わるselfの意味

参照:チェリー本 Class直下におけるself クラス クラスメソッドにおけるself クラス インスタンスメソッドにおけるself インスタンス

Rails - delegateはなぜ必要なのか

delegateの基本的な使い方 基本的な使い方は公式ドキュメントか、日本語の場合はググればいっぱい出てきます。 https://api.rubyonrails.org/classes/Module.html#method-i-delegate なぜ必要か? オブジェクト指向の「デメテルの法則」(最小知識の原則)に反…

RubyMineの設定すべき箇所

随時更新中 半角スペース、タブを可視化する 設定箇所 Preferences > Editor > General > Appearance Show whitespacesにチェックを入れる 設定理由 インデントのズレや行の末尾に不要な空白文字が入っている際にすぐ分かる。 インデントを空白2文字にする …

HerokuのWebサーバーをWEBrickからpumaに変更する

参照 devcenter.heroku.com config/puma.rb workers Integer(ENV['WEB_CONCURRENCY'] || 2) threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5) threads threads_count, threads_count preload_app! rackup DefaultRackup port ENV['PORT'] || 3000 en…