カクカクしかじか

技術的なアレコレ

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

ソフトウェアテスト自動化カンファレンス2020のスライドまとめ

概要 あとで自分で見返せるように現在公開されている範囲でソフトウェアテスト自動化カンファレンス2020のスライドをまとめておきます。 なおソフトウェアテスト自動化カンファレンス2020のイベントページはこちらです。 testautomationresearch.connpass.co…

Elasticsearchのngram_analyzerを使った際の検索メカニズムを理解出来てなかったのでハマった話

経緯 現在関わっているサービスでユーザーから「商品のキーワード検索で想定以上の件数がヒットしてしまうので調べて欲しい」という問い合わせがありました。 問い合わせがあった箇所の検索にはElasticsearchを使っていたので、ユーザーからヒアリングした検…

【オンライン開催】hey × Da Vinci Studio 〜プロダクトの成長を支えている裏側(技術と組織)〜 でLTしました!

概要 【オンライン開催】hey × Da Vinci Studio 〜プロダクトの成長を支えている裏側(技術と組織)〜 というイベントでLTをしました。 hey.connpass.com 経緯アレコレ 当初登壇予定だった社内メンバーの登壇が難しくなり、1ヶ月ほど前に急遽代打を頼まれて…

Vue.jsでHTML5の標準バリデーション属性をバインドする方法

概要 HTML5の標準バリデーションのON / OFFをVue.jsのバインドで操作する方法が、明示的に記載されてる記事がネット上に見つからなかったのでここにメモしておきます developer.mozilla.org やりたいこと 住所1(市区町村) と 住所2(番地・建物名) それぞれの…

JavaScriptで利用出来るイベントハンドラまとめ

はじめに Vue.jsの勉強をしている時にJavaScriptで利用出来るイベントってclickイベントとかベタなやつしか知らないけど他に何があるんだろう?となったので自分用メモとしてまとめます フォーム編 focus 要素にフォーカスが入った時 blur 要素のフォーカス…

CodepenでサクッとVue.jsを試す方法

概要 自分用メモです📝 方法 Settings の Add External Scripts/Pens に Vue と入力します。 コードを貼ってみます。 <div id="app"> <label>名前: <input type="text" v-model="name" /> </label> <p>入力された値:{{upperName}}</p> </div> <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>

ActiveHashってscope使えるのか...

概要 ActiveHashでもscopeが使えるの知らんかった... そういう話です🙈 例 class Band < ActiveHash::Base self.data = [ { name: 'Nirvana', category:'Grunge' }, { name: 'Dinosaur Jr.', category:'Grunge' }, { name: 'Sonic Youth', category:'Grunge' }…

郵便番号が同じで住所が異なるケースがあるの注意しよう

教訓 掲題の通り、1つの郵便番号に異なる住所が複数紐づいていることを知らずに実装してしまうというやらかしを発生させてしまったので自戒を込めてここにメモします📝 例) 郵便番号:0040000 2つ紐づいてる🙈 ... 北海道 札幌市厚別区 北海道 札幌市清田区 参考…

Rubyでメソッドの定義位置を特定する方法

経緯 とある修正の影響範囲調査で色々やっていたときの備忘録です。 やり方 たとえばこんな感じ‍♀️ Method#source_location を使います Faker::Name.method(:name).source_location => ["/Users/fuqda/HogeApp/vendor/bundle/ruby/2.6.5/gems/faker-2.13.0/l…

ポート番号から使用しているプログラムを表示するLinuxコマンド

経緯 Dockerをいじっていた際に必要になったけど、度忘れしてしまったので次は忘れないようにメモ ポート番号から使用しているプログラムを表示するコマンド lsof -i:ポート番号 を実行します $ lsof -i:3000 使用中のポート一覧を表示するコマンド 一覧を…

ActiveSupport::Testing::TimeHelpersのfreeze_time知らなかった...

元記事 techracho.bpsinc.jp 所感 今までは同じく ActiveSupport::Testing::TimeHelpers の travel_to などを使用していました😇 もっと早く知りたかった... 使っていこう💪 before { freeze_time }

特定のクラスを継承したファイルの一覧をRubyのスクリプトから出す方法

掲題のやりたいことを実現するスクリプト ※descendantsメソッドはActiveSupportのメソッド descendantsメソッドは、そのレシーバより下位にあるすべてのクラスを返します。 Active Support コア拡張機能 - Railsガイド # Load Dir.glob('app/mailers/**/*.rb…

Rubyで知らなかった記法の話

はじめに えっ..こんな書き方あったのか...となる機会があったので忘れないように書き記しておきます! (高度な内容はたぶんないですw) 検証バージョン 2.6.5 複数の配列を一意の値で結合した配列に変換する 書き方 配列 | 配列2 | 配列3 コンソールでの実行…

Railsアプリで特定のURLへのアクセスを指定したURLへリダイレクトさせるためのroutes.rbの定義

