スポンサーサイト
投稿日時 : -------- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-------- --:-- | スポンサー広告
今日読んだ記事 2008/03/26
投稿日時 : 2008-03-26 06:09
日記代わりの興味深かった記事リスト
 
9歳の少女が奴隷として50ドルで売られている
奴隷から解放するためにお金を払って「買い戻し」てもそのお金が内戦などの武器購入に充てられたりして、結局のところ奴隷制が続く原因となっているらしく、簡単に解決できる問題ではないみたい。
 
IE6 と IE7 と IE8 を同じマシンで共存させる方法
IE8試してみますか。
 
米ソニー、プリインストール・アプリ削除サービスで騒動
米ソニーがプリインストールされたアプリケーションをすべて取り除くサービスに約50ドルを課金する、という計画を発表したところユーザから強い反発を受け、撤回した。プリインストールアプリを削除するということはメーカとしては減収になるわけですが、その穴埋めをユーザ側に押しつけようとした格好に。
関連:ソニー騒動で改めて考える、プリインストール・アプリの現状と対策
 
5分で絶対に分かるバッファオーバーフロー
セキュリティホールが見つかった時によく目にする「悪意のあるコードが実行される可能性がある」というやつは、プログラマが入力される値のサイズをちゃんとチェックしていないことで発生するバッファオーバーフローを利用したもの。
 
何のソフトを入れているとWindowsが重くなるのかリスト
さすがNorton先生。ぶっちぎりですな。意外なのは2位に「フォント1000個」がランクインしていること。
 
モジラCEO、アップルの「Safari」自動アップデートを批判
Appleが「iTunes」と「QuickTime」を使用するユーザーを対象にApple Software Updateポップアップを通じてSafariを提供したことが問題に。よく見てないとユーザが知らない間にSafariがインストールされてしまうという事態に。これは大企業がやることじゃない恥ずべきマルウェア的行為。
 
OpenOffice.orgでスペースインベーダー風ゲームをする方法
オープンソースならでは。遊び心は大切です。
 
スポンサーサイト
2008-03-26 06:09 | Diary | Comment(0) | Trackback(0)
今日読んだ記事 2008/03/22
投稿日時 : 2008-03-22 13:53
日記代わりの興味深かった記事リスト
 
JavaScript統合開発環境へ、NetBeans 6.1
使ったことないけどよさげなのかも?
 
米700MHz帯オークションでGoogleは落札せず、Verizon Wirelessが落札
Googleが落とそうと思えば落とせないはずはないような気がするので、やはり意図的か。記事で指摘の通りAndroidを売り込む市場を開拓できたことでよしとしたのか。
 
SunSpider JavaScriptベンチマーク--「XP SP2」対「Vista SP1」
大して変わらないという結論に。意外と言えば意外。
 
2008-03-22 13:53 | Diary | Comment(0) | Trackback(0)
今日読んだ記事 2008/03/20
投稿日時 : 2008-03-20 13:30
日記代わりの興味深かった記事リスト
 
AnyDVDがBD+の除去に成功、Blu-rayディスクのリッピング・変換が可能に
まあいつものいたちごっこということで。
 
ソニーが全力で作り込んだデジタルフォトフレーム「S-Frame(エスフレーム)」
ちょっとほしいぞこれ。スタイリッシュじゃね?
 
2008-03-20 13:30 | Diary | Comment(0) | Trackback(0)
今日読んだ記事 2008/03/19
投稿日時 : 2008-03-19 18:44
日記代わりの興味深かった記事リスト
 
HTML5も先取り、Safari最新版がリリース
HTML5に含まれるFlashなどプラグインを使わずにHTMLにオーディオやビデオを埋め込む「video」「audio」のタグや、CSSでアニメーションを実現するCSS transforms and transitionもサポートしたらしい。
 
脳をバックアップしてくれるツール『EverNote』
リアル外部記憶装置とあってはほっとけない。さっそく導入してみたが、画像内の文字検索ができるのがすばらしい。Googleノートブックの発展系といったイメージ。
 
現実世界のマリオはこんな顔:『Photoshop』を駆使した画像
グロいよリアルマリオ。
 
