日記

docomoのメールアドレスで連続ドットOKの罪

1 Mins read

ウララ~と仕事に没頭していたら・・・・

Aクンから「俺の携帯メールが会社に届かないっス?」と

管理人「はて?スパムメールが多いからセキュリティーレベルを上げたせいかな?」と
忙しい仕事を切り上げてメールサーバーをホジホジ・・・・

う~ん?影響しているところはないような・・・

管理人の携帯でも試してみよう・・・・・届く!

Aくんのメアドはどうなってるの?・・・・・ゴラァァ連続ドットが入っているやんけ!!

そう、題名の通り、ドコモくんがとんでもない仕様でメアドを生成させたために起きた問題どす。
そもそも@の左側に連続ドットや@直前のドットなど使用できない文字などがRFCで規定されているにも
かかわらず、ドコモの開発者は「時間無いから俺が規定だよOK」ってな具合に使用可能にしてしまったらしい。

これが後にドコモダケ暴走事件として有名になる事件です・・・・・・うそっす:roll:

メールサーバーに寄ってはこの影響で送受信がはじかれます。
ネットと携帯の融合が猛スピードで行われている中で、今後もこの問題は喰らい続けるでしょうね(汗)

・qmail、Sendmailは設定により影響なし
・ExchangeServer、Xmailは送受信ではじかれる

Aクンにはもちろん「メアド変更しなさい!」:evil:

関連リンク

auもdocomoに追随?

Microsoftもお手上げ?

Read more
.NETASP.NET日記

WebシステムではDataAdapterを使うな!

1 Mins read

過激な題名から入りましたが、VB.NETのお話です。

さてVB6などから.NETになってDatabaseへのアクセスするのに以下のようなクラスを使うようになりました。

・DataReader
・DataAdapter

終わり・・・

かなりハショッてます(汗)

要するにConnectionとCommand系クラスはあまり変わらないのですが、
Recordsetだけは大きく2つのクラスに分解されています。

Selectデータの取得方法が前者に上げたDataReaderとDataAdapterになったのですが、
それぞれ使用する場面が分かれます。

1.DataReaderは前方向カーソルのデータ取得になっていて取得はグルグルLoop処理が必要になります。

「メリット」
View情報がDBサーバー上にあり、クライアントサイドにはReadしない限り保持されないので動作が軽い。

「デメリット」
データは上位順にしか取得出来ないのでApp側でコントロール表示などは行ってあげる必要がある。
Paging処理など動的にPageクラスにセットしてあげる必要があるので簡単に出来ない。

2.DataAdapterはDataSetクラスにヒットしたデータを一発でいれる

「メリット」
DataSetを使用して動作するコントロールが多数あるので開発が楽。
必要なデータを簡単にDataSetを通じてClose後でも使用できる。
Paging処理もクラス任せで楽。
また、直感的に修正して更新も出来るなど使い勝手が良い部分も

「デメリット」
ヒットしたDataを全部DataSetに入れるのでクライアント側のメモリ領域を使用してしまい処理が遅い。
(要するにグルグルLoopをALLしてるってこと)

以上になります。

一見すると「DataAdapterの方がいいところいっぱいじゃん!?」と思いでしょう???

ここが落とし穴なんだがや!
楽だと思ってDataAdapterでFillばっかり使っているとやられてしまうで(誰だお前は(苦笑))

もちろん使うタイミングの問題なのですが、Webでもクラサバでも主要なデータを任意のキーで
検索する機能があるシステムが多くなってきました。

この時にDataAdapterを使用して大量データの表示、Paging処理など行うとヒットしたデータを
DataSetに入れてしまう関係でとんでもなく遅い処理になってしまいます!

DataGridなどで大量データを扱う場合に表示が遅いのはこのためドス:oops:

★具体例だと、100万件のデータを任意で検索し10件ごとPagingし3Page目を表示する時、
仮に100万件がヒットしたとして、ヒットデータをDataSet(メモリ)に入れる、
そこから30件目見つけて10件分を表示することになっているので、なんで?って思えるぐらい遅いです。

DataReader使ってLoopで30件目から10件分、取ってきたほうがよっぽど早い!
管理人のテストでは最後の10件を表示する時もこちらのほうが数倍早かった:roll:

余談だけど、Paging処理はDBによりSQLに任せる方法もあります。
例えばMySQLやPostgresなどはLimit関数、SQLServerやOracleはRowIDを使用するなど
しかし、DBによってはPaging処理が整っていなかったりするのでApp側の違いを覚えておくのも
損はないでしょう♪

作成段階では少量のデータで問題なく動いても、普通はテスト段階、あるいは本番稼動後、
じわじわとボディーブローのように遅くなってきます。

昨今はWebはもちろん企業内のシステムも膨大な検索が出来るシステムになってきました。
作ってからの手直しはデグレが怖くて直せなくなりますので作る前からの情報をお勧めします。

最後に適材適所が必要で、DataSetも使う場面によっては楽チンである:???:

