Archive

Archive for 2014年9月

@ITの@IT eBookでVBAの入門電子書籍が公開中

@ITでVBAの入門連載(Excelマクロ/VBAで始める業務自動化プログラミング入門)をPDFファイルにまとめたeBookが無料公開されています。VBAはExcelといった身近なツールでプログラミングを体験できるので、プログラミング入門としてはお勧めですよね。

@ITのeBookシリーズとしては今回のVBAを含め現在下記の3つのコンテンツが提供されています。

カテゴリー:雑記, タグ:

あれ??CodeFirstで照合順序はどこで指定するの???

SQL Server Compact 4.0+コードファーストを採用しているプロジェクトがあるんだけれど、検索結果が予想したものにならないんだけれどと相談を受けました。

とりあえずこんなコードがあるとして

Using context = New LocalDbContext()
    context.マスター.Add(New マスター With {.Name = "かきくけこ"})
    context.マスター.Add(New マスター With {.Name = "ほげあほげ"})
    context.マスター.Add(New マスター With {.Name = "ほげアほげ"})
    context.マスター.Add(New マスター With {.Name = "ほげアほげ"})
    context.マスター.Add(New マスター With {.Name = "あいうえお"})
    context.マスター.Add(New マスター With {.Name = "いうえおあ"})
    context.マスター.Add(New マスター With {.Name = "さしすせそ"})
    context.マスター.Add(New マスター With {.Name = "a"})
    context.マスター.Add(New マスター With {.Name = "A"})
    context.マスター.Add(New マスター With {.Name = "ほげAほげ"})
    context.マスター.Add(New マスター With {.Name = "ほげAあほげ"})
    context.SaveChanges()
End Using

Using context = New LocalDbContext()
    Console.WriteLine("■あが含まれるもの")
    For Each item In context.マスター.Where(Function(n) n.Name.Contains("あ"))
        Console.WriteLine(item.Id & ":" & item.Name)
    Next

    Console.WriteLine("■aが含まれるもの")
    For Each item In context.マスター.Where(Function(n) n.Name.Contains("a"))
        Console.WriteLine(item.Id & ":" & item.Name)
    Next
End Using

実行するとこうなるらしい。

image

みごとに大文字・小文字、半角・全角、かな・カタカナが区別されずに出ちゃっていますね。照合順序が問題なのは分かるんですけれどCodeFirstの場合、照合順序ってどうやって指定するんでしょう。。。

サポートされる照合順序 (SQL Server Compact)をみると、サーポートされている照合順序はJapanese_CI_ASとJapanese_CS_ASだけみたい。あれ?かなとカタカナは?半角と全角は??

嫌な予感がしつつも、とりあえず照合順序の使用 (SQL Server Compact)をみると、接続文字列に Case Sesitiveを指定すると大文字と小文字は区別してくれるみたいなので、まずはこっちを確認してみます。appConfigに接続文字列を追加して実行してあげます。

<connectionStrings>
  <add name="LocalDbContext"
       connectionString="Data Source=|DataDirectory|LocalDb.sdf;Case Sensitive=True"
       providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>  <entityFramework>

image

確かに大文字・小文字と英字の半角・全角は区別されたようですが、日本語はかな・カタカナ、半角・全角は区別されずに出てきちゃっていますね。Kanji SensitiveとかWide Sensitiveとか無いんでしょうか。。。

とりあえず今回は件数が少ないので.NET側でフィルターしようかと思います。これほんとにこれしかやり方ないんでしょうか。。。

Using context = New LocalDbContext()
    Dim tmp = context.マスター.ToList()
    Console.WriteLine("■あが含まれるもの")
    For Each item In tmp.Where(Function(n) n.Name.Contains("ア"))
        Console.WriteLine(item.Id & ":" & item.Name)
    Next

    Console.WriteLine("■aが含まれるもの")
    For Each item In tmp.Where(Function(n) n.Name.Contains("a"))
        Console.WriteLine(item.Id & ":" & item.Name)
    Next
End Using

カテゴリー:未分類

node.js + Visual Studio

Live Writerの下書きフォルダーから発掘されたので投稿しておきます。

何かと話題のnode.jsですがここに来てちょっと周りで話題になっているので、開発のさわりだけ調査したメモです。

開発環境を作る

Node is Tools for Visual Studioってのが出たらしい(まだBeta2だけれど)ので、ここのInstallationを参考に入れてみます。

今回導入するNode Tools for Visual Studio のデモンストレーションビデオがYouTubeに有りました。ビデオは1.0Alpha時点のものなので、Beta2とはちょこちょこ違うところが有りますが、大まかに雰囲気が伝わります。⇒ overview – Node Tools for Visual Studio 1.0 Aplpha

1.Node.jsのランタイムをインストール

http://nodejs.org/に行ってINSTALLボタンからダウンロードしてインストールします。

2.Visual Studio 2012 or 2013のインストール

アドインとして動作するのでVisual StudioはPro以上。まぁ入ってますよね。VS 2010は残念。

あれ?InstallationのページにVisual Studio Express 2013 for Webは対象となっていますね。試していないけれど使えるらしいです。

3.Node is Tools for Visual Studioのインストール

https://nodejstools.codeplex.com/releases/view/119433で、2012または2013用のmsiをダウンロードしてインストールします。

4.インストール後の確認

表示→その他のウインドウ→Node.js Interractive Windowから、Visual StudioのウインドウとしてNode.jsのコンソールを表示して実行できます。インタラクティブウインドウでも関数を定義したり、インテリセンスが表示されているのが確認できますね。

image  image

プロジェクト(ソリューション)を作る

インストールが完了するとNode.js用のプロジェクトテンプレートが追加されます。

まずは、Webアプリケーション用のテンプレートから新しいプロジェクトを作成します。

image image

プロジェクトが作成されたらとりあえず実行してみましょう。Webサーバーになるプログラムがコマンドプロンプトで起動されWebブラウザーからそのURLにアクセスした結果が表示されます。

image

パッケージを追加でインストールする(Proxy環境下は設定が必要)

ソリューションエクスプローラーからは、npmを使って新しい機能をインストールすることができます。

image image

パッケージのインストールに成功すると、ソリューションエクスプローラーに追加したパッケージが表示されます。パッケージのプロパティーを確認するとrequireでライブラリーをロードする場合のパッケージ名なども確認することができます。

image

Proxy環境下ではパッケージ自体は見つかるんだけれど、Install Packageすると失敗するみたい。って場合は、ホームディレクトリー(%USERPROFILE%)にnmpの設定ファイルを用意してあげます。エクスプローラーからだとファイル名を入力しろとか言われるので、コマンドプロンプトからnotepad .npmrcとかで作ってあげましょう。

%USERPROFILE%\.npmrc

proxy = http://proxy.example.com:8080

インストールが完了すると、ソリューションエクスプローラーに組み込んだパッケージとそのバージョンが表示されます。

とりあえず、まずはここまで。

カテゴリー:未分類