2009年1月31日土曜日

アウトプット手法



他のブログをみて、すげー勉強になったことがあるとする。
感動してそれをブログに書く。


ほぼ丸写し。


まぁ、別にそれでもいい。大抵の場合は。
ただ何か引っかかるときがある。書くのをためらうときだ。
もう少し自分で調べたかったり、それほど感動的ではなかったときなど。


そういうパターンはかなりあって、それはブログを書く習慣が消える恐れもあるので、そんなときはガンガン下書き保存するのが良いと思う。





マクロ復習



#define name 置換テキスト


関数と違う点



  • マクロはコンパイル時に置換される。



#define dprint(a) printf("result = %g\n", a)
dprint(a);//コンパイル後はprintf("result = %g\n", a);に置換


言い方は悪いが、普通のコードに置換されている。
そのため関数のようなオーバーヘッドがない。



  • 型指定がない。





有名な間違い



#define max(A,B) ((A) > (B) ? (A) : (B))
max(i++,j++) //間違い


インクリメントが複数回実効される。



#define square(x) x*x //間違い



square(z+1)だと
z+1*z+1=z+z+1=2z+1になってしまう。

正しくは、



#define square(x) ((x)*(x))



#記号(パラメータを実引数に置換)


#記号はパラメータを実引数に変換後、""で囲んでくれる。



#define dprint(expr) printf(#expr "= %g\n", expr)
dprint(x/y);

printf("x/y""= %g\n",x/y);

printf("x/y= %g\n",x/y);



##記号(文字列結合、引数呼び出し禁止)



#define cat(a,b) a ## b
cat(1,2);


##の隣の空白は削除されて文字列12になる。
また##のまわりでは引数展開できない(正確には不定)
つまり、
間違った予測では以下のようになる。



cat(cat(1,2),3);

cat(1,2) ## 3

