ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Struts2のゼロ・コンフィグレーションの例

2015-09-21 22:46:09 | JavaとWeb
 Struts2であることを行いたいんだけど(次のエントリで公開)、
それを行うのに、ゼロ・コンフィグレーションにしておきたいので
ここにゼロ・コンフィグレーションの例を載せておきます。

■ゼロ・コンフィグレーションとは
 設定ファイルstruts.xmlファイルを書かないので
 ゼロ・コンフィグレーション
(どこにもコンフィグレーションを書かないのではなく、
 あのテーションで書く)

■お題

Struts2でのエラーメッセージあれこれ
http://blog.goo.ne.jp/xmldtp/e/a4e84399abb40428e4abbab2fb80c419

をゼロ・コンフィグレーションにする

■概要
・struts.xmlをかかない
・パッケージがXXXXの形だったり、パッケージでなかったりしたら、
 パッケージ名がXXXX.YYYYになるようにする
・Result,Actionを書く
  →org.apache.struts2.convention.annotation.の上記クラスなどをimport
  →Struts 2 Convention Plugin2.3.16をダウンロードしてきました
http://mvnrepository.com/artifact/org.apache.struts/struts2-convention-plugin/2.3.16

■ソース
「Struts2でのエラーメッセージあれこれ」のgui.HelloAction.javaを、パッケージを変えて、
struts2.gui.HelloAction.javaにして、以下のようにソースを書きなおしました。
また、struts2-convention-pluginを上記サイトよりダウンロードして、jarを
パスに通しました

package struts2.gui;

//	セッションで使う
import java.util.Map;

//(1)リクエストで使うものインポート
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.convention.annotation.Action;	 //ゼロコンフィグレーション
import org.apache.struts2.convention.annotation.Result;  //ゼロコンフィグレーション
import org.apache.struts2.convention.annotation.Results; //ゼロコンフィグレーション
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;

//	一般的に・・・
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import com.opensymphony.xwork2.validator.annotations.Validations;

//==============================================//
//												//
//	Struts2										//
//	セッション、リクエストのサンプル			//
//												//
//==============================================//
@Results({
	@Result(name="success", location="/hello.jsp"),
	@Result(name="input", location="/index.jsp"),
})
public class HelloAction extends ActionSupport implements SessionAware,ServletRequestAware{
	private String name;						//	sタグの変数
	private Map<String,Object> session;						//	セッションの宣言
	private HttpServletRequest request;			//	(2)リクエストの宣言

	//	sタグで必要なアクセサ
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

	//	セッションで必要なアクセサ
	public void setSession(Map<String,Object> session) {
		this.session = session;
	}

	//	(3)リクエストで必要なアクセサ記述
	public void setServletRequest(HttpServletRequest request) {
		this.request = request;
	}

	public HttpServletRequest getServletRequest() {
		return this.request;
	}

	@Validations(requiredStrings = @RequiredStringValidator(fieldName = "name", message = "名前を入力してください"))

	@Override
	 public void validate()
	 {
    	try
    	{
  	    		int kai =  Integer.parseInt(getServletRequest().getParameter("start"));
  	    		if (kai < 0)
  	    		{
  				 	addFieldError("start","開始数が負の数");
  	    		}
    	}
    	catch(Exception e)
    	{
  	    		//	数字でなかったら、なにもしない
			 	addActionError("開始数が数字でない");
    	}
	 }

	@Action("hello")
    public String execute()
    {
  	    //======================================//
  	    //		値の取得						//
  	    //======================================//
    	// sタグのnameは、何もしなくても取得されている

    	//	セッションでの取得
  	    int	kai;
  	    String kaistr = (String)session.get("kaisu");
  	    if ( kaistr	==	null)
  	    {
  	    	kai	=	0;
  	    }
  	    else
  	    {
  	    	kai = Integer.parseInt(kaistr);
  	    }

  	    //	(4)リクエストパラメタでの取得
  	    String start = getServletRequest().getParameter("start");
  	    if (start	!=	null)
  	    {
  	    	try
  	    	{
  	    		kai =  Integer.parseInt(start);
  	    	}
  	    	catch(Exception e)
  	    	{
  	    		//	数字でなかったら、なにもしない
  	    	}
  	    }


  	    //======================================//
  	    //		処理							//
  	    //======================================//
  	    kai++;		//	今回の分を足す
  	    String msg = "Hello World" + name + ":"+ kai+"回目";


  	    //======================================//
  	    //		出力								//
  	    //======================================//
  		//	セッション書き出し
  		session.put("kaisu", String.valueOf(kai));
  		session.put("msg", msg);

        this.addActionMessage("成功1");
        return SUCCESS;
    }


}



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

