search phpbb-phpbb-FC2BLOG-Info-Edit Template-Post-Edit-Upload-LogOut
任意のサイトをIEで閲覧している時に、jQueryfyブックマークレットを使って当該サイト上でjQuery.jsを使えるようにし、かつFirebug Liteをもインクルード出来ないか───と思い、Firebug Lite.zipを解凍したファイル全てを、このブログサーバーにアップロードしました。
その後このブログ上で、ではなく自分のローカルPC上のHTMLファイルにFc2ブログサーバーからFirebug Liteをインクルードしようとしたのです。
すると、数回繰り返してからこのブログの表示がおかしくなり始め、その後このブログ内でページを遷ろうとすると必ず表示できないエラーが発生するようになりました。
そして気がついたのです。この行為は規約違反であるということを!
無意識に、Fc2ブログサーバーをローカルPCから呼び出すファイルサーバーにしてしまっていたのです。
早速Fc2にメールを出し、違反を詫びると共にこうした過ちを繰り返さないことを約束したのです。
すると数日後にFc2からメールが来ました。そこには、支障なく見えていること及びファイル置き場として利用してしまったファイルを削除すべきこと、が書いてありました。
この後者の指示を受けて早速当該ファイルを削除したところ、やっと問題が解決したのです。
ここ一週間ほどの間に閲覧された方には、閲覧障害というご迷惑をお掛けして場合もあったかと思います。その理由は以上の通りですので、この場を借りてお詫びしたいと思います。
そうなのです。自動ログインするスクリプトを作って、自動ログインすればあるブログサイトからGmail上の添付フォイルにリンクをすることが出来るのではないか───と思い立ちました。
自動ログインスクリプトはタブブラウザ Sleipnir オンラインデータベース(スクリプト)から自動ログインスクリプトを入手して、Gmail への自動ログインスクリプトを作成し、それを適用してからGmail上のスクリプトファイルをインクルードすれば良い、と言うことに気がつきました。
これからそれを試してみようと思います。
直前のエントリイで書きましたが、オンラインでファイルにアクセスできる無料のファイル置き場が欲しくなりました。有料のファイル置き場としては、Just System の インターネットディスク等が有名ですが、2893 MB もの巨大容量(GMail)が無料で提供されている今日、敢えて有料サイトを選択する必要はありません。(セキュリティ上の問題から有料サイトを選択する道はあるかもしれませんが。)
そこでGmailの巨大容量をファイル置き場としても利用する方法を色々調べてみました。
しかし結論から言えば、この方法も無理なようです。
これらが有名なようですが、どちらもマイコンピュータ上に仮想ドライブを構成してExplorerから利用するのですから、Homepage上のリンク先としてのファイル置き場にはなり得ないと思います。
またこんなファイル置き場(ファイルバンク【FILEBANK】-無料でファイル保管・送信・シェアができる-)もありますが、7日間無料保管、つまり8日以降は有料になってしまうため、リンク先ファイルの置き場としては使えません。敢えて有料でも良しとする置き場を欲しない限り・・・。
次に、Gmailにmail送信したFirebugLiteファイルのuriに対して、IEとOperaにおいて下記のコードを試してみましたが、これも成功しませんでした。
試してみた自作のブックマークレットは以下の通りです(可読性を高めるために適当に改行やインデントを挿入しています)。
ここに「http://mail.google.com/mail/xxx」は、 firebug.js をメール添付ファイルとして自分のGmailアドレスに送信し、その後に取得したその添付ファイルのurlです。
結局複数の一連のfirebugLiteに係るファイルが連動しているのに、その中の特定のファイルであるfirebug.jsにだけリンクを貼っても動かないということでしょう。やはりサーバー内のフォルダを管理出来る状態のURIが記述できない限り、無理なのでしょう。
ジャストシステム(インターネットディスク)やsony(Webpocket)の有料レンタルサーバーも調べましたが、単なるファイル置き場としての活用方法は沢山説明されているものの、Homepageのリンク先であるファイル置き場の説明はほとんどなく、そのような使い方が出来るのかどうか分かりませんでした。
自分のWebサーバーを持てば解決しますが、リンク先ファイル置き場のために敢えてWebサーバーを立ち上げるほどの時間も気力もありません。
というよりも、結局jQuery.jsをfirebugを使って色々試したい場合には、Firefoxを利用する、Firefoxだけを利用する、と言う選択肢が賢明なのでしょう。このケースではIEやOperaに拘るのは愚かな選択肢というべきでしょう。
jQueryを勉強する上で、Firebugは欠かせないツールです。そしてFirebugを利用して、任意のサイト上でjQueryを試すことの出来るjQuerify.jsブックマークレット(Learning jQuery :jQuerify Bookmarklet)は大変重宝する優れものです。
元々FirebugはFirefoxのアドオンとして開発されましたが、IEやOperaでも一部の機能を利用できるFirebug Liteが開発されている(Firebug Lite)ので、jQuerify.jsブックマークレットもこれらのBrowserでも利用できます。
但し、オリジナルのjQuerify.jsブックマークレットは名前空間を汚染する可能性があり、またリンク先のjQueryのバージョンは1.1.3.1であり、既に1.1.4が公表されているため、次のように無名関数を利用し、リンク先を最新版へのものへと改訂し、メッセージもちょっと変えてて利用することにしました。
jQuerify.js ブックマークレット改訂版(無名関数利用)のコードは以下の通り
jQueryブックマークレットを利用する前提として、Firebug(firefoxの場合)又はFirebug Lite(IE、Operaの場合)を組み込む必要があります。前者の場合にはFirefoxのアドオンとしてBrowser自身に組み込めばお仕舞いで、簡単にjQueryブックマークレットを利用することが出来ます。
しかし、後者のFirebug Liteの場合には、jQueryブックマークレットを適用するサイトに、Firebug Liteをインクルードしなければなりません。しかしそれを、一々追加するのでは余りに面倒です。
そこで、Firebug LiteとjQuerifyを同時にインクルードするブックマークレットを作成し、容易にインクルード出来るようにすれば便利なはずです。
それは先のjQuery.jsに、firebug.jsをインクルードするコードを追加するだけで簡単に出来るはずです。しかしここに大きな問題が1つあります。jQuery.jsのように、サイト上に圧縮しないそのままjsファイルがおいてあれば良いのですが、Firebug Lite の場合、当該サイトにはzip圧縮されたファイルしかありません。そのためどこか別の場所にfirebug.jsを置いておいて、そこからインクルードするようにしなければなりません。
Fc2ブログはファイル置き場を認めていません。従って、そこにファイルを置いて自分のPC上のファイルからアクセスしたり、他の方が利用する場合にはFc2ブログ利用上のルール違反となってしまいます。firebug.js をmyFc2サーバー上に置き、それをmyFc2ブログ以外から利用することは出来ません。
従って、firebug.js はファイル置き場として利用できるWebサーバーに置くか、自分のローカルPC上に置くしかありません。しかし、後者の方法を試してみましたがそれは駄目でした。ローカルPCにリンクするようなブックマークレットはうまく作動しませんでした。一方、ファイル置き場として使えるWebサーバーは知りませんし、また自分のサーバーは持っていません。
従って、firebug.js をネット上からインクルードするブックレットの作成は諦めました。
もしかしたら、巨大なGmailサーバーをオンラインファイル置き場として利用できるかもしれませんが、まだその方法は試していません。
昨日FC2 Infomationからe-mailが届いていました。その要旨は以下の通りです。
早速新管理画面に切り替えてこのエントリイを書いています。
新管理画面は従来よりもエントリイを書き込むボックスの幅が広がり、カテゴリイ追加が容易になり、タグ追加も分かりやすくなりました。左カラムのツールも項目が増えているような気がします。(左カラムについては、最近詳細に見ることはほとんどないので定かではありませんが。)
エントリイ管理画面も、タイトル列が異様に狭く見にくかった従来画面に較べれば、かなり改善されたようです。ジャンル別に行える「設定変更」も魅力です(従来これがあったかどうか記憶が定かではありませんが・・・)。
但し、私は AreaEditor を使用して秀丸を起動し、秀丸で作成したFc2エントリイ用のテンプレート(HTML形式)を読み込んでからエントリイを作成していますので、エントリイ作成ボックスの改訂による恩恵は皆無です。
また、記事作成画面にプレビューボックスがありますが、この表示をオン/オフ出来ないのは迷惑です。プレビューを見たい方もいればそれを欲しない方もいるはずです。なぜ強制的にプレビューさせてしまうのでしょう。この仕様は、ユーザーフレンドリイではないと思います。
最も期待したいのは、エントリイ表示速度の改善です。既に4倍程度表示が速くなったとメールに書いてあり、今後10倍も速くなる予定とのことですから、大いに期待したいと思います。
突然の接続遮断を契機として、偶々調べていたサイトにネット接続設定の見直しを呼びかける情報が掲示されていました。どのサイトだったのか、お気に入りに入れなかったし忘れてしまいましたが・・・。そういえば18ヶ月前にnifty with 光 FLet's に変更した時に、接続設定の見直しはやらなかったことを思いだし、今晩改めて見直してみたのです。
すると、なっ何と!下り受信速度が驚愕の61.7Mbps(7.71MByte/s)という高速を記録したのです。光に変えてからこれまで行った3回の測定では全て30数Mbpsでしたので、倍の速さになった訳です。超うれぴぃ〜!(^_^)
何故これ程の速度差が出たのか?
61Mbpsという速度は、MTU値、TCP Recieve Window値などを全面的に見直した結果得られた速度なのです。測定時刻は夜の10時頃でした。
その後本当だろうか?と、30分後に改めて同一サイトで測ってみたら今度は45Mbpsと先ほどの3分の2に低下していました。
更に異なるサイトによる測定を試みたところ、こちらも45Mbpsと全く同一の結果となりました。
最初のサイトは、ブロードバンドスピードテスト(回線速度・通信速度測定診断サイト)(老舗サイトですが、何故かアダルト広告が満載で非常に違和感を覚えます)で、二番目のサイトはBNR スピードテスト(回線速度/通信速度 測定ページ)です。
いずれにしても、今までの30Mbpsそこそこの通信速度(計測した時間帯は夜の同時間帯)に較べれば、接続設定の見直しで明らかに速度が向上したと言えます。