アップル「Safari 3.1」Mac/ Windows版をリリース、最速をアピール
ついにWindows版Safariのbetaがとれた。それは大変すばらしいことなんだが、最速最速ってなんか眉唾なのでSunSpiderでベンチとってみようかな?
 
クレジットカードも鍵も携帯も危険――ハッカーが実演
電話の発信者番号のなりすましテクニックを利用し、カンファレンス主催者が使っていた米AT&T社のボイスメール・アカウントに侵入し、目の前でボイスメール用応答メッセージを変更した。
 
NovellがSUSE Linux Enterprise 11の開発計画を発表,.NET互換環境も
.NETアプリケーション互換開発環境「Mono 2.0」が提供される。Mono 2.0でLinux上で.NETアプリケーションを実行できるとは。しかし10.03インストールはしたが全然いじってないなー。
 
中日新聞:ダライ・ラマ「統制不能なら退任」 チベット独立論をけん制
ダライ・ラマが「独立は論外」と発言。「中国人とよい関係を築かなければならない」と対話路線を主張し「高度な自治」を目指しているとは知らなかった。
 
ATOK for LinuxがUbuntuに正式対応,アップデート・モジュールを公開
ちょっと導入を考えてみようかな
 
南極基地内部の様々な物で作られた美しい音楽
すばらしい。ワイングラスの縁を指でなぞって音を出すのは誰でもできるんだろうか?今度やってみよう。
 
「ゲーマーにとって自分の死は快感」研究を考える
一人称視点のゲームをプレイ中のプレーヤ表情を複数のセンサーで詳細に記録する実験。敵を倒した時は被験者の筋電図活動は急上昇したが表情は「悲しみ」として記録され、自身が殺された時は「喜び」の表情として記録されたらしい。
 
2008-03-19 18:44 | Diary | Comment(0) | Trackback(0)
蹴り飛ばされても自力で立ち直る4脚ロボットの動画
投稿日時 : 2008-03-19 03:44
 これはかなりヤバい。まず気持ち悪いぐらい動きが動物的。動作音がウィンウィンいってるが明らかに機械よりも動物に近い印象を受ける。側面から思いっきり蹴り飛ばされても、氷の上で足がつるつる滑っても転ばずにバランスをとるのだが、そのバランスをとるときの足の動きなんかがまるで動物。結局動物や人間が究極に完成されたロボットの見本なのだろう。後半ではがれきの上を登り降りしたり、かなりの高さまでジャンプする様子が見れる。
 
YouTube - Boston Dynamics Big Dog (new video March 2008)

 
そもそも軍用に開発されているもので、戦場で装備を運ぶのに使われることを想定している。現在、運搬可能な積荷重量は約150キログラム。開発元の米Boston Dynamics社は既に米軍と最高4000万ドル規模の大型契約を結んでいる。
 
2007年の段階では積載量は70キロ程度だったみたい。1年未満で倍になるとは。かなり順調に開発が進んでるようです。
YouTube - Boston Dynamics BIGDOG Robot

 
ふと思ったがASIMOって蹴り飛ばしたらどうなるんだろう?w
 
 このロボットろばの開発にはDARPAが絡んでいるみたいですね。動画の最後にロゴが出る。完全SFな絵空事のような計画も大まじめに研究していることで有名ですが、前身のARPAは現在のインターネットの原型であるARPANETを開発したことでも有名。
 
[参考]
氷上で滑っても自力で立ち直るロボットろば『BigDog』:動画で紹介 | WIRED VISION
戦場で活躍するか?「ロボットろば」 | WIRED VISION
動物をヒントにした米軍の新型ロボット開発 | WIRED VISION

 
2008-03-19 03:44 | Thecnology | Comment(0) | Trackback(0)
Knoppix 5.1.1 起動オプションメモ
投稿日時 : 2008-03-19 01:08
 Knoppixを久々に遊びで使ってみた。起動オプションとかすっかり忘れていたのでメモ。昔はうまくいったはずのオプションではダメになっていた。
 
KNOPPIX Japanese edition
 
