2016年12月26日月曜日

Angular2バリデーションの注意点

Angular2のバリデーションで躓いたのでメモ。 inputのerrorsプロパティはエラーの場合しかオブジェクトが生成されないため、 エラーメッセージを隠す際はngIfを使用する。


<form #form1="ngForm">
    <ion-grid>
        <ion-row>
            <ion-col>
                対象月:
                <input type="text"
                       [(ngModel)]="targetMonth"
                       [ngModelOptions]="{standalone: true}"
                       #t_month="ngModel"
                       pattern="^20(0[1-9]|[1-9][0-9])(0[1-9]|1[0-2])" ngModel />
                <p *ngIf="t_month.errors && t_month.errors.pattern" class="error">
                    値が不正です。西暦4桁+月2桁を入力してください。(例:201612)
                </p>
            </ion-col>
        </ion-row>
        <ion-row>
            <ion-col width-10>
                <button type="button" (click)="onSubmit()" [disabled]="!form1.form.valid">
                    データ取得
                </button>
            </ion-col>
        </ion-row>
    </ion-grid>
</form>


2016年12月20日火曜日

Wijmo5に関するサイト

Wijmo公式ドキュメント
wijmoの各モジュールについて、プロパティ、メソッド、イベントがまとめられている。

サンプルエクスプローラ
公式サンプル集。色々参考になります。
基本を押さえた上でないと使えない。

Angular2マークアップ構文
Angular2のマークアップ構文の開設。Wijmoモジュールを例にしているので分かりやすい。

FlexGrid入門
FlexGridの基本的な使い方の紹介。


Angular2でng-show

Angular2ではng-showがありません。


<div ngshow="data">....</div>


なんて書くとエラーで怒られてしまいます。


こんな時はこう書きましょう。


<div [hidden]="!data">....</div>


hiddenなのでtrueの時に隠れちゃいますから、否定の!をつけるのを忘れないようにご注意を。

「Cannot read property 'directive' of undefined in Wijmo grid」の対応

【事象】
Wijmo5の以下のディレクティブを使用するとエラーが発生する。
・wj-flex-grid-column
・wj-flex-grid-filter

【エラー内容】
TypeError: Cannot read property ‘directive’ of undefined

【構成】
Angular2:2.2.1
Wijmo:5.20163.234

【対応】
Wijmo5.20163.239にバージョンアップする。
ダウンロードはここから

【参考】
http://wijmo.com/topic/error-when-upgrade-angular-2-2-1-cannot-read-property-directive-of-undefined/



さんきゅーAlex!!

2016年11月22日火曜日

Angular2入門系サイト

■Angular2実践入門
最小構成のためおすすめ。
https://html5experts.jp/yusuke-naka/18596/
2016年3月22日

■Angular2入門風
なかなか
http://qiita.com/sisisin/items/355bb09845c8bea9d430
2016年11月11日

Oracle8iでEntityFrameworkを使う方法

表題の件、すっごい苦労しました。

1.SQLServerを用意
32bitのWindowsに、SQLServerをインストール。SQLServerは当然32bit。
なぜ32bitかというと、あの忌まわしき「Program Files (x86)」のせい。
インストールパスを変えてもSQLServerのインスタンスは「Program Files (x86)」に作成されていまうため、Oracleのライブラリがうまく使えなかったり。

2.レジストリ変更
OracleのDLLを使用するように書き換え。(バックアップを忘れずに)
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI]
 "OracleXaLib"="oraclient8.dll"
 "OracleSqlLib"="orasql8.dll"
 "OracleOciLib"="oci.dll"

3.リンクサーバ作成
以下のコマンドでリンクサーバ作成。
 EXEC sp_addlinkedserver   'リンクテーブル名',  'Oracle',  'MSDAORA',  'TSN名'
 EXEC sp_addlinkedsrvlogin 'リンクテーブル名', 'FALSE',NULL, 'ログインID', 'パスワード'

4.VIEW作成
シノニムはEntityFrameworkで使えないのでVIEWを使う。
例)CREATE VIEW VIEW_1 AS SELECT * FROM [リンクサーバ名]..[スキーマ名].[テーブル名]


以上。
これでEntityFrameworkでアクセスできるOracle8iのできあがり。

【参考】

EntityFrameworkのEntityをJSONに変換


EntityFrameworkのEntityをWebAPIでJSON形式で返したかったので、変換してくれるライブラリを探してると、Json.NETというライブラリを見つけた。

サイトからダウンロードするか、NuGetで入手。
WebApplicationプロジェクトだと標準で入ってるかも。

