ブログ更新状況

ブログ更新状況
こんど
 急行 未来 8:12 4両4ドア
いつもご覧いただきありがとうございます。                                                                                         種別は更新頻度を(鈍足であるほど更新頻度は早く、各停(毎日更新)、準急(週6日更新)、通勤準急(週5日更新)、快速(週4日更新)、通勤快速(週3日更新)、急行(週2日更新)、快速急行(週1日更新)、特急(それ以下)で回送は更新がほぼ停止している時に表示されます)、発車時刻はその情報がどの時点のものなのかを(8月12日であれば08:12となる)、行先はその更新頻度がいつまで続くのかという予測が反映されています。次発はこれからの予想が反映されます。それ以外は特に意味はございません。                                                                                         本日もご閲覧ありがとうございます。
◆お知らせ◇ コメントを投稿される際は、マナーをお守りください。まず、コメントはそれぞれの記事に関係のあるものをお願いします。また、 スパムコメントは固くお断り致します。 アドバイス等は全く構いませんが、「キモイ」「キチガイ」「二度と見ない」などの内容を発見した場合は、即刻却下いたします。                                                                                         Please swich off your mobile phone when you are near the priority seats. In other areas, please set it to silentmode and refrain from talking on the phone.
つぎ
 調整中

2015年6月9日火曜日

「Javascriptで方向幕再現」の作り方

お久しぶりです、chiko ryoです。

今回は、以前お約束した「209系方向幕をJavaScriptで作る」 の解説です。

では、いきなりですがソースを貼ります。

function myMaku(){
         var Y = eval(document.makuform.zahyo.value);
         if(Y < 0 || Y > 44){            // 44の部分は対応番号が何番まであるかで調整ください。
          alert("0~44までの適正な値を入力してください。");
          return false;
         }
         // 移動先の座標を取得
         Yfor = eval("document.makuform.s" + String(Y) + ".value");
         // スタート地点の座標を取得
         Yfrom = document.getElementById("maku").contentWindow.document.body.scrollTop;
         // 幕を動かすスピードを取得
         Ys = eval(document.makuform.speed.value) / 1000;
         // 上に行くのか下に行くのか?
         if(Yfor < Yfrom){   // Y座標を小さくしていく
          Ys = (-1) * Ys;    // -1を掛けて正負を逆転する
          my_parse = false;
         }else if(Yfor > Yfrom){
          my_parse = true;
         }else{              // 移動は不要
          return false;
         }
         makuI = Yfrom;
         myMakuReturn = setInterval("myMakucore()", 1);
         return false;
         
}

function myMakucore(){
 if(Ys > 0 && makuI > Yfor){   // Y座標が増えていって、オーバーした
  document.getElementById("maku").contentWindow.document.body.scrollTop = Yfor;
  clearInterval(myMakuReturn);
  return;
 }else if(Ys < 0 && makuI < Yfor){ // Y座標が減っていって、オーバーした
  document.getElementById("maku").contentWindow.document.body.scrollTop = Yfor;
  clearInterval(myMakuReturn);
  return;
 }else if(makuI == Yfor){
  clearInterval(myMakuReturn);
  return;
 }else{
  makuI = makuI + Ys;
  document.getElementById("maku").contentWindow.document.body.scrollTop = makuI;
 }
}