KNOPPIX日本語版5.1.1DVDを落としてUSB外付けDVDドライブから起動。理由は分からないが初回は起動中にkernelパニック。外付けドライブだからダメなのかとも思ったが再起動してみたらふつうに起動した。ほかにもいくつか不安定な要素が散見された。
 
解像度が800x600になっていたのでとりあえず
boot : knoppix screen=1024x768
としたら、画面におさまらなくなった。KNOPPIXの基礎(2/9)を参考にいろいろいじってみた結果、
boot : knoppix xmodule=fbdev fb1024x768
フレームバッファでXを起動し、その解像度を1024x768に設定。これで画面におさまったが、少し重くなったような気がする。
上記サイトを参考に他のオプションも試してみた。以下のオプションでハードディスクにコピーしたディスクイメージファイルから起動できる。
boot : knoppix bootfrom=/dev/sda1/knoppix511.iso
/dev/sda1は外付けHD。起動後設定ファイルの保存先を/dev/sda1に設定しようとすると書き込めませんみたいなことを言われる。これはbootfromオプションで/dev/sda1/knoppix511.isoを指定しているせいで、起動時に既にリードオンリーでマウントされているため。ディスクイメージを参照している限りumountはもちろん、mount -o remount,rwができない。bootfromオプションなしで、ふつうにDVDドライブから起動すれば問題なく/dev/sda1に保存できた。
 
保存した設定ファイルを読み込むには起動オプションで以下のように指定
boot : knoppix myconf=/dev/sda1
明示的に指定しなくても
boot : knoppix myconf=scan
でもOK。以上の起動オプションをまとめると、
boot : knoppix xmodule=fbdev fb1024x768 myconf=/dev/sda1
という感じになった。
 
 あと問題は音が出ない。lsmodするとドライバは読み込まれているみたい。設定ツールを起動するとkernelモジュールが無効になっているとかなんとか・・・。面倒くさいのでまたいつか。
 
2008-03-19 01:08 | Linux | Comment(0) | Trackback(0)
今日読んだ記事 2008/03/18
投稿日時 : 2008-03-18 15:00
日記代わりの興味深かった記事リスト
 
ナノスケールの顕微鏡画像、国際コンテストのギャラリー
ふつうでは想像できないような奇妙で驚きに溢れた写真。そんなコンテストが開かれてることも驚き。
 
WindowsのゲームをLinuxで楽しむ PlayOnLinux
PlayOnLinuxはPythonスクリプトを使ったWineのフロントエンド。ゲームだけでなくオフィス・ソフトウェア、省力化ツール、グラフィックス・アプリケーションを問わず、Wineで動作するものなら何でも動かすことができる。
 
「耐久競技にリスク」 IOC、北京の大気で報告
そんなの分かってたことなんじゃ?会場選定の段階で考慮されなかったのが不思議。
 
アドビが「Flash Lite」をマイクロソフトにライセンス供与
MS版FlashにあたるSilverlight for Mobileの投入までのつなぎ。Silverlightに開発者を引き込めるまではWindows Mobile搭載機器上でFlash LiteとSilverlightの両方をサポートする見通しらしい。
 
有効性96.7%--Linuxカーネルのエラーメッセージ辞典「OSSメッセージペディア」
現在はLinuxカーネルの「2.6.9-34.EL」が吐くメッセージのみが対象だが、将来的には「OSSから出力されるあらゆるメッセージの情報が得られること」を目指している。
 
Eee PC対抗の本命,「CloudBook」が国内登場!:ITpro
EEEPCに続き日本版だけLinux gOSからXPに差し替えられてて59800円。1.2Ghz/512MB/HD30GB/100BT-X/.11a,b,g/800x480タッチパネル/80KeyEN。
 
2008-03-18 15:00 | Diary | Comment(0) | Trackback(0)
とても不気味な「声」を発する木
投稿日時 : 2008-03-18 07:22
 禍々しく幾重にも重なった金属製のパイプに風が吹き込むと不気味で不快な音を発する。キネティック・スカルプチャー(動く彫刻)のひとつとして紹介されていたが、別に動きはしていないような?
 
