<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/sany/">
    <title>SANY@wiki（講義用）</title>
    <link>http://w.atwiki.jp/sany/</link>
    <atom:link href="https://w.atwiki.jp/sany/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>SANY@wiki（講義用）</description>

    <dc:language>ja</dc:language>
    <dc:date>2012-09-03T10:04:00+09:00</dc:date>
    <utime>1346634240</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/sany/pages/18.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sany/pages/15.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sany/pages/8.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sany/pages/31.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sany/pages/1.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sany/pages/23.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sany/pages/30.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sany/pages/29.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sany/pages/28.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/sany/pages/25.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/sany/pages/18.html">
    <title>システム提案書/コメントログ</title>
    <link>https://w.atwiki.jp/sany/pages/18.html</link>
    <description>
      - ちょっと書くの迷いますね。具体的に店の名前を出さなければいけないのかとか、明日集まってから話し合って文面考えたいです。  -- (Y)  &amp;size(80%){2006-11-08 21:30:44} 
- コスト計算していると、これを上回る利益出るのかとか……まあ、教科書で例として挙げられているバーミヤンの人件費削減の話も無理っぽくないかと思いますが。  -- (Y)  &amp;size(80%){2006-11-08 21:45:56} 

- 課題や目標が数値化されていないので、システム化によるメリットに対してピンとこない。   --  (H)  &amp;size(80%){2012-09-03 10:04:00}     </description>
    <dc:date>2012-09-03T10:04:00+09:00</dc:date>
    <utime>1346634240</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sany/pages/15.html">
    <title>トップページ/コメントログ</title>
    <link>https://w.atwiki.jp/sany/pages/15.html</link>
    <description>
      - 次は、11/2（木）13:00に研A502に集合の予定です。都合の悪い場合は、メンバーの誰かに連絡してください。あと提案先をどこにするか、次までで良いので考えておいた方が良さそうです。（こんな風に使ってみてください）-- (Y)  &amp;size(80%){2006-10-28 16:49:27} 
