eclipseの問題ビュー

はてな記法忘れた。。。

    • -


eclipse3.5の問題ビューで、特定のリソースだけを表示したい!
問題ビューで、内容の構成を表示する。


スコープで、「選択された要素のみを」を選択すると、
現在、選択しているjavaの画面のみの、問題が表示される。


とりあえず、これで、OK牧場

わっっかんない。

家で試すよう。
コメット。

クライアント側

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>CometChatSender</title>
<script type="text/javascript" src="./js/common.js"></script>
</head>

<body>
	<div id="talk"></div>
	<form method="post"  action="/">
	ユーザ名:<input type="text" name="user"  size="20" id="user"/>
	メッセージ:<input type="text" name="message"  size="60"  id="message"/>
	<input type="button" value="送信"  size="60"
		onclick="postMessage('./CometServlet', true,user.value, message.value)"/>

	</form>
</body>

</html>

function createHttpRequest() {

    if(window.ActiveXObject){
        try {
            // MSXML2
            return new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                // MSXML
                return new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e2) {
                return null;
            }
        }

    } else if(window.XMLHttpRequest){
        return new XMLHttpRequest();
    } else {
        return null;
    }
}

function postMessage(fileName , async ,user , message ) {
    var request = createHttpRequest();

    request.open( 'POST' , fileName , async );
    request.setRequestHeader('Content-Type',
        'application/x-www-form-urlencoded; charset=UTF-8');

    request.onreadystatechange = function() {
        if (request.readyState ==4) {
        	if(request.status == 200){
        		if(request.responseText){
        			document.getElementById("talk").innerHTML += request.responseText;
        		}
        		postMessage('./CometServlet', true);
        	}
        }
    }

    request.send( 'user=' + user + '&message=' + message );
}


import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.catalina.CometEvent;
import org.apache.catalina.CometProcessor;

/**
 * Servlet implementation class CometServlet
 */
public class CometServlet extends HttpServlet implements  CometProcessor{
	private static final long serialVersionUID = 1L;

	//protected ArrayList<HttpServletResponse> connections = new ArrayList<HttpServletResponse>();
	protected MessageSender messageSender = null;

	public void init() throws ServletException{
		messageSender = new MessageSender();
		Thread messageSenderThread =
			new Thread(messageSender, "MessageSender[" + getServletContext().getContextPath() +"]");
		messageSenderThread.setDaemon(true);
		messageSenderThread.start();
	}

	public void destroy(){
		messageSender.stop();
		messageSender = null;
	}

    /**
     * @see HttpServlet#HttpServlet()
     */
    public CometServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

	@Override
	public void event(CometEvent cometevent) throws IOException, ServletException {
		HttpServletRequest request = cometevent.getHttpServletRequest();
		HttpServletResponse response = cometevent.getHttpServletResponse();

		if ( cometevent.getEventType() == CometEvent.EventType.BEGIN ){
			cometevent.setTimeout(60 * 1000 * 30);
			log("begin for session: " + request.getSession(true).getId());

			/*
			response.setContentType("text/html;charset=UTF-8");
			PrintWriter out = response.getWriter();
			out.println("<!doctype html public \"-//w3c//dtd html" + " 4.0 transitional//en\">");
			out.println("<head><title>チャットメッセージ</title>" + "</head><body bgcolor=\"#FFFFFF\">");
			out.println("</body></html>");
			out.flush();
			*/

			messageSender.setConnection(response);

			return ;

		}  else if (cometevent.getEventType() == CometEvent.EventType.END) {
			log("End for session: " + request.getSession(true).getId());
			/*
			PrintWriter out = response.getWriter();
			out.println("</body></html>");
			*/
			cometevent.close();
			return ;
		}

		if ("POST".equals(request.getMethod())){
			final String user = request.getParameter("user");
			final String message = request.getParameter("message");

			if( !user.equals("undefined") || !message.equals("undefined")){
				messageSender.send(user, message);
			}

			return;
		}
	}

	public class MessageSender implements Runnable {
		protected boolean running = true;
		protected ArrayList<String> messages = new ArrayList<String>();
		private ArrayList<ServletResponse> connections = new ArrayList<ServletResponse>();

		private synchronized void setConnection(final ServletResponse res){
			connections.add(res);
			notify();
		}

		public MessageSender(){}

		public void stop(){
			running = false;
		}

