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 を検討しよう コンストラクタと対照的に、名前を持てる(また、シグニチャを気にしなくて良い) 不要なインスタンス生成を避けられる 初回のメソッド実行…