2011年12月6日火曜日

IISとASPのバージョンを取得


<html>
<body>
<%
Response.Write "IIS のバージョンは "
Response.Write Request.ServerVariables( "SERVER_SOFTWARE" )
Response.Write " です。<BR>" & vbCrlf
Response.Write "ASP(スクリプトエンジン)のバージョンは "
Response.Write ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion
Response.Write " ( " & ScriptEngineBuildVersion & " ) です。" & vbCrlf
%>
</body>
</html>

ストアド パラメータの属性取得


<%@ LANGUAGE = VBScript %>
   <html>
   <head><title>Stored Proc Example</title>
   </head>
   <body>
   <%
       'call DbOpen()
       '##### コネクションオブジェクトの生成 #####
   Set MyRDB = Server.CreateObject("ADODB.Connection")

        '##### レコードセットオブジェクトの生成 #####
   Set MyREC = Server.CreateObject("ADODB.Recordset")
        Set MyCMD = Server.CreateObject("ADODB.Command")


   MyRDB.ConnectionString = "Provider=SQLOLEDB; Data Source='xxxxxx'; Initial Catalog=meiseidb;User ID=sa;Pwd=xxxxxxxx;"


   MyRDB.Open


   set MyCMD.ActiveConnection = MyRDB
   ' Specify the name of the stored procedure you wish to call
    MyCMD.CommandText = "QI_e_apply_check"
    MyCMD.CommandType = 4
    ' Query the server for what the parameters are
    MyCMD.Parameters.Refresh
   %>
   <table border="1">
   <tr>
      <td><b>PARAMETER NAME</b></td>
      <td><b>DATA-TYPE</b></td>
      <td><b>DIRECTION</b></td>
      <td><b>DATA-SIZE</b></td>
   </tr>
   <% For Each param In MyCMD.Parameters %>
   <tr>
      <td><%= param.name %></td>
      <td><%= param.type %></td>
      <td><%= param.direction %></td>
      <td><%= param.size %></td>
   </tr>
   <%
    Next
'call b_DbClose
    MyRDB.close
    set MyRDB = Nothing
    set MyREC=Nothing
    Set MyCMD=nothing

   %>
   </table>
   </body>
   </html>

2011年12月1日木曜日

ハードウェアの安全な取り外しアイコン再表示

ハードウェアの安全な取り外しアイコンが消えてしまったら

  1. スタートメニュー
  2. ファイル名を指定して実行
  3. 名前欄に「RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll」と入力して【OK】

WEBサイト採点

Google Page Speed Onlineを使ってサイトのスコア(パフォーマンス)を確認し、改善方法を確認する
https://developers.google.com/pagespeed/

2011年11月23日水曜日

IAサーバ直販サイトを利用した見積りのポイント

http://www.atmarkit.co.jp/fsys/kaisetsu/043server_bto/server_bto.html から抜粋

  • 用途を決めよう例えば、iDCにホスティングする会社紹介用のWebサーバという目的ならば、必然的にラックマウント型サーバから選択することになる。さらに想定されるアクセス数やコンテンツの内容から、求められるプロセッサ性能とディスク容量が決まる。例えば、1日1万アクセス程度の静的なWebページならば、経験的にCeleron-2GHzのシングルプロセッサ構成で十分対応できる。
    負荷テスト・ツールなどを利用して事前に検証しておく。IIS(Internet Information Services)向けにはマイクロソフトからWebサーバの負荷テスト・ツールが提供されている(マイクロソフト「サポート技術情報:Webサーバーの負荷テスト ツール」)。こうしたツールを利用すれば、想定するユーザー数のアクセスをシミュレートし、どの程度のプロセッサ能力が必要なのか判断することができる。
    デュアルプロセッサ構成を選択するのならば、プロセッサは最初から2個搭載することを前提に性能を検討することだ。サーバの性能が足りなくなったころには、ディスク容量なども足りなくなり、サーバを置き換えた方が安上がりという状態になる。つまり、性能の余力(マージン)としてデュアルプロセッサ構成のサーバを導入しても、その余力が使われることは少ない。むしろ、シングルプロセッサ構成で済むにもかかわらず、システム価格が高いデュアルプロセッサ構成を導入するのは、結果として無駄な出費に終わる可能性が高いわけだ。
  • 構成を変更しながら見積を作成する
    ・プロセッサーを選択する。
  • デュアルプロセッサ構成が可能なサーバの場合、1つ目のプロセッサを選択し、
     同じものを2つ目のプロセッサとして追加する。必ず同じ動作クロックである必要がある。

    ・メモリ容量を決める
     多少の価格差ならば必要な容量を最初から搭載して購入したい。(サーバ用メモリー) 

  • ハードディスクのRAID構成を決める
    RAID構成を選択した場合は、RAIDコントローラも選択する。オンボードでRAIDコントローラを搭載する機種が増えているが、選択するRAID構成によってはオプションのRAIDコントローラが必要になる場合がある。オプションのRAIDコントローラは、オンボードのRAIDコントローラに比べてキャッシュの容量が大きかったり、バックアップ・バッテリが装備されていたりと、性能や機能が強化されている(バックアップ・バッテリ機能があると、突然の電源ダウンの際にもしばらくはオンボード・キャッシュ内のデータが失われない)。オプションのRAIDコントローラも、SCSIのチャネル数などで複数用意されている場合があるので、用途に合わせて選択する必要がある。
    RAID 1とすることで、IDEディスクでも、SCSIのRAID 5と信頼性の面で遜色がない。ディスク単体での性能や信頼性の面ではSCSIディスクの方が高い傾向にあるが、価格もその分高い。ディスクの故障時に30分程度の停止が可能な社内のファイル・サーバ用途ならば、安価なIDE(シリアルATA)ディスクを検討してもいいだろう。
  • そのほかのポイント
    デュアルプロセッサ構成以上のサーバでは、冗長化電源に対応しているものが多い。冗長化電源は2つの電源ユニットを搭載し、1つの電源ユニットが故障した場合でも、もう1つの電源ユニットでサーバの稼働が継続できるというものだ。故障した電源ユニットは、稼働中でも交換可能になっているので、サーバのダウンタイムを大幅に減らすことが可能になる。
    保守サポートは、一種の保険なので、用途や許容できるダウンタイムによって、ベンダが用意したメニューから選択すればよい。

