yamicha.com's Blog - Presented by yamicha.com
Blog yamicha.com's Blog - 2018/01 の記事
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31]

yamicha.com's Blog
 諸事情により、現在更新休止中。ご了承ください。もし今後ブログを再開することがあるとすれば、その際にはこのブログスクリプトではなく、新しく開発したものによるかもしれません。
 当ブログ管理者についてはこちらをご参照。
開発魔法(737)
社会問題(733)
お知らせ(11)
質問・バトン回答(15)
ゲスト出演(8)
経済・知的財産(150)
ゲーム開発(182)
[Ada] 勝手に補足
- Note
- 金配りの次の一手


- Endless Ultimate Diary
- 銃世界

漢字バトン
- うるる雑記帳
- 漢字接力棒

ツキアイゲノムバトン
- ブログ@うにうに画像倉庫
- あぶ内閣

縺イ縺セ縺、縺カ縺励ヰ繝医Φ
- 月夜のボヤキ
- 騎士サーラバトン
パスワードを使う
名無し (2012/02/27)


開発者解放裁判
yamicha.com (2010/03/14)
Winnyに関しては、私も「純白」とまでは考えておりませんし、使用し..

開発者解放裁判
通りすがり (2010/03/08)
winnyに関しては「ダウンロードソフト板」なんてところを拠点に開発..

新型インフルエンザの恐怖
いげ太 (2009/11/03)
> C#などの「int Some(int , int)」は、F#では「(int * int) ->..

時効に関する思考
yamicha.com (2009/08/31)
>いげ太さんコメントありがとうございます。手元にドキュメントが少..
Homepage
Blog Top
Normal View
List View
Search
Calendar
Comment List
Trackback List
Blog RSS
Send Trackback
Phone Mode
Administrator
yamicha.com
Blog
るううるる。
Source
法令データ提供システム
FindLaw
Development
Java2 Platform SE 6
Java EE 6 API
MySQL Developer Zone
PHP Reference
MSDN Library
Ada Reference Manual
Objective Caml
Python Documentation
Erlang
Prolog Documents
 垂オ訳ございませんが、現在このブログではトラックバックを受け入れていません。

 この記事に対してリンクされる場合には、こちらのURLをご利用ください。
http://void.yamicha.com/blog/blog.cgi?mode=view&number=534
 上記URLをトリプルクリックされますと、簡単にURL全体の選択が行えます。

