Android端末のストレージ暗号化の起動時パスワードの入力をスキップする方法

Android 4.0からサポートされた内部ストレージの暗号化ですが、暗号化をすると、端末起動時にストレージ暗号化用のパスワードの入力が必要です。
しかしながら、端末の不具合で自動再起動が掛かった場合、このパスワード入力のせいで再起動がパスワード入力で止まって、知らないうちに再起動が掛かって端末が使えなくなっていたと言う事があるかもしれません。

このめんどくさい、内部ストレージの暗号化のパスワードを起動時の入力をスキップさせる方法を発見しました。やりかたは以下の通り。

1.Bluetooth通知系アプリを検索して入れる(検索キーワードは「BT notify」で検索すると、スマートウォッチ用の通知アプリがいくつか出てくるのでそれをインストールする。(自分は、[smart watch helper]をインストール)
2.スマホの、設定→ユーザー補助に「smart watch helper」(インストールしたアプリによって名前が違う)と言う項目が増えているので設定をONにする。
3.設定をONにしようとすると、内部ストレージの暗号化用のパスワードの入力を求められるので入力する。
4.端末を再起動する→内部ストレージの暗号化のパスワードの入力不要になっている。
5.Bluetooth通知系アプリをアンインストールする(アンインストールしてもパスワード不要のまま)。

注意:この変更をすると、端末紛失時に容易に内部ストレージの内容をアクセスできるようになっているかもしれません(通常の方法では端末ロック時はマスストレージは繋がりませんが)。
  

災害徒歩帰宅経路検索・時間確認方法

地震発生日の帰宅後に書いた記事に「災害 徒歩 帰宅」のキーワードでの検索が多いので、Googleマップを使った徒歩帰宅経路の検索方法を解説。

・Googleマップ(http://maps.google.co.jp/)にアクセスして、検索やスクロール・拡大を使って、現在位置や会社の場所を表示。
・場所が見つかったら、マウスを右クリックして「ここからのルート」を選択。
・次に、帰宅目的地(自宅)をスクロール・拡大を使って、目的地を表示(検索を使うと出発地が変更されるので使わない)。
・目的地が見つかったら、マウスを右クリックして「ここへのルート」を選択。
・画面の左側にルートが表示されるので、初期状態で電車を使ったルートになっているので、上の人のマークをクリックして徒歩経路に変更。
・経路を変更したい時は、青ルートをクリックして移動させれば、使い慣れた道等へ変更可能。
・ルートと共に、距離、徒歩での時間が表示されます。長時間歩く場合は、出発前に簡易な食料や飲料水、防寒対策等を忘れずに(多めに持って行くと、途中、困っている人に分けて上げられるかも)。連続して歩かずに、途中休憩を取ることも重要。
・首都圏には結構公園があって、トイレも公園を見つければ不自由しませんが、Googleマップの検索は主要道を選択するので公園に遭遇する確率がかなり下がります。
・震災時は、鉄道は運休しますが駅のトイレが借りられます。また、国道沿いに多いガソリンスタンドでも借りることが出来ます。(コンビニは人が集まり過ぎるので避けた方がいいかもしれません)

一度検索して、大体のルートを把握しておくだけでもだいぶ違うと思います。
  

CUBE/Mini-ITX/Core i7 860/8G/2T/Radeon HD 5870

前にちょろっと書いたら、予想外に「Mini-ITX Core i7」とかのキーワードで検索が多くて需要があるようなので、参考のためにきちんとパーツ名も書いた構成をリストアップしたいと思います。

CPU Core i7 860 BOX
ケース SST-SG07B
http://www.mustardseed.co.jp/products/silverstone/case/sst-sg07b-w.html
http://akiba-pc.watch.impress.co.jp/hotline/20100529/ni_csg07b.html
http://www.gdm.or.jp/review/sst_sg07/index_01.html
2.5インチドライブにはL型のSATAケーブルが必須
CPUクーラー高さ117mmまで
ビデオカード長さ310mmまで
(W)222×(H)190×(D)350mm
※ケース内にPOWER LEDとHDD LED(共に青色)があるが、何故か、HDD LEDは
フロントパネルに穴が開いていない。1つの穴で2つのLEDの点滅を
ミックスして表示しているが、ちょっと分かりづらい。
※初期出荷時と電源コネクタの仕様が変わっています。メーカーHPと紹介記事で
コネクタ仕様が違うのはそのせいです。
ビデオ Radeon HD 5870 ASUS EAH5870/G/2DIS/1GD5/V2
DVI-I(デュアルリンク対応)/DisplayPort/HDMI
電源コネクター 8P+6P
CPU FAN Scythe SCSMZ-2000 侍ダブルゼット
マザー GIGABYTE GA-H55N-USB3
http://www.gigabyte.com/products/product-page.aspx?pid=3455#ov
オーバークロック機能が充実
SATAケーブルはストレートとL型が1本ずつ付属
HDD HITACHI Deskstar 7K2000 HDS722020ALA330 2TB/7200rpm/32MB
DVD Panasonic UJ-890A バルク品
スリムラインケーブル Dirac DIR-SSOC01 30cm
※おそらく、15cmでも大丈夫
メモリ WP160UX8G9 (DDR3 PC3-12800 4GB 2枚組)

組み立て当初、接続ミスでグラボから異音がして画面が出力しないと言うトラブルに見舞われましたが(原因は8P+6Pの電源の8Pしか接続していなかったと言う単純ミス)、組み上がってみると、予想以上に静かで、今まで使っていた静音設計のデスクトップとほとんど変わらない静かさ(アイドル時)で、非常に満足な構成です。
唯一の不満は、空きスロットが無く、PCI-Eのカードをもう一枚挿したいとか出来ないことぐらい。
  

Gmailの受信フィルタにてキーワードによる本文検索によるメール転送が上手く機能しない

Gmailの受信フィルターによる転送で、本文内のキーワードで引っかけて転送する設定をしているのに意図した動作をしないことがあります(転送に限らずラベル付けとかも)。
(フィルタ設定時のフィルタテストでは目的のメールがリストされるのに、設定して実際にメールを受信しても目的のメールに設定したアクションが全く行われていない)

原因:
検索フィルタと、受信フィルタで挙動が違い、メール転送等に使われる受信フィルタでは、MIMEエンコードされたメールの本文が検索出来ない模様。(Webのメール検索での検索フィルタはMIMEエンコード内も正しく検索出来る)
それ故、プレーンテキストのメールならば本文キーワードにヒットしてフィルタが正しく動作するのに、HTMLメールやプレーンテキストでもMIMEエンコードされたメールではキーワード検索が出来ず設定したアクションが行われない。

対策:
対応は簡単。フィルタのキーワード欄に入力する文字列を""で括るだけ。これで、MIMEエンコードされていても正しく本文検索してフィルタが動作します。
  

(非公式)TrainConv5 駅前探険倶楽部 2010年春改変対応

--------
暫定公開
--------
Script 駅前探険倶楽部;
# 駅探時刻表  Copyright(C) 2004-2007 by nTak
#
# 非公式改造2010春対応版 T01ekitan.pss by RST
#   いつからか駅探の時刻表が路線や駅をリンクで辿れずに、検索か地図画像から
#   でしか指定できなくなったので、駅の路線URLを事前にブラウザで調べて
#   手入力する方法に大胆に変更しました。
#
# 使い方:
# 1.事前にブラウザで駅探の時刻表にアクセスし、希望の駅を検索して、
#   リストされる路線をクリックする(上り下りはどちらでも良い)。
# 2.その結果ブラウザが表示しているURLをメモする。
#     例:http://timetable.ekitan.com/train/TimeStation/164-18_D1.shtml
# 3.TrainConv5の駅前探検倶楽部の駅登録をダブルクリックして、
#   メモしたURLを入力する。
# 4.駅アイコンが登録されるので、ダブルクリックすると上下線の時刻表が表示される。
#   (駅アイコンは使い捨てです)

駅名リスト[]:-
<dl class="clearfix">\
\*<dt><span>${ST}</span></dt>\
\*<dd>[<a href="${LNK}">\*</a>]</dd>\
-::

include 'comnlib.inc';      // 共通定数とライブラリ
include 'TConv.inc';        // TrainConv用の定義取込み

(*  定数テーブル *)
const
    SiteInfo[6] = (
        '駅前探険倶楽部',   // 本体に通知する変数:サイト名
        0x01,               // 本体に通知する変数:同一の時刻表が曜日別になっていたら結合する
(*!!*)  0x010c,             // Hi:バージョン Lo:リビジョン 自動更新の指定付き
        'Copyright(C) 2004-2007 by nTak',
        'http://www.ekitan.com/',
        'メモ,データの再配布は禁止です'
    );

// スクリプトで使用する定数
    RegName[10] = ("北海道","東 北","関 東","東 海","甲信越","北 陸","関 西","中 国","四 国","九 州");
    RegList[10] = ("3-1","4-1","0-1","2-1","6-1","5-1","1-1","7-1","8-1","9-1");    // URLの地域コード AN=?
#RST  09.03.20 リンクナビゲーションの変更
    SiteURL     = "2,%s,2,http://timetable.ekitan.com/train/TimeLineList/%s.shtml";
    LinkPat[3]  = ('/TimeLineList/[0-9]\-[0-9].shtml','/TimeStationList/[0-9]/[0-9]+\-[0-9].shtml','/TimeStation/[0-9]+\-[0-9]_D[0-9].shtml');

(*------------------------------------------------------------------
  自動更新を行う
  戻値:  TRUE: 更新した
          FALSE: 更新失敗または更新ファイルが無い
------------------------------------------------------------------*)
function TzAutoUpdate:boolean;export;
begin
    Result := DownloadNewScript(DistURL,SiteInfo[2]);   // DistURLは作者のスクリプト配布URL
end;
(*------------------------------------------------------------------
  ノードの定義リストを返す
  戻値:  定義文字列
            リストは次の書式文字列で返す。
            [アイコン番号],[名前],[検索有無フラグ],[URL]
------------------------------------------------------------------*)
function    TzAttachSite(index):string;export;
begin
    case index of
    0: Result := '2,駅前探険倶楽部,-1,';
    1: Result := '2,駅登録,1,http://ekitan.com/';
    else Result := '';
    end;
end;
(*------------------------------------------------------------------
    URLから読み込んでリンクを登録する
    IN:     index   ノードインデックス
            node    親ノードのID、URLの登録はこのノードに対して実行
            stURL   読込むURL
            cache   キャッシュ有効フラグ
    OUT:    FALSE   路線リンクを登録した
            TRUE    時刻表ページのURLだった
------------------------------------------------------------------*)
function    TzGetPageLinks(index,node,stURL,cache):boolean;export;
begin
//  Input("駅名","駅の名前を入力",stNAME);
    stNAME := "駅";
    Input("駅URL","駅の路線URLを入力",stURL);

    putlog(node,0:@sysdate,1:stNAME,2:1,3:stURL,4:ICO_STATION);
    Result := True; //時刻表ページに到着
//---
end;
//------------------------------------------------------------------
//  時刻表データの抽出と変換
//  '09.03.20 デザイン変更に伴う変更、本体はv5.3.4以降が必須
//------------------------------------------------------------------
function 時刻表解析(html):string;
begin
    DateStr := WrapStr(html,'<p class="attention">[','現在]</p>',1);  // 更新日付を取りだす
    Strip(DateStr);
    ln := TagWrap('title',html,FALSE);      // タイトル情報から路線名等を抽出
    Split('|',ln,tmp1,tmp2,ln);
    Split(' ',tmp1,StationName,tmp1);
    Split(' ',tmp2,RouteName,DestName,WeekName,tmp2);
    BaseCaption := "%RouteName% %StationName% %DestName%";   // タイトル生成
    MapLink := LINKS('駅周辺の地図',html);      // 地図のURL
    Caption := "件名,%BaseCaption% %DateStr%";
    DestInfo:= "時刻,%RouteName%,%StationName%,%DestName%,%WeekName%\n地図,%MapLink%";

    //RST 時刻表部分だけを抽出する
    PageClip('<!-- \[timetable\] -->','<!-- /\[legend\] -->',html);
    strip(html);                                    // 用が済んだらHTMLタグを除去
    html := Replace(html,' ',' ',TRUE);            // 全角空白を半角へ置換
    Init('',TimeValue,MarkList);                    // 作業変数の初期化
    foreach ln in @Lines[html] do
    begin
        ln := Trim(ln);                             // 前後の空白を取り除く
        if ln = '' then Next;                       // 空行なら次へ
        if IsDigit(CSV(ln,0)) then                  // 数字で始まる行は時刻表と見なす
        begin
            ln := ExtractCSV(ln,ss);                // まずは時刻を取出し
            TimeValue := TimeValue+ss;              // 時刻表に追加しておく
            while CSVCount(ln) > 0 do               // 時刻データがある間
            begin
                n := 0;
                while not IsDigit(CSV(ln,n)) do Inc(n); // 時刻が出てくるまで
                case n of       //RST 2しか存在しないと思われる
                0:  // 時刻データだけ
                    begin Init('',ds,ns);  ln := ExtractCSV(ln,ss); end;
                1:  // 種別と時刻
                    begin Init('',ds);  ln := ExtractCSV(ln,ns,ss); end;
                2:  //RST 種別と行先と時刻
                    ln := ExtractCSV(ln,ns,ds,ss);
                else Init('不明',ds,ns); ss := '00';
                end;

                ns := Replace(ns,':',':',TRUE);    // : は予約文字なので全角の:へ置換
                // 専用関数で処理を簡略&ちょっとだけ高速化
                ss := T5TimeItem(ns,ds,ss);             // <種別><行先><発時刻>へ変換
                MarkList := T5MarkList(ns,ds,MarkList); // 凡例の作成
                TimeValue := TimeValue+' '+ss;          // 時刻表に追加する
            end;
            TimeValue := TimeValue+"\n";
        end;
    end;
    Result := CatStr("\n",Caption,SiteInfo[5],DestInfo,TimeValue+'凡例,'+MarkList)+"\n\n";
end;
(*------------------------------------------------------------------
    時刻表ページのURLから時刻表のテキストを返す
    必要ならリンク先のデータも読み込んで変換する
    IN:     index   ノードインデックス
            pURL    親ノードのURL
            URL     読込むURL
            cache   キャッシュ有効フラグ
    OUT:    TEXT    変換した時刻表テキスト
------------------------------------------------------------------*)
function    TzConvMain(index,pURL,URL,cache):string; export;
    //----------------------------------------------------------------
    // 親ブロックのローカル変数にはアクセスできないのでcache引数が必要
begin
    TagStripSet(':BR:HR:DIV:',0,0);         // HTMLタグ除去で無視するタグ
    TagStripSet(':SPAN:',TX_SPC,TX_NONE);   // 空白に変換
    TagStripSet(':LI:',TX_COMM,TX_NONE);    //RST <LI>はカンマ変換

    Init('',Result,PastURL);                // 初期化
    Get(URL,cache);                         // 時刻表のページを取得、多分平日
    BasePage := $_;                         // リンク抽出用に覚えておく

#RST
#何故かカレントページ同じ方面リンクを返さないので最初だけ平日|土曜|休日を個別に処理
    foreach wlnk in @ReadLink['(平日|土曜|休日)',BasePage,URL] do
    begin
        Get(wlnk,cache);                        // 時刻表のページを取得
        html := $_;
        Result := Result + 時刻表解析(html);    // 所定のフォーマットに変換
    end;

    foreach dlnk in @ReadLink['*方面',BasePage,URL] do  // 方面リンクを読込む
    begin
        Get(dlnk,cache);
        foreach wlnk in @ReadLink['(平日|土曜|休日)'] do
        begin
            Get(wlnk,cache);                        // 時刻表のページを取得
            html := $_;
            Result := Result + 時刻表解析(html);    // 所定のフォーマットに変換
        end;
    end;
end;
//------------------------------------------------------------------
// スクリプトデバッグ用のメイン
// 山手線・渋谷駅
//------------------------------------------------------------------


begin
//        TzAutoUpdate;
    Message("Hello");

    tURL := "http://timetable.ekitan.com/train/TimeStation/179-14_D1.shtml";

    TzConvMain(index,pURL,tURL,cache);

//    Get('http://timetable.ekitan.com/train/TimeStation/164-4_D1.shtml',cache);                         // 時刻表のページを取得、多分平日
//    foreach dlnk in @ReadLink['*方面'] do  // 方面リンクを読込む
//    begin
//      Message(dlnk);
//    end;

end.
  

GPSロガー i-gotU 利用活用

まえに別ブログにメモ程度にi-gotUのWindows Mobileでの利用のことを書いたら、結構アクセスがあるので、需要有りということで、新たに情報をまとめて書き直し。

台湾のMobile Action社が製造販売する超小型GPSロガー i-gotU GT-120
(日本代理店は http://www.i-gotu.jp/ )

元々GPSロガーとして購入しましたが、調べると色々と活用できることがわかり、それぞれのノウハウをまとめてみます。

●仕様
本体、シリコンカバー、専用USBケーブル、ソフトウェアCDで構成。
説明書はケースに付いた簡易説明書と、CDに保存されたマニュアルのみ。
USBケーブルは専用品なので紛失に注意。また、本体の充電はこの専用USBケーブルで行います。
ソフトウェアは付属CDが最新とは限らないので、メーカーor代理店のHPからダウンロードした方が確実。
大きさ 44.5 x 28.5 x 13 mm 重さ 20g ストラップホール有り。
メモリ容量は、65,000 way points バッテリーの持ち時間を考えると必要十分。

●ログ記録間隔と電池の持ち
電池の持ちはログの記録間隔に依存します。最短10時間から、最長1週間近くまで。
電池がどれくらい持つのかの目安は、設定ツール @trap PCでログの記録間隔を設定する時に表示されます。
参考として設定ツールが表示する電池の持ち時間は以下の通り
・ 1 〜 6秒 : 10時間
・ 7 〜 10秒 : 20時間
・ 11 〜 20秒 : 30時間
・ 21 〜 40秒 : 60時間
・ 41 〜 60秒 : 70時間
・ 1分 〜 1分30秒 : 80時間
・ 1分31秒 〜 2分 : 100時間
・ 2分1秒 〜 60分 : 120時間

また、外部電源を使い、専用USBケーブルで充電しながらログを記録することも可能。但し、ログ記録中にUSBケーブルを接続して充電を開始すると、記録中だったログが一度クローズされて、新たに別トラックとしてログを記録し始めます(この動作はケーブル接続時のみ。取り外し時はログのクローズは発生しない)。
なお、記録データーは付属のツールを含む各種ツールによって容易に編集が出来るので、分割されてしまったトラックを1つのトラックにする等も簡単。

●電源スイッチ
プッシュボタン式、長押しでON、再び長押しOFF。しかしながらロック機構がないので、不用意にボタンを押していて、知らないうちにログを記録した事が度々発生。そこで、100円ショップで物色して、えんぴつ削りのふたがちょうどカバーになるのを発見して携帯時はこれをはめて輪ゴムで固定して電源スイッチをガード。

●ステータスLED
説明書にも書いてありますが、いまいち分りにくいの分りやすく解説
電源ON: ボタンを1秒以上押すと押している間 青が点灯して、ボタンを離すと消灯
電源OFF:ボタンを1秒以上押すと押している間 赤が点灯して、ボタンを離すと消灯
衛星検索中:4秒毎に青点滅
ログ書込:赤青同時に2回点滅(コールドスタート(前回使用してから時間が経ってからの再使用)時は、電源を入れてからログが記録されるまでに5分ほど掛かります)
電池切れ:赤点滅
メモリ切れ:赤2回点滅
充電中:赤点灯
充電完了:赤消灯

●付属ツール @trap PC
GT-120の設定、データの吸い出しを行う統合ツール。もちろん、地図上への軌跡の表示、写真ファイルへのEXIFへのGPSデータの書きこみ等もサポート。
このツールも使いやすいですが、収集データーの保管方法が分かりにくく(ユーザードキュメントのApplication Dataの@trapに独自形式で保管)他にフリーのもっと使いやすいツールがあるので、付属ツールは、ログ記録間隔変更等のGT-120の設定変更と、GPXファイルの出力のみに使用して、GPXファイルを別のツールで加工利用する方法がオススメです。

●GPSレシーバー for Windows
アプリケーションをインストールすると自動的にドライバーがインストールされて、WindowsからはUSBシリアル接続のGPSレシーバーとして利用できます。
ソフトは市販品、フリーウェア等色々あるのでお好みで。測位系はWGS-84です。

●GPSレシーバー for Windows Mobile (アドエス Advanced/W-ZERO3[es]等)
公式にはWindows Mobileでの使用はサポートしていませんが、ぞろよしさん作成の汎用USBシリアルドライバー 232usb にて認識させることが出来ます。
http://www.softclub.jp/zoro/ce/
アドエスで使用する場合、インストールバイナリはARMを選択し、その後の設定用exeで「Serial Cable」をチェックするのを忘れずに。
シリアルポートの設定は、115200-8-N-1です。これにより、各種GPSツールが利用可能になります。
別のGPSですが、ウィルコムファンの
http://www.willcom-fan.com/wzero3/entries/mobachiki/000380/
記事が参考になります。

●Googleマップモバイル
Windows Mobileベースのスマートフォンで電波圏内であれば、Googleマップモバイルが地図ソフトとしてオススメです(住所検索可能)。

●GCzII
英国じぃさん作成の、ジオキャッシング用ツール。
http://d.hatena.ne.jp/Gzh/searchdiary?word=*[GCz]
このツールを知る前はキャッシュの情報を紙で印刷して持ち歩いていましたが、このツールのおかげで印刷不要になりました。また、電波圏外でも事前に情報をダウンロードしておけばオフラインモードで各種情報にアクセスできたり、至れり尽くせりのソフトです。

●轍 wadachi
サイクル紀行 http://www.cyclekikou.net/ にて、開発・配布されているGPS活用ソフト。
GPSの出力するGPXファイルを読み込んで、簡単にWebやBlog等で外部から参照可能なhtmlを出力する。Google maps API機能を使い、地図上にポイントや軌跡を表示可能。
  

Windwos7 別ドメイン(ワークグループ)のネットワークドライブのパスワードが保存されない

Windows7 Professionalにて、別ドメインのファイルサーバーをパスワードを保存する設定でネットワークドライブとして接続した場合に、再起動時に再接続されない。

原因
なんか、Win7からネットワークドライブのパスワード保存の方法が変わったっぽい(もしかした、Vistaからかもしれないけど、VistaはPro系を使ったこと無いのでよく分からない)。

対策
Win7、パスワード情報にドメイン情報を含めているようで、何も考えずにマイネットワークからファイルサーバーをクリックしてIDとPWを入力して、情報を記憶してログイン時に再接続するを選択すると、同一ドメイン環境なら問題は無いが、ドメインが違うサーバーをネットワークドライブとして接続して自動再接続させようとすると、全然繋がらない現象が。
よく分からないんだけど、とりあえず、
DOMAIN名\ユーザー名
と言う感じでIDを指定すると、再ログイン時にもちゃんと繋がるようになります。
手動接続時は別にドメインを指定しなくても繋がるのが紛らわしいです。
  

Flight Simulator X (FSX)で、ジョイスティックのボタン設定が保存されない

Microsoft Flight Simulator Xで、ジョイスティックのボタン等の設定を変更しても、次回起動時に初期設定に戻ってしまう。

原因
FSXは日本語名のコントローラーのボタン設定を正常に保存できないようです。
ドライバー不要でWindows標準のドライバーで認識するジョイスティックは、日本語Windowsでは「4 軸 16 ボタン ジョイスティック」等の名称になり、コントローラー名が日本語になるため問題が発生します。

対策1
専用ドライバーを使う。
専用ドライバーが付属しているコントローラでは、専用ドライバーを使うことにより、コントローラー名が英文字になる可能性があります。

対策2
レジストリをいじって、強制的に別の名前に変更する。
手順
1.コントロールパネルのゲームコントローラで、現在使っているジョイスティックのコントローラー名を調べる。
2.デバイスマネージャで、ヒューマンインターフェイス デバイスのHID準拠ゲームコントローラのプロパティを開き、詳細タブで「デバイスインスタンスID」を控える(VID_?????? と言うやつ)
3.レジストリーエディターを起動して、検索で1で調べたコントローラ名で検索する(コントローラー名には空白が入っていたりするので"軸"とかのキーワードで検索した方がよいかも)
4.見つかったエントリーのIDが、2で控えたIDと一致しているかを確認。
5.そのエントリーの名前を英語名に書き換える。通常、3ヶ所の変更が必要。

  

(非公式)TrainConv5 JR東日本 2009年春改変対応

Script JR東日本;
# Copyright(C) 2008 by nTak

路線別時刻表[]:-
<td width="432" class="text-m">${ROSENINFO}</td>
<td width="100" align="center" class="text-m">
${HYPERLINK}
</td>
</tr>
-::

include 'comnlib.inc';
include 'TConv.inc';        // TrainConv用の定義取込み

const
    SiteInfo[5] = (
        'JR東日本',   // サイト名
        0,                  // 変換動作のフラグ
(*!!*)  0x0100,             // Hi:バージョン Lo:リビジョン
        'Copyright(C) 2008 by nTak',
        'http://www.jreast-timetable.jp/'
    );
    C_ForbidMemo= "メモ,データの再配布は禁止です";
    LinkPat[6] = ('/timetable/list','/cgi-bin/st_search.cgi','/www.jreast-timetable.jp/');

(*------------------------------------------------------------------
  自動更新を行う
  戻値:  TRUE: 更新した
          FALSE: 更新失敗または更新ファイルが無い
------------------------------------------------------------------*)
function    TzAutoUpdate:boolean;export;
begin
    Result := DownloadNewScript(DistURL,SiteInfo[2]);   // DistURLは作者のスクリプト配布URL
end;
(*------------------------------------------------------------------
  ノードの定義リストを返す
  戻値:  定義文字列
            リストは次の書式文字列で返す。
            [アイコン番号],[名前],[検索有無フラグ],[URL]
------------------------------------------------------------------*)
function    TzAttachSite(index):string;export;
begin
    case index of
    0: Result := '16,JR東日本時刻表,-1,';
    1: Result := '16,時刻表のみ,0,http://www.jreast-timetable.jp/';
    2: Result := '16,到着時刻付,1,http://www.jreast-timetable.jp/';
    else Result := '';
    end;
end;
(*------------------------------------------------------------------
    URLから読み込んでリンクを登録する
    時刻表ページのURLが指定されていたら変換処理が必要なことを返す
    IN:     index   ノードインデックス
            node    親ノードのID、URLの登録はこのノードに対して実行
            stURL   読込むURL
            cache   キャッシュ有効フラグ
    OUT:    FALSE   路線リンクを登録した
            TRUE    時刻表ページのURLなので変換処理を実行する
------------------------------------------------------------------*)
function    TzGetPageLinks(index,node,stURL,cache):boolean;export;
begin
    Result := False;
    Get(stURL,cache);
    case StrPattern(stURL,LinkPat) of
    3:  begin   // トップから路線リストを作成
        Skipto('</form>');  // 最初のフォームを捨てる
        Skipto('<form action="/cgi-bin/st_search.cgi" method="get">');  // 路線のフォーム
        foreach ln in @formitems['rosen'] do
            begin
            if ln = '' then Next;
                putlog(node,0:@sysdate,1:$$,2:0,3:$?+'?rosen='+ln,4:ICO_TRAIN,5:$:,6:$&+'rosen='+ln);
            end;
        end;
    2:  begin   // 駅名リストを登録
            getlog(node,1:rosen);               // 路線名を取りだして
            foreach lnk in @indexLink[LinkPat[0]] do
                putlog(node,0:@sysdate,1:$$,2:1,3:lnk,4:ICO_EKI2,6:rosen);  // ConvMainで使えるようPOSTSTRに記憶
        end;
    else    // その他は無視
        Result := True;
    end;
end;
//------------------------------------------------------------------
//  時刻表データの抽出と変換
//------------------------------------------------------------------
function    TimePageConv(RosenName,DocData):string;
//var i,j,ns,ds,ss,ln;
    function MakeMark(Kind,lc,rc,AList):string;
    begin
        Result := Kind - ' ' - ' '-'・';
        if Result = ''  then Exit;
        Kind := Result;
        Result := '';
        repeat
            Mark := Kind;
            ll := 0;
            foreach dd in @CSV[AList] do
            begin
                split('−',dd,略,詳細);
                略 := 略 - '#' - lc - rc;       // 種別判定用の文字は削除しておく
                if (TextPos(略,Kind) = 1) and (Length(略) > ll) then    // 最長一致
                begin
                    ll := Length(略);
                    Mark := 略;
                end;
            end;
            kind := Delete(kind,1,Length(Mark));
            Mark := lc + Mark + rc;
            if TextPos(Mark,Result) = 0 then Result := Result + Mark;
        until Kind = '';
    end;
begin
    TableNestMode(3,23);                    // TABLEタグのネスト
    Strip(DocData);
    // 作業変数をクリアする
    init('',Caption,MapURL,DestInfo,KindList,DestList,TimeValue);

   // 駅名と方面名を一緒に処理できるようにしておく
    foreach ln in @Lines[DocData] do
    begin
        ln := Trim(ln); // 前後の空白を除去する
        if (ln = '') or (ln=',') then Next;
        // 1行テキストを分類解析
        if TextPos(RosenName,ln) <> 0 then
        begin
            //  赤羽駅 東北本線 小山・宇都宮方面 (下り),,
            ln  := Replace(ln,' ',' ',TRUE);  // 全角空白を半角空白
            Caption  := '件名,'+(ln - ',');
            DestInfo := CatStr(',','時刻',CSV(ln,1),CSV(ln,0),CSV(ln,2));  // 運転日は後で追加
            MapURL := 'Mapion,'+CSV(ln,0);
            Next;
        end;
        case StrBegIndex(ln,'時,','列車種別','行き先','変更・注意') of
        1:  begin   // 時, 平日 or 土曜・休日
                DestInfo := DestInfo + ','+ CSV(ln,1);
            end;
        2,4:  begin   // 列車種別・列車名 :,無印=普通 快=快速 通快=通勤快速 ラ=ラビット,
                ln := ShiftCSV(ln,1);
                foreach val in @CSV[ln] do                  // 凡例をCSVでスキャンする
                begin
                    if TextPos('=',val) = 0 then Next;
                    split('=',val,略語,車種);
                    KindList := KindList + "#%略語%−%車種%,";  // 凡例を組み立てる
                end;
            end;
        3:  begin   // 行き先・経由 :,無印=宇都宮 金=小金井 磯=黒磯,
                ln := ShiftCSV(ln,1);
                foreach val in @CSV[ln] do                  // 凡例をCSVでスキャンする
                begin
                    if TextPos('=',val) = 0 then Next;
                    split('=',val,略語,行先);
                    DestList := DestList + "{%略語%}−%行先%,";  // 凡例を組み立てる
                end;
            end;
        else if IsDigit(CSV(ln,0)) then // 先頭が数字なら時刻表
            begin
                ln  := Replace(ln,' ','',TRUE);        // 全角空白を消去
                TimeValue := TimeValue + ln + "\n";     // 後で略語を置換する
            end;
        end;
    end;
//  出来上がった時刻テーブルと略語を使って置換する
    TimeTable := '';
    foreach ln in @Lines[TimeValue] do
    begin
        ln := Replace(ln,' ','_',TRUE);  // 空白をマーク
        ln := ExtractCSV(ln,ss);                // まずは時刻を取出し
        ln := ShiftCSV(ln,1);                   //RST 余分なカラムの読み飛ばし
        n := Str2Int(ss);                       // 時刻を取り出す
        TimeTable := TimeTable+((n>=24)?n-24:n)+ ' ';   // 24時以降の補正をして時刻追加
        // 種別・行先と時刻の2つで1ペア
        while CSVCount(ln) > 0 do               // 時刻データがある間
        begin
            ln := ExtractCSV(ln,ns,val);    // 種別_行先 時刻 記号 の順
            Separate(val,9:num,*:ss);       // 注意記号は数字の後につくので
            split('_',ns,種別,行先);        // 行先と種別を分離
            種別 := MakeMark(種別,'<','>',KindList);
            行先 := MakeMark(行先,'{','}',DestList);
            TimeTable := "%TimeTable%  %種別%%行先%%ss%%num% ");
        end;
        TimeTable := TimeTable+"\n";
    end;
    Result := CatStr("\n",Caption,MapURL,C_ForbidMemo,DestInfo,TimeTable)+"凡例,"+KindList+DestList+"\n";
end;
//------------------------------------------------------------------
//  到着時刻データの抽出と変換
//------------------------------------------------------------------
function    TimeReachConv(Station,DocData):string;
begin
    TableNestMode(3,23);                    // TABLEタグのネスト
    Strip(DocData);
    DocData := Replace(DocData,' ',' ',TRUE);  // 全角空白を半角変換
    // 作業変数をクリアする
    init('',Result,Kind,MarkList,Arival);
    pickup := False;
    foreach ln in @Lines[DocData] do
    begin
        ln := Trim(ln) - RegExpr(',\([0-9]+\)',ln); // 前後の空白を除去する
        if ln = '' then Next;
        // 1行テキストを分類解析
        case StrBegIndex(ln,Station,'列車種別,',',,','列車名','運転日,','駅名,','備考,') of
        1:  begin    // 指定駅からの到着時間をリストアップする準備
                ln := ln - ' ';
                atime := RegExpr('([0-9]+:[0-9]+)(発|着)',ln);      // まず着時刻を使う
                発時刻 := dateformat($(0),'hn',2007);
                MarkList := "到着,%Kind%,"+$(0)+',';
                Arival := '';
                pickup := TRUE;
            end;
        2:  begin    // 列車種別
                Kind := (CSV(ln,2)='')? CSV(ln,1) : CSV(ln,2);     // 種別が付いているかも
                Kind := Kind-RegExpr('[0-9]+(号|)',Kind);  // 列車名
                case Kind of
                '各停|各駅停車': Kind := '普通';
                '^普通(?*)': Kind := $(0);  // パターンで( )内に一致した文字列
                end;
            end;
        3..6: Next; // 今のところとりあえず何もしない
        7:  Break;   // Copyright(終り)
        else if Pickup then
            begin
                ln := TrimCSV(ln-' ',3);     // 最初の3項目だけ使う、2列ある情報はあきらめる
                atime := RegExpr('[0-9]+:[0-9]+(着|発)',ln);      // 着時刻を先に抽出
                if atime <> '' then     // 発着時刻が取得できたら
                begin
                    到着 := dateformat(atime,'hn',2007);    // 自動補正されないように年を指定
                    if 到着 < 発時刻 then 到着 := 到着 + @c_dateseconds;    // 24:00を過ぎた
                    到着 :=  (到着 - 発時刻) div 60;
                    eki := CSV(ln,0) - RegExpr('\(*\)',CSV(ln,0));
                    Arival := Arival + eki+":%到着%,";
                end;
            end;
        end;
    end;
    if Arival = '' then Result := ''
    else Result := MarkList + Arival;
end;
(*------------------------------------------------------------------
    時刻表ページのURLから時刻表のテキストを返す
    必要ならリンク先のデータも読み込んで変換する
    IN:     index   ノードインデックス
            pURL    親ノードのURL
            URL     読込むURL
            cache   キャッシュ有効フラグ
    OUT:    TEXT    変換した時刻表テキスト
------------------------------------------------------------------*)
function    TzConvMain(index,pURL,URL,cache,method,PostStr):string; export;
begin
    Result := '';
    Result := '';
    TagStripSet(':DL:DD:BODY:',TX_NONE,TX_NONE); // 無視するタグ
    TagStripSet(':BR:',TX_COMM,TX_NONE);         // <BR>はカンマ変換
    TagStripSet(':DIV:',TX_COMM,TX_NONE);        //RST <DIV>はカンマ変換
    TableNestMode(3,23);                    // TABLEタグのネスト

    Get(URL,cache);                      // 該当駅の路線一覧ページの取得
    StName := Trim(WrapStr($_,'<font color="#FFFFFF">','発車時刻表'));
    foreach n in @clip[路線別時刻表] do
    begin
//      if TextPos('成田エクスプレス',ROSENINFO) = 1 then       // デバッグ用
//      if TextPos(PostStr,ROSENINFO) = 1 then          // リストに無い路線もあるので全部変換
        begin
            foreach ln in @indexlink['',HYPERLINK,URL] do       // 平日と土曜・休日のリンク
            begin
                Get(ln,cache);
                // 不要な路線メニューの部分を切り落とす
                PageClip('<table width="100%" border="0" cellspacing="0" cellpadding="0">',
                        '<table cellspacing="0" cellpadding="1" border="0">');
                BasePage := $_;
                時刻表 := TimePageConv(StName,BasePage);           // 時刻表変換して
                Station := CSV(TextLine(時刻表,0),1)-'駅';  // 件名から駅情報を取る
                Init('',到着時刻);
                if index = 2 then  {                        // 到着時刻付き変換
                    // 平日の列車詳細を取得して各駅の発着時刻から到着時刻を計算する
                    foreach lnk2 in @indexLink['/[0-9]+/train/'] do {
                        Get(lnk2,cache);
                        PageClip('<table width="360" border="0" cellpadding="0" cellspacing="0">',
                                 '<img src="../../../img/spacer.gif" alt="" width="10" height="10"><br>');
                       reachtime := TimeReachConv(Station,$_);
                       if reachtime <> '' then
                          到着時刻 := "%到着時刻%%reachtime%\n";
                     };
                };
                // 到着時刻ができていれば到着時刻付き
                Result := Result + ((到着時刻 <> '') ?"%到着時刻%-----\n":'') + "%時刻表%\n";
             end;
        end;
    end;
end;
//------------------------------------------------------------------
// デバッグ用のメイン
//------------------------------------------------------------------
begin
    TagStripSet(':DL:DD:',TX_NONE,TX_NONE); // 無視するタグ
    TagStripSet(':BR:',TX_COMM,TX_NONE);    // <BR>はカンマ変換
//    'http://www.jreast-timetable.jp/0803/timetable/tt0034/0034040.html'
end.
  

(非公式)TrainConv5 駅前探険倶楽部 2009年春改変対応

駅探2010年春対応暫定版はこちら
http://blog.livedoor.jp/pga014563/archives/65725896.html

Script 駅前探険倶楽部;
# 駅探時刻表  Copyright(C) 2004-2007 by nTak
#

駅名リスト[]:-
<dl class="clearfix">\
\*<dt><span>${ST}</span></dt>\
\*<dd>[<a href="${LNK}">\*</a>]</dd>\
-::

include 'comnlib.inc';      // 共通定数とライブラリ
include 'TConv.inc';        // TrainConv用の定義取込み

(*  定数テーブル *)
const
    SiteInfo[6] = (
        '駅前探険倶楽部',   // 本体に通知する変数:サイト名
        0x01,               // 本体に通知する変数:同一の時刻表が曜日別になっていたら結合する
(*!!*)  0x010c,             // Hi:バージョン Lo:リビジョン 自動更新の指定付き
        'Copyright(C) 2004-2007 by nTak',
        'http://www.ekitan.com/',
        'メモ,データの再配布は禁止です'
    );

// スクリプトで使用する定数
    RegName[10] = ("北海道","東 北","関 東","東 海","甲信越","北 陸","関 西","中 国","四 国","九 州");
    RegList[10] = ("3-1","4-1","0-1","2-1","6-1","5-1","1-1","7-1","8-1","9-1");    // URLの地域コード AN=?
#RST  09.03.20 リンクナビゲーションの変更
    SiteURL     = "2,%s,2,http://timetable.ekitan.com/train/TimeLineList/%s.shtml";
    LinkPat[3]  = ('/TimeLineList/[0-9]\-[0-9].shtml','/TimeStationList/[0-9]/[0-9]+\-[0-9].shtml','/TimeStation/[0-9]+\-[0-9]_D[0-9].shtml');

(*------------------------------------------------------------------
  自動更新を行う
  戻値:  TRUE: 更新した
          FALSE: 更新失敗または更新ファイルが無い
------------------------------------------------------------------*)
function TzAutoUpdate:boolean;export;
begin
    Result := DownloadNewScript(DistURL,SiteInfo[2]);   // DistURLは作者のスクリプト配布URL
end;
(*------------------------------------------------------------------
  ノードの定義リストを返す
  戻値:  定義文字列
            リストは次の書式文字列で返す。
            [アイコン番号],[名前],[検索有無フラグ],[URL]
------------------------------------------------------------------*)
function    TzAttachSite(index):string;export;
begin
    case index of
    0: Result :=  FmtStr('2,%s,-1',SiteInfo[0]);
    1..10: Result := FmtStr(SiteURL,RegName[index-1],RegList[index-1]);
    else Result := '';
    end;
end;
(*------------------------------------------------------------------
    URLから読み込んでリンクを登録する
    IN:     index   ノードインデックス
            node    親ノードのID、URLの登録はこのノードに対して実行
            stURL   読込むURL
            cache   キャッシュ有効フラグ
    OUT:    FALSE   路線リンクを登録した
            TRUE    時刻表ページのURLだった
------------------------------------------------------------------*)
function    TzGetPageLinks(index,node,stURL,cache):boolean;export;
begin
    Result := False;
    Get(stURL,cache);
#RST  09.03.20 リンクナビゲーションの変更
    case StrPattern(stURL,LinkPat) of
    1:  begin   // 路線
        foreach lnk in @indexLink[LinkPat[1]] do
            putlog(node,0:@sysdate,1:$$,2:0,3:lnk,4:ICO_GTRAIN);
        end;
    2:  begin   // 駅
#RST ページをGETして解析して登録する必要有り
        foreach n in @clip[駅名リスト] do
            begin
                if ST = '' then Next;
                lnk := 'http://timetable.ekitan.com' + LNK;
                putlog(node,0:@sysdate,1:ST,2:1,3:lnk,4:ICO_STATION);
            end;
        end;
    3:  Result := True; //時刻表ページに到着
    end;
end;
//------------------------------------------------------------------
//  時刻表データの抽出と変換
//  '09.03.20 デザイン変更に伴う変更、本体はv5.3.4以降が必須
//------------------------------------------------------------------
function 時刻表解析(html):string;
begin
    DateStr := WrapStr(html,'<p class="attention">[','現在]</p>',1);  // 更新日付を取りだす
    Strip(DateStr);
    ln := TagWrap('title',html,FALSE);      // タイトル情報から路線名等を抽出
    Split('|',ln,tmp1,tmp2,ln);
    Split(' ',tmp1,StationName,tmp1);
    Split(' ',tmp2,RouteName,DestName,WeekName,tmp2);
    BaseCaption := "%RouteName% %StationName% %DestName%";   // タイトル生成
    MapLink := LINKS('駅周辺の地図',html);      // 地図のURL
    Caption := "件名,%BaseCaption% %DateStr%";
    DestInfo:= "時刻,%RouteName%,%StationName%,%DestName%,%WeekName%\n地図,%MapLink%";

    //RST 時刻表部分だけを抽出する
    PageClip('<!-- \[timetable\] -->','<!-- /\[legend\] -->',html);
    strip(html);                                    // 用が済んだらHTMLタグを除去
    html := Replace(html,' ',' ',TRUE);            // 全角空白を半角へ置換
    Init('',TimeValue,MarkList);                    // 作業変数の初期化
    foreach ln in @Lines[html] do
    begin
        ln := Trim(ln);                             // 前後の空白を取り除く
        if ln = '' then Next;                       // 空行なら次へ
        if IsDigit(CSV(ln,0)) then                  // 数字で始まる行は時刻表と見なす
        begin
            ln := ExtractCSV(ln,ss);                // まずは時刻を取出し
            TimeValue := TimeValue+ss;              // 時刻表に追加しておく
            while CSVCount(ln) > 0 do               // 時刻データがある間
            begin
                n := 0;
                while not IsDigit(CSV(ln,n)) do Inc(n); // 時刻が出てくるまで
                case n of       //RST 2しか存在しないと思われる
                0:  // 時刻データだけ
                    begin Init('',ds,ns);  ln := ExtractCSV(ln,ss); end;
                1:  // 種別と時刻
                    begin Init('',ds);  ln := ExtractCSV(ln,ns,ss); end;
                2:  //RST 種別と行先と時刻
                    ln := ExtractCSV(ln,ns,ds,ss);
                else Init('不明',ds,ns); ss := '00';
                end;

                ns := Replace(ns,':',':',TRUE);    // : は予約文字なので全角の:へ置換
                // 専用関数で処理を簡略&ちょっとだけ高速化
                ss := T5TimeItem(ns,ds,ss);             // <種別><行先><発時刻>へ変換
                MarkList := T5MarkList(ns,ds,MarkList); // 凡例の作成
                TimeValue := TimeValue+' '+ss;          // 時刻表に追加する
            end;
            TimeValue := TimeValue+"\n";
        end;
    end;
    Result := CatStr("\n",Caption,SiteInfo[5],DestInfo,TimeValue+'凡例,'+MarkList)+"\n\n";
end;
(*------------------------------------------------------------------
    時刻表ページのURLから時刻表のテキストを返す
    必要ならリンク先のデータも読み込んで変換する
    IN:     index   ノードインデックス
            pURL    親ノードのURL
            URL     読込むURL
            cache   キャッシュ有効フラグ
    OUT:    TEXT    変換した時刻表テキスト
------------------------------------------------------------------*)
function    TzConvMain(index,pURL,URL,cache):string; export;
    //----------------------------------------------------------------
    // 親ブロックのローカル変数にはアクセスできないのでcache引数が必要
begin
    TagStripSet(':BR:HR:DIV:',0,0);         // HTMLタグ除去で無視するタグ
    TagStripSet(':SPAN:',TX_SPC,TX_NONE);   // 空白に変換
    TagStripSet(':LI:',TX_COMM,TX_NONE);    //RST <LI>はカンマ変換

    Init('',Result,PastURL);                // 初期化
    Get(URL,cache);                         // 時刻表のページを取得、多分平日
    BasePage := $_;                         // リンク抽出用に覚えておく

#RST
#何故かカレントページ同じ方面リンクを返さないので最初だけ平日|土曜|休日を個別に処理
    foreach wlnk in @ReadLink['(平日|土曜|休日)',BasePage,URL] do
    begin
        Get(wlnk,cache);                        // 時刻表のページを取得
        html := $_;
        Result := Result + 時刻表解析(html);    // 所定のフォーマットに変換
    end;

    foreach dlnk in @ReadLink['*方面',BasePage,URL] do  // 方面リンクを読込む
    begin
        Get(dlnk,cache);
        foreach wlnk in @ReadLink['(平日|土曜|休日)'] do
        begin
            Get(wlnk,cache);                        // 時刻表のページを取得
            html := $_;
            Result := Result + 時刻表解析(html);    // 所定のフォーマットに変換
        end;
    end;
end;
//------------------------------------------------------------------
// スクリプトデバッグ用のメイン
// 山手線・渋谷駅
//------------------------------------------------------------------


begin
//        TzAutoUpdate;

    Get('http://timetable.ekitan.com/train/TimeStation/164-4_D1.shtml',cache);                         // 時刻表のページを取得、多分平日

    foreach dlnk in @ReadLink['*方面'] do  // 方面リンクを読込む
    begin
Message(dlnk);
    end;

end.

  

三省パソコンでファンレスサーバー(08/07/18更新)

三省パソコンでファンレスサーバー(08/07/18更新)

三省パソコン(ACS-CX700M:http://www.assistjp.biz/)で構築するWindowsファンレスサーバー機構築メモ。
内容更新はこのエントリーを直接編集します。

[本体]
VIA C7 小型ファンレスPC
付属品:本体、ACアダプター(ACコンセントは3Pプラグ)、縦置きスタンド、HDD内蔵用トレイ、HDD固定ネジ、ディスプレイケーブル固定用ネジ、OS付きモデルは2M CFとOSを日本語化した注意書きの紙一枚
(説明書とかドライバーCDとか言った親切な物は付属しません)

[ディスプレイ]
変則ワイド11インチ、モニタースピーカー付、画質調整ボタンはディスプレイ裏面に配置。OSのインストールやサーバー監視目的なら使い物にならなくはない。
付属品:本体、電源分岐ケーブル(確かディスプレイの箱に入っていた気がする)、スタンド、スタンド組み立て用ネジ、ステレオオーディオケーブル

[電源]
・電源はPC本体にのみ付属、ACアダプター12V 4.0A センタープラス 内径:2.1mm 外径:5.5mm。ディスプレイとは二股ケーブルで分岐。但し、付属ディスプレイと分岐して使うと容量不足でまともに動かないので二股ケーブルは使ってはいけない。(現在は二股ケーブルではなく、本体、ディスプレイそれぞれにACアダプターが付属するようになった)
・流通当初、本体に付属していた12V4AのPSEマーク無しACアダプターは品質に問題あり。可能ならば、別のACアダプターに交換を推奨。なお、現在は、12V3.5AのPSEマーク付きに交換されているとのこと。

[BIOS設定]
・ACPI Type S3からは復旧できない模様(Windows XP)
・ディスプレイタイプはBIOSで設定する必要あり
・設定をミスってBIOSが表示されない(out of scan range等)時は、
 再起動でENDでBIOSに入り(タイミングはキーボードのLEDが点いた後ぐらい)、↓×2,Ent,↓×1,Ent,↓×9,Ent,,↑×沢山(一番上のCRTを選択),Ent,F10,Ent で再起動。

[DVI]
・本体のDVI端子はDVI-I形状であるが、このDVIポートはデジタルのみでアナログを出力していない。変換コネクターでVGAケーブルを接続しても表示されない。

[ファンレス]
・マザーボードはCPUの温度表示機能をサポートしてない模様。いろんなツールを試したが、CPU温度は表示不可。但し、CPU自身は温度管理機能を持っていて、温度に応じて動作を変える設定らしきものがBIOSにある。
・HDDは特に放熱が考慮された構造ではなく、単にケース内にフレームでマウントされるため、他のHDDも放熱が考慮されたファンレス機と違って温度が高くなりがち。50度越えは当たり前。
・夏場はあまりにも危険なので12cm静音ファン(scythe S-FLEX SFF21D)をタイラップでケースに固定して使用中(ホコリよけフィルターをつけて、外からケースに風を当てる方向で取り付け)。電源は12V分岐ケーブルでACアダプターから分岐。ファンレス機にファンをつけて、ファンレスでは無くなっているが、目的である無音は達成しているので問題なし。
・当初は、USB扇風機で風を当てていたが、耐久性に問題があったので12cmケースファンに変更。USB扇風機は結構風が出ていたが、scythe S-FLEX SFF21Dでは、手をかざしてもほとんど風を感じない微風ながらも、冷却効果は意外にも遜色なし。

温度センサー VIA VT1211

静音ファン情報
5V可 10db以下
Noctua NF-R8 7dB 4-13V 80mm
Noctua NF-B9 7.9dB 92mm
Coolink SWiF-801 Basic 11dBA 4V-13V 80mm
ZAWARD ZGF80(WH|BR|BU) 8.9dBA 5V/12V 80mm
12V分岐ケーブル使用
scythe Gentle Typhoon 12cm 500rpm 5dB
scythe Gentle Typhoon 12cm 800rpm 9dB
scythe KAZE-JYUNI 500rpm 7.5dBA 12cm
scythe S-FLEX SFF21D 800rpm 8.7dBA 12V(5V?) 120mm
scythe 鎌フロゥ12cm超静音 15.8dBA 12V(5V?) 120mm


[CFのWindows XP Enbeded]
●重要:CFのAdministratorの Local Settings\Tempに、トロイの木馬タイプのウイルス感染ファイルが存在。Local Settings\Temp内の全削除を推奨。
タイムゾーンが狂っているので要設定。

[マニュアル]
販売元サイトにてPDFで提供。書込み禁止機能(ewf)に関する記述は必読。
http://www.assistjp.biz/pdf/acs_cx700m.pdf

[ドライバー]
Windows用のドライバーはここから。CX700M用
Chipset
http://www.viaarena.com/default.aspx?PageID=420&OSID=1&CatID=1070
Graphic
http://www.viaarena.com/default.aspx?PageID=420&OSID=1&CatID=1160&SubCatID=184
Audio
http://www.viaarena.com/default.aspx?PageID=420&OSID=1&CatID=1010&SubCatID=154
LAN RTL8169用
http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PNid=13&PFid=4&Level=5&Conn=4&DownTypeID=3&GetDown=false&Downloads=true

●重要:アシストコンピューターのHPよりドライバー&ユーティリティの配布が始まったが、またもやウイルス入り。Other\Player\PowerDVDUltraDeluxe-v7.3\keygen.exeがトロイの木馬警告が出ます。そもそも、keygenが付いている時点で怪しすぎるので利用には要注意。
ちなみに、このアーカイブの中には中国語の説明書やBIOSの設計画面的なExcelファイルも含まれてます。


=============================================================================
[サーバー構成]
CPU: VIA C7 1G
Mother: VIA CX700M
OS: Windows XP Professional SP3
HDD: S-ATA 2.5" Hitachi Travelstar 5K250 HTS542525K9SA00 250G
Memory: 1G
FAN: scythe S-FLEX SFF21D

HTTP: Apache 2.2
Perl: ActivePerl 5.8.8.822
PHP: PHP 5.2.6
DHCP: DHCP Turbo
DDNS: DiCE
SMTP+POP: PMail server free
FireWall: Sygate Personal Firewall 5.6
SPAM対策: Spam Mail Killer

[サーバー用、各種ツール]

ProcessWatchV2 :プロセス監視ツール
http://www.smartconsultant.de/
クラッシュして落ちる常駐ソフト等を監視して、プロセスが落ちたら再起動させたり、指定プロセスのプライオリティを任意に設定できたりするソフト。暴走してCPU100%とかの監視は出来ない。
Tips
・external commandsで空白を含むコマンドは適宜""でくくる必要あり。
・コマンドはcmd経由で実行される為、cmdウインドウが開きっぱなしになる。
 ↓
 preコマンドに、
  taskkill /F /FI "WINDOWTITLE eq C:\WINDOWS\system32\cmd.exe" /IM cmd.exe
 postコマンドに再起動させたいコマンド
  "C:\Program Files\xxx\yyy.exe"
 を登録。
 これで、yyy.exeを起動した後、タイトルがcmd.exeのcmd.exeを停止する。
 但し、他に同じタイトルのプロセスがあると巻き添えを食う。
 (もしかしたら、CPU timeが0:00:00のcmd.exe限定の方がいいかもしれない)


Process Explorer :Microsoft公認、高機能タスクマネージャー
http://technet.microsoft.com/ja-jp/sysinternals/bb896653(en-us).aspx
アイコンを表示してわかりやすく、個々のプロセスの通信先や親子関係も一目瞭然。
  

ステルスSSID と Windows

Windowsの標準無線LAN機能でステルスSSIDのAPに繋がらないのか?と試行錯誤してたんだけど、結論として、「Windowsの標準無線LAN機能でステルスSSID」への接続は無理って事らしい。
厳密には、非常に限定的な環境でのみステルスSSIDに接続可能で、一つでもほかに有効なAPがあると優先順位とか関係なく、ステルスSSIDには繋がらなくなる仕様だそうで。
結局、自由にステルスSSIDに繋ぐには、Wi-Fiカードのツールを使うしか方法が無いようです。

続報。
Windows XP SP2/SP3で、Windows標準ツールで、ステルスAPに接続するための条件

ステルスAPの設定(APタイプを自動にする)
APのプロパティの接続タブ
 自動接続:このネットワークが範囲内にあるとき接続する→チェック(SP3のみ)
APのプロパティのアソシエーションタブ
 このネットワークがブロードキャストしていない場合でも接続する→チェック

それ以外のAPの設定(APタイプを手動かオンデマンドにする)
APのプロパティの接続タブ
 自動接続:このネットワークが範囲内にあるとき接続する→チェックしない(SP3のみ)
APのプロパティのアソシエーションタブ
 このネットワークがブロードキャストしていない場合でも接続する→チェックしない
 もしくは、該当APがアクセス可能範囲内に存在しない

要は、自動接続の可能なAPが接続したいステルスAPの時のみ接続可能。
他に、自動接続可能なAPが存在する場合は、接続順位が低くても、非ステルスAPが優先される。
  

Bフレッツ マンションタイプ(VDSL)で、WANインタフェースが頻繁にリンクダウンする

NTTのBフレッツ マンションタイプ(VDSL方式)で、WANインタフェースが頻繁にリンクダウンしてネットワークがダウンする。

原因
VDSLはADSL以上にケーブルの相性がシビア。

対策
環境として、光終端集合装置から室内モジューラージャックまで約10mの構内配線、モジュラージャックからVDSLモデムまで5mのモジュラーケーブル。
対策前は室内の5mのモジューラーケーブルが、ADSL時代から使っていた、「ノイズ対策品 シールド&両端フェライトコア付きのツイストペアタイプ」を使用していたところ、1日に1回のペースでリンクダウンが発生。
切り分けのため、モジュラーケーブルを手持ちの、「ごく一般的な、通常のモジュラーケーブル7m」に変更したところ、リンクダウンは発生せず安定。
経験的データですが、VDSLにはツイストペア配線は相性が悪いようです。
  

KB925876のインストールが途中で固まり完了出来ない

Windows updateもしくは、ダウンロードセンターで配布されている、「Windows XP 用リモート デスクトップ接続 (Terminal Services クライアント 6.0) (KB925876)」が正常にインストール出来ない。

原因
Norton Anti Virusのスクリプト遮断機能がインストーラーと競合してるため

対策
Norton Anti Virusのオプション>スクリプト遮断にて、「スクリプト遮断を有効にする」のチェックを一時的に外して下さい。
なお、スクリプト遮断は様々な場面で問題を起こす可能性があるので、インストーラーやWebスクリプト関係でうまく動作しない場合には、スクリプト遮断との競合を疑ってみて下さい。
  

はてなアンテナをRSSリーダーで使う

サイトの更新をチェックするのに便利な「はてなアンテナ」
はてなアンテナでもRSSをフィードしていますが、いまいち挙動があやしく全然使い物になりません。(新しいチェック先が追加された事を知らせるだけで、チェック対象のサイトが更新された事は通知してくれないように思われる)
これを、gooのRSSフィードメーカーと組み合わせることで、はてなアンテナでチェックしているサイトの更新をRSSにて知ることが出来ます。

方法
1.はてなアンテナに、パブリック設定でチェックしたいサイトを登録する。
2.gooフィードメーカーに、はてなアンテナのURLを登録する。
  この時、フィードの作成範囲は「ページ全体から作成」を選択する。
3.作成されたエントリーのRSSをお好みのRSSリーダーに登録する。
  具体的には、作成したエントリーをクリックしたあと、右の「フィードの内容確認」を押して
  表示されるウインドウのURLをリーダーに登録する。

はてなアンテナのロボットの巡回はおよそ1日1回ぐらいのペースですが、無料版gooフィードメーカーの更新タイミングも1日1回なので、最悪、更新を知るのが2日遅れになるかもしれません。
  

Firefox 1.5.x以降 で Google, Yahoo, マピオン等のスクロール地図が表示出来ない

Firefox 1.5.x で Google, Yahoo, マピオン等のスクロール地図にアクセスすると、地図画面が壊れた画像アイコンになって表示されない。

Javascriptの設定で、画像を別のものに置き換える」を禁止にしていると、スクロール地図が表示出来ないが、この設定をFirefox 1.0.xではオプションの設定画面で変更出来ていたのが、Firefox 1.5.xではこの設定項目が無くなったため、1.0.xで禁止にしたまま1.5.xにバージョンアップすると、設定画面で設定を変更することが出来なくなってしまう。

アドレスバーに about:config と入力して、出てくる画面で
dom.disable_image_src_set の値を ture から fales に
変更するとスクロール地図が表示されるようになります。(dom.disable_image_src_setをダブルクリックすると設定が変わる)  

Linux Zaurus と 京ぽんの USB接続での通信速度改善

Linuxザウルス(SL-C3000等)にて、「AH-K3001V SL-C3000 2.4.20 自己責任利用モジュール」を利用して、USB接続でacmモデムとして認識して通信を行っている場合、妙に通信速度が遅くて、大きなファイルの転送ではしばしばタイムアウトが発生して転送が出来ない場合がある。

京ぽんのモデムのPPPの仕様にクセがあり、最適化が行われたPPPパケットを破棄してしまうため、通信速度が低下してるとのこと。

Linux Zaurus Special Kernelを導入することにより解決します。
スペシャルカーネルのppp_async fixにてPPPのチューニングが行われています。
  

Windows XPの修復インストール

Windows XPでBIOSのアップデートやマザーボードの交換等を行った後、Windwos XPが全く起動しなくなる。また、何らかのアプリケーションをインストールする時に、「Internet Explorerが壊れています、IEの再インストールをして下さい」と言われアプリケーションのインストールが出来ない。

BIOSアップデートやマザーボードの交換を行うと、レジストリに記憶されているBIOS固有の情報が一致しなくなりWindowsの起動が途中で止まる事があります。また、IEの機能をを利用しているアプリケーション(PhotoShop等)をインストールする時に、IEが壊れているのでIEを再インストールして下さいと言われるが、XPはIEだけの単体再インストールが出来ないのでどうすることも出来ません。
このような場合、Windows XPの修復インストールが有効です。(回復コンソールとは別もの)Windows XPの修復インストールは以下の手順で行います。
1.Windows XPのインストールCDでPCを起動。
2.セットアップの開始の画面が出たらEnterを押して「セットアップの開始」を選択する。
  (回復コンソールのRではないので注意)
3.ライセンス契約にF8で同意する。
4.HDDにインストール済みのWindowsを検索してインストール済みのXPが見つかると、それを修復するかどうか聞いてくるので修復したいWindowsを選択してRを押す。
5.あとはインストーラーの指示に従う。
以上で正常にWindows XPが起動するようになります。
なお、今までインストールしたアプリケーションやドライバーは保持されているので心配ありません。
但し、今まで行った各種Windows Updateは初期化されるので、再度Updateを行う必要があります。

この修復インストールは、Windowsの調子が悪くてアプリケーションはそのままに、Windowsだけを初期化したい場合にも有効です。
  

1628 スクリプトベースのインストールを完了できませんでした。

アプリケーションのインストーラー、バージョンアップのパッチインストーラーを実行すると、InstallShieldのエラーダイアログで「1628: スクリプトベース のインストールを完了できませんでした。」が発生してインストールできない。

原因1:
いろいろ検索するとインストール情報のレジストリに問題があり、このエラーが発生することが報告されています。この場合は、アプリケーションベンダーが提供するレジストリ削除プログラムを使用してレジストリを削除することにより回復します。
原因2:
インストール各種情報に漢字が含まれている場合にもこの問題が発生することがあります。問題が発生する漢字情報は、ユーザアカウント名やインストーラーが置かれているディレクトリ名も関係することがあります。関連しそうなところに漢字が使われていないかチェックしてください。
  

Palmの予定表で任意の期間保存して過去のスケジュールを削除する

標準のPalmの予定表で過去のスケジュールの整理をしようとすると、最大1ヶ月間しか過去のスケジュールを取っておけないが、これを任意の期間保存して過去のスケジュールを削除する方法。

発想の転換です。スケジュールの削除をする前に一時的に日付をずらしましょう。1年ずらしてから整理をすれば過去1年間を保存して一括削除出来ます。終わった後に日付を戻すのを忘れずに。
  

高速ではない USB ハブに接続している高速 USB デバイス / 高速 USB デバイスが高速ではない USB ハブに接続されています

Windows XPで、USB1.1のPCにUSB2.0の機器を接続すると上記のメッセージが出ます。初回は親切ですが、その後、機器を接続するたびに同じメッセージが出てきてうっとうしい。しかも、メッセージを確認して消さないと接続した機器が使えません。(そのとき確認できるヘルプには「PCにUSB2.0のアダプターを追加しましょう」と分かり切ったことを教えてくれると言う)

Microsoftのサイトに公式解説があります。http://support.microsoft.com/kb/835967/ja を参照して下さい。
公式解説はUSBコントローラ毎の設定ですが、レジストリ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Usb\ErrorCheckingEnabled を 0 にすると全てのUSBでの動作を変更出来ます。
または、いじくるつくーると言うツールの、Windows XPの設定項目で変更することも出来ます。
なお、PCがUSB2.0でもあるに関わらず、この現象が発生する場合はUSBドライバーが古い可能性があるのでMicrosoftのサイトでUSBドライバーをアップデートしてください。
  

デジカメ画像のノイズ除去

暗いところでデジカメ撮影すると背景の暗いところとかにノイズが発生します。これはCCDの感度を上げると必然的に発生するノイズで小型CCDを使ってるコンパクトデジカメでは避けられません。

方法1:デジカメの設定で感度を低く設定する
 デジカメの設定でISO感度を50とかに設定するとノイズの発生は防げます。但し、それに応じてシャッタースピードが遅くなるので三脚使用等の対応が必要です。

方法2:ノイズ除去レタッチソフトを使う
 デジカメのノイズ除去を行うレタッチソフトがあります。(Neat Image、ImageFilter等)これらを使うと撮影画像ファイルのノイズを除去できます。ソフトにより効果や操作方法が違うので自分での目的に合ったものを探してみてください。

方法3:プリンタードライバーのノイズ除去機能を使う(お勧め)
 なんと、最近のプリンターのドライバーには画像印刷の際にデジカメ画像のノイズ除去を行う機能が付いてます(エプソンなら「イメージ・ピュアライザ」、キヤノンなら「デジタルカメラノイズリダクション」)。元画像を修正するわけではないので印刷しない人には効果はありませんが、写真印刷を行う人ならば簡単便利で、かつ、かなり効果があります。写真印刷を行う人には一番のお勧め。
  

新デザイン用 offcemixi.css 暫定版

リニューアルしたMixi用の officemixi.css です。
やっつけで作ったので、メニューバーさえ見えません。

body {
background : #696969;
color : #333333;
}

a:link , a:visited , a:active {
padding : 0 2px;
color : #333333;
text-decoration : none;
border-bottom : 1px solid #CCCCCC;
}

a:hover {
padding : 0 2px;
text-decoration : none;
color : #333333;
background : #EDFEFE;
border : none;
}

table {
background-image: url(http://www.lawdata.org/law/kabegami.jpg);
}

td {
background-image: url(http://www.lawdata.org/law/kabegami.jpg);
}

img {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

#headerArea {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

#bodySide {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

#contentsTop {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

#intro {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

#myUpdate {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

#footerArea {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

#bodySub {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

.heading01 {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

#bodyMainAreaSub {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

.bbsNewItem01 {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

.sponsorList01 {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

.diaryBottomAd {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

.searchFunction03 {
filter:alpha(opacity=50);-moz-opacity:0.07;;
}

input{
background : #DCDCDC;
border: solid 1px;
color:gray;
}

input[type="image"] {
filter:alpha(opacity=50);-moz-opacity:0.1;;
}
  

Thunderbird 2 で新しくできたフォルダビューの選択タイトルを消す

Thunderbird 2から、フォルダビューの表示が、「未読フォルダ」「お気に入りフォルダ」「最近使ったフォルダ」が増えて、フォルダペインの上にその状態、切り替えを行う新しいタイトルバーが追加されました。
しかしながら、フォルダビューの切替は使わない、タイトル表示の1行分でももったいない(ワイドレイアウトの人とか)ので消したいと思っている人もいると思います。
あと、この新規フォルダータイトルのせいで、フォルダペインの最小幅が今までより広くなってしまっています。(正確には、設定上は今まで通り最小幅は100pxなのに、そこに表示する「最近使ったフォルダ」と言うのがきちんと表示される幅が最小になって実質170pxぐらいが最小幅になっている)

てなわけで、その邪魔な、フォルダの表示を切り替えるタイトル表示を消す方法。

userChrome.cssに、

#folderPaneHeader {
display: none;
}

を記述すればOK

なお、フォルダペインタイトルでの切替は出来なくなりますが、必要があれば、メニュー>表示>フォルダで目的のフォルダビューに切り替え出来ます。

フォルダビュー切り替えない人にはお勧めです。