<form name="makuform" onSubmit="return myMaku();"><div class="box" id="box">
<iframe src="209gazo.html" id="maku"></iframe>
</div><br>
幕対応番号を入力: 
<input type="text" name="zahyo" value="" /><br />
幕を動かすスピードを選択: 
<input type="range" name="speed" min="1" max="300" step="1" value="150" />
<input type="submit" name="go" value=" 実行 " /></p>
<p>幕対応表<br /><br />
<table border="1">
<tr>
<td>0<input type="hidden" name="s0" value="0" /></td><td>これ以上巻くな</td></tr>
<tr><td>1<input type="hidden" name="s1" value="135" /></td><td>試運転</td></tr>
<tr><td>2<input type="hidden" name="s2" value="280" /></td><td>回送</td></tr>
<tr><td>3<input type="hidden" name="s3" value="435" /></td><td>臨時</td></tr>
<tr><td>4<input type="hidden" name="s4" value="590" /></td><td>京浜東北線</td></tr>
<tr><td>5<input type="hidden" name="s5" value="748" /></td><td>品川</td></tr>
<tr><td>6<input type="hidden" name="s6" value="900" /></td><td>大崎</td></tr>
<tr><td>7<input type="hidden" name="s7" value="1050" /></td><td>田町</td></tr>
<tr><td>8<input type="hidden" name="s8" value="1200" /></td><td>池袋</td></tr>
<tr><td>9<input type="hidden" name="s9" value="1350" /></td><td>山手線</td></tr>
<tr><td>10<input type="hidden" name="s10" value="1500" /></td><td>田端</td></tr>
<tr><td>11<input type="hidden" name="s11" value="1650" /></td><td>上野</td></tr>
<tr><td>12<input type="hidden" name="s12" value="1800" /></td><td>快速上野</td></tr>
<tr><td>13<input type="hidden" name="s13" value="1960" /></td><td>赤羽</td></tr>
<tr><td>14<input type="hidden" name="s14" value="2100" /></td><td>快速赤羽</td></tr>
<tr><td>15<input type="hidden" name="s15" value="2260" /></td><td>大宮</td></tr>
<tr><td>16<input type="hidden" name="s16" value="2410" /></td><td>快速大宮</td></tr>
<tr><td>17<input type="hidden" name="s17" value="2550" /></td><td>蒲田</td></tr>
<tr><td>18<input type="hidden" name="s18" value="2700" /></td><td>快速蒲田</td></tr>
<tr><td>19<input type="hidden" name="s19" value="2850" /></td><td>鶴見</td></tr>
<tr><td>20<input type="hidden" name="s20" value="3000" /></td><td>快速鶴見</td></tr>
<tr><td>21<input type="hidden" name="s21" value="3150" /></td><td>磯子</td></tr>
<tr><td>22<input type="hidden" name="s22" value="3300" /></td><td>快速磯子</td></tr>
<tr><td>23<input type="hidden" name="s23" value="3455" /></td><td>南浦和</td></tr>
<tr><td>24<input type="hidden" name="s24" value="3603" /></td><td>快速南浦和</td></tr>
<tr><td>25<input type="hidden" name="s25" value="3755" /></td><td>東十条</td></tr>
<tr><td>26<input type="hidden" name="s26" value="3903" /></td><td>快速東十条</td></tr>
<tr><td>27<input type="hidden" name="s27" value="4055" /></td><td>桜木町</td></tr>
<tr><td>28<input type="hidden" name="s28" value="4203" /></td><td>快速桜木町</td></tr>
<tr><td>29<input type="hidden" name="s29" value="4370" /></td><td>東神奈川</td></tr>
<tr><td>30<input type="hidden" name="s30" value="4515" /></td><td>快速東神奈川</td></tr>
<tr><td>31<input type="hidden" name="s31" value="4665" /></td><td>大船</td></tr>
<tr><td>32<input type="hidden" name="s32" value="4815" /></td><td>快速大船</td></tr>
<tr><td>33<input type="hidden" name="s33" value="4968" /></td><td>八王子</td></tr>
<tr><td>34<input type="hidden" name="s34" value="5118" /></td><td>快速八王子</td></tr>
<tr><td>35<input type="hidden" name="s35" value="5280" /></td><td>橋本</td></tr>
<tr><td>36<input type="hidden" name="s36" value="5425" /></td><td>快速橋本</td></tr>
<tr><td>37<input type="hidden" name="s37" value="5575" /></td><td>町田</td></tr>
<tr><td>38<input type="hidden" name="s38" value="5723" /></td><td>快速町田</td></tr>
<tr><td>39<input type="hidden" name="s39" value="5870" /></td><td>中山</td></tr>
<tr><td>40<input type="hidden" name="s40" value="6010" /></td><td>快速中山</td></tr>
<tr><td>41<input type="hidden" name="s41" value="6165" /></td><td>小机</td></tr>
<tr><td>42<input type="hidden" name="s42" value="6315" /></td><td>快速小机</td></tr>
<tr><td>43<input type="hidden" name="s43" value="6465" /></td><td>横浜線</td></tr>
<tr><td>44<input type="hidden" name="s44" value="8868" /></td><td>これ以上巻くな</td></tr>
</table>
</form>
</p>

.box{
height: 150px;
width: 400px;
padding: none;
overflow: auto;
border: none;
-webkit-overflow-scrolling: touch;
}

