Oracle Client 11.2.0.3 x64

とある環境で「Oracle Provider for OLE DB」を使用する為「Oracle Client 11.2.0.3 x64」の媒体から、それがインストールされていました。しかし、.NET Framework2.0で操作するプログラムを実行すると「'OraOLEDB.Oracle.1' はローカルコンピュータに登録されていません。」とのエラーが返され、目的のDBに接続する事ができません。
このエラー、経験値では、.NETプログラムが「ANY CPU」でコンパイルされていたり、OSがx64で「x32」、またはOSがx32で「x64」でコンパイルされていると発生することが多いのですが、今回はそのあたりの矛盾もない状態。推測すると、「Oracle Provider for OLE DB」がOSに正しくレジストされていない様子。
他のPCで「Oracle Client 11.2.0.1 x64」の媒体からインストールされた環境があるのですが、こちらは正常操作。
結局、「Oracle Client 11.2.0.3 x64」ではなく「Oracle Data Access Component(ODAC) 11.2.0.3 x64」を使用し「Oracle Provider for OLE DB」を再インストールしたところ、正常に動作すように鳴りました。Oracleのサポートに持ち込んだ訳ではないので、断言は出来ませんが、現象からすると「Oracle Client 11.2.0.3 x64」のインストーラーに問題があるようです。

やっぱ、WPF かな...?

.NETでWindowsデスクトップアプリと言えば、WindowsForm だった訳ですが、ここ数日、Windowsデスクトップアプリでの、Entity FrameworkやLinq to Entityあたりを調べてたら、やっぱりもう、WindowsForm ではなく、Windows Presentation Foundation(WPF)だろうということが見えてきた。ただ、私が知る限り、業務系で積極的に採用されているようには見えないので、不安も感じるが、MS的な方向としては確実にWPF
生産性や保守性はどうなのであろうか?
その辺は、他人が書いた情報を見ているだけではわからないので、やはり自分で試すことが必要。
ちょっと書いてみよう。
ターゲットはより実用的なものがよい。
.NET Framework4.5 + WPF + Entity Framework + Linq + ODP.NET
この組み合わせで何か書いてみよう。

ODP.NET が NuGet に対応してた!

「何をいまさら...」と言われてしまいそうだけど、最近Oracleから少し離れていたら、
ODP.NET 12c Release3(12.1.0.2.1)から、NuGetに対応してたんですね。
発行日は2015/01/16と表示されているので、もう2ヶ月以上も前に...

今回はWindowsFormでの使用を前提に、早速試してみました。

NuGetのパッケージ管理から、Oracleで検索すると現れる赤い12cのアイコンがそれです。
2つあります。ひとつはEntity Framework6対応のドライバ。そしてもうひとつがODP.NETです。
2つ目のODP.NETをインストールすると、依存関係にある、Entity Framework6とEntity Framework6対応のドライバとともにODP.NETがインストールされます。
おお、なんと楽チンなんでしょう(笑)。
App.config が自動で生成されるので、とりあえず下記の箇所を動作させる環境に合わせて書き換えます。

  <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <dataSource alias="dsn" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hoge)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) "/>
      </dataSources>
    </version>
  </oracle.manageddataaccess.client>
  <connectionStrings>
    <add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client"
      connectionString="User Id=foo;Password=bar;Data Source=dsn"/>
  </connectionStrings>
</configuration>

とりあえず、簡単なテストを...
とあるテーブルから、全件をSelectし、textBoxに書き出す。

private void button1_Click(object sender, EventArgs e)
{
    this.textBox1.Text = "";
    using (var Conn = new OracleConnection())
    {
        Conn.ConnectionString = ConfigurationManager.ConnectionStrings["OracleDbContext"].ConnectionString;
        Conn.Open();
        string strSQL = "select CODE,NAME1 from TABLE1 order by CODE";
        OracleCommand Cmd = new OracleCommand(strSQL, Conn);
        OracleDataReader Reader = Cmd.ExecuteReader();
        while (Reader.Read())
        {
            this.textBox1.Text += Reader.GetString(0) + ":" + Reader.GetString(1) + "\r\n";
        }
        Reader.Dispose();
        Cmd.Dispose();
    }
}