マイクロソフトSDN向けOSを開発L(inuxをベース)

2015-09-21 18:54:45 | ネットワーク
ここの記事

マイクロソフトが独自のLinuxを開発 Azure Cloud Switch(ACS)でSDNへ進出
http://www.sbbit.jp/article/cont1/30212


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「氣志團万博2015」にPepperが出演!

2015-09-20 13:37:24 | Weblog

Pepperが「DJ Pepper」として野外フェス「氣志團万博2015」に出演!
http://www.softbank.jp/robot/news/info/20150914a/


ちなみに、きょうは華原 朋美さんや、ももくろも来るらしい

http://www.kishidanbanpaku.com/artist/index.html


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SATOのドローンとか、特小無線でマルチセンサーデータ送信が見どころ?-自動認識総合展など

2015-09-19 12:38:16 | AI・BigData
昨日(9月18日)自動認識総合展など、その他いろいろを見に、ビッグサイト(西)に行ってきた。その内容をメモメモ




■自動認識総合展

・パネル展示では、RFID(特にUHF帯)とNFC(Felica,MIFARE,ISO/IEC14443 TypeA/Bなど)、 二次元バーコード、カラー2Dコード(Tcode)とか

・ちょうど、リコーがRFIDミドルウェアの説明をしている所で、
   セッション機能の課題とチャタリング機能の導入、バイトオーダー(エインディアン問題)
   LLRP,ISO/IEC15961,15693(HF帯)の課題などを
 ミドルウェアで吸収するとかの話をしていた

・展示はRFID,NFC(IP2とかいうのも?)、無線LAN、スマートフォンのバーコードリーダーそのたもろもろ

・SATOがなぜか、ドローンを展示(ミニサーベイヤーGEO),
IoTリモートメンテナンスサービス,スモールデータなど
→IoTという言葉は、ここ以外で、あまり見なかった。

・富士通はRFIDのほか、手のひら静脈認証とか

・ICOMがディスプレイカードとかいう、中身の一部が見えるカードをやっていた




■テスト、センサー、セラミックなど、同時開催の展示

・ごめん、専門過ぎて、よくわからん・・・
   SHIMADZUのCFRPの物性評価?
   あと他に、いろんな会社がいろんな試験・評価を展示(振動試験とか)
   セラミックはノリタケとか村田製作所とか
   メンターグラフィックはCYBERNETとかいうので、PLB-CADとか

・センサーは、小型圧力センサーとかもあったけど、
 興味深いのは明光電子の特小無線で、マルチセンサーデータを送信するというもの
 Smart Analogとかいうの?

・3D関係がいろいろあった(CAD,形状計測、3次元測定など・・)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Struts2でのエラーメッセージあれこれ

2015-09-18 15:15:01 | JavaとWeb
今日もStruts2ネタを1つ。

Struts2でエラーメッセージを「表示」しようとすると、
 アクションエラー(全体で1つ)
 フィールドエラー(各フィールドごと)
の2種類が考えられる

そして、エラーのチェック方法としては、
  1.アクションクラス名-validation.xmlを作成して、チェック
  2.@Validationsでアノテーションを使ってチェック
  3.validate()メソッドを使ってチェック
と3通り考えられます(もっとあるかもしれないけど・・・)

ここでは、2と3の方法を取り上げます。




■サンプル
【御題】
名前になにもいれないと、フィールドエラーとして、名前のところにエラーが出て
開始数に何もいれないと、アクションエラーとして、一番上にエラーが出る

開始数がマイナスだと

フィールドエラーとして、開始数のところにエラーがでる。

【ソースコード:変更のあるもののみ】

基本的にソースは

Struts2でINPUTタグの値を読む方法(ServletRequestAwareの利用法)
http://blog.goo.ne.jp/xmldtp/e/469a8c3f14f5b8fc8584018b58ff8268
と同じなので、相違点のみ、掲載します。

●index.jsp
アクションエラー、フィールドエラーの指定をします。
フィールドエラーは、s:fielderrorタグだけだと、すべてのフィールドエラーが表示される為、
その中で、s:paramを使って限定しています。
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<HEAD>
<TITLE>HelloTest</TITLE>
</HEAD>
<BODY>
	<s:actionerror />
    <s:form action="hello.action"  theme="simple">
         名前 :<s:textfield name="name"/><s:fielderror><s:param value="%{'name'}" /></s:fielderror><br/>

         開始数:<input type="text" name="start"/><s:fielderror><s:param value="%{'start'}" /></s:fielderror><br/>
         <br/>
         <s:submit type="button"  value="実行" />
    </s:form>
