読者です 読者をやめる 読者になる 読者になる

Red > Green > Refactor > Red

cycle is based on desire

仕様と設計の違い

SE

将来どこかで誰かに 「仕様と設計を混同した時はこれ見といてね」と 言えることを念頭において書いた記事 「仕様」 と 「設計」 は別物 私なりの言葉で定義すると 仕様 = 作るものについて、満たされているべきことが定義されたもの 満たされているべきこと…

Java の interface method に public や abstract を宣言してもよいか

interface MyInterface { public abstract void myMethod(); // public と abstract の宣言 } Oracle の Docs より 「してもよいが、冗長なので奨められない」 意訳(一部) interface のメソッドは暗黙のうちに public である interface のメソッドは暗黙のう…

struts.xml の global-exception-mappings とは何か

struts2-core v2.3.28 global-exception-mappings とは はじめに、Struts2 には Exception mappings という機能がある これは Action 内で throw された例外を自動的に catch し あらかじめ用意された result へマッピングする機能である この Exception map…

struts.xml global-results 要素とは何か

struts2-core v2.3.24.1 struts.xml global-results 要素とは何か action 間で共有したい result がある時、これを定義する為の要素 package ごとに global-results を定義できる Struts2 は先ず ローカルの result(package.action.result)を走査する ローカ…

struts.xml default-interceptor-ref 要素とは何か

default-interceptor-stack 要素とは何か package 内で定義した interceptor-stack の内 package の各アクションにてデフォルトで参照させたい interceptor を定義する 具体的に 下記 struts.xml より interceptor-stack に ロギングが定義されている (actio…

struts.xml interceptor-stack 要素とは何か

interceptor-stack 要素とは何か interceptors.interceptor をひとまとまり に定義したもの 利用により、汎用的に interceptor を interceptor-ref で参照できる 具体的に 下記 struts.xml より interceptor が ロギング DB コネクション処理 の 2 つで定義…

struts2 の interceptor とは何か(構築方法含む)

struts2 v2.3.28 実行環境: Mac OSX EI Capitan 10.11.4 interceptor とは何か action ごと(リクエストごと)に、共通化された前処理を実行したい時がある (主な例: action 実行前の logging) この「actionごとの、前処理実行」を実現する手段が interceptor …

struts.xml の struts.action と struts.action.result 要素

struts.action について (属性値の入力) name class - 必須(パッケージ内で一意) 任意(入力の場合は存在する Java クラスをpackage 名付きで割当) (X) <struts> <package name="top" namespace="/" extends="struts-default"> <action name="actionName" class="jp.co.pckg.to.ActionCallerClass"> </action> </package> </struts> Struts2 には "action mappings" という機能が…

struts.xml の struts.package 要素

struts2.3.28 struts.package とは 要素 actions, results, reult types, interceptors, interceptor-stacks を一論理グループにまとめる要素 「拡張ができて、サブパッケージで個々のパーツをオーバーライドができるオブジェクト」 と思えば良い Packages a…

struts.xml の struts.constant 要素

struts.constant とは Struts2 がデフォルトで設定している要素を上書きする要素 Constants provide a simple way to customize a Struts application by defining key settings that modify framework and plugin behavior. 抜粋元 デフォルトの要素とその…

Dependency Injection

「DI パターン」と これを利用した「DI コンテナ」ってのがある 「DI コンテナ」使いたいけど「DI パターン」って何?状態 > 荒いけどまとめる ここにあることが全部ではないので、正確なことは最下記リンクへ DI パターンとは何か 「インスタンス変数にオブ…

転載(他):Why Use Stored Procedure

DB

Pro added layer of security that can be placed on the database from the data functionality making it easier to manage, document, and maintain improved performance multiple client applications to have consistent database routines Con to man…

自己結合はいつ使うか

自テーブル各レコードの特性を 単純な射影や選択では比較できない場合に使う ここでは CASE, 相関サブクエリ, 内部/外部結合などに言及しないとする (Web 記事や書籍を眺めてみたのだが、なかなか扱いがよくわからん構文 勉強しきれてないが、これ使うのであ…

相関サブクエリはいつ(一番)使われるか

(一番)使われるのは「レコードの存在チェック」 Web 記事を色々眺めて、私なりの答え (業務システムの SQL を見ていると「このオペレーションは、いつ、何のために使うのか」 を見失うので一回整理したい) 例 利用者が存在し、各属性を持つ 利用者 ID 年齢(0…

RDBMS の view はいつ使われるか

DB

StackOverflow より引用及び翻訳(意訳 加筆) より正確な内容は本記事下段のリンク先参照 view はいくつか良いものを提供してくれる 1. View は複雑さを隠すことができる 何個かテーブルを結合したり、複雑な計算したり、 複雑ロジックを組んだクエリが必要な…

SQL の GROUP BY 句 演算目的と SELECT 句に含められる属性

プログラマのための SQL 第4版 より 自分用のまとめ GROUP BY 演算の目的 複数行を集約キーでグループごとにまとめ各グループの特性を示す行を返すこと 返ってきた行は そのグループの特性を示すものであり(*1) グループに存在する特定行の性質を示すもので…

配列よりもリストを

コンパイル時に警告を拾うこと (データ構造は C like でなく Java としてあれ) 配列型 コンパイル時に un-typesafe 実行時に typesafe リスト型 コンパイル時に typesafe 実行時に un-typesafe package jp.ymatsukawa; import java.util.ArrayList; import j…

非境界ワイルドカード型 (unbounded wildcard type)

outline ジェネリックスの型パラメータを汎用化する ジェネリックスの型を使用したいが、実際の型パラメータが 何であるかわからない 何であるか気にしない この時、型パラメーターに ? を用いる ex jp.ymatsukawa | + -- ubwildtype | | | + -- MyUtil.java…

SQL の CASE 使い方

(PostgreSQL 9.4) background reports (レポート提出管理)テーブルが次の通り定義されている CREATE TABLE reports( reportid INTEGER -- レポート番号 NOT NULL, submitter CHAR(16) -- 提出者名 NOT NULL, acceptflag CHAR(1) -- 承認フラグ '0':無効 '1':…

骨格実装 (Skeletal Implementation)

骨格実装 (Skeletal Implementation) とは何か 抽象クラスのうち、interface を implements し、このメソッド内容を定義したもの 目的は何か 骨格実装継承クラスの interface メソッド実装定義を手助けすること 骨格実装の構築方法, 利用方法 骨格実装 提供…

COALESCE

コウアレス (if objects or ideas coalesce, they combine to form one single group ( quoted from longman )) 引数を走査していき、NULL ではない初めの値を返す 引数が全て NULL の場合は NULL を返す CREATE TABLE staffs( id INTEGER NOT NULL, name CH…

SQL ALL

CREATE TABLE cardpoints ( id INTEGER NOT NULL, pointedlocation CHAR(32) NOT NULL, point INTEGER NOT NULL CONSTRAINT points_point_range CHECK(point BETWEEN 0 AND 15000), PRIMARY KEY(id, pointedlocation) ); INSERT INTO cardpoints (id, pointe…

Read View 作成

CREATE TABLE trial_table ( trial_id INTEGER NOT NULL, name CHAR(20) NOT NULL, age INTEGER NOT NULL CONSTRAINT trial_age_range CHECK(age BETWEEN 0 AND 200), PRIMARY KEY(trial_id) ); INSERT INTO trial_table ( trial_id, name, age ) VALUES ( 1…

interval, timestamp, date, time の違い

interval timestamp, date, time の時間を変動させる時に利用する関数 以下の sql と結果を参照 (RDBMS ごとに文法が違うので注意) timestamp 日付と時刻 SELECT (timestamp'2014-10-17 22:00:00') AS timestamp_col; timestamp_col --------------------- 2…

static field initiate optimize

src | + -- jp.ymatsukawa | + -- constructor | | | + -- InstanceAble.java + -- Main.java jp.ymatsukawa/Main.java package jp.ymatsukawa; import jp.ymatsukawa.constructor.InstantiateAble; import java.util.Calendar; public class Main { public …

Java constructor

src | + -- jp.ymatsukawa | + -- constructor | | | + -- Super.java | + -- Sub.java + -- Main.java サブクラスをインスタンス化 > 親クラスのコンストラクタが呼ばれる Main.java package jp.ymatsukawa; import jp.ymatsukawa.constructor.Sub; public …

update or delete on table "foreigns" violates foreign key constraint "to_foreigns_to_foreigns_id_fkey" on table "to_foreigns"

CREATE TABLE foreigns ( foreigns_id INTEGER NOT NULL, PRIMARY KEY(foreigns_id) ); CREATE TABLE to_foreigns ( to_foreigns_id INTEGER NOT NULL REFERENCES foreigns(foreigns_id), PRIMARY KEY(to_foreigns_id) ); INSERT INTO foreigns (foreigns_id…

INTERVAL 型

型の一種(査読中) PostgreSQL で以下の動作確認 SELECT current_date; date ------------ 2015-10-15 (1 row) CREATE TABLE times ( test_date DATE NOT NULL ); INSERT INTO times VALUES ('2015-10-15'); INSERT INTO times VALUES ('2015-10-16'); INSERT…

Builder Pattern (Java)

Effective Java より 数多くのコンストラクタパラメータに直面した時の対処法 src | +-- jp.ymatsukawa | +-- builder | | | +---- SignupUser.java | +-- Main.java jp.ymatsukawa/Main.java package jp.ymatsukawa; import jp.ymatsukawa.builder.SignupUs…

static factory method (Java)

jlordiales.me stackoverflow.com 2 記事の書留め コンストラクタの検討と同様、static factory method を検討しよう コンストラクタと対照的に、名前を持てる(また、シグニチャを気にしなくて良い) 不要なインスタンス生成を避けられる 初回のメソッド実行…

Proxy パターン

良いパターンなのに良い例が思い浮かばない

動的クラス読み込み Java

Quoted from Oracle tutorial ClassLoader Applications written in statically compiled programming languages, such as C and C++, are compiled into native, machine-specific instructions and saved as an executable file. The process of combining…

Singleton pattern

(Java の深み) インスタンス生成は一回だけ src | +-- jp.ymatsukawa +-- Main.java | +-- single | + -- Single.java jp.ymatsukawa/Main.java package jp.ymatsukawa; import jp.ymatsukawa.single.Single; public class Main { public static void main(S…

委譲されるクラスは委譲したクラスが隠蔽する

(一番進捗が出ているタスク, 一番進捗が出ていないタスク void → int) 設計 顧客 | マネージャー、エンジニア1、 エンジニア2 が居るとする 顧客は知りたい エンジニア1、エンジニア2 が進めるタスクの内 一番進捗が出ているタスク 一番進捗が出ていないタス…

状態を表現管理する State パターン

(有限オートマトン) Singleton は未考慮 ↓ classify src | +-- jp.ymatsukawa +-- Main.java | +-- state | + -- Worker.java + -- WeekdayState.java + -- MorningState.java + -- AfternoonState.java + -- EveningState.java + -- NightState.java jp.yma…

servlet context definition

ServletContext is a configuration Object which is created when web application is started. It contains different initialization parameter that can be configured in web.xml. Difference from ServletConfig ServletConfig is one per servlet whi…

servlet container definition

The basic idea of Servlet container is using Java to dynamically generate the web page on the server side. So servlet container is essentially a part of a web server that interacts with the servlets. quoted from Servlet Container

Servlet definition

A servlet is simply a class which responds to a particular type of network request - most commonly an HTTP request. reference from stackoverflow.com

Strategy Pattern 処理の切替

拠点報告( hubReport.showReport ) を 「東京拠点 → 大阪拠点」と順に出力する 内部処理 処理ロジックを 東京拠点の報告処理 → 大阪拠点の報告処理 としてみる src | +-- jp.ymatsukawa +-- Main.java | +-- report | + -- HubReportStrategy.java (interfac…

インスタンス生成の分岐: Factory method と interface

stuff → staff 素晴らしい 今後この手法を参考にする クライアント側がプロダクション内部のことを気にしなくて良い プロダクション側が固定値でインスタンス生成の分岐可能 引数違いのコンストラクタ生成も可能 src | +-- jp.ymatsukawa +-- Main.java | +-…

インスタンス生成の分岐: Factory method の細工

stuff → staff 続き: インスタンス生成の分岐: factory method パターン - Red > Green > Refactor > Red ダメ 私に響かない クライアント側で冗長な情報が必要 パッケージ名、サブクラス名は公開せねばならぬし (jdbc の悪夢) プロダクション側でインスタン…

インスタンス生成の分岐: factory method パターン

stuff → staff 元: インスタンス生成の分岐(Java) - Red > Green > Refactor > Red 自分に一番響く設計を手当たり次第 デザインパターンの Factory method より (記事中では Factory > Creator) src | +-- jp.ymatsukawa +-- Main.java | +-- stuff | + -- C…

インスタンス生成の分岐(Java)

stuff → staff 思い出し用に書き残し Stfuff のコンストラクタは最適化できるか? まず設計の目的から src | +-- jp.ymatsukawa +-- Main.java | +-- stuff | | | + -- Stuff.java +-- stuffType | + -- StuffType.java + -- Manager.java + -- Engineer.java…

テーブル th, td 幅調整

IE11 th と td は 2 つで 1 つ workspace | |--- index.html |--- main.css index.html <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </meta></head></html>

IE で要素を消す visibility: none ではなく display: none

CSS

alternative to visibility:collapse not working on IE and Chromestackoverflow.com

IE

マルチヘッダ (multi th)(1 つの th 内に要素を多数設置して線区切り) の構築

表題通り mac-safari 8.0.7 アウトプットイメージは下 workspace | |--- index.html |--- main.css index.html <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </meta></head></html>

div 内の button を centering して left と right に交互へ並べる

mac-safari workspace | |-- index.html |-- main.css index.html <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </meta></head></html>

JUnit 4 > org.junit.rules.ExpectedException のアクセス修飾子は public

表題通りそのままです OK @Rule public final ExpectedException exception = ExpectedException.none(); NG @Rule protected final ExpectedException exception = ExpectedException.none(); @Rule private final ExpectedException exception = ExpectedE…

IntelliJ にて Maven プロジェクトを作成し JUnit を dependency する場合の雛形 pom.xml

pom.xml でうまくいかんかったんで source value 1.5 is obsolete 問題(?) なんてのがあるらしく build > plugins > plugin > configuration の source, target を 明示的に利用 JDK の ver (${java.version} ではなく固定値) にしないと 「JDK 1.5 使ってま…