Date:  Wed, 30 Sep 2009 17:01:00 +0900
Subject:  【オブジェクト倶楽部: 2009-32号】
X-Mail-Count: 00307

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.297 2009/09/30

■ I N D E X
┃
┣【プログラミング】組込みシステムの話 [8]
┣【プログラミング】IzPackで作るクロスプラットフォームインストーラ [4]
┗【アンケート】気になるシステム業界 ホントのところ

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【プログラミング】組込みシステムの話 [8]

こんにちは.藤井です。
シルバーウィークの渋滞には参りました。

今回はJSPに付いているサンプルを動かしてタスクと優先度の関係を実際にみて
いきます。

● サンプルで使用されるタスク
JSPのサンプルで定義されているタスクは、TASK1、TASK2、TASK3及び、MAIN_TASK
の4つです。それぞれの優先度と状態は以下のようになっています。

・task1     優先度:MID_PRIORITY  静的に生成されMAIN_TASK内で起動される
・task2     優先度:MID_PRIORITY  静的に生成されMAIN_TASK内で起動される
・task3     優先度:MID_PRIORITY  静的に生成されMAIN_TASK内で起動される
・MAIN_TASK 優先度:MAIN_PRIORITY 静的に実行可能状態で生成される

今回使用する優先度には、MAIN_PRIORITY、HIGH_PRIORITY、MID_PRIORITY、
LOW_PRIORITYがあります。
優先順はMAIN_PRIORITY > HIGH_PRIORITY > MID_PRIORITY > LOW_PRIORITYです。
また、MAIN_TASKは文字入力を待ち、入力された文字に対応した処理を実行しま
す。入力文字と処理の関係はsample1.cに記載されているので詳細はそちらを参
照ください。今回はMAIN_TASKにコマンドを送りながら、MAIN_TASK以外の3つの
タスクの動きに注目していくことにします。

● 実行される事のないタスク
サンプルプログラムを動かすと次のようなメッセージが表示されると思います。

System logging task is started on port 1.
Sample program starts (exinf = 0).
task1 is running (001).   |
task1 is running (002).   |
task1 is running (003).   |
task1 is running (004).   |
task1 is running (005).   |
task1 is running (006).   |

これは「task1が動いてます」ということを表しています。他の2つのタスクは
どうなっているのでしょうか?前回お話しした優先度の話を思い出してくださ
い。task1、2、3とも優先度はMID_PRIORITYです。そのためtask1が終了したり
優先度がMID_PRIORITYより低くなったりしない限り他のタスクは動くことが出
来ません。

● 他のタスクも動かす
キーボードから「1<」と入力してください。これはtask1の優先度をLOW_PRIORITY
にするコマンドです。
そうすると、

#chg_pri(1, LOW_PRIORITY)
task2 is running (001).     +
task2 is running (002).     +
task2 is running (003).     +

のように、task2が動き出します。これはtask1の優先度がtask2より低くなった
ことでプリエンプトが発生したためです。
同様に「2<」と入力すると今度はtask3が動き出します。

#chg_pri(2, LOW_PRIORITY)
task3 is running (001).       *
task3 is running (002).       *
task3 is running (003).       *

● おわりに
前回までの長い座学を終えてようやく動きを確認するところまで行きました。
次回からはJSPのAPIについて説明していきます。(藤井)

● 用語集
・タスク       処理の実行単位のこと。
・優先度       タスクの持つ属性の1つ。RTOSは優先度とタスクの状態を見て
               CPU資源を割り当てます。
・プリエンプト 優先度の高い処理が起動され実行中の処理の実行権が失われる
               こと。

● その他
JSPのインストールは4回目の連載内容を参照願います。
/ml-arch/magazine/286.html
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
/community/object_ml/estimate?vol=E0016-07&choice=0
普通:
/community/object_ml/estimate?vol=E0016-07&choice=1
イマイチ:
/community/object_ml/estimate?vol=E0016-07&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【プログラミング】IzPackで作るクロスプラットフォームインストーラ [4]

