IZはトトロ

となりのトトロを観たとき、劇中のシーンがどこまでがこの世でどこからがあの世なのか分からなくなった。もし子供のころに観ていたら、あの世は存在する!と確信していたと思う。

映画では大木の根のくぼみがそうだったが、僕もソファの下の反対側から光が差し込む薄明るいすき間や、山の中の防空壕跡の薄暗い穴が違う次元への入口になっているんじゃないかという気になっていた記憶がある。

となりのトトロには裏話の噂もある。ジブリは公式には否定しているが、いわくトトロは死後の世界の使者で、さつきとメイは実際には死んでいたという・・・

ハワイアン音楽を聴こうと思って調べたら、そんなトトロみないな人がいた。
97年、すでに38才で亡くなっていた。
下のyoutubeにハワイの伝統的な葬式の動画があった。遺骨を海にまくセレモニーで、みんなお祭りのように楽しそうに騒いでいる。
日本でも葬式ではビールでワイワイやるが、これはもっとストレートで素朴で、悲しいからこそそうなんだというのがよく伝わってくる。幌に「IZ lives」と書かれた船もあった。この人は、ハワイの人からいったいどれだけ慕われていたんだろう。



ハワイの人同士では、IZのことは生きている人の話題のように話されるらしい。

人の死は受け入れないといけないものではないのかもしれない。それが記憶にある間、存在しているものとして共有するほうが、もしかしてずっと人生は豊かなんじゃないだろうかと思った。思い出すたびに枕を濡らすのではなくて。

人の魂は、あったとしても実体を感じることはできない。まるでプログラムのコードのよう。普段はモニタに表示される文字を実体のあるもののように受け止め、そのプログラムの動作をあたり前のように追っかけているが、その文字の羅列自体は、実はなんの実体も持っていない。電気のオンオフが繰り返されているだけだ。

何々さんという名前がついたデータのかたまりみないなものをオブジェクトという。プログラムにはそのオブジェクトがたくさんあって、「何々さんこれをしてください」とか、「何々さんこれを覚えていますか?」とかいうやりとりをお互いにやりあって動いている。
そして、その何々さんが誰からも呼ばれなくなると、そのオブジェクトは連絡網から解放され、ようやく完全に消去される。プログラムはそうやって、ただ一行一行順番に実行されていた頃よりも、同じ一行でずっと豊かに動作できるようになった。

魂も本当は、プログラムのオブジェクトみたいに何らかの形で実在しているのかもしれない。
IZというオブジェクトは、今もハワイの人のみならず世界中の人々から呼ばれ続けている。

IZの遺骨を海にまくハワイの人たち、ワーワーいいながら水面をバシャバシャたたいているのをみていると、本当にこんな気がしてきてしまう。

IZオブジェクトは実際に存在して、それを感じて豊かに暮らしている世界があるように。





100万人の心を震わせたピザデブブサ男

何をやっても自信が持てず、つまずいてばかりの人生。携帯電話を売る仕事をしているが、夢は生きがいと感じることを仕事にすること。実際、人の影ばかりを歩いてきたような雰囲気が顔にも風体にもにじみ出ている。そんなポール・ポッツさんの唯一の心の支えは、自分の声だった。
「自分の声がいつも親友でした。
 学校でいじめられたときはいつでも自分の声が頼りでした。
 歌っている時は、そんなことはどうでもよくなります。
 たぶんそれが自信が持てない理由だったのかもしれません。」

すき間のある前歯に、脂肪が垂れる口元、だらしないYシャツの襟。そんな彼がある日テレビの素人オーディション番組に応募した。

ありえない舞台に立ち、たらした両手を硬直させたまま、一点をじっと見つめて全身の力を振りしぼり、後先のことなんてまったく頭にはないように必死に歌う。

そんな様子を見ながら耳に入ってくる歌声がもう人類の叫びのようで、僕も気がついたら涙が出ていた。歌い終わったときの物憂げな表情がまたたまらない。


すごい視聴率だったそうだ。


くわしい紹介サイトはらばQ




リヤキャリアバッグ






BSMオプションパーツのリアキャリアバッグ。

1.フロントシングルでディレイラーを付けない
2.リアキャリアを外さない
3.決して安くはないメーカーオプション品

という3条件を満たす奇特な人だけがたどりつく、ビミョーな商品。骨組内側の空間を荷物スペースに利用する、モールトンらしい商品。
天井側はプラ板でキャリアから垂れ下がらないようにという考慮もされています。底は布一枚なのでゴムのクッションを敷きました。

中に入れるのは左上から時計周りに、
ABUS多関節
携帯工具
パンク時の二酸化炭素ボンベ、それ用のバルブ
英式バルブ、チューブ、タイヤヘラ、
ケース、タオル。





などを入れても、上にはまだ少し余裕があります。
思ってたより結構入りました。

重さ1kgのロック、多関節もようやく安住の地を見つけたかもしれません。

普段出し入れしない荷物をまとめて入れておくにははうってつけかもしれません。

つけてみてみると、それっぽくていい感じです。

買ってよかったかも。

向こう側に見えるのは、届いて以来ずっと週末が雨で出番を待ちこがれている折りたたみチェア、
上のバッグの底板を抜いて前に畳み、空いたスペースに乗っけます。



背丈くらいそびえ立ってしまいますが、軽いので平気そうです。

これで、海を前に足を伸ばして本が読めたら、もうたまんないっす。なにもいりません!

BSM最高!











mirrorMan - オンマウスでフェードイン

いつもチェックさせてもらっているcolissさんのサイトで、おもしろいエフェクトを紹介されていたのでmirrorManにもつけてみました。
お気に入りボタンにフェードインのエフェクトをつけたソースの抜粋です。
<style>
.setLstSpn {display:block;padding:0px 8px 0px 8px;
background:url(img/setLstLft.gif) no-repeat -1px right
}
</style>
<script>
with(document.body){
onmouseover = handleMouseOver;
}
function handleMouseOver(){
var src = event.toElement||event.srcElement;
var cls = src.className;

…(省略)

}else if(/^setLstSpn/.test(cls)){
$(src).toggle().fadeIn();
if(/MSIE 6/.test(navigator.appVersion)) $(src).css('display','inline');

src.style.background = 'url(img/setLStRht.gif) no-repeat -1px right';
}
}
</script>
ここでfadeIn()は思いつかなかった!

フォーカスが
フェードインで
明るくなります

追記:PCのIEが6だった場合に要素がブロック化してレイアウトがぐちゃぐちゃになってしまっていたので、displayプロパティをinlineに設定しなおす行を追加しました。





本 - 『マリス博士の奇想天外な人生』

