雀巽の日記帳

雀巽が綴る日常の記録

MyTips - ごちゃまぜ -

[Update on 8 Oct. 2020]

GitHub にそれ専用のリポジトリを作り、そこで管理することにしました。 今後はこの記事のメンテナンスは行わず、こちらの GitHub リポジトリを更新していきます。

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

以下の設定を行っていることが前提。

github.com

操作 コマンド
読み取り専用で開く 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 の保護を解除

  1. Chrome で PDF をオープン
  2. 画面右下に表示される印刷を選択
  3. 送信先を「PDF に保存」に変更し保存

English

日本語 英語
part
chapter
section
subsection