</BODY>
</html>


●struts.xml
エラーのとき、入力画面に戻るために、inputの設定をします

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<package name="helloStruts2" namespace="/" extends="struts-default">
<action name="hello" class="gui.HelloAction">
<result name="input">/index.jsp</result>
<result name="success">/hello.jsp</result>
</action>
</package>
</struts>



●gui.HelloAction.java
  2.@Validationsでアノテーションを使ってチェック
  3.validate()メソッドを使ってチェック
の両方を追加しています。


package gui;

// セッションで使う
import java.util.Map;

//(1)リクエストで使うものインポート
import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;

// 一般的に・・・
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import com.opensymphony.xwork2.validator.annotations.Validations;


//==============================================//
// //
// Struts2 //
// セッション、リクエストのサンプル //
// //
//==============================================//
public class HelloAction extends ActionSupport implements SessionAware,ServletRequestAware{
private String name; // sタグの変数
private Map session; // セッションの宣言
private HttpServletRequest request; // (2)リクエストの宣言

// sタグで必要なアクセサ
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

// セッションで必要なアクセサ
public void setSession(Map session) {
this.session = session;
}

// (3)リクエストで必要なアクセサ記述
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}

public HttpServletRequest getServletRequest() {
return this.request;
}

@Validations(requiredStrings = @RequiredStringValidator(fieldName = "name", message = "名前を入力してください"))

@Override
public void validate()
{
try
{
int kai = Integer.parseInt(getServletRequest().getParameter("start"));
if (kai < 0)
{
addFieldError("start","開始数が負の数");
}
}
catch(Exception e)
{
// 数字でなかったら、なにもしない
addActionError("開始数が数字でない");
}
}

public String execute()
{
//======================================//
// 値の取得 //
//======================================//
// sタグのnameは、何もしなくても取得されている

// セッションでの取得
int kai;
String kaistr = (String)session.get("kaisu");
if ( kaistr == null)
{
kai = 0;
}
else
{
kai = Integer.parseInt(kaistr);
}

// (4)リクエストパラメタでの取得
String start = getServletRequest().getParameter("start");
if (start != null)
{
try
{
kai = Integer.parseInt(start);
}
catch(Exception e)
{
// 数字でなかったら、なにもしない
}
}


//======================================//
// 処理 //
//======================================//
kai++; // 今回の分を足す
String msg = "Hello World" + name + ":"+ kai+"回目";


//======================================//
// 出力 //
//======================================//
// セッション書き出し
session.put("kaisu", String.valueOf(kai));
session.put("msg", msg);

this.addActionMessage("成功1");
return SUCCESS;
}
}



【注意】
・エラーメッセージを表示する為に画面を書き換える。そのときsタグで指定したものは、値が入ってくるが
INPUTタグで書いたもの(開始数)は、値が入ってこない(3枚目の写真参照)。自分で設定すること



■参考サイト
1.http://d.hatena.ne.jp/cazzie/20080131/1201795354
2.http://kinjouj.github.io/2013/09/struts2-6-form-validation-1.html
3.http://cmslabs.blogspot.jp/2011/02/struts-2_21.html

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

バリューグラフは「なぜ5回」の可視化ってこと?

2015-09-18 10:52:29 | Weblog
システム×デザイン思考で世界を変える 慶應SDM「イノベーションのつくり方」の中に「バリューグラフ」って言うのが出てくる。
これは、こんなかんじ

http://lab.sdm.keio.ac.jp/idc/kids/kids_20130512.pdfの81シート目より引用

で、価値づくり設計という本の中にでてくるらしい。あるものに対して(上記例では石井ドライヤー)上位に「なぜ」「なぜ」とWhyを深く掘り下げていく(なので、→は下から上になっている)慶応SDMの本では、ここまでしかでていない(下の部分のどうやってを詳しくは書いていない)が、この上の部分って、要するにトヨタの「なぜ5回」の可視化だよね!

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

テレ東除くキー局の中継ヘリ集結で自衛隊救助の邪魔に-鬼怒川

2015-09-18 00:10:28 | ネットワーク
ここの記事

鬼怒川 テレ東除くキー局の中継ヘリ集結で自衛隊救助の邪魔に
http://www.news-postseven.com/archives/20150917_351429.html

