Sausalitoで遊ぼう ! ☆cobalt appliance programming 入門☆

44
でででで Sausalito でででで Sausalito ! ! Cobalt Appliance Cobalt Appliance Programming Programming でででで2002 2002 9 9 8 8 NTT NTT DoCoMo Kansai,Inc. DoCoMo Kansai,Inc. Masahiro Watanabe Masahiro Watanabe Cobalt Users Conference2002/Summer

Upload: britanney-kidd

Post on 01-Jan-2016

81 views

Category:

Documents


8 download

DESCRIPTION

Cobalt Users Conference2002/Summer. Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆. 2002 年 9 月 8 日 NTT DoCoMo Kansai,Inc. Masahiro Watanabe. Cobalt Server は UNIX の省スペース性と、 Web ブラウザを使った GUI での簡易な操作を兼ね備えた Server Appliance である。. Windows マシン、 Unix マシンと Cobalt の違い. Sausalito とはなにか. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

Sausalitoで遊ぼうSausalitoで遊ぼう !!

☆Cobalt Appliance ☆Cobalt Appliance ProgrammingProgramming 入門☆入門☆

20022002 年年 99 月月 88 日日NTTNTT    DoCoMo Kansai,Inc.DoCoMo Kansai,Inc.

Masahiro WatanabeMasahiro Watanabe

Cobalt Users Conference2002/Summer

Page 2: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

WindowsWindows マシン、マシン、 UnixUnix マシンとマシンと CobaltCobaltの違い の違い

Windows 一般的なUnix Cobalt

ディスプレイおよびキーボード

要 不要(接続可) 不要( LCDコンソールあり)

操作の手段 GUI(ウィンドウシステム)

CUI(コマンドラインインターフェース)

GUI( LCDコンソールおよびWebブラウザ)

遠隔メンテナンス 不可 可( CUI) 可( GUI)

Cobalt Server は UNIX の省スペース性と、Web ブラウザを使った GUI での簡易な操作を兼ね備えた Server Appliance である。

Page 3: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

SausalitoSausalito とはなにか とはなにか Sausalito とは、 Cobalt Server のソフトウェ

アに一貫した操作性を与えるために開発された、新アーキテクチャである。

従来の Cobalt Sausalito管理画面の構成 画面ごとに Perl の CG

I で作成XMLを使って自動生成されたメニューと、 PHPの UIFCライブラリを利用して作成した画面から構成

管理画面の認証方法

HTTPの BASIC認証を利用

Sausalito内の独自認証を利用(ユーザ権限ごとにメニュー構成を変更することが可能)

国際版対応 各国版毎に Perl のソースを書き換えてリリース

表示されるメッセージを Stringファイルとして独立させ、 Stringファイルを言語毎に用意することにより対応(ソースは各国語版同一)

システムリソースへのアクセス

Perlにてアクセス サーバ管理用デーモン( CCE)経由でアクセス

Page 4: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

SausalitoSausalito の特長 の特長 1)柔軟な機能拡張が可能

– XML を用いたメニュー自動生成処理( Navigation Manager )により、メニューツリーへのメニュー追加が他の既存のメニューに影響を与えずに可能

2)各国語版パッチリリースに要する期間の短縮および信頼性の向上– 各国語版間でソースが共通であるため、シンプルな

バージョン管理が可能3)ユーザインターフェースの Look & Feel の統

一性の保持が可能– ユーザインターフェース用 API ( UIFC )が公開され

ているため、サードパーティのアプリケーションにおいても Cobalt オリジナル機能と同一の Look &Feel を実現可能

Page 5: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

SausalitoSausalito の特長(つづき)の特長(つづき)4)サードパーティのアプリケーションにおいて

も Sausalito のユーザ認証の利用が可能–  サードパーティのアプリケーションにおいても、

Navigation Manager および UIFC を用いることにより、 Sausalito のユーザ認証を利用可能(独自の認証機構を準備する必要がない)

5) Sausalito 対応機種間でのアプリケーションの移植が容易–  ハードウェアやシステム情報へのアクセス用の

API ( CCE )が提供されていることにより、機種間のアプリケーションの移植が従来に比べ容易であると思われる。

Page 6: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

SausalitoSausalito 版版 Cobalt ServerCobalt Server

