ちゃっくのメモ帳

ちゃっくがメモしときたいことをメモしとくよ

vim と tmuxで色がおかしいんだよ

なんかtmux上でvimを動かしてcolorschemeをjellybeansにした時に背景色が既に何かを書いた部分とそうでないところで変化してしまいおかしくなった。何故かneovimでは発生しない。正直neovimを使っているので問題は無いけど気持ち悪いので解決しておこうと思う。

まず[vim tmux]とかでググると.tmux.confに次を記述しろって出てくる
set -g default-terminal "xterm"
このxtermの部分はscreen-256colorだったりまちまちなので適当に??

でもこれでも解決しない。
調べてたらここに書いてあった。
Fixing Vim's Background Color Erase for 256-color tmux and GNU screen - The Terminal Programmer

なんかいろいろとvimrcに書き加えるのもあれなので

set t_ut=

と書き加えておいたらなんか解決した。(正直これが何を意味してるか知らないからなんで解決したかわかってないけどとりあえず解決ということで)

Ubuntuでtimeコマンドがなんかおかしい?

タイトル通り、ubuntu
time hoge
としても確かに計測はできているようではあるが出力にreal,user,sysとかがない。また、オプションを付けてもエラーがでる。
どうやらbashのtimeコマンドを呼び出してるのかなぁ。。。

結局直接timeコマンドを呼び出す必要がアルらしい

real,user,sysは次のようにすれば綺麗に見えた

/usr/bin/time -p hoge

これでうまくいった。

ubuntuでnpm使ったらちょっと辛い目にあったんだよ

ubuntu15.04でnodejs,npmをインストールした(結構前で何をどうやってインストールしたかは忘れたのでググってください)

そして
sudo npm install madoko -g
とかして、madokoをインストールしても、実際にmadokoを動かすと
/usr/bin/env: node: No such file or directory
というエラーが出てくる。
どうやらこれはubuntuだと名前がnodejsとnodeで違っていてパスが通っていないらしい(よくわかってないから説明がぐだぐだ)

これを解決する方法としてシンボリックリンクを貼って/usr/bin/nodejsと/usr/bin/nodeを同じにしちゃえばいいじゃんというものがあった。
つまり
sudo rm /usr/bin/node
sudo ln -s /usr/bin/nodejs /usr/bin/node

とすれば良い。

これでmadokoも動いた。やったね。

ちなみに他の解決方法でなんか
npmの新しいのをインストールするとかnodejs-legacyをインストールするとかあったけどどれもダメだった。最終的に動いたのが上記の方法だった。
でもなんか結構人によって解決方法が違ったらしい。

GDBを使ったんだよ

GDBを使ってデバッグすると便利らしいけど意外と使う機会がなかった。
でもちょっと使う機会が出来たから今後使う時に困らないように使い方をメモっとく。

まずコンパイル時にファイルにデバッグ情報を追加して最適化を向こうにする。つまりコンパイルするときにコンパイルオプション-g -O0を付けておく。

これを付けてコンパイルされたプログラムを走らせる。
gdb a.out

ブレークポイントの設定

ブレークポイントを設定するのにはbreakコマンドを使えばよい。main関数に入るまで走らせるなら
(gdb)break main
とすればよく、行番号で指定したいなら
(gdb)break 行番号
とすればよい。
またbreakはbと省略することもできる。

実行

実行するには
(gbd) run
とすればプログラムが開始される。
関数の中を追いかけるときは
(gdb) step
関数の中を追いかけない時は
(gdb) next
とすればプログラムが1行ずつ実行されていく
次のブレークポイントまで一気に動かすのには
(gdb) continue
とすればよい。
これらはどれもn,s,cと省略することができる。

レジスタを見る

アセンブリレジスタの値を覗きたければ次のようにすれば良い
(gdb) print /x $eax
とすれば%eaxレジスタの値を16進数で覗くことができる。
もし10進数で見たければ/d,2進数で見たければ/tとすればよい。
また-8(%ebp)みたいなアドレスを指定して値を覗きたいときは次のようにすれば良い
(gdb) print /x *(int *)($ebp-8)pr
さらに汎用レジスタの値を全て見たいときは
(gdb) info register
とすれば良い。これはコマンド i rと省略することができる。