#maku{
display: block;
width: 100%;
height: 100%;
border: none;
}

目がおかしくなった人、ごめんなさい。

では、軽く解説を。まずはmyMaku()からいきます。

var Y = eval(document.makuform.zahyo.value);
Yに幕対応番号を代入しています。eval()に渡しているのは数値に変換するためです。脆弱性とか気にしないww

if(Y < 0 || Y > 44){            // 44の部分は対応番号が何番まであるかで調整ください。
  alert("0~44までの適正な値を入力してください。");
  return false;
}
存在しない番号が入力された際のエラー対策です。

// 移動先の座標を取得
Yfor = eval("document.makuform.s" + String(Y) + ".value");
ここは少し難しいので解説します。
まずeval()の引数からみてみます。
"document.makuform.s" + String(Y) + ".value"
name属性値がmakuformであるform要素を取得しているのはわかりますよね?(そこまでは解説しません)
変数Yには、幕対応番号が数値型で代入されています。(2行目にeval()があります)
それをString()に渡していますので、文字列型に変換されます。
つまり、"s"と幕対応番号を文字列として連結して生成した文字列と同じname属性値を持つinput要素を取得しています。
例えば幕対応番号3の場合、
"document.makuform.s" + String(3) + ".value"
となり、document.makuform.s3.valueという文字列が生成されます。
それをeval()に渡してvalueを取得しているのです。

if(Yfor < Yfrom){   // Y座標を小さくしていく
Ys = (-1) * Ys;    // -1を掛けて正負を逆転する
    my_parse = false;
}else if(Yfor > Yfrom){
    my_parse = true;
}else{              // 移動は不要
    return false;
}
makuI = Yfrom;
myMakuReturn = setInterval("myMakucore()", 1);
return false;
if文で幕が上へ行くべきか下へ行くべきかを判断させます。
現状のscrollTopよりも行先のscrollTopのほうが小さい場合はscrollTopを減らしていく必要があります。
実際にscrollTopの改変をしている41行目では加算をしています。
「ある実数(makuI)にもう一つの実数(Ys)を足すと、元の実数(makuI)が小さくなった」 という動作が要求されますので、Ysを負の数にしましょう。そこで(-1)を掛け算します。
正の数 * 負の数 = 負の数です。正の数 + 負の数 は元の数より小さくなります。

ここで解説は以上です。ここまでついてこられた方であれば難なく理解いただけると思います。

2015年4月29日水曜日

どのブログサービスを使うべきか

世の中には、多くのブログサービスがあります。

  • アメーバブログ(アメブロ)
  • Yahoo!ブログ
  • Blogger(このブログはBloggerです)
  • WordPress
  • 楽天ブログ
etc...

これだけあると、初心者はどうすればいいかわからなくなってしまいます。

そこで、それぞれの長所や短所をまとめました。


アメーバブログ


もっとも人気のあるといって過言でないブログサービスです。また、簡単な操作が可能です。
著名人など多くの人が利用しており、アメーバのアカウントを作ると勝手にブログは作成されます。
あいさつペタなどの特徴的な機能のほか、アカウントが非常に多いために友達もできると評判です。

しかし、カスタマイズ性に欠けるため、JavascriptやCSSなどをゴリゴリ書きたいエンジニアさんや、カスタマイズを楽しみたい方は避けるべきです。


Yahoo!ブログ


比較的簡単にブログが作れると評判です。
Yahoo!アカウントとの連携ができるからといった理由などで評判はいいようです。
しかし、コメント投稿の際の画像認証が不要などの理由から、ロボットによる迷惑コメントが相次いでいます。セキュリティ面からみると、避けるべきかもしれません。
カスタマイズも思うようにできないようです。


Blogger


今私が使用しているサービスです。
Googleと共通のアカウントで運営できるため、Google+やYoutubeなどとの連携は最高です。
テンプレートも数多く用意されているほか、大半のHTMLやCSS、デザインや画面右側のガジェット(PC版のみ)が編集できます。
ただHTMLの自動補正機能が上級者にとっては邪魔になることがあるので、JavascriptやCSSは極力外部ファイル化するのがポイントです。
比較的初心者から上級者までおすすめできる内容です。


WordPress


