Archive for category メモ

emacsですべての行を字下げ(tab)する

時々プログラムを書いていてif文が一個抜けたりしてすべての行に対して、tabを連打するという愚かな行為をしたりしています。そして何気にtabを連打している音がうるさい。
「すべての行を一気に字下げする方法あったんだけどな~」とか思いつつもtabを連打している。いや、あるんだから、使おうよということでメモしておくことにする。

- すべての行を選択する

C-x h または mark-whole-buffer

- 選択された行(region)を適切に字下げする

C-M-¥ または indent-region

これでtabをもう連打しなくてよい。
隣の人にも迷惑にならない。

Tags:

XZ Utilsを試してみた

XZ Utilsという圧縮ユーティリティの圧縮率がめちゃくちゃ良いとの噂を聞いてさっそく試してみた。
以下を参考にした。
http://oku.edu.mie-u.ac.jp/~okumura/blog/node/2409

 

Downloadは以下のサイトから。
http://tukaani.org/xz/

 

■実験に使ったファイル
- wikipediaのダンプファイル(XML)を解凍したもの
http://download.wikimedia.org/jawiki/latest/jawiki-latest-pages-meta-current.xml.bz2

 

■実行コマンド
- 圧縮
xz -z [入力ファイル] [出力ファイル]
xz -z current.xm current.xml.xz

- 結果
– 実行時間:81min
– 圧縮後サイズ 4.5G => 880MB

 

■比較
- bzip2
- 結果
– 実行時間13min
– 圧縮後サイズ 4.5 => 1015MB

 

■比較結果
- xzのほうが1.15倍圧縮された
- されどxzのほうが6.23倍時間がかかった

 

さあ、どちらを選択するか。

何から手をつけたらいいのかわからない時

新しい企画を作る時や、プログラムの要件定義を作る時、ユースケースなどを考える時に、何から手をつけたらいいのかわからなくなる経験があるかと思います。
このエントリは小ネタだし、誰でも思い浮かぶことではあるのですが、メモ程度で、このような時の僕の取り組み方を記述します。

「問題の具体化・細分化」
なぜ、何から手をつけていいのかわからないかというと、今自分がやろう!としていることがよく見えていないからなんだと思うのです。
たとえば、ソーシャルブックマークのシステムを作ろう!と考えた時に、いざユーズケースを考えようとしても中々はかどらない。。。なんてことがあると思うんです。
そんな時は、対象物(ここでいうソーシャルブックマーク)という機能を実現させるために具体化・再分化してみるといいと思います。
いきなり全部の機能について仕様書やユースケースを書こうとしてしまうから、行き詰ってしうのであって、必要な細かい機能に分解してから書くとかなりすらすら書けたりします。

Aという機能を作りたいのであれば、まずAを実現させるためには、大きく分けてA-1、A-2、A-3という機能を作らなければならない。では、まずここから仕様書を書いてみよう。といった具合に。
たとえば、上記のソーシャルブックマークの場合だと、これを実現させるためには、まずフロントエンドの仕様を決めないとなりません。ユーザが任意のwebページにブックマークができることや、それを共有できることなどなど。これをA-1とすると、バックエンドでは、定期的にユーザのブックマークをカウントして、ランキングを生成したいといった機能をA-2とする。などなど、対象物を再分化することによって考えなければならないことがもりもり!と出てきます。

よく「とりあえず手を動かせ!そうすれば進みだすから!」みたいなことを聞くのですが、それは確かに事実だと思います。でも、「とりあえず!」というのができないときは、今一度今抱えている問題が何なのかを具体化・細分化してみることから初めてみませんか?これはプログラミングのみならず、企画にも応用できると思います。

※注意 プログラムを作る手順は人・流派によって最適な手法はまったく異なります。今回はあくまで、何かをしようとしたときに行き詰ったときの一例としてプログラミングを用いましたが、プログラミングの工程で今回の内容が最適であるとは思っておりません。