コールマンの折りたたみ椅子を買ってBSMのキャリアにくくりつけ、新しいキャリアバッグもつけて用意万端の週末だが、今日も明日も雨。自転車ブログ村サイトからのアクセスがいつもより多いのも雨のせい?

『生物と無生物のあいだ』の著者の翻訳本。巻末に対談もある。ノーベル賞サーファー博士の自伝、この本こそ海辺で読みたかった。カラマーゾフじゃなしに。


大学生時代に友達同士でインドに安旅行にいった。その時の一番強烈な体験は、バラナシのホテルに泊まっていたときでのこと。通りに面したベランダに居心地のいいテーブルがあって、そこで皆でダベったりして気のいい16才の若い従業員と友達になっていた。その日の夜、その従業員がドアをノックしてきて、他の日本人の宿泊客が様子がおかしいから見てくれという。
その部屋に入ってみると、カップルがいて笑ってヘラヘラしていた。男は坊主頭で、名前を聞くとダイドーだといった。女の名前は忘れたが、すぐにベジタリアンの差別について何やら語り始めたのを覚えている。インドは酒は禁止されているのにまずいなと思ったが、酒のボトルらしきものは見当たらなかった。かわりに、ライチとカボスを足して割ったような柑橘系のピンポン玉くらいの果物が幾つか、包丁で二つに切った後があった。

話かけてもべろんべろんで会話にならないし、一ところにじっとしていないので目が離せない。トイレにいくといえば、男は入口のドアに向かってしようとしたり、女は入って出てこないと思ったらTシャツを脱いで上半身裸で手洗いで洗濯を始めていた。
それだけならまだしも、彼らの五感で感じるものは全て幻のようだった。何もない床でこぼれ散った何かをかき集める動作をして食べようとしたり、サソリだかイモリだかがベッドのあちこちを這いずりまわっているだとかを楽しそうに伝えてきたり。これはダメだというのを目でホテルの人に合図してから、手に取れるものはすべて棚に隠したりして、とにかくベッドに座らせておとなしくさせていた。
そうこうしていると、インド人の医者がやってきて、ホテルの支配人らしき人と真剣な顔で何やら相談を始めた。どうやら、あのタトゥーラとか何とかいう果実がLSDよりも強力な作用を持つらしく、二人はそれを直接しゃぶってしまったからもうどうしようもないのだという。一時間おきに飲ませるようにといって利尿剤を処方して帰ってしまった。

それから朝まで、ホテルの従業員が1時間おきに持ってくる利尿剤を飲ませながら、幻覚や幻聴、意味不明な言動のおつきあいをした。いいかげんこっちも疲れて、「ホーリーネームだか何だか知らないけどダイドーさん、日本に髪の毛忘れてるみたいだからとりあえず取りに帰れよ」とイヤミをいうと、それは幻聴には聞こえなかったのか、おれは日本で~お前も明日にだって死ぬんだ~とハイテンションになった。僕は笑ってツルツル頭をなでなでして「おーよしよし」とやってやったら、キョトンとしてた。そこまでしてもプッツンしないのは酒より恐い。もうくたくたになって彼らの横で眠った。今思えば、髪の毛を食われるか便器がわりにされるか、何をされるか分からないこわいことをしたが、その時は目を離すことができなかったし、なんだか情も少し移って気を許していた。

僕がガンジャ程度ならインドでやってみたかどうかは読む人のご想像にまかせるが、脳の働きが壊れるというのは、機械のそれと変わらないなというのが結論だ。動画や音声が無限にループ再生されてしまったり、キャブをいじってバイクのスロットルが全開から戻らなくなったり。手に負えない未知なるものとの遭遇の一瞬を感じさせるものではあるが、所詮故障は故障にすぎない。
だから、ドラッグをやって感じるかりそめの幸福感だったり全能感というものは、その場だけのものでしかなく、変な夢をみたというのと何も変わらない。

バイクの事故で気絶して救急車で集中治療室に運ばれ、丸一昼夜意識が戻らなかったときも変わった気持になったことがあった。まず時間の感覚がなかった。目を覚ます度に、おれここで何してんのと家族に何十回も聞いていたらしい。窓の外にある木と会話ができる気がして、それが不自然なことという自覚もなく話しかけたりしていた。夕暮れ時の窓の外の明るさと僕の感情が直結していて、黄昏気分とそれとが一体化しているのもごくあたりまえにハッピーなことのように感じた。歩いてトイレにいくにも、エスカレーターで浮遊して動いているような感じだった。
しかし、半日、一日と時間が過ぎるほどに、僕の頭はみるみる時間の感覚を取り戻し、窓の外の世界も外部の存在になっていった。翌朝目が覚めたときには、頭は元通りのクリアな状態に戻った。

ノーベル賞受賞者のマリス博士は、LSDの経験者であることを公開しながら、LSDがもたらすものに対する一定の評価は変えていないように読めた。テレパシーの体験や、一人で命を落としそうになったときに幽体離脱ができる女性に助けられ、後からその説明をされてせまられた話。アライグマのような生き物に「こんばんは、博士」と話しかけらた瞬間から数時間の記憶が全くない話、トンデモ体験のオンパレードだ。
それも、科学者としてのマリス博士はとても正直者で、未知なるものは全て科学の対象なのだからだろう。一方で、金や権威といった俗っぽいことで科学を捻じ曲げる科学者を痛烈に批判する。健康、環境やエイズの問題を食い物にでっちあげて人々を不安症におとしいれ、自分はBMWに乗って郊外の邸宅に住む人たちをこきおろす。

僕が女だったら、最後の章を読んで心がときめいているはず。さすがモテモテマリス博士。

p310「地球の未来は、人間の思惑とは無関係に展開していくのだ」(と低くてあついため息をもらし)、「人間は~」「地球は~」「人類が~」と7,8回続けて(熱い眼差しを向けて)語った後、こういう。

p314「人類など巨大な岩石の表面に薄く生えているコケのようなものだ。人類は思考し、言葉を操る特別な生物で、その数を増加させている。しかしこの地球の運行をピクリとも変化させることはできない。地球のごく表層を占有し、ひっかいて自分のものにしたつもりでいるにすぎない。」

p315「人間ができることと言えば、現在こうして生きていられることを幸運と感じ、地球上で生起している数限りない事象を前にして謙虚たること、そういった思いとともに缶ビールを空けることぐらいである。」


キャー!ステキ!




CATEYEのLEDライト

今日は涼しかったので乗らずにいられるかと、前の職場の飲み会で飲んで帰った後にタイヤにいっぱい空気入れて出た。30km/hで練馬駅前までいって帰ってくる。