layout機能

GDBにとても便利な機能としてlayout機能がある。例えばアセンブリソースコードを見ながら進めたい時には
(gdb) layout  asm
とすればよく、レジスタの値を見たいならば
(gdb) layout regs
とすれば良い。ソースコードを見たいならば
(gdb) layout src
とすれば良い。

僕が今求めているもの

layoutとかで変数の一覧を監視するみたいなことができたらうれしいから誰か知ってたら教えてくださいな

John the Ripperを使ったんだよ

ksnctfのなんかの問題でjohn the ripperを使った。
せっかくだからjohn the ripperの使い方をメモっとく

辞書ファイルとパスワードファイルがあるときの方法をメモっとく。(他の方法は必要になった時に追加するめう)

辞書ファイルがdict.txt
パスワードファイルがpass.txt
の時に

john --wordlist=dict.txt pass.txt

とすると
パスワード (user)
みたいな形式で出てきた(・∀・)「

出てくるのにすこし時間がかかった。
数秒で出るわけではないから少し待つ必要がある。

vimで使ってる/使いそうなコマンド一覧なんだよっ

基本的には使ってるコマンド一覧。
あとはマッピングすることで使えそうなコマンドとか普通に知らなかったコマンドとかも随時追加していく予定。
ただこの手の記事はあふれるほどあるのであえてここを見る必要は僕以外は無いぞ!

移動系

コマンド 説明
h,j,k,l それぞれ左,下,上,右に移動する
gj,gk それぞれ表示されている行単位での下上の移動(set wrapされて1つの行が2行以上で表示されている時に便利
$ 現在の行の一番後ろに移動
^ 現在の行で空白以外で一番前に移動
0 現在の行の先頭に移動
gg 先頭の行に移動
G 一番後ろの行に移動

移動+モード変更

コマンド 説明
s 一文字消してインサートモードに入る(NormalModeで)(xiと同じ)
S 一行消してインサートモードに入る(NormalModeで)

結合系

コマンド 説明
J 下の行を現在の行の後ろにスペースを一つ開けて結合

折り畳み機能

コマンド 説明
za 折り畳みの開閉
zm 全ての折り畳みマークを閉じる
zf ヴィジュアルモードで選択した部分に折り畳みマークをつける

折り畳みマークは3重括弧で
{{{
ここが折りたたまれる
}}}
となってる。
折り畳み機能を使う際は
set foldmethod=marker
としておくのが良さそう。

画面分割

コマンド 説明
:sp(split) 水平分割
:vs(vsplit) 垂直分割
<C-w>h,j,k,l 分割したウィンドウ間の移動
<C-w>H,J,K,L 分割したウィンドウの場所を移動

タブ

コマンド 説明
:tabnew 新しくタブを作る
gt 次のタブ
gT 前のタブ

なんか偶然見つけた

コマンド 説明
K カーソル下のmanを表示

VimScript -- バッファを操作する関数 --

VimScriptを書こうと思って
:commandname
としたら行の適当な位置に何らかの文字列を出力したいと思った。
どうやらappendとかsetlineとか使えばいいらしい。

挿入系の関数

append

append(行番号,文字列)
で[行番号]行目の次の行に[文字列]が挿入される。つまり[行番号+1]行目に[文字列]が挿入される。
もともと[行番号+1]行目以降にあったテキストは後ろにずれる。

現在の行の次の行を指定するためには
append('.',文字列)
とすればよい。

setline

setline(行番号,文字列)
[行番号]の位置に[文字列]を挿入する。もともと[行番号]の位置にあった文字列は上書きされる。

現在の行を指定するためには
setline('.',文字列)
とすればよい。

取得系の関数

getline

getline(行番号)
で[行番号]の文字列を取得できる。
現在の行を指定するためには
getline('.')
とすればよい