たま

技術的なメモ置き場。主にJava。

Java9 interfaceクラス

Java9でinterfaceクラスにprivateメソッドを定義できるようになった。 interface Foo { private String bar() { return "bar"; } // オーバーロードもOK private String bar(String baz) { return baz; } // staticメソッドもOK private static void qux() {…

Java9 try-with-resource文

Java9ではtry-with-resource文で、try句でのリソースの変数を宣言しなくてもよくなった。 FileInputStream is = new FileInputStream("foo"); try (is) { // omit } catch (Exception e) { } // Java8 try (FileInputStream is = new FileInputStream("foo")…

Java9 識別子

Java9からアンダースコア1つを識別子として使えなくなった。 // NG String _ = "Foo"; // 2つならOK String __ = "Foo"; Java18から引数が1つのラムダ式のみで使えるようにするためらしい。 _ -> foo()

Java9 匿名クラスでダイヤモンド演算子

Java9で匿名クラスにダイヤモンド演算子が使えるようになった。 List<String> list = new ArrayList<>() {}; // Java8だとパラメータの型を明示的に指定する必要がある List<String> list = new ArrayList<String>() {};</string></string></string>

Java9 Stream APIの追加メソッド

Java9の新機能を試す。今回はStream APIの追加メソッド。 takeWhile(Predicate predicate) predicateのtestメソッドがtrueを返すまで要素を取得する。 // 1, 2を出力 List.of(1, 2, 3, 4, 5).stream() .takeWhile(i -> i != 3).forEach(System.out::println)…

Java9 Optionalの追加メソッド

Java9の新機能を試す。 今回はOptionalに追加されたメソッド。 ifPresent(Consumer action) 値が存在する場合のみactionを実行する。 // Foo が出力される Optional.ofNullable("Foo").ifPresent(System.out::println); // 何も出力されない Optional.ofNull…

Java9 コレクションのファクトリメソッド

Java9の新機能を試す。 今回はコレクションのファクトリメソッド。 生成されるオブジェクトはイミュータブル。 List List.of(1, 2, 3); // nullを含むとエラー List.of(null); Map keyとvalueを交互に指定する。 Map.of("foo", 1, "bar", 2); // keyが重複す…

VS CodeでSpring Boot

VS CodeのチュートリアルにSpring Bootがあったので試してみた。 code.visualstudio.com 事前準備 VSCodeのインストール JDKのインストール(今回はversion 1.8.151) 環境変数JAVA_HOMEの設定 Mavenのインストール 拡張機能 VS CodeにJava Extension Packをイ…

macでJAVA_HOMEを設定する

.bash_profile に以下を追記する。 export JAVA_HOME=`/usr/libexec/java_home -v 1.8` -v 9 を指定するとJava9を指定できる。 $ source ~/.bash_profile $ echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home

【Java】 Stringのおさらい

Stringのおさらい。知らなかった仕様もあったので油断ならない。 ※ 一部省略している部分もある コンストラクタ 引数なし new String(); // "" バイト配列 byte[] bytes = "abcde".getBytes(); new String(bytes); // abcde new String(bytes, 1, 2); // bc …

【Java】try-catch-finally文

try-catch-finally文の順序は変えられない。 // OK try {} catch(Exception e) {} finally{} // NG try {} finally{} catch(Exception e) {} // NG try {} finally {} finally {} catchブロックとfinallyブロックにreturnがあった場合どうなるか? try { // …

【Java】for文

for文は、初期化文・条件文・更新文・繰り返し処理で構成される。 for (初期化文; 条件文; 更新文) { 繰り返し処理; } 初期化文と更新文は複数記述できる。 初期化文で宣言できるのは同じ型の変数。 for (int i = 0, j = 0; true; i++, j++) {} // 更新文で…

【Java】識別子

Javaの識別子(変数、メソッド名、クラス名など)には、以下の規則がある。 予約語は使用不可 数字から始められない 下記の記号以外の記号は使用不可 アンダースコア 通貨記号 通貨記号を使ってみると以下のようになる int ¤ = 1; // 国際通貨記号 int ฿ = 2…

【Java】クラス宣言

Javaのクラス宣言は、 フィールド と メソッド の2つから構成される。 パッケージ宣言、インポート宣言は含まれない。 これらはソースファイルに対する宣言であり、クラスに対するものではない。 // パッケージ -> クラス宣言ではない package chapter01; //…

Comparatorでソート

Comparatorを使用して、JavaBeanのリストをソートする。 使用するJavaBean public class Student { private int id; private String name; private int age; // getter/setter } 今回、Studentに設定するデータはJSONで定義する。 JSON -> Java Objectの変換…

Stream#collectを使用してJavaBeanリストから特定のフィールドのみを取得してリスト化する

public class Hoge { private String foo; private String bar; // constructor/getter/setter } Stream#collectを使用してHoge#barのリストを作成する。 // Hogeリストを作成 List<Hoge> hoges = Arrays.asList(new Hoge("f001", "b001") , new Hoge("f002", "b00</hoge>…

Spring Test DBUnitでJSONカラムにデータを投入する

Spring Test DBUnitで @DatabaseSetup を使用してテストデータを投入する際に、対象のテーブルにJSONカラムが存在すると失敗するが、PostgresqlDataTypeFactoryを拡張することで投入できるようになる。 環境 Spring Boot 1.4.1 Spring Boot Test Starter Spr…

macOSにPostgreSQLをインストール

Homebrewを使用して、macOSにPostgreSQLをインストールしたので、その時の記録として残す。 環境 macOS (10.12.1) PostgreSQL (9.6.1) Homebrew (1.1.2) Homebrewのアップデート $ brew update $ brew doctor PostgreSQLのインストール $ brew install postg…

Spring BootでセッションIDを取得する

意外とセッションIDの取得方法が見当たらなかったのでメモ。 Controllerメソッドの引数に、HttpSessionかHttpServletRequestを使用することでセッションIDを取得することができる。 public class HogeController { // HttpSessionを使用する場合 @GetMapping…

Elixir環境構築

環境 OS X (10.10.5) Elixirのインストール Homebrewを使用する $ brew install elixir エディタ 今回はAtomを利用する 以下のパッケージをインストール language-elixir atom-elixir iex linter-elixirc

閉包テーブルの更新(その2)

SQL

前回の閉包テーブルに道程(path_length)を追加する。 道程を追加することで、子や孫を取得しやすくなる。 サンプルテーブル CREATE TABLE ctable ( ancestor BIGINT NOT NULL , descendant BIGINT NOT NULL , path_length INT NOT NULL -- これを追加 , PR…

閉包テーブルの更新(その1)

SQL

閉包テーブル(Closure Table)の更新について書く。 閉包テーブルについては以下を参照。 lab.kochlein.com サンプルテーブル CREATE TABLE folders ( folder_id SERIAL PRIMARY KEY , name TEXT NOT NULL ); CREATE TABLE ctable ( ancestor BIGINT NOT NU…

CentOS7 にPostgreSQL9.5をインストールする

CentOS 7 に PostgreSQL 9.5 を インストール する

GitHubで2段階認証設定した際のeclipse側の対応

GitHubで「Settings」 → 「Personal access tokens」でトークンを生成する。 生成されたトークンをコピーする。 eclipseからGitHubのリポジトリにアクセスする。 パスワードを入力するフォームが表示されたら、コピーしたトークンを入力する。

Gitメモ

git git fetch ・・・ リモートリポジトリから最新を持ってくる git log FETCH_HEAD ・・・ fetch_headのログ git merge FECTH_HEAD ・・・ fetchした内容をマージ git push リモート ローカル ・・・ push git checkout HEAD^ {ファイル名} ・・・ ファイル…

四角形を描く

Processing で四角形を描く 四角形rect(x, y, width, height);x, y → 座標width → 幅height → 高さ例rect(10, 10, 50, 50);塗りつぶしfill(red, green, blue);例fill(0, 0, 255);rect(10, 10, 50, 50);塗りつぶさないnoFill();例noFill();rect(10, 10, 50, 5…

直線を描く

Processingで直線を描く直線を描くline(x1, y1, x2, y2);x1, y1 が起点x2, y2 が終点例line(0, 0, width, height);例line(0, 30, width, 30);line(0, 60, width, 60);色を設定するstroke(red, green, blue);0 〜 255を指定する。例赤い線を描くstroke(255, 0…

Processingで補完

Processingの補完環境を構築する。1.processing-javaのインストールPDEを起動し、Tools → Install "processing-java"を実行する。2. Sublime TextのインストールSublime Textをインストールする。http://www.sublimetext.com/3. Processingパッケージのイン…

Processingをはじめる

公式サイト https://processing.org/ DownloadからIDEをダウンロード。 とても簡素。 補完が使えないので不便。 [普及版]ジェネラティブ・アート―Processingによる実践ガイド 作者: マット・ピアソン,Matt Pearson,久保田晃弘,沖啓介 出版社/メーカー: ビー…

Xamarinの表示設定

Xamarinの表示設定でわかったことのメモ・パッドの表示非表示パッド = eclipseのビューソリューションパッドを閉じてしまった場合ビュー → パッド → ソリューションで再度表示させることができる