2009年7月9日木曜日

JavaScript onChangeとonkeypress及びonBlurの挙動関連

HTMLでEnterにてTAB移動する場合のイベントの使用方法で

onChange

onkeypress

onBlur

の組み合わせで行っているがこの組み合わせがうまく作動しない例としてメモ

まず onkeypress でTAB移動を制御、移動先で入力をすぐに出来るようにする為にselectプロパティで文字を選択状態にする。

onChangeにて入力変更部分を再表示等で制御
これはメッセージによる処理分岐を必要としない処理限定

上記以外の場合でメッセージによりキャンセルが必要な場合にonBlurを使用する。

そこでTAB移動先のテキストBOXにonBlurイベントによる変更があった場合にselectプロパティが無効になる場合がある。

その場合はonkeypressコマンドでの変更を余儀なくされる。

単純なタブ移動であれば、いろいろなサイトで紹介があるのでそれを用いるのがソースも少なく済みいいのだが、少し複雑な場合はそうはいかない。

ちなみに少し拡張で事が足りるのならonkeypressでとる引数を次のようにコントロール名称を抜く例をメモ

onkeypress=nextFocus(text1)
onkeypress=nextFocus(text2)




function(nextObj){
if(event.keyCode==13){
  if(nextObj.name!="text2"){
   nextObj.focus();
   nextObj.select();
   window.event.returnValue = false;
  }
}
}

これはテキスト2以外はEnterで飛ぶことになる。

この組み合わせで上記問題を回避することが可能(それ以外の方法はあると思うのだが・・・)

Javascript onChange 使用時のキャンセル処理で2回が効かない

onChange で変更された時に、値をチェックする場合に

return false

でキャンセルで処理を抜けるというプログラムを作成した場合
一度目は期待通りの処理がされるが連続して同じ処理をさせようと
するとうまく動かない場合がある。

どうしてなのか分からず探してみたのだがこういう情報を見つけた。

http://support.microsoft.com/kb/216435/ja


IEでの作動だったのだが、どうやらonChange ではフォームの
再読み込みがもしくはリセットされなければキャンセルされたままだという。

そこでキャンセル処理を含ませる場合のイベントは

onBlur

で行う。

onChangeとonBlurの挙動はネットでいやというほど出て来るので
割愛しますが、用途を踏まえて使用したほうが良い。

ちなみにonBlurでもonChangeに相当する動作は出来ます。

2009年7月6日月曜日

Google Chart APIで日本語を使う

Google Chart APIは無料で簡単でしかもなかなかリッチなインターフェイスを実現出来るすぐれものだが日本語を使えるとは説明がない。

が、しかし、方法はあったのだ。

UTF8変換すればよいだけとのことだ。

そこで関数をコピペ用として後で使用する為にメモをしておくとする。
VBA,VBScript,aspで使用可能ですが、これを使用しての不都合が発生した場合、当方で責任は持ちません。

引数名 ConveLen
引数型  String
戻り値 全角及び半角カナ、記号の場合にUTF8変換文字
    英数字はそのまま
型   string
サンプル ConveLen("テスト")

Function SJIStoUTF8(strSJIS)
strUNICODE = ASCW(strSJIS)
 strWORK2 = HEX16toSTR2(HEX(strUNICODE))
strUTF8CODE = "1110" & Mid(strWORK2, 1, 4)
 strUTF8CODE = strUTF8CODE & "10" & Mid(strWORK2, 5, 6)
 strUTF8CODE = strUTF8CODE & "10" & Mid(strWORK2, 11, 6)
strWORK16 = STR2toHEX16(strUTF8CODE)
strRET = ""
 strRET = strRET & "%" & Mid(strWORK16, 1, 2)
 strRET = strRET & "%" & Mid(strWORK16, 3, 2)
 strRET = strRET & "%" & Mid(strWORK16, 5, 2)
SJIStoUTF8 = strRET
End Function

Function HEX16toSTR2(strHEX)
Dim n
 Dim i
 Dim n8421
 Dim str2STR
Dim nCHK
str2STR = ""
For n = 1 To Len(strHEX)
  On Error Resume Next
  nCHK = 0 '0で初期化
  nCHK = CInt("&h" & Mid(strHEX, n, 1))
  On Error Goto 0