WIRED VISION
この作品は、血みどろの魔女裁判が行なわれたペンドルの丘[イギリス、ランカスターにある]を見下ろす場所に建ち、バンシー[恐ろしい泣き声で死を告げるというアイルランドの妖精]の声のような音を出している。
 
YouTube - The Singing, Ringing Tree

 
丘の下には町が広がってるようですが、夜とかこの音聞こえてこないのかな?
 
以下はクロアチアにある波の力で音を出すSea Organですが、結構音が似てるかも。
YouTube - Sea organ, Zadar, Croatia

 
2008-03-18 07:22 | Entertainment | Comment(0) | Trackback(0)
最近読んだ記事 2008/03/17
投稿日時 : 2008-03-17 11:44
 今までの人生で日記を付けようと決心しても3日続いたことがないし、他人が自分の日記を読みたがるともまったく思えないので、ふつうの日記の代わりに最近読んだ興味深かったり、参考にしたニュースや記事のリンクを一言添えて記録することにしました。
 
International standard date and time notation
UNIXのdateコマンドをJavascriptに移植するための参考資料。ISO8601の週番号の仕様確認用。
 
Linuxの標準化が進まなかった理由
LSB3.0はクソだったという話。
 
Firefox 3 Beta 4がリリース--JavaScriptの処理速度、メモリ使用量を改善
Firefox 3 beta 4のJavascriptが相当速くなったらしい。
 
asahi.com:鼻に噴射、新ワクチン開発 新型インフルで厚労省研究班
インフルエンザウイルスの型は理論上144通り。
 
上尾市が電子行政システムをLinuxで刷新、「コスト効果は6億円」
フランス議会ではUbuntuが正式採用されてる。日本もこの調子で頑張ってほしい。
 
Linux Hacks:瞬時に起動するLinux環境Splashtop
9秒で起動するLinux。同じマシンでVistaは2分以上。
 
Linuxデスクトップの新版「GNOME 2.22」が登場
GNOME 2.20に次ぐ最新安定版。大した機能は追加されてない。
 
すばらしきかな、YouTubeの新API
YouTubeを自作サイトのバックエンドに使える。すばらしきかな。
 
チベット制圧に中国への批判高まる 五輪ボイコットの声も
確かに五輪ボイコットはかなり有効な攻撃。本当にボイコットしないまでもボイコットするぞと言うだけでも効果がある。中国に恥をかかせればOK。
 

 
2008-03-17 11:44 | Diary | Comment(0) | Trackback(0)
自力で歩く巨大な彫刻(キネティック・スカルプチャー)のムービー
投稿日時 : 2008-03-17 03:43
 オランダ人芸術家Theo Jansen(テオ・ヤンセン)氏が制作するキネティック・スカルプチャー(動く彫刻)は、その動きの美しさで見るものを魅了する環境工学と芸術を一体化した作品。動力源は風のみ。
 
独BMW社のCM
YouTube - BMW (South Africa). Defining innovation.

 
重量が2トンもあるスチールと布でできた作品。これも動力源は風のみ。
YouTube - Theo Jansen - Animaris Rhinoceros

 
 元々は、仮想生物の生存競争をシミュレートするコンピュータープログラムの生物だったものを、1メートル10セントほどのプラスチック管のほか、結束バンド、ナイロン紐、粘着テープを使い実際に組み立て発展させてきたらしい。
「自力で歩く生物」を創造するアーティスト | WIRED VISION
これらの奇妙な動物(ヤンセン氏は『海浜動物』と呼ぶ)のルーツは、ヤンセン氏が17年前に設計したコンピューター・プログラムにある。このプログラムでは、4本足の仮想生物が繁殖に適した生存者を決めようと競争していた。その後、進化の過程をコンピューター画面の外に移そうと考えたヤンセン氏は、地元の店で、生物の細胞の代わりをする独自の代替物――地味なプラスチックの管――を見つけたのだった。

 彼はこのプラスチック管をタンパク質と同様に捉え、たった1つの素材から生命のような豊かな多様性を生み出せることを示したいという。最終的な目標は人間の関与なしに完全に自立的に歩き回り、進化する生命体を創造することだという。
 
