ほげり道

2009年10月20日

検証のため、どうにかしてCPU使用率を高める

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

「CPU使用率を高めたい」

隣に座っている人に質問された。
何をやっているのか見てみると、whileループでechoさせていた。

▼例

while :; do echo asdfasdf; done

foregroundで実行しているではないか。
backgroundで複数実行する事を伝えてみたけど、伝わらなかった。
キーボードを拝借。

$ cat >>EOS < perf.sh
#!/bin/sh
while :; do echo asdfasdf; done
EOS
$ chmod +x pref.sh
$ ./pref.sh &

いくつか実行したら95%くらいCPUを使うようになっていた。

forkしすぎに注意。
何事も程々に。



半袖 at 01:15|PermalinkComments(3)TrackBack(0)

2009年05月28日

Gitでギットギト

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

Gitを使い始めた

Wakame」でGitを使い始めたのがきっかけ。

今までに実行したgitコマンド。

  • git clone
  • git add
  • git diff
  • git commit
  • git status
  • git log
  • git checkout
  • git branch
  • git pull
  • git push

タイミング良くWEB+DB PressにGit特集が載ってたので読んでみた。
分散管理の「ぶ」をちょっとだけ分かった気がする程度。

兎にも角にも、使い慣れるしかないと感じた。
本格的な戦いはこれからだ。


WEB+DB PRESS Vol.50
WEB+DB PRESS Vol.50
posted with amazlet at 09.05.28
WEB+DB PRESS編集部
技術評論社
売り上げランキング: 1014


半袖 at 10:55|PermalinkComments(0)TrackBack(0)

2009年05月21日

Re: LDR 購読者数を XPath Graph で可視化する

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

LDR 購読者数を XPath Graph で可視化するより

刺身さん」に教えて頂いた「XPath Graph」。
刺身さんのアドバイス通りに設定してみた。

▼半袖blog 読者数(LDR)

読者数(LDR)

今はまだ取得期間が少ない。
今後、増減すると面白い状態になるはず。

刺身さん、ありがとう!



半袖 at 14:50|PermalinkComments(0)TrackBack(0)

2009年04月08日

ssh_configで接続先host毎のオプションを指定する

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

怠惰の為の努力


例えば特定接続先ではユーザー名が違う

  • 普段の作業環境では「hansode」
  • 管理ポリシー等で別ユーザー名を指定される。「nagasode」
  • 接続先専用秘密鍵がある
コマンドラインでオプション指定
$ ssh example.jp -l nagasode -i ~/.ssh/id_example.jp

毎回、オプション指定が面倒くさい。
さて、どうする。

ssh_configでオプション指定
$ whoami
hansode
$ cd $HOME/.ssh
$ vi config
----
Host example.jp
        IdentityFile ~/.ssh/id_example.jp
        User nagasode
----

一度ssh_configを設定しておけば、
次回以降作はホスト名指定だけで済む。

$ ssh example.jp

alias? ssh_confg?


コマンドラインオプション指定の手間を省くにはaliasを使う手もあるけど、
ログインシェルの設定ファイルに書く必要がある。

ssh_configを使うと、ログインシェルに非依存。
また、$HOME/.ssh/は700なのでオプションを覗かれる心配がなくなる。
さらに、psコマンドでもsshのオプションが見える心配はない。

sshの設定は、ssh_configがオススメ。


実用SSH 第2版―セキュアシェル徹底活用ガイド
Daniel J. Barrett Richard E. Silverman Robert G. Byrnes
オライリー・ジャパン
売り上げランキング: 251479


半袖 at 10:40|PermalinkComments(0)TrackBack(0)

2009年02月25日

やがて訪れるcoLinuxのディスク容量不足。その対応策の1つ。

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

ルートパーティションの容量増加しなくて良い

WindowsでWebアプリ開発環境に便利なcoLinux

開発していくと、ディスク容量不足になりがちだ。
ディスク容量不足になる人が多々いる事は、検索してみると分かる。
その対応策は、どれもこれも「ルートパーティションの容量増加」。