n8421 = 8
  For i = 1 To 4
   If (nCHK And n8421) = 0 Then
    str2STR = str2STR & "0"
   Else
    str2STR = str2STR & "1"
   End If
   n8421 = n8421 / 2
  Next
 Next
HEX16toSTR2 = str2STR
End Function

Function STR2toHEX16(str2)
Dim strHEX
 Dim n
 Dim i
 Dim n8421
 Dim nBYTE
n = Len(str2) Mod 4
 If n <> 0 Then
  str2 = String(4 - n, "0") & str2
 End If
strHEX = ""
For n = 1 To Len(str2) Step 4
  n8421 = 8
  nBYTE = 0
  For i = 0 To 3
   If Mid(str2, n + i, 1) = "1" Then
    nBYTE = nBYTE + n8421
   End If n8421 = n8421 / 2
  Next
  strHEX = strHEX & Hex(nBYTE)
 Next
STR2toHEX16 = strHEX
End Function

Function ConveLen(ByVal a)
Dim i,outLen
strHan = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ゙゚ー"
For i = 0 To Len(a) - 1
 k = Mid(a, i + 1, 1) 'If InStr(strHan, Mid(k, i, 1)) <> 0 Then '半角カナ →UTF8
 If InStr(strHan, k) <> 0 Then
  outLen = outLen & SJIStoUTF8(k)
 else
  If (Asc(k) And &HFF00) = 0 Then
   outLen = outLen & k
  Else
   outLen = outLen & SJIStoUTF8(k)
  End If
 End If
Next
ConveLen = outLen
End Function

2009年7月1日水曜日

ODBC接続がやけに遅い場合

ODBC接続を設定していると、やけに動きの遅い端末がある場合がたまにある。

特に新しいデータソースの名前入力の画面から次への画面に移動するとき
すぐに次の画面に移動しないことがある場合がある。

それとテスト時の成功しましたの画面もそうである。

なぜその端末だけが遅いのかがまったく分からず途方のくれていた・・・

この時点で接続反応が遅いと、それを使用するアプリも当然遅くなる。
正確にはデータベースに接続する場合の処理が遅い。

そこで気が付いてその端末に仮想化でOSを構築していたのでそのODBCを
試してみたが、明らかに仮想化のODBC設定が早い。

それでMDACやSQLServer ODBC バージョンを見てみてもまったく同じ・・・

何がなんだか分からなくなってきて、とりあえずひらめいたことはサーバー名をIPからドメインに変更してみた。

それだけではダメなので LMhostsにドメイン登録を合わせて行ったところ・・・


なんと今までの動きは何だったの?と思いたくなるくらいのレスポンスになった。

それが普通なのだが・・・


それにしても本当の解決にはならないが、まずはよしとしておこう。

2009年6月22日月曜日

Virtual Serverを快適に使う場合

Virtual Server すなわち仮想化として使用する場合に、PCのスペックがどれほどのものが要求されるか分からなかった。

そこでこの度PCのスペックが上がる機会があったので比較をしてみた。

過去のスペックが Cour 2 Duo のE4300だった。普通に使うには十分であるが、仮想化を動かすとなると、なんともはがゆい緩慢な動きでどうあがいてもそれ以上の動きにはいたらなかった。

なのであまり使用はしていなかったが、
同じCore 2 Duo のE7400に変えてからは様子が違う。

普通に使用する感覚で操作が可能だ。

これからPCを購入すり予定なら、E7400以上が推奨としたい。
そうなるとCour i7は安泰と思うが・・・
仮想化でPCを2台以上でと考えならそうすべきだと思う。

そうそうメモリは4Gが条件

2009年6月12日金曜日

メール送信だけが出来ない 特別変

ある日の夕方、一本の電話が入った。
「メール送信が出来ないんだけど」
よくある話だな・・・


内容を見てみる・・・


だがいたってOutlook Expressは健康に見える。


送信するメールは巨大でもなんでもない。


Outlook Expressの各ファイルサイズもそんなに大きくないし(2Gで壊れる)・・・


表示用のメール登録名称にも問題ない(記号や特に;などが名称に使われている場合は送信エラーになることがある)