• Sausalito アーキテクチャを採用している Cobalt Server は以下のとおり– Sun Cobalt Qube3– NTT DoCoMo MMQUBE2   (OEM 版 Qube3)– Sun Cobalt Qube3 Plus – Sun Cobalt RaQ550– SunCobalt Control Station

(2002 年 9 月現在)備考:  Sun Cobalt XTR は部分的に Sausalito が使われ

ている。

Page 7: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

SausalitoSausalito の画面構成(ログイン画の画面構成(ログイン画面)面)

※  この画面は MMQUBE2 のものである。

test.cobalt*qube.org

Page 8: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

SausalitoSausalito の画面構成(ログイン後)の画面構成(ログイン後)

※  この画面は MMQUBE2 のものである。

Page 9: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

SausalitoSausalito 対応アプリケーション作成の準備対応アプリケーション作成の準備用意するもの

– Sausalito アーキテクチャのサーバ• 管理者権限が必要

– IE5 以上が動作する PC– Telnet クライアントフト

• TeraTerm( フリーウェア ) がおすすめ– FTP クライアントソフト

• FFFTP( フリーウェア ) がおすすめ– tar,gzip,rpm に対応した圧縮・解凍ソフト

• ExpLzh( シェアウェア )+tar32.dll がおすすめ– テキストエディタ

• 秀丸 ( シェアウェア ) がおすすめ

Page 10: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

SausalitoSausalito 対応アプリケーション作成の準備対応アプリケーション作成の準備• あるとうれしい予備知識(なくても

可?)– Telnet および Shell を使ったことがある– html のソースを見たり書いたことがある– xml について知っている– rpm の SPEC ファイルを書いたことがある– Perl 、 PHP 、 Awk のソースを見たことがある– EUC 、 SJIS コードとは何のことか知っている– vi 、 more を使ったことがある– ‘/’ と書いて root と読める

Page 11: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

SausalitoSausalito のディレクトリ構成(後で使うのディレクトリ構成(後で使うよ)よ)

/usr/ share/locale/ ja/LC_MESSAGES/ ***.mo

String ファイルen/LC_MESSAGES/ ***.mo

・・・

sausalito/ constructor/

destructor/

handler/

schema/

***.pl

***.pl

***.schema

***.pl

CCE 関連ファイル(今回は作成しない)

ui/ menu/

web/

style/

conf/

libPhp/bin/

lib/

・・・

Sausalito システムディレクトリ(ユーザは直接使用しない)

***.xml

***. php ,html,pl

***.xml

menu 定義ファイル

CGI ファイル

Style ファイル

Page 12: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

本日のお題本日のお題

課題1) Sausalito メニューに“ HelloWorld”アプリを追加する

課題2) Sausalito のメッセージを大阪弁に変更する

Page 13: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

課題1:メニュー追加課題1:メニュー追加  Sausalito メニューに“ HelloWorld” アプリを追

加しよう

Page 14: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEPSTEP 1:メニューの構造を探ってみ1:メニューの構造を探ってみるる

/usr/sausalito/ui/menu の下を覗く[admin admin]$ cd /usr/sausalito/ui/menu[admin menu]$ ls -FVM/ base/ ioffice/ live/ palette/

[admin menu]$ cd base[admin base]$ ls -Faddressbook/ carmel/ firewall/ network/ telnet/ wizard/ am/ dhcpd/ ftp/ power/ time/ workgroup/ apache/ disk/ import/ quotastats/ user/ appleshare/ dns/ ldap/ snmp/ webmail/ backup/ email/ maillist/ swupdate/ webstats/ cache/fileshare/ multidrop/ system/ winshare/

[admin base]$ cd am[admin am]$ ls -FamSettings.xml amStatus.xml monitor.xml monitorLight.xml

Page 15: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEPSTEP 2:xmlファイルの構造を推2:xmlファイルの構造を推測する測する

① 既存のxmlファイルを見てみる

ソース1: monitor.xml

ソース2: amStatus.xml

<item id="base_monitor" label="[[base-am.activeMonitor]]" description=“[[base-am.activeMonitor_help]]”   > <parent id="base_administration" order="80"/></item>

<item id="base_amStatus" label="[[base-am.amStatusMenuName]]" description="[[base-am.amStatusMenuDesc]]" url=“/base/am/amStatus.php”   > <parent id="base_monitor" order="10"/></item>

