Just do IT

思うは招く

2022-01-01から1年間の記事一覧

Ruby Hash#slice の便利な使い方

たとえば、こんな配列とHashがあったとする。 keys = %w[hoge bar] hash = { 'hoge'=> 'ほげ', 'aaa'=> 'あああ', 'bar'=> 'ばあー'} keys配列の各要素をkeyとして、hashからそれぞれ対応するキーとバリューを取得したいときはHash#sliceを使うと便利。 > ha…

Ruby の select と find の違い

たとえば以下の配列から、初めに見つかった3の倍数を取り出したいとき。 nums = [1, 2, 3, 4, 5, 6, 7, 8, 9] selectを使うとこうなる。 > nums.select { |num| (num % 3).zero? }.first => 3 これでも期待するデータを取得できるが、配列内のすべての要素を…

Ruby の flat_map は flatten.map と同じ挙動にはならない

flat_mapがflatten.mapを省略したものだと勘違いしていた話。 ここにネストした配列がある。 > arr = [[1,2], [3,4]] => [[1, 2], [3, 4]] flattenすると、平坦な配列になる。 > arr.flatten => [1, 2, 3, 4] flattenした後にmapして各要素を2倍にしたいとき…

RubyのProcクラスとは何か?

Procクラスとは、処理のまとまりをオブジェクトで表現したものです。Procクラスはコードを見ながらじゃないと理解できないと思うので、まずは以下の例を見てください。 def hello puts 'hello' end なんの変哲もないメソッドです。helloメソッドを実行してみ…

VSCodeでGithubのPRを開こうとすると Error loading webview: Error: Could not register service workers

vscode上でレビューするためにPRを開こうと思ったら、PR画面が表示されない。エラーで以下のメッセージが出ていた。 Error loading webview: Error: Could not register service workers: InvalidStateError 解決方法: VSCodeのプロセスをkill(強制終了)…

ROIの概念はプロダクト開発にも応用できる

以下の記事を読んだ感想を残す。 プロダクト開発現場でのROIの考え方|taniguchi(タァニ)|note 僕はマーケティング出身ということもあり、ROIはマーケティング用語という印象が強く、「どれくらいの投資でどれだけ儲けたか」という意味しかないと思ってい…

2022 NBA Finals の感想

自分が応援しているセルティックスはウォリアーズに4−2で負けた。悔しいし残念だ。 2022 NBA Finals | NBA.com でも、ここ数年突破できていなかったカンファレンスファイナルの壁をついに破った。カイリーがいてもダメだったのを、若いメンバーが達成した。…

git fetch してリモートリポジトリの変更確認だけしたいときの方法

Git

結論 リモートリポジトリの変更を確認だけしたいとき。 # リモートリポジトリの変更履歴をローカルリポジトリに持ってくる git fetch # これでリモートリポジトリの変更確認ができる git log origin/master --oneline --graph 詳しく git fetch(git fetch or…

Enumerable#inject 初期値ありなしの挙動の違い

レシーバが配列の場合 初期値がない場合 > [1, 2, 3].inject { |result, item| p result + item*2 } 5 11 => 11 初期値がない場合、先頭の要素と2番めの要素をブロックに渡す 上記の場合、resultに1、itemに2が渡されており、item*2されていることから1+4に…

Ruby 文字列中のアポストロフィも含めて String#scan する

String#scan(/[\w'.]+/)でどうだろうか。 > string = "I'm a good person, and you? You don't look so smart." > string.scan(/[\w'.]+/) => ["I'm", "a", "good", "person", "and", "you", "You", "don't", "look", "so", "smart."] 文末のピリオドを含め…

【Ruby】String#split("") をするなら String#chars を使う

> 'AAAAAAAAA'.split("") => ["A", "A", "A", "A", "A", "A", "A", "A", "A"] > 'AAAAAAAAA'.chars => ["A", "A", "A", "A", "A", "A", "A", "A", "A"] 後者のほうがスッキリ書けてよい。

Ruby の divmod メソッドとは