比較的上級者向けです。
何よりもカスタマイズ性はこの上なく最高です。
数多くのプラグインが使用できるほか、なにせ管理者自ら構築したサーバーですので正直、何かやろうと思ったらなんでもできます。
SSL暗号化、独自ドメインなどはもちろん、FTP転送や同じドメイン内にファイルが設置できるためにいろいろとできます。
既定で設定されているCSSなどを取り払うこともPHPの知識があれば可能です。つまり、なにもかも思い通りになります。
ただし、セキュリティや脆弱性、PHP、プラグイン、サーバーやインターネット、SEOに関する専門知識が必要になります。徹底的に上級者向けを追及したサービスといえます。


まとめ

結果としての管理人のおすすめです。
  • 初心者ならBlogger
  • 上級者ならWordPress

長い記事にお付き合いいただきありがとうございました。

2015年4月21日火曜日

209系方向幕をJavaScriptで作る

どうもこんにちは。

この間(随分前になりますが...)、 国鉄方向幕書体 をダウンロードしました。

そこで思いついたのが、Javascriptでの巻き取り機能をつける、ということです。

209系方向幕

JavaScriptでゴリゴリ書きました。
クロスドメインでセキュリティがあーだこーだ...という都合で、サンプルは外部サイトに設置しました。

そのうち作り方公開します...

路線も増やせたらいいなーと思っています。車種ごとの移植もそれほど苦ではないので。

ではまた、ご期待ください。

※これらのスクリプト、HTMLなどはすべて1から管理人が作成しています。そのためバグ等あるかもしれませんが、ご了承ください。またそういったものを発見された場合には、コメントにて報告にご協力ください。当ブログをより良いものとするため、ご協力お願いします。
ちなみに動作確認はIE9とGC7で行っています。

209系方向幕

遊び方

  1. ページ下半分に幕対応表があります。その表示したい行先の左側に表示されている数字を半角で入力してください。
  2. 「幕を動かすスピードを選択」の右側のスライダーは幕回しのスピード調整用です。左に行けば遅く、右に行けば速くなります。一番左はかなり遅いです。なお、幕を回し始めてから設定を変更しても、すぐには反映されません。その次に幕を回したとき、有効になります。
  3. 上の二つが調整できたら、「実行」ボタンをクリックします。幕が回り始めてから自動的に止まるまで、途中で止めることはできません。どうしてもという時は再読み込み願います...
  4. ちなみに幕表示部分の右のスクロールバーを操作すると手動で幕を巻くこともできます。ただし、自動で幕回しをしている最中はこの操作はできません。

209系方向幕

...では、思いっきりお楽しみください!!

2015年4月20日月曜日

Javascriptで郵便番号検索する

どうもこんにちは。必死で北斗星のはんだ付けを急いでしているchiko ryoです。

今回はよく通販サイトなどで見かける、「郵便番号で住所検索」についてです。

<script src="https://ajaxzip3.github.io/ajaxzip3.js" charset="UTF-8"></script>
<form>
郵便番号:
<input type="text" name="number1" size="4" maxlength="3"> - <input type="text" name="number2" size="5" maxlength="4"
onKeyUp="AjaxZip3.zip2addr('number1','number2','ken','shi','after');"><br>
都道府県: <input type="text" name="ken" size="40"><br>
市町村区: <input type="text" name="shi" size="40"><br>
以降の住所: <input type="text" name="after" size="40">
</form>

以上です。簡単ですね。

今回目新しいのはこれでしょうか。
onKeyUp="AjaxZip3.zip2addr('number1','number2','ken','shi','after');"

1行目で読み込んだライブラリで定義されている関数です。

書式は以下になります。

AjaxZip2.zip2addr( '〒上3桁', '〒下4桁', '都道府県', '市区町村', '町域大字', '丁目番地' );


引数にはinputタグのname属性を指定します。<form>タグのname属性は不要です。

今回はテキストフォームを使用していますが工夫次第でinnerHTMLなども使用可能です。

郵便番号のデータですが、常にデータベースは更新されるため、設置や管理も大変楽です。

実行例


郵便番号:
都道府県:
市町村区:
以降の住所:

2015年4月18日土曜日

パスワードの安全度チェックをする

いろいろなところで見かける「パスワードの安全度チェック」なるものをしてみます。

では、ソースコードを。

