Recommended
PDF
PDF
KEY
Mysql casual fukuoa_vlo_2
PDF
XPagesでRESTを使ってみたら、こんなんだった
PDF
KEY
My sql casual_in_fukuoka_vol1
PPTX
XPagesDay2014 [B-3] XPagesでRESTを使ってみたら、こんなんだったPartⅡ
PPT
PDF
PDF
15分でCakePHPを始める方法(Nseg 2013-11-09 )
PDF
PDF
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
PDF
PDF
FuelPHPで3種のprofilerを使ってみた
PPTX
PDF
PDF
PDF
PDF
PDF
omoon.org の裏側 〜FuelPHP の task 活用例〜
PDF
WTM53 phpフレームワーク いまさらcodeigniter
PDF
PDF
PDF
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
PDF
PDF
KEY
PDF
PPT
PPT
More Related Content
PDF
PDF
KEY
Mysql casual fukuoa_vlo_2
PDF
XPagesでRESTを使ってみたら、こんなんだった
PDF
KEY
My sql casual_in_fukuoka_vol1
PPTX
XPagesDay2014 [B-3] XPagesでRESTを使ってみたら、こんなんだったPartⅡ
PPT
What's hot (20)
PDF
PDF
15分でCakePHPを始める方法(Nseg 2013-11-09 )
PDF
PDF
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
PDF
PDF
FuelPHPで3種のprofilerを使ってみた
PPTX
PDF
PDF
PDF
PDF
PDF
omoon.org の裏側 〜FuelPHP の task 活用例〜
PDF
WTM53 phpフレームワーク いまさらcodeigniter
PDF
PDF
PDF
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
PDF
PDF
KEY
PDF
Viewers also liked (9)
PPT
PPT
PPT
PDF
Future Of The Book 09 Sarah Jones
PPT
PPT
PPT
PPT
PPT
Digital Technologies Symposium
Similar to 1MB (20)
PDF
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
PPTX
Cloudstack user group meeting in osaka
PPT
Windows® API Code Pack for Microsoft® .NET Framework
PPTX
ODP
Programming camp Codereading
PDF
Windows PowerShell 2.0 の基礎知識
PPT
PDF
Android Lecture #01 @PRO&BSC Inc.
PDF
PDF
PDF
PPTX
PPT
PDF
Build 番号の自動更新スクリプトについて #cocoa_kansai
PDF
【学習メモ#1st】12ステップで作る組込みOS自作入門
PDF
PEZY-SC programming overview
PPT
PPTX
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
PDF
PDF
LPICレベル1技術解説セミナー(2012/11/11)
More from arase_utagoe (9)
PPT
PPT
PPT
PPT
PPT
PPT
PPT
PPT
PPT
1MB1. Sausalitoで遊ぼう ! ☆Cobalt Appliance Programming 入門☆ 2002 年 9 月 8 日 NTT DoCoMo Kansai,Inc. Masahiro Watanabe Cobalt Users Conference2002/Summer 2. Windows マシン、 Unix マシンと Cobalt の違い Cobalt ServerはUNIXの省スペース性と、Webブラウザを使ったGUIでの簡易な操作を兼ね備えたServer Applianceである。 可( GUI ) 可( CUI ) 不可 遠隔メンテナンス GUI ( LCD コンソールおよび Web ブラウザ) CUI (コマンドラインインターフェース) GUI (ウィンドウシステム) 操作の手段 不要( LCD コンソールあり) 不要(接続可) 要 ディスプレイおよびキーボード Cobalt 一般的な Unix Windows 3. Sausalitoとはなにか Sausalito とは、 Cobalt Server のソフトウェアに一貫した操作性を与えるために開発された、新アーキテクチャである。 サーバ管理用デーモン( CCE) 経由でアクセス Perl にてアクセス システムリソースへのアクセス 表示されるメッセージを String ファイルとして独立させ、 String ファイルを言語毎に用意することにより対応(ソースは各国語版同一) 各国版毎に Perl のソースを書き換えてリリース 国際版対応 Sausalito 内の独自認証を利用(ユーザ権限ごとにメニュー構成を変更することが可能) HTTP の BASIC 認証を利用 管理画面の認証方法 XML を使って自動生成されたメニューと、 PHP の UIFC ライブラリを利用して作成した画面から構成 画面ごとに Perl の CGI で作成 管理画面の構成 Sausalito 従来の Cobalt 4. Sausalitoの特長 1)柔軟な機能拡張が可能 XML を用いたメニュー自動生成処理( Navigation Manager )により、メニューツリーへのメニュー追加が他の既存のメニューに影響を与えずに可能 2)各国語版パッチリリースに要する期間の短縮および信頼性の向上 各国語版間でソースが共通であるため、シンプルなバージョン管理が可能 3)ユーザインターフェースの Look & Feel の統一性の保持が可能 ユーザインターフェース用 API ( UIFC )が公開されているため、サードパーティのアプリケーションにおいても Cobalt オリジナル機能と同一の Look & Feel を実現可能 5. Sausalitoの特長(つづき) 4)サードパーティのアプリケーションにおいても Sausalito のユーザ認証の利用が可能 サードパーティのアプリケーションにおいても、 Navigation Manager および UIFC を用いることにより、 Sausalito のユーザ認証を利用可能(独自の認証機構を準備する必要がない) 5) Sausalito 対応機種間でのアプリケーションの移植が容易 ハードウェアやシステム情報へのアクセス用の API ( CCE )が提供されていることにより、機種間のアプリケーションの移植が従来に比べ容易であると思われる。 6. Sausalito版Cobalt 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 が使われている。 9. Sausalito 対応アプリケーション作成の準備 用意するもの Sausalito アーキテクチャのサーバ 管理者権限が必要 IE5 以上が動作する PC Telnet クライアントフト TeraTerm( フリーウェア ) がおすすめ FTP クライアントソフト FFFTP( フリーウェア ) がおすすめ tar,gzip,rpm に対応した圧縮・解凍ソフト ExpLzh( シェアウェア )+tar32.dll がおすすめ テキストエディタ 秀丸 ( シェアウェア ) がおすすめ 10. Sausalito 対応アプリケーション作成の準備 あるとうれしい予備知識(なくても可?) Telnet および Shell を使ったことがある html のソースを見たり書いたことがある xml について知っている rpm の SPEC ファイルを書いたことがある Perl 、 PHP 、 Awk のソースを見たことがある EUC 、 SJIS コードとは何のことか知っている vi 、 more を使ったことがある ‘ /’ と書いて root と読める 11. Sausalito のディレクトリ構成(後で使うよ) /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 ファイル 14. STEP1:メニューの構造を探ってみる /usr/sausalito/ui/menu の下を覗く [admin admin]$ cd /usr/sausalito/ui/menu [admin menu]$ ls -F VM/ base/ ioffice/ live/ palette/ [admin menu]$ cd base [admin base]$ ls -F addressbook/ 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 -F amSettings.xml amStatus.xml monitor.xml monitorLight.xml 15. STEP2: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> 16. STEP2:続き ② xmlファイルの構造を推測する (id 属性) item エレメントの id 属性は自分自身の ID を指しているらしい。 parent エレメントの id 属性は自分の親の ID を指しているらしい。 base_administration base_monitor base_amStatus 17. STEP2:続き ③ xmlファイルの構造を推測する (order 属性) parent エレメントの order 属性は同じ親に属しているものの間の順序を指しているらしい。 monitor.xml の parent エレメントの order 属性を 80 から25に変更してみる アクティブモニタのメニューの 場所が移動した。 注意:自分で試す場合、ファイルを書き換えるときは、元のファイルを必ず バックアップしてから行うこと! 18. STEP2:続き ④ 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> 19. STEP2:続き ⑤ xmlファイルの構造を推測する (url 属性) amStatus.xml ファイルの item エレメントの URL 属性の URL を左上のロゴのビットマップの URL に書き換えてみる。 ※ URL のドキュメントルートは /usr/sausalito/ui/web である。 注意:自分で試す場合、ファイルを書き換えるときは、元のファイルを必ず バックアップしてから行うこと! amStatus.xml クリックすると、ロゴが表示された! <item id="base_amStatus" label="[[base-am.amStatusMenuName]]" description="[[base-am.amStatusMenuDesc]]" url="/libImage/topLogo.gif“ > <parent id="base_monitor" order="10"/> </item> 20. STEP2:まとめ xmlファイルの構造 amStatus.xml <item id="base_amStatus" label="[[base-am.amStatusMenuName]]" description="[[base-am.amStatusMenuDesc]]" url=“/base/am/amStatus.php” > <parent id="base_monitor" order="10"/> </item> メニューの並び(小さいほど上または、左に表示される。) order parent 自分がぶら下がるメニュー項目 ID id parent メニュー項目クリック時に表示される URL url item アクティブヘルプに表示される文字列(日本語も使用可。 S-JIS で指定する必要がある。) description item メニューに表示される文字列(日本語も使用可。 S-JIS で指定する必要がある。) label item 自分自身のメニュー項目 ID (すべてのメニュー項目でユニークである必要がある) id item 意味 属性 エレメント 22. STEP4: 課題の Hello メニューをチェックする Hello メニューは「プログラム」タブの中にある。 base_programs の子メニューとなる HelloWorld メニューは「 Hello 」メニューの中にある Hello メニューの ID の子メニューとなる。 HelloWorld アプリケーションは「 HelloWorld 」メニューから呼び出される。 base_programs base_hello base_helloWorld 23. STEP5:Helloメニューを作成する これまでの情報を用いて、Helloメニューを作成する hello.xml helloworld.xml <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> 24. STEP5:続き どこに XML ファイルを置くか? Sausalito は /usr/sausalito/ui/menu の下のフォルダを再帰的に探索する。 アプリごとにxmlファイル配置のためのディレクトリを分けることが望ましい。 今回は、 ui/menu の下に、 hello というディレクトリを作成し、その中に配置する。 注意: Sausalito は、シンボリックリンクのディレクトリは探索 しないため、実体のディレクトリ内に入れる必要がある 28. STEP1:メッセージのありかを探す /usr/share/locale/ja/LC_MESSAGES/ の下を覗く *.mo というファイルが多数存在する。 これらは String ファイルと呼ばれるものである。 admin admin]$ cd /usr/share/locale/ja/LC_MESSAGES/ [admin LC_MESSAGES]$ ls base-fileshare.mo base-sys.mo base-firewall.mo base-system.mo base-ftp.mo base-telnet.mo base-import.mo base-time.mo base-lcd.mo base-user.mo base-ldap.mo base-webmail.mo adamnet.mo base-maillist.mo base-webstats.mo base-addressbook.mo base-memory.mo base-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.mo base-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]$ 30. STEP3:Stringソースファイルの書式 msgid: メッセージの ID をあらわす msgstr: メッセージの文字列。日本語可。文字コードは S-JIS を使用する。 msgid “ ユニークな ID1” msgstr “ メッセージ 1” ( 空行 ) msgid “ ユニークな ID2” msgstr “ メッセージ 2” ( 空行 ) ・・・・・・ msgid “ ユニークな IDn” msgstr “ メッセージ n” 31. STEP4: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 オプションが無指定の場合は、標準出力に出力する。 32. STEP5:*mo ファイルから *po ファイルを作成 Stringファイルから、Stringソースファイルを作成する [root LC_MESSAGES]# msgunfmt base-power.mo -o /tmp/base-power.po [root LC_MESSAGES]# head /tmp/base-power.po msgid "askRebootConfirmation" msgstr " サーバを再起動してよろしいですか? " msgid "power" msgstr " 電源 " msgid "powerHelp" msgstr " サーバを再起動できます。 " msgid "reboot“ ・・・・・ 37. STEP8: 編集後の *.po ファイルをアップする。 編集後の base-power-osaka.po ファイルをサーバにFTPする。 ・ ASCII モードで転送する。 ・文字コードは、変換しない。 38. STEP9:*.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]# 40. おまけ1:メニュ内でStringファイルを使う hello.po hello.xml helloworld.xml /usr/share/locale/ja/ LC_MESSAGES/hello.mo *.mo ファイル名 msgid msgid "hellogroup" msgstr "Hello でっせ " msgid "helloworldgroup" msgstr "HelloWorld どすえ " <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> 42. おまけ2:日本語文字が化ける場合 S-JIS 漢字中に含まれる 0x5c(\) キャラクターコードをエスケープすることにより回避する。 enadd.pl :漢字中に 0 x 5c が含まれている場合、その前に 0x5c を挿入する。( msgfmt の前に使用 ) endel.pl :漢字中に 0 x 5c が 2 回連続して含まれている場合、 0x5c をひとつ削る。( msgunfmt の後に使用 ) enadd.pl endel.pl #!/usr/bin/perl while(<>){ s/\\\\/\\/g; print; } #!/usr/bin/perl while(<>){ s/\\/\\\\/g; print; } 43. おまけ3:メニューツリーのrootを変える ログイン後特定のメニューを root にして、 Navigation Manager を立ち上げる http:// サーバ :444/ login.php?target= /nav/cList.php%3Froot= メニュー ID %3FCommFrame= 追加スクリプト 例 :http://192.168.0.30:444/login.php?target=/nav/cList.php%3Froot=base_administration