Page 16: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEPSTEP 2:続き2:続き② xmlファイルの構造を推測する (id 属性)

– item エレメントの id 属性は自分自身の ID を指しているらしい。

– parent エレメントの id 属性は自分の親の ID を指しているらしい。base_administration

base_monitor

base_amStatus

Page 17: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEPSTEP 2:続き2:続き③ xmlファイルの構造を推測する (order 属

性)– parent エレメントの order 属性は同じ親に属してい

るものの間の順序を指しているらしい。monitor.xml の parent エレメントの order 属性を 80

から25に変更してみる

アクティブモニタのメニューの場所が移動した。

注意:自分で試す場合、ファイルを書き換えるときは、元のファイルを必ず    バックアップしてから行うこと!

Page 18: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEPSTEP 2:続き2:続き④ xmlファイルの構造を推測する (label,description 属

性)monitor.xml の item エレメントのlabel description 属性を右のように書き換えてみる

注意:自分で試す場合、ファイルを書き換えるときは、元のファイルを必ず    バックアップしてから行うこと!

<item id="base_monitor" label="base_monitor の Label だよ " description="base_monitor の description だよ "> <parent id="base_administration" order="80"/></item>

メニュータイトルとアクティブヘルプが書き換わった!

Page 19: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP2:STEP2: 続き続き⑤ xmlファイルの構造を推測する (url 属性)

amStatus.xml ファイルの item エレメントの URL 属性の URL を左上のロゴのビットマップの URL に書き換えてみる。

※URL のドキュメントルートは /usr/sausalito/ui/web である。

<item id="base_amStatus" label="[[base-am.amStatusMenuName]]" description="[[base-am.amStatusMenuDesc]]" url="/libImage/topLogo.gif“ > <parent id="base_monitor" order="10"/></item>

注意:自分で試す場合、ファイルを書き換えるときは、元のファイルを必ず    バックアップしてから行うこと!

amStatus.xml

クリックすると、ロゴが表示された!

Page 20: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP2:STEP2: まとめまとめ

<item id="base_amStatus" label="[[base-am.amStatusMenuName]]" description="[[base-am.amStatusMenuDesc]]" url=“/base/am/amStatus.php”   > <parent id="base_monitor" order="10"/></item>

• xml ファイルの構造エレメント

属性 意味

item id 自分自身のメニュー項目 ID  (すべてのメニュー項目でユニークである必要がある)

item label メニューに表示される文字列(日本語も使用可。 S-JIS で指定する必要がある。)

item description アクティブヘルプに表示される文字列(日本語も使用可。 S-JISで指定する必要がある。)

item url メニュー項目クリック時に表示される URL

parent id 自分がぶら下がるメニュー項目 ID

parent order メニューの並び(小さいほど上または、左に表示される。)amStatus.xml

Page 21: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

①  ② ③ ④  ⑤ ⑥ ⑦root

STEP3:STEP3: メニューツリーを確認するメニューツリーを確認する管理者ログイン時のメニューツリーを知る

• メニューツリーの TOP は root である。

root

①base_administration②base_software

③base_programs

④base_personalProfile

⑤base_updateLight

⑥base_monitorLight

⑦base_logout

Page 22: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP4:STEP4: 課題の課題の HelloHello メニューをチェックすメニューをチェックするる

• Hello メニューは「プログラム」タブの中にある。– base_programs の子メニューとなる

• HelloWorld メニューは「 Hello 」メニューの中にある

– Hello メニューの ID の子メニューとなる。

• HelloWorld アプリケーションは「 HelloWorld 」メニューから呼び出される。

base_programs

base_hello

base_helloWorld

Page 23: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP5:HelloSTEP5:Hello メニューを作成するメニューを作成する• これまでの情報を用いて、 Hello メニュ

ーを作成する

<item id="base_hello" label=“Hello" description=“Hello メニューです。”  > <parent id="base_administration" order=“21"/></item>

<item id="base_helloWorld" label=“HelloWorld” description=“HelloWorld アプリケーションです。 " url=“hello/hello.htm”   > <parent id="base_hello" order="10"/></item>

hello.xml

helloworld.xml

Page 24: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP5:STEP5: 続き続き•どこに XML ファイルを置くか?