※以下の記事がトラックバックされます。
思いのツボ
2007/02/14(Wed)18:21:25
 北朝鮮問題。一言で表すなら「完全に北朝鮮ペースにはまった日本をはじめとする面々」といったところでしょう。
 今回の協議で明るみに出た、最も恐ろしいこととは何か。北朝鮮がエネルギーを手に入れることでも、核兵器を本当に廃棄する気があるのか分からないことでもありません。他の国にとっては所詮拉致などオプションに過ぎないことが証明された点です。
 これは明らかに日本の戦略ミスです。北朝鮮の拉致が発覚し、しかも北朝鮮が核開発などを始めて多くの国のひんしゅくを買ってからかなりの時間が過ぎているのに、「拉致は国際誘拐犯罪テロ行為であり、許されざる行為である」という意識を諸外国に浸透させることができなかった(あるいはそのような戦略すら取らなかった)のです。結果として他国にとっては「拉致などどうでも良い」ことになり、このような結末となったのです。
 日本にとっては拉致問題こそ最大の問題であり、核は二の次三の次です。そもそも核問題は日本が行動しなくても諸外国から非難されるはずであり、また本当に使用するしないという段階になれば米国が黙ってはいません。つまり、日本は核問題の解決を他国に全部丸投げしてでも拉致問題の解決に尽力することが可能であり、またその程度の気概で挑まなければなりません。
 仮にこのまま核問題が片付いたとしても、日本にとっては「多数ある懸念の1つが片付いたが、最大の懸念に関する状況は何ら変化していない」といった状態に過ぎず、はっきり言って何の解決にもなりません。核などどうでも良いですから、何をおいてもまず拉致です。拉致問題がある限り、核問題などはいくら後回しにしても構いません。そもそも今の時期に核で騒ぎ立てるのは、拉致問題をかすませる作戦であるとも考えられます。
 最悪なのは、このままエネルギー支援が行われ、核問題が一応の解決を見たにもかかわらず、日本は例によってそれまでに大した行動をするでもなく、国際的な拉致包囲網を作れなかった場合です。この場合、エネルギーを手に入れた北朝鮮が上手に出てくる可能性は十分考えられ、しかも諸外国は核問題の解決によって北朝鮮に関心を向けなくなり、日本はエネルギーを得た北朝鮮に孤立無援で挑まなければなりません。現状でも手玉に取られているのに、これで拉致問題を解決できるでしょうか。
 当然、最大の懸念でも何でもない核ごときの見返りにエネルギーを渡してやるいわれはありませんから、拉致がこのままなら日本は一切の援助を行うべきではありませんし、同時に諸外国を巻き込んで支援の量を減少させても良いでしょう。そして、諸外国を巻き込むためには、やはり拉致問題の重要性を諸外国に訴え、拉致包囲網を作るしかありません。
 エネルギー支援がおおむね決まってしまった以上、核問題が一応の解決を見るまでに拉致包囲網を作れなければ、日本は正真正銘の孤立無援となります。さらに言えば、エネルギーが手に入らずヒーヒー言っていた時の北朝鮮に迫れなかったのは非常に痛いです。喉が渇ききった相手に水をあげたも同然ですから、これでまたチャンスを逃したことになるでしょう。
 今すぐにでも次のリーダーが現れ、拉致問題の解決に向かって動き出さないものでしょうか。猶予はさほど残されていないというのに。

 次のリーダーといえば、またも腹立たしいことが。自民党が参院選に郷ひろみ氏を擁立しようとしているというのです。相手にも都合というものがあり、どうやら実際に擁立するのは難しいようですが。
 理由は「柳沢発言などで失った女性票を確保し、無党派層の票を集めるため」とのこと。言うまでもありませんが、郷ひろみ氏が自ら政党に出馬を打診するほどやる気になって、何か目新しい政策でも引っさげてきたというのならともかく、少しでも考える能力のある人であれば、有名人というだけのことで郷ひろみ氏に投票したりはしません。大学で勉強してマニフェストまで作って挑んだ「そのまんま」流とは違うのです。
 すなわち、「考えた末の無党派」の人であれば、自民党を支持しない限り郷ひろみ氏に入れたりはしません。逆に言えば、自民党の狙いは「何も考えていない無党派」、すなわち「低IQ層」ということです。そして、竹中氏の戦略曰く低IQ層である「若者」「老人」「主婦」のうち、狙いはズバリ「主婦層」でしょう。
 つまり、安倍氏で参院選は戦えないと見るやいなや、自民党は早速低IQ戦略を使おうとしているのです。郷ひろみ氏が応じない可能性が高そうなのが唯一の救いでしょうか。それにしても許せません。
 しかし、こういう戦略がなぜ成り立つかといえば、だまされる人間がいるためです。中身の全くないワンフレーズにだまされ、低IQ戦略に見事にだまされ、納豆ダイエットにだまされる。これを愚かと言わずして何と言うのでしょう。いい加減、こういうバカげたものに踊らされるのはやめましょう。

 後から後から湧いて出るねつ造。どこのテレビ局も似たようなことをやっているのでしょうが、目を覆うばかりです。
 菅総務相などは「法改正も含めて再発防止策を検討する」としていますが、これでは政府が報道に介入しかねず、不健全であることは事実です。しかし、メディア・スクラムなども含めて、これまでマスコミ連中がやってきた非道な行いを忘れてはいけません。いくら言っても聞かないから規制もやむを得なくなるのです。特に犯罪被害者や加害者周囲に対する報道などについては、法的な規制が絶対に必要です。報道の責任を完全無視する連中に報道の自由など必要ありません。
 それはともかく、最近は「考えれば分かる」ことにも簡単にだまされる傾向が強いようです。例えば納豆のようなありふれた食材がダイエットに効くなら、日本人の多くはガリガリにやせているはずですし、そもそも飢饉で全滅しているでしょう。レタスを食べて眠くなるようなら、車の説明書に「レタスを食べた後で運転しないでください」と表記されるはずです。このようなものは常識で考えれば分かるというものです。
 毎日新聞に「理系白書」というコーナーがあります。これによれば「水に対して良い言葉をかけるときれいな結晶になり、汚い言葉では結晶が崩れる」というニセ科学にだまされる人間がいるのだとか。「それならShineと書いた紙を貼ったらどうなる」とはもっともな指摘です。実際、「馬鹿」のような言葉であっても、単に「馬」と「鹿」を並べて書いただけであり、馬や鹿が不適切な言葉とは考えられません。このような子どもだましにどうすればだまされるのか、そちらに興味があります。
 そういえば、私の手元には「虹とひまわりの娘」という本があります(池田小事件遺族の手記。これは少年犯罪者の更生などにも使われているそうです)。内容は本題と関係ないため、これの内容についてのコメントは差し控えますが、「あとがき」に「雪の結晶」の話が記載されていました。内容としては、器に「天使」「ありがとう」などのラベルを貼った場合は結晶がきれいになり、「馬鹿」「悪魔」などでは崩れるのだとか。こういう影響力の強い手記にエセ科学が記載されたのは残念でなりません。
 実際にそういうことが起こるなら、「Shine」やら逆さの「Death」やら「東洋の魔女」などと書いたラベルを貼って実験してみたいものです。さあ、どうなるでしょうか。Shineは「輝いている」のか「死ね」なのか。タロットのDeathは逆位置だと意味が逆になりますが、果たして雪や水の結晶はそれを認識できるのか。魔女といえば「老婆」「妖女」「魔女狩り」などのイメージですが、「東洋の魔女」はこの上ない賛辞として用いられたものです。このようなことで中身が変わるわけないでしょう
 残念ながら私は理系ではないため、後の分析は理系の方に譲るとしまして。ただこの「理系白書」、どうも変といいましょうか。何でも「女性科学者はかっこいい!」のだそうで。お願いですから「かっこいい」という理由で科学者や開発者を名乗らないでください。胃に穴を開けてでも技術を習得するのがバカバカしくなってきます。

 3Dライブラリを気持ちばかりメインプロジェクトに格上げしつつ、JSFをやってみました。「JavaServer Faces」です。
 実のところ、私は「コードとデザインの分離」には極めて懐疑的です。これを用いる主な理由としては、「分離によって開発が容易になり、分かりやすくなり、各カテゴリの実装に集中できる」ことがあるようですが、それだというのにStrutsやJSFなど様々なものが出てはまた消えているのはなぜでしょう。一時期は「これで良い」と考えつつも、実は誰もこのような形態に真に満足していないとは考えられないでしょうか。
 「これだ」という技術はそう簡単にはさびれません。C++やPerlが未だに使われているのは言うに及ばず、StrutsやJSFに似たものが現れては消える中でもServletやJSPは延々と支持されてきました。特にPerlはコードとデザインに差をつけることが難しい言語の1つでしょうが、Web黎明期から現在まで使われている点は注目に値します。
 つまり、実のところ「コードとデザインの分離」などさほど望まれていないとは考えられないでしょうか。熱病のように「これは楽で簡単で使いやすい」と考えてみても、後から掛け値なしに見れば楽でも簡単でも使いやすくもなく、結局さびれてしまうのです。便利だ、便利ではない、といったことを論じるのは簡単ですが、実際にこうした技術が次々に現れては消えている現実は変えられません。
 ですから、JSFやStrutsがこの世からすべて消え去ったとしても、Servlet/JSPは残るでしょう。「旧言語」のはずのPerlが未だに扱われているのを見ての通り、真に望まれているものはなくならないのです。実際Perlは大抵何でもできますし、JSPはその軽さと自由度が極めて魅力的です。正直言ってPHPはどこまで健闘できるか分かりませんが、Perlほど長生きできるようには見えません。
 このように、いずれは消えてなくなりそうなJSFですが、おそらくしばらくは生き残ってくれるでしょう。使ってみるとしましょうか。
 まず「JavaServer Faces 1.1」をダウンロードしてきました。1.2も使ってみようとしたのですが、結局動きませんでした。ここは無難に1.1を使ってみようと考えた次第です。SunのサイトからダウンロードできるJSF 1.1のZIPにはサンプルも含まれているのですが、まずはこれを設置して動作を確認してみるとしましょう。
 といっても、「samples/jsf-guessNumber.war」をTomcatのwebappsに投げ入れるだけです。これで勝手に認識を行ってくれるため、後はブラウザから「/jsf-guessNumber」にアクセスすれば動作確認が行えます。何でも「数当てゲーム」なのだそうで。
 ではここからが本番です。JSFを使ったアプリケーションを自分でも作ってみましょう。JSFには次のファイルが必要だそうです。

