ぶろぐ

日記です

はまったヒストリー


だんだん寒くなってきましたねー
最近喉が痛いですよ。
つかれたーつかれたー
1日1プチハックを目指してなんかしよーとか思ってたりするので、どうでもいいことだけど書き残しておく。

今日のはまったHistory

  • Ajaxクロスドメイン通信
    • access-control-allow-origin、なにそれ知らん。
  • getJSONはエラーハンドリングできない
    • 何それ使えない…
  • Hibernate
    • なんだ、Mappingの設定間違っていただけか
  • Hibernateでcount(*)したい
    • ぐぐったらすぐ出た。

あれ、HibernateでもネイティブSQL叩けるのかな?
それなら結構Hibernateいいかも。

Hibernateで集計

public Boolean checkRegistByIsbn(String isbn) {
	Session session = getSession();

	// 検索条件
	Criteria criteria = session.createCriteria(Book.class);
	criteria.add(Restrictions.eq("isbn", isbn));

	// Projections、射影、
	Long rowCount = (Long) criteria.setProjection(Projections.rowCount())
			.uniqueResult();

	if (session != null) {
		session.close();
	}

	return (rowCount.intValue() != 0);
}

なんと、rowCountの結果はHibernateのバージョンによってIntegerだったりLongだったりするらしい。
困ったもんだ。

HQL(Hibernate)でcount(*)の扱い方: ギジュツメモ
http://bellks-tec.cocolog-nifty.com/blog/2007/07/hqlhibernatecou_120a.html

例外処理は後でやろう

jQueryのクロスドメイン通信ではまったんですけどorz

楽天ブックス検索APIを使用するスクリプト

function requestBookInfomation(isbn) {

	$("#hoge").html("問い合わせ中");
	// isbn = "4894712636";
	var developerId = "Developer ID取得してくださいな";

	var url =  "http://api.rakuten.co.jp/rws/3.0/json?operation=BooksBookSearch&version=2011-07-07";
	url += "&developerId" + developerId;
	url += "&isbn=" + isbn;
	url += "&callBack=?";

	$.ajax({
		cache: false,
		type: "GET",
		url: url,
		timeout: 7000, // timeout設定しないとerrorに設定した関数をコールできない件
		dataType:"json",
		beforeSend: function() {
			// alert("通信するよー");
		},
		complete: function() {
			// alert("通信おわたー");
		},
		success: function(data){
			if(data.Header.Status === "Success") {
				// なんか色々やろう
				$("#title").val(data.Body.BooksBookSearch.Items.Item[0].title);
				$("#author").val(data.Body.BooksBookSearch.Items.Item[0].author);
				$("#publisher").val(data.Body.BooksBookSearch.Items.Item[0].publisherName);
				$("#price").val(data.Body.BooksBookSearch.Items.Item[0].listPrice);
				$("#saleDate").val(data.Body.BooksBookSearch.Items.Item[0].salesDate);
				$("#image").val(data.Body.BooksBookSearch.Items.Item[0].largeImageUrl);
				$("#caption").html(data.Body.BooksBookSearch.Items.Item[0].itemCaption);
				$("#image").html('<img src="'+ data.Body.BooksBookSearch.Items.Item[0].largeImageUrl + '" />');
			} else {
				$("#hoge").html("ISBNコードを確認してくださいな");
			}
		},
		error: function(){
			$("#hoge").html("サーバーとかネットワークとか確認してくださいな");
		}
	});
}

あーこれ動くわー(多分)
getJSONがエラー処理できないと知ったときは、あれ、XHR自分で組んだほうがいいんじゃね?とか思いそうになったけどjQuery.ajaxはデキる子だった。
callBack=?を書くのがみそらしい。
うん、仕組みよくわかってない。多分自動JSONP
仕組み追うべきだと思うけど、うわーうわー
ちょっとこれは謎だ。非常に謎だ。
クロスドメイン通信できねー!前できた気がするけどなぁ…と思い、

  • サーバーサイドで楽天API取得、クライアントに返す

とゆーproxy的な事しようかなーと思ったけど、callBack=?を書けばおkらしい。
access-control-allow-origin?いつから有るの?昔から?

未熟過ぎる

未熟すぎるんです、私。
ライブラリに生かされています。
生かされています!
でも生かされててもいい。貴方様のおかげですでいい。
そのかわり、中身を理解したい。中身を理解して使うことが礼儀(そうなの)
分かってあげたい!
…いや、中身理解は嘘。できないorz 外部インターフェースレベルで挙動を理解しよう。
でも自分が好きなモノは中身まで理解したいなー
Linuxソースコードを読もう、なんてのは辛すぎるんだけど、jUnitのコード読もう、Strutsのコード読もう、Springのコード読もうTomcatStruts2,Java…ならちょと挑戦したい。したい!DIの実装理解したい…AOPバイトコード改造?なんだその魔術は…
うん、コードリーディング挑戦しよう、いつか。そう、いつか。
(いちょjQueryの中身も読んでみる価値あるきがするー)
そんなことを思ったり思わなかったりする一日でした。


クロスドメイン通信のセキュリティってどうなっていくんだろうなぁ