install w3m from yum
w3m
スクリーンブラウザ.
スクリーン上で起動するので非常に動作が軽快,スクリーンブラウザながら最近は画像も表示できる.
インストール
# yum install w3m.i386
- w3m.i386-0.5.1-15.el5
がインストールされる.
ついでにw3mの画像表示プログラムw3m-img.i386もインストール.
# yum install w3m-img.i386
- w3m-img.i386-0.5.1-15.el5
がインストールされる.
テスト
% rehash % w3m http://www.google.co.jp/
グーグルのトップページのロゴが表示された.
せっかくなので記念写真.一度w3mを終了させて.
% (sleep 10; import -window urxvt -quality 100 w3m_withimg.jpg) & % w3m http://www.google.co.jp/
10秒待つとカレントディレクトリに仮想ターミナル(ここではurxvt)のスクリーンショット(w3m_withimg.jpg)が生成される.
記念写真
in microwave
午前0時,電子レンジでミルクを温めてスープを飲んだ.噴き零さないように注意してと・・そんなことを考えていた.そして,スープを飲みながらyoutubeでぐぐった.
- 石鹸を電子レンジで・・
- http://jp.youtube.com/watch?v=7lAOOwMNodA&feature=related
- ピンポンを電子レンジで・・
- http://jp.youtube.com/watch?v=s0uX7DIkT3E&feature=related
- 大きなタマゴをレンジで・・
- http://jp.youtube.com/watch?v=IMM7s5RRqT4&NR=1
- CDをレンジで・・ちょっとカッコいいかも
- http://jp.youtube.com/watch?v=Z1Wegnjmd-8&feature=related
- ニュートンのゆりかごをレンジで・・爆発してます
- http://jp.youtube.com/watch?v=Lkn6fMn9eqU&feature=related
- 携帯電話をレンジで・・CG
- http://jp.youtube.com/watch?v=k0TSyIn5KMo
- プラズマ
- http://jp.youtube.com/watch?v=AE3dRBlQjTE
この中で家庭で実験できるのはCDと石鹸くらいでしょうか・・あとは危険度が高すぎます・・・どちらにしろ危険ですが.
よいこはぜったいにまねしないでね.
diff: patch
command
% cat >patchtest.old aaa bbb ccc % cat >patchtest.new aaa xxx ccc % ls patchtest.new patchtest.old patchtest.txt % diff patchtest.old patchtest.new 2c2 < bbb --- > xxx % diff -c patchtest.old patchtest.new *** patchtest.old 2008-09-09 20:53:01.000000000 +0900 --- patchtest.new 2008-09-09 20:53:17.000000000 +0900 *************** *** 1,3 **** aaa ! bbb ccc --- 1,3 ---- aaa ! xxx ccc % diff -c patchtest.old patchtest.new >patchtest.patch % patch <patchtest.patch patching file patchtest.old % diff patchtest.old patchtest.new %
note
cf. % man patch % man diff
Makefile
Makefile概要
Cなどでプログラムを作るとき1つのファイルで処理が終わってしまうような簡単なプログラムなら,
% ls source.c % gcc source.c % ls a.out source.c
のようにそのソースをコンパイル&リンクして実行ファイルを得れば良いが,数10,数100のファイルなどからなる大きなプログラムになると
% ls 死ぬほど多いソースファイル % gcc 死ぬほど多いソースファイル
などとやっていては1回の実行なら良いが,バグが見つかり1つのファイルのみを修正してコンパイル&リンクをしようとしたとき,再び全てのファイルについてコンパイル&リンクをしなくてはならず時間効率が悪い.そこでMakefileとmakeコマンドを用いると,修正したファイルのみをコンパイルし,リンクを行うということが可能である.コンパイルの時間が短縮できるとともにコマンドをいちいち打つ必要がないため手間も省け,効率的である.
まずは基本
同じディレクトリ内に以下のような3つのファイルがある.(Makefile, hello.c, helloworld.c)
このうちプログラムのソースはhello.cとhelloworld.cこの2つのファイルをMakefileとmakeコマンドを使ってコンパイル,リンクする.
source(Makefile)
# Makefile helloworld: helloworld.o hello.o gcc -o helloworld helloworld.o hello.o helloworld.o: helloworld.c gcc -c helloworld.c hello.o: hello.c gcc -c hello.c clean: rm -f helloworld.o hello.o
source(hello.c)
#include <stdio.h> void hello(void) { printf("hello world\n"); }
source(helloworld.c)
#include <stdio.h> int main(int argc,char *argv[]) { void hello(void); hello(); return 0; }
ここで以下のようにコマンドを打つ
% ls Makefile hello.c helloworld.c % make gcc -c helloworld.c gcc -c hello.c gcc -o helloworld helloworld.o hello.o % ls Makefile hello.c hello.o helloworld helloworld.c helloworld.o % ./helloworld hello world
makeコマンドを実行すると
gcc -c helloworld.c gcc -c hello.c gcc -o helloworld helloworld.o hello.o
の3コマンドが実行されていることがわかる.まず,上2つでコンパイルを行い,オブジェクトファイルを作成,その後リンクしhelloworldという実行ファイルを生成する.
この状態でもう一度makeする.
% make make: `helloworld' は更新済みです
既にhelloworldは最新版でありコンパイル&リンクは必要ないので何も実行されない.
次にMakefileの最後の2行
clean: rm -f helloworld.o hello.o
これはmakeコマンドの引数に指定すると,指定されたコマンドを実行すると言う意味である.
この場合
rm -f helloworld.o hello.o
が実行され,helloworld.oとhello.oというリンクに使われたオブジェクトファイルが2つ削除される.
% ls Makefile hello.c hello.o helloworld helloworld.c helloworld.o % make clean rm -f helloworld.o hello.o % ls Makefile hello.c helloworld helloworld.c %
マクロ,サフィックスルール
Makefileを以下のように修正する.helloworld.cとhello.cは使いまわしする.
source(Makefile)
# Makefile CC=gcc OBJS=helloworld.o hello.o helloworld: helloworld.o hello.o $(CC) -o $@ $(OBJS) .c.o: gcc -c $< clean: rm -f $(OBJS)
3,4行名
CC=gcc OBJS=helloworld.o hello.o
は代入文でCCにgccを,OBJSにhelloworld.o hello.oを代入することを表す.
代入された変数を参照するには$(変数名)のようにする.
この場合,7行目
$(CC) -o $@ $(OBJS)
の$(CC)はgccに,$(OBJS)はhelloworld.o hello.oに置き換えられる.
同じく7行目$@は現在のターゲットのフルネームを取得する.ここではhelloworldに置き換えられる.つまり7行目
$(CC) -o $@ $(OBJS)
は,
gcc -o helloworld helloworld.o hello.o
に置き換えられる.
次に9,10行目
.c.o: gcc -c $<
は,.cのファイルを.oファイルに変換するということを表す.
$<はターゲットに依存している単一のファイルをに置き換えられる.この場合,hello.oが依存されているときは,
gcc -c hello.c
に置き換えられ,helloworld.oが依存されているときは,
gcc -c helloworld.c
に置き換えられる.以上を踏まえてmakeコマンドを実行する.
% rm helloworld % ls Makefile hello.c helloworld.c % make gcc -c helloworld.c gcc -c hello.c gcc -o helloworld helloworld.o hello.o % ls Makefile hello.c hello.o helloworld helloworld.c helloworld.o % ./helloworld hello world % make clean rm -f helloworld.o hello.o % ls Makefile hello.c helloworld helloworld.c %
上記のmakeコマンドと同じ結果を得られた.
このようにマクロ,サフィックスルールを用いることによりMakefileの汎用性を高めることができる.
Makefileについてはこれくらい知っておけば大体大丈夫だと思う.
化粧水自作
なぜ自作か
どの化粧水がいいのだろう・・調べていくうちにある気になるワードにいきつく,"界面活性剤",化粧水ではどうやら防腐剤として使われているらしい.他にも乳化作用もあることから美容液などの乳化にも使われているらしい.
っというわけでPC自作の次は化粧水の自作に挑戦してみるわけだ.
レシピ
いろいろ検索してみると簡単に作れそうなレシピを発見
今回はこれで作ることにする.
薬品名 | 分量 |
---|---|
グリセリン | 10cc |
尿素 | 50g |
水 | 200cc |
これを10倍に薄めて使うらしい.
今回用意したもの
品名 | 値段 |
---|---|
グリセリン100ml | 398 |
尿素100g | 504 |
350mlペットボトル(おいしい水か何か) | 105 |
電子天秤 | 1270 |
計量カップ | 160 |
詰め替えボトル | 98 |
水道水 | - |
合計 | 2535 |
作る
保存には350mlのペットボトルを使うことにする.よく洗ってその中にグリセリンを入れる.10ccを計れる容器がないのでペットボトルの蓋を使う.
ペットボトルの蓋の内側にある線までが5ccらしい・・一応確認してみたが10杯で計量カップの50ccの線まで入ったので間違いないようだ.
次に尿素を入れる,秤は持っていなかったので家にあるもので天秤まで自作しようと思ったが,誤差が出そう&労力が結構いりそうなので素直に電子天秤を 買ってきた.
最後に水を入れる.計量カップで200ccを計ってペットボトルに入れる.
蓋をよく締めて尿素が完全に溶けるまでよく振る.完成!
このペットボトルは保存用に使い.10倍に薄めたものは詰め替えボトルに入れて洗顔石鹸の隣に置いておく.
留意点
- 尿素はホームセンターの園芸コーナーにもあるが重金属など不純物を含んでいる可能性もあるので薬局で買う方が良い.
- グリセリンは10cc〜お好みで調合する.水っぽいのがよければ少なめに,トロトロがよければ多めにする.
- 水は水道水でOK,精製水の方が良いかもしれないが・・
- 消費期限は要冷蔵で約半年.変な匂いがしたら腐っているかもしれないので使わない方がいいかも.
- 尿素は水に溶けるとき溶解熱を発する(ちょっと冷たくなる).