やはりテレビ東京はちがう、神対応ということなのでしょうか・・・
・・・予算が無かっただけかもしれません

でも、自衛隊の邪魔をしてはいけません。

こういうのって、妨害したテレビ局は罪にならないんでしょうか・・・?

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

”20代の新卒入社、4割が「後悔」約5割は「リベンジ転職」を視野に入れている”とのこと

2015-09-17 19:19:19 | Weblog
ここの記事

20代の新卒入社、4割が「後悔」 約5割は「リベンジ転職」を視野に入れている
http://bg-mania.jp/2015/09/03137294.html

最近は「リベンジ転職」なんて言葉があるのか・・・
ただリベンジ転職しても、またリベンジ転職しちゃうのよね、根本的にまちがっている理由がわからないと・・・
(一生リベンジ転職?)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

struts2のstruts.xmlを書かない方式で「はまった」こと・・・あれこれPart2

2015-09-17 16:20:22 | JavaとWeb
Struts2ネタを続けます・・・

2年前

struts2のstruts.xmlを書かない方式で「はまった」こと・・・あれこれ
http://blog.goo.ne.jp/xmldtp/e/b6905d8e6bd9aedfc47ec8c34b87455a

を書いたけど、最近やったら、さらにはまったんで、つけたし・・
(つけたしということで、前回4までだったから、今回は5から)




■はまった点5:そもそもstruts2-convention-plugin-2.3.15.1.jarがない

・現象
はまった点1で、struts2-convention-plugin-2.3.15.1.jarを使っているが、
そもそも、そのjarがない

・対応
ここにある
http://mvnrepository.com/artifact/org.apache.struts/struts2-convention-plugin/2.3.15.1




■はまった点6:Resultのアノテーションでlocationがでてこないでエラー

・現象
Resultのアノテーションでlocationがでてこないでエラーになり
valueとかをいれようとする

・理由
importしているものがちがっている

・対策

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

をインポートすること。




■はまった点7:Tomcatが立ち上がらない

・現象
たちあげようとすると、以下のエラー

9 17, 2015 3:42:34 午後 org.apache.catalina.core.StandardContext filterStart
重大: フィルタ struts2 の起動中の例外です
java.lang.RuntimeException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException - Class: com.opensymphony.xwork2.inject.ContainerBuilder$4
File: ContainerBuilder.java
Method: create
Line: 132 - com/opensymphony/xwork2/inject/ContainerBuilder.java:132:-1
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:501)

(以下省略)

・理由
Jarのバージョンが違う(ふるい)

・対策
struts2-convention-plugin-2.3.15.1.jarをダウンロードして来いとあれほど・・・




■はまった点8:Tomcatが立ち上がらない part2
・現象
たちあげようとすると、以下のエラー

9 17, 2015 4:04:10 午後 org.apache.catalina.core.StandardContext filterStart
重大: フィルタ struts2 の起動中の例外です
Unable to load configuration. - bean - jar:file:/C:/Users/epson-w7/Desktop/pleiades-e4.3-ultimate-jre_20130926/pleiades/tomcat/7/webapps/test2/WEB-INF/lib/struts2-convention-plugin-2.3.16.jar!/struts-plugin.xml:30:137

(以下省略)

・理由
WEB-INFの下に(バージョン違いで)struts2-convention-pluginが2個以上いる

・対策
struts2-convention-pluginは1個にする
(実は、「struts2-convention-plugin-2.3.15.1.jarをダウンロードして来いとあれほど・・・」
言っていたが、2.3.15.1の必要はなく、2.3.16でもOK)




とりあえず、こんなところ

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Struts2でINPUTタグの値を読む方法(ServletRequestAwareの利用法)

2015-09-17 12:12:44 | JavaとWeb
JavaEEの話をしたあとで、Struts2っていうのも、なんなんですが、
Struts2のお話。

【課題】
Struts2で、sタグでなく、HTMLのINPUTタグで書いた値を読みたい
というときは、どうするか・・・

【何が問題?】
このとき、Struts2のActionを書くBeanに(s:で書くタグのように)
INPUTタグのnameと同じ名前の変数を書いても、そこには入ってこない
HTTPrequestの中に入っているので、そこからとってこないといけない
で、HTTPrequestをどうやってとってくるの?これが問題

【答え(の概要)】

・ServletRequestAwareをimplementsする
  →implementsするということは、必要なメソッドを定義しないといけない。
   この必要なメソッドがsetServletRequest()とgetServletRequest()
  →さらに、requestをクラスの属性として変数宣言しないといけない
  →必要なインポートもある

