WeBlowg Side


<< < 1 2 3 4 5 6 > >>
2008-05-11 Sun 21:09

Gentoo の起動時間測定と高速化

Gentoo 

今月のGentoo Monthly NewsletterのTips and Tricksで起動時間の高速化と測定についての話題がありました。
PCはつけっぱなしの事が多いけど、興味があったので試してみました。

起動時間の測定ってのは思ったより簡単で、以下の手順でできちゃいます。
1.Bootchartのインストール
2./etc/conf.d/rcの編集
3.bootchartコマンドで解析
手順2は他のディストリビューションではgrub.confをいじらないといけないみたい。

まず起動時間を測定するには Bootchart をインストールする必要があります。
emerge bootchart

Bootchartで起動時間の測定を行うには/etc/conf.d/rc を編集します。
RC_USE_BOOTCHART="yes"
これで起動を行うと /var/log/bootchart.tgz が作成されます。
このファイルをbootchartコマンドで解析します。
bootchart
カレントディレクトリにイメージファイル、bootchart.pngが作成されます。
測定結果は下のイメージのようになりました。


さて、次は高速化の手順です。高速化を行うために今回は以下の設定を行います。
  • サービスの起動を並列化
  • 起動時のkernelのメッセージを抑止

サービスの起動を並列化を行うために/etc/conf.d/rc を編集します。
RC_PARALLEL_STARTUP="yes"
次に起動時のkernelのメッセージを抑止するために/boot/grub/grub.confを編集します。
kernel (hd1,0)/boot/bzImage-fb root=/dev/hdb3 video=radeonfb:1024x748 quiet

これらの設定で起動時間が43秒から40秒になりました。たった3秒。。。。。
いままで「ベンチマーク」ってのはあまりとったことがなかったけど(前職でベンチマークみたいな事ばっかりやってたからその反動か?)、
測定して検証する理系の実験みたいなアプローチはなかなか楽しかった。
結局劇的な高速化は実現できなかったけどね。
comment (0)
2008-04-24 Thu 07:17

Wicket In Action Chapter7読了

Wicket 

Wicket In Action Chapter7を読了した。
Chapter6のコンポーネントに引き続き、
Chapter7ではFormで使用するコンポーネント群について詳しく説明されています。

動的なWebアプリを作るには欠かせないFormに関連して、
データをチェックするValidaterについての説明も充実しています。
必須チェックやLengthチェックはもちろん、
EmailアドレスやURLをチェックする、EmailAddressValidatorやUrlValidatorの存在は知りませんでした。

Emailアドレスのチェックもこんなに簡単。
add(new TextField("email").add(EmailAddressValidator.getInstance()));
内部的には正規表現でチェックする単純なものだけど。
この章もChapter6同様、リファレンス的に使うに重宝しそうです。

あと、Redirect-After-Postについて。
恥ずかしながらRedirect-After-Postってのは知りませんでした。

Redirect-After-Postってのは、名前の通りPostした後にRedirectさせることで、
例えば掲示板とかで投稿したあとに更新ボタンをおしても、
「再送信しますか・・・」等のメッセージがでなくなるようになります。
Wicketはこの仕組みも備えています。

Redirect-After-Postについては他に利点や問題があるのか要調査です。

Wicket in Action Table of Contents
Part 1 Getting started with Wicket
1. What is Wicket?
2. The architecture of Wicket
3. Setting up a Wicket project
4. Building a cheesy Wicket application

Part 2 Getting a basic grip on Wicket
5. Understanding models
6. Using basic components
7. Using forms for data entry
8. Composing your pages

Part 3 Advanced Wicket
9. Creating custom components
10. Creating rich components
11. Authorization and authentication
12. Working with resources
13. Localization and internationalization
14. Database driven applications
15. Putting your Wicket application in production
16. Component index

comment (0)
2008-04-16 Wed 06:33

Wicket In Action Chapter6読了

Wicket 

またまた間が空いてしまったが、Wicket In Action Chapter6を読了した。
この章は様々なコンポーネントについての説明に終始してます。

どれも大抵のWebアプリを作る上では必須のコンポーネント群なので、
Wicketを軽く触ったことがある人なら、そんなに難しい章ではないと思います。
「どうだったっけ?」と後からリファレンス的に使うには、この章は特に重宝しそうです。