ディスク容量不足になった自分も、その作業をしそうになった。
しかし、容量不足の要因を冷静に考えてみた。

  • 容量が増えやすいポイントはどこなのか?
  • パッケージによる圧迫はどれくらいなのか?
  • 必要なポイントだけ増やせばいいのではないか?

自問自答。


必要とされているのは開発作業用ディレクトリ

日々成長し、膨れ上がって行くは開発用に使っているディレクトリ。
だったら、そこだけ増やせばいいじゃない

  • rootパーティションの容量不足対策
    • 作業用パーティションを作成し、作業データを移動すればrootパーティションの使用率を減らせる
    • rootパーティションはシステム領域に特化させる

作業記録

ディスクサイズ算出。
2Gもあれば十分だろう。

$ echo $((2 * 1024 * 1024 * 1024))
2147483648

ディスクイメージ作成

C:\> cd "C:\Program Files"
C:\> fsutil file createnew work_fs.img 2147483648

configにwork_fs.imgを追加

kernel=vmlinux
cobd0="C:\Program Files\coLinux\root_fs_new.img"
cobd1="C:\Program Files\coLinux\swap.img"
cobd2="C:\Program Files\coLinux\work_fs.img"
root=/dev/cobd0
ro
initrd=initrd.gz
mem=256
eth0=tuntap
cofs0=C:\

coLinux起動後、マウントポイント作成

$ sudo -s
# mkswap    /dev/cobd1
# mkfs.ext3 /dev/cobd2
# mkdir /mnt/work_fs

/etc/fstab設定

# vi /etc/fstab
# cat /etc/fstab

proc            /proc           proc    defaults        0       0
/dev/cobd0      /               ext3    noatime,errors=remount-ro 0       1
/dev/cobd1       none           swap    sw              0       0
/dev/cobd2      /mnt/work_fs    ext3    noatime,errors=remount-ro 0       1
cofs0   /mnt/windows    cofs    defaults        0       0

新しい領域を含めて再マウント

# mount -a

作業領域作成と引っ越し

# mkdir /mnt/work_fs/$(project)
# mv /opt/$(project) /mnt/work_fs/.

symlinkを張って論理的に同じディレクトリ構造に直す

# ln -s /mnt/work_fs/$(project) /opt/$(project)

まとめ

  • ルートパーティションはそんなに増えて行かないはず
  • 作業ディレクトリやログが成長していく
  • 必要な部分だけ増やせばいい


半袖 at 11:15|PermalinkComments(0)TrackBack(0)

2008年11月11日

.emacsをCodeReposで管理

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

CodeReposにはとにかく色々な物が登録されている

その色々な物の中にはホームディレクトリにおける各種ドットファイルがある。
個人的には.emacsを管理する程度で、他のドットファイルはほぼ初期状態のまま。

最近ではcoLinuxやXenなどに一時的な開発環境を構築する時が多々ある。
その度にメイン作業環境の.emacsをコピーする。これの繰り返し。



CodeReposで.emacsを管理し始めたエントリを幾つかあった事を思い出した

「とりあえず」と言うレベルでコミット。

まだまだ整理の余地がある。
まともにEmacs-Lispを書いた事がないな。
勉強したい事が沢山ある。



入門 GNU Emacs 第3版
入門 GNU Emacs 第3版
posted with amazlet at 08.11.11
Debra Cameron James Elliott Marc Loy Eric Raymond Bill Rosenblatt
オライリー・ジャパン
売り上げランキング: 70559


半袖 at 10:50|PermalinkComments(0)TrackBack(0)

2008年10月08日

Google Mapsで 住所検索かマーカーのドラッグ&ドロップで緯度・経度を取得

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

変更履歴

2008.10.08 19:45
  • ドラッグ&ドロップした場合に地図中心移動
  • 地図の左上、右下の位置情報追加
  • ズームレベルの変化追加