こんにちは、村上です。前回はinstall.xmlとHelloPanelの説明を行いました。
今回はAntでのIzPackの利用方法とLicencePanelの説明をします。

● compileコマンドをAntから使う
前回まではインストーラを作成するためにコマンドラインを使用してcompileコ
マンドを実行していました。しかし、毎回コマンドラインからオプションを指
定するのは面倒です。IzPackにはAntタスクとMaven2のプラグインが用意されて
います。
今回はAntタスクの使用方法を説明します。下記の内容のビルドファイル(以降
はbuild.xmlとします)を作成します。

--- build.xml ---

<?xml version="1.0" encoding="UTF-8"?>
<project name="AntInstaller" default="compile">
    <description>compile installer</description>

       <taskdef name="IzPack"
               classpath="C:\Program Files\IzPack\lib\standalone-compiler.jar"
               classname="com.izforge.izpack.ant.IzPackTask">
       </taskdef>
       
       <property name="src.dir" value="src" />
       <property name="dist.dir" value="bin" />
       
    <target name="compile" depends="depends" description="compile
installer">
       <echo message="Makes the installer using IzPack"/>
       <IzPack input="${src.dir}/install.xml"
               output="${dist.dir}/install.jar"
               installerType="standard"
               basedir="${src.dir}" />
    </target>
</project>
	
------

尚、作業フォルダは以下のような構造であるとします。作業フォルダの名前は
Ant Installerとします。またAnt Installer\src\antはhttp:
//ant.apache.org/bindownload.cgi
からダウンロードしたAntのアーカイブファイルを展開したフォルダとします。

--- 作業フォルダの構造 ---

Ant Installer
  |
  +- src
  |   |
  |   +- install.xml
  |   |
  |   +- ant
  |
  +- bin
  |
  +- build.xml
	
------

では、antを実行してみましょう。

 > ant build.xml

Ant Installer\bin\install.jarが作成されたはずです。当然ですが、前回作成
したinstall.jarと同じ内容になります。これ以降はant build.xmlを実行して
コンパイルを実行することにします。

● LicencePanel
LicencePanelは名前の通り、インストールするアプリケーションのライセンス
利用許諾に同意するかをユーザに選択させるためのパネルです。ユーザが"同意
する"の選択肢を選ばない限りインストーラはそれ以降の処理に進むことはあり
ません。
では早速、下記の内容をinstall.xmlに記述してintall.xmlをコンパイルして
intall.jarを再作成してください。作成されたintall.jarを実行すると、
HelloPanelの次にライセンスの内容を表示してユーザにライセンス利用許諾へ
の同意を選択させるパネルが表示されます。

--- install.xml(変更部分のみ抜粋) ---

       <resources>
               <res id="LicencePanel.licence" src="ant/LICENSE"/>
       </resources>
       <panels>
               <panel classname="HelloPanel" />
               <panel classname="LicencePanel" />
               <panel classname="FinishPanel" />
       </panels>
       
------

上記のinstall.xmlに追記した内容を説明します。まずはLicencePanelを使用す
るのでintall.xmlの要素panelsにLicencePanelの記述を追加します。また、
LicencePanelに表示するライセンスをinstall.xml内の<res>要素で指定します。
LicencePanelでは追加のリソースとしてライセンスを記述したファイルが必要
なのでそのファイルを要素resで指定することになります。
要素resは各パネルがインストーラ実行時に追加で必要なリソースを指定するた
めに使用します。属性idではどのパネルのどのリソースの定義なのかを指定し
ます。属性srcでリソースファイルへのパスを指定します。

● まとめ
今回は、Antを利用してIzPackのコンパイルするための設定とLicencePanelにつ
いて説明しました。次回は、PacksPanelを使用してアプリケーションのインス
トール内容を選択させる方法を説明します。
それでは、次回までさようなら。(村上)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
/community/object_ml/estimate?vol=E0018-03&choice=0
普通:
/community/object_ml/estimate?vol=E0018-03&choice=1
イマイチ:
/community/object_ml/estimate?vol=E0018-03&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■ 
■
┗【アンケート】気になるシステム業界 ホントのところ

