2006年 6月 28日 水曜日
やっぱり Sun がスキ!
zenity
zenityで簡単GUIプログラミング
最新のGnomeデスクトップを使っていても古いUnixユーザーはすぐにターミナルエミュレータを開いてしまいがちです。エディターなどもコントロールキーを駆使し、マウスに手を伸ばすのが面倒くさいなどと豪語しますが、rmコマンドで誤ってファイルを削除し、ゴミ箱から取り戻せずに後悔なんかしたりします。確かにコマンド入力に慣れていればちょっとしたシェルスクリプトで簡単に作業効率を上げられますし、ログを残しておけばトラブル時の対処もスムーズです。しかし決してGUIが嫌いなわけではなく、とにかくGUIプログラミングが面倒くさいだけなのです。シェルスクリプトの延長で簡単に GUIを使えれば・・・そんなとき zenity はいかがでしょうか。
zenity は Gnome についてくる、ダイアログウインドウを表示するコマンドです。普通のコマンドなのでシェルスクリプトにも簡単に組み込むことができます。現在次のようなダイアログが使えます。
カレンダ・ダイアログ
zenity --calendar [--height=height] [--title=title] [--
width=width] [--window-icon=path] [--date-format=format] [-
-day=number] [--month=number] [--text=text] [--year=number]
一行文字列入力ダイアログ
zenity --entry [--height=height] [--title=title] [--
width=width] [--window-icon=path] [--entry-text=text] [--
hide-text] [--text=text]
エラー(情報/質問/警告)表示ダイアログ
zenity --error | --info | --question | --warning [--
height=height] [--title=title] [--width=width] [--window-
icon=path] [--text=text]
ファイル選択ダイアログ
zenity --file-selection [--height=height] [--title=title]
[--width=width] [--window-icon=path] [--filename=path] [--
multiple] [--separator=character]
リスト表示選択ダイアログ
zenity --list --column=text [--height=height] [--
title=title] [--width=width] [--window-icon=path] [--
checklist] [--editable] [--radiolist] [--
separator=character]
プログレスバー・ダイアログ
zenity --progress [--height=height] [--title=title] [--
width=width] [--window-icon=path] [--auto-close] [--
percentage=number] [--pulsate] [--text=text]
テキスト表示ダイアログ
zenity --text-info [--height=height] [--title=title] [--
width=width] [--window-icon=path] [--editable] [--
filename=path]
例えばカレンダ・ダイアログを表示してみます。
% zenity --calendar

日付を選んで「了解」をクリックすると標準出力にその日付を出力して終了します。
% zenity --calendar 06/19/06 %
一行文字列入力ダイアログは入力文字を隠してパスワード入力に使うこともできます。
% zenity --entry --hide-text --text="パスワードを入力してね"

