write ahead log

ロールフォワード用

ubuntuでtmuxを使うとlsで色がつかなくなった

現象 ubuntuでtmuxを使うとlsで色がつかなくなった. なんでだ?と思ったら下記のコマンドでは色がつく. ls --color=auto どうも.bashrcが読み込まれていないらしい.(Ubuntuは.bashrcでalias入るので色がつく) 地味に困る. 対処 色々探したらこのサイトの一番…

net/httpのhttp.HandlerFuncをラップするテクニック

golangでnet/httpを使うと下記のようなコードを書くことになる. func main() { http.HandleFunc("/foo", fooHandler) http.HandleFunc("/bar", barHandler) http.ListenAndServe(":8080", nil) } ここで全てのハンドラの前に認証を追加したいなどと考えると,…

catの-(ハイフン)オプションを使う

こんなファイルを用意する. $ cat > test.txt <<EOS test test test test EOS $ cat > test2.txt <</eos>

opensslを使って鍵の作成・ファイルの暗号化・復号化

opensslを使うと秘密鍵,公開鍵を作ってファイルを暗号化したり,復号化したりできる. とても面白いのだけど,オプションが多くてややこしいのでメモしておく. 秘密鍵を作る seckey.pemという名の秘密鍵を作る場合. $ openssl genrsa -out seckey.pem -aes256 2…

golangでファイル・ディレクトリを操作する