やりたい事

  • 住所検索するとマップを表示
  • マップ上のマーカーをドラッグ&ドロップ可能
    • マーカーが置かれているポイントの位置情報取得
    • マーカーが中心となるように地図を移動
  • 表示されている地図の右上と左上の位置情報取得
  • ズームレベルの変化

参考にしたページ

検証例

※rssリーダーでは地図が表示されません

マーカー位置情報
地図左上位置情報
地図右下位置情報
ズームレベル ->



半袖 at 14:55|PermalinkComments(0)TrackBack(0)

2008年09月28日

Office2007をインストールしたらキーボード配列が英語配列から日本語配列になってしまった

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

犯人はMicrosoft Office IME 2007


Office 2007をインストールすると、
何故かキーボード配列が日本語配列に戻ってしまった。

レジストリを確認してKBD106.DLLとなっている項目を探したら見つかった。
  • regeditを起動
  • 「\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\e0200411\Layout File」の値をKBD106.DLL から KBD101.DLへ変更
  • システム再起動
前回Officeをインストールした時は発生しなかった。
発生する条件が良くわからないな。


半袖 at 17:40|PermalinkComments(0)TrackBack(0)

WindowsXPでキーボード設定を日本語配列から英語配列へ変更する

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

次回作業する自分へのメモ


何度やっても忘れている
  • regeditを起動
  • それぞれKBD106.DLL から KBD101.DLへ変更
    • 「\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters\LayerDriver JPN」
    • 「\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layouts\E0010411\Layout File」


半袖 at 17:25|PermalinkComments(0)TrackBack(0)

2008年09月26日

コマンドラインで一ヶ月分のファイル名を作る

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

コマンドラインで連番のファイル名を作る から派生


月次の処理をしたい場合があるはず。
  • 一ヶ月分のファイル名を作る
  • 年と月を指定可能にする
こんな条件だと、コマン道ではこう書く。

$ year=2008; mon=10; for i in $(LC_ALL=C cal $mon $year | egrep -v '[a-z]'); do printf "access_log.%04d%02d%02d\n" $year $mon $i; done
access_log.20081001
access_log.20081002
access_log.20081003
access_log.20081004
access_log.20081005
access_log.20081006
access_log.20081007
access_log.20081008
access_log.20081009
access_log.20081010
access_log.20081011
access_log.20081012
access_log.20081013
access_log.20081014
access_log.20081015
access_log.20081016
access_log.20081017
access_log.20081018
access_log.20081019
access_log.20081020
access_log.20081021
access_log.20081022
access_log.20081023
access_log.20081024
access_log.20081025
access_log.20081026
access_log.20081027
access_log.20081028
access_log.20081029
access_log.20081030
access_log.20081031

分解して解説して行く


まずはcalコマンドの部分

$ year=2008; mon=10; LC_ALL=C cal $mon $year
    October 2008
Su Mo Tu We Th Fr Sa
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
LC_ALL=Cとして居るのは日本語表示されると都合が悪いからだ。
日本語だと「egrep -v '[a-z]'」で上手くフィルタ出来ない。

$ year=2008; mon=10; cal $mon $year | egrep -v '[a-z]'
     10月 2008
日 月 火 水 木 金 土
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

こうなる。
それに対し、LC_ALL=Cを入れると上手く行く。

$ year=2008; mon=10; LC_ALL=C cal $mon $year | egrep -v '[a-z]'
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

この通り。
数字だけ抜き出せた。



次はforループ

forのリスト部分は、改行かスペースを区切り文字として扱ってくれる。
whileとreadの組み合わせでは都合が悪い。

cal+egrepの結果をforのリストにする。

$ year=2008; mon=10; for i in $(LC_ALL=C cal $mon $year | egrep -v '[a-z]'); do echo $i; done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1日ずつ出て来た。




ループ内のprintf

あとはechoをprintfに変え、$yearと$monを含めて出力する。

