ブログ

読んで思い出す。忘れるために書く

Q&A

Q. docker-compose 環境で guard コンテナを実行したい

A. つぎの設定を追記する docker-compose.yml : # ... services: # ... guard: build: context: . env_file: - .env command: bundle exec guard depends_on: - mysql volumes: - .:/app tty: true stdin_open: true # ... Dockerfile (Alpine Linux) : RUN …

Q. 「月末の45日後」って いつ?

A. 次のコードで確認できる require 'active_support' require 'active_support/core_ext' Date.new(2021, 4, 1).end_of_month.advance(days: 45).to_s # => "2021-06-14" irb や pry で打ち込むと、すぐに確認できる 支払いサイトの計算が簡単になった!! Li…

Q. テーブルの凡例をスクロールに応じて固定表示させたい

A. position: sticky; を設定する thead tr th { position: sticky; top: 47px; /* 調整が必要な場合、数値を指定する (通常は 0 で OK) */ } 0才 → 1才 → 2才... とスクロールに応じて表示が切り替わっている様子: これは次の Pull Request : 「成長記録編…

Q. ワークポート「eコンシェル」でマッチしてない求人情報を非表示化したい

A. つぎのコードスニペットを開発者コンソール上で実行する // 地域絞り込み Array.from(document.querySelectorAll('.card-info__text.ng-binding')) .filter(x => { return !x.innerHTML.match(/.+万.+/) }) /* 年収レンジの表示以外を収集 */ .filter(x =…

Q. RSpec で定数定義の有無を確認したい

A. (subject を定義して) it { is_expected.to be_const_defined :FOO } と記述する 回答の例 にあるように、be_ や have_ で柔軟なテストが可能になっている The reason is that Rspec has "magic" matchers for methods starting with be_ and have_. For …

Q. Bash で補完したときに表示される文字の色設定を変えたい

A. colored-stats を on にして、LS_COLORS の設定値を自分好みに変更する Bash は INPUTRC の環境変数設定がなければ ~/.inputrc を読みに行くので、そこに設定値を書く ~/.inputrc : colored-stats On 環境変数は適当な場所 (~/.bash_profile, ~/.bashrc) …

Q. インデントに表示している文字の色を設定したい (vim-indent-guides)

A. ドキュメント を参照して IndentGuidesOdd, IndentGuidesEven のハイライト設定の値を変更する autocmd VimEnter,Colorscheme * :hi IndentGuidesOdd guibg=Grey11 ctermbg=234 guifg=Grey42 ctermfg=242 autocmd VimEnter,Colorscheme * :hi IndentGuide…

Q. Vim でタブ文字表示にわかりやすく文字を設定したい

A. listchars に値を設定する set listchars=tab:»・ その他の制御文字に対しても文字表示を設定できる set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣ Links whitespace - Make Vim show ALL white spaces as a character - Stack Overfl…

Q. Google Chrome で日本語 Web ページが文字化けする (Docker 環境)

A. 追加でフォントをインストールする RUN apt-get -qqy update \ && apt-get -qqy --no-install-recommends install \ libfontconfig \ libfreetype6 \ xfonts-cyrillic \ xfonts-scalable \ fonts-liberation \ fonts-ipafont-gothic \ fonts-wqy-zenhei \…

Q. Rails の params.permit に関わる最小限のコードを書きたい

A. ドキュメント ActionController::Parameters#permit を参照して、サンプルコードを動かす require 'active_support/core_ext' require 'action_controller/metal/strong_parameters' params = ActionController::Parameters.new({ person: { name: "Franc…

Q. Mac でも Windows みたいにショートカットキーでウィンドウ操作をしたい

A. Rectangle を導入する Rectangle ショートカットキー設定画面 brew を導入していれば、cask からインストールできる brew cask install rectangle Links Rectangle Windows のキーボード ショートカット - Windows Help

Q. Rails で可逆暗号を使いたい (Rails 6)

A. ActiveSupport::MessageEncryptor を利用する 暗号化・復号化例 Links 暗号化・復号化例 # # ActiveSupport::MessageEncryptor#new で扱える key の長さが # 決まっているのでその定義を呼び出して使う # # salt の生成 # # NOTE: このままだと実行時に再…

Q. バージョンアップで rubocop ( rubocop.yml ) が動かなくなってめんどうくさい

A. mry コマンドをつかう Vim + Ale で rubocop を自動で走らせていたけど、動かなくなったので その対処 インストールと使い方 # インストール gem install mry # つかいかた mry --help # => # Usage: mry [options] [.rubocop.yml] # -t, --target=TARGET…

Q. TextField 入力の改行に合わせて高さを自動調整したい