<script type="text/javascript" src="passwordchecker.js"></script>
<script type="text/javascript">
function myCheck(){
 var label = getPasswordLevel(document.pass.text.value);
 var dom = document.getElementById("check");

 if(label == 1) dom.innerHTML = "<span style='font-color: red;'>危険</span>";
 else if(label == 2) dom.innerHTML = "<span style='font-color: orange;'>やや危険</span>";
 else if(label == 3) dom.innerHTML = "<span style='font-color: #0088ff;'>普通</span>";
 else if(label == 4) dom.innerHTML = "<span style='font-color: #08f;'>やや安全</span>";
 else if(label == 5) dom.innerHTML = "<span style='font-color: #00f;'>安全</span>";
}
</script>

<!-- ここからは表示部分 -->
<form name="pass">
<input type="text" name="text" value="ここにパスワードを入力" onchange="myCheck()" />
</form><br />
<div id="check">ここに実行結果が表示されます。</div>

下のサイトからライブラリがダウンロードできます。
JavaScript パスワード強度判定ライブラリ「Password Checker」

辞書に載っている文字を含むパスワードや数字だけのパスワードは、容易に想像がつくため「弱い」判定が下る、大文字や記号、英数字などを混ぜると強度が増すなどの判断基準が用いられています。

そのライブラリでは、getPasswordLevel()という関数が定義されています。この関数にパスワードを渡すと、安全度が返ります。
1が返れば危険、2が返ればやや危険、...といった具合で、3が普通、5が安全です。(確証はないですが;;)

実行例

※データはサーバーには送信されませんが、念のため本物のパスワードは入力しないでください。

2015年4月16日木曜日

JavascriptでGoogle検索を行う

Google検索をすると、やけに長いアドレスに気付くと思います。

...そうです。Google検索はGET転送をしているのです。
通常POST転送をJavascriptで実現しようとすると、Ajaxなどを使うことになります。しかし、Google検索ではGET転送を採用しているため、Javascriptでの操作が容易になります。

では早速ソースコードを。

<form action="https://www.google.co.jp/search" method="get">
<input type="text" name="q" value="" />
<input type="submit" value=" 検索 " />
</form>

さて、、、解説は不要ですね!

ただしこれらの属性値を一つでも変更すると動かなくなるものもありますのでご注意くださいませ。

一応これで一通り完成ですが、Javascriptを使うと条件で絞って検索したり、動画検索・画像検索させたり、Ajaxを使って入力と同時に検索結果を表示する、なんてことも可能です。

改造の仕方によってはかなり高機能なものも作れます。
いろいろな検索をしてGET転送でどのように値が送信されているのかを研究してみてください。

実行例

参考:Yahoo検索

<form action="http://search.yahoo.co.jp/search" method="get" target="_blank">
<input type="text" name="p" />
<input type="hidden" name="fr" value="yssw" />
<input type="hidden" name="ei" value="UTF-8" />
<input type="submit" value=" 検索 " />
</form>

2015年4月11日土曜日

JavaScriptでiniファイルを解読する Var.1.1

前回ソースを公開したINIを解読するための関数「myReadInI()」。

その更新バージョンを作りましたので、またもソースを公開します。


function myReadInI(mySname, myPname, myFname){

var i = 0; // プロパティiとjはカウンタです。
var j = 0;
var t = null; // コメント除去に使用します。
var ts = 0;   // これもです。

// オブジェクト生成
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");

var objTextStream = objFileSys.GetFile(myFname).OpenAsTextStream(1, 0);
/*読み込みモードを使用、文字コードはUnicodeです。(Unicode文字が扱えるようにするため)*/

var data = new Array(); // 空の配列

// ファイルが最後まで読み込まれるまでループ  読み込み
while (objTextStream.AtEndOfLine==false) {

   t = objTextStream.ReadLine();
   ts = t.indexOf(";"); // コメントを探す
   if(ts == -1){ // コメントがない
    data[i] = t;
   }else{ // コメントあり
    data[i] = t.substring(0, ts);
   }
   i++;
}

// 読み込み及びコメント除去 ここまで
// 解読 ここから

do{
 var my1 = data[j].indexOf("[" + mySname);
 j++;
}while(my1 == -1); // 一行ずつ検索し、該当するセクションを探す
j--;

// 指定のセクションの内容の始まる行数(0から)を退避
var mySstert = j + 1;

// セクションの終わりを探す(先ほど先頭が見つかった行の次からスタート)
j++;
do{
 var my2 = data[j].indexOf("[");
 j++;
}while(my2 == -1);
j--;

// 指定セクションの最後の行を退避
mySend = j - 1;

// パラメータ名を検索
var my3 = mySstert;
do{
 var my4 = data[my3].substring(0, data[my3].indexOf("="));
 my3++;
}while(my4 != myPname);
my3--;

// 抽出
var Returndata = data[my3].substring(data[my3].indexOf("=") + 1);

// 得られた値を返す
return Returndata;

} // function宣言終了