各コンポーネントの説明だけではなく、
AttributeModifierやonComponentTagでタグの属性を操作する方法も大変参考になります。
タグの属性までJavaだけで操作できちゃうってのは、Wicketの大きな魅力ですね。

だいたい知ってるコンポーネント群の中で、<wicket:encluser>は知らなかった。
このタグで囲った部分は、child属性で指定した値が空の場合は表示されない機能。
 <wicket:enclosure child="firstName">
 <tr><th>FirstName</th><td wicket:id="firstName"></td></tr>
 <tr><th>LastName</th><td wicket:id="lastName"></td></tr>
 </wicket:enclosure>
さらに<wicket:container>も知らなかった。
こちらはsetRenderBodyOnly(true)としなくても、タグの出力を抑制してくれる。

それにしても、この前知った<wicket:remove>とか、wicketのタグって随分増えたなぁ。

Wicket in Action Table of Contents
Part 1 Getting started with Wicket
1. What is Wicket?
2. The architecture of Wicket
3. Setting up a Wicket project
4. Building a cheesy Wicket application

Part 2 Getting a basic grip on Wicket
5. Understanding models
6. Using basic components
7. Using forms for data entry
8. Composing your pages

Part 3 Advanced Wicket
9. Creating custom components
10. Creating rich components
11. Authorization and authentication
12. Working with resources
13. Localization and internationalization
14. Database driven applications
15. Putting your Wicket application in production
16. Component index

comment (0)
2008-04-14 Mon 06:42

Eclipse Europaを試してみた

Java 

ずいぶん前にリリースされてた Eclipse の新バージョン Europa を試してみた。

まずは Windows上で試してみた。
うちの環境ではeclipse.iniファイルのlauncher.XXMaxPermSizeを256Mから128Mへ変更しないと動かなかった。
 --launcher.XXMaxPermSize
 128M

うちのLinuxマシンではeclipse.iniファイルの編集は必要なかった。

さて、うれしい点は
  • Emacsキーバインドで Ctrl-l が標準で使えるようになってる
  • Ctrl + ALt + rでの変数リネームのリファクタリングが便利
  • ソースが存在しないクラスファイルの表示がましになった

不便な点は、Spell Checkがうっとうしいって所。これは設定で無効に出来るからまだいい。
次に Quick Junitの Europa Versionがないって所。設定メニューがでてこない。
あと、エディタを最大化した場合にコンソールビュー等が自動で表示される。
各ビューに何か変化があった場合に、最前面に表示させる機能なんだけど、
これは無効にしたい。設定方法はないんだろうか?

今の所、Europaに乗り換える決定的な要因は残念ながらなかった。
それだけ使いこなせていない & 開発環境として成熟しているってことでしょう。
ただ、環境変えると使ってないPlug-inの整理をするいい機会になっていいですね。
結局Subversion Plug-in の Subclipse しかいれてません。
おかげでだいぶ軽くなりました。
comment (2)
2008-04-12 Sat 10:22

プログラマは入力を信じちゃいけない

etc 

「プログラマは入力を信じちゃいけない」って言葉は、私がこの業界に入りたてぐらいの頃に、
フリーランスをやってらした方がくれた言葉。
それから4年たった今でも、プログラムを組むときにはこの言葉を良く思い出します。

ここ数日、このブログが不安定でした。
RSSの出力もめちゃくちゃだったので、RSSリーダーで購読してくださっている方、
ご迷惑をお掛けしまいた。すいません。

どうして不安定だったかというと、日付解析の処理部分でロケールが正しく考慮できていなかったためでした。
開発機のロケールと、本番機のロケールが合っていなかったので、なかなか手こずりました。
入力チェックを丁寧にやっておけば、
ログの出力をもうちょっと丁寧に作り込んでおけばよかったと反省しています。

自戒の意味もこめて、私が考えるプロのプログラマとは。
  • 入力を信じちゃいけない(入力チェック)
  • 障害発生時の事を考える(ログとか例外処理)
  • 想像力はたくましく
これらの事をきちんと考えるのが、プロのプログラマだと私は考えてます。

反省、反省。
comment (0)
2008-04-06 Sun 10:05

ショートカットキーも便利!見直しましたよ、Firefox del.icio.us plugin!

etc 

del.icio.us Firefox extension v1.5が激しく便利な件 につられて試してみた。
ダウンロードはこちらから del.icio.us bookmarks 1.5