・getServletRequest().getParameter("INPUTのname名");で取り出せる


サンプルを以下に示します。




【サンプルのお題】

・はじめ、名前をいれて、開始数に何も入力しないと

 Hello World 名前 1回目 と表示される


・まったくおなじようにクリックすると

 前回訪問回数(今回は1回)に1足された回数が表示される


・開始数を設定すると

 開始数に1足された回数が表示される


【ソースコード】

・入力画面(初期表示画面)index.jsp
 s:textfieldタグで名前、inputタグで開始数を設定している
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<HEAD>
<TITLE>HelloTest</TITLE>
</HEAD>
<BODY>
    <s:form action="hello.action"  theme="simple">
         名前 :<s:textfield name="name"/><br/>
         開始数:<input type="text" name="start"/><br/>
         <br/>
         <s:submit type="button"  value="実行" />
    </s:form>
</BODY>
<html>


・結果表示画面 hello.jsp
セッションの中に入っているmsgを表示している

<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<HTML>
<HEAD>
<TITLE>足し算</TITLE>
</HEAD>
<BODY>
<s:property value="#session.msg"/>
<A HREF="index.jsp">戻る</A>
</BODY>
</HTML>


・設定ファイル web.xml
 は、ふつうのstruts2と変わらないので省略

・設定ファイル struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
<package name="helloStruts2" namespace="/" extends="struts-default">
<action name="hello" class="gui.HelloAction">
<result name="success">/hello.jsp</result>
</action>
</package>
</struts>


・ソースコード gui.HelloAction.java
 セッションとリクエストの処理をしている。今回の御題リクエスト関係は、以下のとおり
(1)リクエストで使うものインポート
(2)リクエストの宣言
(3)リクエストで必要なアクセサ記述(setServletRequest()とgetServletRequest())
(4)リクエストパラメタでの取得
 具体的な内容は以下のソースとコメントを参照してください

package gui;

// セッションで使う
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;

//(1)リクエストで使うものインポート
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;

// 一般的に・・・
import com.opensymphony.xwork2.ActionSupport;

//==============================================//
// //
// Struts2 //
// セッション、リクエストのサンプル //
// //
//==============================================//
public class HelloAction extends ActionSupport implements SessionAware,ServletRequestAware{
private String name; // sタグの変数
private Map session; // セッションの宣言
private HttpServletRequest request; // (2)リクエストの宣言

// sタグで必要なアクセサ
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

// セッションで必要なアクセサ
public void setSession(Map session) {
this.session = session;
}

// (3)リクエストで必要なアクセサ記述
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}

public HttpServletRequest getServletRequest() {
return this.request;
}

public String execute()
{
//======================================//
// 値の取得 //
//======================================//
// sタグのnameは、何もしなくても取得されている

// セッションでの取得
int kai;
String kaistr = (String)session.get("kaisu");
if ( kaistr == null)
{
kai = 0;
}
else
{
kai = Integer.parseInt(kaistr);
}

// (4)リクエストパラメタでの取得
String start = getServletRequest().getParameter("start");
if (start != null)
{
try
{
kai = Integer.parseInt(start);
}
catch(Exception e)
{
// 数字でなかったら、なにもしない
}
}


//======================================//
// 処理 //
//======================================//
kai++; // 今回の分を足す
String msg = "Hello World" + name + ":"+ kai+"回目";


//======================================//
// 出力 //
//======================================//
// セッション書き出し
session.put("kaisu", String.valueOf(kai));
session.put("msg", msg);

this.addActionMessage("成功1");
return SUCCESS;
}
}






  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「帰ってきたGlassFish Users Group Japan勉強会」に行ってきた!

2015-09-17 08:27:34 | JavaとWeb
昨日(9/16)、「帰ってきたGlassFish Users Group Japan勉強会」
に行ってきた。その内容をメモメモ