今週は「家でも仕事してますか?」のホントのところ。
ノー残業デーを設けたり、残業を禁止したりする会社が増えています。体調や
プライベートの充実のためには喜ばしいことですが、そうは言っても時間内に
仕事が終わらず残ってしまうことも・・・。そんな時、みなさまは家で仕事す
ることはありますか?

  家では絶対に仕事しません!
     /special/kininaru/vote?vol=263&choice=0
  仕方なく家で仕事しちゃうことも・・・。
     /special/kininaru/vote?vol=263&choice=1
  家の方がはかどるのでついつい。
     /special/kininaru/vote?vol=263&choice=2
  ほぼ毎日家で仕事してます。
     /special/kininaru/vote?vol=263&choice=3
  家が職場です。
     /special/kininaru/vote?vol=263&choice=4
  それは秘密です。
     /special/kininaru/vote?vol=263&choice=5
  ちょっと語らせて!
     詳細をこのメールに返信ください!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「シルバーウィークの予定は?」の結果は公開中。ぜひご覧下さい。
⇒/special/kininaru/vol262/PlonePopoll_results2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人のナガタユウコです。先週は秋分の日のためこのメルマガ
もお休みだったのですが、毎週恒例のメルマガ発行がないと、「強引な一言を
考えなくてすむ!」と嬉しい反面、なんとなくリズムが崩れて落ち着かなく、
リズムや習慣って大切なんだなぁとあらためて実感しました。

オブジェクト倶楽部カレンダーの2009年10月分の電子データを公開します。
こんにちは。IENAGAです。10月のオブジェクト倶楽部のカレンダーは「ワール
ドカフェ」です。ワールドカフェは大人数のグループでのコミュニケーション
手法の一種で、カフェのような雰囲気の中、参加者のみなさんがリラックスし
た状態で、ゆる〜く&ふか〜く&オープンに本音を語り合うことをすすめてい
ます。
読者のみなさんの中には「固いビジネス会議中にはなかなか話が弾まなかった
のに、休憩時間にコーヒーを飲みながら(あるいはタバコを吸いながら)だと、
会話が盛り上がった」という経験をした人がいるかと思います。
その場を全面に引き出すことに注力しているのが、ワールドカフェです。
カフェのような会話の特徴をもう少し詳しくあげると、『ワールド・カフェ〜
カフェ的会話が未来を創る』という本の中で、アレグザンダーの「無名の質」
を使った説明の箇所があります。
  - alive (生き生きとしていること)
  - whole (全一的なこと)
  - confortable (居心地の良いこと)
  - free (捕われのないこと)
  - exact (正確なこと)
  - egoless(無我であること)
  - eternal (永遠であること)
日常的なビジネスの中にも、「無名の質」を備えた会話のシーンが増えるとい
いですね。
●『ワールド・カフェ〜カフェ的会話が未来を創る』
http://www.amazon.co.jp/dp/499032983X/xpjp-22
●カレンダー電子データ
/special/#calendar

今週の強引な一言
*** 磨がずに鍛冶を恨むな(ことわざ) ***
努力をせずに生まれつきを恨んでも仕方がないということ。
「才能」は確かに存在するかもしれません。ですが「知識」や「スキル」は、
勉強や経験からしか身に付かないもの。うまくいかないのを自分の資質のせい
にしないで、むしろ自分の資質を信じて、磨いていきたいものですね。
出典参考:故事ことわざ辞典 東京堂出版
(ナガタユウコ)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒/community/object_ml/help/
〇 免責事項、過去の記事は   ⇒/community/object_ml/
■ 発行:オブジェクト倶楽部 ⇒http://ObjectClub.jp/
Copyright (c)2003-2009 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.