「自力で歩く生物」を創造するアーティスト | WIRED VISION
ヤンセン氏は、この空力システムを基盤として使い、やがては動物たちに、神経や筋肉、高次の感知能力、さらには脳機能を模した原初的な意思決定機構さえも与え、その後、永久に浜辺に放ちたいと考えている。今のところは、動物たちを競争させ、勝った側の遺伝コード(つまり、管の長さ)を負けた側に手動で移植している。ヤンセン氏は、最後には、これらの動物がある意味での「生命」を持つようになり、人間が関与しなくても勝手に進化することを思い描いている。

 
 少し脱線しますが、生物と無生物の境界線、機械部品の集合としての生命、意識や意思の実体などなど、その辺の話題に興味ある人で、攻殻機動隊知ってる人は以下を読むといいかも。
 
瀬名秀明×櫻井圭記(五月祭特別対談) : INNOCENCEに見る近未来科学 : SCI(サイ)
 
2006年の東大の学園祭で行われた、攻殻機動隊のテレビ版1stの脚本書いてる櫻井圭記さんと、小説「パラサイト・イヴ」の著者の瀬名秀明さんとの対談の書き起こしです。内容は哲学的で少し難しいですが非常に質が高い。
 
[参考]
「風で歩く2トンのサイ」:動く彫刻の秀作5つを動画で紹介 | WIRED VISION
「自力で歩く生物」を創造するアーティスト | WIRED VISION
strandbeest
 
2008-03-17 03:43 | Thecnology | Comment(0) | Trackback(0)
フードコートで客にまぎれた役者がいきなりミュージカルをするムービー
投稿日時 : 2008-03-17 01:56
フードコートで客にまぎれた役者がいきなりミュージカルをするムービー - GIGAZINE
 
 フードコートで一般客にまぎれた16人の役者が、ファーストフード店員がレモネードをこぼして「ナプキンちょうだい」と歌い出すのをきっかけに、次々とミュージカルに参加していくというちょっとしたドッキリ動画。
 
YouTube - Food Court Musical

 
こういう居合わせた人に害のないどっきりはすごくいいと思う。
 
2008-03-17 01:56 | Entertainment | Comment(0) | Trackback(0)
ウィルスバスターのページにアクセスするとウィルスに感染
投稿日時 : 2008-03-13 04:51
 ウイルスバスターで有名なトレンドマイクロウィルスデータベースのページが3月9日21時頃に改竄され、3月12日11時30分までにアクセスした場合「JS_DLOADER.TZE」に感染してしまう状態になっていたらしい。
 
トレンドマイクロのWebページが改ざん--日米のWebサーバが攻撃される:セキュリティ - ZDNet Japan
 
トレンドマイクロの公式発表は以下。
弊社ウイルス情報ページの改ざんについて | 会社情報 : トレンドマイクロ
弊社ウェブサイトにおいてウイルス情報を提供しているウェブページの一部が、3月9日21時頃から改ざんされていたことが判明しましたのでお知らせします。
 
弊社では、改ざんされているウェブページを確認後、3月12日11時30分からウイルス情報ページを閉鎖しております。
上記期間に当該ページにアクセスした場合や、挿入されている文字列に含まれるURLをコピーしアクセスした場合、ウイルスに感染する恐れがあります。

 
ウィルスデータベースのページは2008/03/13 04:26時現在も閉鎖中。
ウィルスデータベース
ウィルスデータベースページ

 
 ウィルス対策ソフト企業がウィルス感染源になるという面目丸つぶれな事件。トレンドマイクロは2005年にもウィルスバスターのパターンファイルを動作検証を十分に行わずにリリースしたために、同ソフトをインストールしていた17万台のPCが起動→強制終了→再起動→強制終了→再起動の無限ループに陥った。そこらのウィルスよりよっぽどたちが悪い。トロイの木馬は実はウィルスバスターだった。
【続報】トレンドマイクロ事件、7時間超のロングラン会見も「テスト漏れ原因は不明」:ITpro
ITmedia エンタープライズ:トレンドマイクロ、PCを守るはずのパターンファイルに不具合
トレンドマイクロの「ウイルスバスター」に不具合 全国のシステムに障害
 