たしか、すでに Code firstにも対応していたと思うので、近いうちにそちらも試してみようと思います。

Nexus5(5.0.1)でLTE/3Gが使えなくなった!

1年ほど前に Nexus5をGoogle Playで購入して MVNO(BIGLOBE)のSIM入れて使ってます(妻がw)。

電波は拾っているようなのですが、アンテナのアイコンに「!」が表示されて、モバイルネットワークが使えません。APNを再設定などしてみたけどダメ...

どんどん深みにハマって
system recoveryのメニューから
wipe cache partition を実行して再起動したら、
ロドイド君がお腹を上にして「!」を出しちゃう始末...
きゃぁ〜〜〜やっちまったかぁ?
気を取り直して再度 wipe cache をかけるとリカバリーしたようで
(ボリュームの大や小ボタンで動作が変わるので注意が必要
 ちょっと焦ってたので画像取り忘れた orz )
とりあえず元にもどった。が、そもそもの問題は解決せず...

振り出しに戻ったところで、最初から考えて見ることに。

端末の状態を確認すると、
「モバイルデータ通信」が「切断」
と表示されているということは、
単純に「使わない設定」になっているのではないかと。
で、ふと思う。
以前のバージョンで「モバイルデータ通信を有効にする」というメニューは何処へいった?

どうやら
[設定]-[データ使用量]-[モバイルデータ] の オン/オフ 
これに変わったらしい。
なんか変じゃないか?このメニュー。
なんで[データ使用量]の中に オン/オフ があるんだよ。

確認すると、なんとここが「オフ」になっているじゃないか!
「オン」に変えると、何事も無かったかのようにアンテナアイコンに「LTE」の表示が...

うーん、やっぱりあまり好きになれないな...Android
(個人的な感想ですw)

OS X/LinuxによるASP.NET 5アプリ開発ガイド

気がつくの、遅れたましたが、
こんな記事が連載されてました。
第1回 ASP.NET 5をOS X/Linuxで使うための準備 (1/5):連載:OS X/LinuxによるASP.NET 5アプリ開発ガイド - @IT
時間作って試したいのであります!(←日本語が変w)

こちらも、要チェック!
2015年に到来する大変革「次期.NET/ASP.NET/Visual Studio、Windows 10」に備えよう ―第7回 業開中心会議 (1/2):連載:業開中心会議議事録 - @IT

「はじめよう!要件定義」を読みました。

業務系のシステムに携わっている技術者で、プログラマとしては優秀なのに、上流工程は苦手だったりする人がいます。特に汎用機全盛以降にその傾向が見られるように思います。
ソフトウエア(プログラム)の作り方や技術が多様化し習得も大変なのですが、業務系では業務に役立ってなんぼなもんなので、ソフトウエア的な技術に偏った知識ばかりでも居られません。
システムを設計するエンジニアと、実装するエンジニアが分業されている場合、その間を埋める工夫も必要です。

それが、なかなか難しいんですよね。
もうこの業界の、ウン十年の課題だったりもします。

そして、一番重要なのは「要件定義」。
システム作りは「要件定義に始まって要件定義に終わる」と言っても過言ではないと思います。

UMLを使いましょう!」なんてアプローチもありますが、
そんなもの、システム屋どうしなら使えますが、一般のお客との打ち合わせでは(普通は)使えませんし、私個人的には、UMLが良いと思えたこともありませんでしたので、独自の図や絵を活用する事が多いです。

そんなこんなで(笑)、みなさん(システムの発注側も受注側も)すっきりしない中で、要件をなんとかまとめ(たつもりで)システム開発をスタートして、てんやわんやして、(運良く)なんとかカットオーバー...ということも少なくないと思います。

そんな状態から少しでも抜け出したい人向けの良書です。
発注側、受注側両方の立場それぞれの立場で有効だと思います。

そして、著者も本書のあとがきで書かれていますが、

本書の肝は「画面遷移図を書こう」

激しく同意です(笑)。

平易な言い回しと、かわいらしいイラストで、すらすらと読むことができます。

はじめよう! 要件定義 ~ビギナーからベテランまで

はじめよう! 要件定義 ~ビギナーからベテランまで