割った数と、余りを配列で返す。 3 ÷ 2をすると、割った数は1、余りは1なので、[1, 1]という配列が返る。 > 3.divmod 2 => [1, 1] selfがマイナスでも計算できる。 > -3.divmod 2 => [-2, 1] selfと割る数がマイナスでも計算できる。 > -3.divmod -2 => [1, …

Rubocop で spec path should end with *_spec.rb が出たときにチェックすること

Rubocopでたまにこういったふうに怒られることがある。 spec path should end with *_spec.rb こんなときはどこを確認すればいいか? 確認項目: スペックファイルが_spec.rbで終わっているか? ファイル名にタイポや間違いはないか? テスト元のファイルがh…

Ruby の dup と clone の違い

Rubyのリファレンスにはこう書かれている。 dup はオブジェクトの内容, taint 情報をコピーし、 clone はそれに加えて freeze, 特異メソッドなどの情報も含めた完全な複製を作成します dup はオブジェクト内容とtaint情報をコピーする clone は上記に加えて…

Rubyのdupとは何か

結論: dupとはオブジェクトをコピーするメソッドです 細かく言うと「シャロウコピー(Shallow Copy)」します コレクション(配列やハッシュ)をdupするときは要注意です 破壊的な変更は同じobject_idを持つオブジェクトに影響が及ぶ dupのチカラ 配列やハ…

Ruby の eql? と equal? の違い

結論: eql?はオブジェクトの値が同じかどうかを評価する equal?はobject_idが同じかどうかを評価する irb(main):001:0> obj = %w(hoge bar baz) => ["hoge", "bar", "baz"] irb(main):003:0> copy = obj.dup => ["hoge", "bar", "baz"] # 値は同じなのでtru…

Vimium でサイト全体でキーバインドを除外する方法

一番簡単なのは、除外したいサイトを開きながらVimiumの設定を開いて、Keysに何も入力せずにSave Changesを押す。

Ruby の map と filter_map の違い

結論 map ブロック内の評価を返す ブロック内の実装で加工したものをそのまま返す filter_map ブロック内の評価が真である配列を返す 例1 以下の例では、どちらも同じ値を持つ配列を返す。 p (1..3).map { |n| n * 3 } => [3, 6, 9] p (1..3).filter_map { |…

Heroku にデプロイしたら review-app で application error が出て表示されない

Application error が出たときはheroku logs --tail -a review-app名などでログを見ても原因がつかめないことがある。そんな場合はrails cでコンソールを起動してみると良い。きっとコンソールが立ち上がらないはずで、そのとき表示されるエラーログに何かヒ…

vimの設定 map と noremap の違い

map :map j k jを押したらkの機能が発動する jを押すとkを押したときのように上にカーソルが移動するようになる もしkに他の機能がマップされていたら、jにもその挙動がマップされる たとえばkに「右へ移動する」機能がマップされていたら、jにもその機能が…

個人的に感じる神戸の魅力

昔住んでた神戸へ久々に行って、やっぱり好きだと再確認した。個人的に神戸の魅力を列挙してみる。一言でいうと、すべてのものがコンパクトにまとまっているのが魅力だ。 神戸の魅力 交通の便の良さは最強クラス 何でも揃ってるから大阪に出る必要なし 自然…

びっくりドンキーは地方と東京で価格が違う

何気なくびっくりドンキーのウェブサイトを見ていたら気づいた。 佐賀県と東京池袋のびっくりドンキー、レギュラーバーグディッシュ150gだと135円も価格が違う。 佐賀県 佐賀県 佐賀北バイパス店ディッシュメニュー一覧|びっくりドンキー 東京池袋サンシャ…

VSCode で Error loading webview: Error: Could not register service workers: InvalidStateError が出たときの解決方法

vscode上でレビューするためにPRを開こうと思ったら、PR画面が表示されない。エラーで以下のメッセージが出ていた。 Error loading webview: Error: Could not register service workers: InvalidStateError 解決方法: VSCodeのプロセスをkill(強制終了)…

はてなブログをグーグルアナリティクス4に移行する

ユニバーサルアナリティクスが2023年7月1日からデータ処理をやめるようなので、グーグルアナリティクス4(GA4)に移行した。 次世代の Google アナリティクスのご紹介 - アナリティクス ヘルプ 最終的にどうなればいいか ダッシュボード→設定→詳細設定でアナ…

Next.js + microCMS のブログを Next.js + マークダウン で作り直した

もともと Next.js + microCMS 構成だったブログを Next.js + マークダウン で作り直した話です。理由は新サイトで詳しく書いています。 Next.jsのブログをNext.jsで作り直した | Kota Kanazawa 突貫工事で作ったので、TypeScriptも使ってないしSEO対策やOGP…