$ year=2008; mon=10; for i in $(LC_ALL=C cal $mon $year | egrep -v '[a-z]'); do printf "access_log.%04d%02d%02d\n" $year $mon $i; done
access_log.20081001
access_log.20081002
access_log.20081003
access_log.20081004
access_log.20081005
access_log.20081006
access_log.20081007
access_log.20081008
access_log.20081009
access_log.20081010
access_log.20081011
access_log.20081012
access_log.20081013
access_log.20081014
access_log.20081015
access_log.20081016
access_log.20081017
access_log.20081018
access_log.20081019
access_log.20081020
access_log.20081021
access_log.20081022
access_log.20081023
access_log.20081024
access_log.20081025
access_log.20081026
access_log.20081027
access_log.20081028
access_log.20081029
access_log.20081030
access_log.20081031
出来上がり。



まとめ


  • calとegrepを組み合わせて日付リストを生成
  • forの特性を生かしてリストを分解
  • printfで出力を整形
さ〜て、Perlやzshではどう書くんだろうか?
ネタふりをしてみる。


半袖 at 20:20|PermalinkComments(0)TrackBack(1)

2008年09月25日

コマンドラインで連番のファイル名を作る

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

刺身さんのエントリが気になった


[Perl]Perl で連番のファイル名を作るより

seq とか jot とか、どっちがどっちか覚えられないし、 "001.txt" "002.txt" みたいに頭にゼロをつけることができるかどうかもよくわからないので Perl でやったほうが楽だ。
コマン道としては、こうかな。
printfコマンドを知っているかどうかがキモなのだと思う。

$ i=1; limit=13; while [ $i -le $limit ]; do j=$(printf "%03d" $i); echo access_log.200801$j; i=$(($i+1)); done
access_log.200801001
access_log.200801002
access_log.200801003
access_log.200801004
access_log.200801005
access_log.200801006
access_log.200801007
access_log.200801008
access_log.200801009
access_log.200801010
access_log.200801011
access_log.200801012
access_log.200801013
これは「access_log.$(printf "%03d" $i)」としても良い。
見づらいので上記例のようにした。


半袖 at 17:55|PermalinkComments(3)TrackBack(2)

2008年06月03日

apache2のabコマンドだけ欲しい

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

インストールは不要


webサーバのベンチマークを取得したくてabコマンドが必要となった。
  • 対象サーバにはapache2がインストールされてない
  • apache2のインストールは不要
  • abコマンドだけ欲しい
  • ビルドするサーバと同環境の他サーバでも実行可能状態としたい
$ wget httpd-2.x.x.tar.gz
$ tar zxvf httpd-2.x.x.tar.gz
$ cd httpd-2.x.x
$ ./configure --enable-static-ab
$ make
$ ldd ./support/ab
$ ./support/ab -h
あとはabコマンドを他サーバへ配布するだけ。



ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール
Steve Souders スティーブ サウダーズ
オライリージャパン
売り上げランキング: 252


半袖 at 14:40|PermalinkComments(0)TrackBack(0)

2008年05月15日

codereposのアカウント申請した

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

coderepos.orgで公開しよう


アカウントが発行されたらいくつか登録したい物がある。

さらして、叩かれて。
そして人は強くなる。

筋トレに近いものを感じる。



ところで


「CPAN」は「CPAN Author」であるように、
「coderepos」の人達の事をどうやって呼ぶのだろう。

これと言って特に無いのかな。


半袖 at 03:35|PermalinkComments(0)TrackBack(0)

2008年03月14日

私にはリスタートだったの。あなたにはシャットダウンでも。

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

サーバの診断


whois.hansode.orgのリバースプロキシ用サーバが先日異常終了した。
その後、不安定なプロセスが多発。その場しのぎの対応を続けていた。

このままじゃ駄目だ。

色々と捜査してみたら、犯人を特定出来た。
犯人を逮捕した後、再起動…しようとした。

$ sudo shutdown -h now

あれ…立ち上がってこない?
あ・・・!!



haltとrebootで


リブートのつもりで、
shutdownコマンドを-hオプション指定で実行していたのだ。

超凡ミス。
サーバの目の前で作業をしていたのが、不幸中の幸い。

