・Java
JSP化
画面の項目の配置が期待通りにならない時
画面の一部レイアウトがずれている場合の対処法
例)ボタン
モックと開発中画面をIEの開発者ツールで確認し、
該当部分を右クリック⇒HTML要素として編集
で該当部分をそれぞれ見比べて確認
Eclipse 使い方
ショートカットキー
縦コピー(矩形選択)
SHIFT+ALT+A
一杯表示しすぎて隠れているソースコードを表示
CTRL+E
または、CTRL+SHIFT+E
ファイル検索
CTRL+H
型名検索
CTRL+SHIFT+R
ブレークポイント設定
CTRL+SHIFT+B
ブックマークを設定するショートカットキーがない場合
⇒行番号のあたりで右クリック⇒ブックマークの追加(切り替え)
インデント整形(HTML,JSPに使うと全角スペースが消えてしまうため、使用する前に要確認)
CTRL+SHIFT+F
⇒CTRL+ALT+↓でタグの範囲を指定してレイアウトを調整する方がたぶん間違いない
選択した単語をファイル内で検索
単語を選択した状態でCtrl+K
Eclipse 事前設定
ウィンドゥ⇒設定⇒色とフォント⇒テキストフォント
メイリオ 10以上
Eclipse Winmergeは相性が悪いから使わない方がいいい
Eclipse ビルド時のエラー確認
ウィンドウ⇒ビューの表示⇒その他⇒問題
Eclipse 起動時にワークスペースをクリーン(起動時の引数追加)
"C:\eclipse\eclipse.exe -clean.cmd"
リソ-スを開く(Ctrl+SHIFT+R)でclassファイルが表示されないようにする
リソースを開くで開いた画面の右上の▼をクリック、派生リソースのチェックOFF
jquery注意点
idにぴりおどやコロン(:)を用いる時は、バックスラッシュ(\\)でエスケープする必要あり
JSP コントロールの制御
jsp上は、hidden="true"などと値を直接格納せず、
hidden="${hogehogeForm.hiddenFlg == 'true'}"のように、Beanから取得した値で判断させる
コンソールログを確認する方法
IEで開き、開発者ツールのコンソールで確認
Eclipseのコンソールには出ないので注意
CSS設計
term-area-padding
⇒やめたい、意味がない
これをすると文字を赤くするにもクラスが必要
このテーブルの設定、みたいな名前にする
パーセント指定、px指定はすべて排除(emとか使う)
Javascript ボタンクリックでボタンの色を変更1
hoge = function() {
var cnt = 0;
$(':checked').each(function() {
if($(this).val() === hogeConst.YES) {
cnt += 1;
}
});
return cnt;
};
fuga = fuction(e) {
if(hoge() > 0) {
$('btn-submit').removeClass('disabled');
} else {
$('btn-submit').addClass('disabled');
}
};
$(document).ready(function() {
// DOM読み込み後処理
JQuery("input:checkbox").click(fuga);
});
Java ==とequals()
equals()を使用する事
== は参照が一致していれば、Trueになってしまう
DOM読み込み後に処理したい場合
$(document).ready(function() {
});
HTML CSS JAVASCRIPT
モックJSPで画面サイズが違う場合の観点
・form内部の値を開発者ツールでコピーしてみて一緒になる⇒自分のコードに問題あり
・フッターの二重定義
・formのcssClass指定
・css不足
・javascript不足
DAOとEntityの違い
データベースに、アクセスするのがDAO
データベースにある、例えば「生徒」テーブルの一行がエンティティ。
エンティティは、インスタンスがされた「実体」のことを指しています。
名前、学年、性別というカラムがある生徒テーブル一行がエンティティ
その一行を取り出したり、カラムを設定したりいろいろデータをごにょごにょするのがDAO
HTML JAVA JSP実装注意点
基本キャメルケース?
nameとFormクラスの変数名が一致していないと
ボタン押下時に値が取れないらしい
ボタン名を一意の名前にする
⇒ボタン毎に内部で動作が指定される可能性がある為
反省点
2016/4/28
事前調査不足の為、手戻り発生_カスタムタグ挿入
事前調査方法:既存のID、nameの付け方の方法を全検索⇒パターンから命名規約を確定
⇒キャメルケース化、パスカルかを事前に聞くべきだった。
事前に自分たちで決められないことがないか確認
Java カスタムタグ 一つだけ改行をさせる方法
<c:set var"newLine" value="${newLine}</br>"/>
上記のようにしないとbrタグが二つ生成されてしまう
勉強の為に残しておきたいSVNのコミットを保存しておくこと
プロジェクトを選択し、チーム⇒ヒストリーから、修正前後の番号を選択して
エクスポートすればいい?
⇒毎日やっておかないとブランチを捨てられて見れなくなる。バッチ化?
svn
http://d.hatena.ne.jp/replication/20111125/1322147980
vss
http://aoki1210.hatenablog.jp/entry/20080304/p1
全体
ミスを少なくする方法
修正前の既存のソース、データは消さない。
消すのはコミット直前。
全ての作業にエビデンスを
エクセルで、どのバージョンのソース、資料で何を検索した結果、
何を修正することになったか、
そして修正したことのエビデンスを付ける。
2016/6/7
製造もれ
正)アコーディオンはダイアログオープン時に初期化するが、
一部のその他入力などのデフォルトで値が入ってくるものは初めからオープン状態にする
漏れた原因:作業一つ一つに対するエビデンスを作らなかった。
マトリクス(各状態におけるボタン制御等)についての具体的な実装方法
⇒ボタン単位で処理を実装する
例)Aボタンー条件A、条件Bの場合活性。。。。
その際、すべての条件を記載数必要があるか確認する
例)Bボタンが活性になるにはAボタンが完了していてB処理が終わっていない場合
html,javascriptの基本
htmlは基本ダブルコーテーション
javascript,jqueryは基本シングルコーテーション
JavaScript $target.data(セレクタ)の意味
カスタムデータ属性の要素を取得する。
例)$target.data('btn-collapse')
⇒HTML上でdata-btn-collapse="aaaBtn"と指定されている場合、「aaaBtn」を取得
⇒data-btn-collapseを設定している要素を順次取得し、aaaBtn要素内に何か変更を加えたい場合に使用
Jquery 改行コード 置換
.replace(/\n/g, '')
/\n/..改行コードの場合(?)は\で始めないと文字列として判断されてしまう模様
/g...モード修飾子。該当するすべてを置換するためにこれを使う模様
ダイアログからのValidate処理法
1.親画面の編集ボタン押下
2.ダイアログ呼び出し(jsが呼び出し処理中に、押下されたボタンについてるカスタムデータ属性を保持)
3.ダイアログからsubmit(自分自身を呼ぶ)("/validate.do")
4.Controllerへ。@RequestMapping(value = "/validate.do", method = RequestMethod.POST)
5.2で割り当てた値を取り出して親画面に反映??????
Excel、VBAの基本
メソッド定義
Sub aaa()
end sub
関数定義
Function aaa as String
aaa = "aaa"
end function
変数定義
var aaa as String
関数を使用
Worksheetfuncion.count(A1:A5)
注意点
if elseif ... else ... endif
⇒Thenのタイミングで開業してあげないとエラーになって動かない
定義又はプロパティが定義されていません
⇒必要な奴を削除しちゃった?
シート内ハイパーリンク
=YPERLINK("#Sheet1!A1", "aa")
画像ごと行を削除できるようにする方法
http://blog.livedoor.jp/qoozy/archives/52568172.html
吹き出しのみ削除
http://www4.synapse.ne.jp/yone/excel2010/excel2010_zu_obje_del.html
bean作成時の注意点
画面で更新するものだけをBeanとして定義する
⇒何が更新されるべきものなのか、事前に明確にすべき
では、ボタンの活性非活性、チェック状態制御等はSettingFormとしてModelAttributeするbeanとは分割
スクリプトレット
<%= %>
JSP上で部分的にセッション条件を変えたい OR 条件を変えるのが面倒な処理を一発で変える方法
正にしたい場合は後ろに || true
負にしたい場合は後ろに && false
<c:if test="${hogehoge == fugafuga || true}">
製造時に漏れがないように実装する方法
ソースファイル内に設計書の内容をすべてコピーしてから実装
⇒余計なウィンドウ遷移をなくす
Excel テキストボックスの取り消し線を追加する
ホームーフォントの拡張ボタン押下
JSP BeanとJSPのマッピング
一つずつ値のセット処理を入れないと、
値が入っているかどうかわからない
(メンバ名が一致しているものを自動的にコピーする方法だとわからない。エラーが出てても気づかない)
⇒BeanUtil.copyPropertiesを使うべきか問題。
改善点
作業手順
・ヒアリングした内容をまとめる(まとめる中で気になったことは先に聞く)。作業の全量を把握する
ABCがあるときに、Aはパターン1で出来るけど、Bはパターン2でしかできない、という場合が
ないかどうかの把握
例)メソッド化で渡す引数について、
disabledの場合はidを設定すればid名の文字列私でも可能(オブジェクト参照でも可能)
hiddenの場合はidを指定していない「tr」タグなどがたくさんある為、オブジェクト参照でしかできない
⇒disabledの場合もhiddenの場合もオブジェクト参照でないとできない
javascriptで定数定義して呼び出す方法
http://d.hatena.ne.jp/MoonMtLab/20130831/1377919614
javascript 基底部分 各ソースで共通して即時関数を使用することにより、イベントの追加、基底部分の処理の呼び出しが可能。
var hoge = {
app : {},
dialog : {}
}
(function(hoge, $) {
'use strict';
var hogeApp = hoge.app;
hogeApp.hogehogee = function() {
return hogeApp;
}
/**
* HTML(DOM)読み込み後の処理
*/
$(document).ready(function() {
/**
* イベントハンドラ
*/
$('.hoge').on('click', hogehogee);
});
}(hoge, jQuery));
java開発時に考慮
LomBok(ロンボック)
⇒getter,setter,tostringなどの冗長コードの排除
JSP
ボタンのサイズとテキストサイズがあっていない場合にボタンのどこを押してもクリックイベントが
出るようにする方法
ボタンタグを囲うdivにクリックイベントを付与
(または、jsハンドリング用のクラスをdivに設定する)
JSTLで出力する場合:modelattributeから定義
<form:form modelAttribute="hogehogeForm" action="${postAction}" method="post">
<c:out value="${hogehogeFOrm.fugafugaForm.name}"/>
htmlのname属性:modelattributeを省略して定義
<form:hidden path="fugafugaForm.name"/>
JAVA
クラス一覧をjavadocからCSVに標準出力
事前準備
環境変数にjavaのbinまでのパスを追加する
例)C:\Program Files\Java\jdk~\bin
bat
cd C:\workspace\testDocLet\bin
javadoc -docletpath classes -doclet test.testDocLet -sourcepath 抽出したいプロジェクトパス -subpackages 抽出したいパッケージ
java
public final class testDocLet {
public static boolean start(RootDoc rootDoc) {
File file = new File("作成したいファイルのパス");
try {
PrintWriter out = new PrintWriter(file);
try {
writeTo(out, rootDoc);
if(out.checkError()) {
return false;
}
} finally {
out.close();
}
} catch (IOException ex) {
throw new RuntimeException(ex);
}
return true;
}
public static LanguageVersion languageVersion() {
return LanguageVersion.JAVA_1_5;
}
private static void writeTo(PrintWriter out, RootDoc rootDoc) {
// header
String[] headers = new String[]{"tekitou"});
out.printin(headers);
for(ClassDoc classDoc : rootDoc.classes()) {
if(classDoc.name().endsWith("Form")) {
for(FieldDoc fieldDoc : classDoc.fields(false)) {
String[] d = new String[headers.length];
Arrays.fill(d, "");
int i = -1;
d[++i] = classDoc.name();
d[++i] = fieldDoc.name();
}
out.printin(join(d));
}
}
}
private static <T> String join(T[] d ) {
if(d.length == 0) {
return "";
}
StringBuilder s = new StringBuilder(String.valueOf(d[0]));
for(it i = 1; i < d.length; i++) {
d.append(",").append(a[i]);
}
return d.toString();
}
}
???
BeanPropertyRowMapper
勉強になりそうなサイト
コンピュータクワガタ
気になるjava
コーティング規約 JAVA
JAVA
保管アクション checkStyle javaコンパイラ設定 firebugs の設定を規約とする
JAVADOC
保管アクション checkstyleの設定を規約とする
命名規約
クラス:各単語の先頭を大文字(Pascal形式)とする
メソッド:各単語の先頭を小文字(Camel形式)とする
命名規約で記載する点:
レイヤーなど、種類、接頭語、識別子、接尾語、例
Model、テーブル作成時(マスタ系)、M、任意の名詞(※1)、-、Mdata
※テーブル名(M_DATA)の場合
コーディング規約 JSP
コメントは<%-- --%>を使用する
⇒<!-- -->だとブラウザ上でソース表示時にコメントが表示されてしまう
宣言・スクリプトレット<%= %>によるJavaプログラムの記述は極力避け(定数はOK)、JSTLを利用数
暗黙オブジェクトは極力利用しない
⇒request, response, pageContext, session, application, config, page, exception
× <%= session.getAttribute("information") %>
〇 ${information}
JSPファイルの先頭はコンテンツのタイプと文字コードを定義する
⇒<%@ page language="java" contentType="text/html; charset=Windows-31J"%>
共通するJSPファイルの読み込みは<jsp:include>を利用する
⇒<jsp:forward>だと呼び出し後に呼び出し側のページの実行が終了する為
定数は独自定義せずJava側で定義したものをJSPで利用する
<%-- JSPファイルの上部に宣言 --%>
<%@ page import="~.Constants"%>
<%-- 定数を利用する --%>
<c:set var="hoge" value="<%=Constants.HOGE_HOGE%>"/>
<c:if test="${fuga != hoge}">
<fmt:formatNumber>の丸めモードは近似値である為、利用時には注意
⇒あらかじめControllerクラスなどで四捨五入などの丸め処理を行ったものを渡すようにする
<fmt:formatNumber pattern="#,##0" value="${suuchi}"/>
HTMLタグを利用せず、Springタグを利用する
http://kuwalab.hatenablog.jp/entry/20130118/p1
+form:hidden
できるようになる
スケルトン作成
モック作成
⇒画面をみてHTMLを作るトレーニング?
作業の効率化
修正前の値で判定してるところを探す。判定は
合致している場合(A == B)と合致していない場合があるので、探す時は
「= 」で探す
JavaScript基礎
・等しい(===)ー同じ型に変換せず比較
・ひとしくない(!==) 同じ型に変換せず比較しようとして等しくないか判定
html
・先頭
<!DOCTYPE html>
<html lang="ja"?
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=no">
<meta name="format-detection" content="telephone=no">
・最後
JS読み込み(パフォーマンス考慮の為)
POST⇒REDIRECT⇒GET
PRGパターンの実装方法
<c:url value="/パス" var="postAction" />
<form:form modelAttribute="hogeForm" action="${postAction}" method="post">
</form:form>
コンテキストルート
WEBアプリケーションの最上位のパス
改善点
作業確認漏れ
不具合内容、修正内容をあらかじめリーダーに連携せずにコミット
⇒あとでリーダーに指摘され修正
作業
何かをまとめてくれと言われたときの自分の対応方法
例)未実装箇所一覧
No,画面一覧,未実装箇所一覧
⇒1セル1画面で、足りなくなったら別シートへ
デメリット:足りなくなったらいちいち別シートを観なければならない
タスクの割り振り入力欄が入れられない
メリット:自分の入力が楽
期待値:
No,カテゴリ[View,Controller,Service],画面,修正内容
⇒1セル1修正内容
デメリット:自分の入力が面倒
メリット:そんままみんなに展開できる