読者です 読者をやめる 読者になる 読者になる

write ahead log

ロールフォワード用

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…

msys2でシンボリックリンクが作成できない

msys2上でシンボリックリンクを作ろうとしても失敗する. どうも設定が必要らしい. 「C:¥msys64¥msys2_shell.bat」の下記部分の「REM」を外し,有効にして上書き保存します. REM set MSYS=winsymlinks:nativestrict 上書きした「C:¥msys64¥msys2_shell.bat」…

Gitで間違えてブランチではなくmasterにコミットしてしまったのでなんとかする

Git

今のところ一番きれいに感じたやり方は以下. そろそろresetちゃんと理解しないとやばい. git checkout -b foo git checkout master git reset origin/master --hard

gitで管理対象にするけどローカルでは管理対象しない方法

Git

リポジトリ全体としては管理したいけど,各個人のローカルでは変わるファイル(IDEだと多い気がする)の扱いにいつも困る. ※.gitignoreは一度管理対象に入ったものは無視できない. 今はとりあえず $ git update-index --skip-worktree 無視したいファイル名 を…

ソース内のスペース4つをタブに置き換える.もしくはその逆

スペースとタブの入り混じったソースがあって絶望. とりあえずタブ側に寄せようということでsedでも書くかと思ったら,専用のコマンドがあって驚いた. ちょっとしたスクリプト書くとうまくいった. さすが歴史が長いだけあっていろいろ揃ってるなぁ. #!/bin/sh…

ローカルにmasterからブランチを作ってリモートへ入れる

Git

毎日使うのに毎回忘れてググるのでいい加減メモる. git checkout master # masterへカレントブランチを移動 git checkout -b demo # demo branchを作成し,カレントブランチを変更 git branch # 変わったか確認 git push origin demo # リモートへpush

Cで可変長引数のマクロを作る

C

Cで可変長引数のマクロを作れるらしい.(但し, C99以降) 知らなかったのでメモっとく. 要点 ...はVA_ARGSで置き換えられる. ちょっとした例 よくあるマクロ (組み込みとかでありがち.ふつうは#ifdefとかで囲む) char buf[1024]; //適当なサイズ,名前のバッフ…

Windows7のmsys2環境にtmuxを入れる

超簡単だった. $ pacman -S tmux 設定ファイルを少し変える $vim ~/.tmux.conf set -g prefix C-t # PrefixキーをCtrl-tに unbind C-b # PrefixキーCtrl-bをやめる tmuxを再起動するとうまく動かないという記事があったけど、 自分の環境では発生しなかった.…

CentOS7にRedmineを構築する

個人的には機能が多すぎると思うのだけど,それでもRedmineは便利な道具です. CentOS7が用意出来たので、設定してみます. ちなみに大筋Redmine公式の通りでよいのですが えらくハマるポイントがあって試行錯誤した結果が以下になります. 最も困ったのがRubyの…

CentOS7にGitlabを構築する

仮想マシンが用意できたので、CentOS7上にGithubクローンのGitLabを構築した. 入れたのは古いバージョンだけど, 新しいGitLabでもそれほど変わらないんじゃなかろうか. バックアップスクリプトなんかも用意されていてとても便利だ. 完全にSubversionから乗り…