山崎屋の技術メモ

IT業界で働く中で、気になること、メモしておきたいことを書いていきます。

Java8 での日付妥当性チェック

Java8 の LocalDate と DateTimeFormatter を使用した日付妥当性チェックについてです。2014 年に公開された Java8 を使用した日付妥当性チェックですが、すでに多くのサイトでサンプルが掲載されています。ただ、少し気になる実装も紹介されており、自分な…

【Spring Framework】bean名による@Autowired

前回の記事で Spring Framework による簡単な DI を説明した。yyama1556.hateblo.jpこれはプロパティの型を手掛かりに Spring が DI してくれていて、"byType" によるインジェクションという。では、プロパティの型と同じクラスが2つ以上存在した場合はどち…

【Spring MVC】Model に登録されているオブジェクトの一覧を表示する

前回の記事で、サーバ側(Controller)で設定した値を JSP で表示するサンプルを掲載した。その際に Spring で用意されている、 Model オブジェクトに JSP で使用したいオブジェクトをセットした。yyama1556.hateblo.jp今回はこの Model に登録されているオ…

【Spring MVC】サーバー側(Controller)で設定した値を JSP で使用する

Web アプリケーションでの基本的な動きだが、サーバー側で作成したオブジェクトを JSP で表示(利用)することは必ずある。今回は Spring MVC を使用したサンプルを紹介する。 実行結果イメージ まず、サンプルの実行結果を掲載しておく。 Controller 側 コ…

java の例外設計

プロジェクトの設計フェーズ序盤で、例外の扱いについて方針を決める必要がある。もし、自分が方針を決めるとしたらこうするというものをメモしておく。 1.検査例外と非検査例外の使い分け 最近では検査例外を悪と考え、すべて非検査例外にラップしてスロ…

Eclipse で Maven プロジェクトの作成から slf4J + logback の設定

どのようなプログラムでもログ出力は必ず必要になります。したがって、Eclipse でプロジェクトを作成したら、まずログ出力できるような設定を行ってしまいましょう。今回は現時点でロギングフレームワークのデファクトスタンダードである slf4j + logback で…

java オーバーロードの条件

オーバーロードの話です。オーバーライドではありません。 違いを簡単に オーバーライドは、親クラスのメソッドを子クラスで定義しなおすことです。通常、メソッドに @Override アノテーションを付与します。例 package org.yyama; // 親クラス public class…

Eclipse 関連記事のリンク集

Eclipse の設定まわりの記事など、思いついたときに書いていたら結構な記事数になった。一覧でまとまっていたほうが目的の記事を見つけやすいので、ここにまとめておく。今後、Eclipse 関連の記事を書いたら、これも随時更新していく予定。 インストール Ecl…

Java の引数、オブジェクトは「参照の値渡し」

オブジェクト編です。プリミティブ型(基本型)の記事はこちら。話はそれますが、プリミティブ型の反対は参照型というらしいのですが、 今回のテーマの中で「参照型」って言葉を使うと、混乱するので、「オブジェクト」にしています。本題。 よく「Java では…

javaの引数 プリミティブ型(基本型)は値渡し