2011年11月11日金曜日

献立に困ったら

入力チェック、エラーはまとめて表示

<script src="formCheck.js" type="text/javascript"></script>
<script type="text/javascript">
 <!--
    fld = new Array();
    fld['zip'] = "required";
    fld['pref'] = "required";
    fld['addr'] = "required";
    fld['addr2'] = "required";
    fld['j_sei'] = "required";
    fld['j_mei'] = "required";
    fld['j_seikana'] = "required";
    fld['j_meikana'] = "required";
    fld['p_sei'] = "required";
    fld['p_mei'] = "required";
    fld['school'] = "required";
    fld['gakunen'] = "required";

    fld['mail'] = "mail";
    fld['tel'] = "tel";
    fld['mobile'] = "mobile";
    reqcolor = "#ffe5f2";
    encolor = "#ffffff";
 -->
</script>

●bodyタグ内

<form id="sports" method="post" action="xxxxxx.asp" onsubmit="return FormCheck(fld,reqcolor,encolor)">
<table>
<tr>
<td>ご自宅の郵便番号</td>
<td colspan="2"><input type="text" name="zip" onkeyup="AjaxZip2.zip2addr(this,'pref','addr',null,'addr');" class="imeoff" title="郵便番号を入力してください" />&nbsp;半角、ハイフン不要</td>
</tr>
<tr>
<td rowspan="3" class="tate">ご自宅の住所</td>
<td>都道府県</td>
<td><input type="text" name="pref" size="8" title="都道府県を入力してください" /></td>
</tr>
<tr>
<td>市区町村</td>
<td><input type="text" name="addr" size="40" title="市区町村を入力してください" /></td>
</tr>
<tr>
<td>他住所</td>
<td><input type="text" name="addr2" size="60" title="他住所を入力してください" /></td>
</tr>
<tr>
<td class="tate">受験生のお名前</td>
<td>姓<br />姓(フリガナ)</td>
<td><input type="text" name="j_sei" size="20" class="imeon" title="姓を入力してください" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名<span class="white">(フリガナ)</span>&nbsp;<input type="text" name="j_mei" size="20" class="imeon" title="名を入力してください" /><br />
<input type="text" name="j_seikana" size="20" class="imeon" title="姓(カナ)を入力してください" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名(フリガナ)&nbsp;<input type="text" name="j_meikana" size="20" class="imeon" title="名(カナ)を入力してください" /></td>
</tr>
<tr>
<td>保護者のお名前</td>
<td>姓</td>
<td><input type="text" name="p_sei" size="20" class="imeon" title="保護者姓を入力してください" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名<span class="white">(フリガナ)</span>&nbsp;<input type="text" name="p_mei" size="20" class="imeon" title="保護者名を入力してください" /></td>
</tr>
<tr>
<td>電話番号</td>
<td colspan="2"><input type="text" name="tel" size="18" class="imeoff" title="電話番号を入力してください" />&nbsp;半角、例:06-xxxx-xxxx</td>
</tr>
<tr>
<td>携帯番号</td>
<td colspan="2"><input type="text" name="mobile" size="18" class="imeoff" title="携帯番号を入力してください" />&nbsp;半角、例:090-xxxx-xxxx</td>
</tr>
<tr>
<td class="tate">E-Mail アドレス</td>
<td colspan="2"><input type="text" name="mail" size="60" class="imeoff" title="PCメールアドレスを入力してください" /><br />
<span class="msg">半角、パソコンでご利用のアドレスをご記入ください。</span>
</td>
</tr>
<tr>
<td>在学校名</td>
<td colspan="2"><input type="text" name="school" size="60" title="在学校名を入力してください" /></td>
</tr>