■JavaEEパフォーマンスTips 上妻(あげつま)さん
・自己紹介
・JavaEEのレイヤー毎の性能Tips
 プレゼンテーション:JSF
  古いmojarra(もはら)を使わない
   JSFタグが増えると遅くなる。4.1で修正
   5000タグで4秒ぐらい
     →Payaraは4.1ベースなのでで150ミリ秒

 ビジネスそう
  DIはEJBでなくCDIを使う
   EE6からCDI
   EE7からbeans.xmlなしでデフォルト有効化
   EE5マデハEJB間でのみDIが利用可
  EJBのループ呼出しによるオーバーヘッド
   万単位以上のループでオーバーヘッド
  CDIはほとんどオーバーヘッドない
  @Transactionalは正しくつけること
  @Asynchronous利用時はEJBスレッドプールに注意
    GlassFish:デフォルトだとスレッドループは16でとまる
    EJBコンテナのプロパティ
  JPAのexecuteBatch設定を忘れない
     JDBC利用時は意識する
     eclipselink、Hibernateもデフォルトバッチしていない
     eclipselink→persistence.xml

・まとめ
1.古いもはらはつかわない
2.DIはCDIを使う
3.EJBスレッドプール
4.executeBatch設定を忘れない

http://www.slideshare.net/agetsuma/java-ee-tips-glassfishjp




■JavaEE8先取り MVC1.0入門
・スライド60枚の発表用をglassfish_jpでつぶやいた

http://www.slideshare.net/masatoshitada7/java-ee-8mvc-10



・自己紹介
・MVC1.0とOzark(おざーく)
・注意点:これから仕様が変わる可能性
1)MVC1.0登場の背景とコンセプト
・Struts1のEOL
・JavaEEへの回帰
・JSF:コンポーネントベース→作り方おとなる
  →JAVAEE標準のアクション
・調査結果
  JSON-B
  セキュリティ
  キャッシュ
  インターセプター
  MVC
・MVC1.0 2015年3月にアーリードラフト
・JSFを否定するものではない(共存可能)
・MVCのコンセプト
  MVCアプリのコア
  JAX-RS上で動かす
  JSF,Faceletsをサポート
→JAX-RSを中心に既存のJavaEEテクノロジーを最大限に
ビュー
  JSP
コントローラー JAX-RSリソースクラス
モデルCDIビーン JPA

2)機能とサンプル
・参照実装Ozark
・下準備:Jax-RSの有効化
・CDI Beanによる値の受け渡し
・リダイレクト
・コントローラーメソッドの戻り値の型
  1)String
  2)Viewable:MVCで用意された
  3)Response:ステータスコードも返したい
  4)void+@View:あのテーションで指定
・バリデーション
  BindingResultに詰められる
・例外処理
  ExceptionMapper実装クラス
・サポートされるビュー技術
  JSP
  Facelets
・セキュリティ
   CSRF対策

3)実装されない機能
 ボタン2度押し→クライアントサイド
 今後期待
  バリデーショングループ
  認証認可 EE8

まとめ
・MVC1.0は
  EE8標準




■JavaEE on Heroku with Payara Micro
・自己紹介
・GlassFish使ってますか?
  WildFly,SpringBoot
・SoftwareDesignでGlassFishの文字が
・JavaEEでPaaS→気軽に試すならPaaS
・JavaEE on PaaS
  Gppgle App Engine CloudBees,Azure,Oracle Cloud,OpenShift・・・
・I loved RUN@cloud on CloudBees!
  →PaaS事業終了
・OpenShiftあたりがクレジットカード不要
・7月にSalesforceのイベントに参加 Herokuの話も
・HerokuのJavaサンプルはSpark(フレームワークのほうの)
・Payara:そもそもPayaraとは→ほぼそのままGlassFish
・Payara Micro
 java -jar payara-micro-4.1.153.jar --deploy target.war
 でデプロイまで
・蓮沼さんのエントリをよめばOK!
・Herokuアカウント作成(クレジットカードいらない)
・Java Get Start
・ポートをちゃんととる
さんぷる
http://arcane-retreat-2618.herokuapp.com/CongratulationsMakiMaki-1.0/
・日本におけるPayara周辺




■Life With Payara
蓮沼さん

Payara4.1.153あべいらぶる
http://payara.co/downloads
GlassFish:Oracle GlassFishの商用サポートやめる
→4.1はオープンソース版だけ
 いったん死んだ?
GlassFish復活2015
→一番初めに手を挙げたのがC2B2
  →GlassFishクローンを開発=Payara

GlassFishとPayara
・単純なフォークではない
・定期的リリース
・Github上
・本家にパッチ提供、本家からは1か月に1回
・4.1系=EE7 ふる対応
・JavaDB,OpenMQ
・L10Nサポート

アドバンテージ
・商用サポート:GlassFishもPayaraも
・Hazelcast(インメモリ)
・Payara Micro
・日本語訳のアップデート