そのメールアカウントは過去に何度も送信するのに使用されている・・・



はて・・・


メールのエラーは送信前の接続時にエラーが起きている・・・



ポートエラー?・・・



なんだかよく解らない・・・




その日は帰った。明日には普通に使えるだろう・・・




・・・次の日


「やっぱダメだんだけど」


本当?・・・



本腰入れて調べてみるがさっぱりわからん。


ポートバウンド587の設定も施してみるが、あえなく撃沈・・・


うそだろ・・・


しばらく カチャコチャ・・・いじり倒してみたりして




こうなったら、
Windowsファイヤーウオールを解除!!
ウイルスセキュリティソフトをすべて停止!!
登録済みメールアカウントの全てを削除

ん~裸同然・・・


こんどは・・・うりゃっ!!




・・

・・・ 本気らしい・・・ 



そのうち他の営業所から

「メールの送信が出来ないのだけれども・・・」



えっ!・・・・えっ!~



もっ・・・もしかして他の営業所は?ものすごくやな予感が・・・




リモート、リモート・・・空いてる端末、空いてる端末・・・あったあった・・・



やだな~・・・すごくいやだな~






ふ~・・・・・・・・・・・







とりあえず・・・









ここも・・・・やられてる・・・








メールサーバー管理のベンダーに連絡(有名プロバイダやベンダーとかではない)



助けて!!・・・



「え~・・・ん~・・・・」


「こちらで問題のアカウントを作成してテストしてみたのですがいったって普通に送受信出来ます。通信ログにはエラー情報等の問題は発見できませんね」


でも他の営業所はエラーになるところとならないところがあるし・・・


「初めての話で・・・」



こっちだって初めてだよ!!


ポート監視とかのアプリで確認とるようなことって出来ないの?


「え~・・・今ひとつ決めてみたいのはなくて・・・」





いったいどうすりゃいいんだよ(内心)



「O○n様でメールサーバーの故障情報があったらしいです」




メールサーバーはそちらにあるだろ



「ルータ再起動してみるとかあとダメだったらプロバイダーに連絡とか・・・」




たしかに言うとおりメールサーバーまでの間に通信が遮断されているし・・・




営業所に


ルーター再起動して!!


は~い





あ!

あ!!

送信出来た!!!






他の営業所


ルータ再起動して


わかりました。

 

・・

 

・・・

 

「シ~ン・・」

 

 

送信出来ました!!」

うわっ!!・・・ほっ、ほんと・・・(汗)

 

そこでルータ再起動にコツがあり、電源を落としたあとすぐに立ち上げずに10分くらい待機しておくと良いらしい。

プロバイダーの接続情報がクリアされ再接続時に情報を再構築する為である。

(後で判明したのだが、10分くらいの電源Offでは復旧せず、半日放置して復旧したということもある)

ポートバウンドに気をとられていたが、プロバイダーに問題がありルーターを再起動ないと接続出来ないとは考えてもいなかった。

しかしこれ以上のことが起こったら問題を解決できるのであろうか・・・

やれやれ・・・

2009年6月8日月曜日

ノーチュー

ウオール街でかの有名なノーチュー・・・
あのサブプライム破綻前、ウオール街ではゴミ同然の扱いをしていた株を安くなったといい買い続けて2009年の8月の事態に陥った。
それだものゴミ箱といわれても仕方がない。

さらに農林中金は天下りポストの上野氏が退職。政府からの資金増強の前に退職しているから退職金をまともに貰っている。1兆9000億もの資本運増強を行い自己資本率10%は確保したとはいいつつも、09年3月までには有価証券の含み損も2兆929億円(08年9月末は約1兆5700億円)に拡大した。これはもう通常なら破綻だと思う。
あげくには農水省は小林氏の待遇アップを期待し、所管官庁との関係悪化を避けたい農林中金は、総研でのポストを格上げして折り合いを付けるなどと社長より高い報酬をかんがえているそうだ。天下りポストの枠までも増やそうと考えているらしい。

この話調べれば調べるほど頭にくる。なぜマスコミはここにもっと話を突っ込まないのだろう。これこそもっと叩くベキだと思わないのか!!