注文していたキャットアイ(CAT EYE) コンパクトオプティキューブライト HL-EL400。ちゃんと地面も照らしている。写真のように襟巻きのような部分がまぶしい位に光っているのがたまにきず。

ハンドルの下側につけて、上側には一緒にコンパスもつけた。











チューブ - 純正とシュワルベ

右がBSM純正で、左がシュワルベの17inch兼用の18inch。
左は輪ゴムでしばってある分、よけいに小さく見えるのを差し引いても軽くはなりそうだ。

回転モーメントの小さい小径でタイヤ外径部の重量が軽くなれば、加速↑で速度維持↓という変化も大きそう。ちょっとした空気圧の違いで相殺されてしまいそうなことだろうけど。

純正タイヤは固くて転がりが軽い印象があるが、これとシュワルベのチューブを合わせるのもちょっとおもしろそうではある。





映画 - 『歩いても歩いても』

少し前にやっていた「結婚できない男」というドラマ、阿部寛と夏川結衣のコンビでやっていたのをみて面白かったのでこの映画も去年の春のクランクインの発表のときから見たいと思っていた。僕は素人一般人レベルながら阿部寛に似ていると言われるから彼には親近感があり、結婚できない男という自分みたいな設定のドラマでもあったからだった。
なにより、夏川結衣とのコンビがよかった。優柔不断というか自分の世界にこもりがちな雰囲気の阿部寛と、シャープな切れ味で男にすぱっと気持を問いかける夏川結衣。ドラマの向こうの人事ながら、この二人本当に結婚すればいいと思ってしまった。最後に診察室で彼に気持を打ち明けるときの彼女の目は今も忘れられない。

ところがである。阿部寛は結婚記者会見でこれ以上ないほどの幸せぶりを披露した。夏川結衣ではなく、一般人の女性との。
え、どうして?『歩いても歩いても』を楽しみにしていた僕の頭に暗雲がたちこめた。もしも、夏川結衣氏が彼に気持を寄せていたとしたら、夫婦の設定であるこの映画はとてもつらいものになってしまうだろう。もちろん夏川結衣は気のしっかりした一流の女優だから個人の感情で仕事をダメにしたりはしないだろうが・・・

そんな気持ちを引きずりつつ、今日やっと観てきた。1時間前にいって一番後ろのいい席を確保して。
映画自体は小津安二郎の現代版のようでとてもよかった。演技もみんな自然体でよかったし、父母祖父祖母孫たち、それぞれの立場から家族を守る姿勢と本音の両方が痛いほど描かれていて、見ごたえがあった。

阿部寛はいたって相変わらず阿部寛だった。夏川結衣はというと、あらかじめいうが、異性を見る曇った色眼鏡というのはたいてい真実とは違い、間違っている。そもそも、夏川結衣が独身なのか彼氏がいるかどうかすら私は知らない。それを踏まえていうなら、彼女はさびしそうに見えた。夫婦らしさを感じたのは唯一、ふとんの上で「おへそからじわじわ入ってくる」話をしていたところだけ。もちろん、そんなことを気にして観ていない観客にはちゃんと夫婦らしく演技していたことは、彼女の名誉のためにいっておかなくてはならない。

要するに一言でいうと、阿部寛似の僕は夏川結衣がタイプだったというだけの話である。






mirrorMan - ドライブ割当て

Windowsサーバはドライブを割り当てるほうがアクセスが速いし安定している、気がする。
のでドライブを割り当てています。

画面上では\\(バックスラッシュ)で始まるUNCパスで表示していますが、


ドライブも割り当てています。


内部で処理するのに気を付けた点は、
* ユーザはドライブ文字を意識しない。
* 親ディレクトリで割り当てられたドライブがあればそれを使う。
* 終了時に一括して切断する。

1つめは、空いているドライブ文字を検索してから割り当てます。
2つめは、割り当てパスとの前方一致でチェックします。
3つめは、mirrorMan自身で割り当てたドライブを繰り返し処理で切断します。

 1|function chkMapping(path){
2| if(!ssh.NameSpace(path)) return path;
3| if(!sfs.GetDriveName(path)) return path;
4| if(!sfs.GetDrive(sfs.GetDriveName(path)).DriveLetter){
5| var enumDrvs = (new ActiveXObject("WScript.Network")).EnumNetworkDrives();
6| for(var i=0; i<enumDrvs.length; i+=2){
7| if(!enumDrvs.Item(i)) continue;
8| if(enumDrvs.Item(i+1).toLowerCase() == path.toLowerCase())
9| return enumDrvs.Item(i)+"\\";
10| if(0==path.toLowerCase().indexOf((enumDrvs.Item(i+1)+"\\").toLowerCase())){
11| var lst = path.slice(enumDrvs.Item(i+1).length);
12| var pth = sfs.BuildPath(enumDrvs.Item(i), lst)
13| return pth;
14| }
15| }
16| for(var i=71; i<92; i++){
17| if(i == 91) return wsh.popup("ドライブが全て使用されています");
18| var d = String.fromCharCode(i);
19| if(!sfs.DriveExists(sfs.GetDriveName(d+":"))){
20| if(mapDrive(d, path)) return d+":\\";
21| else return false;
22| }
23| }
24| }else return path;
25|}
2行目はパスがNameSpace()が通るかどうかチェックしています。
3行目はドライブ文字を取得するFileSystemObjectのメソッドですが、UNCパスでもtrueが返ってきます。逆に特殊フォルダではfalseになるのでチェックに使用しています。
4行目で、ドライブ文字からドライブオブジェクトを取得できなければ、ドライブを割り当てるべきパスとしています。
5行目はドライブ文字のコレクションを取得しています。
6行目ですが、このコレクションはドライブ文字とパスのペアになっているのでi+=2で回します。
8行目では、既に割り当てたドライブがあればそのドライブを返しています。
11行目からは、親フォルダにドライブ割り当てされたパスが含まれていれば、それ以降のパスをくっつけて返しています。たとえば、\\fogeというパスがF:ドライブに割当たっているとして、\\foge\foo\だったらF:\fooというパスにして返しています。
16行目からは空いているドライブ文字が見つかるまで検索し、mapDrive()関数を呼び出しています。
 1|function mapDrive(d, path){
2| try{(new ActiveXObject("WScript.Network")).MapNetworkDrive(d+":",path,false)}
3| catch(e){return wsh.popup(e.number+":"+e.description,0,document.title,16)}
4| mappedDrv.pushDrv(d);
5| return true;
6|}
ドライブを割り当てています。割り当て後、ドライブ文字を次のオブジェクトに追加しています。
var ArrMapDrvs = function(d){
this.drvs = [];
this.pushDrv = function(d){ this.drvs.push(d) }
}
var mappedDrv = new ArrMapDrvs();
ドライブ文字を格納する配列とその配列への追加メソッドを持つオブジェクトです。
最後は、終了時に呼び出される切断処理です。
document.body.onunload = closeWin;
function closeWin(){
for(var i in mappedDrv.drvs) if(! unmapDrive(mappedDrv.drvs[i]+":")) return;
window.close();
}
ドライブ毎にunmapDrive()を呼び出してます。
 1|function unmapDrive(d){
2| try{ (new ActiveXObject("WScript.Network")).RemoveNetworkDrive(d) }
3| catch(e){
4| var sug = e.number =="-2147022492" || e.number =="-2147022495"
5| ? "切断してからmirrorManを終了するには、"+
6| d+"ドライブを使用中のファイル及びフォルダを閉じて再試行ボタンを押します。"
7| : "\n" ;
8| var btn = wsh.popup(d +" ドライブが切断できませんでした。\n\n"+
9| e.description+"\n"+ sug , 0, document.title, 69);
10| switch(btn){
11| case 3: return false;//[中止]
12| case 4: unmapDrive(d);//[再試行]
13| }
14| }
15| return true;
16|}
エラー番号はXPとVista、もしくはIE6とIE7or8で異なっています。
実際に表示されるメッセージは次のようになります。







