エクサデータの現実

最近Oracle社のエクサデータ関連の仕事をしているが 世間の評判とは違い、私の印象を一言で言うと 足が速いだけのバカ です。 機体を極限まで工夫したおかげで最高速度は400km出るが、 肝心のドライバー(Oracleのオプティマイザ)の人工知能が貧弱で 機体性能…

複雑なものを複雑なまま理解できない奴に単純化させるな

複雑な業務やシステムにはそれなりの理由があります。賢いヤツは複雑なことを単純化して理解し説明することが得意と言われますが、中途半端にかしこい奴は自分の理解能力を超える複雑なことを、ろくに理解もせずに、経験則や思い込みだけで単純化して理解し…

OJTは無免許運転

IT業界では今年も新人が大量に配属され、OJTの名を借りた無免許運転が始まりました。 ユーザー企業が高いお金を払ってプロに依頼したはずのプログラムのほとんどは ろくな専門教育も受けていない学生上がりのド素人が、ぶっつけ本番で現場投入され 納期に追…

VB.NETで外部アプリケーションを呼び出し、終了するまで再描画を停止せずに待機する方法

通常、VB.NETで外部アプリケーションを呼び出し、終了するまで待機させようとすると、呼び出し元プロセスが完全に待機状態となって 再描画すら抑制されてしまいます。これを簡単に解決するためには、BackgroundWorker、ShowDialogを利用します。 以下のよう…

24時間365日稼動の嘘

オープン系システムにおいて、 「過去数年以上24時間365日稼動の実績があります!」 と言うセールストークを耳にした際には、必ず「計画停止」があるかどうかを 確認しましょう。 稼動実績に「計画停止」は含まないという回答が返ってきた場合には、 必…

VB.NETで固定長文字列を生成する。

システム間インターフェイスで固定長ファイルを扱うケースがあると思いますが、 VB.NETやC#で固定長の文字列を作ろうとしても、そもそも.net framework には 標準で固定長文字列(ShiftJIS)を生成する機能が用意されていません。 全角(2バイト)文字を考…

グローバル一時テーブルの使い道(SQLSERVER)

SQLSERVERの一時テーブルには、 ローカル一時テーブル(テーブル名が#〜)とグローバル一時テーブル(テーブル名が##〜)の2種類が存在します。 ローカル一時テーブルは、同一セッション内のテーブルを作成したスコープおよび子スコープからのみ参照でき、…

端数の切り上げ処理に注意

端数処理というと、切捨、切上、四捨五入、JIS丸めの4種類と思われがちですが、 端数を切り上げて整数にするという場合のルールは実は2種類あります。①整数値を少しでも超えていたら切り上げるケース 例)0.01→1②端数処理後有効桁の次の桁、つまり少数…

エクスプローラの縮小版表示を簡単に行う方法(VB.NET,C#)

WinFormでエクスプローラの縮小版表示を行う一番簡単な方法は、WebBrowserコントロールを利用します。FormにWebBrowserコントロールを貼りつけ、以下のようにイベントを記述します。 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.Even…

SQLSERVERから自分のIPアドレスを取得する方法。

SQLSERVER に接続している自分のIPアドレス(クライアント側)を取得する方法。SQLSERVERで自分のIPアドレスを取得するには、 動的管理ビュー(dm_exec_connections)を利用します。 select client_net_address from sys.dm_exec_connections where session_…

ユーザーインターフェイスについての考察1

一般的に明細部分を見やすく表示する為には、背景色を1行ごとに交互に変えると 良いといわれていますが、これは本当でしょうか?まず、背景色が一色の場合、確かに★が何行目にあるか瞬時にはわかりませんね。 では、★が行目か瞬時に判別できますね。 ・・・…

実行ファイルにリソースとしてソースファイルを圧縮格納する方法

ソフトウェアの開発・保守にて、プログラムソースの管理をどんなにしっかり行っていても、実行モジュールに対応したソースがどれだかわからない。あるいはソースコードが行方不明になるという事故が発生することがあります。今回は VisualStudio2005、2008 …

SQLSERVER 行ロックの真実

SQL SERVER2005にて行ロックの実験をしてみたいと思います。下記のSQLをManagementStudioより実行します。 まずはテーブルを作成してデータをセットします。 CREATE TABLE IKENIE(A INT) INSERT INTO IKENIE SELECT 1 INSERT INTO IKENIE SELECT 2 INSERT IN…