・データの保持や受け渡しを行うBeanクラス
・JSPなどブラウザに表示する画面の実装
・Servletではおなじみのweb.xml
・faces-config.xml

 今回のファイル配置はこうなります。
/webapps
 /jsf
  /WEB-INF
   web.xml
   faces-config.xml
   /classes
    /com
     /yamicha
      /jsf
       TableBean.java
  search.jsp
  res.jsp
 JSFを使うにはいくつかのJARやタグライブラリが必要ですので、あらかじめTomcatの「common/lib」に「guessNumber/WEB-INF/lib」の中身のJARなどを全部投げ入れておきます。これでTomcatからJSFが使用できるようになります。念のため書いておきますが、JSFを使ったServletをコンパイルする際には、jsf-api.jarやjsf-impl.jarにクラスパスを通さなければなりません。
 ではまずまどろっこしいXMLから。といっても、これらをまともに記述していてもらちがあかないため、どちらもguessNumberのXMLを原本として作成しました。
// web.xml
<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

  <display-name>JSF Application</display-name>
  <description>JSF Application</description>

  <context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>

  <context-param>
    <param-name>com.sun.faces.validateXml</param-name>
    <param-value>true</param-value>
  </context-param>

  <context-param>
    <param-name>com.sun.faces.verifyObjects</param-name>
    <param-value>true</param-value>
  </context-param>

  <!-- Faces Servlet -->
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <!-- Faces Servlet Mapping -->
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>