実は、一番最初に試したソーシャルブックマークは del.icio.us でした。
その後、 Google Bookmark へ浮気した経緯があります。
Googleツールバーから各Bookmarkへのアクセスが非常に洗練されてたっのが理由です。
del.icio.usがいちいちWebページにBookmarkを表示させてアクセスしないといけなかったのが、
なんともまどろっこしかったんです。

ショートカットキーも充実してます。
この操作性はキーボードショートカット大好きっ子にはたまりません。
  • Ctrl + b でサイドバーに Bookmarkを表示
  • Ctrl + d で見ているページをBookmark
さらに Auto Hide の機能を有効にすれば、使い勝手はさらに上がると思います。
Auto Hide は、Bookmarkをクリック後は、サイドバーを自動的に隠してくれる機能です。
Auto Hideの 有効/無効は、サイドバーの右上にある青いボタンでできます。

今回感心したのが、Google Bookmark も del.icio.us も、データの import/export が自在に行える点。
ユーザーとしては、いい機能があるサービスに気軽に乗り換えれます。
このまま囲い込みなんかせずに、切磋琢磨してくれれば、ユーザとしてはホクホクです。

comment (0)
2008-04-05 Sat 06:48

大規模開発を終えて

job 

去年の夏頃から参加してた大規模開発の案件がようやく終了した。
その前の案件が4人程の小規模開発だったので、思う所もいろいろあった。
そういえば「小規模と大規模を繰り返し経験するのがいいよ」って聞いたことがあります。

さてさて、大規模開発を終えてみて、、、、
悪い点
  • 政治に走る人が出てくる
  • 当たり前だけど小回りきかない
  • 保身に走ってしまう
良い点
  • いろんな観点からの意見がでてくる
  • きっちりゴールが示せればパワーは絶大!
「保身に走ってしまう」っていうダークサイドには自分も随分引きずられた気がする。
反省。

今回思い知ったのは、
  • ソースレビュー重要
  • バグトラッキングシステム便利!
ゴリゴリソースを書くことがあまりなかったけども、
暇があれば人のソースはチェックしまくった。
本当は公にソースレビューとかできればいいんだけど、
この業界お得意の「タイトなスケジュール」でできなかった。
大規模だと様々なスキルレベルの人がいて、もちろんレベルの低い人もいる。
Stringの比較を == でやっちゃってるなんてザラにある。
まぁそこまでひどいのは置いといても、言語仕様に照らし合わせるだけどもおかしなところは、
結構発見できるし、それで救われた所も大きかった。ソースのチェックは非常に有用ですね。
あと、ソースのチェックをする上で、EclipseのPlugin、FindBugsは必須ですね。

あと、今回、バグトラッキングシステムの威力を思い知った。
タスクがわかりやすく割り当てられるんで、いちいち仕事を振らなくても、
各人が自主的に動きやすい。
今後のプロジェクトでは大小問わず導入を検討してみます。
comment (6)
2008-04-04 Fri 07:02

Wicket in Action chapter5 読了

Wicket 

Wicket In ActionのChapter5を読了した。
この章ではWicketの重要な概念のひとつ、Modelについてふかーく解説されています。
特に下記のModelについての詳しい解説がありました。
  • PropertyModel
  • CompoundPropertyModel
  • BoundCompoundPropertyModel
  • LoadableDetachableModel

PropertyModelからCompoundPropertyModelへとコードを修正するにしたがって、
コードが簡潔になっていく過程をみることができ、たいへん参考になります。
そして、Serializable Errorの解決策のひとつとして、LoadableDetachableModelが登場。
DBを絡めたときに、表示の度に値をとってくるような実装が必要かと思います。
そんなときはLoadableDetachableModelを使うことになると思いますので、この章は必見です。

PropertyModelやCompoundPropertyModelは属性値を文字列でとってきます。
例えばこんな感じ。
setModel(new CompoundPropertyModel(hogeBean));
add(new Label("hoge"));
これだけでhogeBeanにある hoge という属性値をとってきてくれるんで便利です。
ただ、属性の名前が変わった時等、このStringで指定されている部分についてはリファクタリング時に問題があります。
なので、私はPropertyModel系はあまり使ってないです。
その解の一つとしてBoundCompoundPropertyModelがあるんですけど、これも完璧な解とは言えないですし。


Wicket in Action Table of Contents
Part 1 Getting started with Wicket
1. What is Wicket?
2. The architecture of Wicket
3. Setting up a Wicket project
4. Building a cheesy Wicket application

