概要 base64エンコーディングまたはデコーディングとは、任意のデータを64種類の文字 0-9,a-z,A-Z,'+','/' (10+26x2+2=64) で表現し直すことまたは表現されたものをもとのデータに戻すことです。上記64種類の文字は7bitで表現可能なASCII文字の範囲内にあるため、電子メールでの通信など、マルチバイト文字やバイナリデータを扱えない環境で使用されることがあります。なお、'='はエンコードおよびデコードにおけるパディングとして使用されます。base64コマンドやRubyのbase64ライブラリを用いてこのエンコードおよびデコードを行うことができます。 2017-07-30
概要 Spring フレームワークによる Web アプリケーション開発で、ログイン処理を実装する際は Spring Security が便利です。ここでは特に、こちらのページに記載の Spring Boot で Web アプリケーションを開発する場合を対象とし、フォームによる ID/Password ログインを行うためのサンプルコードをまとめます。 2017-07-30
概要 こちらのページで環境を構築した Spring Boot について、非同期処理の基本的な実装方法をまとめます。 関連する公式ドキュメント Creating Asynchronous Methods Scheduling Tasks Consuming a RESTful Web Service Task Execution and Scheduling 2017-07-25
概要 Rails における ERB と同様に、Spring Boot でもテンプレートエンジンを利用できます。今回は特に Thymeleaf (タイムリーフ) のサンプルコードを、こちらのページで構築した環境をもとにまとめます。 公式ドキュメント Serving Web Content with Spring MVC 2017-07-20
概要 こちらのページで環境構築した Spring Boot でバッチ処理アプリケーションを作成します。内部的に Spring Batch を利用します。CSV ファイルを読み込んで、文字列加工して、MySQL DB に出力するバッチ処理です。 公式ドキュメント Creating a Batch Service 2017-07-20
正規表現 import java.util.regex.Pattern; import java.util.regex.Matcher; class Main { public static void main(String args[]) { { // 完全一致 Pattern pattern = Pattern.compile("^http://www\\."); Pattern pattern2 = Pattern.compile("abc", Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher("http://www.example.com"); Matcher matcher2 = pattern2.matcher("ABC"); System.out.println(matcher.matches()); //=> false (注意: 部分一致は find) System.out.println(matcher2.matches()); //=> true } { // 部分一致 Pattern pattern = Pattern.compile("^http://www\\."); Pattern pattern2 = Pattern.compile("abc", Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher("http://www.example.com"); Matcher matcher2 = pattern2.matcher("ABC"); System.out.println(matcher.find()); //=> true System.out.println(matcher2.find()); //=> true } { // 部分一致を複数回実施すると false になります。 Pattern pattern2 = Pattern.compile("abc", Pattern.CASE_INSENSITIVE); Matcher matcher2 = pattern2.matcher("abc|abcd"); while(matcher2.find()) { System.out.println(matcher2.group()); //=> abc => abc } } // 後方参照を用いた置換 Pattern pattern3 = Pattern.compile("(a)b(c)"); Matcher matcher3 = pattern3.matcher("abc|abcd"); System.out.println(matcher3.replaceAll("$1_$2")); //=> a_c|a_cd System.out.println("abc|abcd".replaceAll("(a)b(c)", "$1_$2")); //=> a_c|a_cd (String クラスだけで実現; 後述の replace と区別) // 後方参照 Pattern pattern4 = Pattern.compile("^(\\d{4})/(\\d{2})/(\\d{2})$"); Matcher matcher4 = pattern4.matcher("9999/12/31"); if(matcher4.find()) { System.out.println(matcher4.group(0)); //=> 9999/12/31 System.out.println(matcher4.group(1)); //=> 9999 System.out.println(matcher4.group(2)); //=> 12 System.out.println(matcher4.group(3)); //=> 31 } // ^ と $ の意味 Pattern pattern5a = Pattern.compile("^xyz$"); Pattern pattern5b = Pattern.compile("^xyz$", Pattern.MULTILINE); String str5 = "xyz\nxyz"; System.out.println(pattern5a.matcher(str5).find()); //=> false (文字列全体の最初 ^ と最後 $) System.out.println(pattern5b.matcher(str5).find()); //=> true (各行の最初 ^ と最後 $) } } 2017-07-19
概要 Eclipse はフリーの統合開発環境です。v4.4 (Luna) の Windows への導入方法と基本操作についてまとめます。 インストール Eclipse Luna SR2 Packages にアクセスして Eclipse IDE for Eclipse Committers 4.4.x を開きます。右サイドバーの Download Links から使用している OS のものをダウンロードして解凍します。例えば ~/bin/eclipse に配置します。なお、Eclipse は 2017-07-18
概要 こちらのページで使い方を把握した MyBatis を、こちらのページで使い方を把握した Spring Boot で利用するための基本的な設定およびサンプルコードをまとめます。サンプルコードにおいては、特に MySQL を対象とします。 MyBatis Spring-Boot-Starter チュートリアル 2017-07-08
今年の6月にプリント基板製造メーカーFusion PCBは「製造のためのプリント基板設計ガイド」を用意くれました。 このガイドには、形状、階層構造、設計基準、部品配置、配線パターン、ドリルホール、ソルダマスク、表面処理、シルクスクリーンなど、DFMに基づくプリント基板設計パラメータの仕様を記載しています。 無料でPDFファイルを 2017-07-07
概要 Spring フレームワークにおける @Transactional アノテーションを利用すると DB トランザクション処理が簡単に設定できます。ここでは特に、こちらのページで環境構築した Spring Boot から MyBatis を経由して MySQL を利用する場合を対象としますが、JDBC を利用して他の DB を操作する場合も考え方は同じです。 2017-07-06