</web-app>
 一体何を設定しているのだか。とりあえず重要なのが「Faces Servlet」の部分です。url-patternを「/faces/*」にしていますが、この場合はアクセスURLに「faces/」を加えることでJSFが適用されることになります。逆に言えば、「faces/」なしではJSFの機構が適用されない点に注意しなければなりません。
// faces-config.xml
<?xml version="1.0" encoding="Shift_JIS"?>

<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

<faces-config>
  <application>
    <locale-config>
      <default-locale>en</default-locale>
      <supported-locale>de</supported-locale>
      <supported-locale>fr</supported-locale>
      <supported-locale>es</supported-locale>
    </locale-config>
  </application>

  <navigation-rule>
    <description>
	 入力を受け取ります。
    </description>
    <from-view-id>/search.jsp</from-view-id>
    <navigation-case>
      <description>
	   操作が成功した場合の動作です。
      </description>
      <from-outcome>success</from-outcome>
      <to-view-id>/res.jsp</to-view-id>
    </navigation-case>
  </navigation-rule>

  <managed-bean>
    <description>
	 テーブルのデータを保持します。
	</description>
    <managed-bean-name>TableBean</managed-bean-name>
    <managed-bean-class>com.yamicha.jsf.TableBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
      <property-name>table</property-name>
      <property-class>java.lang.String</property-class>
      <value>y_namelist</value>
    </managed-property>
  </managed-bean>

</faces-config>
 やたら色々書いてありますが、良く見ると意味は簡単です。まず「navigation-rule」ですが、今回は1つしか使っていませんが、複数記述することができます。「from-view-id」には処理を行うJSPを指定するようです。
 この「navigation-rule」には「navigation-case」を複数含めることができるようです。また、「from-outcome」と照合される文字列はJSP側で決めることができ、送られた文字列に応じて処理を分岐することができるようです。今回の場合、JSP側から「success」が送られれば、「to-view-id」で指定された「/res.jsp」に制御を送ります。
 その下ではBeanを登録しています。Bean名はTableBean、クラスはcom.yamicha.jsf.TableBeanです。「managed-property」を使用すれば、最初からBeanの特定の変数に値を代入しておくことができるようになっています。言うまでもありませんが、property-nameはBean名です。上記の場合だと「setTable("y_namelist")」が呼ばれることになるでしょう。
 それでは、TableBeanを実装します。
// TableBean.java
package com.yamicha.jsf;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import java.util.*;

public class TableBean{
	private String table;
	private String search;

	private String name;
	private String creator;
	private String prefix;
	private String description;

	public TableBean(){
	}

	public String getTable(){
		return table;
	}
	public String getSearch(){
		return search;
	}
	public boolean getDatas(){
		name = null;
		creator = null;
		prefix = null;
		description = null;

		boolean r = false;
		try{
			Context ct = new InitialContext();
			DataSource ds = (javax.sql.DataSource)
				ct.lookup("java:/comp/env/jdbc/MySQLDB");
			Connection c = ds.getConnection();

			PreparedStatement ps = c.prepareStatement(
				"SELECT name , creator , prefix , " + 
				"description FROM " + table + 
				" WHERE name = ?");
			ps.setString(1 , search);
			ResultSet rs = ps.executeQuery();

			r = rs.next();
			if(r){
				name = rs.getString("name");
				creator = rs.getString("creator");
				prefix = rs.getString("prefix");
				description = rs.getString("description");
			}

			ps.close();
			c.close();
		}catch(Exception e){
		}
		return r;
	}

	public String getName(){
		return name;
	}
	public String getCreator(){
		return creator;
	}
	public String getPrefix(){
		return prefix;
	}
	public String getDescription(){
		return description;
	}

	public void setTable(String t){
		table = t;
	}
	public void setSearch(String s){
		search = s;
	}
}
 コードとビューの分離とはこういう意味ですか。ビューから処理を押し付けられて難儀するBean、といった印象を受けます。BeanはあくまでBeanであって、勝手気ままに処理を実装するわけにもいきませんし、コードとビューを分離するならJSPから処理用メソッドを好き放題に呼び出すこともできません。
 その肝心のJSPはこうなります。
// search.jsp
<%@page contentType="text/html;charset=Shift_JIS" %>

<html>
<head>
<title>Name Search</title>
</head>

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<body>
<f:view>
<h:form id="jsfname">
 検索する人物の名前を入力してください。<br />
 <br />

 <h:inputText id="search" value="#{TableBean.search}" />
 <h:commandButton id="submit" action="success" value="Submit" />
</h:form>
</f:view>

</body>
</html>
 JSFを使っている限り、プログラマは慣れ親しんだform記述を使うことができません。JSFの機能を使いたければ、ほとんどのタグにおいてJSFで定義されたタグを使わなければならないのです。
 inputTextは「input type="text"」です。valueとして「#{TableBean.search}」が指定されていますが、これによってデータ送信時にTableBeanのsearchに対して入力されたテキストが代入されます。
 commandButtonではactionに「success」が指定されています。これで処理の分岐が可能なのでしょう。困ったことに、ボタンをクリックすればsuccess動作が実行されますが、テキストボックスでEnterしてもsuccess動作が実行されたとはみなされないらしく、何も起こりません
 actionには文字列の他、「#{BeanName.actionMethod}」のようにメソッドを指定できるようです。この場合、指定されたメソッドが呼び出され、返り値のStringがaction動作になるようです。今回はサンプルですから使いませんでしたが、通常はこの方が良いでしょう。
 結果を表示するJSPはこの通り。
<%@page contentType="text/html;charset=Shift_JIS" %>

<html>
<head>
<title>Name Search</title>
</head>

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>

<body>
<b>Result</b><br />
<br />

<f:view>
<h:column rendered="#{TableBean.datas != true}">
 <h:outputText value="データは検出されませんでした。" />
</h:column>

<table border="0">
 <tr>
  <td bgcolor="#CCDDFF">名前</td>
  <td><h:outputText value="#{TableBean.name}" /></td>
 </tr>
 <tr>
  <td bgcolor="#CCDDFF">接頭辞</td>
  <td><h:outputText value="#{TableBean.prefix}" /></td>
 </tr>
 <tr>
  <td bgcolor="#CCDDFF">作者</td>
  <td><h:outputText value="#{TableBean.creator}" /></td>
 </tr>
 <tr>
  <td bgcolor="#CCDDFF">概要</td>
  <td><h:outputText value="#{TableBean.description}" /></td>
 </tr>
</table>

</f:view>

</body>
</html>
 これで完成です。ただし、このプログラムはテーブルがなければ動作しません。テーブルを作ってデータを登録するとしましょうか。
CREATE TABLE y_namelist(number INT AUTO_INCREMENT ,
name VARCHAR(256) , creator VARCHAR(256) ,
prefix VARCHAR(256) , description TEXT , PRIMARY KEY(number) ,
UNIQUE(name));

INSERT INTO y_namelist VALUES
(NULL , 'ルヴァ' , 'ruva' , '司祭' , 'ゲスト出演者。SQL編65話に登場') ,
(NULL , 'リサ' , 'ruva' , '僧侶' , 'ゲスト出演者。SQL編65話に登場') ,
(NULL , 'ファルシア' , 'ruva' , '聖騎士' , 'ゲスト出演者。SQL編65話に登場') ,
(NULL , 'クルード' , 'coolmint' , '剣士' , 'ゲスト出演者。SQL編101話に登場') ,
(NULL , 'フィオーナ' , 'coolmint' , '風術師' , 
'ゲスト出演者。SQL編101話に登場') ,
(NULL , 'ドロシー' , NULL , '数学者' , 
'SQL編99話に登場。語尾の伸ばす音を省略する癖がある') ,
(NULL , 'ミスティ' , NULL , '研究者' , 
'SQL編80話に登場。シェリーの友人で研究者') ,
(NULL , 'ニセサーラ' , NULL , '騎士' , 
'SQL編49話、86話に登場。「サラサーラ」かも。本物よりも知性は劣るらしい');
 この際どのようなデータでも構わないのですが、ゲスト様やマイナーキャラを忘れては困るため、備忘録ということで。
 後は次のURLにアクセスするのみです。

http://tomcat_host:tomcat_port/jsf/faces/search.jsp

 おそらく大抵は「http://localhost:8080/...」でしょうが、インストール時にポートの設定を変えた場合、あるいは他のPCからアクセスする場合には、これとは異なるURLになるでしょう。
 とにかくアクセスしてみると、名前を入力するフォームが表示されます。上記でデータベースに登録したキャラクターのうち、好きなキャラの名前を入力して「Submit」を押してみましょう。おそらくそのキャラの概要が表示されることでしょう。
 それにしても、数学者や科学者(の一部)は本当に「オイラ数」などと言うのでしょうか。気になって仕方がありません。固有名詞の伸ばす音は省略しないものと考えていたら、省略している人もいるようですし。「アーサ王物語」「ヴァルキリ」「イージェービ」「ソーサラ」「コモンロ」「キャッシュフロ」のようになるわけですが、不自然とは考えないのでしょうか。
 事実、「フロッピ」ではあんまりだということで「フロッピィ」なる表記が生まれたそうですが、「コモンロウ」や「イージェービィ」(EJB)辺りはまだ良いとして、「ヴァルキリィ」「ソーサラァ」ではレベルの低いメールの文体のようですし。
 とにかく、これでJSFも使ってしまったことになります。しかし上記のプログラム、JSPならファイル1つだけでごく短く簡単・簡潔に書けるのですが。おそらく10年後にもServlet(あるいはその後継)は存在しているでしょうが、JSFは自信ありません。
カテゴリ [開発魔法][社会問題][ゲスト出演] [トラックバック 0][コメント 0]
<- 前の記事を参照 次の記事を参照 ->

- Blog by yamicha.com -