Part 2 Getting a basic grip on Wicket
5. Understanding models
6. Using basic components
7. Using forms for data entry
8. Composing your pages

Part 3 Advanced Wicket
9. Creating custom components
10. Creating rich components
11. Authorization and authentication
12. Working with resources
13. Localization and internationalization
14. Database driven applications
15. Putting your Wicket application in production
16. Component index

comment (0)
2008-03-30 Sun 10:31

SSHを使いこなせてません - keychainを使ってみよう

Gentoo 

ssh(1)を使い倒す
sshを使いこなしていないひとを見るとイラっとする。パスワード認証大好き(もう21世紀ですよ)、
パスフレーズ入れるのが面倒(keychain使えよ)、放っといたssh接続が切れて「また切れた!」(screen使えよ)とか。
すいません、使いこなせてませんでした。
3台のサーバにSSHで接続したり、そもそもこのBlogはEmacsのTrampでssh接続して書いているというのに。

どう使いこなせていなかったかというと、ssh-agentとkeychainを導入してませんでした。
毎回パスフレーズをいれてたわけですな。
よく調べもせずに、セキュリティ的に大丈夫なのか不安だったので導入していませんでした。
マシンが一台増え、cron + rsync + sshでバックアップをとることにしたんで、良い機会なんで調べてみました。

まずはssh-agent と keychainがどういう物なのかから。
1.ssh-agentは一度パスフレーズを入力したら、ログインしている間はパスフレーズの入力が省略できる機能。
2.keychainは一度パスフレーズを入力したら、システムが再起動するまでパスフレーズの入力が省略できる機能。
と理解しました。

「keychainはアカウントをとられたら終わり?」という疑問から敬遠してましたが、
IBMの資料にある --clear オプションで不安もやわらぎました。
--clear オプションは新たなログインがあった時に、キャッシュをクリアするオプションです。
例えば SSH経由のrsync によるバックアップを毎晩cronに仕込んで置いた場合、
cronはログインはしないので、キャッシュされたSSH接続を使うことができます。
アカウントを奪われログインされた場合は、ログインした瞬間にSSH接続がクリアされるので、
他のマシンへパスフレーズの入力なしで接続される事はありません。

というわけで、keychainをインストールして、下記の内容を~/.bash_profileに追加。
 #!/bin/bash
 #on this next line, we start keychain and point it to the private keys that
 #we'd like it to cache
 /usr/bin/keychain ~/.ssh/id_rsa ~/.ssh/id_dsa
 source ~/.keychain/example.com-sh

これで一度ログインしてパスフレーズを入力しておけば、cronからもパスフレーズなしでSSH接続出きるようになります。
後は再起動時に忘れずにログインするような仕組みを作ればOK。
この仕組みはみんなどうやって実現してるのかな?
comment (0)
2008-03-28 Fri 22:33

Linuxで省電力モード(スタンバイモード)に挑戦

Gentoo 

最近はついついデスクトップPCの電源をつけっぱなしにしてしまってます。
emerge仕掛けて出勤したり、嫁がちょこちょこmixiとかやってるみたいなんで。
電源を切るってのはなかなかめんどくさいので、せめて休止モードを試してみる事に。

一言で休止モードといっても、色々あるみたい
  • Standby (S1)
  • Sleep (S3) suspend to ram
  • Hibernate (S4) suspend to disk

まず、BIOSがサポートしているかを確認したところ、Standby (S1) しかサポートしていない模様。
我が家のマザーボード(ECSの748-A)は2003年に購入したものなんですが、古いってことか。。。
作業内容をメモリやディスクに保存してCPUの電源を切れるS3,S4に比べてS1は省電力は劣るけど、
ないよりはましという事で、設定してみた。

まずはKernelの再構築から
Power management options  --->
 [*] Suspend to RAM and standby
standbyモードに移行するには下記のコマンドを打つ
 echo -n "standby" > /sys/power/state

acpidが動いていると、うまく復帰できなかった。原因は調査中です。
comment (0)



最近のコメント
tma
Saxman
Saxman
tma
Saxman

最近のエントリー
Gentoo の起動時間測定と高速化
Wicket In Action Chapter7読了
Wicket In Action Chapter6読了
Eclipse Europaを試してみた
プログラマは入力を信じちゃいけない