はじめに routes.rbに直接redirect先を定義出来るの知らんかった... 用途と書き方 get '/blogs/:id' => redirect("別のパス") 出来ること get '/blogs/:id' などの :id の部分は %{id} で利用可能 get '/hoge/:user_name' => redirect("https://%{user_name}…

mongoidでパラメーターがtrue/falseであるに関わらずセットされているかで条件分岐したい場合

今回の問題 フラグを検索条件に含めていて、値がセットされていればfalse/trueに関わらず、検索条件に含めたいときに present? で判定してしまうと false が検索フラグに設定されていた場合に値がセットされているにも関わらず if文で false と判定されてし…

Railsで文字列をBooleanにキャストする方法

やり方 ActiveRecord::Type::Boolean.new.cast(キャストしたい値) を使う! # 文字列の'true'や'false'の場合 $ ActiveRecord::Type::Boolean.new.cast( 'true') => true ActiveRecord::Type::Boolean.new.cast('false') => false # 整数の場合 $ ActiveReco…

mongoidのindexの貼り方まとめ

はじめに mongoidでのindexの貼り方のアレコレをまとめてくれている記事がないので自分のためにまとめます。 通常のindex 自身のフィールドに対するindex ※ background: true は更新時のロックが掛からないようにするオプション index({特定のフィールド: 1,…

http://localhost:3000/rails/info/routesでRailsアプリのルーティング確認出来るの知らんかった...

概要 タイトルの通り http://localhost:3000/rails/info/routes にアクセスすれば開発環境でGUI上で確認出来るのを知らなかったという話 🙈

OSSにプルリクエストを送る際の注意点と備忘録

概要 oneshot_task_generatorというgemにプルリクエストを送りました github.com 本稿はその際についうっかりやらかした部分とどうすると良いのか?を自分なりにメモした記録になります。 oneshot_task_generatorについて その場限りのスクリプトをrakeタス…

gem内部のクラス名とアプリケーション内のクラス名が衝突した際の名前付けの教訓

経緯 とある機能の改修で連携先のシステムが公式に提供しているgemを使わねばならず、そのgemを追加したところ変なところでテストが落ちるようになりました そのgemを追加したことが原因であることは明白だったのですが、どこが悪さをしているかの全くわから…

BULMAでページ下部にフッターを固定する方法

公式ドキュメント https://bulma.io/documentation/layout/footer/ 問題 公式ドキュメントを読んでみるとわかるのですが、Bootstrapとは異なり、ページの下部にフッターを固定する通称 Sticky Footer を実現するクラスが Footerの章に記載されていません。 …

Rubyで半角カナを1文字、全角カナを2文字でカウントする方法

概要 全角カナなら2文字・半角カナなら1文字でカウントしてデータを扱いたいケースがあったのでその調査メモ 単純に文字列に対して '文字列'.size をしても全角半角で区別出来ないので、バイトサイズでカウントしてみることにしました。 (半角カナ:1文字1バ…

mongoidのアソシエーションの依存オプション

:delete モデルのコールバックを実行せずに子ドキュメントを削除する。 :destroy 子ドキュメントを破棄し、モデルコールバックを実行します。 :nullify 子ドキュメントの外部キーをnilで更新して子ドキュメントを孤立させる。 :restrict 子ドキュメントが存…

Railsアプリの開発環境でminioをDockerで動かす方法

minioって何? S3互換のストレージサービスです。 実際にやっていく💪 手順1. docker-compose.ymlの定義 とりあえず、docker-compose.ymlにminioを定義します。 docker-compose.yml version: '2' services: <省略> minio: container_name: minio hostname: min…

CircleCIのビルドが成功するかをローカル環境で確認する方法

CircleCI2.0とCLI CircleCI2.0 では circleci コマンドが用意されました。 circleci.com CircleCI2.0はDockerで実行されるようになりました。 この circleci コマンドを使うとローカルのDocker上でYAMLファイルのvalidateやbuildを行うことができます。 CLI…

よく使われるコミットメッセージのprefixまとめ

prefix一覧 コミットメッセージにprefixを付けて分かりやすくしたい! とはいえ、どういう基準で使えばいいのか分からなかったので、実際に使われてる事例をGitHubで検索して自分用メモとして放流します。 prefix 意味 fix バグ修正 hotfix クリティカルなバ…

Railsアプリ上で文字列をクラス定数に変換する方法

経緯 異なるクラスであるものの、同じ形式のクラスメソッド呼び出しを共通化したいというケースに直面し、調べることに! # やりたいこと 特定のクラス名.クラスメソッド やり方 小文字の文字列をクラス名の形式にするために classify しても、その結果はま…

zshでgit reset --hard HEAD^出来ない時の話

経緯 自宅のMacをCatalinaに上げてからデフォルトシェルがzshに変わったことで、これまでいじって来なかったzshをいじることに! そんな中で git reset --hard HEAD^ しようとしたところ出来なかったので、こうすると出来るぞ!的な個人的メモです。 (物凄い…