・ファサード・パターン
façade
複数の関連する機能を、外部から隠蔽するクラス(ファサード)を作成しておくことで、内部の変更を外部に影響をさせないようにするパターン
・Visual Studio
ショートカット Ctrl + - にて戻る前のカーソル位置に移動する
・C# 独自(カスタム)TraceListenerの実装方法
web.configにリスナー情報を追加
・sharedlistener-system.diagnostics
┗<add name=""LogListener"" type=""namespace....class名, アセンブリ情報(プロジェクトのプロパティで見つかる)""/>
<source name=""Log"" switchValue=""All"">
<listeners>
<add name=""LogListener""/>
<remove name=""Default""/>
</listeners>
</source>
・独自(カスタム)TraceListenerの実装方法2
・tracelistenerを継承したファイルの作成(namespace…class名と名前を一致させること)
public class DbTraceListener : TraceListener
{
public override void Write(string message)
{
}
public override void WriteLine(string message)
{
}
}
⇒この中でDB接続~INSERTまで実行する
・独自(カスタム)TraceListenerの実装方法3
呼び出し側でTrace.WriteLineとかで呼び出せば。。。うまくいかないはず。
LogLevel,リスナーによる出しわけ処理は自前で定義する必要あり。
・ASP.NET MVCでログが出力されない場合に
気にすること IISの問題の場合⇒IIS Expressをいったん終了させる
ログのFlushの問題の場合⇒autoFlush=""false""になってないか
・Excel Grepツール ExcelGrepがいい。
ExcelSniperで実際に対象がないのに検索結果一覧に出ることがあった。
・楽観排他 ユーザーが操作する情報を、同時に他のユーザが操作する可能性は少ない、との仮定に基づく排他方式。
更新したいリソースに対してロックせず、対象リソースの照会時と変更がないことをチェックする。
複数ユーザーが同一にデータ更新を行う際にエラーを回避するために、アプリケーションにより整合性をチェックしてユーザーに状態を促すことにする。
・悲観的排他 ユーザーが操作している情報を、他のユーザーも操作する可能性が十分にある、との仮定に基づく排他方式。
更新しているリソースに対するロックは、対象リソースを照会のために取得した直後から更新が終わるまで維持される。
バッチ処理では、データ更新が多く、データ整合性に関わる部分を保証する必要があるため、この方式を採用する。
・反省 自分の伝え方がはっきり?していなかったために、無駄な工数発生
I/Fは利用しなくてもいい? ⇒ いいよと回答 ⇒ 呼び方も変えていいかの確認が不十分だった。
get~()で、引数に必要な情報がない場合でもきちんと値を返す方法
必要な引数がある場所から、今回追加されている、引数がないメソッドがあるクラスに適当な名前でメソッド追加し、
static メンバ変数に値を持たせる
引数がないメソッドにて、メンバ変数を取得する
・javascriptのTips 標準コマンドを使用して実行
if ('getSelection' in window &&
'createRange' in document &&
'execCommand' in document &&
'queryCommandSupported' in document &&
document.queryCommandSupported('cut')) {
document.execCommand('cut');
}
setTimeout(popup.hide(), 200);
デフォルトのキー入力イベントを排除
e.preventDefault();
・失敗 相手にファイルを渡すときのフォルダ構造
A
┗新規ファイル━ファイルA.cs
┃ ┗ファイルを置く場所.txt
┗差分ファイル━ファイルB.cs.html
┗このファイルは直接開いて差分を適用してください
・HTMLで書いたのと同様に値を表示する方法 valueDataDelimiter = "" "";
MvcHtmlString.Create(breadcrumb);
⇒IHtmlString型。
ただし、これだと>とかが正しく出ないため、
WebUtility.HtmlEncode()で文字列を追加しておく
・settimeout
メソッド終了後に呼ばれる コンテキストメニューから親画面全選択
$(contextMenuElement.beforeElement).focus();
setTimeout(function () {
document.execCommand(command);
}, 0);
⇒setTimeoutは最後に呼ぶようにする
・webアプリケーションが動かない
/エラー 方法1.asp.net のサービスが動いていない可能性
ファイル名を指定して実行「services.msc」
ASP.NET 状態サービスを立ち上げ
(自動開始にしておく)
方法2.起動時のパス誤り
プロジェクトのプロパティ
WEBタブ 開始動作 ページを指定する
プロジェクトのURL
・asp.net mvcでIPv4アドレスを取得する方法 string ipa = """";
System.Net.IPHostEntry iphEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
foreach (var ipAddr in iphEntry.AddressList)
{
if (ipAddr.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
ipa = ipAddr.ToString();
break;
}
}
・SQL SQLインジェクション対策
⇒パラメータクエリ化。しないと任意の箇所でコメントアウト化できてしまう。
http://npnl.hatenablog.jp/entry/20080412/1207965105
DbParameter
DbCommand
・ホスト名とは http://localhost:50563/
最初のスラッシュまで。
・ excel 図 圧縮
excelで画像のファイルサイズ圧縮が可能
・設計書の書き方 参照するファイル名の指定は「」をつける
・設定ファイル
各設定値の意味、書き換え可能かについて記載
・階層で設計書を記載
・C# 改行
Environment.NewLineだと、環境によって\r\n,\nを切り替えてくれる
・順番 保証 リスト List<KeyPairValue<string, string>>
⇒順番が保証されたDictionaryとして使用
List<KeyPairValue<string, string>>
・ PDF MIME/TYPE
ロードバランサー
エイリアス = 仮想ディレクトリ(IISでFTPのときにやったやつ) =
・色のグラデーション 取得
パワーポイントに画像を貼り付け、図ー塗りつぶしースポイトで色を取得可能
・リリース資料作成 変更したリソースファイルが全て列挙されているか⇒Winmerge
変更したリソースファイルが全て列挙されているか⇒Winmerge
変更したファイルが妥当な区分に記載されているか⇒目視
・SQL 削除フラグがあるテーブル
取得時。。。削除フラグがたっていないもの、という条件が必要
挿入、更新時。。。フラグをどちらにするか判断する必要有。
・JavaScript
別画面表示時に考慮すること ・複数画面から同じヘルプ画面を呼ばれることはあるのか
・複数画面から呼ばれたときに画面ごとに別画面を出すのか
⇒別画面にしたくないときは、画面の名前を一意の名前にする
・別画面がPDF等のドキュメントの場合、ファイルはどこに置かれる想定か
ドメインが違う場合、IISの仮想ディレクトリ等で対処する必要がある
・ドキュメントの場合、ファイルがなかった場合の対処
・一画面につき何枚まで画面を出すか
・JavaScript 別画面表示時の実装1
var winWidth = 1252;
var winHeight = 950;
var winScrX = window.screenX + 20;
var winScrY = window.screenY + 20;
// ウィンドウオプションの設定
// アドレスバー:非表示、ツールバー:非表示、メニューバー:非表示、ステータスバー:表示
// スクロールバー:表示可能、リサイズ:変更可能
var winFeatures = ""location=0, toolbar=0, menubar=0, status=1, scrollbars=1, resizable=1"" +
"", width="" + winWidth +
"", height="" + winHeight +
"", top="" + winScrX +
"", left="" + winScrY;
・JavaScript 別画面表示時の実装2
if (appPath === ""/"") {
//値が「/」の場合、その値を削除する。
appPath = appPath.substr(0)
}
// 別ウィンドウを開く
var helpWindow = window.open(window.location.origin + appPath + ""/Content/blank.html?helpUrl="" + helpUrl, formId, winFeatures);
・JavaScript 別画面表示時の実装3
blank.html
フォーカス処理は遷移先の画面で実行しないと連打したときにうまく動かなくなる <html>
<head>
<title></title>
<script>
function changeHelp()
{
focus();
location.href = location.search.split(""="")[1];
}
</script>
</head>
<body onload=""changeHelp()"">
</body>
</html>
・ドキュメント作成 ドキュメント作成後、各項目に対してテスト項目を作成し、
ドキュメント作成後、各項目に対してテスト項目を作成し、
結果が正しいことを担保する。
・addEventListenerとonの違い
jqueryのonの違い イベントを追加登録(重複登録不可)するのがaddEventListener
イベントを上書き登録するのがon
イベントを追加登録(重複登録可能)がjqueryのon
・jqueryのoffの注意点
jqueryで登録したイベントに対する全てのイベントを削除してしまう
・モーダル
モードレス クローズされるまでプログラム本体の操作が不可
クローズされなくてもプログラム本体の操作が可能
ちなみにダイアログは本体の処理を待つのみの為、
モーダルダイアログ、モードレスダイアログがありえる
・コンテキストメニュー 連想配列
actions: {
""cut"": {
name: ""切り取り(T)"",
keyCode: 84
},
},
selectedElement: """",
・即時実行したい処理を記載する
(function () {
$(document).on('blur', ""#test"", function () {
alert(""!"" + document.getElementById(""test"").selectionStart);
});
}());
・cshtmlで画面ごとにjavascriptを任意で追記する方法
_Layout.cshtml
@if (IsSectionDefined(""scripts""))
{
@RenderSection(""scripts"", required: false);
}
各cshtml
@section scripts{
<script src=""~/Scripts/test.js""></script>
}
・ var groupDatas = from masterData in listData.DisplayRows()
group masterData by new
{
masterData.ID,
masterData.NM
} into masterDataGroup
select new
{
Id = masterDataGroup.Key.ID,
Name = masterDataGroup.Key.NM
};
・次案件で考慮する内容 セッション管理
セッション設計
クッキー設計
ルーティング
PRGパターン
多重クリック(2度押し防止)
CSS設計
キャメル、パスカル
Excel テーブル用マクロ
帳票ー署名
PDF
Excel
XML
マルチスレッド
Ajax-JSON
・ SVN Redmine 連携
コミットコメント定義
仮想セッション
モーダル
モーダレス 親画面、子が面
・jquery ui 擬似モーダル
・window.openで何とかする
⇒showmodalは非推奨の為禁止
javascript openwindow modalとかで検索
引数でオブジェクトで渡す
CSSを使った擬似モーダルダイアログ
・ 単体テストーJunit
ログーlog4j
ライブラリーLombok
チェックーfindbugs、checkstyle
便利サイト
http://qiita.com/disc99/items/727b51dbe737602a5c91"