『カラマーゾフの兄弟4』@若洲ヘリポート

荒川河口に向かう。パレサイは10時ちょうどではまだ半分車が走っていた。コーンで仕切られた左側一車線以外はもう自転車道路になっているようだ。スパッと横切って右側に出る。広い道路の主役が自転車になったみたいな、なんかいい気分だ。
日比谷交差点を東に曲がり、銀座を抜けて晴海通りをまっすぐ走り、勝どき橋で隅田川を渡る。あれ、これお台場に行く道だったとここで気づいた。荒川は河口どころかもう海になってる。まあいいや、この前走った道をまた行こう。
さっきから信号待ちのタイミングが合っている、頭をグリーンとレッドに染め分けた黒いスペシャのクロスバイクのお兄さんがいる。こちらはゆっくり走っているので後ろにいたが、晴海大橋でアメトークに出てた自転車芸人のあのセリフを思い出した。
「フジテレビ行くときの晴海大橋のあの地上高く空を飛ぶような感じと、下り坂を飛ばすスピード感がたまらない」


スイッチオン。
記憶の彼方からよみがえってきた奥田民生のこの曲「股旅(ジョンと)」

踏め踏め踏めー細道~

橋のてっぺんで緑赤頭兄ちゃんをすっとばし、下ハン握って59km!
ほんまか。YPKのchoronometerのサイコンはよく電波混線するし。


お台場手前のレインボーブリッジ入口のところで信号待ちしていると、後ろから「すいません」と声が。
「それなんていう自転車なんすか?」
「これ?これはBSモールトン」
「へー、後ろ走っててもう全然追いつかなくて、それタイヤ小さいのに、はやいっすねー、これ友達に借りて二日目なんすけど、全然走らないんすよ」
どうやら、お台場の花火かの祭りのバイトで来るのに借りているらしい。スペシャの黒クロス、よく見ると全然メンテされてないようだ。
「タイヤは大きい方がやっぱり楽でよく走りますよ」「そうなんすかー」
なんか納得してないようだ。
「ウーン、シューズをペダルに固定してるのと、空気圧の高いタイヤが大きいかなあ」
黒クロスの前輪をつまんでみる。全然空気が入っていない。
「これもっと空気入れたほうがいいですよ。それだけでも全然違うと思うから」
「はー、いやー股間もすっげえ痛くて」(話聞いてるのか?)
「ははは、僕のは穴あきなんで、これいいですよ」
「え!、それ店でこうしてくれっていえばやってくれます?」
「いや、こういう種類のもういっぱい売ってますよ」
へー、とさっきから自転車をしげしげと見つめて、「ありがとうございました!」といって走って行った。

うーん、アメトークの自転車芸人が晴海大橋の話をして奥田民生の歌を思い出してそれでガシガシ踏んでたからだと、見ず知らずの人にいきなりそんなことは言えないしなあ。
キコキコ漕いでいると件の小説の一節を思い出す。
今から70年前、先進国から半歩遅れで近代化の道を歩んでいたロシア、人々はまだロシア正教、つまりキリスト教の枠組みの中で暮らしていたが、これから科学の進歩で神は死ぬのだというくだり。
p394
「だれもが、人はいずれ死ぬ身であって、復活はないことを知るので、死を、神のように誇り高く、平然と受け入れることになる。人間はその誇り高さゆえに、人生が瞬間であることになんら不満をこぼすことはないし、自分の兄弟を、もはやいっさいの報いなしで愛するようになる。愛が満たすことができるのは人生の刹那でしかないが、愛が刹那にすぎないという自覚ひとつで、その炎は、かつて死後の永遠の愛に対する期待の中で広がっていったのとおなじくらい、つよく燃え盛るのだ・・・」
復活というのはイエスキリストのそれで、死後の永遠の愛というのもそれにまつわるそれだ。永遠の愛はともかく、復活の事実については今はもうごくごく一部の信派でしか信じられていないと思う。
とはいえ、愛の刹那と永遠とのこの2重真理が現代人にとってすでに現実かといえば、とんでもない。

緑赤頭の若者よ、ぼくが言いたいのはこうだ。
「だれもがいずれ自転車を降りるのであって、自分の自転車が遅いことになんら不満をこぼすことはないのだ。君に必要なのは、もはやいっさいの報いなしで自転車を愛する(整備する)ことである。その愛(自転車整備)が刹那にすぎないという自覚ひとつで、その炎は、永遠につよく燃え盛るのだ!!」

別に燃え盛っていらんだろう。あの若者には。
でも速さときれいさを保つために乗るたびやっている整備は、刹那的な行為ではある。
女が一生に一度かのような真剣な目で毎朝毎朝尽きることなくメイクをくり返すように。

妄想もたくましく、前回写真を撮ったコンテナ埠頭。
ものの10分ほどでバカデカいタンカーが接岸されてしまうのが経済効率スゴす。神の御技でも愛の刹那でもなんでもない。









お台場を後にして、若洲のヘリポート横の一直線道。きれいに剪定された植木と、すぐ横に見下ろす海がずっと続く。これは気持ちいい。突端のベンチで一服して、若洲公園へ。

たち○ょんをして戻ったらBSMがかわいく見えたので親バカな一枚。









