やっぱり Sun がスキ! : Weblog やっぱり Sun がスキ!

やっぱり Sun がスキ!

http://blogs.sun.com/yappri/date/20060628 2006年 6月 28日 水曜日

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 圧縮し、完了時に情報ダイアログを表示します。

本格的なプログラムを作るにはまだまだ物足りないものがありますが、工夫次第ではいろいろつかえると思います。是非試してみてください。

http://blogs.sun.com/yappri/date/20060627 2006年 6月 27日 火曜日

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を扱っている中古屋 を巡ってみてはいかがですか?(本当はストレージも沢山置いてあったのですが、長くなるので今回は見送りです)

http://blogs.sun.com/yappri/date/20060626 2006年 6月 26日 月曜日

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 でもファイル追加が可能です。メール添付で送信するファイルを圧縮したり、古くてあまりアクセスしなくなったファイルを保存したりと、いろいろな使い方ができます。是非ご活用ください。

http://blogs.sun.com/yappri/date/20060623 2006年 6月 23日 金曜日

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
この豊富なサンプルをお手本にすることで、実際にどのように記述したら思い通りの動作をさせることができるのか、
そのヒントになることでしょう。