JavaのPython化?
最近、データ処理用途にPythonも使っています。
itertoolsなどの各種Generatorが非常に面白く、種類が多くて使いこなせていませんが
どれにしようかなと悩むのが楽しかったり。
で、Java8も最近やっと調べ始めたのですが、ラムダ式の他にもStreamAPIを知りました。
何というか、まんまPython。
ただStreamAPIは非常にまどろっこしい。Pythonみたいにもっと簡単に書けたら捗るんだけどなぁ。
なぜかPythonみたいにIteratorベースじゃないし。
あとはyieldが使えるとうれしいのですが。
かなり近づいてきた感がありますが、クラスの宣言の楽さやジェネリクスなどがあるから
まだJavaのほうがなじむ感じがします。
Pythonは繰り返しをスマートに書こうとすればするほど一行が伸びるので、
適度に区切るとJavaでも事足りるかな、と。
jqueryのloadのcallbackでハマる
loadで持ってきたDOM要素に対してコールバックのタイミングでjqueryのセレクタが機能しない。
下記のalert文の時点でURLの要素が何も表示されてないことより確認。
ブラウザ依存(環境はFirefox)?他は未確認。
$("#id").load("URL",null,function(){
alert(URLの要素)
URLから取得した要素に対しイベント追加
});
悔しいので
- 2行に分けて$("#id").ready(function()…にして区切ってみる
- コールバックをsetTimeoutで明示的に遅らせてみる
とかとかいろいろ試した結果、
$.get(URL,{},
function(data){
dataにイベントを追加
$("#id").html(data)
},
"html"
);
に落ち着きました。
load()はDOM操作のない情報に対して向いているという解釈でいいのかな。
load()は$.get()に対して記述が楽以外のメリットがないと使わないほうが紛れがないですね。
load()も結局パラメータなしのGETリクエストなので。
jqueryのパフォーマンスで上回るとかあるのかもしれない。
Dropwizard勉強中のTips
勉強中に引っかかったところをメモしておきます。
- HibernateBundleのインスタンスはテーブル毎に必要
- サンプルではテーブル1つしかなく、インスタンス名もhibernatebundleなので
これひとつで済むと誤解していた。 - しかしサンプルを良く見るとHibernateBundleのコンストラクタに
テーブルのDAOクラスを渡している。
テーブルを増やすとここ以外にも定義、initialize(),run()にも追加必要。
慣れてきたらfactoryみたいな補助クラスを作りたい… - Viewで使用するmustacheのリソースにアクセスするにはdropwizard-views-mustacheのライブラリが必要
- freemakerを使うならdropwizard-views-freemakerのライブラリ
- test.mastacheを参照したければ
- [src/main/resources/viewソースのパッケージ/test.mastache]に配備
dropwizardの規則に加え、使用しているライブラリも知らないものばかり。
(今回のmastacheの前にjerseyの壁もありました。RESTってはじめて聞いた)
先は長いぞ。。。
mysql workbenchをCentOS6.5へインストール
知っている人には今更な話ばかりなのですが。
レンタルサーバーのcui環境に慣れきったいたのでmysqlにguiがあるとは考えもしませんでした。
( さすがにjavaは自宅PCのeclipseで書いてます。最初の一年はsakuraエディタでしたが )
というわけで早速開発環境のCentOS6.5へインストール。
MySQL :: Download MySQL Workbench
すると依存性で引っかかる。
python-paramikoとprojが必要らしい。
前者はyumでかかったが後者がかからずちょっと調べる。
fedoraプロジェクトで作成されているEPELに入っているらしい。
fedora愛好家がfedoraのパッケージを他のRedHat系でも使いたいから開発しているとか。
どうでもいいことですが、移植って多大な時間と労力がかかるのに
平然とやってのける人達の本業って何なんでしょうか。
仕事をしながら片手間なのかな…すごいとしか。
そんな人たちの成果を拝借するためにはyum install epel-release。
からのyum install proj。
で、rpmは成功。実行しようとするとlipzip.soとlibtinyxml.soがいないと怒られる。
これらは依存性チェックで引っかからないらしい。なぜ…
欲しければやるぞとyum install libzipとyum install tinyxml。
やっとGUIとご対面できた。
Hibernate&DBUnitの連携コードでgithubデビュー
遅ればせながらgithubデビューです。
コードを公開する自己満足とdropwizardのサンプルをcloneしたいから。
Hibernate.cfg.xmlに書いた設定でDBUnitを動かせたら便利かと思いました。
すでに誰かがやってたりしてそうですが勉強ですね。
コードは以下です。至らないところばかりですがお手柔らかにお願いします。
https://github.com/taketsuru-devel/HibDBUnit
以下、参考文献。
自身のプロジェクト外のhibernate.cfg.xmlを読み込む際の注意点
http://d.hatena.ne.jp/chofutaro/20140719/1405751057
同じことを考えていた外人さん
HibernateToolでの罠(私もはまりました)
http://handatec.blogspot.jp/2012/06/hibernate.html
githubデビューの手引き
Mavenで参照するJarのJavadoc
というわけで勉強中なのですが、mavenが思った以上に便利でたまげています。
antとかだとbuild.xmlとかクラスパスとかjar本体全て共有する必要があるけど、
mavenはpom.xmlひとつでjarはリポジトリを参照しにいくから
プロジェクトのサイズが減る、という認識。
他にも機能はあるようですがまだ追いきれていません。
jarの管理目的でEclipseのmavenプラグインを使うと、自分の場合はjarのみで
ソースやjavadocはダウンロードされませんでした。
解説サイトの情報が古かったりするのでどちらも参照したい。
いろいろ見てると下記の赤枠をチェックすることで解決。
( デフォルトではチェックされていなかった )
すでにローカルに保存されているjarに対してもEclipseを再起動すれば
バックグラウンドで読み込んでくれました。
ひとまずJunit、DBunit、Hibernateを勉強中。
最低限のことならぼちぼちできそう。