ヘリポートのベンチにもどる。今日は汗が出るほど暑くないし、海辺で蚊も襲ってこないので快適だ。本腰いれて読むこと4時間。ドストエフスキーの饒舌で感情的な登場人物たちも場が法廷となると、不思議と生き生きして見える。まるで誰もが有能な弁護士かのようだ。とくにイワン。この場では逆に言葉少なで、ギャップがちょっとかっこいいと思ってしまった。相変わらず読み進めるのは苦痛を伴う。海と波の音がまったく似合わん。

帰りに夢の島公園の前を通ると、なにやらよさげなズンドコ節が、疲れた脳と腹にひびいてくる。WORLD HAPPINESSという看板が。お、これが職場の人が行くと言っていたやつか。入ってみよう。当日券4500円。無理。というか、その人にもいくといってないからやめておこう。でも出演者をみると、興味ある人ばっかだなあ。BONNIE PINKは好きだったな。会場内の撮影はだめだろうけど、これは外だし、誰も見えてやしないので。








mirrorMan - フォーカスローテート2

2はソースです。
function moveSelItm(){
var eID, iID = cntSelItmId(), iLR = getLR(2);
if((event.keyCode==37)||(event.keyCode==39)){
if(/^txt0|^txt2/.test(event.srcElement.className)) return;
if(/itmRnmFrm/.test(event.srcElement.id)) return;
}
setEventRetFalse();
switch(event.keyCode){
case 37://←
case 39://→
iLR = iLR ? iLR = 0 : iLR = 2;
eID = getLR(1) + iID; break;
case 38://↑
if(iID) eID = getLR(0) + --iID;
else if(!iLR){
eID = getLR(0) + lftPains.Count;
iID = lftPains.Count;
}else{
eID = getLR(0) + rhtPains.Count;
iID = rhtPains.Count;
} break;
case 40://↓
if(iID) eID = getLR(0) + ++iID;
else{
eID = getLR(0) + ++iID;
if(!document.all(eID)) return;
}
}
if(document.all(eID)){
cntSelItmId(iID);
selItmLR.innerText = iLR;
if(document.all(eID).firstChild.id =="itmRnmFrm")
txtBoxFocus(document.all(eID).firstChild);
else{
selItm(document.all(eID));
keyDowns.innerText ="";
}
}else if(iID > 0){
switch(event.keyCode){
case 37://←
case 39://→
cntSelItmId(iID -1); break;
case 40://↓
cntSelItmId(0);
}
return moveSelItm();
}
}

方向キーが押されるたびに呼び出されるfunctionです。
cntSelItmId()は、フォーカスのあるアイテムのインデックス番号を返します。番号は上から順に0,1,2です。
押されたキーが←か→であれば、テキストボックスが表示中かどうかをチェックして処理を行わずに返します。
setEventRetFalse()はevent.returnValue = false;をしています。たとえばウインドウにスクロールバーが表示されてい場合に、IEの方向キーでの画面スクロール動作が同時に行われてしまうのをオフにしています。
その次のswitch文はフォーカス移動先のインデックス番号を求める処理です。方向キーでは一度に一つしかフォーカスは移動しないので、インクリメントかデクリメントのみですね。
lftPains、rhtPainsの自前オブジェクトは、画面更新時にそれぞれのペインのファイル/フォルダのオブジェクトを格納していて、それらの数のCountプロパティも追加しています。このCountプロパティ値で、左右ペインを移動したときに一番下のファイルにフォーカスを移るようにしています。

そして、求めたeIDは見てのとおりタグのid属性値というわけです。その要素が存在すればそちらへ、なければ再帰的に呼びなおすことでフォーカスローテートさせています。最初に考えていたよりコンパクトにできたので、これもお気に入りロジックです。








mirrorMan - フォーカスローテート

IEはブラウザです。フォーカスはフォーム部品のみで、動かすのもTABキーです。
しかしフォーカスを方向キーで動かせないとファイラとはいえません。

フォーカスは1_名無しフォルダにあり、1_名無し.txtは名前変更中です。
この時点でエクスプローラではあり得ない状態です。エクスプローラでは名前変更中に↑↓キーを押してもカーソルが移動するだけですが、mirrorManではフォーカスが移るようにしています。名前変更中に他のファイルやフォルダの名前をコピーしたいときと、↑↓キーでカーソルを動かそうとするときとで、どちらがよくありますか?



↓キーを押して、ファイル名の文字を全選択した状態にフォーカスが移りました。









ここで、←→キーを押すとカーソルが移動します。










SHIFT+←→キーで部分選択して、Ctrl+CしたりCtrl+Vしたり。

さらに↓キーを押すと、次の画像のように、フォーカスが下に移ります。







ここから→キーを押してみます。



右ペインの一番下のファイルにフォーカスが移動しました。
ここでCtrl+Cを押してコピーし、
→キーか、←キーのどちらかを押してみます。



←キーを押せば左ペインに移り、右ペインで→キーを押しても、ローテーションして左ペインに移ります。一番下で↓キー、一番上で↑キーでも同様にローテートします。
↓キーで名前変更状態のファイルに移ります。

さらにShift+←→キーで「名無し.txt」を範囲選択し、先ほどコピーしたファイル名をCtrl+Vで貼り付けます。









選択範囲に貼り付けられました。











名前変更を行うにはエクスプローラと同様にF2キーか、右クリックメニューから名前変更を選択します。名前変更状態でない場合にCtrl+CやCtrl+Vを押した場合は、エクスプローラと同様にコピーorペーストするので、mirrorManでコピーしたファイルをデスクトップやエクスプローラに貼り付けたり、逆にエクスプローラでコピーしたファイルをmirrorManに貼り付けたりできます。
ただ、ドラッグドロップで他のウインドウへ運ぶのは未実装で、IEの機能のままです。たとえばエクセル画面にドラッグドロップしたりすると、HTMLで貼り付けられちゃったりしてしまいます。




Googleマップストリートビュー!

すごすぎる。
gstreetv.jpg
お気入りの北の丸公園入り口。

っか、
自分の家のベランダ丸見えだし、
学生時代のアパート、まだ変わらずあったし、
職場のコンビニ前は顔知ってる人が写ってるっぽいし。

荒川CR見れんし!
googleの人、ヘルメットにカメラのせてサイクリングロード撮ってくれ!





mirrorMan - ZIP圧縮解凍












右クリックメニューからZIP圧縮を選択します。















緑色でmirrorMan.zip圧縮フォルダが作成されました。非同期処理なので、表示されない場合は画面を更新してください。



中を開いて参照することも可能です。もう一方のペインから圧縮フォルダ内に追加コピーすることもできますが、非可視の怪しげなシステムファイルができるケースもあり、個人情報を含めずに人に渡したい場合は、しない方がいいかもしれません。