即時halt、即時rebootの場合は、
haltとrebootを使うのが良いね。


半袖 at 12:50|PermalinkComments(2)TrackBack(0)

2008年02月24日

Ubuntuの起動が遅い。解決。

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

何故か起動に3〜4分かかる


ThinkPad T41にUbuntuをインストールした。
何故か起動に3〜4分かかっている。

ググってみたら同じ現象に遭遇している人を発見。
解決策を書いてくれたた。素晴しい。



ブートスプラッシュスクリーンの解像度を変更して黒い表示をなおそう!より


スクリーンの解像度問題だったようだ。
$ sudo vi /etc/usplash.conf

xres=1024
yres=768
$ sudo update-initramfs -u -k all

起動が早くなった。
快適。


半袖 at 22:35|PermalinkComments(0)TrackBack(0)

2008年02月15日

影舞では機種依存文字を使うな。使うとfeed出力時にエラー発生。

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

feed出力時にエラーが出てた


理由は「機種依存文字」が混入していたからだ。
使われていた機種依存文字は「数字」。

ゴリっと一撃一発置換で対応して完了。
影舞に限らず、機種依存文字は積極的に使わない事だ。

影舞


半袖 at 10:25|PermalinkComments(0)TrackBack(0)

2008年01月21日

おじいちゃんサーバに渇!200万エントリのテーブルに「ALTER TABLE」

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

ALTER TABLE


mysql> alter table whois modify ......;
Query OK, 2038362 rows affected (1 hour 19 min 8.65 sec)
Records: 2038362  Duplicates: 0  Warnings: 0
固まってるのかと心配になるくらい待たされた…。


半袖 at 23:10|PermalinkComments(0)TrackBack(0)

2008年01月18日

1ヶ月分の日付を出力するコマンド

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

例えば「2008/01」のリストを出力。
月間レポートスクリプトを書く時などに使える。


$ export LC_ALL=C
$ year=2008; mon=1; for day in $(cal ${mon} ${year} | egrep -v '[a-z]'); do printf "%04d%02d%02d\n" ${year} ${mon} ${day}; done
20080101
20080102
20080103
20080104
20080105
20080106
20080107
20080108
20080109
20080110
20080111
20080112
20080113
20080114
20080115
20080116
20080117
20080118
20080119
20080120
20080121
20080122
20080123
20080124
20080125
20080126
20080127
20080128
20080129
20080130
20080131


半袖 at 15:40|PermalinkComments(0)TrackBack(0)

シェルスクリプトで相対パス指定したファイルを絶対パスへ変換する

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

絶対パス


$ cat abspath.sh
#!/bin/sh

echo $(cd $(dirname $0) && pwd)/$(basename $0)
$ ./pwd.sh
/home/user/hansode/pwd.sh
$ ../hansode/pwd.sh
/home/user/hansode/pwd.sh
$ /home/user/hansode/../hansode/pwd.sh
/home/user/hansode/pwd.sh



使い所


「$(cd $(dirname $0) && pwd)」をウマク利用してファイルをインクルード。

$ cat abspath.sh
#!/bin/sh

absdir=$(cd $(dirname $0) && pwd)
. ${absdir}/../etc/common

command foo bar ...
プロジェクトディレクトリごと移動してもスクリプトは動くようになる。
どのディレクトリに配置しても良い訳だ。自分はこれを良く使う。


半袖 at 15:25|PermalinkComments(0)TrackBack(0)

2007年12月19日

おじいちゃんサーバのチューニング「Hypere Straier」

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

おじいちゃんの血圧が高い

「おじいちゃんサーバ」のload averageが2.0前後をうろちょろしている。

原因を調査してみると、estmasterがメモリを使いまくっている事が分かった。
物理メモリだけでなく、スワップもまた使っている。

おじいちゃんの記憶力

$ egrep '^MemTotal|^SwapTotal' /proc/meminfo
MemTotal:       515732 kB
SwapTotal:      995988 kB
大分古いマシン。
2ヶ月前くらいにメモリを128Mから512Mへ増やした。