% zenity --entry --hide-text --text="パスワードを入力してね" !mypasswd %
サンプルプログラムとして、指定したファイルを zip 圧縮するツールを作ってみました(あまり便利とは言えませんが)。
#!/bin/sh
FSEL=`zenity --file-selection`
if [ -z "${FSEL}" ]
then
exit
fi
cd `dirname $FSEL`
SRC=`basename $FSEL`
DST=`basename $FSEL|tr '.' '_'`
zip -r $DST $SRC
/bin/rm -f $SRC
zenity --info --text="$FSEL を圧縮しました"
ファイル選択ダイアログで選んだファイルを zip 圧縮し、完了時に情報ダイアログを表示します。
本格的なプログラムを作るにはまだまだ物足りないものがありますが、工夫次第ではいろいろつかえると思います。是非試してみてください。
Posted at 05:35午後 6 28, 2006 by masahiko in Sun | 投稿されたコメント[0]
secondhand
Sun の中古製品市場 in 秋葉原
最近のSun サーバのラインアップは UltraSPARC-III 以降の製品に置き換わって おりますが、昔懐かしい SPARC マシンや激安商品を見つけに秋葉原の中古屋を探 索してみました。
まずはジャンクパーツが置いてあるお店へ。
ここのお店の目玉は Ultra 60 で使える CPU。段ボールにゴチャゴチャ入った状態で
Ultra SPARC-II の CPU が300MHz 680円 とか 360MHz 980円で売ってました。
(うーん、安いけど本当に動くのかは不安...)
その他、懐かしのSun PCI ボードが大幅ディスカウント 4,000円 で置いてありましたし、
本命のサーバに関しては、Ultra 10 (440MHz/512GB mem) が 9,800円とこれも安い価格。
さすがジャンク屋という感じで、あやしい雰囲気を出しつつ激安製品を売っていました。
次のお店はSunの中古サーバが結構置いてあるお店へ。
こんな風に古いサーバが無造作に積まれて売っています。
中でも掘り出しものは SPARCstation Voyager (micorSPARCⅡ-60 MHz) が 12,800円 で
売ってました。このマシンは1995年に発表されまして、当時液晶ディスプレイ一体型の
本体も魅力的でしたが、私はこれに付いているショートキーボードが好きでした(ちょっ
と感動)。部屋のインテリアとしてもさまになると思っているのは私だけでしょうか?
左下の写真は Voyger と斜めになっているのは Cobalt です。あと、レア物の Sun Screen
(19,800円)も山に埋もれてました。
最後は雑誌でも広告を出している超有名なお店を覗いてみました。
ここのお店は、古いマシンを扱っているというよりも、現役でも十分活躍できる機器が
沢山置いてあります。店を入るとまず横のカウンターに Sun Ray 1g が数台置いてあり、
「売約済み」のラベルが張ってありました。ちなみに Sun Ray に関しては、1gだけでな
く、奥の方に100 や 150(下写真)も並べて置いてありました。
(中古市場でもSun Ray は活性化しているようです。)
*** Sun Ray 中古品参考価格 ***
Sun Ray 1g 5,800円
Sun Ray 150 19,800円
Sun Ray 100 9,800円
そして店を入った正面は E4800とD240、奥にはV210が沢山積んでありさすが有名店 といった所です。 ここの店でレアなマシンといえば、Netra t1 105 群の中に混じって Netea D1 や、 Nertra i なんていうのもありまし、iPlanet Web Server に「今!売れてます。」 ってかいてあったのが笑えました。
探検はここで終わりですが、みなさんも秋葉原に行った時は、Sunを扱っている中古屋 を巡ってみてはいかがですか?(本当はストレージも沢山置いてあったのですが、長くなるので今回は見送りです)
Posted at 09:47午前 6 27, 2006 by Naoyuki Yamada in Sun | 投稿されたコメント[0]
file-roller
アーカイブの内容をスマートに確認するには
みなさんは Solaris の Patch ファイルの中をちょっと確認したいとき、どうしていますか?普通 Patch ファイルは zip 形式なので unzip コマンドで適当なディレクトリに展開していませんか? Patch に限らず圧縮アーカイブの中からファイルを1つだけ取り出すにも面倒なコマンドを入力していませんか? Gnome デスクトップなら file-roller コマンドを使うととてもスマートに圧縮アーカイブを取り扱えます。
使い方は簡単です。コマンドオプションとしてファイル名を指定するだけです。
% file-roller [archive]
するとファイルマネージャ・ウィンドウが現れてアーカイブの中身が表示されます。ディレクトリ階層もキチンと表示されますし、ダブルクリックによる内容表示や任意ディレクトリへのファイル抽出も可能です。
アーカイブ形式としては zip だけでなく、tar や compress, gzip, bzip2, lha など幅広くサポートしているのでいろいろな機会に重宝すると思います。ウェブブラウザやメーラーのサポートアプリケーションとしても使えるので、まだ設定していない方には是非お勧めします。
file-roller はまた、アーカイブを参照するだけでなくアーカイブの新規作成やファイルの追加も可能です。ツールバーの「追加」アイコンを使うか、もしくは file-roller ウィンドウへの Drag&Drop でもファイル追加が可能です。メール添付で送信するファイルを圧縮したり、古くてあまりアクセスしなくなったファイルを保存したりと、いろいろな使い方ができます。是非ご活用ください。
Posted at 11:00午前 6 26, 2006 by masahiko in Sun | 投稿されたコメント[0]
DTrace サンプルを使ってみよう#2(連載2)
さて、入門編では DTrace の使い方をご紹介しました。 今回はステップアップに役立つ、サンプルをご紹介します。 DTraceの詳細なドキュメント "Solaris Dynamic Tracing Guide" はWeb上に用意されています。 http://docs.sun.com/app/docs/doc/817-6223/ ここで紹介されている80のサンプルが実は/usr/demo/dtraceにあります。 これらを参考にしたり、改良することで、はじめから作成しなくても済みます。
1 applicat.d
2 badopen.d
3 begin.d
4 callout.d
5 clause.d
6 clear.d
7 countdown.d
8 counter.d
9 dateprof.d
10 delay.d
11 denorm.d
12 end.d
13 error.d
14 errorpath.d
15 find.d
16 firebird.d
17 hello.d
18 howlong.d
19 interp.d
20 interval.d
21 intr.d
22 iocpu.d
23 iosnoop.d
24 iothrough.d
25 iotime.d
26 iprb.d
27 kstat.d
28 ksyms.d
29 libc.d
30 lquantize.d
31 lwptime.d
32 normalize.d
33 nscd.d
34 pri.d
35 printa.d
36 pritime.d
37 prof.d
38 profpri.d
39 progtime.d
40 putnext.d
41 qlen.d
42 qtime.d
43 renormalize.d
44 restest.d
45 ring.d
46 rtime.d
47 rwinfo.d
48 rwtime.d
49 sig.d
50 soffice.d
51 spec.d
52 specopen.d
53 ssd.d
54 syscall.d
55 tick.d
56 ticktime.d
57 time.d
58 tracewrite.d
59 trunc.d
60 trussrw.d
61 userfunc.d
62 whatfor.d
63 whatlock.d
64 where.d
65 whererun.d
66 whoexec.d
67 whofor.d
68 whoio.d
69 whopreempt.d
70 whoqueue.d
71 whosteal.d
72 whowrite.d
73 writes.d
74 writesbycmd.d
75 writesbycmdfd.d
76 writetime.d
77 writetimeq.d
78 xioctl.d
79 xterm.d
80 xwork.d
いくつか実行してみました。
シグナルを収集するスクリプトです。
# dtrace -s sig.d
^C
SENDER RECIPIENT SIG COUNT
gnome-terminal dtrace 2 1
sched syslogd 14 1
sched Xorg 14 213
# dtrace -s iotime.d
DEVICE FILE RW MS
cmdk0 W 0.261
cmdk0 /.iiim/le/atokx2/users/root/atokx2.aen W 0.321
cmdk0 /export/DTRACE/.gedit-save-K5ay9b W 0.072
cmdk0 /.iiim/le/atokx2/users/root/atokx2.aen R 34.949
cmdk0 /.iiim/le/atokx2/users/root/atokx2.aen R 0.270
cmdk0 /.iiim/le/atokx2/users/root/atokx2.aen W 0.548
cmdk0 /.iiim/le/atokx2/users/root/atokx2.aen W 0.546
cmdk0 /.iiim/le/atokx2/users/root/atokx2.aen W 0.541
# dtrace -s whoio.d
^C
DEVICE APP PID BYTES
cmdk0 fsflush 3 3072
cmdk0 iiimd 621 16384
cmdk0 gedit 1003 31232
この豊富なサンプルをお手本にすることで、実際にどのように記述したら思い通りの動作をさせることができるのか、 そのヒントになることでしょう。
Posted at 05:04午後 6 23, 2006 by onodera in Sun | 投稿されたコメント[0]