この事件で信用は地に落ちたと思っていたが今回の一件で・・・地面にめり込んだ感じ?

 
[参考]
弊社ウイルス情報ページの改ざんについて | 会社情報 : トレンドマイクロ
トレンドマイクロのWebページが改ざん--日米のWebサーバが攻撃される:セキュリティ - ZDNet Japan
【続報】トレンドマイクロ事件、7時間超のロングラン会見も「テスト漏れ原因は不明」:ITpro
ITmedia エンタープライズ:トレンドマイクロ、PCを守るはずのパターンファイルに不具合
トレンドマイクロの「ウイルスバスター」に不具合 全国のシステムに障害
 
2008-03-13 04:51 | News | Comment(0) | Trackback(0)
録画・検索できるゴーグル開発
投稿日時 : 2008-03-05 08:17
asahi.com: まるでSF 録画・検索できるゴーグル開発 東大講師ら - サイエンス
 
 このゴーグルを装着してある物体を見ると、その物体を瞬時に認識しその名前を表示させることができるというものらしい。しかも認識スピードが従来の1万倍らしい。既に学習したものと同じでなくても似ていれば推測することも可能。しかも見たものは動画として保存されており、名前でその映像を検索して確認できるというとんでもない代物。カメラのほほえみセンサーもすごいと思ったがこれは比じゃないな。すごい人がいるもんだなー。
 
[参考]
人工知能ゴーグル - T lounge blog::東京大学工学部広報室
 
2008-03-05 08:17 | Thecnology | Comment(0) | Trackback(0)
HDDと一体化する極薄のUltraATA-SerialATA変換アダプター
投稿日時 : 2008-03-04 20:24
HDDと一体化する極薄の変換アダプター:日経パソコンオンライン
 
スゴイアダプタ(SATA-TR150VH)1 スゴイアダプタ(SATA-TR150VH)2
 
日経パソコンオンライン
 システムトークスは2008年3月4日、Ultra ATA端子をSerial ATAに変換するアダプター「スゴイアダプタ(SATA-TR150VH)」を発表した。予想実勢価格は2980円。発売は3月19日。
 SerialATA対応マシンが一台もない上に、省スペースPCなので従来の変換アダプタだと内部スペース的に無理があったんだがこれならいけるかも。
 
日経パソコンオンライン
外形寸法は幅100×奥行き16×高さ23.5mm
おぉ薄い。
 
スゴイアダプタ(SATA-TR150VH)3
 
システムトークス シリアルATA(SATA) パラレルATA(PATA) 信号電源変換
本製品は、新主流のSATA HDDを従来のパラレルHDDに変換するアダプタです。 SATA HDDをパラレルHDDとして使用できるため、既存のシステムを変更する必要がなく、従来のままの環境で使用することができます。(中略) 3.5インチハードディスクにピッタリのサイズで、取り付けた状態は正にSATAハードディスクがパラレルハードディスクになったように見えます。 高さはスリム型のハードディスクに合わせています。
 
2980円だしとりあえず買っとくか。
 
[参考]
変換アダプタ スゴイアダプタ SATA-TR150BMS:システムトークス シリアルATA(SATA) パラレルATA(PATA) 信号電源変換
 
2008-03-04 20:24 | News | Comment(0) | Trackback(0)
JavascriptのString.replaceに無名関数を渡して複雑な置換
投稿日時 : 2008-03-03 02:33
 JavascriptでString.replaceに無名関数を渡して、後方参照や変数などを絡めて複雑な置換処理ができる。

■サンプル

 以下のサンプルは文字列「a=%a : b=%b : c=%c」の%付きアルファベットをキーとして連想配列namedから値を取得し、置換するものです。実行結果は「a=0 : b=1 : c=2」となります。