強調表示されている行が変更箇所です。
では解説を。

t = objTextStream.ReadLine();


ファイル読み込み部分ですが、前回と違いいきなりdata配列に代入せず、一旦変数tに代入しました。(もう少しそれらしい名前をつけてあげましょう(^ ^; )

ts = t.indexOf(";"); // コメントを探す
if(ts == -1){ // コメントがない
 data[i] = t;
}else{ // コメントあり
 data[i] = t.substring(0, ts);
}


はい、ここが一番前回と異なる点です。前回は最後にコメント除去をしていました。パラメータ名は=の左側と完全一致しているかで、引数で指定されたパラメータ名と一致しているかの判定していたため問題ありませんでした。しかし、セクション名はindexOf()で一行ずつ検索をかけていたため、セミコロンをつけても角カッコがセクション名として認識されていました。今回のバージョンアップでそれが改善された形となります。
indexOf()で;を検索し、もしも;が存在すればそこから右を削除します。そのあとにdata配列に代入しているのです。

当然、ファイル読み込み時にコメント除去処理をしたため、最後のコメント除去プログラムは削除しました。

※この関数はコールされるたびにファイルを読み込み直し、一行ずつコメント除去、セクション名およびパラメータ名の検索をします。PHPのmail()関数のように何度も呼び出すのは非常に非効率的であります。現在その欠点を解消した関数を開発中です、、、
今しばらくお待ちください。

2015年4月1日水曜日

Javascriptでiniファイルを解読する

ちょっと気分を変えてプログラミングのお話を。

HTMLとJavascript、VBScriptなどでウィンドウアプリケーションが作れるという便利ツール

HTA

このHTAでINIファイルを読み込めればなぁ...と前々から思っていたのです。
しかし、管理人は{}がないVBScriptが苦手なので、Javascriptで作ることにしました。

そこで、さらっと書いてみたスクリプトがこれ。

function readInI (section, para) {
var i = 0;
var fs = WScript.CreateObject("Scripting.FileSystemObject");   // オブジェクト
var file = fs.OpenTextFile("text.ini", 1, false, -1);   // ファイルを開く

while (objTextStream.AtEndOfLine==false) {   // 空行が出現するまでループする
   var data[i] = file.ReadLine();   // 1行ずつ読み込む
   i++;


...下につづく

しかし、これだとエラーがでます。

「'WScript'は定義されていません」

どういうことかというと、WScriptオブジェクトはwscript.exeにしか使えないのです。要するに、HTAのJavascriptでは使えない。

ではどうするか。その答えはこれです。

// オブジェクト生成
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
var objTextStream = objFileSys.GetFile("test.ini").OpenAsTextStream(1, 0);

var data = new Array();

// ファイルが最後まで読み込まれるまでループ  読み込み
while (objTextStream.AtEndOfLine==false) {

   data[i] = objTextStream.ReadLine();
   i++;

}

...下につづく

これで正常にテキストファイルが読み込めるようになりました。

最終的なスクリプトを下に示します。


function myReadInI(mySname, myPname, myFname){

var i = 0;   // プロパティiとjはカウンタです。
var j = 0;

// オブジェクト生成
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
var objTextStream = objFileSys.GetFile(myFname).OpenAsTextStream(1, 0);
/*読み込みモードを使用、文字コードはUnicodeです。(Unicode文字が扱えるようにするため)*/

var data = new Array();   // 空の配列

// ファイルが最後まで読み込まれるまでループ  読み込み
while (objTextStream.AtEndOfLine==false) {
   data[i] = objTextStream.ReadLine();
   i++;
}

// 読み込み ここまで
// 解読 ここから

do{
 var my1 = data[j].indexOf("[" + mySname);
 j++;
}while(my1 == -1);   // 一行ずつ検索し、該当するセクションを探す
j--;

// 指定のセクションの内容の始まる行数(0から)を退避
var mySstert = j + 1;

// セクションの終わりを探す(先ほど先頭が見つかった行の次からスタート)
j++;
do{
 var my2 = data[j].indexOf("[");
 j++;
}while(my2 == -1);
j--;

// 指定セクションの最後の行を退避
mySend = j - 1;

// パラメータ名を検索
var my4 = mySstert;
do{
 var my6 = data[my4].substring(0, data[my4].indexOf("="));
 my4++;
}while(my6 != myPname);
my4--;

// コメント除去
var my3 = data[my4].indexOf(";");
if(my3 != -1){
 data[my4] = data[my4].slice(0, my3);
}

// 抽出
var Returndata = data[my4].substring(data[my4].indexOf("=") + 1);

// 得られた値を返す
return Returndata;

}   // function宣言終了


ソースをダブルクリックすると全選択ができます。もちろん普通に選択することも可能です。解説はスクリプト内のコメントで十分でしょう。



書式  :  myReadInI( セクション名,  パラメータ名, テキストファイルのパス );


戻り値  :  取得したパラメータの値が返ります。※半角数字は文字で返りますので数値を読み込みたいときはeval()を使ってください。


パラメータ

第1引数 必須
 セクションの名前です。[ ](角カッコ)は含みません。

第2引数 必須
 INIファイルのパラメータの名前です。

第3引数 必須
 INIファイルまでのパスです。絶対・相対どちらも指定可です。拡張子はなんでもかまいませんが、テキストファイルでかつ下に示す文法に従う、UTF-8のデータでなければなりません。



この関数で読み込めるINIファイルの文法を以下に示します。

  1. セクション名の前には空白文字を入れてもかまいません。
  2. コメントは;(セミコロン)から行末までで、途中からコメントとしても大丈夫です。
  3. 空行から先はすべてコメントです。そうしたくない場合は、その行を ; でコメントとしてください。
  4. 最後の行には必ず [ が含まれている必要があります。
  5. セクション名およびパラメータ名は@などの特殊文字で囲むことを推奨します。これは、先頭が一致する名前だと行を誤認識してしまうことがあるためです。(そのうち修正します)
5.の例
INIファイルの内容

[test]
userid=ユーザーID
user=ユーザー
[end]
このINIファイルに対して
myReadInI("test", "user", "test.ini");
とすると、3行目のuserよりも先に2行目のuseridにindexOfがヒットしてしまうためです。

使用例




Downlordボタンをクリックするとサンプルプログラムがダウンロードされます。セキュリティが不安な方はソースをみて安心してくださいな。また展開してからtest.iniを作成してください。「ファイルが見つかりません」エラーがでます。

追伸
北斗星記事の方は、新しいこて先が届かず作業が停止状態です。
遅れてすみません。
...(((;^^)

2015年3月26日木曜日

500PV達成

いつもご閲覧ありがとうございます。みなさまにお知らせです.....

当ブログの閲覧数が500PVを突破しました~\(^o^)/
みなさまのご閲覧、誠にありがとうございました。
ある方からのご依頼もあり、この投稿のページに限りマウスに500PV記念で新調した当ブログのバナーがくっついております(^^;
また、当ブログのネタNo.1である北斗星記事、そしてそれを支えてくださっている美軌模型店さまに感謝いたします。
ありがとうございました。そしてこれからも当ブログを宜しくお願いします。m(_ _)m
500PV達成!!!!

2015年3月25日水曜日

北斗星 室内灯改造 NO.6 フラックス購入

間がかなり空きました。

今ハンダづけしているチップLED。1.6×0.8mmサイズを使っているのですが、作業の効率があまりにも悪すぎる...

そこでコツなどをネットからあさっていると、とんでもないことがわかったのでございます......
ハンダづけに慣れている方はおなじみの


フラックス

です...
今までも存在は知っていたのですが、環境に悪いのと、

「はんだに含まれてるからいいや~」

と、恥ずかしながらいままで使っていなかったのです。あとは面倒くさいが9割(汗


さっそく(なのか?)購入してみました。
フラックス

白光(株)様からでている小さいやつです。はんだ付けするのは1.6×0.8mmサイズなのでこれ1本あれば4年は持ちます。

…そろそろこて先も酸化してきまして、はんだの乗りが悪くなってきました。今の鉛筆型のこて先はもう卒業して、チップ部品のはんだ付けのためにD型のこて先がほしいと思う今日この頃です。

つづきます。

2015年2月3日火曜日

北斗星 室内灯改造 NO.5 チップLEDはんだ付け、試験点灯

少し間が開いてしましましたが、本日更新です。

今週は管理人が通う学校の入学試験があります。受験される方々のご健闘をお祈りいたします。
•••入学試験で学校が休みなのですが、やらなければならない勉強が少なくないので(オイッ
、気休め程度に書こうと思います。

前置きが長くなりましたが、チップLEDを半田付けしました。

綺麗に光ります。
ロイヤルを想定して電球色のチップLEDを半田付けしています。
ところが光らせると思ったより白っぽいです。車体の内側の塗装が青色なので実際に取り付けたらどうなることやら.....
そして、10号車のロイヤルで光らせると...

電池を設置する10号車に先行取り付け(まだ試作ですが...)。白っぽくみえます。
しかし、暗い中で同じことをするときれいな電球色でした。もしかしたら室内の木目調の内装がそう見える原因かもしれません。もしかしたら内装までやることになるかも?
ちなみに裏から見ると室内の明かりがスケスケです。サーフェイサーが吹ければいいのですがそこまでやる余裕があるのかは不透明です。

電源は個室シャワールーム1ヶ所につき電池2個直列、それが2ヶ所並列につないであります。なので3Vです。全車両に外から見えない電池のスペースがあるわけでもないので少しでも置けるところに置いて並列にしないとダメですね。

まだまだ続きます。

2015年1月19日月曜日

北斗星 室内灯改造 NO.4 室内灯用電源を考える

前回の続き。
集電板とブリッジダイオードの先を安定して接触させるために、いも半田を作っていました。


ところが、あまりにものんびりとつくったため、二つあるいも半田の片方に接しているプラスチックが、溶けましたwwwww


裏面のようす。wwwww

そこで、急きょ他のところで型をとってできた複製をつけるという、めんどくさい方法で何とか事なきを得ました。ハア...

室内灯の方は、チップLEDのはんだ付けが終了したので変な意味でとらえないでくださいね('_'@)
試作はもうラストスパートです。

・・・最終的には室内灯は電池式になる可能性が高いです。
     1.5Vのボタン電池2個直列だけで編成全体の電気を賄えそうにないので、何個か並列につながないとですね。
カニ(電源車)の発電機の間、ロイヤルのシャワールーム、7号車(食堂車)の厨房など、目立たない部分をうまく利用できるといいですね。

次回につづきます。

北斗星 室内灯改造 NO.3 ユニット作成

前回の続きです。

室内灯ですが、とりあえずオハネフ25 215(11号車)に先行して取り付けました。


あとから修正がきくのでとりあえず線路集電としました。
構造は、ただ集電板とブリッジダイオードをつないだだけ。特別なことはしていません。


チップ抵抗です。コンデンサは常点灯コントローラに対応させるためつけません。

今週中には通電させたいですね。
ではまた。

2015年1月10日土曜日

北斗星 室内灯改造 NO.2 -部品購入from美軌模型店-

今日、ポストにこんなものが入っていました。

美軌模型店さまから購入しました。
本当に安くて、素晴らしい商品を販売なさっていて、私が贔屓にしている店の一つです。
ブリッジダイオード2個で100円、チップLED50個で100円です。この場を借りてお礼申し上げます。
美軌模型店←こちらからどうぞ。

話を戻しましょう。今回購入したのは、

  • チップLED 白色×50
  • チップLED 電球色×25
  • チップ抵抗 300Ω×20
  • ブリッジダイオード×12
です。これくらい必要だと思ったので。
左から白色、電球色、抵抗、ブリッジダイオードです。
ではまた。

北斗星 室内灯改造 NO.1

年末、近所のポポンデッタであるものを買いました。
KATOの北斗星デラックス編成

 KATOの中古の北斗星デラックス編成(12両)です。

KATOの北斗星デラックス編成 開封したようす
右が基本セット、左が増結セット。
中古とは思えないほど綺麗です。
この車両にはちょっとした改造をする予定です。
内容

  1. 自作の室内灯設置
  2. 推進回送用のカンテラ設置
  3. 内装ステッカー貼り付け(できれば)
詳しいことは次回で。

ところで、天空のプラレールはパテを盛りました。
プラレールを改造して制作中の南海電鉄の天空
次回につづきます。