■NuGetのインストールコマンド
PM> Install-Package Newtonsoft.Json


■使い方
string json = JsonConvert.SerializeObject(query);


とってもシンプル。

2016年8月31日水曜日

年月毎にファイルをフォルダに振り分けする方法

写真、ビデオのファイル名を撮影日時にする方法でファイル名を変更した後の処理として、
年月毎にフォルダ振り分けを行うバッチファイルを作成します。

1.バッチファイル作成
以下の内容でバッチファイルを作成します。
ダウンロードはこちら

@echo off
@setlocal enabledelayedexpansion

REM 移動先のルートパス
SET MOVE_ROOT=移動先パス ← 適宜修正。ファイルサーバも指定可能。

REM ファイル移動
for %%F in (%*) do (
 echo 処理開始:%%F
 dir /s /b %%F

 FOR /F "usebackq delims=" %%I IN (`dir /s /b %%F`) DO (
  ECHO ファイル処理開始:%%I
  SET F_NAME=%%~nI
  SET MOVE_DIR_NAME=!F_NAME:~0,6!
  SET /A CONF_F_NAME=!MOVE_DIR_NAME!
  IF "!CONF_F_NAME!" NEQ "!MOVE_DIR_NAME!" (
   ECHO ファイル名がおかしいので処理をスキップします。
  ) ELSE (
   REM ディレクトリ存在確認
   SET MOVE_DIR=!MOVE_ROOT!!MOVE_DIR_NAME!\
   
   REM ディレクトリが存在しない場合作成する
   IF NOT EXIST "!MOVE_DIR!" MKDIR "!MOVE_DIR!"
   
   REM ファイルコピー
   MOVE "%%I" !MOVE_DIR!
  )
 )
)

2.バッチファイル配置
1で作成したバッチファイルを適当な場所に配置します。

これで、バッチファイルにフォルダをドロップすると、フォルダ内の画像、ビデオファイルの
ファイル名が撮影日時に変更されます。
送るメニューにショートカットを登録することで、もっと便利に使うこともできますよ。

■送るメニュー編集手順
https://www.microsoft.com/ja-jp/atlife/tips/archive/windows/tips/305.aspx

写真、ビデオのファイル名を撮影日時にする方法

フォルダをドロップすると、フォルダ内の写真、ビデオのファイル名を
「撮影日_撮影時分秒」に変更するバッチファイルの作り方。

1.exftool用意
撮影日時の取得には、exftoolを使用します。
以下のURLから、Windows版をダウンロードしてください。

2.バッチファイル作成
以下の内容でバッチファイルを作成します。
ダウンロードはこちら
@echo off
@setlocal enabledelayedexpansion

REM ファイルリネーム
for %%F in (%*) do (
 echo 処理開始:%%F
 dir /s /b %%F

  FOR /F "usebackq delims=" %%I IN (`dir /s /b "%%F"`) DO (
  FOR /F "usebackq tokens=4,5 delims=- " %%O IN (`c:\bin\exiftool.exe -datetimeoriginal -createdate "%%I"`) DO (
    set F_DATE=%%O
    set F_TIME=%%P
    
    set NEW_FNAME=%%~dI%%~pI!F_DATE::=!_!F_TIME::=!%%~xI
    
    IF "!F_DATE!" NEQ "" IF "!F_TIME!" NEQ "" (
     IF EXIST %%I (
      call :RENAME_FILE %%I !NEW_FNAME! %%~dI%%~pI!F_DATE::=!_!F_TIME::=! 0 %%~xI
     )
    )
  )
 )
)

pause

@endlocal
@echo on

@goto :EOF


:RENAME_FILE
IF EXIST %2 (
 SET /A NUM=%4+1
 SET NEW_FNAME=%3_!NUM!%5
 call :RENAME_FILE %1 !NEW_FNAME! %3 !NUM! %5
) ELSE (
 echo ファイル名変更:%1 ⇒ %2
 echo move %1 %2
 move %1 %2
 exit /b 0
)

exit /b 0

3.バッチファイル配置
2で作成したバッチファイルを適当な場所に配置します。
また、1でダウンロードしたexftool.を解凍すると「exftool.exe」というファイルができるので、
バッチファイルと同じフォルダに配置するか、パスが通っているフォルダに配置します。


これで、バッチファイルにフォルダをドロップすると、フォルダ内の画像、ビデオファイルの
ファイル名が撮影日時に変更されます。
送るメニューにショートカットを登録することで、もっと便利に使うこともできますよ。

■送るメニュー編集手順
https://www.microsoft.com/ja-jp/atlife/tips/archive/windows/tips/305.aspx