- ここのurlを送ったメールを確認したら、コメントお願いします。-- (Y)  &amp;size(80%){2006-10-28 18:09:58} 
- 確認しました  -- (N)  &amp;size(80%){2006-10-30 13:06:41} 
- 次は11/6(月)に研A502に集合で、時間はバラバラですか？  -- (Y)  &amp;size(80%){2006-11-02 14:27:12} 
- この暗号的な名前が素敵です。一応月曜は４時限おわりに集合です。  -- (S)  &amp;size(80%){2006-11-02 17:30:58} 
- とりあえず、木曜に提案書０．１を作成します。また、開発計画書もつくります。  -- (S)  &amp;size(80%){2006-11-07 23:56:19} 
- 了解です。金曜の午前にプリントショップで印刷します。  -- (Y)  &amp;size(80%){2006-11-08 12:54:35} 
- 予定がずれましたが実験に出て午後にプリントアウトします。  -- (Y)  &amp;size(80%){2006-11-10 12:54:52} 
- 本日携帯忘れました＞、＜  -- (S)  &amp;size(80%){2006-11-10 15:56:21} 
- ↑のチャットログに残ってる通り、20分ほど相談して解決しましたので大丈夫です。  -- (Y)  &amp;size(80%){2006-11-10 19:06:21} 
- 実際に印刷したものを、それぞれのページに貼り付けておきました。Ver.0.1としました。  -- (Y)  &amp;size(80%){2006-11-10 20:18:18} 
- http://www.teu.ac.jp/ed/~c0104200c8/sasen.xls  -- (S)  &amp;size(80%){2006-11-13 14:06:04} 
- 上に線表をおいておきます。  -- (S)  &amp;size(80%){2006-11-13 14:06:28} 
- http://www.fujixerox.co.jp/product/docuprint_c3050/price.html  -- (N)  &amp;size(80%){2006-11-16 14:48:40} 
- 富士ゼロックスのプリンタの製品紹介です  -- (N)  &amp;size(80%){2006-11-16 14:49:04} 
- 携帯の電池切れました。今日も研A502ですか？  -- (Y)  &amp;size(80%){2006-11-20 16:49:13} 
- ５０２に向かいます。  -- (S)  &amp;size(80%){2006-11-20 16:59:27} 
- 金曜、実験終わりに講実403に集合。  -- (Y)  &amp;size(80%){2006-11-20 18:55:46} 
- でゎ、おまちしております  -- (S)  &amp;size(80%){2006-11-24 17:29:14} 
- メールでも送ったのですが、実験がずれこんでいて遅くなりそうです。  -- (Y)  &amp;size(80%){2006-11-24 18:28:27} 
- 月曜13:00研A302、水曜13:00KE101～  -- (集合予定)  &amp;size(80%){2006-11-25 09:54:24} 
- 火曜2にAssitで授業アンケートを提出、  -- (連絡)  &amp;size(80%){2006-11-25 12:14:18} 
- 二つ上の間違いでした。月曜は四時間目の終わりに集合ですね。  -- (連絡)  &amp;size(80%){2006-11-27 10:43:07} 
- 集合は５０２で～  -- (S)  &amp;size(80%){2006-11-27 16:47:39} 
- N~ 平気かぁ～？  -- (S)  &amp;size(80%){2006-11-29 18:36:03} 
- http://www.teu.ac.jp/i-lab/pukiwiki/?cmd=read&amp;page=WebClass  -- (連絡)  &amp;size(80%){2006-11-29 20:33:06} 
- ↑Web技術応用のページです。  -- (連絡)  &amp;size(80%){2006-11-29 20:33:52} 
- 次の集合は11/30の13時に502です。  -- (連絡)  &amp;size(80%){2006-11-29 21:00:29} 
- ↑の場所を図書館のプリントショップで  -- (S)  &amp;size(80%){2006-11-30 13:01:52} 
- 次の集合は12/1の五時間目の終わりに502？  -- (連絡)  &amp;size(80%){2006-11-30 15:04:15} 
- 実験後なんで、口実４０３  -- (S)  &amp;size(80%){2006-12-01 16:58:29} 
- 人がいたから４０２で  -- (S)  &amp;size(80%){2006-12-01 16:59:17} 
- 人がいなくなったんで、４０３で  -- (S)  &amp;size(80%){2006-12-01 18:02:01} 
- 実験、もう少しかかりそうです。  -- (Y)  &amp;size(80%){2006-12-01 18:29:50} 
- 内部設計書、１と３．２がないですけど、upしておきます。  -- (Y)  &amp;size(80%){2006-12-01 18:40:43} 
- 月曜の二時間目あたりに市村先生に質問へ。  -- (連絡)  &amp;size(80%){2006-12-01 20:44:37} 
- 次の集合は木曜（12/01）13:00から、研A502に。  -- (連絡)  &amp;size(80%){2006-12-01 20:46:37} 
- ＞A　今日ゎ集まりないからな。  -- (S)  &amp;size(80%){2006-12-04 14:40:04} 
- 体調不良のようなので金曜に延期します。  -- (連絡)  &amp;size(80%){2006-12-07 12:38:20} 
- wi  -- (S)  &amp;size(80%){2006-12-07 12:55:19} 
- 英語の時間からA君がすごく具合悪そうだったのでね。三人とも死にそうだと聞いたので延期しました。お大事に。  -- (Y)  &amp;size(80%){2006-12-07 13:26:34} 
- 外部設計書の2（サブシステム設計書）で、[前に戻るボタン]と[取り消しボタン]の動きが一緒。  -- (修正)  &amp;size(80%){2006-12-08 17:22:21} 
- [確認画面]と[最終確認画面]という二つの表記があったので、前者に統一しました。  -- (修正)  &amp;size(80%){2006-12-08 17:31:49} 
- [毛髪範囲指定画面]と[髪色指定画面]を統一して、文章の表記をやや修正。  -- (修正)  &amp;size(80%){2006-12-08 17:35:03} 
- 図表番号の表記が間違っているのがあったので修正しました。（図５→図１．５）  -- (修正)  &amp;size(80%){2006-12-08 17:49:52} 
- １．５に「Topへ戻る」を押す、とあったが、そのようなボタンはないので削除しました。  -- (修正)  &amp;size(80%){2006-12-08 17:50:25} 
- 講実402が空いていますよ。  -- (Y)  &amp;size(80%){2006-12-08 18:47:25} 
- http://www.javaroad.jp/servletjsp/sj_jsp6.htm  -- (Sの参考HP)  &amp;size(80%){2006-12-08 19:25:57} 
- 今日どこに集まるんでしたっけ？  -- (Y)  &amp;size(80%){2006-12-13 13:09:19} 
- 今とりあえず図書館のノートPCコーナーにいる  -- (ape)  &amp;size(80%){2006-12-13 13:23:56} 
- 明日、火曜日の９時ゎ図書館の２F、メディアロビーで。  -- (S)  &amp;size(80%){2006-12-18 12:21:53} 
- session.setAttribute がわからんとです・orz  -- (S)  &amp;size(80%){2006-12-19 20:42:42} 
- セッションのサンプルプログラムをUPしました。入力フォームは明日UPします  -- (N)  &amp;size(80%){2006-12-22 01:05:53} 
- ちょっと実験のレポートに手間取って、こっちのプログラム終わらないかも……upするの土曜になったらごめんなさい。  -- (Y)  &amp;size(80%){2006-12-22 10:47:12} 
- 入力フォームUPしました。俺も似たような感じで遅れていたので、全然気にしないで大丈夫ですよ＞Y  -- (N)  &amp;size(80%){2006-12-22 15:09:25} 
- 次はいつどこで集まる？今日ないんでしょ？  -- (ape)  &amp;size(80%){2006-12-22 16:55:07} 
- 私は12/25（月）か12/27（水）、または1/5（金）～ならいつでも学校に来れる。  -- (Y)  &amp;size(80%){2006-12-22 19:18:02} 
- 土曜にupって言ったけど、明日学校開いてないらしい。家の回線がいま使えないので、今日upできなかったら月曜になります。本当にごめん。orz  -- (Y)  &amp;size(80%){2006-12-22 19:19:14} 
- 時間切れしました。月曜にupします。土日中に連絡がある場合は、携帯の方にお願いします。ずれ込んだ分、コメントとかきちんと入れて直しが少ないようにしておきますので……。では本当、すみませんでした。  -- (Y)  &amp;size(80%){2006-12-22 21:25:54} 
- upしました。色々と変なところがあるので、まだボタンをつけてません。  -- (Y)  &amp;size(80%){2006-12-25 14:06:39} 
- UP確認。プログラム参照中・・・。俺は３０、３１以外なら集まれるよ。どうせ学校にいるしな！  -- (N)  &amp;size(80%){2006-12-25 15:06:45} 
- つか今知ったんだけど１２月２８日～１月４日まで学校あいてないらしいぞ  -- (N)  &amp;size(80%){2006-12-25 15:13:32} 
- うん、今書こうとしたけど、１２月２８日～１月４日は図書館棟も開いてないよ。  -- (Y)  &amp;size(80%){2006-12-25 15:15:08} 
- 駄目だ。ボタン、Swingでの配置じゃ外部設計の通りにするの難しい。カラーパレット同様、灰色の四角に&quot;次へ&quot;って書いて、その上をクリックしたら&quot;次へ&quot;の動作という風にするよ。  -- (Y)  &amp;size(80%){2006-12-25 15:24:28} 
- それは構わないのだけれど、チャット入れないかいYさん  -- (N)  &amp;size(80%){2006-12-25 16:53:15} 
- 出掛けてた。ボタン解決できそう。チャット今から入る。  -- (Y)  &amp;size(80%){2006-12-25 17:15:34} 
- 画像の表示はAppletでもできるようになったけど、画像ファイルの出力はAppletではできない。プログラム全体をJSP（htmlで呼び出すApplet）ではなくjavaアプリケーションに書き直すか、cgiに投げるかしないと……。  -- (Y)  &amp;size(80%){2006-12-30 14:24:21} 
- cgiは間に合いそうにないなあ……今出来ているとこだけ↓（ファイル出力が未実装（12/30））にzipでupしておく。A君は000000000000.jpg~999999999999.jpgの画像作ってたよね。表示されるかどうかテストしておいて。  -- (Y)  &amp;size(80%){2006-12-30 16:02:28} 
- テストしておく。関係ないけど55社来るそうだよ。最後の講義で  -- (ape)  &amp;size(80%){2006-12-30 23:47:51} 
- 次回は５日です。  -- (S)  &amp;size(80%){2007-01-03 02:45:24} 
- 何時に集まる？　なるべく早いほうがいいんだけど  -- (ape)  &amp;size(80%){2007-01-04 21:38:16} 
- 10  -- (S)  &amp;size(80%){2007-01-05 06:28:06} 
- 10  -- (S)  &amp;size(80%){2007-01-05 06:28:14} 
- １０時とかで平気なんかぁ～？  -- (S)  &amp;size(80%){2007-01-05 06:28:52} 
- http://www2.cc.teu.ac.jp/~hp025/  -- (Y)  &amp;size(80%){2007-01-05 15:10:54} 
- ぇ～　携帯壊れた・・連絡つかないんで、よろしく  -- (S)  &amp;size(80%){2007-01-07 21:33:02} 
- 火曜日って何時集合なの？  -- (ape)  &amp;size(80%){2007-01-08 22:48:28} 
- 俺はメールできないから、とりあえず、３人で話して＾＾；　俺ゎ授業ないし  -- (S)  &amp;size(80%){2007-01-09 09:29:08} 
- いつも通り、13:00で。ただメディアロビーは込んでる。（今、いるけれど）  -- (Y)  &amp;size(80%){2007-01-09 11:51:25} 
- どこか開いているところ解る人いる？  -- (Y)  &amp;size(80%){2007-01-09 11:52:32} 
- 間違えた、今日は5時間目が終わってからだっけ。中村先生に、金曜の四時間目に予行練習しますってメール返しておくよ。  -- (Y)  &amp;size(80%){2007-01-09 12:07:50} 
-  
- http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=000000000009.jpg  -- (発表に使う写真)  &amp;size(80%){2007-01-09 18:43:21} 
- 予行演習は金曜の3時間目です。  -- (Y)  &amp;size(80%){2007-01-09 19:32:40} 
- path設定し直したんだが、コマンドは使えるようになったものの、mysqlにエラーがでて実行できない。アンインストールして入れ直す？  -- (ape)  &amp;size(80%){2007-01-09 21:51:17} 
- すまん、明日までにやることできそうにない  -- (ape)  &amp;size(80%){2007-01-10 21:27:49} 
- SQLのことゎわからん＾＾；　どぉにかたのむ  -- (S)  &amp;size(80%){2007-01-10 23:35:21} 
- どこに集まってますか？  -- (Y)  &amp;size(80%){2007-01-11 13:27:20} 
- 502~  -- (S)  &amp;size(80%){2007-01-11 13:45:08}  
- アンケートの案内がいっぱいきてるねぇ～  -- (S)  &amp;size(80%){2007-02-01 23:27:19} 
- 締め切りは1/31だよ。私は答えたけど……。（汗）  -- (名無しさん)  &amp;size(80%){2007-02-02 12:14:18} 
- http://www20.atwiki.jp/sany/pages/31.html  -- (最終版をまとめたページです)  &amp;size(80%){2007-02-16 13:11:53} 
    </description>
    <dc:date>2009-06-01T09:18:06+09:00</dc:date>
    <utime>1243815486</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sany/pages/8.html">
    <title>開発計画書</title>
    <link>https://w.atwiki.jp/sany/pages/8.html</link>
    <description>
      -印刷物
--[[開発計画書_表紙_V0.1（2006/11/10）&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=8&amp;file=%E5%9C%9F%E6%9B%9C_%E9%96%8B%E7%99%BA%E8%A8%88%E7%94%BB%E6%9B%B8%E8%A1%A8%E7%B4%99_V0.1.doc]]
--[[開発計画書_中身_V0.1（2006/11/10）&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=8&amp;file=%E5%9C%9F%E6%9B%9C_%E9%96%8B%E7%99%BA%E8%A8%88%E7%94%BB%E6%9B%B8%E4%B8%AD%E8%BA%AB_V0.1.doc]]
--[[開発計画書V1.0（2006/11/24）&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=8&amp;file=%E9%96%8B%E7%99%BA%E8%A8%88%E7%94%BB%E6%9B%B8Ver.1.0.doc]]
*目次
#contents()

*1　納期
　外部設計書の納期は平成18年11月25日とする。[[内部設計]]書の納期は平成18年12月9日とする。システムソースプログラムの納期を平成19年1月13日とする。

*2　開発モデル
　ウォーターフォールモデルを採用する。

*3　システムの開発環境
以下の表1に示す開発環境でシステムを構築する。
OS：Linux &amp; Windows
言語:Java
ドキュメント作成ツール:word

*4　生産物の規模
システム全体で1000行のソースコードを作成する予定である。