管理人も2003の時にテスト段階でこの問題に気づきPaging処理などを直したことがあるので復習兼ねて覚書:razz:

おまけ「DataSetの新機能」非同期って言葉がミソ♪

Read more
VMwareパソコンのこと日記

VMwareでゲストOSをコピーした後の処理

1 Mins read

VMwareでゲストOSを複製して使用するときWindows系OSの場合SIDの変更が必要になりますので
これを行わないとドメイン管理などで名前のバッティングが起こりIPやコンピュータ名の取得ができなくなります。
注意!この他にもhoge.vmx内の「uuid.bios」なども変更が必要!

VMwareから拝借↓方法は

質問:
Windows 2000/XP/2003のマシンを複製し、同一のネットワーク上で同時に利用する際の問題点を教えてください。
 
回答:
WindowsNT系OSでは、コンピュータ名とは別に、内部には「SID(Security ID)」と呼ばれる固有の数値情報を持っており、ドメインに参加している場合などにこのSIDを使ってコンピュータを識別しています。そのため、コンピュータ名の変更を行ってもSIDが同じ場合、SIDの重複が発生します。
 
SIDの重複を解消する方法といたしまして、Windowsに用意されております「sysprep」ツールを利用して頂く必要があります。
 
具体的な作業方法は以下の通りです。
 
Windows XP及び2003の場合
1.ゲストOSにAdministratorでログオンします。
2.Cドライブ内にsysprepフォルダを作成し、OSのインストールCDのDEPLOY.CAB内を全てコピーします。
 ※sysprepはSUPPORT\TOOLS\DEPLOY.CAB内に存在します。
3.手順2で作成したsysprepフォルダ内のsysprep.exeをクリックします。
4.「システム準備ツール」が表示されますので、画面内に表示されております。 「再シール」をクリックします。(再シールを選択して頂きますと、ゲストOSは自動的にシャットダウンされます。)
5.再度ゲストOSを起動して頂きますと、OSインストーラーのユーザ名及び、会社名の入力を行う画面より、開始されます。このタイミングでSIDが変更されます。
6.以降は通常のインストーラーと同様の作業を実施します。
7.管理情報が重複しなくなることをご確認願います。
 ※省力化のため、sysprepの「再シール」を実施した直後のデータを複製することをおすすめします。
 
詳細に関しましては、以下のマイクロソフトの技術情報をご参照願います。
http://support.microsoft.com/default.aspx?scid=kb;ja;299840
 
Windows 2000の場合
1.ゲストOSにAdministratorでログオンします。
2.Cドライブ内にsysprepフォルダを作成し、OSのインストールCDのDEPLOY.CAB内を全てコピーします。
 ※sysprepはSUPPORT\TOOLS\DEPLOY.CAB内に存在します。
3.手順2で作成したsysprepフォルダ内のsysprep.exeをクリックします。
4.以下のメッセージが表示されたPOPが表示されますので、「OK」を選択します。
 「このアプリケーションを実行するとシステムのいくつかのセキュリティパラメータが変更される可能性があります。
 このインストールを複製のために準備している場合以外は、[キャンセル]をクリックしてください。
 このアプリケーションの実行後、コンピュータは自動的にシャットダウンします。」
5.再度ゲストOSを起動して頂きますと、OSインストーラーのユーザ名及び、会社名の入力を行う画面より、開始されます。このタイミングでSIDが変更されます。
6.以降は通常のインストーラーと同様の作業を実施します。
7.管理情報が重複しなくなることをご確認願います。
 ※省力化のため、sysprepの「再シール」を実施した直後のデータを複製することをおすすめします。

行けたかな?

Read more
VBVistaパソコンのこと日記

VistaにVB6をInstall

1 Mins read

なにを今更、VB6と思いますが(汗)
ビジネスの世界では現役?です:evil:

VistaへVB6をインストールする際に気をつけることは

・CDの自動起動でセットアップを始めない!

・エクスプローラからsetup.exeを右クリックし管理者権限で実行でセットアップ開始
(UACやログイン権限にもよるが・・・念のため)

・再インストールの場合、追加と削除にてアンインストールしても以前の残骸が残っている可能性がある、これがオイタをする可能性があるので旧インストール先のフォルダを調べて完全消去!(C:\Program Files\Microsoft Visual Studio)など

・そのあとSP6aをインストール

So Good!:razz:

Read more
Vistaパソコンのこと日記

Vistaのユーザーアクセス制御 UAC

1 Mins read

Vistaに搭載されたUACですが、Admin権限なのに一々MessageBoxの確認が出てきてめんどくさい:evil:

「開発者の俺にどうしろと言うわけ?」ってことVista君に言っても分からないので
「ユーザーアカウント制御」とコントロールパネル(非クラシック表示)で検索すると
「ユーザーアカウント制御の有効化または無効化」が出てくるので、こいつをポチッとやると止まる・・・

まいったかぁ:roll:

でも最近の悪いソフトみてると一般ユーザーにはこの機能があったほうが良い様な気がする:razz:

Read more