■日本GlassFishUser会
事務連絡 「副会長の」蓮沼さん
岡崎会長や寺田さんが作った
規模縮小→忘年会サークル→ファンクラブ
勉強会の活発化
・寺田さんオラクル退職→支援してくれる人がいる
・活動メインは勉強会
・JCP公認JUGへの申請→今後の会長は蓮沼さん
・今後の運営について
DoorKeeperへの登録
   https://glassfish.doorkeeper.jp/
 Webサイトも時々チェック
   http://www.glassfish.jp

「新会長の」蓮沼さんからでした!

連絡事項
・ビジターカードを返すこと
・懇親会
・次回:目標年明け
・ご意見ご感想のアドレスは、http://www.glassfish.jpに載せる

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ダイバーシティとグローバリゼーションからみる、フォロワーの重要性

2015-09-16 17:18:33 | Weblog
「ダイバーシティ」と「グローバリゼーション」
どちらも、異文化の中で円滑なコミュニケーションをとるための手法だけど、
その手法は異なる。




ダイバーシティは、「多様性」であり、基本的に個々人は、違うものとして、
違った状態を受け入れ、その中で共創して、なにかを成し遂げるもの。

それに対してグローバリゼーションは、「国際化」としか言っていない。
国際化するのに、実際には、民主主義の王者アメリカ資本主義やら、
多国籍企業なら本国のやり方など、1つのやり方を世界的に「同じように」
行う方法が、一番手っ取り早いし、「日本においては」そういう
国際的企業が多いのかな?

金太郎飴でたとえると、たてに見ると、白い部分、黒い部分、赤い部分
などがあって、これを寄せ集めて、金太郎飴さんができるよね!
というのが、「ダイバーシティ」
この金太郎飴を横に切ると、どこを切っても同じ形(金太郎)になる。
これが、グローバリゼーション。




なお、最近はダイバーシティより、インクルージョンが話題。

インクルージョンは、ダイバーシティを越えて、一つの組織として
個々の能力を活かした活用をしようとする。

コレは一見、よさげに聞こえるが、根本的問題には答えていない。
つまり、ダイバーシティが起こるということは考え方が違うので
あるから、それをどうするか?(コンフリクトをどう解決するか)

従来のグローバリゼーションの場合、一つの価値観を押し付けるので、
それはなかったわけだ。




ダイバーシティは、いろいろな視点からみて、違った角度から
物事を分析できる。そこで、イノベーティブな分野に向いている。

逆にグローバルといえば、製造業という感じで、
大きな部隊を動かすには、統一の考え方のほうがいいので、
グローバル化が向いている。

前に書いた、

イノベーションを起こすのに必要な3種類の人間
http://blog.goo.ne.jp/xmldtp/e/0d02a037c46eb3e16435abcce8b90b19

だと、ダイバーシティを求められるのは、イノベーター、
グローバル化するといいのは、ワーカー
ということになる。

だが、イノベーションを興し、革命的な製品を世に広めるには、
ダイバーシティの多様性から生まれるコンフリクトを超えて、
一つにまとめて、ワーカーさんへグローバル化した状態で渡す必要がある。

これがさっき言った、インクルージョンで、これを行うムーブメントになる人が
フォロワーってことになる(つまり、フォロワーはイノベーターの社会と
ワーカーの社会の構造的空隙を埋める存在である)
よってイノベーションを興し、革命的な製品を世に広めるには、フォロワーが重要になる


P.S って考えると、フォロワーは、だれからも受け入れられる人
  →アイドルってことになる。

 グローバル社会では、権力者が、他の人のいうことを聞かせるので、
 権力を握ることが重要だったけど、
 インクルージョンは、コンフリクトを超えてみんなから納得される
 愛されるということが重要になるので、
 偉い人が変わるのだ。。。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

グラフデータベースのNeo4jのお勉強をしてみる その1-インストールと確認まで

2015-09-16 11:59:51 | Weblog
グラフデータベースのNeo4jのお勉強をしてみたいとおもいます。
参考にしたサイトは、


グラフDBのNeo4jを1日触ってみた
http://engineer.wantedly.com/2014/01/02/neo4j-introduction.html





■まずは、インストール

ダウンロードサイト

http://neo4j.com/download/

にいくと、こんなかんじ

Community版のほうをクリック

な画面になると、もうダウンロードが始まっている。終わるまで待つ

終わると、
neo4j-community_windows-x64_2_2_5.exe
のような、exeファイルがダウンロードできるから、これをダブルクリックで実行

な画面になる

Nextをおし

I agreeをチェックしNext

Nextしてると