(1 ## 2) ## 3

12 ## 3

123



実際は##のまわりでは引数展開が不定なので、



cat(cat(1,2),3);

cat(1,2) ## 3 //cat(1,2)は展開されない

cat(1,2)3



##を使わなければ可能



#define xcat(x,y) cat(x,y)
xcat(xcat(1,2),3);

123





2009年1月30日金曜日

要点ノートはチョー大事



しばらくSICPを読んでなかったので、自分の過去の記事を読んで復習。
自分で書いただけあってすごく解り易かった。
要点だけ書いたノートってのはホントに大事なんだなと実感した。忘れた分をもう一回読むのなんて苦痛すぎる。
でも昔からノートは苦手だったので、blog書いてなかったら読むのやめてたと思う。


読み返して、すぐに理解できなかったところは手直しをした。
こうして自分に最適化していくのですね。


P.S
スーパーpre記法って行数表示できないのだろうか





2009年1月29日木曜日

diredとwdired



dired


まずdiredの説明。
emacs上で、C-x dでdiredモード。qで終了だが、連打しないといけない。なぜ一発で終わらない。
ディレクトリの入力を求めてくるので指定する。


えーと、ファイルやらディレクトリやらの一覧が出てくるんだけど、
これってまとめて何て呼べばいいん?


基本操作

まぁhでヘルプメニューが出てくるので、それで事足りますが。



nとp:カーソル移動
RET:ファイルを開く. e や f でも OK
^:1 つ上のディレクトリへ移動
D:ファイルを削除.
C:ファイルをコピー
R:ファイル名を変更



  1. :ディレクトリを作る


s:並び方を変更. C-u s で ls の引数を変更できる
u:選択したファイルのマークをはずす. ディレクトリ名のところで押すとすべてのファイルのマークをはずす



RETはENTERのこと。知らない人が割といるので一応。
sの並び替えは拡張無しだと「日付」と「ファイル名(数字->大文字->小文字の順)」のみ。


wdired(writable-dired)でファイルリネーム



wdiredの準備

まずwdired.elをDL
.emacs.my.elに



;;; wdired の設定
(require 'wdired)
(define-key dired-mode-map "r" 'wdired-change-to-wdired-mode)




wdiredの操作方法

diredでrを押すと編集モードwdiredに。
保存してdiredに戻るにはC-x C-sかC-c C-C
保存せずに戻るにはC-c C-k


wdiredでファイル移動

ファイル名を変更する際に、../ファイル名や、~/ファイル名等
相対、および絶対パスを記入するとファイル移動が行える。便利!


wdiredでリネーム

emacs同様に、M-%でreplace

その他の操作はここを参考にしてください。





2009年1月22日木曜日

とらドラ!が面白い



これはラブコメか?書評とらドラ

主人公の声優があの人だったので、萌え~なくだらんアニメかと思ったら、激面白い。こういう王道系はひさしぶりだ。
作者がめぞん一刻にめちゃくちゃ影響されてるとコメントしてるらしい。

D





1分でわかる中東情勢



f:id:toku_bass:20090123013704p:image





画像処理の単語



とにかくアウトプット。
色ヒストグラム(出現頻度分布)と色コリログラム(共起頻度分布)


ヒストグラム の検索結果(セーフサーチ) 約 224,000 件中
出現頻度分布 の検索結果(セーフサーチ) 約 54,200 件中


コリログラム の検索結果(セーフサーチ) 約 26 件中
共起頻度分布 の検索結果(セーフサーチ) 約 15,000 件中


・・・・そりゃ知らないはずだっ!
共起自体があまり研究されてないのかもしれませんね。
組合せが膨大になることが多いだろうから現実的でないんだろうな。





2009年1月21日水曜日

PCやノートで家計簿をつけるな



ケータイでやりましょう。


PCの家計簿は2週間で断念。超ズボラーな僕に続くわけがない。
しかもシートがない出費なんて山ほどあるから、どうでもよくなってしまう。
財布にもレシートがたまってみっともない。

ケータイだとリアルタイムで家計簿がつけれるので、とても楽ちんです。
コンビニでも店員が袋詰めしてる間にぱぱっと打ち終わります。


エクセルファイルとして出力することも可能ですが、1ヶ月単位でしかサーバーに送信できないのが若干面倒です。



家計簿をつけるのが一番いいのだけど、やはりなかなか難しい。
でもとりあえず、自分が月にいくらくらいつかうのかを把握しておくことは絶対に必要。
http://www.rossoneri.jp/2009/01/18_23215.php




僕も大まかな出費を知りたいっていうのが一番大きいので、細かくはジャンル分けしていません。
毎日つけるのは「買い食い」と「飲み物」の2ジャンルくらい。
昼食なんかも買い食いに入れてます。弁当をもっていけば済むので「節約対象」という意味で。
「飲み物」もお手軽節約対象なので「買い食い」とは分けてあります。
(研究室に冷蔵庫があるので、2リットルペット入れてある。)
飲み会や誰かと外食するときは「外食」扱い。


かれこれ、1年半以上続けているのでオススメですよ!
(ちなみにこのアプリは「家計簿改」という2代目アプリだが、初代「家計簿」は最悪に使い勝手が悪かった。初代はジャンルの作成が自分でできないのに、数少ないジャンルの中に「ネイル代」ってジャンルがあったのは心底おどろいた。作者は女性??)





複数ファイル名置換、複数ファイル内文字列置換



複数ファイル名置換
for f in ファイル名正規表現; do mv $f `echo $f|sed -e "s/元ファイル名/置換後ファイル名/g"`; done


複数ファイル内の文字列置換
find . -name "ファイル名正規表現" -exec sed -i 's/元テキスト/置換後テキスト/' {} \;




2009年1月17日土曜日

benefitとprofitの違い



双方、プラスになるような利益のことを表すのですが、
前者は人脈など非金銭的なもの、後者は数値化できる、企業利益のようなものだと理解していたのですが、


間違いでした。


benefitも金銭的な意味を含みます。
ただそれが企業利益のようなものではなく、今話題の給付金などの場合です。


health-benefits 医療給付金





2009年1月16日金曜日

漫画閲覧ソフト



といえば、作者が可哀想なことになったマンガミーヤですが、windows専用なんでcomixを使ってました。
でもzipからcbzにリネームしてやれば、PDFを開くときに御世話になってるevinceで開けます。ただ2ページ表示かつ右開きにしたい場合は、ソースコードをいじる必要があります。





VirtualBoxでiPod touch認識した!



ひゃっほう!
環境はubuntu8.10+VirtualBox2.06+XP

VirtualBoxはOSE版だとUSB認識してくれない。
基本的にここのとおりやれば大丈夫。
英語だけど、簡単な単語ばっかりだから平気

ダメならここも参考にしてみるべし。





2009年1月15日木曜日

結構考えてしまった



騙されないようにしないとなぁ・・・



>>1と>>2と>>3が、>>4が経営するホテルに泊まりに行った。
ボーイの>>5が、「一人5000円になります」と言ったので
>>1-3は、5000円ずつ出した。(5000円×3人=15000円)
しかし経営者の>>4は、「3人で10000円でいいよ。5000円返してきて」といった。
>>5は、5000円を3人で割るのは難しいから2000円ネコババして、3000円を返すことにした。
つまり3000円を一人1000円ずつに分けて戻したわけだ。
すると>>1-3は一人5000円出して1000円戻ってきたわけだから4000円払ったことになる。
4000円×3人=12000円
それに>>5がネコババした2000円足すと
12000円+2000円=14000円。

もともと払ったのは15000円なのに14000円?
あれ?1000円どこいっちゃったんだろう?

こうですか?わかりません><




ヒント:
ドラッグしてください
ネコババした2000円を足すのがおかしい