なんかある関数があってそれが特定の値が出るまで回るってどうやるのかなと思って調べたのだけど毎回忘れるのでメモ。
とりあえずはGDBのループ構文とかがあるのでそれを使えばよい。
たとえば
void Function(int p) {}
があってp == 0じゃない場合がくるまで待ちたいなら
b Function
while ParameterValue = 0
continue
end
とかすればよいっぽい。
追記
コメントもらったんだけど、このケースだと break xxx if という構文が使えて
b Function if ParameterValue !=0
とすればよいっぽい。
Thursday, February 12, 2015
Sunday, June 22, 2014
git branch
git で開発用ブランチをつかいまくるワークフローを活用しているとどんどん増えてきてよくわからなくなってきます。
タグにディレクトリを作って管理するというのもよいのですが、そもそも最近のブランチしか気にしないというライフハックも便利です。
git for-each-refをつかってgit branch をカスタマイズしてみましょう。
手元では
git for-each-ref --count=10 --sort='-committerdate' refs/heads --format='%(committerdate:short)%09(%(committerdate:relative))%09%(refname:short)%09%(subject)'
として最近コミットしたブランチを表示させてます。
タグにディレクトリを作って管理するというのもよいのですが、そもそも最近のブランチしか気にしないというライフハックも便利です。
git for-each-refをつかってgit branch をカスタマイズしてみましょう。
手元では
git for-each-ref --count=10 --sort='-committerdate' refs/heads --format='%(committerdate:short)%09(%(committerdate:relative))%09%(refname:short)%09%(subject)'
として最近コミットしたブランチを表示させてます。
Monday, March 10, 2014
dshell
emacs でカレントディレクトリでシェルを起動する。
個人的にはemacsをシェルとして使っていてこれが多分いちばんemacsで利用する機能。emacs 依存。
(defun dshell (my-default-directory)
"run shell in current directory.
Uses MY-DEFAULT-DIRECTORY as the current directory, and uses that
as the buffer name."
(interactive (list default-directory))
(let* ((default-directory (expand-file-name my-default-directory))
;;(explicit-shell-file-name "/bin/dash")
(shell-buffer-name
(concat "*shell*"
default-directory)))
(shell shell-buffer-name)))
Tuesday, October 22, 2013
アンケートの内的整合
Cronback's Alphaという尺度がある。
これはアンケートとかを設計するときに使う方法で複数の同じような答えが期待される質問にどれくらい同じように答えてくれているかということをもってその質問の答えがどれくらい信頼出来るのかを計測する尺度らしい。
アンケートや心理テストで似たような質問や逆の質問が複数なされるのはこの手法をつかうためなのかな。
http://en.wikipedia.org/wiki/Cronbach's_alpha
これはアンケートとかを設計するときに使う方法で複数の同じような答えが期待される質問にどれくらい同じように答えてくれているかということをもってその質問の答えがどれくらい信頼出来るのかを計測する尺度らしい。
アンケートや心理テストで似たような質問や逆の質問が複数なされるのはこの手法をつかうためなのかな。
http://en.wikipedia.org/wiki/Cronbach's_alpha
Friday, September 27, 2013
ssh のクライアント側の設定メモ
手元のssh 関連の設定をまとめてみた。
・ControlMasterで接続を再利用すると高速になるので便利。
手元ではこんな設定にしている。
ControlMaster auto
ControlPersist 120
ControlPath ~/tmp/ssh-%r@%h:%p
ControlPersistとすると、ssh が親プロセスが1のdaemon プロセスになってくれてコネクションを張りっぱなしにしてくれる。
デフォルトで設定されているとマニュアルには書いてあるんだけど、手元ではControlPath指定しないと動かなかった。なんでだろう。
ホームディレクトリ以下の tmp にしているのはファイル名の衝突について心配しなくてよいように。
ControlMasterをAutoにしておくとすでにコネクションが開いていない場合はデーモンをたちあげてもしコネクションが開いている場合にはそれを利用するように。
・コネクション Keep-Alive 関連の設定
試行錯誤しているんだけどこれくらいがいいのかな。
ServerAliveInterval 3
ServerAliveCountMax 5
ServerAliveCountMax 5
・パソコンがsleep から復活した時に再接続する設定
大抵ネットワーク接続の構成が変わったらssh のコネクションは終了して再接続するべき、だと思うんだけどまだそういう設定ができる方法は発見しておらず。
dbusのイベントとかでおしえてくれないんだろうか。
・ホスト名を適当につける
DNSの登録設定とか面倒なのでsshでしか使えないホスト名みたいなものが作れる。ssh経由でつながるtrampとかではつかえるので便利。bash のsshのコマンドライン補完でも使えるし。
・*.local用の設定
Mac のRendezvousとかLinuxのAvahiとか設定しているとホスト名.local という名前で名前解決ができるようになるけどIPアドレスは毎回変わるのでホストIPをチェックしないようにする。
Host *.local
CheckHostIP no
あとついでに公開鍵認証にしておくとよさげ。
Host raspberrypi.vpn
Hostname そのホストのIPアドレス
IdentityFile ~/.ssh/ssh-keygenで作ったファイルのパス
IdentitiesOnly yes
dbusのイベントとかでおしえてくれないんだろうか。
・ホスト名を適当につける
DNSの登録設定とか面倒なのでsshでしか使えないホスト名みたいなものが作れる。ssh経由でつながるtrampとかではつかえるので便利。bash のsshのコマンドライン補完でも使えるし。
・*.local用の設定
Mac のRendezvousとかLinuxのAvahiとか設定しているとホスト名.local という名前で名前解決ができるようになるけどIPアドレスは毎回変わるのでホストIPをチェックしないようにする。
Host *.local
CheckHostIP no
あとついでに公開鍵認証にしておくとよさげ。
Host raspberrypi.vpn
Hostname そのホストのIPアドレス
IdentityFile ~/.ssh/ssh-keygenで作ったファイルのパス
IdentitiesOnly yes
mjpg-streamer on raspberry pi のすすめ
1FPS とかしかでないよという話題のでているraspberry piを使ったUVC 監視カメラですが、YUVとかの形式のデータを頑張って変換しようとしているからなんじゃないかと思ってます。手元の
UVC カメラではデバイス側で MJPEG形式でデータをはいてくるようになっていて、多分殆どのカメラではそうなってるんじゃないでしょうか。MJPEGはJPEGファイルを多数つなげたような形式でそれをほぼそのまま垂れ流せばいいだけのはずでraspberrypiがいくら遅いからってそれを使えばまともなFPSがでるんじゃないかとおもって調査してみました。
世間でmjpegをそのままHTTPサーバに出してくれるというツールが意外とないんですが、mjpg-streamerというツールがそれにあたるっぽいので試して見ました。
$ sudo apt-get install libjpeg-dev imagemagick libv4l-dev
$ svn co 'https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer' mjpg-streamer
$ cd mjpg-streamer
$ make USE_LIBV4L2=true clean all
$ LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.so -w ./www" -i "./input_uvc.so -f 30 -r vga"
以上で http://hostname:8080/ にウェブサーバが立ち上がるのでそれにアクセスするとストリーミングで表示してくれます。
30fps, VGA でCPU負荷4%くらい。解像度あげるとフレームが落ちている気がするけど30fpsでてるのかどうかよくわからない。15fps以上は目で見ても差がよくわからないのでどうやって確認するのが良いのかな?
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6938 pi 20 0 47392 2528 2184 S 4.2 0.5 0:02.16 mjpg_streamer
2668 pi 20 0 17672 5220 1420 S 2.3 1.0 2:05.09 mosh-server
Sunday, September 15, 2013
tramp の設定つづき
忘れそうなのでまとめ。しかしまだいろいろと自分のネットワーク設定が解決してない
・ssh の速度
・接続される側の /etc/sshd_config
サーバ側の /etc/ssh/sshd_config を確認してもしDNSでリゾルブすることのできないホストを使っているなら UseDNS no を指定する
VPN 経由の通信の場合、MTUが1500になっていると多分大きすぎる?
mssfix, fragment あたりのオプションが必要か?
とりあえず適当に fragment 1280, mssfix としたら安定した(テストケース、ssh でログインして dmesg をながすと代替最大サイズのフラグメントをながそうとして消えてなくなるようだ)。
path mtu discovery がどっかの時点で失敗してるっぽい。
・接続する側の ~/.ssh/config
ssh のコネクションが死んだ時に tramp は検出できないので、ssh側で keepalive の頻度を上げる。
ServerAliveInterval 3
ServerAliveCountMax 3
/ssh: だと特にコネクションの再利用とかしてくれないので自動でコネクションの再利用をして、バックグラウンドで生き残るようにする
ControlMaster auto
ControlPersist 120
・tramp の設定
/ssh: hostname:/path でファイルが開ける
/sudo:root@hostname:/で一般ユーザ権限でログインして、root権限でファイルが開けるように .emacs に設定した。
(add-to-list 'tramp-default-proxies-alist
'("\\.local\\'" "\\`root\\'" "/ssh:%h:"))
・vcの設定
vc-handled-backends CVS Git のみにしてみた。RCSとかインストールしなくてすむように。
git の設定がなんかたりないきがする。RCS はもう使わないでしょう。
・リモート側の .bashrc
プロンプトがファンシーだといろいろとめんどうなのでシンプルにするために、.bashrcの頭に追加してみた。
if [ "$TERM" == 'dumb' -o "$EMACS" == 't' ]; then
return
fi
これでもなんか安定しないケースがある気がしたのでraspberrypi から .bashrc を消した。
raspbianの標準の.bashrcは.bash_profileでやるべき設定をやりすぎている気がする。
・shell-mode の設定
shell-mode-hookでPS1を設定するコマンドを送信するようにする
(defun dancer-set-prompt ()
(insert "PS1='\\w\\$ '\n")
(comint-send-input))
(add-hook 'shell-mode-hook 'dancer-set-prompt)
・リモート側のemacsclient の設定
未解決
・ssh の速度
・接続される側の /etc/sshd_config
サーバ側の /etc/ssh/sshd_config を確認してもしDNSでリゾルブすることのできないホストを使っているなら UseDNS no を指定する
VPN 経由の通信の場合、MTUが1500になっていると多分大きすぎる?
mssfix, fragment あたりのオプションが必要か?
とりあえず適当に fragment 1280, mssfix としたら安定した(テストケース、ssh でログインして dmesg をながすと代替最大サイズのフラグメントをながそうとして消えてなくなるようだ)。
path mtu discovery がどっかの時点で失敗してるっぽい。
・接続する側の ~/.ssh/config
ssh のコネクションが死んだ時に tramp は検出できないので、ssh側で keepalive の頻度を上げる。
ServerAliveInterval 3
ServerAliveCountMax 3
/ssh: だと特にコネクションの再利用とかしてくれないので自動でコネクションの再利用をして、バックグラウンドで生き残るようにする
ControlMaster auto
ControlPersist 120
ControlPath ~/tmp/ssh-%r@%h:%p
・tramp の設定
/ssh: hostname:/path でファイルが開ける
/sudo:root@hostname:/で一般ユーザ権限でログインして、root権限でファイルが開けるように .emacs に設定した。
(add-to-list 'tramp-default-proxies-alist
'("\\.local\\'" "\\`root\\'" "/ssh:%h:"))
・vcの設定
vc-handled-backends CVS Git のみにしてみた。RCSとかインストールしなくてすむように。
git の設定がなんかたりないきがする。RCS はもう使わないでしょう。
・リモート側の .bashrc
プロンプトがファンシーだといろいろとめんどうなのでシンプルにするために、.bashrcの頭に追加してみた。
if [ "$TERM" == 'dumb' -o "$EMACS" == 't' ]; then
return
fi
これでもなんか安定しないケースがある気がしたのでraspberrypi から .bashrc を消した。
raspbianの標準の.bashrcは.bash_profileでやるべき設定をやりすぎている気がする。
・shell-mode の設定
shell-mode-hookでPS1を設定するコマンドを送信するようにする
(defun dancer-set-prompt ()
(insert "PS1='\\w\\$ '\n")
(comint-send-input))
(add-hook 'shell-mode-hook 'dancer-set-prompt)
未解決
Subscribe to:
Posts (Atom)