Kanasansoft Web Lab.
type: channel
description: 私的Web研究所
language: ja
date: 2005-10-15T03:13:08+09:00
generator agent: http://www.movabletype.org/
items: Google Map API用秀丸強調表示定義ファイル Ver0.9
items: 特異なfor文の記述
items: Ajax(Asynchronous JavaScript + XML)
items: 大日本タイポ組合の続き
items: 大日本タイポ組合
items: Bookmarkletの登録と実行方法
items: JavaScriptを勉強する上でお薦めの書籍
items: フォームをクリアするBookmarklet Ver1.0.1
items: フォームをクリアするBookmarklet Ver1.0.0
items: MomableType テンプレート for Kanasansoft Web Lab.[2005/07/19版]
items: Bookmarkletを作成するツールのバージョンアップ
items: 入力チェックの実行場所
items: 選択中のコードをコメントアウトする秀丸マクロ Ver2.6
items: 選択中のコードをコメントアウトする秀丸マクロ Ver2.5 先行公開
items: テンプレート[2005/06/28版]

Google Map API用秀丸強調表示定義ファイル Ver0.9
type: item
description: Google Map API用秀丸強調表示定義ファイル Ver0.9作成しました。 Google Map APIを強調表示します。 秀丸標準の「カラー表示にするモード」の「HTML/XML」と、「HTML/XML」の「プロパティ」の「ASP(JavaScript)」を併用して下さい。 秀丸のVer5.00以降で採用された新しい強調表示を使用しています。 Google Map APIのメソッドやプロパティの一部に、一般的によく使用される名称が使われています。 この為、意図しない部分も強調されてしまうので、バージョンナンバーを0.9にとどめました。 //================================================================================ // Name : Google Map API用秀丸強調表示定義ファイル Ver0.9 // In : [none] // Out : [none] // Note : Google Map APIを強調表示する // : 秀丸標準の「カラー表示にするモード」の「HTML/XML」と // : 「HTML/XML」の「プロパティ」の「ASP(JavaScript)」を併用して下さい // : 秀丸のVer5.00以降で採用された新しい強調表示を使用しています //-------------------------------------------------------------------------------- // Version : Ver0.9 | 2005/10/15 | 新規作成 //-------------------------------------------------------------------------------- // Copyright : 2005 Kanasansoft // URL : www.kanasansoft.com //================================================================================ //======================================== //Constants //======================================== //---------------------------------------- //Map Types //---------------------------------------- 385,G_MAP_TYPE 385,G_SATELLITE_TYPE //======================================== //GMap //======================================== //---------------------------------------- //Constructor //---------------------------------------- 195,GMap //---------------------------------------- //Methods //---------------------------------------- //Configuration 131,.enableDragging 131,.disableDragging 131,.draggingEnabled 131,.enableInfoWindow 131,.disableInfoWindow 131,.infoWindowEnabled //Controls 131,.addControl 131,.removeControl //State 131,.getCenterLatLng 131,.getBoundsLatLng 131,.getSpanLatLng 131,.getZoomLevel 131,.centerAtLatLng 131,.recenterOrPanToLatLng 131,.zoomTo 131,.centerAndZoom 131,.getMapTypes 131,.getCurrentMapType 131,.setMapType //Overlays 131,.addOverlay 131,.removeOverlay 131,.clearOverlays //Info Window 131,.openInfoWindow 131,.openInfoWin…
subject: Google
creator: Kanasansoft
date: 2005-10-15T03:13:08+09:00

