最近レビューコメント書いた後に、「これあんまよくないレビューだったかもなぁ?」と思うことが多々ある。 何というか細かすぎというか、主観的というか。 そこで「こんなコメントしていいんでしょうか?」と質問をした。 おかげでコメントをするべきかの判…
はじめに ruby 3.1.4 「新しいインスタンスを作成する際、既存のインスタンスの属性をコピーしたい」処理について。 Railsのコントローラのnewアクションでこんな処理をしていた。 ただDRYじゃないな~と思ったので、リファクタリング前と後でどういう風にし…
tl;dr rails db:rollbackで1個前のmigrationファイルをdownする。 rails db:resetで、ロールバック後のDB状態にする。 新しく、カラム名追加のmigrationファイルを書く。 rails db:migrateで反映。 背景 まだチームに共有されていないので、わざわざRename…
メモレベル。 DISABLE_SPRING=1 PARALLEL_WORKERS=1 bin/rails test ...でテストをする。 「テストがバリデーションに引っかかるぞ?」 「バリデーションに引っかかる変更なんてしていないぞ?」 って時に。 DISABLE_SPRING=1 spring gemをOFFにする 悪さを…
メモレベル。 OSSで開発していて、普通にpullとかしていたら、なんか他人のコミットが紛れ込んできた。 ブランチ派生元のmainブランチが変わってしまったときとかに起こりうるっぽい。 そんな時は、 いったんgit pull --rebase origin main そいで、git push…
寝れへん 寝るとき、いろんなやなこと考えたり、昔の失敗を思い出して2~3時間くらい寝られない時があります。 もうほんと些細な発言の反省とか、あの人のあの言動は僕にこう思ってるのかな~とか。なんと気の小さい人間なのだろう。 「もう寝たいのに~」…
手順 VisualStudioCodeで「Ctrl + Shift + P」を押下 コマンドパレットが開く Preferences: Open Keyboard Shortcuts を検索 (JSON)の方を選ぶ 5.以下を書き込む [ { "key": "ctrl+c", "command": "editor.action.clipboardCopyAction", "when": "textInputF…
環境 ❯ npm -version 10.0.0 ❯ node -v v20.6.0 ❯ cat /etc/debian_version 12.1 結論 npm login --auth-type legacyを実行してください。 解説 なぜCLIでログインする必要があるのか WSL2ではいい感じにパスを通したりしない限り、CLIからGUIのブラウザを開…
環境 WSL2 Debian12 bookworm Ruby 3.2.1 主題 値に真偽値を設定したHashオブジェクトがあるとする。 そのオブジェクトでも、all?やnone?を使って { bar: true, baz: true, foo: true }.all? #=> true { bar: false, baz: false, foo: false }.none? #=> tru…
mergeやpushをしていないブランチを削除するには、git branch -D branch_nameとする必要がある。 branchのdeleteオプション -d, --delete delete fully merged branch -D delete branch (even if not merged) 訳すと、 -d, --delete 完全にマージされたブラ…
可読性を上げるためにもそうした方が良いという話。 引数がハッシュオブジェクト まずはハッシュオブジェクトを渡す例 class Bar def initialize(options) @options = options end end def load_options { baz: true, foo: true, bee: true, } end options =…
地味に混乱したためメモ書き。 getMonth()メソッド まずは単純に現時点での日付・時刻を取得する方法。 var now = new Date(); console.log(now) // 2023-07-14T11:41:20.194Z これは特に問題がない。 JavaScriptでは、getMonth()メソッドでDateオブジェクト…
オブジェクト指向設計ガイドを読んでいて、依存を減らすテクニックの一つ。 今3章を読んでいるけど、『隠れた依存はあぶない』って感じの内容。 例 まずは簡単に依存が分かる例。 class Foo attr_reader :bar, :baz, :birthday def initialize(bar, baz, bi…
以下の2つのコード。どちらがエラー出るコードか分かるでしょうか # No.1 assert_equal ({ all_files: false, sort_in_reverse: false, long_format: false }, option.load) # No.2 assert_equal({ all_files: false, sort_in_reverse: false, long_format:…
はじめに 現在通っているスクールの課題で、「ActiveStorageを用いて、ファイルのアップロード機能・サムネイル生成機能を作る」に取り組んでいます。 ActiveStorage単体だけではなく、Image_processingやmini_magick、ImageMagick、libvipsなどなど様々なラ…
環境 WSL2 Debian 11.5 結論 exec:明示的に、SQL文の中にパラメーターを直接記述してメソッドを使う。 exec_params:明示的に、SQL文のパラメーターは、プレースホルダーを指定してメソッドを使う。 それぞれのコード例 exec・exec_paramsのそれぞれのコー…
概要 「HTTPはステートレスなプロトコルである」 Webに触れている人なら一般的な知識で、"HTTP ステートレス"で検索をすると沢山の記事が出てきます。 自分はお恥ずかしながら、最近Webを支える技術を読んで初めて知った知識です。 という話はさておき、この…
概要 破壊的メソッドは元のオブジェクトも変更してしまいます。 なので当然なのですが、同じ変数に、同じ破壊的メソッドを複数回使ってしまうと、1回目と2回目以降では実行結果が変わってしまいます。 普通の破壊的メソッドだと気を付けられるのですが、Opti…
エラー内容 [環境] Debian11.0 PostgreSQL15.1 PostgreSQLでユーザを作成後、そのユーザでログインができない!という事象が発生しました。 1日くらいハマっていたのですが、解決できたので手順を共有します。 なお、出力されたエラー文としては下記となって…
はじめに library optparse (Ruby 3.1 リファレンスマニュアル)に記載してある require 'optparse' opt = OptionParser.new opt.on('-a') {|v| p v } opt.on('-b') {|v| p v } # parse() の場合、ARGVは変更されない。 # オプションを取り除いた結果は argv …
はじめに プログラミング初心者による記事です。 なお、インデントや=の位置は、基本的にチームのコード規約に沿って書くのがベストです。 コードの比較 # =の位置を揃える foo = 'foo' hoge = 'hoge' hogehoge = 'hogehoge' # =の位置を揃えない foo = 'foo…
概要 現在、私はフィヨルドブートキャンプというスクールでお世話になっています。 ここでメンターをしてらっしゃる、伊藤淳一さんからプロ目線でのコードレビューをして頂いたので、自分の後学のためにもまとめておきたいと思います。 なお、実際にプラクテ…
概要 タイトル通り。インストールの仕方とhtml編集方法 インストールは公式サイトをきちんと読んでやりましょう。 GPTで書いてそうな記事みたいのもありますが、公式に勝る説明はありません。基本的に全てコピペで行えるはずです。 ❯ nginx -v nginx version…
概要 タイトル通り。 ❯ git push origin branch-name To github.com:XXXXXXXX.git ! [rejected] my-ls -> my-ls (non-fast-forward) error: failed to push some refs to 'github.com:XXXXXX.git' hint: Updates were rejected because the tip of your curr…
概要 コードをつらつら書いていて、「正規表現学んだ方が良いな~」と強く思ったので、適当にお気持ちを書いておきます。 クラス名や変数名を一気に変えたい だったら普通の置換でええやないの~???と思うかもしれないけど、少しだけ長いコードですら、同…
概要 タイトル通り、delete_ifメソッドでとある正規表現オブジェクトにマッチする文字列を削除できなかったお話。 w = %w(a b c d).delete_if{|s| s == /b+/} p w => ["a", "b", "c", "d"] ならばdeleteではどうだと試みる。 w = %w(a b c d).delete(/b+/) p…
概要 Ruby幼稚園生の自分にとって、module Enumerableに書いてある、 インクルードするクラスには each が定義されていなければなりません。 が、まぁよくわからなかったので、もう少しだけ理解を深めたいと思い書いてみた。 そもそもEnumerableって何なのよ…
概要 下記は、yieldを使ったコード。 def greet puts "横浜の塩" yield yield puts "話を聞け" end greet do |txt| puts "俺の" end #=>横浜の塩 #=>俺の #=>俺の #=>話を聞け yieldで、メソッド呼び出しのブロック内の処理が実行されることが分かる。 一方…