yamicha.com's Blog - Presented by yamicha.com
Blog yamicha.com's Blog - 2018/12 の記事
[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=762
 上記URLをトリプルクリックされますと、簡単にURL全体の選択が行えます。

※以下の記事がトラックバックされます。
再生腹案
2010/05/09(Sun)18:31:21
 小沢氏の問題に加え、今度は米軍基地移転問題に対する鳩山氏の迷走も重なり、民主党は危機的状況に陥っています。明らかに約束違反の格好となった基地問題について、鳩山氏は「自分の主張であって党の公約ではない」と主張し、失笑を買う有様です。今後も特に民主党に有利といえる材料はなく、鳩山氏への風当たりはますます強まっています。
 もし民主党がこの状況を一気に打開したいのであれば、体制の大変革を行うよりありません。民主党自体は決して能力のない政党ではなく、閣僚も必ずしも無能ではないはずですが、なぜここまで力が空回りするのかといえば、小沢氏の圧力と鳩山氏の迷走があるためです。これらの体制を何とかしない限り、民主党の活躍には期待できません。
 現在の民主党は「小沢独裁」と評されていますが、民主党の活力がなくなっているとすれば、それは小沢氏の責任に他なりません。2005年時点では消費税増税を公約していた民主党を、社会主義とも批判されるバラマキ政党にしてしまったのは小沢氏によるところが大きく、おかげで以前の民主党を支持していた人からは失望された上、実際に政権を取ってからは大混迷に陥る羽目になりました。
 しかも小沢氏は、高速道路の建設を指示しつつ料金値上げには怒るなど、非常に矛盾あるいは無理がある政策を閣僚に押し付け、閣僚は本来の力量を発揮できなくなっています。加えて、閣僚は子ども手当てなどの必要性が薄い政策に振り回され、その一方で年金改革など必要性・重要性の高い目玉政策は、話題にも上がらなくなっています。内閣の構成員が全く持ち味を発揮できないのですから、民主党政権がろくに成果を出せないのは当然というべきです。
 さらに、小沢氏に対して批判的な発言を行った生方氏は「誅殺」されるなど、まさに党内は独裁国家の様相を呈しています。これでは党内の活力がなくならないわけがありませんし、自浄作用にも期待できなくなります。その上、小沢氏は必死で地位にしがみつき、独裁者として好き勝手に振舞っていますが、そのとばっちりを食うのは末端の民主党議員なのです。
 また、鳩山氏は党首かつ首相でありながら小沢氏の独裁行為を容認する一方で、自身も「公約ではない」ことを勝手に言い出し、党や閣僚に多大な迷惑をかけています。首相が何か方針を打ち出せば、内閣としてもそれに沿った行動を取るよりありませんので、勝手な思いつきで無茶としか言いようがないことばかり決められては、内閣全体が振り回されてしまいます。これでは閣僚としても、まともに政治を行うどころではありません。
 したがって、民主党がまともな能力を取り戻すには、現行の混迷した体制の一新、すなわち鳩山氏と小沢氏に米軍基地やバラマキ問題などの責任を負わせて退陣させ、党首を若返らせる以外にありません。ある意味でトカゲの尻尾切りのようではありますが、実際にバラマキを主導したり、政治を混乱させたり、疑惑を持たれているのは小沢氏ですし、米軍基地問題で勝手なことを言い出したのは鳩山氏ですから、尻尾というよりは病巣を切除すると考える方が正解でしょう。
 党首が若返れば、若手や中堅から優秀な人間を選出してポストに就ける機会も増えるはずですし、何より自民党の旧体質を引きずっている体制が終焉することで、自民党とそのミニチュアしか存在しない政党集団から一足先に抜け出せます。この意義は非常に大きいといえるでしょう。
 その上で、ちょうど参院選で信を問えることを利用し、小沢氏の意向を汲んだバラマキ政策、鳩山氏が勝手に言い出した基地問題などをすべて見直し、バラマキによらない新たな政策を提示すれば、支持を回復する余地は十分にあります。
 特に子ども手当てはバラマキの代表格ですが、実際には子ども手当てにも功績はあります。諸控除の不公平さは以前からたびたび指摘されていますが、「子ども手当ての財源」の名目で控除の廃止を訴えていなければ、当面は既得権益として残っていたに違いありません。つまり、これを廃止した上で子ども手当ても撤回し、確保した財源を教育や育児支援に振り向けたり、現金支給も必要なところにピンポイントで行うようにすれば、矛盾した控除を廃止できる上に、子どもへの予算も増加します。このように、全体として見ると評価に値しなくても、一部を切り出せば評価できる政策もあり、完全に撤回して別の政策を作るより手間を削減できる上、受け入れられやすいはずですので、新しい政策を提示する環境も整っています。
 かつて小沢氏が大連立問題を起こした際、慰留すればどうなるかは分かっていたはずですし、党首選で鳩山氏を選べばどうなるかも分かっていたはずですが、関係者はそれを行ったために案の定の結果をもたらしました。そして今回、鳩山・小沢体制の一新がなければどうなるかは明らかです。仮に選挙に勝てたとしても、もう内閣は回らないでしょう。
 今の自民党は絶対安静状態にあり、とても政権を運営できる体調ではありませんし、かといって理念も何もないミニ自民党に権力を握らせるなど論外です。民主党が連立相手であるはずの国民新党や社民党にさえ苦慮しているのを見れば分かりますが、ここでミニ自民党がねじれ状態を起こそうものなら、日本にとってろくなことにならないのは見えています。しかし、小沢氏や鳩山氏の独裁や迷走に加え、子ども手当てなどのバラマキのせいで、民主党に支持が集まらないのです。
 現状では旧態依然とした自民党とミニ自民党が足の引っ張り合いをしており、それを国民もあきれて見ているなど、本来なら民主党にとってまたとない機会です。もしここで体制の変革ができず、あっさり自民党やミニ自民党の思惑にはまるとすれば、もはやお笑い種以外の何者でもありません。

 今回は前回に引き続き、簡易チャットの実装です。今回はRESTクライアント側を実装しています。
 実際には別にJavaで書く必要はなく、いかなる言語で書いても構いませんが、ここではJSF 2.0を使用しています。また、普通にページ変移でやり取りしても構いませんが、せっかく使用できるのですから、Ajaxを使用してみました。
 下線のあるファイル・ディレクトリが追加部分です。
/WEB-INF
 /classes
  /com
   /yamicha
    /rs
     /server
      @Path SimpleChat.java
      @Entity ChatMessage.java
      @XmlElement ChatMessages.java
      @Stateless ChatMessageAccess.java
     /client
      @ManagedBean ChatBean.java
  /META-INF
   persistence.xml
 web.xml
simplechat.xhtml
 データのXML化や復元、送信などはChatBean.javaで行っています。
package com.yamicha.rs.client;

import javax.faces.bean.*;
import javax.xml.bind.*;
import javax.xml.parsers.*;
import java.io.*;
import java.net.*;
import com.yamicha.rs.server.*;

@ViewScoped @ManagedBean public class ChatBean
	implements java.io.Serializable{
	private final static String REST_SERVER =
		"(アプリケーションの URL)/restserver/chat/";

	private String name;
	private String message;
	private ChatMessages messages;

	public ChatBean() throws Exception{
		readMessages();
	}

	public String getName(){
		return name;
	}
	public String getMessage(){
		return message;
	}
	public ChatMessages getMessages(){
		return messages;
	}

	public void setName(String n){
		name = n;
	}
	public void setMessage(String m){
		message = m;
	}
	public void setMessages(ChatMessages m){
		messages = m;
	}

	// 「発言」メソッド
	public void writeMessage() throws Exception{
		JAXBContext jc = JAXBContext.newInstance(
			ChatMessage.class);

		// /restserver/chat/write に送信
		HttpURLConnection c = (HttpURLConnection)
			new URL(REST_SERVER + "write").openConnection();
		c.setRequestMethod("POST");
		c.setDoOutput(true);
		c.setRequestProperty(
			"Content-Type" , "application/xml");

		c.connect();

		OutputStream os = c.getOutputStream();

		Marshaller m = jc.createMarshaller();
		m.marshal(new ChatMessage(name , message) , os);

		os.close();

		InputStream is = c.getInputStream();
		is.read();
		is.close();

		c.disconnect();

		readMessages();

		message = "";
	}
	// 発言データの読み込み
	public void readMessages() throws Exception{
		JAXBContext jc = JAXBContext.newInstance(
			ChatMessages.class);

		// /restserver/chat/all を開く
		HttpURLConnection c = (HttpURLConnection)
			new URL(REST_SERVER + "all").openConnection();
		c.setRequestMethod("GET");
		c.setRequestProperty("Content-Type" , "application/xml");

		c.connect();

		InputStream is = c.getInputStream();

		Unmarshaller u = jc.createUnmarshaller();
		messages = (ChatMessages)u.unmarshal(is);

		is.close();

		c.disconnect();
	}
}
 言うまでもなく、writeMessage()が発言、readMessages()が発言データ読み込みのメソッドです。writeMessage()では発言データをXMLに変換して送信した後、readMessage()を使用して新しいデータを取得、さらにmessageフィールドを空にして、発言欄がクリアされるようにしています。
 simplechat.xhtmlは書き方次第でログインと会話を分けたりなども簡単にできるはずですが、ここではシンプルな実装としました。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:c="http://java.sun.com/jsp/jstl/core"
  xmlns:ui="http://java.sun.com/jsf/facelets">

<h:head>
  <title>JAX-RS SimpleChat Ajax</title>
</h:head>

<h:body>
  <b>JAX-RS SimpleChat Ajax</b>

  <h:form id="chatform">
    <h:inputText value="#{chatBean.name}" />:
    <h:inputText id="message" value="#{chatBean.message}" size="60" />
    <h:commandButton action="#{chatBean.writeMessage}" value="Say">
      <f:ajax execute="chatform" render="chatform:message :chatlog" />
    </h:commandButton>
  </h:form>

  <h:commandButton action="#{chatBean.readMessages}" value="Reload">
    <f:ajax render="chatlog" />
  </h:commandButton>

  <hr />

  <h:form id="chatlog">
    <ui:repeat value="#{chatBean.messages.messages}" var="message">
      <b>#{message.name}</b>: 
        #{message.message} - #{message.date}
      <hr />
    </ui:repeat>
  </h:form>
</h:body>

</html>
 リロードの場合に比べ、発言の場合はchatform:messageもAjaxで更新している(writeMessage()ではmessageを空にしているので、発言欄がクリアされる)点がチャットらしい部分ですが、それ以外は単純です。
 後は次のURLを開き、まがりなりにもチャットらしきものが動作すれば成功です。

(アプリケーションのURL)/simplechat.jsf

 見た目はただのぞんざいなチャットですが、実は裏でRESTが使われているという、手抜きなのか手が込んでいるのか分からないアプリケーションです。
カテゴリ [開発魔法][社会問題] [トラックバック 0][コメント 0]
<- 前の記事を参照 次の記事を参照 ->

- Blog by yamicha.com -