はてなキーワード: ファイルシステムとは
少し遅れた感があるけど、解いてみた。
出力がテキストでないけど・・・。
仕事の合間を使ってやったものの、昼前に始めたのが5時頃にようやくできる程度。
これを25分とは尋常じゃないな、大口叩くだけあってよっぽど優秀なんだろう。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"> <!-- pre { font-family: monospace; } --> </style> <script type="text/javascript"> <!-- window.onload = function() { var q = new Map(); q.load("maptest.txt"); q.search(); var answer = document.getElementsByTagName("pre").item(0); var answerText = "\r\n"; for(var ix = 0; ix < q.route.length; ix++) { answerText += q.route[ix].join("") + "\r\n"; } answer.firstChild.data = answerText; alert("終了しました。"); }; /** マップオブジェクト */ function Map() { this.ymap = []; this.route = []; } //マップの読み込み Map.prototype.load = function(filePath) { //ファイルシステム var fileSystem = new ActiveXObject("Scripting.FileSystemObject"); //ファイル読み込み var file = fileSystem.OpenTextFile(filePath); while(!file.AtEndOfLine) { var fileBuffer = file.ReadLine(); this.ymap.push(fileBuffer.split("")); } file.Close(); fileSystem = null; }; //マップの探索 Map.prototype.search = function() { var that = this; //マップコピー var ymap = this.ymap.concat(); for(var y = 0; y < ymap.length; y++) { ymap[y] = ymap[y].concat(); for(var x = 0; x < ymap[y].length; x++) { if(ymap[y][x] == "S") var start = new MapNode(y, x); if(ymap[y][x] == "G") var goal = new MapNode(y, x); } } var openList = []; var closeList = []; start.costf = start.distance(goal); openList.push(start); //経路探索 while(openList.length > 0) { var node = openList.shift(); //探索終了 if(goal.equal(node)) { createRoute(node); break; } closeList.push(node); //隣接ノードの作成 var tonari = []; if( ymap[node.positionY][node.positionX - 1] == " " || ymap[node.positionY][node.positionX - 1] == "G" ) tonari.push(new MapNode(node.positionY, node.positionX - 1, node)); if( ymap[node.positionY - 1][node.positionX] == " " || ymap[node.positionY - 1][node.positionX] == "G" ) tonari.push(new MapNode(node.positionY - 1, node.positionX, node)); if( ymap[node.positionY][node.positionX + 1] == " " || ymap[node.positionY][node.positionX + 1] == "G" ) tonari.push(new MapNode(node.positionY, node.positionX + 1, node)); if( ymap[node.positionY + 1][node.positionX] == " " || ymap[node.positionY + 1][node.positionX] == "G" ) tonari.push(new MapNode(node.positionY + 1, node.positionX, node)); //隣接ノードの検索 for(var tx = 0; tx < tonari.length; tx++) { var openIn = false; var closeIn = false; tonari[tx].cost = node.cost + 1; var costf = tonari[tx].cost + tonari[tx].distance(goal); tonari[tx].costf = costf; //オープンリストから検索し入れ替える。 for(var ox = 0; ox < openList.length; ox++) { if(tonari[tx].equal(openList[ox])) { openIn = true; if(costf < openList[ox].costf) { openList.splice(ox, 1); push(openList, tonari[tx]); } break; } } //クローズリストから検索し、オープンリストへ移す。 for(var cx = 0; cx < closeList.length; cx++) { if(tonari[tx].equal(closeList[cx])) { closeIn = true; if(costf < closeList[cx].costf) { closeList.splice(cx, 1); push(openList, tonari[tx]); } break; } } //どちらにもない場合、オープンリストへ追加する。 if(!openIn &amp;&amp; !closeIn) push(openList, tonari[tx]); } } //適切な位置に追加する。 function push(array, item) { for(var ix = 0; ix < array.length; ix++) { if(item.costf < array[ix].costf) { array.splice(ix, 0, item); return; } } array.push(item); } //ルートマップの作成 function createRoute(lastNode) { var node = lastNode.parent; while(node.parent) { ymap[node.positionY][node.positionX] = "$"; node = node.parent; } that.route = ymap; } }; /** マップノード */ function MapNode(y, x, parentNode) { this.positionY = y; this.positionX = x; this.parent = parentNode; this.cost = 0; this.costf = 0; } //同一ノードかチェックする。 MapNode.prototype.equal = function(targetNode) { if( this.positionY == targetNode.positionY &amp;&amp; this.positionX == targetNode.positionX ) return true; return false; }; //直線距離を求める。 MapNode.prototype.distance = function(targetNode) { sabunY = this.positionY - targetNode.positionY; sabunX = this.positionX - targetNode.positionX; return sabunY ^ 2 + sabunX ^ 2; }; // --> </script> <title>経路探索:A*</title> </head> <body> <pre>&nbsp;</pre> </body> </html>
1/ CDから起動
2/ Windows XP 回復コンソール(R)を選択
3/ コマンドプロンプトが起動したら、
「format drive: /FS:file-system」
と書く。
例:
「format D: /FS:NTFS」
http://support.microsoft.com/kb/314058/ja
①<スタート>メニュー→<ファイル名を指定して実行>を選択し、
②「名前」欄に半角で「format(半角空き)d=(半角空き)/fs:NTFS(半角空き)/v:データ」
と入力。
「NTFS」はファイルシステムをNTFSにすることをあらわし、
かわりに半角で「fat32」と入力すれFAT32形式でフォーマットできる。
「データ」はボリュームラベルで任意のものを入力すればいい(省略可)。
③<OK>ボタンを押すと「コマンドプロンプト」が起動するので、
④[Y]→[Enter]とキーを押そう
たしかにjavascriptをきっちりマスターすれば、それは強みになるかもしれない。
しかし、いかんせんアクが強すぎる。王道になり得ない。
まず、javascriptだけで完結しない。どうしてもサーバサイドが絡む。
いや、javascriptで完結できるよ、と思うかもしれないが、それは特殊だ。ニッチだ。
何を言っても今のところ、javascriptは組込み言語の域を出ていない。
実行環境が特殊過ぎる。
ファイルシステムがあってプロセスがあってネットワークがあるOSに透過な環境で動かない。
DOMがあってHTTPでデータが運ばれてシングルタスク的な環境になってる。
そして、クラス/インスタンスモデルではなく、プロトタイプチェーンモデルだ。
サーバソフトウェアから使い捨てプログラムまで書くような言語ではない。
プログラミングの体験には良いかもしれない。オブジェクトを体験するには良いかもしれない。
しかし、程々にして他の言語に移った方が良い気がする。
javascriptを極める前にマルチリンガルを目指せ。
……。
当たり前か。
一つの言語で満足できるわけない。
μiTRONなんてOSって言ってもファイルシステムもないし画面への表示もできないし本当に小さいものだよ
そこが出来合いだからと言っても他の99%以上が独自だったら、
そのシステムでの開発ノウハウを得たとしても殆どが他ではそのままでは使えない知識。
・これはOSにあたる部分が何かが未定義なのでこの議論は結論が出ない。糞ったれな意見だ
・CPU制御という言葉の定義も不明。アセンブラでないとできない制御なんて殆どない
・そんなの誰でもできるだろ。どう書けばどうハードが動くかなんてハードウェアのスペックシートと回路図見ればわかるし。
■http://anond.hatelabo.jp/20090312075947
もしも1から組んだ独自OSなら、それはそれでCPUなり何なりを直接いじってる部分まで見えるわけだから、かなりお得感溢れるし、それを盗んで独自OS作る技術持ったら、結構なひっぱりだこじゃなかろうか。
・独自OSが作れるくらいでひっぱりだこなんかにならないよ。
・「独自のものが作れる」程度のスキルは世の中に溢れていて所詮「誰でも出来る」
・「洗練されていて素晴らしい独自OSが作れる」というなら別だけど、
そういうのは複数のものを見比べて審美眼を養う必要がある
[ピュアAU板] 【PC】PCオーディオ総合29.0J【AU】
http://gimpo.2ch.net/test/read.cgi/pav/1226553431/
741 [2009/02/05(木) 22:12:08 ID:BRldJeoo 400 <sage>
モノの話で盛り上がってるところで全く話脱線して悪いのだけども、
皆ファイルシステムは何にしていますか?
自分は↑の方のレスでMicroSD>>>USBメモリ、みたいな事を書いたのだけど
どうやら今になってそれはFATとNTFSの違いだと言うことに気が付いた。
(MicroSDはFATでフォーマットしていて、USBメモリはNTFSでフォーマットしていた。)
試しにUSBメモリをFAT32でフォーマットしてみたら、MicroSDとほぼ変わらなくなった。
ファイルシステムの使い勝手はともかく、音質ならFATの方が断然に良く聴こえる。
これは俺の耳だけでしょうか。
思えばRAMDISKも何の疑問も持たずNTFSでフォーマットしてから使っていたけども
なんとなく作ったばかりのFATの時の方が良かった気がしていたなぁ。
「はぁ?オマエ何言ってんの?FATなんかよりNTFSの方が全然音良いってのwwwww」
とか皆の意見が聞きたいです。
742 [2009/02/05(木) 22:13:20 ID:WhGdpGQS 名無しさん@お腹いっぱい。 <sage>
CPU負荷の線で考えればFATがNTFSより良いのは当然ではある
743 [2009/02/05(木) 22:15:47 ID:BRldJeoo 400 <sage>
FATの方がCPU負荷が少ないのですか。だからなのね。なるほどね。勉強になります。
744 [2009/02/05(木) 22:16:52 ID:0UYqe8Jh] 名無しさん@お腹いっぱい。 <sage>
FAT vs NTFSですか・・・・これはABXしやすいんじゃ
769 [2009/02/06(金) 22:11:21 ID:nxPHsofH 400 <sage>
色々なアロケーションユニットサイズでMicroSDとUSBメモリをフォーマットして音質を聴き比べるというアホな事を繰り返しました。
結果、やっぱり音的にはFAT>FAT32>NTFSの順で好ましく聴こえ
アロケーションユニットサイズは大きい方(32KB or 64KB)ほど良いような(気がします)。
というか、ファイルシステムとアロケーションユニットサイズなんかで音、変わりすぎだからw
そんで、一応Vista SP1から対応した?とかいうexFATとかいうのも試したのですが、これが
・・・・どうしようもなく良く聴こえる。
他のファイルシステムに比べて格が違うという感じがするのですが気のせいなのかな。
バカっぽくなるのでどう違うとは言わないけど。
俺の耳だけなのかなぁこれは。全くもってわからない。FATとどう違うかしら。
ググってみたけども容量制限などがほとんどない進化したFAT?ぐらいしかわからなかった。
当然どうして良く聴こえるのか、はたまた良く聴こえる俺の耳が正常なのかもわからないw
良いかどうかは別としても、他のファイルシステム3つとはだいぶ聴こえ方が違う気がする。
一応exFATはアロケーションユニットサイズが他のファイルシステムと違い、
64KB以上のサイズにも対応していてMAXは32768KBなのですが、大きすぎるのも良くない模様。(クラスタギャップ酷くなるし)
一応、今は64KBにしています。
でもVista SP1でしか使えないとなると誰も試してくれなそう・・・
と思ったらまさに1週間ぐらい前にXPでもexFATが使える更新プログラムが出たようです
なので誰か試してみて下さいな。死ぬほどヒマな人でいいので。
しかし、exFATといいそれ以外も色々な面でPCトラポはXPよりもVistaの方が良いなぁと思います。
ドライバ周りとかで問題なく音が出るのであれば。
誰か試してexFAT。
「試したけど何だコレ。全然良くねぇじゃん。オマエの耳腐ってんじゃねーのかカス」
とかそういうのでも良いから。
773 [2009/02/06(金) 23:27:17 ID:Lzuk2pc5 名無しさん@お腹いっぱい。 <sage>
>769
ABXテストしてみたら?
775 [2009/02/07(土) 03:47:14 ID:qlYONM6D 名無しさん@お腹いっぱい。 <sage>
779 [2009/02/07(土) 07:58:48 ID:IFkLUjxI 名無しさん@お腹いっぱい。 <sage>
IDEから移行してないや。
SATA音質どうなの?
780 [2009/02/07(土) 11:46:37 ID:FV7ZAII+] 名無しさん@お腹いっぱい。 <sage>
ファイルシステムで音変わると思うよ。
SSDなんかだと、NTFSだとプチフリーズで使い物にならなくても、FATにしたら、さくさく動くという報告あるもんね。
824 [2009/02/08(日) 01:46:15 ID:s8hchLBr 名無しさん@お腹いっぱい。 <sage>
ex3とex4,btrfsどれが一番なの?
825 [2009/02/08(日) 02:19:16 ID:oU7RJ23F 名無しさん@お腹いっぱい。 <sage>
ローカルで読めるの?
826 [2009/02/08(日) 02:32:53 ID:t1JPOgtk 名無しさん@お腹いっぱい。 <sage>
830 [2009/02/08(日) 04:19:25 ID:s8hchLBr 400 <sage>
exFATの凄さは1日開けても今だに実感出来る。
1日限りの体調限定ではないようで一安心w
というか何でこんなに良いんでしょうかexFAT。
>>826さんの書き込み通りなら、ダントツに負担のないファイルシステムという事なのだろうか。
正直もうOS周りは弄れるところは一通り弄った感もあり、普段良く聴いている曲に
さすがに聴こえない音などもう無いし、そう感動することももう無いと思ってた。
FAT(32)とNTFSの比較にしたって、FATが優れているというよりは、むしろ単にNTFSが劣っているという感じで
FATで聴いたから別段良くなったという気もしなかった(もとからMicroSDはFATでフォーマットしていたし)。
また、OS周り等で弄れるところが少なくなってくると、どうしてもどちらかに優劣が付けづらいというか
どちらも良いのだけどこっちはここが気に入らない、あっちはあそこが気に入らないという感じで
こっちが良いというよりは、まぁマシなのはこっちかなという選択ばかりになってきて、あまり感動もなくなってくる。
何せ悪く感じる部分が全くなく、単純に全体的な音質が格段に上がったと感じる。
音質が上がったとかしか表現できない自分バカだなー死ねばいいのにと本気で思う。
聴こえない音なんてこれ以上無いと思っていた曲から新しい音が聴こえ、
オカルトと言われようが俺的に何よりも大切なリズムの整い方wも完璧。
というか空気感(なんだそりゃ)が全く違う。
正直、FATとNTFSを比較して、
「ファイルシステムで変わるのはせいぜいこの程度」という先入観があったため、
exFATにした時、最初これは良くなったのか何かを間違えたのか耳が疲労の限界を超えたのかわからなかった。
それぐらいに「たかがファイルシステムごとき」にして想像を超えた向上。
聴きなれた曲ばかりでもいま聴くのが楽しくてしょうがない。
もうHDDもRAMDISKもSSDも全部exFATでフォーマットしたい。
exFATを開発した人は神。
exFATだけでどんぶり3杯は食える。exFATと結婚したい。
とりあえずさっき家にあるMicroSDを全部exFATでフォーマットした。
携帯で1枚も読めなくなった。知ったことか。
・・・これぐらい書けば、1人ぐらいは試してみてくれるかしら。
831 [2009/02/08(日) 05:31:37 ID:0B3yXNci] 名無しさん@お腹いっぱい。 <sage>
他人が0.01しか差を感じないことを100万倍にして言うのがオーディオ。
835 [2009/02/08(日) 08:14:27 ID:jjyijtal 名無しさん@お腹いっぱい。 <sage>
まだ言ってるのか?w
どうしようもないアホだな
ファイルシステムで音質なんか変わる訳ねーだろwwwww
836 [2009/02/08(日) 08:38:34 ID:9TrebdVD] 名無しさん@お腹いっぱい。 <sage>
>830
インターフェースは何?
そのあんたが好きなファイルシステムになにをのせると音がいいんだ?
こういうこともちゃんと書かないで「いい、いい」ばかり書いてるアンタはバカなの?
845 [2009/02/08(日) 11:48:50 ID:1axgO9HJ] 名無しさん@お腹いっぱい。 <sage>
exFATで変わるって起動ドライブのフォーマットじゃないと意味無し?
846 [2009/02/08(日) 12:35:44 ID:KAG9FyE0 名無しさん@お腹いっぱい。 <sage>
試そうとしたが
リッピング専用機の電源変えたいんだけど、お勧めとかありますか?
(http://www.kev009.com/wp/2008/11/on-file-systems/)
訳した。分からなかったところは英語のまま。ファイルシステムについて完全な素人なので変な所があるかも。
ファイルシステムはOSの重要な要素だが最近ではあまり関心を払われていない。ビットが入ってきてビットがでていく……デスクトップシステムにとっては、たいてい十分に働いてくれる……ただし、電源が落ちるまでは。しかし、そんな状況ですら近頃ではあまり困ったことにはならない。
Linuxのファイルシステムの分野には競合製品が多い。ext2が長い間標準とされてきたが、2001年辺りから他の選択肢も主流となった。あまり歴史に深入りせずに要約すると(順番は適当)、ext2が進化してext3となり、ジャーナリング機能が付いた。ReiserFSがリリースされた。SGIはXFSを移植した。IBMはJFSを移植した。
いくつかの理由があって(主に政治的な理由で)ext3がLinuxのデファクトのファイルシステムとなった。
私が古典的ファイルシステムと呼ぶとき、基本的にいつも同じ概念を指している。つまり古典的なUnixレイアウトのファイルシステムにジャーナリング機能を追加したものだ。ここに述べるのは、それら古典的ファイルシステムのハイライトである。
これは後知恵だが、JFSやXFSが牽引力を持たずに、ext3が人々を古典的時代に停滞させたのは一種の悲劇だった。しかしながらext3は信頼性を証明し、きちんと動くように一貫として保守されてもいる。
2005年にSunはZFSという爆弾をリリースした。ZFSは私が次世代ファイルシステムと呼ぶ時代への案内人である。
ハードディスクが大きくなるにつれて、バックアップの戦略、完全性(integrity)の検証、巨大なファイルのサポートは前より遥かに重要になってきている。
ここあげるファイルシステムは古典的なVFS lineを曖昧にしたりLVMとRAIDを強固な結合することによって管理を楽にする事を目的としている。
ダメなハードウェアで起きる静かな(観測されない)データの破損も心配の種である。これに対抗するために、次世代のファイルシステムはチェックサムを供えている。
いろんな意味でLinuxのコミュニティーは完全に油断しきっており、多くの開発者はZFSがリリースされるまで次世代ファイルシステムについて真剣に考えてこなかった。Reiser4はいくつかの新しいアイデアを持っていてキラーファイルシステムとなろうとしたが、Hans Reiserは、他のカーネル開発者との著しく酷い関係を楽しんでいたのだった。ただ幸運な事に、いまではいくつかの、より先進的なファイルシステムが登場しようとしている。
kernel 2.6.28と一緒にext4がリリースされるが、BtrfsやTuxs3が安定するのを待った方がよい。Btrfsの開発陣は短距離走開発を行っているので、Linuxのカーネルの開発サイクルに次か、あるいはその次で取り込まれると思われる。
SSDが普及するのは明白だ。理論的に速度の面で磁気ストレージより圧倒的に早く、現実にも既に書き込み速度が追い付きはじめている。最新のIntelのランダムアクセスやIOPSは非常に印象的である。Btrfsは当初からSSDへの最適化を取りいれようとしている。しかし、これらの新しいデバイスは、更に速度の早い新しいファイルシステムを生むだろう。
私自身の考えでは、ウェアレベリングやFATエミュレーションがSSDの性能を押し止めているため、 新たなファイルシステムが登場すればパフォーマンスを改善できるだろう。
[admin@sakura2 ~]$ uname -a Linux sakura2 2.6.9-67.0.4.ELsmp #1 SMP Sun Feb 3 07:08:57 EST 2008 i686 athlon i386 GNU/Linux [admin@sakura2 ~]$ cat /etc/issue.net CentOS release 4.6 (Final) Kernel \r on an \m
# yum update # yum remove emacs emacspeak emacs-leim emacs-common # yum remove NetworkManager # yum remove bluez-bluefw bluez-hcidump bluez-libs bluez-utils # yum remove cups cups-libs # yum remove irda-utils isdn4k-utils pcmcia-cs wireless-tools # yum remove wpa_supplicant gpm xinetd # yum remove ppp nfs-utils lksctp-tools autofs # yum remove xorg-x11-libs # yum remove selinux-policy-targeted # yum remove vsftpd # yum clean all
[admin@sakura2 ~]$ uname -a Linux sakura2 2.6.9-67.0.7.ELsmp #1 SMP Sat Mar 15 06:54:55 EDT 2008 i686 athlon i386 GNU/Linux
# rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/centos-release-notes-5.1.0-2.i386.rpm \ http://mirror.centos.org/centos/5/os/i386/CentOS/centos-release-5-1.0.el5.centos.1.i386.rpm [root@sakura2 admin]# cat /etc/issue.net CentOS release 5 (Final) Kernel \r on an \m # yum update glib procps udev iptables # rpm -Uvh --nodeps http://mirror.centos.org/centos/5/os/i386/CentOS/initscripts-8.45.17.EL-1.el5.centos.1.i386.rpm \ http://mirror.centos.org/centos/5/os/i386/CentOS/mkinitrd-5.1.19.6-19.i386.rpm # rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/e2fsprogs-1.39-10.el5.i386.rpm \ http://mirror.centos.org/centos/5/os/i386/CentOS/e2fsprogs-libs-1.39-10.el5.i386.rpm \ http://mirror.centos.org/centos/5/os/i386/CentOS/e2fsprogs-devel-1.39-10.el5.i386.rpm
# rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/kernel-2.6.18-53.el5.i686.rpm
[admin@sakura2 ~]$ uname -a Linux sakura2 2.6.18-53.el5 #1 SMP Mon Nov 12 02:22:48 EST 2007 i686 athlon i386 GNU/Linux # yum clean all [root@sakura2 admin]# yum --version Loading "fastestmirror" plugin 2.4.3 [root@sakura2 admin]# rpm --version RPM version 4.3.3
# yum update Error: Missing Dependency: python-abi = 2.3 is needed by package python-elementtree
# vi /etc/ssh/sshd_config # /etc/init.d/sshd restart
# vi /etc/yum.repos.d/dhozac-vserver.repo
# yum update kernel # yum install util-vserver{,-core,-lib,-sysv,-build}
[admin@sakura2 ~]$ uname -a Linux sakura2 2.6.22.19-vs2.3.0.34.1 #1 SMP Mon Mar 17 05:32:04 EDT 2008 i686 athlon i386 GNU/Linux
# yum update bash screen rsync # /etc/init.d/iptables save # /etc/init.d/iptables start # cat /etc/sysconfig/iptables # Generated by iptables-save v1.3.5 on Mon Mar 24 19:57:07 2008 **filter :INPUT ACCEPT [1067:96557] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [63680:6208436] :e0 - [0:0] -A INPUT -i eth0 -j e0 -A e0 -m state --state RELATED,ESTABLISHED -j ACCEPT -A e0 -p icmp -m icmp --icmp-type 8 -j ACCEPT -A e0 -p tcp -m tcp --dport 22 -j ACCEPT -A e0 -p tcp -m tcp --dport 80 -j ACCEPT -A e0 -p tcp -m tcp --dport 443 -j ACCEPT -A e0 -j REJECT --reject-with icmp-port-unreachable COMMIT # Completed on Mon Mar 24 19:57:07 2008 # Generated by iptables-save v1.3.5 on Mon Mar 24 19:57:07 2008 **nat :PREROUTING ACCEPT [179:10642] :POSTROUTING ACCEPT [213:13895] :OUTPUT ACCEPT [251:16220] -A PREROUTING -s ! 10.0.0.0/255.255.255.0 -p tcp -m tcp --dport NNNN -j DNAT --to-destination 10.0.0.1:22 -A POSTROUTING -s 10.0.0.0/255.255.255.0 -d ! 10.0.0.0/255.255.255.0 -j SNAT --to-source AAA.BBB.CCC.DDD COMMIT # Completed on Mon Mar 24 19:57:07 2008
[root@sakura2 ~]# /usr/sbin/vserver-stat CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME 40013 27 301.5M 73.8M 30m36s31 56m38s90 11d06h56 one 40015 5 10.8M 4.4M 0m28s33 0m12s68 9d04h23 two 40016 2 4.2M 1.3M 0m00s47 0m00s64 0m01s97 three
訳してみた。あらためて、和訳はものすごく時間を要する作業だということがわかった。もうしないと思う。
注意:以下は意訳、適当訳、稚拙訳であり、誤訳を多々含んでいることは確実であり、Joel氏が本当に以下のように述べているとは限りません。
なぜMicrosoft Officeファイルフォーマットはこんなにもややこしいのか (そしてその対処法を幾つか)
Tuesday, February 19, 2008
先週、MicrosoftはOfficeのバイナリフォーマットを公開したが、このフォーマットは殆ど正気でないように見える。Excel 97-2003ファイルフォーマットは349ページのPDFファイルだ。でも待って、それで全部じゃない。このドキュメントには次の面白いコメントが書いてある。
それぞれのExcelワークブックは1つのcompound fileに収められている
つまり、Excel 97-2003ファイルはOLE coumpound documentで、それは結局、1つのファイル内にあるファイルシステムである。これは、理解するのにあと9ページはスペックを読まなくちゃならないぐらいには十分に複雑だ。そしてこれらの「スペック」は、普通我々が考えるようなスペックというよりは、Cデータ構造みたいに見える。これ全体が階層的ファイルシステムなのだ。
もしあなたが週末を、Wordドキュメントをブログにインポートしたり、あなたの個人的な財務データからExcelフォーマットのスプレッドシートを生成するような気の利いたコードを書くのに使おうと思ってこれらのドキュメントを読み始めたなら、このスペックのややこしさと長さがそんな気をあっという間に失せさせるだろう。普通のプログラマはこのOfficeバイナリファイルフォーマットについて次のような結論を下す:
この4つ全てについて、きみは間違っている。ちょっとだけ掘り下げて、これらのファイルフォーマットがどうしてこんなに信じがたいくらいに複雑なのか、なぜMicrosoftの悪いプログラミングを反映しているのではないのか、そしてそれを回避するためにあなたに何ができるか、を明らかにしよう。
理解すべき最初のことは、これらのバイナリファイルフォーマットはちょっと違ったデザインゴールを持って設計されたということだ。たとえばHTMLとは。
これらはすごく古いコンピュータで速く処理できるようにデザインされた。Excel for Windowsの初期のバージョンでは、1MBのRAM、20MHz動作の80386が Excelを快適に走らせることができるための妥当なものだった。このファイルフォーマット内には、ファイルを素早く開いたり閉じたりするための最適化が沢山仕込まれている:
これはライブラリを使うことを想定して設計されている。もしあなたがバイナリをインポートするものを1から書き上げたいと思ったら、Windows Metafile Format (何か図を描く場合) や OLE Counpound Storage みたいなものをサポートしなくてはいけなくなる。もしあなたが Windows上でやるのなら、そうしたことをたいしたことのない作業にするためのライブラリのサポートが存在する... そういったフィーチャーを使うことは(元々)マイクロソフトチームのためのショートカットだった。でもあなたが全部を自分でスクラッチから書くなら、全部の作業を自分自身でやらなくてはいけない。
オフィスはcompound documentsに対して広範囲のサポートを持っている。例えば、スプレッドシートをWord文書に埋め込んだりできる。完璧なWordファイルフォーマットのparserは、同じように、埋め込まれたスプレッドシートで何かインテリジェントなことが出来るべきだろう。
それは相互協調性(interoperability)を意識してデザインされてはいない。仮定されていたのは、WordファイルフォーマットはWordからのみ読み書きされなくてはいけない、ということで、それは当時においては十分に合理的なものだった。これは、Wordチームのプログラマがファイルフォーマットをどう変更するかについて決定を行う場合にはいつでも、彼らが気にするのは (a)何が高速か (b)Wordのコードベースにおいて最小の行数になるのは何か、だったことを意味する。SGMLやHTML-interchangeableといった標準ファイルフォーマットのようなアイデアは、最初にインターネットがドキュメントの相互交換を実現するまで現実のものにはならなかった。それはOfficeバイナリフォーマットが最初に考案されてから10年後のことだったのだ。ドキュメントを交換するのにインポーターとエクスポーターを使うことができるという仮定が常にあった。実際Wordは簡便な交換のために設計されたRTFと呼ばれるフォーマットを持っており、そのフォーマットは殆ど最初のころからあり、今も100%サポートされている。
それはアプリケーションの全ての複雑さを反映していなくてはいけない。 全部のチェックボックス、全部のフォーマッティングオプション、そして全部の、Microsoft Officeのフィーチャーは、ファイルフォーマットのどこかで叙述されていなくてはいけない。Wordのパラグラフメニューにある、"Keep With Next" と呼ばれるチェックボックス、これはパラグラフを、その後ろのパラグラフと同じページに置くのに必要な場合は、次のページに移動させるもの(?)だが、これもファイルフォーマットの中に無くてはいけない。そしてこれはつまり、あなたがWordドキュメントを正しく読み込める完璧なWordクローンを実装したいなら、そういったフィーチャーを実装しなくてはいけないということだ。Wordドキュメントをロードする競争力のあるワードプロセッサを作っているのなら、ファイルフォーマットからそのビットをロードするコードを書くのには1分しかかからないかもしれないが、ページのレイアウトアルゴリズムをそれに対応させるのに何週間もかかるかもしれない。もしあなたがそうしない場合、カスタマーがあなたのクローンでWordファイルを読み込んだら、全部のページがぐちゃぐちゃになってしまうだろう。
それはアプリケーションの歴史を反映していなくてはいけない。 このファイルフォーマットに見られる多くの複雑さは、古く、複雑で、愛されず、めったに使われないフィーチャーを反映している。それらはファイルフォーマットのなかに後方互換性のためにまだあり、そしてMicrosoftにとってその辺りのコードを残しておくことには何らコストはかからない。しかしあなたがこれらのファイルフォーマットをparseおよびwriteする一貫した完全な仕事をしたいと思うなら、Microsoftのインターンが15年前にやったのと同じことを全て、またやらなくてはいけない。要点は、何千人年の仕事が今のWordやExcelには費やされてきたのであり、これらのアプリケーションの完璧なクローンを作りたいと本当に欲するなら、あなたは何千人年を費やさなくてはならないことになる、ということだ。ファイルフォーマットは単に、アプリケーションがサポートする全てのフィーチャーの簡潔なサマリーなのだ。
手始めに、小さな例を一つ、深く見てみよう。Excelのワークシートは色々なタイプのBIFFレコードの集まったものだ。私はスペックの一番最初のBIFFを見てみたい。1904と呼ばれるレコードだ。
Excelファイルフォーマット仕様のこのレコードについての記述は非常に曖昧なものだ。そこでは単に、1904レコードが「1904日付システムが使われているかどうか」を示すレコードだ、と述べているだけだ。ああ、使えない仕様書の典型的な一例だ。あなたがExcelファイルフォーマットで何かしている開発者で、そしてファイルフォーマット仕様にこう書いてあるのを見つけたなら、あなたがMiocrosoftは何かを隠しているのだと結論付けたとしても無理はない。この情報の断片は十分な情報をあなたに与えはしない。あなたには幾ばくか外部の情報が必要で、私は今ここで、それを提供しよう。Excelワークシートには、2種類ある。日付のエポックが1900/1/1のもの(これには、Lotus 1-2-3 との互換性のために故意に入れられた閏年に関するバグがあるが、ここでそれについて述べるのは退屈すぎる)、および、1904/1/1のものだ。Excelは両方をサポートしているが、それはExcelの最初のバージョンはMac版であり、それは単に簡単だったという理由でOSのエポックを使っていて、しかしWindows版のExcelは1-2-3のファイルをインポートできなくてはならず、そしてそれは1900/1/1をエポックとして採用していたからだ。あなたが涙ぐむのも無理はない。歴史のどの時点においても、プログラマが正しいことをしなかった、という時はないのだが、しかし現実にあなたが手にしているものはこれなのだ。
1900と1904のファイルタイプは両方とも世の中には広く存在しており、それは通常、ファイルがWindowsとMacのどちらで作られたかによる。一方のタイプから他方のタイプへ黙って変換するのはIntegrity的に問題があるので、Excelはファイルタイプを変換することをしない。Excelファイルをparseするためには、あなたは両方を扱わなくてはならない。それはファイルからこのbitをロードするだけの問題ではなく、あなたが日付表示と両方のエポックを扱うparsingのコードまで書き直さなくてはいけないということを意味する。実装には何日かかかるだろうと私は思う。
実際、あなたがExcelクローンの作業をするなら、日付の扱いについて、あらゆる種類の微妙なディティールを発見することになるだろう。Excelは日付の値をいつ変換するのか? 表示の整形はどうやっているのか? なぜ1/31は今年の January 31と翻訳され、また一方で1/50はJanuary 1st, 1950と翻訳されるのか? Excelのソースコードと同じだけの量のドキュメントを書かないがぎり、振る舞いに関しての微妙なビットを全て完全に記述することはできない。
そしてこのレコードは、あなたが扱う何百もあるBIFFレコードの最初の1つに過ぎず、しかももっとも単純なものなのだ。他のレコードの殆どは、より多くのプログラマーを涙に暮れさせるぐらいには十分複雑だ。
唯一導き得る結論はこれだ。
MicrosoftがMicrosoftとOfficeのファイルフォーマットをリリースしたことは大変有用なことだが、しかしそれでOfficeファイルフォーマットをインポートしたり保存したりするのが楽になるということは全く無さそうだ。それらは狂気じみて複雑で、リッチなアプリケーションで、そしてあなたは人気のある20%の部分を実装して80%の人々を幸せにするというくらいのことしかできない。バイナリファイル仕様によってなされるのは、多く見積もっても、著しく複雑なシステムのリバースエンジニアリングにかかる時間を何分か削減するくらいだろう。
オーケー, 私はいくつか回避法を教えると約束した。良いニュースは、殆どの良く知られたアプリケーションにとって、Officeバイナリファイルフォーマットを読み書きしようと試みることは誤った決定だということだ。あなたが真剣に考えなくてはいけない代案が2つある。Officeそのものにそれをやらせるか、書き込むのが簡単なファイルフォーマットを使うかだ。
ヘビーな仕事はOfficeにやらせよう。WordとExcelは実に完全なオブジェクトモデルを持っており、COMオートメーションの手段が可能で、これであなたは何でもプログラムでやるようにできる。多くのシチュエーションでは、Office内のコードを再利用するほうがそれを実装しようとするよりも良い。ここにいくつか例がある。
この手のアプローチは、全ての種類の一般的なOfficeタイプについての、サーバ上であなたがやりたいと思うであろうアプリケーションで、うまくいくだろう。例えば:
これらのケースの全てにおいて、Officeオブジェクトにインタラクティブ動作でないことを教えてやる方法があり、だから表示をアップデートするのに煩わされたり、ユーザに入力を促す必要はない。ところで、このようなやりかたでいく場合には、gotchas(?)がいくつかあり、そしてそれはMicrosoftは公式にサポートしているものではない。だからあなたがそれを始める前にはKnowledge baseの記事を読むように。
書き込むファイルにはもっとシンプルなフォーマットを使いなさい。単にOfficeドキュメントをプログラムで生成したいなら、殆どいつでもOfficeバイナリフォーマットよりももっと良いフォーマット、WordやExcelでも問題なく開くことができるようなフォーマットが存在する。
いずれにせよ、全てのOfficeファイルを完全に読み書きできるような、文字通りのOffice競合製品を作ろうとする(その場合には、何千年もの作業があなたに予約される) のでない限り、Officeバイナリフォーマットの読み書きをするというのは、何であれあなたが解決しようとしている問題を解決するためのもっとも労働集約的な方法だ。
やー、これは酷いねー。
証拠保全は,あくまでも任意の手続であって,実際上,拒絶されたらそれまでである。
証拠保全は強制できないが、裁判所の心証が悪くなることは自明。「プライバシーや企業秘密が侵されるといった正当な理由」を正当な理由と評価するかどうかは裁判官次第。
その程度の正当性は、原告が「セキュリティ専門家」を連れてきて、彼に訴外の情報についての守秘義務を課すという形をとれば、簡単に覆るよ。
その専門家は、デジタルフォレンジックの専門家で、ハードディスクを文字通り洗いざらいコピーするはずだ。
というのは、「ダウンロード違法化」で問題になるのは、複製を所持しているかどうかではなくて過去にダウンロード複製をしたかどうかなので、
ファイルシステム上に一見問題のコンテンツがなくても、ファイルを消した痕跡をも探し出す、とか、ダウンロードログのようなものがもしあればそれもあさる、ということになるから。
で、そのセキュリティ専門家が原告に対して独立しているか、といったことは、裁判官がどこまで厳密に判断するかというと、それはなんとも言えないだろうし、
守秘義務を破って原告に訴外の情報をもたらしたとして、それがバレるかというとそういうものでもなかろう。
しかし,そもそも,証拠保全の危険は,現在においても,現行著作権法に違反していると疑われる場合に存するのであり,他方,現在,各家庭でPC端末の中身を確認する証拠保全が行われたという例は,あまり聞かない。
送信可能化件侵害の場合、圧倒的多数は家庭ではなくてデータセンターなどのサーバ上だろうし、ファイル共有など家庭のPC端末が直接関係するものについては、そもそもほとんど訴訟やってないし、訴訟やっている場合でも、送信可能化の場合であれば、「実際に送信可能であることを確認して証拠に残し、そのIPアドレスの利用者をISPに問い合わせる」ことで足りるから、あまり聞かないってことになるんだろう。ちなみに、ダウンロード違法化については、RIAAが訴訟乱発やる気満々だよ。
ちょっと前に大学が麻疹で休講だったので前から気になっていた&最近Windows重いよバカーってことでLinuxをインストールしてみました。
選んだディストリビューションは最近話題のUbuntu Linux。
インストール手順は WinXPとUbuntuのデュアルブート まったり東京+を見ると幸せになれるはずです。
今回はそれに自分が困ったところを補足。
日本語ローカライズ版Desktop CDのダウンロード | Ubuntu Japanese Team
バージョンによってサポートされている期間が違うので好きな方を選んでください。
isoファイルをダウンロードしたら、それをCD-Rに焼きます。isoファイルを焼けるソフトを持っていない方は
かんべ(Windows95/98/Me / ユーティリティ)から「かんべ」というソフトをダウンロードしてください。
このソフトを使用することでisoファイルをCD-Rに焼くことができます。
焼くことができたらまずは試しに焼いたCD-Rを入れたままパソコンを再起動してみてください。すると今まで見たこと無い画面が出てきたと思います。
そこでUbuntuの起動とインストールを選択。するとCDをがりがり読み込んで起動してくれます。
しばらくすると起動するはずです。これでUbuntuが起動できました。でも、これだと毎回CDが必要&デスクトップに保存しても電源を切るとアウトなのであくまでもお試しor他人のPCを借りているなどの状況に限られるかと思います。それでも、起動してすぐにOpenOfficeやFirefox、メッセンジャー、メールクライアントが入っているので大体の作業ってかほとんどの作業ができます。
ちなみに、インターネットはこのままでもLANケーブルが刺さっていればできると思います。無線は、画面上部のシステム>システム管理>ネットワークからできます。設定方法は「無線LAN接続」を選択して右のプロパティ(P)をクリック。そこで、無線LANのアクセスポイントとWEPキーを入力(WEPキーはパスワードみたいな物で、それを設定していない人はもちろん入れなくてかまいません。)
まぁ、これを使ってUbuntuいいんじゃね?インストールしてみようかな・・・とか思ったらインストールをどうぞ。
ただし、以下のことに気を付けてください。
最近のパソコンは購入時の状態に戻すプログラムがパソコンに内蔵されていますが、万が一の際はそのプログラムが作動しないことがあります。特に、Ubuntu Linuxをインストールする際など、システムに手を入れる場合はなおさらです(これはUbuntuやLinuxに限ったことではありませんが。)。なので、PCのリカバリディスクを必ず作成してから以下の作業に取りかかってください。
リカバリディスクの作成方法はソニーのVAIO typeGの場合、スタート>全てのプログラム>VAIOリカバリユーティリティーを実行してください。
後はそのプログラムの流れに沿ってリカバリディスクを作成してください。
タイトルのまんまです。つまり、今使っているパソコンのハードディスクがWindowsでは書き込みができるけど、新しく入れようとしているUbuntuでは書き込みができないのです。つまり、Ubuntuに入っているワープロソフトで保存しても記録できないのです。また、Ubuntuで書き込みができるファイルシステムにしても今度はWindowsでは標準ではそのファイルシステムで読み書きができないという問題が発生します。
これを解決するのが、WindowsとLinuxどちらでも読み書きできるようにするファイルシステムを使うって手です。んで、そのファイルシステムに音楽やMy Documentsをおけば良いって話です。
・・・することはファイルを全部消さずにはできません・・・。なので、今使われている領域を一部まっさらにして、そこをNTFSからFAT32にします。
なので、必要なデータをなんらかの方法でバックアップしてください。外付けHDDを買ってそこにまとめてコピーが理想的。
ファイルをバックアップしたら、まずデフラグをします。デフラグとは、HDDの中を整理することです。例えると本棚の中にある本がバラバラだったのを巻数順に並べてとりやすくするって感じです。
ちなみに、このデフラグがきちんとできていないと大変まずいことになります。下手するとWindowsが起動しなくなります。僕はこれをする前にPCをリカバリ(買ったときの状態にデータを戻す作業)をしたのであまり心配ではありませんでした。まぁ、参照元のBlogではきちんとデフラグすればOKみたいなことは書いてありましたが。
ここからはわたしのVAIO(Vaio type G VGN-G1KAP)を例に説明します。このパソコンにはHDDドライブは1つしか付いていないので、その中で
Windows xpシステム用(NTFS)
という風に分割して使用します。なお、PCのリカバリ領域はリカバリディスクを作成した方は削除してもかまいませんが、リカバリの早さを考えるとHDD上にある方が便利&リカバリディスク持っていない出先でも直せる可能性があるなどというメリットもあるので僕は消していません。まぁ、お好きにどうぞ。
さて、そのようにしたいのですが、わたしのパソコンは、
Windows xpシステム用(NTFS)
Windows xpデータ用(NTFS)
で既に場所が埋まっているので、それを変更します。具体的には、Windows xpデータ用の部分をまっさらにして、それで空いた部分に
を割り当てるわけです。
割り当て方は、Ubuntu LinuxをCDから起動したときに入っているプログラムであるG Partedを使用します。
G Partedは、画面上部のシステム>システム>設定かシステム管理のどちらかの中。あれ・・・、名前違ったっけ・・・とにかくパーティーションとか書いてあったらそれを起動。
パーティーションをいじってください・・・。
あ、でもおそらくその画面を見てもさっぱりだと思うので解説しておきます。(本当はこの部分だけBlogに書こうと思ってた。)
で、いいたいのは、sda1 とか何かってことです。
sd a 1
┃ ┃ ┗1番目の分割部分
そして、1などの分割部分なのですが、これがまた厄介です。
分割の方法には、いくつかありますが、今回のように5つ以上に分割するときは、
┏━━━┳━━━┳━━━┳━━━━━━━━━━━━━━━━┓ ┃ ┃ ┃ ┃hda3 ┃ ┃ ┃ ┃ ┃┏━━━━━━━┓┏━━━━━┓┃ ┃ hda1 ┃ hda2 ┃ hda4 ┃┃hda5 ┃┃hda6 ┃┃ ┃ ┃ ┃ ┃┃ ┃┃ ┃┃ ┃リカ ┃Win xp┃ 共有 ┃┃ / Linuxの ┃┃スワップ ┃┃ ┃ バリ┃ ┃ ┃┃インストール先┃┃ ┃┃ ┃ NTFS ┃ NTFS ┃FAT 32┃┃ ext3 ┃┃ swap ┃┃ ┃ ┃ ┃ ┃┗━━━━━━━┛┗━━━━━┛┃ ┗━━━┻━━━┻━━━┻━━━━━━━━━━━━━━━━┛
としないといけません。なんか入れ子状になっていますが。入れ子状を使わずに仕切りを入れられるのは4分割までという決まりがあるためです。
なので、5つ作りたいときは分割しましょう。
とりあえず疲れたからひとまず終了・・・だれか代わりに続き書いて・・。
Linuxに感動したから少しでも多くの人に感動してもらいたいって気持ちで書いた。
わたしは参考にしてインストールしただけなのでほぼそのままです。
ここ
ekken♂ : これであなたもGIGAZINEになれる! ……かも
Iconfactory: mac os XのためのFrenzicの導入
週末にわたって造られる光線辿る3D app -- pics、ビデオ及びソースコード!
Eyeshield 21は対Wiiで怒る
なぜLinuxのためのそう多くのファイルシステムか。 相違は何であるか。
Jetlagを取扱うのを助ける33の先端
DIYの写真のぽんと鳴ら出口の個人指導- 20分の涼しい3D効果
OpenIDがなぜ揺れるか、または吸うか11の理由
妊娠した女の子へのイタリアの裁判官: 「私は中絶」を得るように命令する
Ubuntu: OpenOfficeのための人間アイコン
皮の卵-固ゆで卵の完全に皮をむく最もよい方法!
同い年で学生の彼氏が今年UN*Xオタクだということが発覚しました。
相手は「抜けるんだよ、これはコンピュータの勉強をしているんだ、内容がおもしろくてしてるだけ」
と理解の苦しむ返答でばれてからまるで隠すつもりはないようです。
私はこの意味がわかりません。
ちなみに彼氏は「DragonflyBSD」などの数個のOSを使用をしていると公言し、UN*Xの歴史の話の中で「え、○○(←髭眼鏡の人の名前)ぐらい知っとけよ」といいます;
そしてお気に入りのファイルシステムもあるらしく、語ってきます;
私は彼女として見られているのか不安です。
このOSはどんな方が使用しているのでしょうか。
私は興味がないので彼の話を流していますが、よくシステムコールの内容を聞かされ正直いやです。
でも彼氏の趣味を干渉するのはどうかと思うので表にはだしていません。
話があっちこっちいってごめんなさい。
男の方はだれでもUN*Xを利用するものなのでしょうか。
彼氏は普段は普通のかっこうの高校生で、Windowsも使っています。
Shareでの割れ物あさりもうまく、流行の祭りはくわしいです。
デーモン君フィギアやペンギングッズを集めるといったことではなく、カーネルハックをするのが好きで当分飽きる様子はありません;
彼女としてどのような行動をとれば一番いいのでしょうか。
よろしくお願いします。