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

ファサード・パターン
    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 = ""&nbsp;"";
    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 mvcIPv4アドレスを取得する方法                 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
    ロードバランサー
    エイリアス = 仮想ディレクトリ(IISFTPのときにやったやつ) =  

・色のグラデーション 取得
    パワーポイントに画像を貼り付け、図ー塗りつぶしースポイトで色を取得可能 

・リリース資料作成 変更したリソースファイルが全て列挙されているか⇒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   
チェックーfindbugscheckstyle   
便利サイト   
 http://qiita.com/disc99/items/727b51dbe737602a5c91"