– Sausalito は /usr/sausalito/ui/menu の下のフォルダを再帰的に探索する。

– アプリごとにxmlファイル配置のためのディレクトリを分けることが望ましい。•今回は、 ui/menu の下に、 hello というディレク

トリを作成し、その中に配置する。

注意: Sausalito は、シンボリックリンクのディレクトリは探索   しないため、実体のディレクトリ内に入れる必要がある

Page 25: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP6:hello.htmSTEP6:hello.htm を作成するを作成する• メニューからリンクされる HTML ファイ

ルを作成する

hello.htm

HTML ファイルの配置場所は /usr/sausalito/ui/web/hello/

<HTML><body>Hello   World アプリケーションの出力です。</body></html>

Page 26: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

課題1:完成!課題1:完成!

Page 27: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

課題2:メッセージの書き換え課題2:メッセージの書き換え課題2) Sausalito のメッセージを大阪弁に変更

しよう– 電源切断手順画面を大阪弁に変更する

Page 28: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP1:STEP1: メッセージのありかを探すメッセージのありかを探す• /usr/share/locale/ja/LC_MESSAGES/ の下を覗

• *.mo というファイルが多数存在する。• これらは String ファイルと呼ばれるものである。

admin admin]$ cd /usr/share/locale/ja/LC_MESSAGES/[admin LC_MESSAGES]$ lsbase-fileshare.mo base-sys.mo base-firewall.mo base-system.mo base-ftp.mo base-telnet.mobase-import.mo base-time.mo base-lcd.mo base-user.mo base-ldap.mo base-webmail.moadamnet.mo base-maillist.mo base-webstats.mo base-addressbook.mo base-memory.mobase-winnetwork.mo base-am.mo base-modem.mo base-winshare.mo base-apache.mo base-multidrop.mo base-wizard.mo base-appleshare.mo base-network.mo base-workgroup.mo base-backup.mo gnupg.mo base-cache.mo base-power.mo palette.mo base-carmel.mobase-power.mo.org sharutils.mo base-cce.mo base-quotastats.mo swatch.mo base-dhclient.mo base-sauce-basic.mo tar.mo base-dhcpd.mo base-services.mo textutils.mo base-disk.mo base-snmp.mo trueBlue.mo base-dns.mo base-ssl.mo util-linux.mo base-email.mo base-swupdate.mo[admin LC_MESSAGES]$

Page 29: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP2:StringSTEP2:String ファイルとはファイルとは• String ファイルとは、文字列にタグ (ID)

をつけて格納したもの。• String ソースファイル (*.po) から生成さ

れる。•国際化ライブラリにて使用される。String ソースファイル (*.po)

String ファイル (*.mo)

enco

de

deco

de

msgfmt コマンド msgunfmt コマンド

Page 30: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP3:StringSTEP3:String ソースファイルの書式ソースファイルの書式

  msgid: メッセージの ID をあらわす msgstr: メッセージの文字列。日本語可。文字コードは         S-JIS を使用する。

msgid “ユニークな ID1”msgstr “ メッセージ 1”   (空行 )msgid “ユニークな ID2”msgstr “ メッセージ 2”   (空行 )  ・・・・・・msgid “ユニークな IDn”msgstr “ メッセージ n”

Page 31: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP4:msgfmt,msgunfmtSTEP4:msgfmt,msgunfmt の使い方の使い方• msgfmtコマンド

書式: msgfmt xxx.po  [ -o xxx.mo ]– String ソースファイル  xxx.po  から、 String ファ

イル  xxx.mo を生成する。 -oオプションが無指定の場合は  message  というファイル名のファイルに出力する。

• msgunfmt コマンド

書式: msgunfmt xxx.mo [ -o xxx.po]– String ファイル  xxx.mo から、 String ファイル xxx.

po  を生成する。 -oオプションが無指定の場合は、標準出力に出力する。

Page 32: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP5:*moSTEP5:*mo ファイルからファイルから *po*po ファイルを作ファイルを作成成

•Stringファイルから、Stringソースファイルを作成する[root LC_MESSAGES]# msgunfmt base-power.mo -o /tmp/base-power.po[root LC_MESSAGES]# head /tmp/base-power.pomsgid "askRebootConfirmation"msgstr " サーバを再起動してよろしいですか? "

msgid "power"msgstr "電源 "