*5　開発体制
以下のメンバーで開発を進めていく予定である。
c0104200 鈴木亮　プロジェクトリーダ
c0104014 ape　サブリーダ
c0104286 西沢桂太　ドキュメント管理
c0104401 吉原美樹　タイムキーパ
メンバーが少人数であるため、分担はあくまで目安でありコーディングは4人で行う。全体の進捗状況は、木曜の午後を基本に実際に集まって行うミーティング、wiki上でのやりとりやチャットログで把握する。

*6　システム開発上の留意点
システム開発側の視点にとらわれず、お客様が操作のし易い見た目や表示を心がけるようにする。


*7　プロジェクトを進める上での課題と対策
・講義が隔週で期間も短いため、時間外でチームが自主的に作業を進める必要がある。
・この計画で初めて顔を合わせるチームメンバー同士もいるため、活発な意見交換が必要とされるが時期的に全員が集まることは難しい。大学・自宅のネット環境や携帯を利用して、連絡や情報交換を行うことでこれを解決する。
・納期を厳守する。

#comment_num2(above)    </description>
    <dc:date>2007-05-22T21:41:24+09:00</dc:date>
    <utime>1179837684</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sany/pages/31.html">
    <title>最終版をまとめたページ</title>
    <link>https://w.atwiki.jp/sany/pages/31.html</link>
    <description>
      **まとめ
　プログラムソースはＡ君にもらってください。
　レビュー記録表・テスト項目表・障害記録表などは、原本を提出してしまってますので手元にありません。
-[[システム提案書&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=5&amp;file=%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E9%96%8B%E7%99%BA%E6%9B%B8Ver.1.0.doc]]
-[[開発計画書&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=8&amp;file=%E9%96%8B%E7%99%BA%E8%A8%88%E7%94%BB%E6%9B%B8Ver.1.0.doc]]
-[[外部設計書&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=23&amp;file=%E5%A4%96%E9%83%A8%E8%A8%AD%E8%A8%88%E6%9B%B8Ver1.4.doc]]
-[[内部設計書&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=%E5%86%85%E9%83%A8%E8%A8%AD%E8%A8%88Ver1.2.doc]]
-[[品質見解&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=31&amp;file=sany%E5%93%81%E8%B3%AA%E8%A6%8B%E8%A7%A31.0.doc]]    </description>
    <dc:date>2007-02-28T15:06:54+09:00</dc:date>
    <utime>1172642814</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sany/pages/1.html">
    <title>トップページ</title>
    <link>https://w.atwiki.jp/sany/pages/1.html</link>
    <description>
      //編集だけならログインをしなくても出来ます。
* インデックス
-[[提案先企業や参考]]
-[[システム提案書]]（本）
-[[システム提案書　NYサイド　1,2,4,9]]
-[[開発計画書]]
-[[外部設計書]]
-[[内部設計]]

-[[発表用資料]]
-[[プログラムサンプル]]

-[[最終版をまとめたページ]]

-[[内部設計書Ver0.1&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=%E5%86%85%E9%83%A8%E8%A8%AD%E8%A8%88.doc]]
-[[内部設計書Ver1.0&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=%E5%86%85%E9%83%A8%E8%A8%AD%E8%A8%88Ver1.0.doc]]
-[[内部設計書Ver1.1&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=%E5%86%85%E9%83%A8%E8%A8%AD%E8%A8%88%E6%9B%B8Ver1.1.doc]]
-[[内部設計書Ver1.2&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=%E5%86%85%E9%83%A8%E8%A8%AD%E8%A8%88Ver1.2.doc]]

-[[session.setAttribute,getAttributeサンプル１ &gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=login1-1.jsp]]
-[[session.setAttribute,getAttributeサンプル２ &gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=login1-2.jsp]]
-[[ログインフォーム &gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=loginform.html]]

