MyTips - ごちゃまぜ -
[Update on 8 Oct. 2020]
GitHub にそれ専用のリポジトリを作り、そこで管理することにしました。 今後はこの記事のメンテナンスは行わず、こちらの GitHub リポジトリを更新していきます。
どこに技術メモとか取るのが良いか悩んでたけど、GitHub にそれ専用のリポジトリを作ることにした!#til / necojackarc/til: 📝 Today I Learned https://t.co/M6yQz7VbTY
— 雀巽(じゃくそん) (@necojackarc) October 8, 2020
My tips
完全自分用メモ。随時更新予定。
膨大化した場合分割検討。
Mac全般
操作 | コマンド |
---|---|
画面スリープ | Ctrl + Shift + Power(Eject) |
選択単語を辞書検索 | Command + Ctrl + D |
Finder
操作 | コマンド |
---|---|
親ディレクトリへ移動 | Command + Up |
選択項目を開く | Command + Down |
クイックルック | Space bar |
iTerm2
画面分割
操作 | コマンド |
---|---|
縦に分割 | Command + D |
横に分割 | Command + Shift + D |
閉じる | Command + W |
時計回りで移動 | Command + } |
反時計回りで移動 | Command + { |
タブ
操作 | コマンド |
---|---|
新規タブ | Command + D |
閉じる | Command + W |
右へ移動 | Command + right |
左へ移動 | Command + left |
Git
リモートリポジトリの変更
$ git remote set-url origin <URL>
リモートリポジトリへプッシュ
$ git push origin hoge #hogeをリモートへプッシュ $ git push origin :hoge #hogeをリモートから削除 $ git push origin {ローカルブランチ名}:{リモートブランチ名} #非省略形
リモートブランチのチェックアウト
$ git branch -r #リモートのブランチ名を確認 origin/HEAD -> origin/master origin/hoge origin/master $ git checkout -b hoge origin/hoge #リモートブランチをチェックアウト
.gitignoreの設定反映
$ git rm -r --cached . #インデックスから全キャッシュ削除 $ git add . $ git commit -m "Apply .gitignore" $ git push origin master
削除済みのリモートブランチがローカルで表示される場合
$ git remote show origin # staleなブランチが該当 $ git remote prune origin # staleなブランチを削除
別ブランチのファイルをチェックアウト
$ git checkout <branch> -- <file>
特定ファイルの git log を表示
$ git log FILE_NAME
特定コミットの変更を表示
$ git show コミットのハッシュ値
コミット履歴をツリー状でカラー表示
$ git log --graph --oneline --decorate --all --color
Vim
以下の設定を行っていることが前提。
操作 | コマンド |
---|---|
読み取り専用で開く | vim -R FILE_PATH |
ファイルを開く | :e FILE_PATH |
画面水平分割 | :sp (:split) |
画面垂直分割 | :vs (:vsplit) |
画面移動 | Ctrl + w -> h, j, k, l |
単語補完 | Ctrl + p, n |
オムニ補完 | Ctrl + x -> o |
タグジャンプ | Ctrl + ] |
直前のタグへ戻る | Ctrl + t |
バッファ一覧を表示 | :ls |
NUM番目のバッファに移動 | :b NUM |
コマンド履歴を表示 | q: |
検索履歴を表示 | q/ |
正規表現で元の文字列を保持 (ホールドバッファ)
\(
と\)
で括られたところがホールドバッファとなり、\1
から\9
まで利用できる。
\0
は元の文字列を表す。
- 例)
"
で括られた数値から数値のみ取り出す
%s/"\(\d\+\)"/\1/gc
Rails用タグファイル作成
$ cd <RAILS_APP_ROOT> $ ctags --langmap=RUBY:.rb --exclude="*.js" --exclude=".git*" -R <TARGET_DIRECTORY> # Rubyファイルのタグ $ ctags --langmap=RUBY:.rb --exclude="*.js" --exclude=".git*" -R `bundle show --paths` # Gemのタグ
ファイル横断検索 (grep) し一括置換
:vim text dir/** :qfreplace
sftp
操作 | コマンド |
---|---|
クライアントからリモート | put hoge.txt |
リモートからクライアント | get hoge.txt |
Ruby
ワンライナー
置換 (-p & gsub)
$ cat test | ruby -pe 'gsub(/has_many/, "has_one")'
スペースで区切る (-al & $F)
$ cat test | ruby -anle 'print $F[1]'
入力データから文字列を組み立てる (-n & $_)
$ cat test | ruby -ne 'puts "# #{$_}"'
Ruby のライブラリを使う (-r)
$ cat test | ruby -r active_support -r 'active_support/core_ext' -alne 'print $F[1].sub(":", "").singularize.camelize'
ファイル内容書き換え (-e)
$ ruby -i -r active_support -r 'active_support/core_ext' -pe 'gsub(/has_many/, "has_one").gsub!(/:.*/) { |w| w.singularize }' test
参考
二次元配列の初期化
間違えてa = Array.new(3, Array.new(3, 0) )
と書いてしまうと、同一の配列オブジェクトを参照してしまうので注意。
a = Array.new(3).map { Array.new(3,0) }
配列内の組み合わせを網羅
array.combination(2) do |i, j| puts "#{i}, #{j}" end
行列の列同士で足しあわせ
a1 = [1, 2, 3] a2 = [4, 5, 6] a3 = [7, 8, 9] [a1, a2, a3].transpose.map{|a| a.inject(:+) } # => [12, 15, 18] [a1, a2, a3].transpose.map(&:sum) # => [12, 15, 18]
RSpecで特定のテストだけ実行
$ rspec hoge_spec.rb -e "discription" $ rspec hoge_spec.rb:line_no
MySQL
中央値
select avg(A.TARGET) as median from ( select TARGET, @i := @i + 1 as rank, X.datacount from TARGET, (select @i := 0) as rownum, (select count(*) as datacount from TABLE where CONDITION >= 1000) X where CONDITION >= 1000 order by TARGET ) A where (datacount % 2 = 0 and rank in (datacount / 2, datacount / 2 + 1)) or (datacount % 2 = 1 and rank = ceiling(datacount / 2));
TSVエクスポート
$ mysql -hHOST -uUSER -pPASSWORD DATABASE -e "`cat hoge.sql`" > hoge.tsv
CSVエクスポート
$ mysql -hHOST -uUSER -pPASSWORD DATABASE -e "`cat hoge.sql`" | sed -e 's/\t/,/g' > hoge.csv
PostgreSQL
TSVエクスポート
$ psql -d DATABASE -U USER -c "select * from hoge;" -A -F$'\t' > hoge.csv
CSVエクスポート
$ psql -d DATABASE -U USER -c "select * from hoge;" -A -F, > hoge.csv
TSVインポート
\copy table (column, ..) FROM 'hoge.tsv';
CSVインポート
\copy table (column, ..) FROM 'hoge.csv' WITH CSV;
シーケンスの値を設定
SELECT SETVAL('hoge_id_seq', $val);
Chef
新規 Cookbook 作成
$ knife create cookbook hoge -o site-cookbooks/
Linux全般
操作 | コマンド |
---|---|
ファイル内から文字列検索 | grep -ri 'STR' DIR |
文字コード変換
UTF-8に変換
ツール | コマンド |
---|---|
linux | nkf -w --overwrite hoge.txt |
vim | :set fenc=utf-8 |
UTF-8 のファイルに BOM を追加
cat <(printf "\xEF\xBB\xBF") 変換元.csv > 変換先.csv
システム全体の負荷を監視
$ top c
起動後0
でCPUのコアごとの使用状況を表示。
CPU とメモリの使用状況を1秒おきに表示
$ vmstat 1
プロセスツリーの表示
$ ps axjf
grep色々
再帰的 grep
$ grep -r PATTERN DIR
正規表現 grep
$ egrep REG_EXP FILE_NAME
圧縮ファイルの grep
$ zgrep PATTERN FILE_NAME
対象ファイル find してから grep
$ find app -name "*.rb" -print0 | xargs -0 grep hoge
motd
サーバーログインしたときに表示されるメッセージ。message of the day の略。
Windows全般
操作 | コマンド |
---|---|
システム | Windows + Pause |
コンピュータ | Windows + E |
ファイル名を指定して実行 | Windows + R |
コマンドプロンプト
- テキストファイルの結合
type *.txt > 結合結果.log
Excel (Windows)
操作 | コマンド |
---|---|
シートの移動 | Ctrl + PageUp or PageDown |
ブックの移動 | Ctrl + Tab |
その他
パスワードで保護された PDF の保護を解除
English
日本語 | 英語 |
---|---|
部 | part |
章 | chapter |
節 | section |
項 | subsection |