Tagbangers Blog

小川 岳史

うわさのRiot.jsとSpring Bootでサーバーサイドレンダリング

前置き ウェブアプリケーションをもっともっときもちのいい UI に。 ちらつきは悪だ そのための SPA (シングルページアプリケーション)。 でもいつまでも最初のページで Ajax による遅延描画で画面をガタガタちらつかせている場合じゃない。 だから、最初のページはサーバサイドでコンテンツをレンダリングしておきたい。 これがサーバーサイドレンダリング。 でもどうせだったらブラウザ側で実行しているコード (Javascript) をサーバサイドでもそのままつかってコンテンツをレンダリングできれば一石二鳥では? これが Isomorphic なアプローチ。 今回の構成 Riot.js Riot....

Spring MVC でリダイレクトさせないときでも RedirectAttributes を使いたい

ちょっと意味不明なタイトルになってしまいましたが、RedirectAttributes を使うとリダイレクト先のページのまで有効ないわゆる Flash スコープが使えます。 とても便利な機能ですが、これをリダイレクトではなく単なるページ遷移の時にも使う場合は以下のように自身で FlashMapManager#saveOutputFlashMap をコールすることで実現できます。 FlashMap flashMap = RequestContextUtils.getOutputFlashMap(request); flashMap.put("message", "Hello!"); Requ...

AWS Certificate Managerの無料SSLでセキュアな独自ドメインのウェブ公開(CloudFront+S3ウェブホスティング)

もう SSL 証明書も無料なんですね。 ということで、AWS の無料SSLを使ってウェブ公開する手順をメモ。 以下は AWS Console での作業。 Certificate Manager で SSL 証明書の発行。SSL証明書を発行するドメイン名を入力して Request するだけ。 管理者のメールアドレスに以下のようなメールが届くので、承認する。 もう証明書が発行されました。(はやいしらくちん) S3 のウェブホスティングを準備。 CloudFront を準備。 先ほど作成した SSL 証明書が選択できる!! Route53 を設定。 https://ssl-test-ogawa.ta...

Spring Security でマルチテナントしたときの Remember-me 認証対応

下記のログイン画面のように、ID と それ以外のパラメータを用いて認証した場合の Spring Security の Remember-Me 認証方法をご紹介。 ソースコードは GitHub (https://github.com/tagbangers/spring-best-practice...) で公開しています。 Spring Security は Remember-Me 認証の実装の1つとして、PersistentTokenBasedRememberMeServices クラスを提供している。PersistentTokenBasedRememberMeServices はログイン情報...

Spring の小粋なクラス Part1 - AbstractPersistable

今回の小粋なクラスは、 org.springframework.data.jpa.domain.AbstractPersistable (spring-data-jpa-1.9.2.RELEASE) JPA を使う時に Entity の親クラスとしてとりあえず継承しておくといい。 AbstractPersistable は JPA における主キーをあらわすメソッドと、主キーベースの #equals(Object) と #hashCode() メソッドが提供される。 下記のリファレンスにもあるとおり、Hibernate ではオブジェクトの等価性を使って同一のデータベースのレコードかどうかを判断す...

Ceph を Ubuntu (on AWS) にインストールしたメモ

環境 workstation クライアントサーバ Ubuntu 14.04 node1 クラスターサーバ Ubuntu 14.04 node2 クラスターサーバ Ubuntu 14.04 手順 すべてのサーバで作業 ★ すべてのサーバに ceph-deploy ユーザーを作成し、workstation サーバからノンパスフレーズで ssh ログインできるようにしておく (別のユーザー名でもよいが "ceph" は予約されているため使えない) ★ hostname でホスト名が解決できるようにしておく必要がある ★ すべて ceph-deploy ユーザーで作業 $ echo "ceph-dep...

GlusterFS を Ubuntu (on AWS) にインストールしたメモ

環境 workstation クライアントサーバ Ubuntu 14.04 node1 クラスターサーバ Ubuntu 14.04 node2 クラスターサーバ Ubuntu 14.04 手順 node1,2 で作業 # apt-get update # apt-get install software-properties-common # add-apt-repository ppa:gluster/glusterfs-3.5 # apt-get update # apt-get install glusterfs-server node1 だけで作業 # gluste...

Introducing RxJava into a Spring Boot REST API - SpringOne 2GX '15

SpringOne 2GX 2015 のセッション紹介。 今回は、「Introducing RxJava into a Spring Boot REST API」 こちらがスライド。 実際のセッションではデモコードを交えて説明していた。以下がそのソースコード。 https://github.com/simonbasle/practicalRx なぜ? 「ブロッキングは悪だ」 「Reactive で、並列可能で、組みやすく、読みやすい、非同期コードが必要だ」 どうやって? Java には2つの方法があるがどちらも欠点がある Callback を用いたやり方 → ネストが深くなって Callbac...

Amazon CloudFront に独自 SSL 証明書を設定する (Windows PowerShell)

CloudFront は「SNI 独自 SSL」か 「専用 IP 独自 SSL」のどちらかの方法で HTTPS 通信の設定が可能。 SNI 独自 SSL 無料だけど、古いブラウザは対応してない(IE6 以下など) 専用 IP 独自 SSL 月 600 USD 必要 ということで今回は無料の「SNI 独自 SSL」にて。 ...そして、最初につまづく。 CloudFront の設定画面では Custom SSL Certificate が非アクティブで選択できない。 SSL 証明書はどこから設定するのか?? 以下のように書いてある。 To choose this option, you firs...

Hibernate5 で SchemaExport

Hibernate5 から SchemaExport のコンストラクタの引数が変更され、MetadataImplementor を使うようになった。 以下は、Hibernate5 で Annotation ベースの設定を SQL (DDL) に出力するサンプルです。 public class Hbm2ddl { public static void main(String[] args) throws Exception { final String locationPattern = "classpath:/sample/entity/*"; fi...