ちょっとしたツールを作るのにも, DBを使うのが面倒な時にもファイル操作は便利. サンプルコードの実行にはosパッケージをインポートしてください. (Printしてるものには当然fmtも) import ( "os" "path/filepath" //ファイルパス操作の時は ) ディレクトリ…

goでコマンドラインツールを作る時にflagパッケージを使う

go言語(golang)はマルチプラットフォームでバイナリを吐けるのでコマンドラインツールを作るにはちょうどいい言語だと思います. 標準パッケージも充実していて,オプションやメッセージを出力するパッケージが標準で準備されています. 当初ググると以下が人気…

gitでUntracked filesを削除する

Git

作業しているとgitで追跡したくないファイルがたくさん生成されて,邪魔になる事がよくある. git cleanという一括で削除するコマンドがあった. 使い方 削除する対象を確認する $git clean -n 実際に削除する $git clean -f 上記だとディレクトリは削除対象に…

msys2にnkfを入れる

下記からダウンロードして入れる https://osdn.jp/projects/nkf/downloads/64158/nkf-2.1.4.tar.gz 手順は以下の通り. gccとmakeはmsys2入れる人ならほとんどの環境では入っていると思う. $ pacman -S gcc $ pacman -S make $ wget https://osdn.jp/projects…

golangの日付フォーマット指定が面白い

百聞は一見に如かずということでとりあえずサンプルを. package main import ( "fmt" "time" ) const ( DATE_TIME_FORMAT = "2006/01/02/15:04:05" ) func main() { now := time.Now().Format(DATE_TIME_FORMAT) fmt.Println(now) } 実行結果 $ ./sample.exe…

golangでJSONをパースする

いろいろな所に書かれているけど,ハマってしまったので書き残しておく. golangでJSONをパースするにはencoding/jsonを利用すれば良い. 静的言語だけあってちょっと面倒なところがあって,JSONの構造に合わせて前もってstructを定義しておく必要がある. 基本 …

golangでhttptestを使ってテストする

ちょっとしたコマンドとか作る時にWebAPIを触ろうとすると, net/httpをよく使うことになる. テストについてはちょっと調べたんだけどhttp経由のものはやったことがなかった. net/httpはテストについてもnet/http/httptestがサポートしてくれているのでこれを…

GitHubのReleaseのダウンロード数を調べるコマンドを作った

別にcurl叩けばわかるんだけど,面白そうだし作った. github.com 使い方 ここからバイナリをダウンロードしてください. GitHubにアクセスして, Home -> Setting -> Personal access tokens -> Generate new tokenからアクセストークンを取得してください. 環…

golangで色々なOSのバイナリを作る

前も調べたけど記録してなかったので忘れた.今度はメモっとく. golangで他のプラットフォーム向けにクロスコンパイルするには環境変数を指定してbuildすれば良いらしい. 環境変数は GOOS GOARCH があってそれぞれOSとCPUアーキテクチャを表している. Linux環…

コメントアウトの対義語は

アンコメントらしい. 恥ずかしいなぁ.知らなかった.

golangではてなブログに投稿するCUIクライアントを作った

はてなブログにコマンドラインから投稿できるクライアントアプリを作りました. golangで作ったので多分どこでも動きます. というか動かないと困るなぁ. この記事もviでMarkdownで書いて以下のコマンドで投稿してます. (プレビューと公開は子供に引きずられな…

golangで最低限のテストを書きたい

golangは触り始めたばかりで右も左もわからない状況なんだけれど,テストの書き方ぐらいは知っておこうかなと思う. とはいえあんまり頑張ると途方もないので最低限に絞る. テストされる側のプログラム package main func english() string { return "Hello, w…

iconvコマンドを使う[POSIXコマンド]

iconvコマンドは文字コード変換コマンドです. 名前は「International Codeset Conversion Library」に由来するそうです. 出典はwikipediaより 使い方 基本的にはfオプションとtオプションで入力元ファイルと出力先ファイルの円コーディングを指定して利用し…

vimrcを整理した

vim

定期的に整理しないとよくわからなくなる. ソース解析の機会が増えたのでQuickfixとvimgrepに関して追記した. gist.github.com

*nixの改行コードからWindowsの改行コードに変換する.またはその逆

findを使った.msysでも動いてよかった.(unix2dosとか入ってるんだね) 例としてカレントディレクトリ以下の.hファイルを全て置き換え. *nix -> windows find . -name "*.h" -print -exec unix2dos {} \; windows -> *nix find . -name "*.h" -print -exec dos…

hashコマンド[POSIXコマンド]

hashコマンドはコマンドの場所を記憶します.(正確には記憶した場所を表示・削除したりして管理します) hashコマンドは組み込みコマンドの様です. たとえば今の私のシェルで実行すると以下の様になります. $ hash hits command 1 /usr/bin/vim 0 /usr/bin/tou…

loggerコマンド[POSIXコマンド]

loggerコマンドはその名の通りログを残す. 初めて知った. こんな感じで何度も実行する $ logger "test message" $ logger "Hello" $ logger "world" $ logger "logging test" ログを見ると tail /var/log/message ...[中略] Mar 22 17:47:31 localhost root:…

tputコマンド[POSIXコマンド]

POSIXコマンドを淡々と試しているけど,いい加減飽きてきている. tputは制御コードシーケンスを出力するためのコマンド. 制御コードシーケンスはターミナル毎に違うのでターミナルデータベースから情報を持ってきて,それを利用する必要がある. が,面倒. それ…

pwdコマンド[POSIXコマンド]

絶対オプションが無いだろうから一覧だけ更新しようと思ってたのにあった. なんでも調べてみるものだなぁ. pwdは現在のディレクトリの絶対パスを返すコマンド. オプションはcdコマンドにあるものと同じだった. オプション オプション 内容 -L 論理的な現在の…

ctagsを使ってみる[POSIXコマンド]

ソースコード解析補助ツール. ぶっちゃけGNU Global使ったほうが良い気がする. が,POSIXコマンドでviでも(Emacsも?)デフォルトでサポートしてることを考えると知っといて損はない気もする. そんなわけで試してみる. インストール ubuntuだと入ってたけどね. …

cflowを使ってみる[POSIXコマンド]

相変わらずPOSIXコマンドをずっと見ている.(若干飽きてきた) cflowというソースコード解析ツールがあるらしい. POSIXコマンドっぽいのだが,Ubuntuだとそもそも入っていない. それほど高機能でも無いようだけど,コールグラフが出せるらしい.試してみる. イン…

echoコマンド[POSIXコマンド]

POSIXの記載だとマジで1行出力しか出来ないっぽい. GNUとかだとオプションがあるけど,それもシンプル.ただどれも結構便利. オプション オプション 内容 -n テキストの最後に改行を出力しない -e バックスラッシュによるエスケープを解釈する -E バックスラ…

whoコマンド[POSIXコマンド]

サーバシャットダウン前に一応確認するために使うアレ. オプションはこちらが詳しいが使うのは以下くらいではないか. オプション 内容 -m (または who am i) 自分自身の情報を表示する -q ログインしているログイン名と人数のみを表示する -H ヘッダを付けて…

readコマンドを使う[POSIXコマンド]

readコマンドはシェルスクリプト書くなら基本っぽい. 基本的に行指向で取り込んで,区切り文字ごとにフィールドで分けて勝手に変数に取り込んでくれる. read [1フィールド目を入れる変数] [nフィールド目を入れる変数] ... といった感じ. 区切り文字は特殊変…

bcコマンドを使ってみる[POSIXコマンド]

使ったことがなかったので試してみた. まぁ,便利な事もあるのかもなぁ,と言った感じ. 慣れてくると電卓アプリとか起動するより楽で良いかも. 詳細はこちらが詳しい. The Open Groupの説明には文法までちゃんと書いてある. 標準入力を計算するのでお気楽に試…

commコマンド[POSIXコマンド]

commコマンドは2つのファイルを行単位で単純比較します. 単純比較なので事前ソートが必須です. #サンプル用ファイル1 $ cat text1.txt 1 2 3 4hoge 5 #サンプル用ファイル2 $ cat text2.txt 1 2foo 3 4 5 上記2ファイルに対して実行すると $ comm text1.txt …

waitコマンド[POSIXコマンド]

waitコマンドは他のプロセスやジョブの完了を待つためのコマンド. $ sleep 5 & [1] 3775 $ wait $! # $!はバックグラウンド実行された直前のプロセスのプロセス番号を持つ [1]+ 終了 sleep 5 これだけだとなんの有り難みもないが,シェルスクリプト内で同期処…

sleepコマンド[POSIXコマンド]

sleepコマンドは指定時間(秒)動作を停止します. $ sleep 1 # => 1秒何も起きない $ POSIXだとこれだけみたいです. POSIX外だと以下の指定方式が使えるようです. s(秒),m(分),h(時間),d(日) $ sleep 1m # => 1分何も起きない $ 単体だとまず使いませんが,シェ…

cmpコマンド[POSIXコマンド]

cmpコマンドは1byte単位でファイルを比較できるコマンドです. 例 例として下記の様なファイルを用意します. $ cat greeting1.txt Hello, World. $ cat greeting2.txt hello,world 比較してみます. $ cmp greeting1.txt greeting2.txt greeting1.txt greeting…

vimで文字コードを指定してファイルを開きなおす

vim

:e ++enc=文字コード 文字コードでよく使うのは cp932(shift JIS?) utf-8 くらいだろうか

basenameコマンド[POSIXコマンド]

basenameコマンドはフルパスからファイル名だけを取り出してくれるコマンドです. 例 twinbird@:~/text$ basename /home/twinbird/text/edit.txt edit.txt また,suffixを指定するとファイル名末尾から取り除いてくれます. 例 twinbird@:~/lab$ basename /home…

catコマンド[POSIXコマンド]

catは超基本でオプションもいっぱいあると思っていたんだけど,POSIXだとuオプションしかなかった. しかも存在意義がない..... 使い方 catはファイルをつなげたり表示したりするのに使うコマンドです. 以下の様に単純にファイル内容を表示するのによく使いま…

cdコマンド[POSIXコマンド]

cdコマンド. 必ず使うコマンドだけど,意外と知らないこともあった. オプション オプション 内容 -L 指定ディレクトリがシンボリックリンクの場合,シンボリックリンクのターゲットへ移動 -P 指定ディレクトリがシンボリックリンクの場合,シンボリックリンクへ…

calコマンド[POSIXコマンド]

calコマンドはカレンダーを表示します. (今となっては使うシチュエーションがあまり浮かびませんが...まぁ,シェルスクリプトとかで...いやぁ,date使うなぁ...) 基本 twinbird@:~$ cal 3月 2016 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16…

unaliasコマンド[POSIXコマンド]

unaliasコマンドはaliasコマンドで登録した別名を解除するためのコマンドです. 指定した別名の解除 aliasコマンドを実行して解除するものを確認した後に解除する,というのが一般的かなと思います. twinbird@:~/lab$ alias alias ll='ls -alF' alias logwatch…

aliasコマンド[POSIXコマンド]

aliasコマンドはコマンドに別名をつけるコマンドです. aliasの登録 alias 割当て名='コマンド' という形式で使います. 例 twinbird@:~$ alias logwatch='tail -f' twinbird@:~$ logwatch commands.txt val vi wait wc aliasの一覧 引数なしで実行すると登録…

vimで複数行の行頭,行末に文字列を入れる

vim

いつも行末の方を忘れる. 'A'ってあんまり使わないんだよなぁ...意識して使えば便利なのかもしれん. 行頭に入れるとき 矩形選択モードになる(Ctrl-v) 先頭に入れる行を選ぶ 'I'で挿入モードに 挿入するテキストを入力する ESCで抜ける いい感じに入る 行末に…

vimでコピペするとグチャグチャになるあれ

vim

回避方法があった. もう10年近く使ってるけど,一向に使いこなせる気がしないぞこのエディタ. 以下を使ってから貼り付ける. :set paste 解除は :set nopaste

POSIXコマンド一覧

The Open Group こんなにあるんだって感じ. 使ったやつから埋めていこう. [追記] ubuntu15.10でのデフォルトインストールの有無を追記した. 結構入ってない....POSIXって.... コマンド名 説明 ubuntuデフォルト admin sccsの管理ファイルを作るコマンドらし…

cutコマンド[POSIXコマンド]

ここを見るとPOSIXコマンドだけで結構な量があることがわかる. POSIXは基本どこでもある程度動くので便利だ. なにせWindowsでさえMSYSなどを入れればそれなりに動く.SUAもあるし. 面白いので知らないコマンドを試してメモしていくことにした. cutコマンド タ…

UbuntuでcapsLockをctrlにする

いつも安い中古PCにLinux入れて使ってるので、CapsLockがうざったい. Macはいいよなぁ. 以下の設定でCapsLockをCtrlに割り当てれます. $ sudo vi /etc/default/keyboard (下記を) XKBOPTIONS="ctrl:nocaps" 設定後はXの再起動がいるので、おとなしくOSごと再…

Windows で Caps LockキーをCtrlキーに割り当てる

MSYS2を使うようになるとどうしてもUnixキーバインドの癖が出るようになって,CapsLockをCtrlにしたくなる. (特にEmacsを使う人はしんどいと思う) いいのないかなぁ,と思っているとまさかのMicrosoftのドメインで見つかった. Ctrl2cap Windows7ではちゃんと動…

MSYS2のパッケージアップデート方法

1.最低限のパッケージをアップデート $ update-core 実行後msys2のウィンドウを再起動 2.その他のパッケージを更新 $ pacman -Su

Ubuntuにgo-langを入れる

多少古くてもバージョンが気にならない方は以下で. $ sudo apt-get install golang 若い言語だし,一応最新で試してみたかったので公式のバイナリを入れた. 1.公式からダウンロード 2.展開して配置 $ sudo tar -C /usr/local -xzf go1.6.linux-amd64.tar.gz 3…

DotLangViewerの使い方

DotLangViewerというDot言語(Graphviz)で書いたファイルを Chrome上でグラフ表示するChrome拡張を作りました. 「動かない」,という話になりがちだったので, 使い方を書いておきます. とはいえ,使い方自体は至極簡単です. ハマりポイントはChromeのセキュリテ…

Graphvizの使い方を例題で覚える

Graphvizとは GraphvizはDot言語という記法で書かれたテキストファイルをグラフ図に変換するツールです. とりあえずwikipediaを. AT&Tが開発し,公開しています. 環境作成 コマンドラインからがお好みの方は # mac $brew install graphviz # ubuntu $sudo apt…