var named = {a:0,b:1,c:2}; //連想配列(Object)
var str = 'a=%a : b=%b : c=%c'; //置換対象文字列
var reg = /%([a-c])/g; //正規表現オブジェクト生成
var result = str.replace(reg,
    function(whole,p1){ //無名関数定義
        return named[p1]; //連想配列から値を取り出す
    }
);
alert(result); //「a=0 : b=1 : c=2」と表示
replaceの中にごちゃごちゃ書きたくない場合は以下のように無名関数を格納した変数を渡してもOK。ただしこのコードを関数内に書くのであればrepはローカル変数になるので問題ないが、関数外に書く際はrepがグローバル変数である必要がないなら避けるべき。
無名関数への参照を格納した変数を渡す例
var named = {a:0,b:1,c:2}; //連想配列
var str = 'a=%a : b=%b : c=%c'; //置換対象文字列
var reg = /%([a-c])/g; //正規表現オブジェクト生成
var rep = function(whole,p1){ //無名関数の参照を変数repに格納
    return named[p1]; //連想配列から値を取り出す
} 
var result = str.replace(reg, rep); //変数repに格納した無名関数への参照を渡す
alert(result); //「a=0 : b=1 : c=2」と表示
後で同じ置換処理をしたいなら、無名関数ではなく名前付き関数を定義しておいてその参照を渡しても構わない。1回しか使わないなら無名関数を使うべき。
名前付き関数への参照を渡す例
var named = {a:0,b:1,c:2}; //連想配列
var str = 'a=%a : b=%b : c=%c'; //置換対象文字列
var reg = /%([a-c])/g; //正規表現オブジェクト生成
function rep(whole,p1){ //名前付き関数をあらかじめ定義
    return named[p1]; //連想配列から値を取り出す
} 
var result = str.replace(reg, rep); //名前付き関数repの参照を渡す
alert(result); //「a=0 : b=1 : c=2」と表示

■受け取る引数の詳細

replaceに関数オブジェクトを渡すと、実行時に引数が渡される。その数は
グループ"()"の数 + 3
となっている。冒頭のサンプルを少し改造して以下のようなコードで引数の数と中身を確認してみる。サンプルコードでは1番目の引数をwhole、2番目をp1と決め打ちしていたのをargumentsオブジェクトを参照して全ての引数の中身を見れるようにする。
var named = {a:0,b:1,c:2}; //連想配列
var str = 'a=%a : b=%b : c=%c';//置換対象文字列
var reg = /%([a-c])/g; //正規表現オブジェクト生成
var result = str.replace(reg,
    function(){ //無名関数定義
        var args = '';
        for(var i=0; i<arguments.length; i++){ //引数の数だけループ
            args += i + ' : ' + arguments[i] + '\n';
        }
        alert(args);
        return named[arguments[1]]; //連想配列から値を取り出す
    }
);
alert(result); //「a=0 : b=1 : c=2」と表示
グループ数が1つの場合の受け取る引数の中身。グローバルオプション(g)付きなので3回マッチする。
1回目のマッチ
0 : %a
1 : a
2 : 2
3 : a=%a : b=%b : c=%c
2回目のマッチ
0 : %b
1 : b
2 : 9
3 : a=%a : b=%b : c=%c
3回目のマッチ
0 : %c
1 : c
2 : 16
3 : a=%a : b=%b : c=%c
次にグループ数を以下のように3つに増やして実行してみる。
var reg = /((%)([a-c]))/; //正規表現オブジェクト生成
グループ数が3つの場合の受け取る引数の中身
1回目のマッチ
0 : %a
1 : %a
2 : %
3 : a
4 : 2
5 : a=%a : b=%b : c=%c
2回目のマッチ
0 : %b
1 : %b
2 : %
3 : b
4 : 9
5 : a=%a : b=%b : c=%c
3回目のマッチ
0 : %c
1 : %c
2 : %
3 : c
4 : 16
5 : a=%a : b=%b : c=%c
次にグループ数を以下のように10個に増やして実行してみる。
var reg = /((%)([a-c]))()()()()()()()/; //正規表現オブジェクト生成
0 : %a
1 : %a
2 : %
3 : a
4 : 
5 : 
6 : 
7 : 
8 : 
9 : 
10 : 
11 : 2
12 : a=%a : b=%b : c=%c
以上の実験からまとめると、
  • arguments[0]はマッチした文字列全体
  • arguments[1] ~ arguments[arguments.length-3]はグループ単位でマッチした文字列。通常の後方参照で使う$1はaruguments[1]、$2はarguments[2]・・・となっている。参照できるグループの数に制限はない(詳しくは調べていないが100個以上のグループでも問題なく参照できる)。
  • arguments[arguments.length-2]はマッチした文字列が先頭から何文字目にあるか
  • arguments[arguments.length-1]は検索した文字列全体