A. 「StackOverflow の回答」を参考に、 UIViewRepresentable, View の実装をする import SwiftUI import Combine final class UserData: BindableObject { let didChange = PassthroughSubject<UserData, Never>() var text = "" { didSet { didChange.send(self) } } init(t</userdata,>…

Q. Cocoa Pods でインストールしたライブラリを利用しようとすると「No such module」と云われる

A. [project_name] ... .xcproject じゃなくて .xcworkspace を開く あとは [Product] - [Scheme] - [Manage Schemes] で、Pod 関連のスキームが有効になっているかも確認しておく Manage Schemes ダイアログで有効になっている Scheme を確認 Links Alamofi…

Q. Xcode 上で GitHub リポジトリにソースコードを Push したい

A. 予め 設定から GitHub アカウントを追加しておいて、ソースナビゲータからリモートリポジトリを追加 する ヘルプを参照して GitHub アカウントを追加した様子 Links Add a remote repository account - Xcode Help Create a remote from a local source c…

Q. インストールしたコマンドが長くて打ちたくない (補完したい)

A. brew search [command name]-completion で補完用定義を探してみる → インストールする (brew 経由じゃなくても公開されているので 探せば見つかるかもしれない) 補完機能を有効化する たとえば brew install vagrant から vagrant コマンドを使えるよう…

Q. なんで php composer って遅いの? (参考リンク)

A. 「そういう実装になってないから」 Because composer implements by file_get_contents(). That has no TCP optimizations, no Keep-Alive, no multiplexing... https://stackoverflow.com/a/38102206 並列インストールプラグイン hirak/prestissimo の導…

Q. Splatoon 2 でも stat.ink に自動で戦績データをアップロードしたい

A. splatnet2statink を利用する おおまかな流れとしては次の通り: README.md に沿ってセットアップを終わらせて 起動させる マイニンテンドー アカウントのURL を開くように云われるので、ログインする コンソールの指示に従い、ログインユーザを選択するボ…

Q. ファイル名の一部からそのファイルを開きたい (Vim, ctrlp.vim)

A. ctrlp.vim プラグインを使う ショートカットキー呼び出しを設定することで、すぐにプラグインの機能を利用できる let g:ctrlp_map = '<c-p>' let g:ctrlp_cmd = 'CtrlP' Link kien/ctrlp.vim: Fuzzy file, buffer, mru, tag, etc finder. - GitHub</c-p>

Q. bundler のバージョンが上がってもすぐに annotate_gem を使い続けたい

エラーメッセージ: Bundler could not find compatible versions for gem "bundler" でインストールできないので、対処したい A. つぎの patch を適用して、自分で gem をビルド・インストールする (再び bundler のバージョンが大きく上がった場合は当該箇…

Q. ALE がチェックしたエラー箇所にジャンプしたい (Vim)

A. 次の設定を .vimrc に追記する nmap <silent> ]w <Plug>(ale_next_wrap) nmap <silent> [w <Plug>(ale_previous_wrap) Link Add ALE syntax checker prev/next keyboard mappings · Issue #114 · salcode/ironcode-vim - GitHub dense-analysis/ale: Check syntax in Vim asynchronous</plug></silent></plug></silent>…

Q. pry の色設定をカンタンに変更するには (pry-theme)

A. pry-theme を導入する ターミナルは黒背景で使いたいので、それに合う pry-cold を設定した pry-cold テーマのプレビュー Links kyrylo/pry-theme: An easy way to customize Pry colors via theme files - GitHub

Q. Vim でも Visual Studio Code のように [Alt] + [↑]/[↓] で行の移動をしたい

A. 次の設定を .vimrc に追記する " Move current line to up/down " Ref: https://vim.fandom.com/wiki/Moving_lines_up_or_down nnoremap <A-j> :m .+1<CR>== nnoremap <A-k> :m .-2<CR>== inoremap <A-j> <Esc>:m .+1<CR>==gi inoremap <A-k> <Esc>:m .-2<CR>==gi vnoremap <A-j> :m '>+1<CR>gv=gv vnoremap <A-k> :m '</a-k></cr></a-j></cr></esc></a-k></cr></esc></a-j></cr></a-k></cr></a-j>…

Q. 求人情報サイトで重複表示されている企業名を一括削除したい (type)

A. 次の JavaScript を開発者コンソール上で実行する var companyNameSet = [...new Set(Array.from(document.querySelectorAll('p.company-name')).map(elm => elm.textContent))] var duplicatedElements = companyNameSet.map(name => Array.from(documen…

Q. 求人情報サイトで古くなった情報を一括削除したい (type)

A. 次の JavaScript を開発者コンソール上で実行する document.querySelectorAll('.mark').forEach(function(elm) { elm.click() }) 対象ページは「type.jp/mypage/scout_list.do」 削除ボタンとして用意されている ☓マーク (.mark) が拾えれば 別ページでも…

Q. 普段遣いのシェルを変更するには

A. chsh コマンドを使う 状況・ゴール 手順 Bash のインストール シェルの切り替え 追加した方の Bash をシェル一覧に登録 chsh コマンドで切り替える ファイルパスやバージョンを確認する Links 状況・ゴール Mac の Bash (/bin/bash) のバージョンが3系だ…

Q. OS によって異なるコマンドを .vimrc 上で使い分けたい

A. if と has() を組み合わせて判断させる たとえば、ターミナル上... コマンドで何か開きたい場合に : Mac OS -> open Ubuntu -> gnome-open Windows -> start と、やりたいことに対してOS ごとに コマンド名が違う そういった場合に、次のように条件分岐を…

Q. TypeError: 'range' object is not callable で range(n) が呼び出せない

A. del を使って定義を削除する # 誤って組み込みオブジェクトへの参照定義を上書きしてしまった...!! 初心者なので...!! range = range(10) # ここではエラーなく実行できる for i in range: print(i) # 次回呼び出し時にエラーになる... ので del する del…

Q. git git git... もう打ちたくない... (サブコマンドだけ打ちたい)

A. gitsh を使う Homebrew に対応してるので tap してからインストールする: brew tap thoughtbot/formulae brew install gitsh MEMO: コマンド名が長い気がするので alias gish=gitsh で短縮して使ってる TIPS: .gitconfig に alias を設定する ことで、さ…