続いてソースの抜粋です。

<script type="text/javascript" defer src="./js/jquery.contextmenu.r2.js"></script>
コンテキストメニューのjQueryプラグインを読み込みます。

<div class="contextMenu" id="conMenuLftItms">
<ul>
<li id="verbZipTo">ZIP圧縮 </li>
<li id="verbZipfrom">ZIP解凍 </li>
</ul>
</div>
コンテキストメニューに表示する要素を作成します。

function initContextMenu(){
$('#rhtClkLftItmsAra').contextMenu('conMenuLftItms',{
bindings:{
'verbZipTo' : function(t){ invokeVerbZip() },
'verbZipfrom': function(t){ invokeVerbZip('extract') }
}
}
選択された時の動作を起動時に読み込ませます。

function invokeVerbZip(p){
if(!selItmObj) return;
var intLR = getLR(4);
if(p =="extract")
ssh.NameSpace(getAdrBar(intLR)).CopyHere(selItmObj.GetFolder.Items());
else{
cntSelItmId(0);
selItmObj.InvokeVerbEx("copy");
var zt = ["Compressed (zipped) Folder.ZFSendToTarget", //XP
"圧縮 (zip 形式) フォルダ.ZFSendToTarget"]; //Vista
for(var i in zt){
var tgt = ssh.NameSpace(wsh.SpecialFolders("SendTo")).ParseName(zt[i]);
if(tgt){ tgt.InvokeVerbEx("paste");break}
}
}
}
selItmObjは現在フォーカスされているファイル/フォルダ名からShell.ApplicationでNameSpace(fol).ParseName(item)したものを格納しています。フォーカスが外れるとnullにしているので、右クリック時に選択されているファイル/フォルダがあるかどうかのチェックにしています。
解凍が選択された場合、selItmObjのフォルダオブジェクトのItems()をCopyHereしてやると解凍されます。

そういうことのようです。
解凍さえしてくれれば僕は満足です。

圧縮が選択された場合、エクスプローラの右クリックメニューをシミュレートしてくれるInvokeVerbEx("copy")メソッドを使用してselItmObjをクリップボードに送ります。これでエクスプローラ上でファイル/フォルダをコピーしたのと同等の状態になります。
そして、同じくエクスプローラの右クリックメニュー「送る」の特殊フォルダにある特殊ファイルに対し、また同じく、エクスプローラの右クリックメニュー「貼り付け」で圧縮されます。

そういうことのようです。
圧縮さえしてくれれば僕は満足です。

ちなみに、XPとVistaでファイル名が変わってしまっているので、こうなっています。
いえいえ無事動作して僕は満足です。




mirrorMan - コンボボックス風フォーム3

ソースの追加です。
selectタグをinput type=textに切り替える場合、表示文字列であるselectedIndex.lengthからテキストボックスのsizeを求めていたのですが、JScriptは内部文字コードをUNICODEで保持しているので、日本語2byte文字も1文字とカウントされます。このためフォルダ名に日本語が多く含まれると幅が足りなくなります。
そこでbyte長を返すようにしました。
RPthTxtBox.size = (new String(elm.value)).length;
を変更して、
RPthTxtBox.size = bLen(elm.value);
bLen()は、
function bLen(s){
var l = s.length, b = l;
function isWide(c){ return(0x80 <= c &&(c <= 0xff60 || 0xffa0 <= c)) }
for(i=0; i<l; i++) if(isWide(s.charCodeAt(i))) b++;
return(b);
}
です。





mirrorMan - ドラッグドロップ

ドラッグドロップの機能はjQueryにももちろんあり、divなどのボックス要素をドラッグ中もポインタにぶら下げて描画できるのですが、mirrorManには少し難がありました。ファイル名を持つのはpreタグだし、親のtdタグを箱ごと運ぶのもファイラのUIとしてちょっと変です。また、アイコン画像をひとつひとつレジストリから取得するのはブラウザのレイアウトエンジンをファイラとして使うのに、レスポンス性能以前です。代わりに、IEのプロパティ/メソッドを使用すれば、ポインタ画像も変わってくれるし、操作のレスポンスも許せるレベルです。

この機能のトピックは、フォルダに対してドロップされる以外はどこにドロップされてももう一方のペインにコピーを行うところです。つまり、コピーしたいファイル/フォルダをマウスでピッっとほんの少し飛ばす操作をするだけでコピーをしてしまいます。これは、コーディングの途中に偶然いいぞこれ!と、あまりにも楽なので、実はこれが一番mirrorManでよくやる操作だったりします。

with(document.body){
ondragstart = handleDragStart;
ondragenter = handleDragEnter;
ondragover = setEventRetFalse;
ondrop = handleDrop;
}
それぞれのイベントにハンドル関数を乗っけます。
function setEventRetFalse(){
event.returnValue = false;
}
ドラッグ中のマウスポインタが要素の上に来た時のブラウザのデフォルトの動作をキャンセルさせます。これは動作上(なぜだったか忘れた)、ondragoverイベントにかぶせる必要がありました。
function handleDragStart(){
if(jqContextMenuDsp()) return;
if(/^fNm|^Fol|^zip/.test(event.srcElement.className))
event.dataTransfer.effectAllowed ="move";
}
ユーザがマウスの左ボタンを押したままにしてドラッグが始まった時のイベントハンドラです。
まずプルダウンメニューが表示されている場合をはじいています。
IEの場合、なにか操作が起きるたびにwindowオブジェクトレベルのeventオブジェクトが共通して更新されます。何が起きても社長報告なので、パラメータ、つまり担当レベルの伝言によらずとも社長に聞けばOK的なオブジェクトですね。変な例えですが、リーダーが鬼軍曹的なプロジェクトでそんな案件もありました。MSではそんなことはないと思いますが。閑話。
そのイベントを起こした要素のクラス名がドラッグドロップさせるものであれば、dataTransferのeffectAllowedプロパティに初期値として、何かを移動中であるとして"move"をセットします。
function handleDragEnter(){
if(jqContextMenuDsp()) return;
setEventRetFalse();
if(/^pntFol|^Fol|^zip|^imgFol/.test(event.srcElement.className)){
selItm(event.srcElement,"drag");
event.dataTransfer.dropEffect ="move";
}else{ event.dataTransfer.dropEffect ="copy";}
}
ドラッグ中のアイテムが別の要素オブジェクトの上に来たときのイベントハンドラです。event.returnValueの値は常に更新されているようなので、ここでも明示的にfalseをセットします。
この時点でeventオブジェクトのsrcElementはマウスポインタが上に来た要素オブジェクトになっています。それがドロップ可能のフォルダであれば、マウスポインタが上に来たフォルダが次々にフォーカス表示されていきます。
dropEffectプロパティにも"move"を設定し、対象がフォルダでない場合、つまりファイルの場合はelseでおしなべて"copy"をセットしています。ここがファイルをマウスでピッと飛ばしてコピーするくだんの箇所です。シンプルで便利なお気に入りロジックです。
function handleDrop(){  i
setEventRetFalse();
if(/^pntFol|^Fol|^imgFol|^zip/.test(event.srcElement.className))
var rc = selectedItemToHere("move");
else var rc = selectedItemToHere("copy");
if(!rc) setTimeout("loadItms("+ selItmLR.innerText +")",0);
}
ドラッグ中のユーザがマウスのボタンを離したときのイベントハンドラです。同じく要素のクラス名を検査して、コピーor移動を行うselectedItemToHere()の戻り値ががfalseだった場合に画面を更新しています。
function selectedItemToHere(elm){
…省略
if((selItmObj)&&((src.id =="move")||(elm =="move"))){
var fnm = selItmObj.Name;
var strTyp = selItmObj.IsFolder ? " フォルダ" : " ファイル";
var strCmd ="移動";
var toHereItm = selItmObj;
}else if(document.selection.createRange().text){
var fnm = document.selection.createRange().text;
var toHereItm = ssh.NameSpace(getFol(getAdrBar(iLR))).ParseName(
document.selection.createRange().text);
if(toHereItm) var strTyp = toHereItm.IsFolder ? " フォルダ" : " ファイル";
}
if(!strTyp) return false;
var tgtFol = ssh.NameSpace(getFol(strTgtFol));
if(strCmd =="移動") tgtFol.MoveHere(toHereItm, 64);
else tgtFol.CopyHere(toHereItm, sshCpyOpt);
return setTimeout('loadItms(1)',0);
}
ロジックは見たままです。酒の勢いでここまで書きましたが、あとはもう一杯のむのでそれが抜けたら更新します。要は、最後にMoveHere()かCopyHere()かをしています。




mirrorMan - テキスト差分表示2

2ではソース抜粋です。

<button type=button id=kickDFBtn title="DFへ F12"><img src="./img/df.gif"></button>
を表示しているbuttonタグです。

if(!sfs.FileExists("DF\\DF.exe")) kickDFBtn.style.display ='none';
起動時にDF.exeが存在しなければ、 を非表示にしています。

function handleOnClick(){
var src = event.srcElement, cls = src.className.split(" ",1)[0];
if((/^fNm/.test(cls))&&(!/Gre/.test(cls))){
selItm(src);
if(/DFで実行/.test(document.title)) comDF();
}
switch(src.id){
case "kickDFBtn": chgTitlebarTxt("│DFで実行するファイルを選択");
}
}
クリックイベントハンドラです。
イベントが発生した(クリックされた)タグのクラス名を取得しています。
split()しているのは、jQueryがクラス名にブランク区切りで値を追加してくるのに対応するためです。
クラス属性にはファイルorフォルダ、表示色を設定しているので、これをtest()してチェックします。
クリックされたのがファイルで、かつ緑色(ZIPフォルダ、その他の特殊ファイル)でなければ、
selItm()でそれを選択(textRangeのselect())表示させます。
タイトルバーに"DFで実行"の文字列がマッチすれば、comDF()を呼び出します。
マッチしなければ、後続を処理します。
id属性がkickDFBtnなら、chgTitlebarTxt()を呼び出してタイトルバー文字列を変更します。

function chgTitlebarTxt(s){
var defNm = "mirrorMan", Nm = document.title;
document.title = Nm == defNm ? Nm += s : defNm;
document.selection.empty();
}
document.selection.empty()はフォーカス解除です。

次はDFを起動する箇所です。
function comDF(){
var df ="DF\\DF.exe";
document.title = "mirrorMan";
f(!sfs.FileExists(df)) return wsh.popup("DF.exeがありません",0,document.title,64);
var fnm = document.selection.createRange().text;
if(!fnm) return wsh.popup("DFに渡すファイルを選択してください",0,document.title,64);
var lPth = sfs.BuildPath(getFolderSub(getAdrBar(0)), fnm);
var rPth = sfs.BuildPath(getFolderSub(getAdrBar(2)), fnm);
if((sfs.FileExists(lPth))&&(sfs.FileExists(rPth)))
wsh.Run("\""+ df +"\" \""+ lPth +"\" \""+ rPth +"\"");
else wsh.popup("このファイルは両ペインにありません。\n\n"+ fnm,0,document.title,64);
}
タイトルバーを初期に戻しています。
textRangeオブジェクトから選択されているファイル名を取得します。
両方のアドレスバーからディレクトリパスを取得し、ファイル名をつなげてフルパスにBuildPath()しています。
DFはコマンドラインパラメータから開きたい2ファイルを指定できます。




mirrorMan - テキスト差分表示

せっかくの2画面表示です。ワンクリックでテキストファイルの差分を表示します。
使いやすいフリーウェアのDFを使いたかったので、作者のMYON氏にメールして許可をもらい、ZIPファイルに同梱しています。


右端の ボタンをクリックすると、タイトルバーに「DFで実行するファイルを選択」の文字が表示されます。
色が変わっているreadMe.txtの中身を確認しるため、クリックorEnterします。



DFが起動して、左右のreadMe.txtが並べて表示されました。
差異のある行が色分けして表示されます。
mirrorM"a"nが左側のファイルではmirrorM"o"nになっているのが確認できます。

DFの使い方の詳細は同梱のreadmeか、Verctorサイトのものを参照してください。




チェーンオイル


KUREのCRCスーパーチェーンルブはバイクにも対応したもので、自転車用としては比較的固いが、これを基準として比較。

*手でクランクを逆回転させたときに惰性で回り続けられる軽さ
ROAD > DRY > CRC

*走行時のシャリシャリ音の小ささ
CRC = ROAD > DRY

*墨汁化するまでのきれいさの維持具合
DRY >> ROAD = CRC

*注油後、晴れの日の一日50km~100km走ったときの性能差
感じず。


DRYは商品名がドライといっても完全にそうではなく、触れば指にヌルヌルがつくものの、
走行時にチェーンが脱落したときにフレームに汚れがつかない程度にはドライ。
たっぷりめに注油してもシャリシャリ音はウェットほど静かではない。

ROADはサラサラオイル。バイクほど高回転やトルクがかからないので粘度を下げられる分、
抵抗の軽減をうたえるのだろう。しかしその差は通常走行では体感できなかった。




日暮れの孤独な葛西臨海公園

BSMを買って初めて遠出をしたのが4月29日。ネットで色々調べ、とりあえず荒川を走ってみようと決めて出た。社会人になって東京に来てからほとんど電車でしか移動したことがなかったから、自分の足で漕いで荒川に辿り着いて水面を見ただけで、中学生みたいにうれしくなった。
東京に来たといってもほとんど金を使うことはなく、勤務地という感覚しかなかったが、空がいっぱい見える開けた空間、漕ぐことに集中できる広い道、スイスイ進んで踏め踏めといってくるBSM。自転車はクルマやバイクと違い、その場所の地面に属している感覚がしてくる。
河口まで20kmという看板を見て、それが自転車でどれくらい先なのか見当もつかなかった。あと10km、あと5kmという看板。日が暮れるまでの時間や帰りの体力のことは考えないことにして、とにかく行ってみようと冒険気分になった。
ロードバイクの人を追いかけたり、少年サッカーを眺めたりしながら足が棒状態でたどり着いた海に面した公園。水平線を眺めて晴れ晴れしくなった。その時の写真。



今日はその場所にもう一度腰をおろして写真をとった。



比べてみると、自転車の知識もないところから3か月、ほとんど週末しか乗っていないのに、ほんとに夢中になっていたのが自分ではよくわかる。
バーハンドルは握る場所が一か所しかなく、振動も激しくてつらかったのでドロップにした。
チェーンリングは、オリジナルのモールトンには白くてかわいいガードなのだが、BSMの黒いのはどうしてもなじめなかった。46Tも小さすぎた。シルバーでポリッシュでフラクタルのように肉抜きされたのが欲しくて、TAアリゼの53Tを買ったが、いざ着けようとしてPCDなるものを知った。今はスギノの50Tだ。
サドルはTRKのExtraに落ち着いた。
シートポストは目いっぱい上げてもちょっと高さが足りず、太ももの筋肉ばかり疲労する感じも不満だったので、オフセットなしのシートポストを探した。THOMSONは細部の作りもデザインも超ナイス。
サドルもさらに一番前にセットしている。ステムも目いっぱいまで出した。

帰りに荒川を登っていると、日も落ちたのにやけに人が多いなと思っていたら、花火が上がりだした。8月第1土曜日は日本で一番花火大会のある日だそうだ。見えていたのは江戸川区花火大会だった。



荒川を外れて走り出したら、力士がデートしていて、横に並んで歩いているだけで歩道の幅を占めている。両国駅前で盆踊りをしていた。ちょうど最後の花火の見世物のところだった。


体も慣れてきて、葛西まで行って帰ってもほとんど疲れがない。一緒に走る女の子がいればいうことなしなんだが、こればかりはどうにもならない。






mirrorMan - シンクロフォルダ移動2

2ではソース抜粋です。

<button type=button id=syncLRBtn>
<img class=cmdBtn id=syncLRImg src="./img/chkon.png">
</button>

<script>
document.body.onclick = handleOnClick;

function handleOnClick(){
switch(event.srcElement.id){
case "syncLRBtn": toggleholdWin('syncLRImg');
}
}

function toggleholdWin(i){
var elm = document.all(i);
if(i=="syncLRImg")
elm.src = /on/.test(elm.src) ? "./img/chkoff.png" : "./img/chkon.png";
}
</script>
クリックイベントが発生したタグのid属性からtoggleholdWin()にimgタグのidを渡して呼び出しています。
toggleholdWin()ではimgタグのsrc属性値を変更して画像を切り替えています。
続いてフォルダ移動のシンクロ処理を行っている箇所です。
function chTargetDir(cls,recursiv,tgtNm){

(省略)

if(/chkoff/.test(syncLRImg.src)){
LstLoading(LR);
setTimeout("loadItms("+LR+")",0);
}else if(!recursiv){
if((!tgtNm)&&(sfs.GetBaseName(pth)==sfs.GetBaseName(getAdrBar(getLR(3),true)))){
chTargetDir("pntFol"+getLR(3),true);
}else if((tgtNm)&&(sfs.FolderExists(sfs.BuildPath(getAdrBar(getLR(3)),tgtNm)))){
chTargetDir("Fol"+getLR(3),true,tgtNm);
LstLoading(1);
setTimeout('loadItms(1)',0);
}
}
}
imgタグのsrc属性の画像ファイル名で振り分けます。
LstLoading()は、フォルダ内容の表示が完了するまで「loading..」と表示させています。
続いてsetTimeout("loadItms("+LR+")",0);が完了したらフォルダ内容が表示されます。
setTimeoutの0秒指定でマルチタスクっぽくなります。

JavaScriptはfunctionプロシジャの呼び出し時にパラメータ数が合わなければエラーになるということはないので、パラメータ"recursiv"の有無を利用して再帰呼び出しをています。
シンクロフォルダ移動のボタンがオンの画像だった場合、移動先のフォルダ名をパラメータとして渡し、
"recursiv"パラメータがtrueであれば、もう一方のアドレスバーのパスにフォルダ名を追加して表示させています。
さらに親フォルダへの移動も同様に、"tgtNm"パラメータの有無をみて、なければ親フォルダ名で再帰的に呼び出されています。

ちなみに、Shell.Applicationと、WScript.ShellやScripting.FileSystemObjectとで同じことを行うメソッドやプロパティがたくさんありますが、大体において画面表示に関わるものはShell.Application、内部的な処理にはWScript.ShellやScripting.FileSystemObjectが向いているようです。こんど一覧にしてみたいですね。




mirrorMan - シンクロフォルダ移動

サーバとローカルディスクとでフォルダの階層構造が同じになっているようなとき、片方のペインでフォルダをクリックして移動したらもう一方も同時に移動するような、シンクロフォルダ移動機能があれば便利です。

ただ、勝手に移動されたくない場合も多々あるので、オンオフを切り替えるボタンがあります。



とのボタをクリックすればトグルで切り替わります。チェックマークありで機能オンです。






たとえば上のような状態、
左側:C:\1_名無し
右側:C:\mirrorMan\1_名無し
でどちらかの 1_名無し フォルダをクリックorエンターキーで移動させます。


どちらも 1_名無し フォルダに移動しました。

移動先のフォルダ名がもう一方にあれば移動するという仕組みです。
上の階層に移動する( .. フォルダか、バックスペースキー)でも同様に移動します。

しかし、オン状態のまま無意識に使っていると戸惑うことが多いので、あると便利だけど普段はいらないという機能です。





while(aho.atEndofStream)

笹部 政宏
笹部 政宏
mail




フリーソフツ
Category
はてブ
Monthly Archive
New Entry
New Comment
New Trackback
RSS
Copyright © Kittens flewby me All Rights Reserved.