-[[相談用チャット&gt;http://sany.cat.cgiboy.com/]]：[[管理&gt;http://sany.cat.cgiboy.com/admin.cgi]]（パスはwikiのものと同じです）
--[[ログ_11/10（システム化による効果について）&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=11_10.html]]
**　連絡とか伝言
#comment_num2(avobe)

** 画像作成モジュール
-[[ファイル出力が未実装（12/30）&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=12_30.zip]]

-[[コメントを追加したもの（1/5）]]

　パッケージ名はプログラム中の一行目で宣言している通り、progです。
-[[モジュールを呼び出すドライバ（Prog.java）&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=Prog.java]]
-[[画像作成モジュール（img_make.java）&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=img_make.java]]

-[[画像作成モジュールについて]]

** 受付完了モジュール
-[[カウンタを呼び出し、受付完了メッセージを表示するjsp(exit_reception.jsp) &gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=exit_reception.jsp]]
-[[カウンタ変数を保持し、呼び出される毎に変数に１を加算するjava(Counter.java) &gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=1&amp;file=Counter.java]]


** 端書
-4人が場所と時間を決めて集まるのは、頻繁には難しそうなので、各自の進捗の度合いを、ここで小まめにupし合って確認できればと思いレンタルしておきました。
--プログラムのソースなどもページに直接貼り付けて、他の人たちがコピー＆ペースト→コンパイルでチェックなど簡単に出来そうかなと。
-コメントはログインをしなくても出来ます。編集はログインしてからでないと出来ません。
-wikiは自動的にバックアップを取ります。（右上プルダウンメニューまたはページ下部）
-一応、携帯からでも確認とコメントが可能です。編集は出来ません。
-ブラウザはRSSブックマークをすると更新が確認しやすいです。    </description>
    <dc:date>2007-02-16T13:06:13+09:00</dc:date>
    <utime>1171598773</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sany/pages/23.html">
    <title>外部設計書</title>
    <link>https://w.atwiki.jp/sany/pages/23.html</link>
    <description>
      *外部設計書
-[[外部設計書 5~7（2006/11/19）&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=23&amp;file=%E5%9C%9F%E6%9B%9C_%E5%A4%96%E9%83%A8%E8%A8%AD%E8%A8%88%E6%9B%B8_V0.1.doc]]
-[[外部設計書 5~7（2006/11/24）&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=23&amp;file=%E5%9C%9F%E6%9B%9C_%E5%A4%96%E9%83%A8%E8%A8%AD%E8%A8%88%E6%9B%B8_V0.2.doc]]
-[[外部設計書 Ver1.2（2006/12/08）&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=23&amp;file=%E5%A4%96%E9%83%A8%E8%A8%AD%E8%A8%88%E6%9B%B8Ver1.2.doc]]
-[[外部設計書 Ver1.4（2006/12/08）&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=23&amp;file=%E5%A4%96%E9%83%A8%E8%A8%AD%E8%A8%88%E6%9B%B8Ver1.4.doc]]    </description>
    <dc:date>2007-01-24T17:27:34+09:00</dc:date>
    <utime>1169627254</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sany/pages/30.html">
    <title>発表用資料</title>
    <link>https://w.atwiki.jp/sany/pages/30.html</link>
    <description>
      ** システムを動かす
それでは実際にシステムを動かしてみます。
初期画面では、会員カードを持った顧客はバーコードリーダーで会員番号を読み込みます。
会員カードを持たない顧客はそのまま「次へ」を押します。

このメニュー選択画面以降から、ページ左上には進行具合を表示し、ページ右上には「前へ戻る」と「取り消し」のボタンを表示しています。「前へ戻る」を押すと一つ前のページに戻り、「取り消し」を押すと初期画面に戻ります。
メニュー選択画面ではまず、データベースで入力された会員番号から名前を探し、表示します。顧客はメニューを選択します。注文したいメニューにチェックを入れて、注文が決まったら「決定」を押します

もし顧客の選んだ注文にカラーが選ばれていた場合、この髪色選択画面に移動します。カラーが選ばれていなかったら確認画面に移動します。カラー選択画面では、顧客は色を変えたい範囲を選択し、右側のカラーパレットで色を選びます。範囲や色は何度でも選択することができます。自分の気に入った画像になったら「」を押します。

確認画面です。確認画面ではメニュー選択画面で顧客が選んだメニューが表示されています。メニューの右側は髪色選択画面で変更した画像が表示されます。今回は都合上、サンプル画像を表示しています。
メニューに間違いがない場合「」を押します。

受け付け終了画面です。
受け付けたメッセージと受け付け番号を表示して、10秒後に初期画面に戻ります。    </description>
    <dc:date>2007-01-09T14:18:34+09:00</dc:date>
    <utime>1168319914</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sany/pages/29.html">
    <title>コメントを追加したもの（1/5）</title>
    <link>https://w.atwiki.jp/sany/pages/29.html</link>
    <description>
      /*  2007/1/5
 *  c0104401 吉原美樹
 *  土曜prog img_make.java
 *  写真（jpg）を読み込みサンプルを作成しpngファイルに出力する
 *
 *  Ver.0.5 int型の引数で呼び出されるように修正
 *  Ver.0.8 &quot;次へ&quot;を設置（押すとhair_sample.pngを上書き保存）
 *  Ver.1.0 &quot;次へ&quot;ボタンを破棄（画像の保存は変数で制御し
 *  一番最初とカラーパレットから色を選ぶ度に行う
 *  毎回jpgを読み込んでいたものを
 *  起動時に一度だけ読み込むように変更
 *  それに伴いアルファ値のセット・リセットを記述
 *  コメントを追加
 *  範囲選択の部分を修正
 *  ドラッグ中に写真外に出た場合は写真のへりに点を取ったことにする
 *  変数の出力ファイル名（output_name）以外をprivate化
 *	 Ver.1.2 コメントの追加
 *　アプレットでも画像を表示できるように */


import java.applet.Applet;
import java.awt.AlphaComposite;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.geom.GeneralPath;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;

public class img_make extends Applet{
	/**
	 *
	 */

	// シリアル番号
	private static final long serialVersionUID = 1L;

	// ----------------- 変数の宣言↓ここから↓ -----------------

	// 顧客番号
	private String name_id = &quot;0000000000000.jpg&quot;; 	// 初期値は0000000000000
	private int nameid_num = 12 ; 				// 何桁か

	// 出力するファイル名（外部から操作可能）
	String filename = &quot;hair_sample.png&quot; ;

	// 表示
	private Graphics2D g_base;
	private BufferedImage g_baseImage = null;

	// ベース（全体を一枚の絵にしてから表示する）
	private Graphics2D base_draw;
	private BufferedImage baseImage = null;

	// 写真の部分(ファイルに出力する）
	private Graphics2D pict_draw;
	private BufferedImage hairImage = null;
	private Image in_img ;

	// 画面のサイズ
	private static int win_width = 750 ; 		// 横
	private static int win_height = 440 ; 		// 縦

	// トリミングや空白の数値
	private int pict_left = 20 ; 		// 写真左部の空白
	private int pict_top = 20 ; 		// 写真上部の空白
	private int pict_width = 260 ; 		// 写真の横
	private int pict_height = 400 ; 	// 写真の縦

	private int colorbox_size = 100 ;	// カラーパレットのひとつの升目の縦と横（正方形）
	private int colorbox_gap = 5; 		// カラーパレット同士の間の空白

	// カラーパレット1左部↓
	private int colorbox1_left = pict_left + pict_width + 40 ;
	// カラーパレット2左部↓
	private int colorbox2_left = colorbox1_left + colorbox_size + colorbox_gap ;
	// カラーパレット3左部↓
	private int colorbox3_left = colorbox2_left + colorbox_size + colorbox_gap ;
	// カラーパレット4左部↓
	private int colorbox4_left = colorbox3_left + colorbox_size + colorbox_gap ;

	//カラーパレット1~4上部↓
	private int colorbox1_top = pict_top + 60 ;

	// カラーパレット5左部↓
	private int colorbox5_left = colorbox1_left ;
	// カラーパレット6左部↓
	private int colorbox6_left = colorbox5_left + colorbox_size + colorbox_gap ;
	// カラーパレット7左部↓
	private int colorbox7_left = colorbox6_left + colorbox_size + colorbox_gap ;
	// カラーパレット8左部↓
	private int colorbox8_left = colorbox7_left + colorbox_size + colorbox_gap ;

	// カラーパレット5~8上部↓
	private int colorbox5_top = colorbox1_top + colorbox_size + colorbox_gap ;

	// マウスの座標を読み込むための変数
	private double mouseX = 0 ; 		// x座標
	private double mouseY = 0 ; 		// y座標

	// カラーリング指定の色宣言
	private String what_color = &quot;0x000000&quot;; // これで指定（初期値は黒）
	// 上の段の四色
	private String color_1 = &quot;0xFF0000&quot;; // 赤
	private String color_2 = &quot;0x000000&quot;; // 黒
	private String color_3 = &quot;0xFFFF00&quot;; // 黄
	private String color_4 = &quot;0x0000FF&quot;; // 青

	// 下の段の四色
	private String color_5 = &quot;0x999999&quot;; // 灰
	private String color_6 = &quot;0x009933&quot;; // 緑
	private String color_7 = &quot;0x663300&quot;; // 茶
	private String color_8 = &quot;0xFFCCCC&quot;; // ピンク

	// 髪色の範囲が選択されているか否か
	private int hair_scope_num = 0 ; 		// 選択された点はいくつあるか（2未満では未選択と判定）
	private int hair_pointMax = 10000 ; 	// 点をいくつ使うか
	private int hairX[] = new int[hair_pointMax]; // 選択された点のx座標
	private int hairY[] = new int[hair_pointMax]; // 選択された点のy座標

	// 髪色の範囲を選択している最中か否か
	//（マウスのボタンが写真中で行われた場合にtrue、マウスのボタンが離されるとfalse）
	private boolean hair_scoping = false ; 	// 初期値は&quot;選択中ではない&quot;
	private boolean read_pict = true ; 		// 写真を背景に読み込むか

	private double point_beginX; 	// 選択線の始点x座標
	private double point_beginY; 	// 選択線の始点y座標
	private double point_endX; 		// 選択線の終点x座標
	private double point_endY; 		// 選択線の終点y座標

	// 領域選択に使う変数
	private int line_count = 0;
	private int line_every = 3; // 何回呼び出される毎にポイントを取得するか

	// カラーパレットのボタンが押されたかどうか
	private boolean hair_coloring = false ;

	// 画像を保存するかどうか
	private boolean pict_out = false ;

	// 透過度を指定
	private float alpha = 0.5f; // between 0.0f and 1.0f
	// セット
	private AlphaComposite alphaComposite_set = AlphaComposite.getInstance( AlphaComposite.SRC_OVER, alpha );
	// リセット（不透明に戻す）
	private AlphaComposite alphaComposite_reset = AlphaComposite.getInstance( AlphaComposite.SRC_OVER, 1.0f );
	int width_;
	int height_;
    MediaTracker tracker;
	// ----------------- 変数の宣言↑ここまで↑ -----------------

	public void init() {
		// タイマーの初期化
		tracker = new MediaTracker(this);

		// 画面をリサイズ
		resize(win_width,win_height);
		width_=getSize().width;
		height_=getSize().height;
		setBackground(Color.decode(&quot;0xFFFFFF&quot;));
		setForeground(Color.white);

		g_baseImage = (BufferedImage) createImage(width_,height_);
		g_base = (Graphics2D) g_baseImage.getGraphics();

		int i,j,id, ex_num = 0 ; 	// int変数を文字列に変換するための準備1
		String ex_str;
		ex_str = getParameter(&quot;id_name&quot;) ; 		// int変数を文字列に変換するための準備2
		id = Integer.parseInt (ex_str); 		// 顧客番号をString型からint型に変換

		// ファイル名の桁数（nameid_num）に足りない分の桁数を数える
		if(id == 0){ // id番号が0のときは別処理
			ex_num = nameid_num ;
		}
		else{// id番号が0より大きい場合
			j = id ;
			for(i=0;j&gt;0;i++){// 桁数を数える
				j = j/10 ;
				ex_num = nameid_num - i;
			}
		}//else

		name_id = &quot;&quot;; 				// name_idを空にする
		for(i=0;i&lt;ex_num-1;i++){ 	// 足りない分だけ頭に0を詰める
			name_id = name_id + &quot;0&quot;;
		}

		name_id = name_id + ex_str; // 受け取ったid番号を後ろにつける

	    // 一度だけhairImage_bufに写真を読み込んでおき
	    // 書き換えるときはhairImageの上にhairImage_bufを上書きする
	    in_img = getImage(getDocumentBase(),&quot;data/&quot;+name_id+&quot;.jpg&quot;);
	    tracker.addImage(in_img, 0);

	    // マウスがドラッグをしているときの動きを監視
		addMouseMotionListener(new MouseMotionAdapter() {
			public void mouseDragged(MouseEvent e) {
				// 髪色の範囲を選択中のときのみ実行する
				if(hair_scoping){
		    		mouseX = e.getX(); // x座標
		    		mouseY = e.getY(); // y座標
		    		if(mouseX &lt; pict_left + 1){// x座標が範囲より左にあった
		    			mouseX = pict_left + 1 ; // x座標を左縁にとる
		    		}
		    		else if(mouseX &gt; pict_left + pict_width - 1){// x座標が範囲より右にあった
		    			mouseX = pict_left + pict_width - 1 ;// x座標を右縁にとる
		    		}
		    		if(mouseY &lt; pict_top + 1){// y座標が範囲より上にあった
		    			mouseY = pict_top + 1 ;// y座標を上縁にとる
		    		}
		    		else if(mouseY &gt; pict_top + pict_height - 1){// x座標が範囲より下にあった
		    			mouseY = pict_top + pict_height - 1 ;// y座標を下縁にとる
		    		}

					line_count++; // 範囲の選択中にこの命令が何度呼び出されたかを加算
					if(line_count%line_every == 0){// 何度か呼び出されるごとに点をとる
						point_beginX = point_endX; // 始点のx座標（前回の終点のx座標）
						point_beginY = point_endY; // 始点のy座標（前回の終点のy座標）
						point_endX = mouseX - pict_left; // 終点のx座標
						point_endY = mouseY - pict_top; // 終点のy座標

						hairX[hair_scope_num] = (int)point_endX; // 選択点のx座標
						hairY[hair_scope_num] = (int)point_endY; // 選択点のy座標
						hair_scope_num++; // 次の選択点へ

						// 点が移動していた場合だけ線を描く
						// (始点のx座標と終点のx座標が一致しない
						// または、始点のy座標と終点のy座標が一致しない）
						if((point_beginX != point_endX)||(point_beginY != point_endY)){
							repaint(); // 描画関数を呼び出す
						}
					}//if(line...
				}//if(hair...
			}
		});
		addMouseListener(new MouseAdapter() {

	    	// マウスのボタン（左）が押された
	    	public void mousePressed(MouseEvent e){
	    		mouseX = e.getX(); // x座標
	    		mouseY = e.getY(); // y座標

	    		// --- 写真の中だった場合↓ここから↓ ---
	    		if((mouseX &gt; pict_left &amp;&amp; mouseX &lt; pict_left + pict_width)
	    				&amp;&amp;(mouseY &gt; pict_top &amp;&amp; mouseY &lt; pict_top + pict_height)){

	    			// hair_scopingをtrueにすることで
	    			// 髪色の範囲を選択中であることを示す
	    			hair_scoping = true ;

	    			// 初期化
	    			hair_scope_num = 0;		// 選択点を0に
					read_pict = true ; 		// 写真を読み込む
	    			hair_coloring = false ;	// カラーパレット未選択

	    			point_beginX = point_endX = mouseX - pict_left; // 始点x座標＝終点x座標
					point_beginY = point_endY = mouseY - pict_top; 	// 始点y座標＝終点y座標

					hairX[hair_scope_num] = (int)point_endX ;	// 選択点のx座標
					hairY[hair_scope_num] = (int)point_endY ; 	// 選択点のy座標
					hair_scope_num++; // 次の選択点へ
	    		}
	    		// --- 写真の中だった場合↑ここまで↑ ---

	    		// --- カラーパレットの上部中だった場合↓ここから↓ ---
	    		else if(mouseY &gt; colorbox1_top &amp;&amp; mouseY &lt; colorbox1_top + colorbox_size){
		    		// カラーパレットの1の中だった場合
		    		if(mouseX &gt; colorbox1_left &amp;&amp; mouseX &lt; colorbox1_left + colorbox_size){
		    			what_color = color_1 ;
						read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
		    		// カラーパレットの2の中だった場合
		    		else if(mouseX &gt; colorbox2_left &amp;&amp; mouseX &lt; colorbox2_left + colorbox_size){
		    			what_color = color_2 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
		    		// カラーパレットの3の中だった場合
		    		else if(mouseX &gt; colorbox3_left &amp;&amp; mouseX &lt; colorbox3_left + colorbox_size){
		    			what_color = color_3 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
		    		// カラーパレットの4の中だった場合
		    		else if(mouseX &gt; colorbox4_left &amp;&amp; mouseX &lt; colorbox4_left + colorbox_size){
		    			what_color = color_4 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
	    		}
	    		// --- カラーパレットの上部中だった場合↑ここまで↑ ---

	    		// --- カラーパレットの下部中だった場合↓ここから↓ ---
	    		else if(mouseY &gt; colorbox5_top &amp;&amp; mouseY &lt; colorbox5_top + colorbox_size){
		    		// カラーパレットの5の中だった場合
		    		if(mouseX &gt; colorbox5_left &amp;&amp; mouseX &lt; colorbox5_left + colorbox_size){
		    			what_color = color_5 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();

		    		}
		    		// カラーパレットの6の中だった場合
		    		else if(mouseX &gt; colorbox6_left &amp;&amp; mouseX &lt; colorbox6_left + colorbox_size){
		    			what_color = color_6 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
		    		// カラーパレットの7の中だった場合
		    		else if(mouseX &gt; colorbox7_left &amp;&amp; mouseX &lt; colorbox7_left + colorbox_size){
		    			what_color = color_7 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
		    		// カラーパレットの8の中だった場合
		    		else if(mouseX &gt; colorbox8_left &amp;&amp; mouseX &lt; colorbox8_left + colorbox_size){
		    			what_color = color_8 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
	    		}
	    		// --- カラーパレットの下部中だった場合↑ここまで↑ ---

	    	}//mousePressed()

	    	// マウスのボタン（左）が離された
	    	public void mouseReleased(MouseEvent e){
				// 髪色の範囲を選択中のときのみ実行する
				if(hair_scoping){
					point_beginX = point_endX;
					point_beginY = point_endY;
					point_endX = hairX[0]; // 選択範囲の基点を終点に（x座標）
					point_endY = hairY[0]; // 選択範囲の基点を終点に（y座標）
					repaint();
					hair_scoping = false ; // 初期化（髪の範囲選択を終えた）
				}//if(hair...
	    	}//mouseReleased()

	    });//addMouseListener()

		// baseImageは一回だけ作成される
	      baseImage = new BufferedImage(getWidth(), getHeight(),
		       		BufferedImage.TYPE_INT_BGR);
		       // baseImageに手を加える宣言
		       base_draw = baseImage.createGraphics();
		       base_draw.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
		       		RenderingHints.VALUE_ANTIALIAS_ON);

		       // hairImageの初期化（真っ黒）
	    	   hairImage = new BufferedImage(pict_width, pict_height,
		           		BufferedImage.TYPE_INT_BGR);

		       // hairImageに手を加える宣言
		       pict_draw = hairImage.createGraphics();
		       pict_draw.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
					RenderingHints.VALUE_ANTIALIAS_ON);

		       // 画面全体を白く塗りつぶす
		       base_draw.setColor(Color.white);
		       base_draw.fill(new Rectangle2D.Double(0, 0, win_width, win_height));

		       // 黒で文字を書く
		       base_draw.setColor(Color.black);
		       base_draw.setFont(new Font(&quot;Serif&quot;,Font.BOLD,30)); // フォントの設定
		       base_draw.drawString(&quot;カラーパレット&quot;,colorbox1_left,colorbox1_top-20);

		       // カラーパレット1
		       base_draw.setColor(Color.decode(color_1));
		       base_draw.fill(new Rectangle2D.Double(colorbox1_left, colorbox1_top,
		       		colorbox_size, colorbox_size));
		       // カラーパレット2
		       base_draw.setColor(Color.decode(color_2));
		       base_draw.fill(new Rectangle2D.Double(colorbox2_left, colorbox1_top,
		       		colorbox_size, colorbox_size));
		       // カラーパレット3
		       base_draw.setColor(Color.decode(color_3));
		       base_draw.fill(new Rectangle2D.Double(colorbox3_left, colorbox1_top,
		       		colorbox_size, colorbox_size));
		       // カラーパレット4
		       base_draw.setColor(Color.decode(color_4));
		       base_draw.fill(new Rectangle2D.Double(colorbox4_left, colorbox1_top,
		       		colorbox_size, colorbox_size));

		       // カラーパレット5
		       base_draw.setColor(Color.decode(color_5));
		       base_draw.fill(new Rectangle2D.Double(colorbox5_left, colorbox5_top,
		       		colorbox_size, colorbox_size));
		       // カラーパレット6
		       base_draw.setColor(Color.decode(color_6));
		       base_draw.fill(new Rectangle2D.Double(colorbox6_left, colorbox5_top,
		       		colorbox_size, colorbox_size));
		       // カラーパレット7
		       base_draw.setColor(Color.decode(color_7));
		       base_draw.fill(new Rectangle2D.Double(colorbox7_left, colorbox5_top,
		       		colorbox_size, colorbox_size));
		       // カラーパレット8
		       base_draw.setColor(Color.decode(color_8));
		       base_draw.fill(new Rectangle2D.Double(colorbox8_left, colorbox5_top,
		       		colorbox_size, colorbox_size));

		       // 一番初めは、画像を保存する
		       pict_out = true ;
	}


	public void start(){
	        try {// 画像ファイルが読み込まれるまで待つ
	            tracker.waitForAll();
	        } catch (InterruptedException e) {
	        }
    }

	public void update(Graphics g)
	{// 再描画
		paint(g);

	}
	// ---------------- 描画関数↓ここから↓ ----------------------------
	public void paint(Graphics g){
		int i;
		g_base = (Graphics2D)g;

		// ------------- 写真部分の描画↓ここから↓ ----------------
		if(read_pict){// 最初と再描画する場合
				// hairImageにhairImage_bufを上書き
				pict_draw.drawImage(in_img, 0, 0, this);
				// 写真の読み込みをしない（選択中は線を書き加えていくだけ）
				read_pict = false ;
		}
		// カラーパレットのボタンが押された
		if(hair_coloring){
			pict_draw.setComposite( alphaComposite_set );		// 透過度をセット
			pict_draw.setColor(Color.decode(what_color));		// 選択された色をセット

			// 範囲選択済みの場合はポリゴンを作成し塗りつぶす
			if(hair_scope_num&gt;2){
				// 新規オブジェクトの構築（ポリゴン）
				GeneralPath hair_polygon = new GeneralPath(GeneralPath.WIND_EVEN_ODD);

				hair_polygon.moveTo(hairX[0], hairY[0]); 	// 基点を移動
				for(i=1;i&lt;hair_scope_num;i++){ 				// 点の数だけ繰り返す
					// 前の点から現在の点へポリゴン
					hair_polygon.lineTo(hairX[i],hairY[i]);
				}
				hair_polygon.closePath();					// ポリゴンを閉じる
				pict_draw.fill(hair_polygon);				// 塗りつぶす
			}
			// 範囲選択済みでない場合は写真全体を塗りつぶす
			else{
				pict_draw.fill(new Rectangle2D.Double(0, 0, pict_width, pict_height));
			}

			// 画像を保存する
			pict_out = true ;
			pict_draw.setComposite( alphaComposite_reset );			// 透過度をリセット
	   }//if(hair...

	   // カラーパレットのボタンが押された以外で再描画
	   // （写真中でマウスのボタンが押され、髪色範囲指定の最中）
	   else{
	       BasicStroke wideStroke = new BasicStroke(2.0f);
	       pict_draw.setStroke(wideStroke);
	       pict_draw.setPaint(Color.red);
	       pict_draw.drawLine((int)point_beginX,(int)point_beginY,(int)point_endX,(int)point_endY);
	   }//else
		// ------------- 写真部分の描画↑ここまで↑ ----------------

	   // 作成した写真（hairImage）をベース（baseImage）に貼り付ける
		base_draw.drawImage(hairImage, pict_top, pict_left, this);
		// ベース（baseImage）を表示する
		g_base.drawImage(baseImage, 0, 0, this);

		if(pict_out){// 作成した写真（hairImage）を保存する

// ここができない

			// 写真の保存をオフにする
			pict_out = false ;
		}//if
	}
	// ---------------- 描画関数↑ここまで↑ ----------------------------
}    </description>
    <dc:date>2007-01-05T15:21:00+09:00</dc:date>
    <utime>1167978060</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sany/pages/28.html">
    <title>img_make.java_applet</title>
    <link>https://w.atwiki.jp/sany/pages/28.html</link>
    <description>
      package prog;

/*  2006/12/26
 *  c0104401 吉原美樹
 *  土曜prog img_make.java
 *  写真（jpg）を読み込みサンプルを作成しpngファイルに出力する
 *  
 *  Ver.0.5 int型の引数で呼び出されるように修正
 *  Ver.0.8 &quot;次へ&quot;を設置（押すとhair_sample.pngを上書き保存）
 *  Ver.1.0 &quot;次へ&quot;ボタンを破棄（画像の保存は変数で制御し
 *  一番最初とカラーパレットから色を選ぶ度に行う
 *  毎回jpgを読み込んでいたものを
 *  起動時に一度だけ読み込むように変更
 *  それに伴いアルファ値のセット・リセットを記述
 *  コメントを追加
 *  範囲選択の部分を修正
 *  ドラッグ中に写真外に出た場合は写真のへりに点を取ったことにする
 *  変数の出力ファイル名（output_name）以外をprivate化 */

import java.applet.Applet;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.geom.GeneralPath;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class img_make extends Applet{
	/**
	 *
	 */

	// シリアル番号
	private static final long serialVersionUID = 1L;

	// ----------------- 変数の宣言↓ここから↓ -----------------

	// 顧客番号
	private String name_id = &quot;0000000000000&quot;; 	// 初期値は0000000000000
	private int nameid_num = 12 ; 				// 何桁か

	// 出力するファイル名（外部から操作可能）
	String output_name = &quot;hair_sample.png&quot; ;

	// 表示
	private Graphics2D g_base;

	// ベース（全体を一枚の絵にしてから表示する）
	private Graphics2D base_draw;
	private BufferedImage baseImage = null;

	// 写真の部分(ファイルに出力する）
	private Graphics2D pict_draw;
	private BufferedImage hairImage = null;
	private BufferedImage hairImage_buf = null;
	
	// 画面のサイズ
	private static int win_width = 750 ; 		// 横
	private static int win_height = 440 ; 		// 縦

	// トリミングや空白の数値
	private int pict_left = 20 ; 		// 写真左部の空白
	private int pict_top = 20 ; 		// 写真上部の空白
	private int pict_width = 260 ; 		// 写真の横
	private int pict_height = 400 ; 	// 写真の縦

	private int colorbox_size = 100 ;	// カラーパレットのひとつの升目の縦と横（正方形）
	private int colorbox_gap = 5; 		// カラーパレット同士の間の空白

	// カラーパレット1左部↓
	private int colorbox1_left = pict_left + pict_width + 40 ;
	// カラーパレット2左部↓
	private int colorbox2_left = colorbox1_left + colorbox_size + colorbox_gap ;
	// カラーパレット3左部↓
	private int colorbox3_left = colorbox2_left + colorbox_size + colorbox_gap ;
	// カラーパレット4左部↓
	private int colorbox4_left = colorbox3_left + colorbox_size + colorbox_gap ;

	//カラーパレット1~4上部↓
	private int colorbox1_top = pict_top + 60 ;

	// カラーパレット5左部↓
	private int colorbox5_left = colorbox1_left ;
	// カラーパレット6左部↓
	private int colorbox6_left = colorbox5_left + colorbox_size + colorbox_gap ;
	// カラーパレット7左部↓
	private int colorbox7_left = colorbox6_left + colorbox_size + colorbox_gap ;
	// カラーパレット8左部↓
	private int colorbox8_left = colorbox7_left + colorbox_size + colorbox_gap ;

	// カラーパレット5~8上部↓
	private int colorbox5_top = colorbox1_top + colorbox_size + colorbox_gap ;

	// マウスの座標を読み込むための変数
	private double mouseX = 0 ; 		// x座標
	private double mouseY = 0 ; 		// y座標

	// カラーリング指定の色宣言
	private String what_color = &quot;0x000000&quot;; // これで指定（初期値は黒）
	// 上の段の四色
	private String color_1 = &quot;0xFF0000&quot;; // 赤
	private String color_2 = &quot;0x000000&quot;; // 黒
	private String color_3 = &quot;0xFFFF00&quot;; // 黄
	private String color_4 = &quot;0x0000FF&quot;; // 青

	// 下の段の四色
	private String color_5 = &quot;0x999999&quot;; // 灰
	private String color_6 = &quot;0x009933&quot;; // 緑
	private String color_7 = &quot;0x663300&quot;; // 茶
	private String color_8 = &quot;0xFFCCCC&quot;; // ピンク

	// 髪色の範囲が選択されているか否か
	private int hair_scope_num = 0 ; 		// 選択された点はいくつあるか（2未満では未選択と判定）
	private int hair_pointMax = 10000 ; 	// 点をいくつ使うか
	private int hairX[] = new int[hair_pointMax]; // 選択された点のx座標
	private int hairY[] = new int[hair_pointMax]; // 選択された点のy座標

	// 髪色の範囲を選択している最中か否か
	//（マウスのボタンが写真中で行われた場合にtrue、マウスのボタンが離されるとfalse）
	private boolean hair_scoping = false ; 	// 初期値は&quot;選択中ではない&quot;
	private boolean read_pict = true ; 		// 写真を背景に読み込むか

	private double point_beginX; 	// 選択線の始点x座標
	private double point_beginY; 	// 選択線の始点y座標
	private double point_endX; 		// 選択線の終点x座標
	private double point_endY; 		// 選択線の終点y座標

	// 領域選択に使う変数
	private int line_count = 0;
	private int line_every = 3; // 何回呼び出される毎にポイントを取得するか

	// カラーパレットのボタンが押されたかどうか
	private boolean hair_coloring = false ;

	// 画像を保存するかどうか
	private boolean pict_out = false ;
	
	// 透過度を指定
	private float alpha = 0.3f; // between 0.0f and 1.0f
	// セット
	private AlphaComposite alphaComposite_set = AlphaComposite.getInstance( AlphaComposite.SRC_OVER, alpha );
	// リセット（不透明に戻す）
	private AlphaComposite alphaComposite_reset = AlphaComposite.getInstance( AlphaComposite.SRC_OVER, 1.0f );
	
	// ----------------- 変数の宣言↑ここまで↑ -----------------

	public void init() {
		int i,j,id, ex_num = 0 ; 	// int変数を文字列に変換するための準備1
		String ex_str;
		ex_str = getParameter(&quot;id_name&quot;) ; 		// int変数を文字列に変換するための準備2
		id = Integer.parseInt (ex_str); 		// 顧客番号をString型からint型に変換

		// ファイル名の桁数（nameid_num）に足りない分の桁数を数える
		if(id == 0){ // id番号が0のときは別処理
			ex_num = nameid_num ;
		}
		else{// id番号が0より大きい場合
			j = id ;
			for(i=0;j&gt;0;i++){
				j = j/10 ;
				ex_num = nameid_num - i;
			}
		}//else

		name_id = &quot;&quot;; 				// name_idを空にする
		for(i=0;i&lt;ex_num-1;i++){ 	// 足りない分だけ頭に0を詰める
			name_id = name_id + &quot;0&quot;;
		}

		name_id = name_id + ex_str; // 受け取ったid番号を後ろにつける

	    // マウスがドラッグをしているときの動きを監視
		addMouseMotionListener(new MouseMotionAdapter() {
			public void mouseDragged(MouseEvent e) {
				// 髪色の範囲を選択中のときのみ実行する
				if(hair_scoping){
		    		mouseX = e.getX(); // x座標
		    		mouseY = e.getY(); // y座標
		    		if(mouseX &lt; pict_left + 1){// x座標が範囲より左にあった
		    			mouseX = pict_left + 1 ; // x座標を左縁にとる
		    		}
		    		else if(mouseX &gt; pict_left + pict_width - 1){// x座標が範囲より右にあった
		    			mouseX = pict_left + pict_width - 1 ;// x座標を右縁にとる
		    		}
		    		if(mouseY &lt; pict_top + 1){// y座標が範囲より上にあった
		    			mouseY = pict_top + 1 ;// y座標を上縁にとる
		    		}
		    		else if(mouseY &gt; pict_top + pict_height - 1){// x座標が範囲より下にあった
		    			mouseY = pict_top + pict_height - 1 ;// y座標を下縁にとる
		    		}
		    		
					line_count++; // 範囲の選択中にこの命令が何度呼び出されたかを加算
					if(line_count%line_every == 0){// 何度か呼び出されるごとに点をとる
						point_beginX = point_endX; // 始点のx座標（前回の終点のx座標）
						point_beginY = point_endY; // 始点のy座標（前回の終点のy座標）
						point_endX = mouseX - pict_left; // 終点のx座標
						point_endY = mouseY - pict_top; // 終点のy座標

						hairX[hair_scope_num] = (int)point_endX; // 選択点のx座標
						hairY[hair_scope_num] = (int)point_endY; // 選択点のy座標
						hair_scope_num++; // 次の選択点へ

						// 点が移動していた場合だけ線を描く
						// (始点のx座標と終点のx座標が一致しない
						// または、始点のy座標と終点のy座標が一致しない）
						if((point_beginX != point_endX)||(point_beginY != point_endY)){
							repaint(); // 描画関数を呼び出す
						}
					}//if(line...
				}//if(hair...
			}
		});
		addMouseListener(new MouseAdapter() {

	    	// マウスのボタン（左）が押された
	    	public void mousePressed(MouseEvent e){
	    		mouseX = e.getX(); // x座標
	    		mouseY = e.getY(); // y座標

	    		// --- 写真の中だった場合↓ここから↓ ---
	    		if((mouseX &gt; pict_left &amp;&amp; mouseX &lt; pict_left + pict_width)
	    				&amp;&amp;(mouseY &gt; pict_top &amp;&amp; mouseY &lt; pict_top + pict_height)){

	    			// hair_scopingをtrueにすることで
	    			// 髪色の範囲を選択中であることを示す
	    			hair_scoping = true ;

	    			// 初期化
	    			hair_scope_num = 0;		// 選択点を0に
					read_pict = true ; 		// 写真を読み込む
	    			hair_coloring = false ;	// カラーパレット未選択

	    			point_beginX = point_endX = mouseX - pict_left; // 始点x座標＝終点x座標
					point_beginY = point_endY = mouseY - pict_top; 	// 始点y座標＝終点y座標

					hairX[hair_scope_num] = (int)point_endX ;	// 選択点のx座標 
					hairY[hair_scope_num] = (int)point_endY ; 	// 選択点のy座標
					hair_scope_num++; // 次の選択点へ
	    		}
	    		// --- 写真の中だった場合↑ここまで↑ ---

	    		// --- カラーパレットの上部中だった場合↓ここから↓ ---
	    		else if(mouseY &gt; colorbox1_top &amp;&amp; mouseY &lt; colorbox1_top + colorbox_size){
		    		// カラーパレットの1の中だった場合
		    		if(mouseX &gt; colorbox1_left &amp;&amp; mouseX &lt; colorbox1_left + colorbox_size){
		    			what_color = color_1 ;
						read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
		    		// カラーパレットの2の中だった場合
		    		else if(mouseX &gt; colorbox2_left &amp;&amp; mouseX &lt; colorbox2_left + colorbox_size){
		    			what_color = color_2 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
		    		// カラーパレットの3の中だった場合
		    		else if(mouseX &gt; colorbox3_left &amp;&amp; mouseX &lt; colorbox3_left + colorbox_size){
		    			what_color = color_3 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
		    		// カラーパレットの4の中だった場合
		    		else if(mouseX &gt; colorbox4_left &amp;&amp; mouseX &lt; colorbox4_left + colorbox_size){
		    			what_color = color_4 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
	    		}
	    		// --- カラーパレットの上部中だった場合↑ここまで↑ ---

	    		// --- カラーパレットの下部中だった場合↓ここから↓ ---
	    		else if(mouseY &gt; colorbox5_top &amp;&amp; mouseY &lt; colorbox5_top + colorbox_size){
		    		// カラーパレットの5の中だった場合
		    		if(mouseX &gt; colorbox5_left &amp;&amp; mouseX &lt; colorbox5_left + colorbox_size){
		    			what_color = color_5 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();

		    		}
		    		// カラーパレットの6の中だった場合
		    		else if(mouseX &gt; colorbox6_left &amp;&amp; mouseX &lt; colorbox6_left + colorbox_size){
		    			what_color = color_6 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
		    		// カラーパレットの7の中だった場合
		    		else if(mouseX &gt; colorbox7_left &amp;&amp; mouseX &lt; colorbox7_left + colorbox_size){
		    			what_color = color_7 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
		    		// カラーパレットの8の中だった場合
		    		else if(mouseX &gt; colorbox8_left &amp;&amp; mouseX &lt; colorbox8_left + colorbox_size){
		    			what_color = color_8 ;
		    			read_pict = true ; 		// 写真を読み込む
		    			hair_coloring = true ; 	// カラーパレットが選択された
						repaint();
		    		}
	    		}
	    		// --- カラーパレットの下部中だった場合↑ここまで↑ ---

	    	}//mousePressed()

	    	// マウスのボタン（左）が離された
	    	public void mouseReleased(MouseEvent e){
				// 髪色の範囲を選択中のときのみ実行する
				if(hair_scoping){
					point_beginX = point_endX;
					point_beginY = point_endY;
					point_endX = hairX[0]; // 選択範囲の基点を終点に（x座標）
					point_endY = hairY[0]; // 選択範囲の基点を終点に（y座標）
					repaint();
					hair_scoping = false ; // 初期化（髪の範囲選択を終えた）
				}//if(hair...
	    	}//mouseReleased()

	    });//addMouseListener()
	}
	
	public void update(Graphics g)
	{
		paint(g);
	}
	// ---------------- 描画関数↓ここから↓ ----------------------------
	public void paint(Graphics g){
		int i;
		resize(win_width,win_height);	
		g_base = (Graphics2D)g;
	
		// baseImageは一回だけ作成される
		if(baseImage==null){
	       baseImage = new BufferedImage(getWidth(), getHeight(),
	       		BufferedImage.TYPE_INT_BGR);
	       // baseImageに手を加える宣言
	       base_draw = baseImage.createGraphics();
	       base_draw.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
	       		RenderingHints.VALUE_ANTIALIAS_ON);
	       
	       // 一度だけhairImage_bufに写真を読み込んでおき
	       // 書き換えるときはhairImageの上にhairImage_bufを上書きする
	       try {
	    	   // 写真を読み込む
	    	   hairImage_buf = ImageIO.read(new File(&quot;data/&quot;+name_id+&quot;.jpg&quot;));
	       } catch (Exception e) {
	    	   //読み込めなかったら黒く塗られる
	    	   e.printStackTrace();
	    	   hairImage_buf = new BufferedImage(pict_width, pict_height,
	           		BufferedImage.TYPE_INT_BGR);
	       }
	       // hairImageの初期化（真っ黒）
    	   hairImage = new BufferedImage(pict_width, pict_height,
	           		BufferedImage.TYPE_INT_BGR);
	       			
	       // hairImageに手を加える宣言
	       pict_draw = hairImage.createGraphics();
	       pict_draw.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
				RenderingHints.VALUE_ANTIALIAS_ON);

	       // 画面全体を白く塗りつぶす
	       base_draw.setColor(Color.white);
	       base_draw.fill(new Rectangle2D.Double(0, 0, win_width, win_height));
	
	       // 黒で文字を書く
	       base_draw.setColor(Color.black);
	       base_draw.setFont(new Font(&quot;Serif&quot;,Font.BOLD,30)); // フォントの設定
	       base_draw.drawString(&quot;カラーパレット&quot;,colorbox1_left,colorbox1_top-20);
	
	       // カラーパレット1
	       base_draw.setColor(Color.decode(color_1));
	       base_draw.fill(new Rectangle2D.Double(colorbox1_left, colorbox1_top,
	       		colorbox_size, colorbox_size));
	       // カラーパレット2
	       base_draw.setColor(Color.decode(color_2));
	       base_draw.fill(new Rectangle2D.Double(colorbox2_left, colorbox1_top,
	       		colorbox_size, colorbox_size));
	       // カラーパレット3
	       base_draw.setColor(Color.decode(color_3));
	       base_draw.fill(new Rectangle2D.Double(colorbox3_left, colorbox1_top,
	       		colorbox_size, colorbox_size));
	       // カラーパレット4
	       base_draw.setColor(Color.decode(color_4));
	       base_draw.fill(new Rectangle2D.Double(colorbox4_left, colorbox1_top,
	       		colorbox_size, colorbox_size));
	
	       // カラーパレット5
	       base_draw.setColor(Color.decode(color_5));
	       base_draw.fill(new Rectangle2D.Double(colorbox5_left, colorbox5_top,
	       		colorbox_size, colorbox_size));
	       // カラーパレット6
	       base_draw.setColor(Color.decode(color_6));
	       base_draw.fill(new Rectangle2D.Double(colorbox6_left, colorbox5_top,
	       		colorbox_size, colorbox_size));
	       // カラーパレット7
	       base_draw.setColor(Color.decode(color_7));
	       base_draw.fill(new Rectangle2D.Double(colorbox7_left, colorbox5_top,
	       		colorbox_size, colorbox_size));
	       // カラーパレット8
	       base_draw.setColor(Color.decode(color_8));
	       base_draw.fill(new Rectangle2D.Double(colorbox8_left, colorbox5_top,
	       		colorbox_size, colorbox_size));
	       
	       // 一番初めは、画像を保存する
	       pict_out = true ;
		}
	
		// ------------- 写真部分の描画↓ここから↓ ----------------
		if(read_pict){// 最初と再描画する場合
				// hairImageにhairImage_bufを上書き
				pict_draw.drawImage(hairImage_buf, 0, 0, this);
				// 写真の読み込みをしない（選択中は線を書き加えていくだけ）
				read_pict = false ;
		}
	
		// カラーパレットのボタンが押された
		if(hair_coloring){
			pict_draw.setComposite( alphaComposite_set );		// 透過度をセット
			pict_draw.setColor(Color.decode(what_color));		// 選択された色をセット
	
			// 範囲選択済みの場合はポリゴンを作成し塗りつぶす
			if(hair_scope_num&gt;2){
				// 新規オブジェクトの構築（ポリゴン）
				GeneralPath hair_polygon = new GeneralPath(GeneralPath.WIND_EVEN_ODD);
				
				hair_polygon.moveTo(hairX[0], hairY[0]); 	// 基点を移動
				for(i=1;i&lt;hair_scope_num;i++){ 				// 点の数だけ繰り返す
					// 前の点から現在の点へポリゴン
					hair_polygon.lineTo(hairX[i],hairY[i]);
				}
				hair_polygon.closePath();					// ポリゴンを閉じる
				pict_draw.fill(hair_polygon);				// 塗りつぶす
			}
			// 範囲選択済みでない場合は写真全体を塗りつぶす
			else{
				pict_draw.fill(new Rectangle2D.Double(0, 0, pict_width, pict_height));
			}
			
			// 画像を保存する
			pict_out = true ;
			pict_draw.setComposite( alphaComposite_reset );			// 透過度をリセット
	   }//if(hair...
	
	   // カラーパレットのボタンが押された以外で再描画
	   // （写真中でマウスのボタンが押され、髪色範囲指定の最中）
	   else{
	       BasicStroke wideStroke = new BasicStroke(2.0f);
	       pict_draw.setStroke(wideStroke);
	       pict_draw.setPaint(Color.red);
	       pict_draw.drawLine((int)point_beginX,(int)point_beginY,(int)point_endX,(int)point_endY);
	   }//else
		// ------------- 写真部分の描画↑ここまで↑ ----------------
	
	   // 作成した写真（hairImage）をベース（baseImage）に貼り付ける
		base_draw.drawImage(hairImage, pict_top, pict_left, this);
		// ベース（baseImage）を表示する
		g_base.drawImage(baseImage, 0, 0, this);
		
		if(pict_out){// 作成した写真（hairImage）を保存する
			try {
				ImageIO.write(hairImage, &quot;png&quot;, new File(output_name));
			} catch (Exception e) {//
				e.printStackTrace();
			}
			// 写真の保存をオフにする
			pict_out = false ;
		}//if
	}
	// ---------------- 描画関数↑ここまで↑ ----------------------------
}    </description>
    <dc:date>2006-12-27T17:34:07+09:00</dc:date>
    <utime>1167208447</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/sany/pages/25.html">
    <title>画像作成モジュールについて</title>
    <link>https://w.atwiki.jp/sany/pages/25.html</link>
    <description>
      **　ソースファイル
-[[Prog.java&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=25&amp;file=Prog.java]]
-[[img_make.java&gt;http://www20.atwiki.jp/sany?cmd=upload&amp;act=open&amp;pageid=25&amp;file=img_make.java]]
Ver.0.8：【次へ】ボタンを押すと画像を保存する。

-[[img_make.java_Ver.1.0]]
-[[img_make.java_applet]]

**　ファイル構造
#ref(file.png)

動作1：Prog中のmainから、img_makeモジュールを呼び出します。
動作2：../date/&quot;顧客番号を引数で指定&quot;.jpgを読み込み、../hair_sample.pngを書き出します。
date内のファイル（000000000099.jpg）↓
#ref(000000000099.jpg)

**　画面の余白など
#ref(mek.png)    </description>
    <dc:date>2006-12-27T17:33:59+09:00</dc:date>
    <utime>1167208439</utime>
  </item>
  </rdf:RDF>