msgid "powerHelp"msgstr " サーバを再起動できます。 "

msgid "reboot“・・・・・

Page 33: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP6:*poSTEP6:*po ファイルをPCに転送するファイルをPCに転送する

– STEP5 で生成した base-power.po を FFFTP を利用してPCに転送する。• ASCIIモードで転送する。•文字コードは、変換しない。

Page 34: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP7:*.poSTEP7:*.po ファイルを編集するファイルを編集する– msgunfmt コマンドで生成された  *.po ファ

イルは、文字列が長い場合80文字で改行されているため、文字列を一本にする。

Page 35: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP7:STEP7: 続き(関西人用)続き(関西人用)• 文字列をチェックし、変な日本語をすべ

て大阪弁に書き換える。

編集が完了したら、 base-power-osaka.po というファイル名で保存する。

Page 36: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP7:STEP7: 続き(関西人以外用)続き(関西人以外用)• インターネット上の大阪弁変換フィルタ等を用いて、メッセージを大阪弁に変換する。例: http://www.yorosiku.net/yan/imode/iosaka.htmlを用いる。

編集が完了したら、 base-power-osaka.po というファイル名で保存する。

Page 37: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP8:STEP8: 編集後の編集後の *.po*.po ファイルをアップすファイルをアップする。る。

– 編集後の base-power-osaka.po ファイルをサーバにFTPする。・ ASCIIモードで転送する。・文字コードは、変換しない。

Page 38: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

STEP9:*.moSTEP9:*.mo ファイルを作成し入替えファイルを作成し入替えるる

• 書き換えた、 base-power-osaka.po ファイルを元に、 base-power.mo ファイルを作成し、元のファイルと入替えを行う。

[root /tmp]# msgfmt base-power-osaka.po -o base-power.mo[root /tmp]# cd /usr/share/locale/ja/LC_MESSAGES/[root LC_MESSAGES]# mv base-power.mo base-power.mo.org[root LC_MESSAGES]# cp /tmp/base-power.mo .[root LC_MESSAGES]#

注意:自分で試す場合、ファイルを書き換えるときは、元のファイルを必ず    バックアップしてから行うこと!

Page 39: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

課題2:完成!課題2:完成!

Page 40: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

おまけ1:メニュ内でおまけ1:メニュ内で StringString ファイルファイルを使うを使う

hello.po

hello.xml

helloworld.xml

msgid "hellogroup"msgstr "Hello でっせ "

msgid "helloworldgroup"msgstr "HelloWorldどすえ "

/usr/share/locale/ja/LC_MESSAGES/hello.mo

<item id="base_hello" label="[[hello.hellogroup]]" description="HelloWorld メニューです " type="monitorOn" > <parent id="base_programs" order="21"/></item>

<item id=“base_hello_helloApp” label=“[[hello.helloworldgroup]]” description=“HelloWorld でっせ。よろしゅうたのむわ” url="/hello/hello.htm" > <parent id="base_hello" order="21"/></item>

*.moファイル名msgid

Page 41: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

おまけ1:出力結果おまけ1:出力結果

Page 42: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

おまけ2:日本語文字が化ける場合おまけ2:日本語文字が化ける場合• S-JIS漢字中に含まれる 0x5c(\) キャラクター

コードをエスケープすることにより回避する。– enadd.pl :漢字中に 0 x 5c が含まれている場合、その前に 0x5c を挿入する。( msgfmt の前に使用 )

– endel.pl :漢字中に 0 x 5c が 2回連続して含まれている場合、 0x5c をひとつ削る。( msgunfmt の後に使用 )

#!/usr/bin/perlwhile(<>){s/\\\\/\\/g;print;}

#!/usr/bin/perlwhile(<>){s/\\/\\\\/g;print;}

enadd.pl endel.pl

Page 43: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

おまけ3:メニューツリーのおまけ3:メニューツリーの rootroot を変を変えるえる

• ログイン後特定のメニューを root にして、Navigation Manager を立ち上げる

http:// サーバ :444/ login.php?target=/nav/cList.php%3Froot= メニュー ID %3FCo

mmFrame= 追加スクリプト

例 :http://192.168.0.30:444/login.php?target=/nav/cList.php%3Froot=base_administration

Page 44: Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆

おまけ3:結果おまけ3:結果