Java
フロントエンドの開発は、TypeScript や flow によりタイプセーフに行えるようになってきています。 そうなるとバックエンドとフロントエンドの通信もタイプセーフにしたくなってくるはずです。 Swagger を使えばそれが実現できそうです。 Swagger により An…
SpringFox の required の挙動を変えたいと思い、試みました。 まずは、状況説明から。 RequestParam アノテーションだけ付けた場合 @GetMapping("/foo") public String foo(@RequestParam Integer id) { return "bar"; } 上記のような場合、id は必須になり…
小ネタです。 Kotlin とかの smart cast, TypeScript とかの Type Guard のようなことを Java でできないかなと。 変数の型をチェックしたら、自動でキャストされているみたいなやつです。 普通に書くと if (pet instanceof Bird) { ((Bird)pet).fly(); } el…
Java で if 式っぽいことができないかなーと思い考えてみました。 Java で if 式っぽい事をやってみた。これ、キャストなしで、できないかなー。 #教えて pic.twitter.com/EqUh8wes8F— トモフミ (@tomofummy) 2016年4月17日 キャストをなくすには、1個 stati…
最近あまりブログ書くネタもなく。 4月1日ということで、初心にかえって Java の Socket クラスで HTTP Hello, World. import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; impo…
はじめに REST API をタイプセーフに呼び出したいのです。 その実現のため WADLとかを追いかけてたんですが、Swagger は完全にノーマークでした。 WADLは、実質終わっているような。 昨年(2015年11月)、Microsoft, Google, IBM などにより Open API Initiati…
前回のエントリの続きといった感じです。 自分は、今のところ Webアプリは、サーバサイド Java、クライアントサイド TypeScript で作りたいと思っています。 実際 TypeScript を利用していて、タイプセーフになってないと思う部分がありました。 サーバから…
サーバサイドを Java、クライアントを TypeScript で作った場合、タイプセーフに通信できないかという試みです。 考えられる選択肢としましては、 Thrift とか、いっそサーバサイド Scala, クライアント Scala.js にするっていうのもあるとは思います。 今回…
Java7 も本日、EOLを迎えました。 ということで、Java8ベースの Selva という Webフレームワークを作ってみました。 github bintray(jcenter) Overview まずは、最小の コード例 package io.github.chibat.selva.example; import io.github.chibat.selva.App…
Java の template engine で Rythm っていうのがあるんです。 HTMLのテンプレートに限らず、色々な用途でも使えそうです。 Rythm Template Enginerythmengine.org 試してみました。 まずは、Java 。 mainメソッドを持った Model クラスです。 package app; i…
「Thrift いいよー」みたいな話が聞こえてきて、調べてました。 なんか聞いたことあるなと思ったら、Hive の stack trace でよく見かけたわーと思い Hive でも利用されていることを知りました。 Thrift って何かというと wikipedia からの引用だと Apache Th…
最近、'API'っていうと、RESTでJSONをレスポンスするような事を指してる人が多いと思います。 しかし、呼び出し側のコードも提供せず、'API'を名乗るのは如何なものかと思うんですよね。 SOAPやRMIやCORBAとかは、APIといってもいいかもしれないけど。 REST…
Spring に RestTemplateという便利なRESTクライアントがあるんですが、呼び出すAPIサーバ毎にプロキシサーバを変えたいと思いまして。 システムプロパティいぢらずに済ませたい。ということでコードは、以下の感じです。 import java.net.InetSocketAddress;…
先日に引き続き、Gradle から TypeScript のコンパイルができないかなと考えていたところ、以下の2つのGradleプラグインがありました。 https://github.com/jzarnikov/gradle-typescript-plugin https://github.com/sothmann/typescript-gradle-plugin 試し…
Java SE 8 からバンドルされる JavaScript エンジンが Rhino から Nashorn に変わります。 そこで シェルスクリプトから Nashorn を試してみました。 準備 以下のように jdk に含まれる jjs のシンボリックリンクを作成しておきます。 ln -si /usr/local/jav…
Spring MVCとJAX-RSってRESTful web servicesにおいて比較される対象になるかと思います (でもTwitterのタイムライン観ててもJAX-RSはよく出てくるけど、Spring MVCはまったく出てこない)。 APIとかみてるとSpring MVCの方がよさげに見えます。パフォーマ…
いろんなJava Webフレームワークで同じ画面を作ってみる(Ninja web framework編)です。 お題は、こちら。 公式サイト: Ninja web framework バージョン: 1.4 2年以上前と同じテーマの続編を今頃書くという。 Ninja web frameworkは、Play1みたいな感じの…
サーバ上でJDBC接続を確認する簡単な方法。Javaに含まれるjrunscriptを利用します。 以下は、Oracleの場合の例 % jrunscript -cp ojdbc6.jar -f - js> var p = new java.util.Properties(); js> p.setProperty('user', 'ユーザ名'); js> p.setProperty('pass…
Medaka 0.2.0をリリースしてみました。Medakaは、Javaで作られたオレオレアプリケーションサーバ、およびサーブレットコンテナ上でも動作するWebフレームワークです。 Wiki: https://bitbucket.org/t1000leaf/medaka/wiki/Home ダウンロード: https://bitbuc…
Medaka 0.1.0をリリースしてみました。Medakaは、Javaで作られたオレオレアプリケーションサーバです。 ダウンロード https://bitbucket.org/t1000leaf/medaka/downloads New Feature 基本機能に関しては、medaka-X.X.X.jar一つのみで起動できるように修正 M…
オレオレアプリケーションサーバをなんとなく作ってたんですが、ちょっとだけ形になってきたのでWikiにまとめて公開してみました。Medakaという名を与えました。 t1000leaf / medaka / wiki / Home — Bitbucket 相変わらずクッキーを扱うAPIとかないんで、ロ…
Gradle + eclipse + WTP の組み合わせでのプロジェクト作成をちょっと整理。まずは、ターミナルからappという名前のプロジェクトを作成する。 % APP=app % mkdir -p $APP/src/{main,test}/{java,resources,webapp} % mkdir -p $APP/src/main/webapp/WEB-INF …
なんとなく、JDKだけで、依存ライブラリなしでアプリケーションサーバを作ってみようと試みました。フレームワークでなく、アプリケーションサーバ。Servlet APIは無視です。 ソース 以下、使い方。 app.properties まずは、設定。 クラスパスが通っている所…
地味な話ですが。 PostgreSQLのJDBCは、ResultSetMetaData#getColumnNameの挙動が他のDBのJDBCと違う。 selectするときにカラム名に別名をつけた場合、getColumnNameは元のカラム名、getColumnLabelは別名をとってくるんですが、PostgreSQLは、どっちも別名…
今どきは、Play frameworkやNode.js、Java EE6、Jerseyあたりを追うべきなのかもしれませんが、自分はStripes Frameworkいじってます。JSONリクエストをActionBeanにバインドできるように拡張してみます。Jacksonを使います。ActionBeanにリクエストマッピン…
GPlus Dialy Maker というものを作ってみました。過去のGoogle+への自分の投稿を確認しやすくする整形ツールです。本当は、Twitterでいうところのtwilog、facebookでのlogviewerみたいなものを作りたいと思ったんですが、Google+のAPIがまだちょっとしかない…
引き続きStripesです。 StripesにもInterceptorの機能が標準であり、色んなフェーズに共通の処理を差しこめるわけです。 package selva2; import jp.sf.amateras.mirage.integration.guice.Transactional; import jp.sf.amateras.mirage.session.Session; im…
始まりはここ。今回は、ConfigとJSONレスポンスについて。 web.xml web.xmlで'webappRoot'にWebアプリケーションのルートになるベースパッケージ名を指定します。 <filter> <filter-name>actionfilter</filter-name> <filter-class>org.selva2.webframework.ActionFilter</filter-class> <init-param> <param-name>webappRoot</param-name> <param-value>webapp</param-value> </init-param></filter>
指定パッケージ配下をトラバースするのって自力でちゃんとやろうとすると面倒だと思っていましたが、S2Utilを使うと簡単にできました。便利です。以下は、指定されたパッケージ配下でActionクラスを継承するクラスを拾う例です。 package webframework; impo…
いろんなJava Webフレームワークで同じ画面を作ってみる(Play!編)です。 お題は、こちら。 公式サイト: Home — Playframework バージョン: 1.1 このフレームワークは、他のフレームワークとは違った凄さがあります。 最初からこの企画に含めなかった自分…