特異なfor文の記述
type: item
description: for文は次の様に定義されていると考えられがちです。 一般的なfor文に対する認識 for([カウンタの開始値(初期化)];[カウンタの終了値];[カウンタの増減値]){ [実行文] } ここで一旦VBScriptの記述を見てみましょう。 VBScriptのfor文(Step以降は省略可。省略時は[Step 1]と見なされる。) For [カウンタの開始値(初期化)] To [カウンタの終了値] Step [カウンタの増減値] [実行文] Next 0から9までループする処理をそれぞれの方法で記述してみます。 0から9までループ(JavaScript) for(i=0;i<10;i++){ [実行文] } 0から9までループ(VBScript) For i=0 To 9 [実行文] Next JavaScriptはなぜ変数[i]を複数回記述しなければならないのでしょう。 次の様に記述させてもよさそうに思えます。 JavaScript似の仮想言語によるfor文 for(i=0;10;1){ //もしくは[for(i=0;9;1){] [実行文] } 実はfor文の定義は次のようになっています。 JavaScriptのfor文 for([ループ初回に実行される処理];[ループを抜ける為の条件(真偽値)];[ループ2回目以降に実行される処理]){ [実行文] } 処理を詳細に追ってみます。 for文の処理を詳細に追う for(i=0;i<10;i++){ alert(i.toString(10)); } i=0 [ループ初回に実行される処理] i<10 [真偽値判定] (0<10=true) alert(i.toString(10)); [実行文] ("0"を表示) i++ [ループ2回目以降に実行される処理] (i=1) i<10 [真偽値判定] (1<10=true) alert(i.toString(10)); [実行文] ("1"を表示) i++ [ループ2回目以降に実行される処理] (i=2) i<10 [真偽値判定] (2<10=true) alert(i.toString(10)); [実行文] ("2"を表示) ・ ・ ・ i++ [ループ2回目以降に実行される処理] (i=9) i<10 [真偽値判定] (9<10=true) alert(i.toString(10)); [実行文] ("9"を表示) i++ [ループ2回目以降に実行される処理] (i=10) i<10 [真偽値判定] (10<10=false) [ループを抜ける] この様な動作になっている為、次の様な変わった記述も可能なのです。 特異なfor文の例 for(var str="";str.length<50;str+=prompt("入力して下さい。\nstr=\""+str+"\"","")){} これを一般的な記述方法に書き換えてみましょう。 一般的な記述に書き換えた例 var str=""; while(str.length<50){ str+=prompt("入力して下さい。\nstr=\""+str+"\"",""); } これらの特異なfor文は推奨しません。 一般的なPGはfor文を見ると[カウンタ付のループ]と判断します。 [カウンタ付のループ]の定義部分で文字列の操作が行なわれているとは夢にも思いません。
subject: JavaScript
creator: Kanasansoft
date: 2005-09-20T22:51:25+09:00

Ajax(Asynchronous JavaScript + XML)
type: item
description: 業務アプリケーションは新しい技術よりも安定した技術を好むから、この業界にいつ頃普及するのかわからないですけど、VBっぽい画面も好むので案外早いかもしれません。 ユーザの立場にたったWebアプリケーションの開発が加速する事を期待します。
subject: JavaScript
creator: Kanasansoft
date: 2005-09-11T21:35:33+09:00

大日本タイポ組合の続き
type: item
description: 前回、大日本タイポ組合で書きましたが、「愛」と「カナサンソフト」でうまくできたのは運が良かったからのようです。 個人名での作成をかなりの時間をかけて試してみましたがうまくいきません。 (前回のエントリーから30分程しか経っていませんが、単なるエントリー忘れです。) やっぱり、センスが違うのでしょう。 またイベントがあったとしても、東京。 さすがに印鑑一つの為に、東京には行けない。 でも、欲しい。
subject: その他
creator: Kanasansoft
date: 2005-08-07T08:19:11+09:00

大日本タイポ組合
type: item
description: まずはこちらdainippon type organization: 大日本タイポ組合のインボウを見て頂きたい。 印鑑である。 でもデザインに何か違和感が...。 何故か? 今度はこちらのdainippon type organization: 書き初めを見て頂きたい。 夢と書かれているが、同じく違和感がある。 良く、見ると...、カタカナでメッセージが書かれているのである。 何が書かれているのか、自身で見つけるのがこの芸術の醍醐味であると思うので、あえて伏せておく。 先程の印鑑も同様。 正直、この印鑑が欲しいと思ってしまった。 過去2度のイベントで、オーダーメイドの印鑑作成を行っていたそうである。 もちろん、来客者の名前等を組み込んで...。 サイト上から注文できないものかと思い探してみるが、受け付けてない模様。 余りにも悔しいので、「Kanasansoft」の語源「愛さん」の「愛」に「カナサンソフト」を組み込んでみた。 あれあれ? 「愛」の画数と「カナサンソフト」の字数が相性がいいのか、運良くうまくできてしまった。 やった!! いや違う。 うまくできたと喜ぶべきではない。 印鑑が手に入らないと悔しがるべきなのだ。
subject: その他
creator: Kanasansoft
date: 2005-08-07T07:30:09+09:00

Bookmarkletの登録と実行方法
type: item
description: Bookmarkletのリンク上でコンテキストメニューを表示します(Windowsでは右クリック、MacintoshではControlキー+クリック)。 「お気に入りに追加」もしくは「ブックマークに追加」を選択して下さい。 アラートが表示される事がありますが、そのまま追加処理を続行して下さい。 後は、Bookmarkletを実行したいページを開き、お気に入り(ブックマーク)からBookmarkletを選択するだけです。
subject: Bookmarklet
creator: Kanasansoft
date: 2005-08-04T23:51:30+09:00

JavaScriptを勉強する上でお薦めの書籍
type: item
description: JavaScriptをある程度使えるようになった人にお薦めの本、JavaScript 第3版 (Amazonへリンク)です。 文字や画像の色や位置の変更、つまり見た目の派手さ重視の書籍が多い中で、珍しくJavaScriptを体系的に学べる数少ない本です。 国内で発行されているJavaScript関連の書籍にはかなり目を通していますが、この本のレベルは抜きん出ています。 これ以上詳しく書いた日本語で読めるものを、私は知りません。
subject: JavaScript
creator: Kanasansoft
date: 2005-07-25T00:28:27+09:00

フォームをクリアするBookmarklet Ver1.0.1
type: item
description: <a href=" javascript:( function(){ var F=function(w){ try{ var m=w.document.forms ,o ,t ,p ,i ,j ,k ; for(i=0;i<m.length;i++){ o=m[i].elements; for(j=0;j<o.length;j++){ t=o[j]; switch(t.type){ case "text": case "textarea": case "hidden": case "password": t.value=""; break; case "radio": case "checkbox": t.checked=false; break; case "select-one": case "select-multiple": t.selectedIndex=-1; p=t.options; for(k=0;k<p.length;k++){ p[k].selected=false } break; } } } }catch(e){ } for(i=0;i<w.frames.length;i++){ F(w.frames[i]) } } ; F(top) } ) () " class="bookmarklet">フォームをクリアするBookmarklet Ver1.0.1 早速ですが前バージョンにバグがあったので修正します。 /* ================================================================================ Name : フォームをクリアするBookmarklet Ver1.0.1 In : [none] Out : [none] Note : 初期化ではなくクリアを行う -------------------------------------------------------------------------------- Version : Ver1.0.0 | 2005/07/23 | 新規作成 : Ver1.0.1 | 2005/07/23 | 不具合修正・ソースの整理 -------------------------------------------------------------------------------- Copyright : 2005 Kanasansoft URL : www.kanasansoft.com ================================================================================ */ javascript:( function(){ var F=function(w){ try{ var m=w.document.forms ,o ,t ,p ,i ,j ,k ; for(i=0;i<m.length;i++){ o=m[i].elements; for(j=0;j<o.length;j++){ t=o[j]; switch(t.type){ case "text": case "textarea": case "hidden": case "password": t.value=""; break; case "radio": case "checkbox": t.checked=false; break; case "select-one": case "select-multiple": t.selectedIndex=-1; p=t.options; for(k=0;k<p.length;k++){ p[k].selected=false } break; } } } }catch(e){ } for(i=0;i<w.frames.length;i++){ F(w.frames[i]) } } ; F(top) } ) ()
subject: Bookmarklet
creator: Kanasansoft
date: 2005-07-23T03:06:44+09:00

フォームをクリアするBookmarklet Ver1.0.0
type: item
description: <a href=" javascript:( function(){ var F=function(w){ try{ var t,i,j,k ,o,p ,m=w.document.forms; for(i=0;i<m.length;i++){ o=m[i].elements; for(j=0;j<o.length;j++){ t=o[j]; switch(t.type){ case "text": case "textarea": case "hidden": case "password": t.value=""; break; case "radio": case "checkbox": t.checked=false; break; case "select-one": case "select-multiple": t.selectedIndex=-1; p=t.options; for(k=0;k<p.length;k++){ p[k].selected=false } break; } } } }catch(e){ } for(i=0;i<w.frames.length;i++){ F(w.frames[i]) } } F(top); } ) () " class="bookmarklet">フォームをクリアするBookmarklet Ver1.0.0 フォームをクリアします。 初期状態にするのではありません。 テキストボックス・テキストエリア・ヒドゥン・パスワードの内容を空白に、ラジオボタン・チェックボックスを未チェック状態に、単一セレクトメニュー・複数セレクトメニューを未選択状態にします。 特にラジオボタン・単一セレクトメニューの入力チェック試験に役に立つでしょう。 「ラジオボタンの初期状態をチェック状態、単一セレクトメニューの初期状態を選択状態にすれば、入力チェックが不要」と考えている開発者が少なからずいる為、この試験は実施する価値があると思います。 /* ================================================================================ Name : フォームをクリアするBookmarklet Ver1.0.0 In : [none] Out : [none] Note : 初期化ではなくクリアを行う -------------------------------------------------------------------------------- Version : Ver1.0.0 | 2005/07/23 | 新規作成 -------------------------------------------------------------------------------- Copyright : 2005 Kanasansoft URL : www.kanasansoft.com ================================================================================ */ javascript:( function(){ var F=function(w){ try{ var t,i,j,k ,o,p ,m=w.document.forms; for(i=0;i<m.length;i++){ o=m[i].elements; for(j=0;j<o.length;j++){ t=o[j]; switch(t.type){ case "text": case "textarea": case "hidden": case "password": t.value=""; break; case "radio": case "checkbox": t.checked=false; break; case "select-one": case "select-multiple": t.selectedIndex=-1; p=t.options; for(k=0;k<p.length;k++){ p[k].selected=false } break; } } } }catch(e){ } for(i=0;i<w.frames.length;i++){ F(w.frames[i]) } } F(top); } ) ()
subject: Bookmarklet
creator: Kanasansoft
date: 2005-07-23T02:23:10+09:00

MomableType テンプレート for Kanasansoft Web Lab.[2005/07/19版]
type: item
description: Kanasansoft Web Lab.のテンプレート[2005/07/19版] 当サイト固有のデータをテンプレートモジュールにまとめました。 可搬性は確保できたと思いますが、どこかに固有のものが残っていましたらコメントに書き込んでください。
subject: MovableType
creator: Kanasansoft
date: 2005-07-19T22:20:57+09:00

Bookmarkletを作成するツールのバージョンアップ
type: item
description: Bookmarkletを作成するツール[Kanasansoft Convert Source And Bookmarklet]をバージョンアップしました。 当ブログのテンプレート変更に合わせ、変換方法を改良しました。 新バージョン[Kanasansoft Convert Source And Bookmarklet Ver1.1] 旧バージョン[Kanasansoft Convert Source And Bookmarklet Ver1.0]
subject: Bookmarklet
creator: Kanasansoft
date: 2005-07-18T11:10:33+09:00

入力チェックの実行場所
type: item
description: 技術系の雑誌や書籍を読んでいると驚くような記述を見つけることがたまにあります。 今までで一番驚いたのが「入力チェックはサーバに負担がかかるのでクライアントで全て済ましてしまえばいい。」という記述。 「サーバでのチェックは不要」と続く。 やめて下さい、無責任な主張は。 新人が本気にします。 コード内にバグやセキュリティホールを垂れ流します。 クライアントでの入力チェックはサーバ負荷の軽減には役には立ちますが、最終的にサーバ側でも入力チェックは必要です。 何故でしょうか。 クライアントの入力チェックを通さずにデータの送信が可能だからです。 クライアントの入力チェック後、データの送信過程で改竄が可能だからです。 ブラウザ上以外からもデータの送信が可能だからです。 順を追って説明します。 1.クライアントの入力チェックを通さずにデータの送信が可能 送信イベントで入力チェック後データ送信 <form name="frmMain" action="update.cgi" method="post" onsubmit="fncInput();"> <input type="text" name="txt"> <input type="submit" value="送信"> 上記コードは「ブラウザのJavaScriptを無効」にすると関数[fncInput]が実行されずそのまま送信可能です。 同一関数内で入力チェック後データ送信 function fncSubmit(){ if(fncInputCheck()){ document.forms["frmMain"].submit(); } } (略) <form name="frmMain" action="update.cgi" method="post"> <input type="text" name="txt"> <input type="button" value="送信" onclick="fncSubmit();"> 上記コードは「JavaScriptを無効にしたブラウザ上からのデータ送信を防ぐ」事を目的にしています。 つまりJavaScript無効状態では関数[fncSubmit]が実行されないため、送信が不可能です。 但し、任意のコードを実行するBookmarklet Ver1.1を使用すると送信可能になります。 任意のコードを実行するBookmarklet Ver1.1を実行し、開いた別ウィンドウで次のコードを実行します。 入力チェックせずにデータ送信 window.opener.document.forms["frmMain"].submit(); 2.クライアントの入力チェック後、データの送信過程で改竄 プロキシを使用します。 例えば、[Achilles]はクライアントにインストールするプロキシサーバです。 ブラウザが送信したデータを受け取り、編集した上でサーバへ送信できます。 受信も同様で、サーバに取得しに行ったデータを受け取り、HTMLを編集しブラウザへ表示させる事ができます。 [Achilles proxy]で検索すると日本語のサイトも引っ掛かりますので詳細な使用方法はそちらをご覧下さい。 3.ブラウザ上以外からもデータの送信が可能 ブラウザが送信するデータと同じ形式のデータ送信が可能であれば良いわけですから、そういうプログラムを作ればいいのです。 スキルはある程度求められますが、一番汎用性が高いでしょう。 コマゴマと書きましたが何が言いたいかと言いますと、「入力チェックはサーバ側で、受信したデータ全てに対して行う」ようにする。 そして、「クライアントの入力チェックは、サーバの負荷を下げる為の補助的な処理とする」事です。 これ以上、こんなコードは書くべきではありません。 プログラマの皆さん、もし何かあった時、これまでに記述されたコード全てを修正するのは他でもない、アナタですよ。
subject: セキュリティ
creator: Kanasansoft
date: 2005-07-16T01:54:57+09:00

選択中のコードをコメントアウトする秀丸マクロ Ver2.6
type: item
description: 選択中のコードをコメントアウトする秀丸マクロ Ver2.6です。 以前に選択中のコードをコメントアウトする秀丸マクロ Ver2.5 先行公開とエントリーしましたが、修正を更に行いましたのでバージョンアップとしました。 [コメントアウト処理方式]に[一行処理]を追加しています。 役に立たなさそうな[一行処理]ですが次の開発への布石です。 操作感も向上したと思います。
subject: 秀丸
creator: Kanasansoft
date: 2005-07-09T17:44:31+09:00

選択中のコードをコメントアウトする秀丸マクロ Ver2.5 先行公開
type: item
description: バージョンアップしました。 変更は不具合の解消とコメントアウト設定の追加です。 コメントの一覧が表示されている時に、スペースを押しながら[Esc]を押してください。 [コメントアウト処理方式][選択項目既定値][コメントアウト種類最大表示数]を設定できます。 ReadMeも作成していませんがコードを先行公開します。 ReadMe作成後、正式バージョンをアップ、秀まるおのホームページ－秀丸エディタのマクロライブラリに登録します。 [コメントアウト処理方式]だけちょっと説明。 [連続処理]はコメントアウトとして登録されている文字列を順に挿入していきます。 広範囲のコメントアウトが可能ですが、コメントアウト前の状態に戻すには何度も取り消しを行わなくてはなりません。 [一括処理]はコメントアウトの対象となる文字列を取得し、コメントアウト処理を施した後、コメントアウト対象を置き換えます。 文字列の取得の制限により広範囲のコメントアウトはできませんが、取り消しを二度行うだけでコメントアウト前の状態に戻すことができます。 旧バージョンの選択中のコードをコメントアウトする秀丸マクロは[連続処理]を行っています。 //================================================================================ // Name : knsn_HIDEMARU_MACRO_COMMENT_OUT Ver2.5 // In : [Ini] コメント // Out : [Ini] コメント // : [Write] 選択コメント // Note : 選択中のコードをコメントアウトするマクロ //-------------------------------------------------------------------------------- // Version : Ver1.0 | 2004/09/16 | 新規作成 // Version : Ver1.1 | 2004/10/29 | コメント種追加 // Version : Ver2.0 | 2005/06/22 | コメント種を編集可能にした // Version : Ver2.1 | 2005/06/23 | コメントアウト範囲の算出が正常に行われないバグを修正 // Version : Ver2.5 | 2005/07/06 | コメントアウト後の選択範囲算出が正常に行われないバグを修正・コメントアウト設定機能追加 //-------------------------------------------------------------------------------- // Copyright : 2004-2005 Kanasansoft // URL : www.kanasansoft.com //================================================================================ //---------------------------------------- //変数初期化と引数取得 //---------------------------------------- $INITIAL_FILE_NAME = "knsn_HIDEMARU_MACRO_COMMENT_OUT_2_5.ini"; $SECTION_CONTROL = "CONTROL"; $SECTION_COMMENT_HEAD = "COMMENT_NUMBER_"; //$SECTION_CONTROL $KEY_PROCESS_MODE = "PROCESS_MODE"; $KEY_SELECT_DEFAULT = "SELECT_DEFAULT"; $KEY_SELECT_NUMBER = "SELECT_NUMBER"; $KEY_COMMENT_MAX = "COMMENT_MAX"; //$SECTION_COMMENT_HEAD $KEY_BLOCK_TOP = "BlockTop"; $KEY_LINE_TOP = "LineTop"; $KEY_LINE_END = "LineEnd"; $KEY_BLOCK_END = "BlockEnd"; //$KEY_PROCESS_MODE #PROCESS_MODE_COUNT = 2 ; #PROCESS_MODE_SEQUENCE = 0 ; $PROCESS_MODE[#PROCESS_MODE_SEQUENCE] = "連続処理"; #PROCESS_MODE_BATCH = …
subject: 秀丸
creator: Kanasansoft
date: 2005-07-06T01:32:17+09:00

テンプレート[2005/06/28版]
type: item
description: Kanasansoft Web Lab.のテンプレート[2005/06/28版]です。 テンプレート・モジュール[Site Name][Blog Abbreviation]は環境に合わせ書き換えてください。 ソースを表示するために、右ペインを大きくとるようにしています。 この為、時代に逆行してtableタグを使用していますが、css2のmin-widthとmin-heightが使えるようになるまでこれで通すつもりです。 以前のバージョンのMovableTypeもtableタグでレイアウトを行っていましたが、現行バージョンではdivタグを使っています。
subject: MovableType
creator: Kanasansoft
date: 2005-06-28T23:49:00+09:00