インストールが始まり、

以下のダイアログ

でおわる。チェックが入っている状態でFinishをクリックすると

neo4jのサーバー側プログラムが立ち上がる




■立ち上げ

サーバー側プログラムの「Start」をクリックすると

と黄色になって、そのうち

緑色になる。こうなると、サーバー側プログラムは立ち上がっているので
ブラウザから

    http://localhost:7474

にアクセスする。すると

という画面になる。ユーザー名をneo4j,パスワードをneo4jといれて、Connectをクリック

つぎに、新しいパスワードを聞いてくる。適当に入れて(上と下は同じもの)Set passwordをクリック

すると、こういう画面になる




■なんかいれてみて、確認する
上記の画面になったら、赤く囲んだうちのどちらか(センシティブでないデータとっていい?Yes/No)
を選び、クリックすること。くりっくしないと、

青く囲んだ部分がでてこない。この青く囲んだ部分に操作を入れる。こんなかんじ

実は、下にソースコードが出ている場合、そこをダブルクリックすると、上に
入るみたい。で、三角形(赤くかこんだところ)をクリックすると

なように、グラフ表示を勝手にしてくれる。




操作方法まで、まだ調べていない。今度分かったときにでも・・・

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

IoTとか言ってもBIMが出来ないと意味ないよね~でもBIM出来たら新国立の問題おきないよね~

2015-09-16 08:08:04 | AI・BigData
 IoTとか、ビッグデータとかいうけど、結局、センサーデータを利用した
予測などを行おうとした場合、建物や機械を作る前に、どこにセンサー置いて、
どこにアクチュエーターなり空調施設なりを、どこに置くかをシミュレート
しないと、効果がわからないはず。

 作ってからでは、「いやそこにセンサー置けません」、
「そのデータとって、良くないという結果が出ても、対応できません」とかに
なってしまうから・・・

 で、そのように、建物を建てる前に、建築物の設計や材料などの情報から、
シミュレーション等を行うものとして、今、BIMが注目されているみたい。




 BIMは、「ビルディングインフォメーションモデル」の略?で、3D-CAD
に建物要素のプロパティ等を入れることによって、いろんなシミュレーションが
できたり、建築に関わる各業者さんと情報共有できるしくみ。

 まあ、ここでは、オートデスク社さんの紹介記事でも載せておきますかにょ・・

BIMとは
http://bim-design.com/about/

Autodesk Revitや、ArchiCADが知られたソフトのようですにょ。
 手順的には3D-CADをつくり、そこに属性情報を入れていくかんじみたい

 建築だと、センサーをつけて、空調やら採光やらを調整するわけで、
そういう点で、IoTを現実化していく上では、必要な事項となっていく。

 AutoCADで作っていると、これと、Autodesk Revitが連携し、さらには、
Autodesk社のクラウドレンダリングAutodesk360とも連携できるみたい。




 で、このまえ、知り合いと話になったんだけど、実際にはBIM難しいよねえ・・
 という話になった。

 BIMに関わる全部の業者が足並みを揃えないといけない。
 建築業はやる気だし、分かってるんでしょうけど、建築全部が関わってくるから、
照明からエレベーターからなにからなにまで、全業者さんがBIMに対応しないと、
いけないんでしょう?

 となってくると、温度差、理解差、あたらしもの好き差があるわけで、
 とくに、お年寄りばかりの職場だと、「BIM対応しろよ!」と、下をしかる
だけになってしまう・・・

 まあ、時間と共に、BIMになっていくんだろうけど・・・

 BIMがうまくワークしないと、実際にはIoTを効率よく使って、空調・採光制御する
なんていうのも・・・どうなんでしょうねえ・・・




 BIMがうまく行っていれば、予算管理も出来るはず?で、そうなってくると、
新国立みたいな、急に予算オーバーなんていうことが後からわかるってことも
ないはず(フロントローディングで

 逆に言うと、新国立みたいな問題が起こるってことは、BIMはまだまだで、
IoTも、建物に入っていくのは、どうなんだろうね・・・って、感じですかね?

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Android Payって、仮想通貨が使えるの?どうなの?

2015-09-15 19:19:08 | ネットワーク

Googleがスマホで簡単決済可能な「Android Pay」をついにスタート、Apple Payのライバルに
http://gigazine.net/news/20150911-android-pay-launch/

では、そこのところは詳しく書いていないけれど、

Android Payがスタート!ビットコインも使える?
http://virtualmoney.jp/I0000023

は、いろいろ書いてある。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする