僕がSIerを辞めた理由

今さら感が強いですが、去年の5月にSIerを辞めました。 その前の会社とあわせて6年ほど(途中6ヶ月ほど育休期間があります)受託開発がメインのエンジニアをやってきましたが、いろいろ思うところがあって受託開発ではないところに転職しました。 その理由…

JAX-RS(JavaのREST API)とAngularJSでGithubっぽいWebアプリを作った

動機 今年度に入ったあたりからJerseyを仕事でも使いだしたのですが、プライベートでも試すだけじゃなくてなにか作ってみようと思うようになりました。で、公開して何かしらの反応が欲しいなと。それはプラスの反応だけでなくマイナスの反応でも、成長の糧と…

JPQL(EclipseLink)でパラメータをbindする/しないの話

JPA

今、EclipseLinkでJPQL使って開発してます。 SQLのログを出しているとJPQLに埋め込んだ定数もパラメータ化されているのがちょっと気持ち悪いなと思ってたんですが、動作には問題なかったので、特に気にしてませんでした。 エラーとなる場合もある ところが、…

JUnit4.12がリリースされたのでcontext-nestを試してみた

8月にこの記事で知ったJUnit4.12ですが、先日betaが取れて正式にリリースされたようなので、おいしいとうわさのcontext-nestを試してみました。JUnit 4.12の新機能紹介まとめ - うさぎ組まず、pom.xmlのjunitのバージョンを4.12に上げます <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope></scope></dependency>…

Glassfish4.0.1build5とjersey2.8リリース

Glassfish4.0.1 build4でいろいろ試していましたが、build5が知らないうちにリリースされてました。 http://dlc.sun.com.edgesuite.net/glassfish/4.0.1/promoted/ (2014/5/5) よく使ってるものでいえばjerseyが2.5.1から2.8にバージョンアップしてました。 …

jersey-mvc-freemarkerでfreemarkerの設定をカスタマイズ

freemarkerという結構いろんなことが出来るJavaのテンプレートエンジンがあります。 http://freemarker.org/ 今悪い意味で話題のstruts2でも使われているライブラリです。 ※ freemarker自体が悪いわけではないですまた、今JavaのWAFでちょっと話題のJAX-RSと…

githubにmaven repositoryを作成して自作ライブラリを登録する

はじめに Mavenのライブラリは基本的にはCentral Repositoryに登録されていますが、手続きも面倒そうだったりするのでもっと手軽に公開サーバに登録したいということでやってみました。このあたりを参考にしました。 http://blog.lampetty.net/blog_ja/index…

Glassfish4.0.1でJersey MVCのvalidationを試してみた

動機 このあたり便利そうなので試してみました https://jersey.java.net/documentation/2.5.1/mvc.html#d0e12836最終的にはバリデーションエラーの際に戻った画面上で入力フィールドに値を残しておきつつ、エラーのあったフィールドにエラーメッセージを出し…

Glassfish4.0.1+jerseyでCDIエラー

最初に まず、jersey-mvc-freemarkerを使うために次のようにpom.xmlを書きます。 jersey-mvcは既にGlassfishに含まれているためprovidedにします。 jersey-mvcはservlet-api2.4に依存しているんですが関係あるのはjspを使うときのようなので https://jersey.…

Glassfish4のJerseyのFilterでセッション情報を取得できなかった件

これ、リソースクラス側でセッションに格納したログイン情報をfilterで見て制御するというのをやろうと試してあきらめてたんですが、単なるバグだったっぽいです。 https://java.net/jira/browse/JERSEY-19604.0.1 build4では直ってます。 こういう致命的な…

Glassfish4でlambda式を使ってみた、の続き

前のメモが中途半端な感じで終わってしまったので、もうちょっと試してみました。Glassfish4.0.1 buid4つかってラムダ式を書いて実行すると 起動時にこういうエラーが出たけど、なんか動いているっぽい。という話。 重大: Exception while visiting WEB-INF/…

Glassfish4でlambda式を使ってみよう、としたが・・・

先日Java SE8がついにリリースされました。早速ラムダ式試してみました。 慣れるまでは大変そうですが、記述が簡単になるのがいいですね。さて、今回は昨年リリースされたGlassfish4でJava8のラムダ式が使えるかどうかを試してみました。 準備 まず、Java SE…

Javaの拡張for文のなかで簡単にindexを扱いたい

ものすごくシンプルな例としてList strsという変数があるとして、そのインデックスと文字列を表示したいという場合、 普通にfor文で for (int i = 0; i < strs.size(); i++) { System.out.println(i + ":" + strs.get(i)); } ってやるのが普通なんですが、一…

JavaでPostgreSQLにCSVデータを取込むときはCopyManagerが速くて便利

無知は怖いという話です。今まではORMフレームワーク使って1件ずつinsertしたり、ちょっと早くしたい場合はINSERT文を構築して100件ずつとかまとめてinsertしたりしてました。今回、ちょっと調べてみるとPostgreSQLではCOPYコマンドというのがあって、jdbcラ…

GlassFish4.0でJAX-RSのリソースにCDIでインジェクト出来ない問題

コードは次のとおり import文等は省略してます。 TestBean.java @ApplicationScoped @Getter // lombok public class TestBean implements Serializable { private Integer count = 0; public void increment() { count++; } } TestResource.java @Path("tes…

Jersey MVCでResponse Headerにcharsetを指定する

JAX-RS実装であるJerseyですが、通常の画面をMVCで構築するための拡張が用意されています。 https://jersey.java.net/documentation/latest/mvc.html基本的な使い方は上のリンク先を見てもらうなりぐぐってもらうなりして、今回Responseヘッダにcharsetを指…

struts2における静的ファイルについてのメモ

静的ファイルへのアクセス 通常jsやcssのファイルはWebContentやsrc/main/webapp(Maven Projectの場合)の中に置いて直接参照させます。 例えば、WebContent/css/main.cssはhttp://address/コンテキスト名/css/main.cssでアクセスできます。 もうひとつの方法…

freemarkerの設定

設定は3つのレイヤで可能 上位からEnvironment,Template,Configurationです。それぞれ、Configurableクラスを継承しています。 http://freemarker.sourceforge.net/docs/pgui_config_settings.html より上位のレイヤの設定内容が有効となります。例えばEnvir…

CodeIQ 目指せお釣りマスター!を解きました

オリジナルの問題 http://pavlocat.hatenadiary.jp/entry/2013/08/25/181515今回は商品10個、商品を渡す順番とお金の渡し方を考えます。@ozy4dmさんによるコード https://bitbucket.org/ozy4dm/otsuri_master 私の解答です(Java)。 https://gist.github.co…

struts2 / Freemarkerでpublicフィールドを参照できるようにする

Freemarkerでは通常getterを見るようになっていてpublicフィールドは参照しません。 ちなみにこれは ${hoge.hoge1} みたいな場合で のようにすればpublicフィールドも参照可能です。(これはfreemarkerではなくstruts2のValueStackを使っているため) なので、…

みんなに役立つ「テスト」を学んでみよう!

2013/10/17 DevLove関西の勉強会 http://devlove-kansai.doorkeeper.jp/events/5586 忘れないうちにメモ そもそも そういえばテストを体系的に学んだことないよな 「とりあえずユニットテストやって(Web開発なので)画面チェックすればいいや」、っていう軽…

S2JDBCを改造(order byを柔軟に設定できるようにする)

参考 通常のorder by 指定 例えばここで使ったようなテーブルがあるとして、 postgresqlだと create table employee ( id SERIAL NOT NULL, name TEXT NOT NULL ); id順に取得したい場合はSQLは SELECT * FROM employee ORDER BY id; のようになります。 で…

[CodeIQ] 平成変換問題解きました(CodeIQ×はてな エンジニア夏祭り2013)

問題 オリジナルはこれ http://antimon2.hatenablog.jp/entry/2013/08/07/231634実際の問題のページは見れなくなってるようです。僕の解答はここ https://gist.github.com/kamegu/6929169 解き方 解説を見てもやっぱり基本は総当りのようです。 ただし、それ…

JSFでGETパラメータを使うときのメモ

f:viewParamとf:viewActionを使う。これらをf:metadataタグで囲む。 f:viewActionはJSF2.2で追加されたっぽい。それまではf:event type="preRenderView"を使っていた。 http://jdevelopment.nl/jsf-22/#758 http://www.oracle.com/technetwork/articles/java…

デブサミ関西 2013いってきました

昨日9/20に神戸で行われたイベントに参加してきました。 こういうイベントは初参加。 http://event.shoeisha.jp/devsumi/20130920/ 出席したのは 「開発 / デザインのプロなら知っておくべき 互いの能力を最大に生かす方法」 江川 崇/矢野 りん 「チケット駆…

JSFってどうやって使うのがいいんだろうか

最近、 http://hoshi.air-nifty.com/diary/2012/06/java-ee6java-ee.html みたいな記事を読んだりしてJavaEEに興味が出てきて Java EE 7 & GlassFish について語ろうにも参加したりしました。 で、JavaEEではフロントエンドの画面作成(MVC)はJSFのようです…

jQueryでSVGを扱う

svg

結論から言うと、セレクタを使ってHTML要素を取得するくらいしかjQueryは使えなさそう。 addClassとかつかってスタイルを変えれれば便利なんだけど、できなかった。例えば次のような直線をひくとする。 <svg id="svg1"> <line x1="100" y1="100" x2="200" y2="300" stroke="#000" class="cls1"/> </svg> SVG要素作成 jQueryを使って次のように書きたいけど…

jQuery UIのsortableでtable並び替え(helperオプションで表示の修正)

jQuery UIのsortableを使ってtable要素を並び替えるの続きです。 例えば上のリンクのデモ画面を見ると、並び替えをしようとして行をドラッグすると移動中の行の幅が小さくなってしまっています。 例えば、このデモ画面を見ると、ドラッグ中にdivとかliの場合…

jQuery UIのsortableを使ってtable要素を並び替える

sortableの基本的な使い方はこちらを参照。 jQuery UIのsortableを使ってドラッグアンドドロップで並び替え 間違った例 一番シンプルに書こうとするとこうなるかと思います。 HTML <table id="sortable-table"> <tr> <th>番号</th><th>項目</th><th>備考</th> </tr> <tr> <td>1</td><td>項目1</td><td></td> </tr> <tr> <td>2</td><td>項目2</td><td></td> </tr> <tr> <td>3</td><td>項目3</td><td>なし</td> <…</tr></table>

struts2でJSONを出力する

struts2でJSONを結果として出力したいとなったときのために、JSON Pluginがあります。これとconvention pluginのアノテーションを使って実際に試してみました。もちろんJSONとなる文字列を作って、InputStreamオブジェクトに設定してStream Resultとして返し…