ということになる。

■後方参照の展開のタイミング

 replaceの2番目の引数に無名関数を渡せると知らなかった頃、以下のようにマッチした文字列の後方参照$1を関数に渡して、処理した結果を置換文字列として使おうとしていたがうまく動かなかった。
これでは期待した動作はしない
var named = {a:0,b:1,c:2}; //連想配列
var str = 'a=%a : b=%b : c=%c'; //置換対象文字列
var reg = /%([a-e])/g; //正規表現オブジェクト生成
var rep = function(str){ //無名関数を変数repに格納
    return named[str]; //連想配列から値を取り出す
}
var result = str.replace(reg, rep("$1"));
alert(result); //「a=undefined : b=undefined : c=undefined」と表示
これは$1が実際のマッチ文字列に展開されるタイミングが期待より遅いのが原因。展開が行われるのはreplaceの2番目の引数「rep("$1")」が評価された後。つまりrepに格納された無名関数には文字列「$1」自体が渡される。alert(str)とすれば確認できる。その結果、「$1」をキーとして連想配列namedを検索することになるので未定義値undefinedが返されていた。
 冒頭のサンプルコードに似ているが、rep()だと関数への参照ではなくrep()の実行結果をreplaceに渡すことになるので意味がぜんぜん違う。
 
2008-03-03 02:33 | Javascript | Comment(0) | Trackback(1)
ddコマンドでisoイメージファイルの作成とマウント
投稿日時 : 2008-03-02 08:17
ddコマンドでCD-ROMからデータを吸い出してisoファイルにしてマウントした際のメモ。
 
UNIXの部屋 検索:dd (*BSD/Linux/Solaris)
dd は入力から出力へデータをコピーするコマンドである。cp はファイルからファイルにコピーするだけであるが、dd はファイルからデバイス、デバイスからファイル、デバイスからデバイスへのコピーも可能なため、ディスクのバックアップやダンプにも使用できる。
 
まずは物理ディスクをマウントする。
$ sudo mount -t iso9660 -o ro,iocharset=sjis,utf8 /dev/scd0 /media/cdrom
-tオプションでCD-ROMのファイルシステムiso9660を指定、-oオプションでカンマ区切りでマウントオプションを指定する。Windowsで焼いたディスクなのでファイル名の文字コードがshift-jisになっている。そのままマウントすると日本語ファイル名が文字化けするので「iocharset=sjis,utf8」でshift-jis→utf8の変換を行う。
マウントできたらddで吸い出す。ddの最も単純な書式は以下。
dd if=入力ファイル of=出力ファイル
ifオプション(InputFileの意)で入力ファイルを指定して、ofオプション(OutputFileの意)で出力先を指定する。
$ dd if=/dev/scd0 of=~/test.iso
1138924+0 records in
1138924+0 records out
583129088 bytes (583 MB) copied, 578.543 seconds, 1.0 MB/s
作成したisoファイルをマウントする。マウントオプションは物理ディスクのときと基本的には同じだが、違うのは-o loopオプションをつけること。これがないとtest.isoはブロックデバイスじゃないと言われる。
$ sudo mkdir /media/iso
$ sudo mount -t iso9660 -o ro,iocharset=sjis,utf8 ~/test.iso /media/iso
mount: /home/itmst/test.iso はブロックデバイスではありません
(多分 `-o loop' とやってみたら?)
$ sudo mount -t iso9660 -o loop,ro,iocharset=sjis,utf8 ~/test.iso /media/iso
これでマウントできて日本語ファイルも表示できた。
 
[参考]
@IT:CD-ROMの内容をISOイメージにするには
UNIXの部屋 検索:dd (*BSD/Linux/Solaris)
 
2008-03-02 08:17 | Linux | Comment(0) | Trackback(0)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。