丁寧に説明しているサイトはいっぱいあるので、結論をメモしておきます。プリミティブ型(基本型)の引数は値渡しです。 public class Argument { public static void main(String[] args) { int a = 2; methodA(a); System.out.println("変数aの内容は[" + …

Spring Framework で管理されるオブジェクトはデフォルトでシングルトン(singleton)

タイトルに書いたとおりだが、Spring を使用する上でこれを常に頭に入れておかないと、とんでもないバグを仕込んでしまう。 実験してみる Spring のバージョンは 4.3.7 を使用しているが、他のバージョンでも、これに関しての仕様は同じ。フォルダ構成。pom.…

Spring 関連記事へのリンク集

Spring に関連した記事を書き散らかしていたので、ここにまとめておく。 Spring Framework Eclipse ではじめる初めての Spring4 - 山崎屋の技術メモ【Spring Framework】簡単なDIサンプルSpring4 アノテーションコンフィグ - 山崎屋の技術メモ【Spring Frame…

Eclipse ファイル検索のスコープ

Eclipse で複数のファイルから、特定の文字列を探すべく、ファイル検索をよく使うことがあります。ショートカットは Ctrl + H。今回は検索ダイアログの Scope についてまとめてみました。(Working set 以外)選択肢は4つで、意味は次のとおり。 選択肢 説明 …

Eclipse 検索ダイアログを整理する

Eclipse で、Ctrl + H もしくは、メニューの Search から、さまざまな検索がおこなえて便利である。しかし、その便利な機能の反面、検索ダイアログのタブが異常に多くて笑える。私は Java 開発がメインなので、使うのは File 検索がメインで、たまに Java 検…

Eclipse で Maven プロジェクトの作成からJDKバージョンの設定

前回は、コマンドラインでMavenプロジェクトを作成し、Eclipse にインポートする記事を書いた。yyama1556.hateblo.jp今回はより実践的に Eclipse を使用してMavenプロジェクトを作成してみる。また、なぜか作成したプロジェクトの Java バージョンが 1.5 に…

maven で作ったプロジェクトを Eclipse にインポートする

コマンドラインで作成した maven プロジェクトを Eclipse にインポートする手順を掲載する。普通は Eclipse で maven プロジェクトを作成すれば済むので、あまり利用場面はないかもしれないが、念のためメモしておく。 各種バージョン OS は Windows7。Eclip…

【postgresql】 SQL Shell (psql) でパスワードの入力を不要にする方法

Windows で postgresql をコマンドラインで操作する場合、インストールすると一緒についてくる SQL Shell を使用することがある。そのときサーバー・データベース名・ポート・ユーザ名・クライアントエンコーディングなどを入力する必要がある。こんな感じ。…

【java】DTO のテストコードを自動生成への道②

前回の記事はこちら。yyama1556.hateblo.jp とりあえず動くものを作った。github.comDtoTestGenerator と命名した。今のところ対応している型は int, long, Integer, Long, String のみ。テスト対象にできるクラスは 1 個 で、クラス名もハードコードとなっ…

java パッケージ配下のクラス一覧を取得 外部ライブラリは使用しない

外部ライブラリを使用せずにパッケージ配下のクラス一覧を取得する方法を調査した。DIコンテナなどは、「パッケージを指定して、その配下のクラスをコンテナに登録する」というのが一般的だと思うが、その仕組みを理解するのに役に立つ。あと、個人的な課題…

【Spring MVC】簡単なアンケートアプリで学習する。

Spring MVC でいろいろ勉強していきたいので、ベースとなるアプリを作った。一応動くが、まだ実装は不十分である。今後、少しずつ不足している箇所を実装していきたい。 アプリの動き 3 画面でできている。トップ画面はアンケートの入力画面。ユーザに「年齢…

java のいろいろな型の型名を文字列で出力させてみる

DTO のテストコードを自動生成したくて、前回リフレクションの復習をした。型の判別をするために、テスト対象となるクラスのプライベート変数の型を取得しているが、どの型がどんな文字列で表現されるのか気になったので調べてみた。次のようなクラスを用い…

【java】DTO のテストコードを自動生成への道①

(2016/9/24 追記)とりあえず動くものを作った。 【java】DTO のテストコードを自動生成への道② - 山崎屋の技術メモ プライベート変数とその setter 、 getter のみで構成された DTO のソースを自動生成することがある。自動生成できるのであれば、そのソース…

【Eclipse】Java compiler level does not match・・・のエラー

Eclipse でプロジェクトの JRE バージョンをいじったりすると次のようなメッセージが表示されることがある。 Java compiler level does not match the version of the installed Java project facet.今回は Java のバージョンを 1.6 から 1.8 に変更したら出…

【Eclipse】 static import を整理させない

Eclipse のデフォルトでは "import static hoge.fuga.*" のようなソースの記述があった場合、import 文の整理を行うと勝手に "static import hoge.fuga.piyo" のように整理されてしまう。例えば、 package org.yyama; import static org.hamcrest.CoreMatche…

【Spring MVC】@RequestMapping の基本

Spring MVC の @RequestMapping の基本をメモしておく。 value 属性 value に処理対象とするURLを指定する。 @RequestMapping(value = "/aaa") こう指定することで例えば "http://localhost:8080/aaa/" にアクセスするとこのコントローラが実行される。Sprin…

【SpringMVC】 簡単なサンプル

Eclipse を使用して SpringMVC で簡単なサンプルを作成する。勉強のため Spring bootは使用しない。各種バージョンは次のとおり。OS : Windows7 64bit Java : JDK1.8 Eclipse : 4.6(neon) Spring : 4.3.2 Project の作成 Project エクスプローラで空白部分を…

【Spring MVC】なぜかエラーが出る場合の対処

Spring に限らず、Eclipse で開発しているとどうしても訳のわからないエラーに遭遇することが多い。プロジェクトのクリーンをすると直る場合もあるが、今日はTomcatを起動しようとしたら下のような Exception が出て起動できない現象がおきて、 30 分はまっ…

【Eclipse】セーブ時に自動で import を整理する。

Eclipse の豆知識。javaでコーディングしていると頻繁に import 文を追加したり消したりする。けっこう面倒くさい。不要になった import 文には警告が表示される。 Ctrl + Shift + O のショートカットでこれら不要な import 文は整理してくれるのだが、更に…

【Eclipse】使い慣れたブラウザを使う設定

Eclipse でクラス名の上にカーソルを合わせ Shift + F2 でこのクラスの javadoc が Eclipse のタブとして開く。が、このデフォルトのブラウザがもっさりしていて非常に使いにくい。今回はいつも使っているブラウザを Eclipse の外で起動できるように設定を変…

【Spring Framework】メッセージリソースを使う

今回はメッセージリソースの使い方を紹介する。 フォルダ構成 messages_ja_JP.properties msg={0}を{1}してください。これで"msg"というキーを指定することにより対応する文字列を取得できる。メッセージを取得する際に動的に変える文字列は、{0}のようにし…

【Spring Framework】プロパティファイルを読む②

前回の記事では[PropertiesFactoryBean]を使ったプロパティの取得方法を紹介した。今回は、もうひとつのやり方である[property-placeholder]を使用したプロパティの使用方法を紹介する。SpringMVCでこれを使用する際の注意点として、[property-placeholder]…

【Spring Framework】プロパティファイルを読む①

Springでプロパティファイルを扱う方法を紹介する。ややこしいことに[PropertiesFactoryBean]を使う方法と[property-placeholder]を使う方法がある。まずは[PropertiesFactoryBean]を使う方法を試してみる。 ソース フォルダ構成。 applicationContext.xml。 …

【Spring Framework】component-scanのいろいろ③

今回は、[context:exclude-filter]タグについて記事にする。前回、前々回のサンプルを使いまわすので、あらかじめ参照しておいて欲しい。【Spring Framework】component-scanのいろいろ① - 山崎屋の技術メモ 【Spring Framework】component-scanのいろいろ② …

【Spring Framework】component-scanのいろいろ②

前回の続き。サンプルコードは前回のものをベースに少し変更する。フォルダ構成だけ再掲。 applicationContext.xml内の[context:component-scan]タグを以下のようにすることで、FugaクラスもPiyoクラスもSpringコンテナに登録されないことを確認した。 <context:component-scan base-package="org.yyama.hoge" use-default-filters="false" /> この</context:component-scan>…

【Spring Framework】component-scanのいろいろ①

以前の記事でSpringのアノテーションコンフィグについて記載した。yyama1556.hateblo.jpそこで登場した[component-scan]について、もう少し掘り下げてメモしておく。以下のタグ/属性について記載する。・context:component-scanタグのuse-default-filters属…

【Spring Framework】@Component と @Autowired を使用した DI の基本

@Component と @Autowired を使用して、 Spring Framework の中心とも言える DI の基本について簡単なサンプルを作成して学習する。@Component は インスタンスを Spring 管理下におくため、クラスに付けるアノテーション。 @Autowired は Spring 管理下のオ…

【Spring Framework】 登録されているBeanの一覧を表示

Spring Frameworkを使用して開発をしていると、XMLでbean定義しているはずなのに[No qualifying bean of type]とか[beanが定義されていません]のようなエラーが出てはまるときがある。そんなときは本当にSpringのコンテキストにbeanが登録されているかどうか…

Spring4 アノテーションコンフィグ

前の記事でSpringのXMLコンフィグを用いてクラスをSpringコンテナに登録するサンプルを紹介した。yyama1556.hateblo.jp 今回は、それをアノテーションコンフィグに直してみる。 フォルダ構成 次のようなフォルダ構成を前提としている。 前回使ったサンプルの…

Eclipse ではじめる初めての Spring4

Web アプリケーションフレームワークのデファクトスタンダードといって良い spring について勉強していきたい。最近は SpringBoot の記事がはやっているが、Spring の基本的なことを勉強したいときには SpringBoot はブラックボックスの箇所が多すぎて適さな…

Tomcat9 インストール

WEBアプリケーションでよく利用されるアプリケーションサーバTomcatをインストールする。インストールと言ってはいるものの、実際にはファイルを展開して置くだけである。Tomcatは軽量なサーブレットJSPコンテナであり、java言語で作成されたサーブレットやJ…

【PostgreSQL】SQL Shellのログインパラメータのデフォルトを変える

前回の記事で、PostgreSQLをWindowsにインストール方法を紹介した。今回は、PostgreSQLを操作する上でよく利用するであろうSQL Shellの細かい設定について紹介したい。 ログインパラメータのデフォルトを変える 下図の赤線部分がログイン時のデフォルト。デ…

WindowsにPostgreSQLをインストール

PostgresqlをWindowsにインストールしたのでメモしておく。バージョンは9.5.3。PostgreSQLはフリーで提供されているDBMS(データベースマネージメントシステム)だが、商用利用でも実績がある高機能なDBだ。NPO法人日本PostgreSQLユーザ会も存在し、最新のド…

Eclipse プロジェクトのクリーンをショートカットで実行する

Eclipseで開発中のアプリの挙動がおかしくなったとき、プロジェクトのクリーンを試すことが多い。一日中開発をしているときは、プロジェクトを選択して[Project]→[Clean...]を1日何回押すことか。頻繁な操作はショートカットで一瞬で操作したい。今日はプロ…

Eclipse4.6 Neon インストール

2016年6月22日に新しい Eclipse がリリースされた。バージョンは 4.6でコードネームは[Neon]。さっそくインストールしてみよう。 ダウンロード ここ↓からダウンロードする。www.eclipse.orgいろいろなパッケージがあるが、私は Web 系の開発もすることがある…

java(JDK)をインストールしないで利用する

Windowsで複数バージョンのJDKを入れたい場合など、インストーラからインストールできない。ここでは、インストーラを使用せず、JDKをマシンに入れる方法をメモしておく。インストールしちゃうと「バージョンアップしろ!」とかうるさいしね。 JDKダウンロー…

javascriptのunshift、shiftは遅すぎる。

私がjs初心者だから知らないだけで、常識なのかも知れないが、ここまで遅いのは驚きでした。10万回位ループするプログラムを組んでいて、処理時間なんかまったく気にしていなかったら、ぜんぜん返ってこなくて、調べてみたら犯人はキューとして使用していたA…

Eclipseでかっこいいmainメソッドをテンプレートに登録

Java1.5 から可変長引数が使えることになり、maimメソッドも、 public static void main(String[] args) {} が、 public static void main(String... args) {} のようにかけるようになりました。こう書くことのメリットはいろいろあるでしょうが、何より最近…

Eclipseでテキストファイルは使い慣れたエディタで編集したい

Eclipse でテキストファイルをダブルクリックすると、デフォルトでは Eclipse のテキストエディタが開きます。ですが、このテキストエディタはあまり親切に作られていないのか、使いこなせていないのかわかりませんが、使いにくいと感じています。 やっぱり…

死ぬはずのプログラムを無理に生かしておいていてはいけない

「プログラマが知るべき97のこと」を読んでいます。あるあるネタっぽいものや、達人たちの教訓が書いてあり、読み物として非常に面白いです。 タイトルはエピソード27の見出しで、ライブラリの作成を担当していた著者がtry~catch節を別のcatch節に含め…

やりたいこと整理

2014年1月も広範に突入したわけですが、今年の目標とか整理できていないので、とりあえず今後やりたいことをだらだらと書いてみる。■お勉強したいこと ・spring3 strutsスーパーサンプルのspring3バージョンをやってみたい。 ・関数型言語・javascript・html…