GitHub 側に ブログを作った

はてなが https 対応する気配がないなと思い、エンジニアっぽく GitHub にブログを作りました。 chibat.github.io

OpenAPI Specification と Swagger Codegen に至るまで辿った道

OpenAPI Specification と Swagger Godegen に至るまで辿った道。CORBA, RMI, SOAP, Thrift, gRPC, REST, WADL, OpenAPI Specification などの話

ローカル開発環境で Gradle から モック SMTP サーバを起動する

小ネタです。 ローカル開発環境でメール送信のテストをしたいけど適当な SMTP サーバがない場合に、Gradle から モック SMTP サーバを起動する方法です。 build.gradle repositories {jcenter()} configurations {tools} dependencies {tools 'com.github.tn…

Spring Boot と Angular2 をタイプセーフに繋ぐ

フロントエンドの開発は、TypeScript や flow によりタイプセーフに行えるようになってきています。 そうなるとバックエンドとフロントエンドの通信もタイプセーフにしたくなってくるはずです。 Swagger を使えばそれが実現できそうです。 Swagger により An…

SpringFox の required の挙動を変える[Spring][Swagger]

SpringFox の required の挙動を変えたいと思い、試みました。 まずは、状況説明から。 RequestParam アノテーションだけ付けた場合 @GetMapping("/foo") public String foo(@RequestParam Integer id) { return "bar"; } 上記のような場合、id は必須になり…

Angular2 公式の Visual Studio Code エクステンション(Experimental Release)を使ってみた

Angular2 公式の VS Code エクステンションが開発されているようなので試してみました。 インストール 絶賛開発中ということで、Visual Studio Marketplace には公開されていません。 以下のURLから、最新の ngls.vsix をダウンロードします。 https://githu…

Gradle で git のリビジョン, ビルド日時 を プロパティファイルに入れ込む

Gradle で git のリビジョン, ビルド日時 を プロパティファイルに入れ込む方法です。 間違ってたら、ご指摘くださいmm build.gradle buildscript { repositories { jcenter() } dependencies { classpath 'org.eclipse.jgit:org.eclipse.jgit:4.5.0.20160…

Visual Studio Code + Vim extension の キーバインディングをカスタマイズする

最近、Visual Studio Code と Vim extension がいい感じになってきたなーと。 デフォルトのキーバインディングを変更したいと思い設定してみました。 英語化 キーバインディングの設定のその前に。。 VS Code は多言語対応もされており、日本語OSでは、メニ…

Java で smart cast っぽいことをやる

小ネタです。 Kotlin とかの smart cast, TypeScript とかの Type Guard のようなことを Java でできないかなと。 変数の型をチェックしたら、自動でキャストされているみたいなやつです。 普通に書くと if (pet instanceof Bird) { ((Bird)pet).fly(); } el…

Java で if 式っぽいことをやる

Java で if 式っぽいことができないかなーと思い考えてみました。 Java で if 式っぽい事をやってみた。これ、キャストなしで、できないかなー。 #教えて pic.twitter.com/EqUh8wes8F— トモフミ (@tomofummy) 2016年4月17日 キャストをなくすには、1個 stati…

初心にかえって Socket クラス で HTTP Hello, World

最近あまりブログ書くネタもなく。 4月1日ということで、初心にかえって Java の Socket クラスで HTTP Hello, World. import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; impo…

Google Play Music で新しい曲を聴く

たまには技術ネタじゃない記事を。 play.google.com Google Play Music で定額課金して音楽を聴いてます。 初期の特典として月額780円を課金しています。現在だと980円ですかね。 3,500万曲聴き放題です。 気に入っております。 Google Play Music のサービ…

REST API をタイプセーフに呼び出す(Spring Boot + Swagger Code Generator)

はじめに REST API をタイプセーフに呼び出したいのです。 その実現のため WADLとかを追いかけてたんですが、Swagger は完全にノーマークでした。 WADLは、実質終わっているような。 昨年(2015年11月)、Microsoft, Google, IBM などにより Open API Initiati…

React + TypeScript の Examples 作ったので誰かレビューしてw

React の Example 達を TypeScript で書き直してみるという試みをしていました。 コードは、以下です。 github.com github page で動作が確認できます。 React + TypeScript Examples TypeScript が、Version 1.6 で React の JSX に対応しました。どんなも…

TypeScript を Gradle からコンパイルする

サーバサイドは Java、クライアントサイドは TypeScript で書いてて、TypeScript のコンパイルも Gradle でやってました。 (こういうパターンは他の人はどうビルドしてるんでしょう?ちなみにJS系のビルドツールは使ったことがありません) で以前以下のエ…

Mithril 本の TypeScript のコードを いぢってみた

なんと Mithril 本が出ていました。凄い。 Mithril は、JavaScript のフレームワークです。 TypeScript のコードを見ていて型宣言に _mithril が使われていたのですが、アンスコで始まっているということはプライベート的な意味合いなので使わないほうが良い…

続・Java と TypeScript をタイプセーフにツナグ

前回のエントリの続きといった感じです。 自分は、今のところ Webアプリは、サーバサイド Java、クライアントサイド TypeScript で作りたいと思っています。 実際 TypeScript を利用していて、タイプセーフになってないと思う部分がありました。 サーバから…

Java と TypeScript をタイプセーフにツナグ

サーバサイドを Java、クライアントを TypeScript で作った場合、タイプセーフに通信できないかという試みです。 考えられる選択肢としましては、 Thrift とか、いっそサーバサイド Scala, クライアント Scala.js にするっていうのもあるとは思います。 今回…

Java8ベースの Webフレームワークを作ってみた - Java7 EOLを迎えて -

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 を試す

Java の template engine で Rythm っていうのがあるんです。 HTMLのテンプレートに限らず、色々な用途でも使えそうです。 Rythm Template Enginerythmengine.org 試してみました。 まずは、Java 。 mainメソッドを持った Model クラスです。 package app; i…

WADLを読み込んで REST Client になる TypeScript のソースコードを吐き出すツールを作ってみた

wadl2ts というWADLを読み込んで REST Client になる TypeScript のソースコードを吐き出すツールを作ってみました。 というか作り始めようとしました。簡単なサンプルレベルが動いたので記事にしようかと。ソースは github に上げています。 wadl2ts wadl2t…

Thrift で client: TypeScript, server: Java

「Thrift いいよー」みたいな話が聞こえてきて、調べてました。 なんか聞いたことあるなと思ったら、Hive の stack trace でよく見かけたわーと思い Hive でも利用されていることを知りました。 Thrift って何かというと wikipedia からの引用だと Apache Th…

WADL(Web Application Description Language)を利用した Web API の作成

最近、'API'っていうと、RESTでJSONをレスポンスするような事を指してる人が多いと思います。 しかし、呼び出し側のコードも提供せず、'API'を名乗るのは如何なものかと思うんですよね。 SOAPやRMIやCORBAとかは、APIといってもいいかもしれないけど。 REST…

bootstrap の tooltip を最前面に表示する

小ネタ。 bootstrap の tooltip が最前面に表示されず、tooltipの全体が表示されないことがありました。 HTMLの場合は、 <a href="#" data-toggle="tooltip" data-container="body" title="first tooltip"> hover over me </a> JSの場合は、 $('your element').tooltip({ container: 'body' }) こんな感じで、'body'を指定すると最前面に表示され…

bootstrap の popover でスタイルを指定する。

小ネタ。 bootstrap の popoverを使っていて、親要素のスタイルを引き継いでしまい、意図しない感じになる場合があった。 この場合、明示的にスタイルを指定する必要がある。 .popover-title { font-weight: normal; } .popover-content { font-weight: norm…

Spring の RestTemplate のプロキシ設定

Spring に RestTemplateという便利なRESTクライアントがあるんですが、呼び出すAPIサーバ毎にプロキシサーバを変えたいと思いまして。 システムプロパティいぢらずに済ませたい。ということでコードは、以下の感じです。 import java.net.InetSocketAddress;…

TypeScript と eclipse と Gradle と私

先日に引き続き、Gradle から TypeScript のコンパイルができないかなと考えていたところ、以下の2つのGradleプラグインがありました。 https://github.com/jzarnikov/gradle-typescript-plugin https://github.com/sothmann/typescript-gradle-plugin 試し…

gradle eclipse で、 TypeScript のプラグインを設定する

eclipse + Gradle で開発しているJava Web アプリに、TypeScriptを導入してみたいと思いまして、まずgradleでTypeScriptプラグインの設定ファイルを吐き出すよう試みました。 以下の2つのファイルを用意します(node.js, TypeScript, eclipeのTypeScriptプラ…

Nashorn(Java8のJavaScriptエンジン)でシェルスクリプト

Java SE 8 からバンドルされる JavaScript エンジンが Rhino から Nashorn に変わります。 そこで シェルスクリプトから Nashorn を試してみました。 準備 以下のように jdk に含まれる jjs のシンボリックリンクを作成しておきます。 ln -si /usr/local/jav…

Spring MVC でのレスポンスのキャッシュ制御 #spadc13

Spring Framework Advent Calendar 2013 - Adventar 9日目です。 [Spring Advent Calendar 2013 6日目] Spring MVC + Bean Validationでフォームの未入力フィールドをnullにする #spadc13 URL URL2013-12-05 09:28:32 via Tweet Button @making 自分が凄く欲…

Spring MVC と JAX-RS のちょっとした比較

Spring MVCとJAX-RSってRESTful web servicesにおいて比較される対象になるかと思います (でもTwitterのタイムライン観ててもJAX-RSはよく出てくるけど、Spring MVCはまったく出てこない)。 APIとかみてるとSpring MVCの方がよさげに見えます。パフォーマ…

Gradleからtelnet

また、Gradleネタで。 Gradleからtelnetする機会があったのでメモ。 結局 antなんですが。 configurations { telnetAntTask } repositories { mavenCentral() } dependencies { telnetAntTask("org.apache.ant:ant-commons-net:1.8.4") { module("commons-ne…

いろんなJava Webフレームワークで同じ画面を作ってみる(Ninja web framework編)

いろんなJava Webフレームワークで同じ画面を作ってみる(Ninja web framework編)です。 お題は、こちら。 公式サイト: Ninja web framework バージョン: 1.4 2年以上前と同じテーマの続編を今頃書くという。 Ninja web frameworkは、Play1みたいな感じの…

Xtendでアクティブアノテーションを作ってみる

Xtendは、Eclipse Foundationで開発されている言語です。JVM上で動く言語ですが、GroovyやScalaとは違いXtendのソースコードから、Javaのソースコードを生成するというアプローチをとっています。アクティブアノテーションという機能が追加されたみたいで、…

WindowsでRust

Rustは、Mozillaが開発している言語です。Geckoエンジンの次世代版Servoの開発に使っているそうな。 Windowsで使ってみようとふと思いました。 セットアップ MinGW(http://www.mingw.org/)をダウンロードしインストール。オプションのC++のコンパイラも入れ…

Ubuntu 12.10でのキーマップ変更

ちょい古のノートPCにUbuntu12.0をインストールしてみました。 一般的に広まってしまったキーボードの配列は、気にくわないのでキーマップを変更したくなるわけです。 デスクトップPCならば、Realforceとかhappy hacking keyboardにすればいいのですが、ノー…

サーバ上でJDBC接続を確認する簡単な方法

サーバ上でJDBC接続を確認する簡単な方法。Javaに含まれるjrunscriptを利用します。 以下は、Oracleの場合の例 % jrunscript -cp ojdbc6.jar -f - js> var p = new java.util.Properties(); js> p.setProperty('user', 'ユーザ名'); js> p.setProperty('pass…

JavaScriptで作るWebサーバ

JavaScriptでWebサーバを作るといっても、Rhinoです。 きしださんとこにあったコードの単なるJavaScript化ですが。 Javaがインストールされていれば、以下のテキストファイル一つで簡易的なWebサーバになってしまうわけです。webserver.js importClass(com.s…

Medaka 0.2.0リリース

Medaka 0.2.0をリリースしてみました。Medakaは、Javaで作られたオレオレアプリケーションサーバ、およびサーブレットコンテナ上でも動作するWebフレームワークです。 Wiki: https://bitbucket.org/t1000leaf/medaka/wiki/Home ダウンロード: https://bitbuc…

Medaka 0.1.0リリース

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

Gradle + eclipse + WTP の組み合わせでのプロジェクト作成をちょっと整理。まずは、ターミナルからappという名前のプロジェクトを作成する。 % APP=app % mkdir -p $APP/src/{main,test}/{java,resources,webapp} % mkdir -p $APP/src/main/webapp/WEB-INF …

GradleでDomaアプリをビルド

Gradleも1.0がリリースされたということで、GradleでDomaアプリをビルドするという課題が与えられました(誰にだ)。Domaはpluggable annotation processing api(APTとも呼ばれる)を使っており、ビルド設定が鬼門だったりするので。DomaのチュートリアルのGr…

オレオレ・アプリケーションサーバを作ってみる

なんとなく、JDKだけで、依存ライブラリなしでアプリケーションサーバを作ってみようと試みました。フレームワークでなく、アプリケーションサーバ。Servlet APIは無視です。 ソース 以下、使い方。 app.properties まずは、設定。 クラスパスが通っている所…

PostgreSQLのResultSetMetaData#getColumnName

地味な話ですが。 PostgreSQLのJDBCは、ResultSetMetaData#getColumnNameの挙動が他のDBのJDBCと違う。 selectするときにカラム名に別名をつけた場合、getColumnNameは元のカラム名、getColumnLabelは別名をとってくるんですが、PostgreSQLは、どっちも別名…

Stripes Frameworkどうよ。その6〜JSONリクエストのバインド

今どきは、Play frameworkやNode.js、Java EE6、Jerseyあたりを追うべきなのかもしれませんが、自分はStripes Frameworkいじってます。JSONリクエストをActionBeanにバインドできるように拡張してみます。Jacksonを使います。ActionBeanにリクエストマッピン…

GPlus Dialy Maker

GPlus Dialy Maker というものを作ってみました。過去のGoogle+への自分の投稿を確認しやすくする整形ツールです。本当は、Twitterでいうところのtwilog、facebookでのlogviewerみたいなものを作りたいと思ったんですが、Google+のAPIがまだちょっとしかない…

Hello World !

こんにちは世界!

[Java]Stripes Frameworkどうよ。その5〜拡張ポイント

Stripesには、拡張ポイントが用意されていて、内部で実行されるクラスの実装をいくつか置き換えることができます。 HandlesEventアノテーションでは、イベント名称を指定するのが必須なのですが、メソッド名をイベント名とするように拡張してみます。 まず空…

[Java]Stripes Frameworkどうよ。 その4 〜JSONレスポンスあるよ。

引き続きStripesです。 JSONのレスポンスを返す機能が標準でありました。まずは、ActionBean package action; import java.util.HashMap; import java.util.Map; import net.sourceforge.stripes.action.DefaultHandler; import net.sourceforge.stripes.act…