<tr>
<td>学年</td>
<td><input type="text" name="gakunen" size="2" class="imeoff" title="学年を入力してください" />&nbsp;年</td>
<td>&nbsp;</td>
</tr>

</table>
<p class="waku1">
<input type="button" value="リセット" onclick="location.reload()" />
<input type="submit" name="kakunin" value="登録内容確認" /></p>
</form>

●参照するformCheck.jsの構文

//呼び出し用
function FormCheck(fld,reqcolor,encolor){
rcolor = reqcolor;
ecolor = encolor;
var msg = "";
for (key in fld){
if((fld[key] == "radio") || (fld[key] == "check_many")){
var tes = document.getElementsByName(key);
msg += Check(tes,key,fld[key],rcolor,encolor);
}else{
var tes = document.getElementsByName(key).item(0);
msg += Check(tes,key,fld[key],rcolor,encolor);
}
}
//msgが空白のままだったらすべて入力されている
if(msg == ""){
return true;
}else{
alert(msg);//未入力の項目を指摘するアラートを表示
return false;
}
}

//入力チェック
function Check(elm,name,func,rcolor,encolor){
var m = "";
//var i = 0;//ループ用変数(チェックボックスやラジオボタンを使う場合)
//文字数指定用
//var ary = func.split(",");
//func = ary[0];
//min  = ary[1];
//max  = ary[2];
//type = ary[3];
switch(func){
case "required":
if(elm.value == ""){//document.form.変数.valueにするとフォームの名前を探しにいくのでエラー
m = elm.getAttribute("title") + "\n";
ChengeColor(elm,rcolor);
}else{
ChengeColor(elm,encolor);
}
break;

case "mail":
if(!elm.value.match(/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/)){//x@x.xx形式じゃなかったら matchが使えない
m = elm.getAttribute("title") + "\n";
ChengeColor(elm,rcolor);
}else{
ChengeColor(elm,ecolor);
}
break;

case "tel":
if(!elm.value.match(/[0-9]+-[0-9]+-+[0-9]+$/)){//xxx-xxx-xxx形式じゃなかったら
m = elm.getAttribute("title") + "\n";
ChengeColor(elm,rcolor);
}else{
ChengeColor(elm,ecolor);
}
break;
       case "mobile":
           if (!elm.value.match(/[0-9]+-[0-9]+-+[0-9]+$/)) {//xxx-xxx-xxx形式じゃなかったら
               m = elm.getAttribute("title") + "\n";
               ChengeColor(elm, rcolor);
           } else {
               ChengeColor(elm, ecolor);
           }
           break;

default: break;
}
return m;
}
//エラーが起こったテキストボックスの色を変える
function ChengeColor(name,color){
name.style.backgroundColor = color;
}

クリックで下欄情報表示/非表示

<script type="text/javascript">
    function entryChange1() {
        radio = document.getElementsByName('entryPlan')
        if (radio[0].checked) {
            //フォーム
            document.getElementById('firstBox').style.display = "";
            document.getElementById('secondBox').style.display = "none";
            //特典
            //document.getElementById('firstNotice').style.display = "";
        } else if (radio[1].checked) {
            //フォーム
            document.getElementById('firstBox').style.display = "none";
            document.getElementById('secondBox').style.display = "";
            //特典
            //document.getElementById('firstNotice').style.display = "none";
        }
    }
    //オンロードさせ、リロード時に選択を保持
    window.onload = entryChange1;
</script>
<body onload="entryChange1()">

<label><input type="radio" name="entryPlan" value="hoge1" onclick="entryChange1();" checked="checked" />同意しない</label> &nbsp;&nbsp;&nbsp;
<label><input type="radio" name="entryPlan" value="hoge2" onclick="entryChange1();" />同意する</label><br />

<!-- 表示非表示切り替え -->
<p id="firstBox">
[同意する]をクリックすると申込み用の画面が下欄に表示されます。
</p>
<p>
ご記入いただいた個人情報は、個人情報に関する法律に基づき、取扱い責任者が厳重に管理いたします。<br />
また、その情報は、○○業務目的にのみ使用いたします。
</p>

<div id="secondBox">
<h5>【同意する】をクリックしたときに表示される内容</h5>
</div>