緊急オペ

キャッシュサイズを少なくすると改善しそうだ。
昨夜、緊急オペをする事にした。

手術内容は下記の通り。
$ cd /var/lib/hyperestraier/estmaster/; pwd
/var/lib/hyperestraier/estmaster
$ sudo cp -pi _conf _conf.0
$ sudo vi _conf
$ diff _conf.0 _conf
62c62,63
< scalepred: 2
---
> #scalepred: 2
> scalepred: 3
87c88,89
< cacheanum: 8192
---
> #cacheanum: 8192
> cacheanum: 4096
90c92,93
< cachetnum: 1024
---
> #cachetnum: 1024
> cachetnum: 512
93c96,97
< cachernum: 256
---
> #cachernum: 256
> cachernum: 128
$ sudo /etc/init.d/hyperestraier restart

手術後の経過

今朝の血圧を測ってみた。
1.0以内で落ち着いている。手術成功だ!

老体にはキャッシュを少なくするのが良い様だ。


半袖 at 10:10|PermalinkComments(1)TrackBack(0)

2007年12月11日

WebGenBot/1.0 (http://www.webgen.co.jp/bot/)

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

アクセスログを観察していたら変なbotに気付いた

何だこれ
"WebGenBot/1.0 (http://www.webgen.co.jp/bot/)"
何ものか知るために「http://www.webgen.co.jp/bot/」へアクセスしてみた。
すると…
「404 Not Found」
何だそれ。。。

半袖 at 11:20|PermalinkComments(1)TrackBack(0)

2007年10月02日

Mewのsummaryモードのキーバインドが変わった?「<」と「>」

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

■失って気付く…

キーバインドが変更されていて<と>を多様していた事に気付いた。
多用していたがゆえに、戸惑いを覚えている…。

自分は毎日「cvs update」して最新版を取得している。


▼以前
・< Summaryモードの一行目
・> Summaryモードの最終行

▼現在
・< Messageモードの行頭
・> Messageモードの行末
▼混乱時…

・Messageモードが80文字以上だと <と> の挙動に気付くけど、
・Messageモードが80文字以下だと <と> の挙動に気付かない。

 『あれ…?何も起きないぞ?』



■対策

おとなしく、Emacsのキーバインドで対応するか。
直ぐに慣れるはずだ。


▼今後
・Esc-<
・Esc->
Escはキーボードの隅っこで遠いので、
普段は「Ctrl-[」を愛用している。


半袖 at 10:30|PermalinkComments(0)TrackBack(0)

2007年09月27日

sedを使い、最初の空行を境界としてヘッダーとボディを抜き出す方法

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

■例えばメールのヘッダーを抜き出したい

メールやHTTPのデータで、
ヘッダー部分だけ抜き出したい時がたまにある。

さてどうする?






■コマンドで何とかしよう

自分はこうする。

▼ヘッダー
$ sed -n '1,/^$/p' [filename]
$ [command] | sed -n '1,/^$/p'
▼ボディ
$ sed    '1,/^$/d' [filename]
$ [commmand] | sed    '1,/^$/d'
これで解決

半袖 at 17:35|PermalinkComments(0)TrackBack(0)

2007年08月27日

今更ながらGoogle Toolbarをインストール

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

Google Toolbarをインストールした。

理由は1つ。
半袖blogのページランクを確認してみたかったからだ。

インストール後、早速確認。
結果は…4/10

個人blogではこんなものなのだろう。


半袖 at 23:00|PermalinkComments(0)TrackBack(0)

2007年07月23日

webログ解析ツール『visitors』

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

アクセス六本木のジータさんが使っていたvisitorsをホゲってみている。



■特徴的な部分だけツマミ食い

▼レポート情報
・時間帯アクセスの増減を色の2次元マトリクスと色の濃厚で表現
・時間帯アクセス同様に、日別アクセスも色の濃厚で表現
▼Graphviz によるグラフ生成
・これは他に無い
▼リアルタイム集計
・『$ tail -f accesslog | visitors --stream ...』と言う事が可能


■足りない機能
・接続元の排他処理
 ・ここはegrep等でなんとかする
・URIの同一視
 ・/foo?args=1 と /foo?args=2 を同一視したい場合
 ・これもgrepやsedなどのフィルタでなんとかする


■まとめ
・足りない所はvisitorsのラッパーをシェルスクリプトで書く
・適材適所。臨機応変に解析ツールを使い分ける。



visitorsはまだ開発途中と言う所だろうか。
今後の機能追加に期待したい。


半袖 at 11:45|PermalinkComments(0)TrackBack(0)

2007年07月21日

ユーザーのストレス軽減策

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

あいまい空きドメイン名検索 『rickdom』 を改良の続き
バックエンドの改良をした後、見える部分をカイゼンしてみた。


■概要:『検索中である事を見える化』

▼カイゼン前
・以前は検索中だと『...』を表示していた
・これだと検索中なのかがイマイチ分かり辛い

▼カイゼン方法
Ajax Loading Gif Generatorでグルグル回るGifを生成
・検索中に表示していた『...』をグルグルGifへ変更

▼カイゼン後
・レスポンスタイムが短くなったわけではない
・検索中であることを見える化する事によりユーザーのストレス軽減


半袖 at 15:40|PermalinkComments(0)TrackBack(0)

2007年07月04日

rmコマンドの i オプションで yeah!!!

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

いつもは'y'を使う

勢い余って yy と答えてしまったのに、ファイルが消えていた。
yeah!!!でもファイルは消えてくれた。


$ ls -l nagasode
ls: nagasode: そのようなファイルやディレクトリはありません

$ :&glt; nagasode
$ ls -l nagasode
-rw-r--r-- 1 hansode hansode 0 2007-07-04 14:52 nagasode

$ rm -i nagasode
rm: remove 通常の空ファイル `nagasode'? yeah!!!!!

$ ls -l nagasode
ls: nagasode: そのようなファイルやディレクトリはありません


このように、長袖は削除された。


半袖 at 14:55|PermalinkComments(1)TrackBack(0)

2007年06月08日

svn via http

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録


▼env.
OS : Debian GNU/Linux 4.0
repos : debu
trac : /home/svn/tracs http://svn.example.com/trac/debu/
svn : /home/svn/repos http://svn.example.com/repos/debu/

▼subversion
# apt-get install subversion
# mkdir /home/svn
# cd /home/svn
# mkdir repos
# svnadmin create /home/svn/repos/debu
# chown -R www-data /home/svn/repos

▼trac
# apt-get install trac
# cd /home/svn
# mkdir tracs
# trac-admin /home/svn/tracs/debu initenv
# chown -R www-data /home/svn/tracs/debu

▼apache2, apache2-modules
# apt-get install apache2 libapache2-mod-fcgid libapache2-svn
# a2enmod fcgi rewrite
# /etc/init.d/apache2 force-reload
# htpasswd -c htpasswd $(username)

▼apache namevirtual
# cd /etc/apache2/sites-available
# cat > svn.example.com
--------------------------------------------------
<VirtualHost *>
ServerName svn.example.com
DocumentRoot /home/svn/tracs

Options -Indexes
RewriteEngine On

<IfModule mod_fcgid.c>
DefaultInitEnv TRAC_ENV_PARENT_DIR /home/svn/tracs
</IfModule>
ScriptAlias /trac /usr/share/trac/cgi-bin/trac.fcgi
RedirectMatch ^/$ /trac/

<Location /repos>
DAV svn
SVNParentPath /home/svn/repos
</Location>

<Location />
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /home/svn/htpasswd
Require valid-user
Order Deny,Allow
Deny from All
Allow from 192.0.2.0/24
</Location>
</VirtualHost>
--------------------------------------------------
# /usr/sbin/a2ensite svn.example.com
# /usr/sbin/apache2ctl configtest
# /etc/init.d/apache2 reload
----------------------------------------------------------------------



半袖 at 10:25|PermalinkComments(0)TrackBack(0)

2007年05月19日

おじいちゃんサーバとの付き合い方

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

一番身近な開発サーバは、今となってはお爺ちゃんマシン。


▼スペック
HDD: 40G
CPU: PentiumIII 550MHz
Mem: 256M
Swap: 1024M

ガッツリと瞬時に処理させたいのに、老体には急な運動がキツイ。
老体とのやり取りをして数年。付き合い方は経験で分かって来る。


▼今回過負荷原因
spamd(SpamAssassin)
利便性、運用、ベイズDB管理を考慮し、spamd-rw,spamd-roとして
2つのspamdを立ち上げている。spamメールを4万通を学習させよう
としたら、著しくパフォーマンスが低下。


▼老体と上手く付き合う
・メールの登録処理には1通登録したら sleep 3 を入れる
・spamd-rwはniceを使って優先度を下げる。『nice -19』で落ち着いた。
・一度に大量のメールを登録しない。目安は100エントリ。その後にsleep 60。
・MRTGでサーバ負荷統計を定期的に観察
・時々spamcの処理中、無呼吸(spamd-rwが無反応)になるのでtimeout処理を入れる


▼老体を苛め過ぎると…
メモリ不足になる

Swapを使い始める

I/O負荷が急上昇

パフォーマンス急低下

呼吸困難となり、意識レベルが低過ぎるお爺ちゃん。


▼まとめ
・急激な運動は避ける
・適度な休憩を入れる


自分の期待に応え続けるおじいちゃんサーバ、まだまだ頑張って下さい。
若者サーバとばかり接する人には関係の無い話。

こう言う窮屈な環境はチューニングを意識させられるので大事だ。


半袖 at 12:35|PermalinkComments(0)TrackBack(0)

2007年04月25日

cfengine NAT環境下・DHCP環境でcfagentを使う時のメモ

livedoorClipに登録 livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

・cfengineはcfservdとcfagentが鍵交換をする
・鍵ファイルの命名規則は $(ユーザー名)-$(IPアドレス).pub

NATやDHCPだとcfagentが起動しているサーバは別なのに、
cfservdにはIPアドレスを同一視され、鍵が重複する可能性あり。
実際、この状況に遭遇している。

この状況を打開する方法が無いか、リファレンスを眺めていたら発見。

http://www.cfengine.org/docs/cfengine-Reference.htmlより

5.1.18 DynamicAddresses

Hosts which are included in this list are assumed to have
IP addresses which can change with time, e.g. hosts which
are given IP addresses by DHCP or a BOOTP like protocol.

control:

DynamicAddresses = ( 128.39.74.100-200 ) # DHCP range


If cfservd receives a connection from an IP address that is
in this list, and trustkey is true, the existing key for that
IP address can be replaced with a new key, and the old key is
recorded in a "used keys" list, access is granted. If trust is
switched off, the server looks in the "used key list" to see
if the key has been seen before. If not access is refused.
If it has been seen before – it uses this earlier trust to accept
the connection and replace the IP-key binding. Note that used
keys are kept in a database for easy lookup, whereas fixed keys
are kept in files for easy administration. If host keys change or
are reinstalled on the dynamically allocated hosts, then this
database should probably be deleted to purge keys that become
illegal.

DHCP addresses have no effect on hosts that use IPV6, since
IPV6 addresses are generally issued based on an interface
MAC address and do not therefore change.


なるほど。


▼ゲートウェイが192.0.2.1となる場合
/etc/cfengine/cvservd.conf

control:
domain = ( example.org )
AllowConnectionsFrom = ( 192.0.2.1 )
TrustKeysFrom = ( 192.0.2.1 )
DynamicAddresses = ( 192.0.2.1 )
AllowUsers = ( root )


update.confやcfagent.confで trustkey=true を指定すると
NAT環境下で期待する動作をしてくれた。


半袖 at 10:50|PermalinkComments(0)TrackBack(0)