		public void send(final String user, String message){
			synchronized (messages) {
				messages.add("[" + user + "]:" + message);
				messages.notify();
			}
		}

		@Override
		public void run() {
			while(running){
				if(messages.size() == 0){
					try{
						synchronized (messages) {
							messages.wait();
						}
					}catch(InterruptedException e){
						// ignore
					}

				}

				String[] pendingMessage = null ;
				synchronized (messages) {
					pendingMessage = messages.toArray(new String[0]);
				}
				messages.clear();

				try{
					if (connections == null){
						try{
							synchronized (this) {
								wait();
							}
						}catch(InterruptedException e){
							// ignore
						}
					}

					for(final ServletResponse connection : connections){
						PrintWriter out = connection.getWriter();

						for(final String m : pendingMessage){
							out.println(m + "<br/>");
						}

						out.flush();
						out.close();
					}

					connections.clear();

				} catch(IOException e){
					log("IOException sending message", e);
				}

			}
		}

	}

}

wtpでサーバ設定できないぜ!

javaの道にも書いたけど、こちらにも書きます。
ほら、忘れちゃいけないでしょ?


構成:
 Eclipse 3.4
 Java 1.6
 Tomcat 6.0


概要:
 エクリプスでtomcat 6.0のサーバ設定を行いたい!




現象:
下記の現象が起きた。
 >!MESSAGE \Servers\ローカル・ホスト の Tomcat v6.0 サーバー
 >-config での Tomcat サーバー構成をロードできませんでした。
 >構成が破壊されているか不完全である可能性があります。


原因:
Eclipseワークスペースのログを見ると、次のとおりに記載がある。
 >Caused by:
 >java.io.UnsupportedEncodingException: cp932


cp932なんか、サポートしてねぇよ。だって。
#cp932って、shiftJisだっけ?後ほど、調べる。
confフォルダ内の文字コードを調べる。
tomcat-users.xml文字コードが、cp932である。


解決:
tomcat-users.xml文字コードを変更する。
 変更前:cp932
 変更後:utf-8


正常に、動く!

テクノドリーム1

テクノドリーム1に、とぼとぼと行ってきました。


構成は、2部構成で次のとおり。

  • 主旨
    • 工学は、やってて意義があるのか。魅力的な学問であるのか。
  • 一部目
    • ガンダムの監督と東京大学工学系の先生のアレコレ。
    • 特に、決まったテーマはなかった。
  • 二部目
    • 一部目の先生に加え、東大出の民間の人が二人参加。
    • ベンチャーとかでなく、大企業と呼ばれているところ。
    • ソーラー発電の人と油田の開発の人だったと思う。
  • 時間
    • 15:00 - 17:30



だいたいこんなこと言ってた(うろ覚え)

  • ガンダムの監督の人
    • ロボットに反対。人間を怠惰な動物にしちゃうから。
  • ソーラー発電の人
    • 技術は、普及させてなんぼ
    • 採算を取って、儲けなさい
    • 日本語の檻にとらわれず、英語で勝負しなさい。
  • 油田の開発の人
    • タフネスさが必要。メンタル的な
  • 広報の人
    • 第二弾、やります。



私の感想

  • スタンス
    • 私は、ガンダムを見たことない。
    • のほほんとした構えで行った
  • 多分、ロボットというのは、個人をエンパワーするものだと思う。
    • ガンダムの監督が言ったことは、リプリゼンティブでしょ?
  • 声が聞き取りにくかった。
    • スピーカがマイクをもって話してなかった?
  • テーマをもうちょっとしぼったら、よかった?
    • 話がどこに行ってるか、よくわからなかった。
      • オレの頭が悪いせいか。。。笑



また、思いついたら、書きます。

Pathが有効にならない(無効な状態)



環境

OS
WinodwsVista Business
Jdk
1.6.0_06
Eclipse
3.3.2



Jdkのインストールも無事に終わり、Eclipseも解凍して起動したところ、
なぜか、Jreが見つからないというエラーメッセージが出てくる。
Pathの設定は、次のとおりでした。

Path
C:\Program Files\Java\1.6.0_06\bin



コマンドラインから、パスが通ってるか確かめたところ、通ってない。
そんなのないよって。


エラメッセージをよく見てみると、Programのところまでで、認識して
いるみたいでした。
なので、ダブルクォーテションで囲んだら、動作しました。

Path
"C:\Program Files\Java\1.6.0_06\bin"