DELL社にもまたniftyにも問い合わせをしましたが、結論は余りにあっけない、肩すかし的なものでした。
何とこれがマイクロソフト社の助言です。(nifty社からの回答メールで次のサイトを紹介されました。Windows XP Service Pack 2 でネットワーク接続のアイコンが ! マークで表示される)
つまり、警告が出るけどそれは無意味だ、という回答に等しい訳です。
だったらそんな警告が出ないように Windows Update で仕様を変更すればよい、と思うのは決して私一人ではないでしょう。
問題があるならばそれを解決すべきであり、放置するだけの回答をどうどうと掲示するなんて余りにもユーザー軽視ではないか、と思います。
jQuery.jsもprototype.js共に、Javascriptを深く良く知らないと、そのコードの意味は理解できない代物です。これまでの借り物をコピー利用するような姿勢から脱却しなければ、それらの解読は望めません。
そこで、改めて各種書籍を読み直すと共に、それらframework全文を印刷して、ここ一ヶ月間日々睨み続けて何とか理解しようとしてきました。
しかし、その方法だけではとても解読出来ませんでした。
そこで、今度はそれらのコードの実行過程を辿ってみることにしました。まず、解読する対象は実際に使ってみたい jQuery としました。そして、随所にalert()関数を挿入して、引数の挙動を調べてみました。しかし、それでも「動き」は見えてきません。alert関数を設置した箇所の動きはピンポイントで見えますが、コード全体がどのように動いているのかは分からないのです。
何とか進行過程を辿れないか?、と悶々としている中で、次のことを思い出しました。Firebugはコードのステップ進行を辿れるはずです。しかし、その使い方が分からないのでこれまで全くステップ進行を使ったことはありませんでした。
昨晩になって初めて、「ならばネット検索で」と思い立ち(何で今までこのことを思いつかなったのか不思議ですが・・・)、検索してみたら直ぐに結論をゲットすることが出来ました。
FireBugでコードのステップ進行をどの様な方法で行うのか、全く分からなかったのですが、このサイト(FireBugのDebuggerの使い方 - JavaScriptist)を見て、直ぐに合点がいきました。
そこで、早速jQuery.jsコード内にちょっとした加工を施し、更に進行過程を垣間見るHTML頁を作成して、進行過程を辿ってみました。
こうして、やっとjQueryの挙動を把握する第一歩を切り開いたのでした。
挙動把握の過程を綴ってみようと思いますが、とりあえず今日は「扉を開いた」ことを記しておきたいと思い、このEntryを書いてみました。
ネットワーク接続の突然の遮断は8月14日に発生し、その後毎日繰り返されました。初回の切断直後に書いたEntryは、niftyやB'Fletsに原因があるかのような表現となってしまいましたが、どうやら原因は我がPCにあるようです。
14日以降も不安定状態が続いたため、昨日、マイクロソフト社のネットワーク接続オンライン診断も試みました。それでも問題が特定出来ないので、次にはパソコンメーカー(DELL社製品を使っている)にも問い合わせてみました。
そこでの助言は、(1)ネットワークドライバの再インストール、(2)インターネットエクスプローラ-オプション-詳細設定の初期化、などでしたが、結局事態の改善には至りませんでした。そこで今朝、インターネット接続そのものを新規に作成し、従来のものを破棄しました。新規作成直後には全く問題がなかったようにスムースに接続し、一瞬「原因は解明できなかったが、問題解決か!」と喜びました。
ところが、10分足らずでまたしても昨日と同様の表示がシステムトレイに現れたのです。
その表示とは、!印が付いたローカルエリア接続アイコンの出現です。このアイコンは、オプション項目「接続が限られているか利用不可能となった場合に通知する」がオンになっていると、システムトレイに表示されるようです。
つまり、おかしくなったのは「ローカル接続設定、あるいはそれに係るドライバソフト」ではないか、と思われるのです。
もしそうであるとするならば、どうすれば良いのか?
問題が特定出来たことは前身ですが、解決となるとそのための知見はありません。
しばらくネット上の知見を検索し、事態を打開出来れば良いなぁ・・・と思っています。
標記書籍を早速購入し読んでみました。第3版で初めてJavascriptの体系的、根源的な説明を読み、非常に感銘を受けたので、第5版にも大きな期待を抱いていたのです。
しかし───。期待は裏切られたと言って良いでしょう。
第一章コアJavascriptは、第3版と打って変わって体系的とはおよそ言い難いのです。様々な今日的問題を羅列して取り上げ、筆者のスタンスを主張するために自説を展開している、という印象を強く受けました。今日的なJavascriptの諸課題について、筆者の意見・見解を述べ尽くさんとする意図を感じざるを得なかったのです。
その結果、取り上げられる項目はアトランダムな感じをぬぐい去れず、次々と課題が展開されている印象を受けました。
また、第二章のクライアントJavascriptにおいては、各種フレームワークに目を通した後では、余りに当たり前のことしか書いてない、との印象を受けました。つまり新しい知見は余り得られないのです。
もちろん、「根源的」スタンスに変わりはないので随所に「なるほどそういうことか!」と納得する記述はありますが、新しい体系委的な知見を期待して読み始めただけに、落胆してしまいました。
それは暑い夏の日のことでした。熱中症による死者が毎日のように報道され、最高気温の40度越えがマスコミを賑わしていました。62回目の終戦記念日を前にして歴史的大敗を喫した自民党が、それまでのファッショ的な国際的孤立路線をとりあえず葬って、自信喪失状態で靖国参拝で更なる批判を浴びないよう自粛している時でした・・・・。
職場の我がPCが突然起動しなくなってしまったのです。パソコンまで熱中症か?!
久しぶりにチェックディスクを掛けようと思い、必要な指定を行い再起動の指示を出しました。ところが、待てど暮らせど画面は真っ黒なまま。左上隅に空しくカーソルが点滅し続けるばかりです。
こうした事態に備えてFD起動ディスクのCDROM版は作ってありましたから、早速それを使って回復コンソールにてチェックディスクを行いました。しかしそれでも起動しません。
そこでやむなく半年前に行ったイメージバックアップデータをリストアすることにしたのです。
以下にその記録をまとめておき、今後の自他共の参考に供したいと思います。
Microsoft Updateにおいて日本語関連のUpdate があると必ず、そのInstall後には、標準の日本簿入力システムがマイクロソフト社の<性能の悪い>それに強制的に、有無を言わさず変更されてしまいます。
私はM社の製品よりも遙かに性能の良いATOKを使用しているため、その都度、標準の日本語入力システムをATOKに戻さなければなりません。
いつもいつも、自分本位の自己中心的な発想しかもたないM社は、Vistaの検索ツールにおいても、Google社等の他社のそれを排他的に排除する手法をとり、裁判沙汰になって和解したそうですが、Windows95以来、常に常にM社は自社のアプリケーションをユーザーに強制し、他社のものを出来るだけ使いにくいようにしてきました。
その最たるものはWordにおける日本語入力システムです。これは多くの場合M社のそれが優先的に扱われ、オプション変更や Microsoft Update によって、常にATOKを排除しようとします。
これ程ユーザーを小馬鹿にしたやり方はないでしょうし、これほど独占の弊害を、確信犯として実行する会社も珍しいのではないでしょうか!
常に怒り心頭に発するMicrosoft Updateであり、しかもセキュリティ上このUpdateを使わざるを得ないが故に、二重の怒りを感じます。
マイクロソフト社よ、いい加減にせよ!
そして一日も早くオープンソースのOSが主流となることを切望します!
jQueryの使い方は簡単ですが、そのコードを理解することは私にとっては大変難しいものでした。そうなのです。過去の4日間、「どうしてあのようにしてobjectを拡張できるのだろうか?」───とずっと悶々としてきました。
それが極めて初歩的な方法ですが、jQueryのコードの中で分かりにくい箇所にalert関数を追加し、その進行過程を取りだし分析する、と言う方法で解明することが出来ました。嬉しい!!
ここでは解明できた、jQuery におけるobjectそのものの拡張方法について綴ってみようと思います。
それは次の2つのコードです。jQuery オブジェクト自身を拡張している箇所です。最初は、prototypeプロパティにおいて引数を操作し、かつそれをjQuery.extendメソッドに複写しています。
次にこの複写されたjQuery.extendメソッドを、無名オブジェクトつまり{name1:func1,name2:func2,……}をたった一つの引数として定義し、実行しています。
ここで難解だったのは、jQuery.extendメソッドがたった一つの引数(その引数オブジェクトは多数のキーと値をもつプロパティが定義されてはいるが、jQuery.extendメソッドの引数はあくまでもたった1つの無名オブジェクト {} だけです)しかとらない場合でも、prototypeプロパティ定義部の、whileが有効に働き、しかも jQuery.extendメソッドのたった一つの引数となったオブジェクトに定義されている多数のプロパティが、そのキー名と一緒にtarget配列に順番に代入されていることでした。(iがキー名でありprop[i]がプロパティの値となっています。)
この時点ではまだx++と++Xの差異について極めて初歩的なことであるにも拘わらず認識していませんでした。その結果次の段のような疑問を持ってしまったのです。以下打ち消し線部分はx++の動作について誤った認識をしていた時点で書いてもので、明らかに内容が間違っていることを示しています。
引数オブジェクトの中のプロパティのキー名と値をargumentsオブジェクトを利用して取りだしているわけで、どうしてこんなことが出来るのだろうか、ずっと頭を悩ましていました。
しかし、いくらコードを睨み付けて思案してみても、解明できるほどの知識はありません。
そこでalertをjQuery.jsのあちこちに挿入し、動く過程をチェックしてみました。
引数オブジェクトの中に定義されているプロパティを、次の部分のコードによって巧みに取りだしているということ、及びその取り出し方が理解できたのです。
それはこれまでに遭遇したことのないargumentsオブジェクトの使い方であり、極めて独創的に思えました。Javascript1.5なり1.6なりで新たに定義され拡張されたargumentsの仕様なのかどうか、皆目知りませんが、こうした方法で引数オブジェクト内のプロパティを抽出できることは大変な驚きでした。
for in ループによってオブジェクト内のプロパティを順番に取り出すこの方法は、何のことはない、prototype.jsにも使われているありきたりのコードでした。
それは以下のような短いコードです。
上のコードをfirebugでテストしてみた所、最初にarguments[0]がオブジェクトとしてalertされ、続いてobjの5つのプロパティのキー名と値、並びにxの値(5回とも1でした)が順番にalertされたのです。
こうして存在しない2番目の引数(arguments[1])を利用して、arguments[0]オブジェクト内のプロパティを取りだしていることが理解できました。
どうしてこのような動作が可能となっているのかはargumentsオブジェクトの仕様上の問題かな、と思いつつ釈然としないままに、一応jQueryのオブジェクト拡張方法を何とか理解したのでした。
コメントによる指摘を戴くまでは、頭からa++をインクリメントしてから代入すると決めてかかっていました。プリインクリメントというらしいのですが(++aはポストインクリメントと呼ぶらしい)、これまでさんざん forループ内でi++を使ってきたにも拘わらず、ポストインクリメントと勘違いして頭を悩ましてしまったのでした。 (☆-◎;)ガーン !
パソコンを起動しネットサーフィンしていたら突然Webサイトの更新が出来なくなり、観たこともないダイアログがスクリーンのど真ん中に表示されました。
それは「ネットワークに繋がらないので再度ログインしています」みたいな内容でした。
私は nifty with FLetsを契約し、PPPoE接続で毎日ネット接続を行い、ネットで調べ物をしたり、ニュースを見たり、メールチェックをしています。当然パソコンを起動してから終了するまで、ネットには常時接続状態です。
さて、B-FLets 固有の接続は大嫌いで契約当初数日間使っただけで、接続形態の余りの不合理さに嫌気が指し、PPPoEに切り替えたのです。
光接続に切り替えたのは1年半程前ですが、その後昨日まではもちろんのこと、2000年から2006年春迄のADSL接続でも、接続した後に突然接続が遮断されるようなことは全くありませんでした。
それ以前のアナルグモデムによるダイアルアップ接続の6年間(1994年以来)においても、全く何もしないのに突然接続が遮断されることは皆無だったのです。
ところが今晩──2007年8月14日夜10時前後に、一端接続したネット接続が突然切れてしまう事態に見舞われたのです。余りの出来事に最初は何が何だか分かりませんでしたが、ネットワーク接続で設定できることを紙ベースの資料から調べ直しても、IPもDNSも自動接続としか説明されていないため、解決策が見いだせないため、念のために再起動してみました。
すると再起動直後は一端ネットに接続できるのですが、直ぐにまた遮断されてしまう事態が数回繰り返されました。
もしやnifty側かNTT東日本側にトラブル発生か、と思いましたが、ネットで調べようにも何時遮断されてしまうか分からない状態の中で、落ち着いて調査する訳にも行かず、かといって深夜の電話サポートなど契約してないし、今夜中にどうしてもやらねばならないことがあったため、覚悟を決めました。
この覚悟を決めて改めてniftyのWebサイトを調べてみました。普段殆ど訪れることのないサイトなので、そもそも接続に関する情報はどこにあるのか、これを探すのに一苦労です。niftyサイトはYahooやGoogleなどと異なり、頻繁に表情が変わります。これは大変迷惑な話で、毎日訪れるユーザーを優先し、時々訪問する人のことを余り考えていない設計思想がそうさせているのだと思います。
その点で私はniftyサイトが大嫌いで必要に迫られない限り訪れることがないのですが、背に腹は代えられず、何とか目的を達してネット接続、それもPPPoE接続について説明されている頁に辿り着きました。
しかし! 私にとって新しい情報は何もなく、結局は役立たずで終わりました。
念のために、トラブル情報や工事情報を調べてみましたが、niftyにもNTT東日本にも、それらしい記述は皆無でした。
そうこうしている内に、突然の遮断がやって来ないまま既に40分近くが経過していることに気がつきました。現時点で接続は「いつものように」継続・維持されているのです。
結局、何が原因で突然のネット接続遮断が複数回に亘って発生したのか、皆目見当が付かないまま、現在に至っている次第です。
原因が特定できない限り、再発しても再起動を繰り返すしかないため、冷や冷やしながらパソコンに対峙してます(;^_^A アセ。
prototype.jsの学習すらままならないのに、jQuery.jsに手を出す自分を恥じるべきなのかも知れません。
しかし、prototype.jsの、いかにも重たそうなファイルサイズを考えるに付け、また、その利便性はわかるものの、使う上ではかなりの"熟練"が必要とされる使い勝手の「悪さ」を考慮するに付け、どうせならばもっと使いやすいツールが良いと思いjQuery に手を出してみました。
それは確かに大変使いやすそうです。$(何とか)で悉くコードが書けてしまうことは、prototype.jsにはない単純さ、つまり使いやすさとして理解できましたし、更に、prototype.js以上の機能(=要素の動的描画処理機能)を有しているのも魅力です。
しかもファイルサイズが極めて小さい圧縮版まで用意されています。
これでどうしてprototype.jsに拘る必要があろうか?──と思わせる魅力がjQuery には備わっていると思います。
jQueryオブジェクトに様々なプロパティとメソッドを追加して、ホームページの各要素にアクセスし、それを動的に処理する──この考え方はYahooUIにも取り入れられていますが──方法は、使い勝手の良さをもたらす点で歓迎されるべきでしょう。
しかし、jQueryと格闘すること4日間。独特のjQuetyオブジェクトの拡張方法が、どうしても理解できません。
使うだけならば容易に使えそうな jQuery ですが、そのコードを理解しようとすると、今の私のJavascriptへの理解度では歯が立たないことがこの4日間で分かりました。
解決の糸口があるのではないか、と思い、O'Reilly社の『初めてのJavaScript』を読んでみましたが、糸口の片鱗すらありませんでした。
明後日には待望している『Javascript第5版』(日本語版)がAMAZONから届くはずですが、こちらを読めばjQuery を解読できるのかどうか、淡い期待を持っています。
jQuery の解説書は英語版ではあるようですが7000円以上する高価なもので、しかも英語と来てはとても簡単には読めそうもありません。
日本語のサイトをあれこれ検索してみましたが、jQuery をどう使うか、に関するサイトはそれなりに見つかりましたが、jQuery を解析し、どうしてそのように動くのか説明しているサイトは皆無でした。
そんな中で、微力な私の能力では、jQueryを解読するなんて、夢のまた夢なのかもしれません。嗚呼!悲しき哉!我が非力!
パソコンを使い続けるとHD内のファイルは増え続けます。HDを増設したとしても、その増設量が大きい程に巨大ファイルを保存しがちで、結局思ったよりも早い時期にHDは一杯になってしまいます。
私の場合、PC内蔵HDが120GB、外付けHDが120GB+300GBで合計540GBのHD容量があるのですが、愈々パンク寸前になっています。5年、10年前に較べればHDの容量当たり単価が激安となったので増設はたやすいし、一方Internet通信速度は高速化しているため、動画の流通量が激増し、結局のところ動画をガンガン保存しているために、HDが悲鳴を上げているのです。
さて、こうなると更に外付けHDを増設するか、あるいはDVDなどにHD内の巨大ファイルを移動してHD容量にゆとりを持たせる必要が生じます。前者の方法はたやすい方法ですが、その方法を選択する限り増設HDは何台あっても足りません。容量があればあるだけ、人の習性としてHDに保存してしまうからです。やはり殆どアクセスしない巨大ファイルは消去するか、外部の静的な記憶媒体に移動するのが賢明だと思います。
そこで、問題となるのがExplorerです。巨大ファイルの移動は、FireFileCopy、FastCopyなどの専用ツールを使えば時間短縮が図れますが、操作時間を短縮するツールは、HDの膨大な巨大ファイルの整理には向きません。
移動するまえにまず、どのフォルダが巨大なのか、それを知る必要があるからです。そしてExploreではフォルダのプロパティを開かない限り、そのサイズを知り得ません。フォルダサイズがリストペインに表示されず、いちいちプロパティを開かないとフォルダのサイズが分からない、Explorerの仕様が大きなネックとなります。
この要求に応えてくれるファイラーは、知る限り Ultra Explorer がベストです。
このファイラーは『PCJapan2007年8月号』の紹介で初めてその存在を知ったもので、まだ使い始めて日は浅いのですが、フォルダツリーの他に2つのリストペインを開くことが出来る点が、これまで数年間愛用してきたTabFolder同等で嬉しいし、何よりもフォルダサイズをリアルタイムで表示できる点が気に入りました。
このUltra Explorerでフォルダサイズを表示させて大きい順にソートさせ、大きなフォルダから当面使わないファイルをDVD-RAMに移動させることで、12GB程HDを空けたのでした。
関連Webサイトリストに掲示した2つの紹介サイトで、Ultra Explorerの特徴は良く述べられているので、興味を抱かれた方はご覧ください。
それは同一シート内のリストを、当該範囲(例:AA21:AY100等)又は当該範囲に名付けた固有の範囲名で指定して行います。
しかし、そのリストが同一シート内にある限り、入力元リストが簡単に削除・追加・編集が可能となってしまうため、折角入力規則を使って正確な情報の入力を行おうと思っても、元データが容易に編集されてしまう危険性を有してます。
そこで何とか別シート内にリストを作成して、それを別のシートから入力規則として利用したいと思うことは当然の思いですし、必然の要求だと思います。そうすれば入力元データシートを隠蔽してしまうなどによって、入力者による元データの勝手な加工を一定程度防ぐことも容易となります。
故に別シートのリストを入力規則の元データとする方法は沢山のサイトで紹介されています。当該リスト範囲に固有の範囲名を指定し、当該範囲名を入力規則の該当箇所に入力することによって、目的を達する方法です。
範囲名をその都度指定して入力規則を作成することはたやすいことですが、その範囲名をある規則に基づく関数で指定する方法があれば、入力規則の設定が非常にフレキシブルになります。
実際、業務でそうした必要が生じたため、昨日一日苦心して関数で範囲名を可変指定する方法を模索しました。
既に触れたように、別シートのリストを入力規則元データとする方法は多くのサイトで紹介されていますが、色々探したのですが、範囲名自体をフレキシブルに変化させる方法を紹介しているサイトには、ついに巡り会えませんでした。
そこでやむなく自力で検討してみました。以下は、その手法をまとめたものです。
--------------------------------------------------------
例えば、次のような例において入力規則を設定することを考えます。
Aの範疇は地域区分で、Bの範疇はそれぞれの地域内に存在する店舗だとします。つまり、Bの範疇には全地域の全店舗データとなります。
このとき、地域を選択したらその地域内に存在する店舗だけをリストアップする入力規則を作りたい、とします。
まず、当然ながら地域選択も、入力規則を適用してコンボボックスから選択させます。このリストは地域名リストデータに「地域名」などの範囲名を指定することにより、他シートにおいて入力規則として引用できます。
問題はAの範疇から或る地域を選択した場合において、全地域の全店舗でなく、当該地域内の店舗だけをBの範疇からリストアップし、他のシートからそれを引用元として入力規則コンボボックスから引用するにはどうしたら良いか、です。
入力行においてAの範疇自体がコンボボックスから選択される故に、その列の値は入力されるまでは確定できません。この入力されるまでは確定できない地域名を頼りに、Bの範疇から当該地域に属する店舗だけのリストを抽出し、入力規則の入力元データとするには、前もって引用する範囲名を分かっている必要がある通常の範囲名指定を利用するだけでは解決出来ません。Aの範疇から選択される地域名に連動して、自動的に当該地域に存する店舗だけをリストアップし、それを入力元とする入力規則を設定しなければなりません。
Bの範疇は、属する地域毎にソートし地域毎の範囲名を付けておきます。
次に、Aの範疇から或る地域名を、設定した入力規則によって選択入力した際に、当該地域に対応する、Bの範疇に名付けた地域毎の範囲名を自動的に出力する列を作ります。当然この列は列幅ゼロにして見えないようにした方が賢明です。
次に、この範囲名出力値を引数とするindirect関数(indirect(地域範囲名))を使って入力規則を作成します。
こうして作成された入力規則が設定されている行を、これから入力しようとする全行に複写します。そうすることによって作成した入力規則自体を、これから入力しようとする各行に複写します。すると、あな不思議!───なんと indirect関数の引数自体が各行毎にフレキシブルに変化するのです。
丁度、相対指定した関数の引数は、複写によって相対指定範囲を自動的に変化するように、入力規則に設定したindirect関数の引数も、その参照先を相対指定しておけば、行が変われば自動的に変化するのです。このことは新たな発見とも言えるべきものでした!
以上で、フレキシブルに変化する地域名入力値に応じて、当該地域だけに存在する店舗リストだけを入力元とする入力規則が完成するのです。
その日本語版は8月11日にO'Reilly社から刊行されるようです。
当社サイトは配送料300円を徴収するため、送料無料のネット書店から購入した方が賢明ですが、今から心待ちにしています。
それを購入して更にJavascript学習を前に進めたいのです。
prototype.jsの学習が滞っている今、改めてJavascriptを全体として根本から学習することについては、その必要性を痛感すると同時にに、そこから得られる成果に期待をしているのです。
prototype.jsの学習の滞りを打開するには本質的な説明に接することが必要だと期待している訳です。