MSゴシック12ptで「陛」という字を表示すると、阜偏(こざとへん)の下部が途切れることに気づきました。拡大すると(下図参照)良くわかります。
陛(へい)の拡大図
ビットマップフォントの場合、見易さのためにわざと崩す場合もあって、一概に言えないのですが、同じ阜偏の「陸」「隠」「限」「陶」を見ると阜偏の下部は繋がっているみたいです。やはりミスでしょうか?
修正されてWindows Updateで対応なんてしてくれると面白いんですけどね。
研究室のサーバからウチにscpでDVDイメージ(3GBくらい)を転送しようとしたら、なぜか途中でストールしてしまいます。ストールする位置もまちまちで、早い時は数十MB転送しただけでストールしました。ううーん、原因がわからない。
少し前にIIJが帯域制限(24時間 で15GB以内)をしたニュースが流れていました。P2Pソフトを用いたり自宅サーバを運営する人は気になると思いますが、計算してみると 1日中1.4Mbpsで延々アップロードを続けて初めて突破するデータ量です。人気の日記で画像メインでもない限り、個人で細々やっているサーバには全く無縁だなあ。
秋葉原までCRESTシンポジウムを聞きに行きました。タイムキーパーを仰せつかったものの、発表者の先生方は時間無視しまくって、休憩時間がかなり削れました。2日に分けても良い発表数だったのでは…。
シンポジウムからの帰りにツクモに寄って、キーボード(メンブレン式)とHDDを買いました。旧メインマシンを実験用マシンにしようかなーなんて思ったのです。160GB SATA接続だと7,000円後半くらいなんですね、安くなったものだ。
「なんで先輩のページにはRSSないんですか?」と池嶋氏に言われ、そのときは榮樂氏とともに「使わないからいらんよ。」なんて言ってたものの、便利だと思う人がいるならと思って作ってみた。トップに index.rdf という名前で置いています。スクリプトによる自動生成ですが、自動的に更新していないのでイマイチかも。
一応InfoseekのRSSリーダなるもので読めましたが、私はRSSを全然見ないのでおかしくなっていても全然気づかないことが予想されます。逆に言うとその程度の品質維持が限界です、ということでどうかよろしく。
Pentium 4/2.8GHzよりも、Pentium M/1.6GHzの方がconfigureが速いのはなぜー?なぜー?Northwoodユーザ(Pen4ではなくCeleronユーザだけど)としては非常に悲しい結果だった…。Pentium Mの底力を知ってしまうと、次回作マシンのCPU候補はダントツでPentium Mになります。性能と省電力を両立できるなんて最高です。
それとコンパクトPCの悩みの種であるHDD増設も、USBではやや帯域不足です。インタフェースカードを増設して帯域を倍にするのが正攻法かと思いますが、USBは結構CPU使うみたいで、より負荷の少ない方法があればそちらを選びたいのが本音です。
USBの代わりとしては、今のところeSATA(※)が第一候補かなあ?SATAとバスの性能は同等ですし、外付けのケーブルが何本もあると邪魔という人もPort Multiplier対応(ハブみたいな機能)カードを利用すればケーブル一本で済むようですし。まだ普及しているとは言い難いものの、次期に主流になる規格だと思います。
大下さんと松宮さんに就職祝いにお菓子をいただきました。ありがとうございます。来年どこに行くのかなどは、今月末の懇談会で詳しく聞くつもりです。たぶん関西だと思うのですが…。
※外付けデバイス用に向けて設計されたSATAで、ケーブル長が2mまでと比較的長い。またホットプラグ対応、SATAと形が異なるコネクタにより誤挿入を防止することなどの特徴がある。
ケーズデンキにクロス(リバース)シリアルケーブルを探しに行きました。USBやIEEE1394ケーブルが並ぶ中、寂しく一個だけ置いてありました。値段も1,600円とそこそこ。買った足でそのまま研究室に向かい、あっさり問題解決。めでたし!
研究室でMSDN Academic Allianceを契約したそうで、Windows Vista Ultimate Betaが使えるようになりました。早速ポンコツ(バッテリー入れると急に電源断)のX31にインストール。ところがVistaの唯一の売りであろう新GUI Windows Aeroが有効になっていない。どして?
その後、何時間か触ってたのにAeroを有効にする方法すらわからんのです。Vistaはコントロールパネルがより改悪されております。これで5万円はちょっとねえな。製品版に期待したいけど、何も起こらなさそう…。
さきほど、ちかふみさんとこのリンクが訂正されていたことに気づきました。このページがウオッチされていたことも同時にわかりました…お手数おかけしました。
今週末にデータを提出するため、環境構築をしていたら、シリアルクロスケーブルが必要になりました。そんなもの無いって…。頼んで買ってもらうのもアリですが、今回は時間ないんで自費で買っちまうか。明日行って来ます。
Visual Studio 2005 Academic EditionはVS 2003に比べて、タブ周りがかなり変わったため、不便になってしまいました。
VS 2003ではたくさんファイルを開くとタブがスクロール出来て、タブの順番も自分で入れ替えない限りずっと同じでした。以下の図1を見るとわかりやすいですが、右側にある矢印でタブのスクロールができます。
VS 2003のタブ
図1: VS 2003のタブ機能
しかしVS 2005ではスクロール機能が無くなって、開いているファイルの一覧から選ぶ形式になった(図2参照)ため、ファイルが多いと見づらいです。そのうえ、ファイルを開くと勝手にタブの一番左側に来るようになりました。
VS 2005のタブ
図2: VS 2005のタブ機能
2003では [hoge.h] [hoge.cpp] [fuga.h] [fuga.cpp] みたいに並べて、スクロールさせて使っていたので、2005のインタフェースはかなり使いづらいです。2003風に戻せないか色々いじってみたのですが、オプションを変える程度ではどうにもならないようです。困ったなあ。
ドコモミーティングに行って、その後研究室に向かいました。
最近色んなところに登録してはIDを貰っていたため、ごちゃごちゃしてきました。就活終了を機に、要らない会員情報を整理しております。
先日(6/1)みん就(兼、楽天ID)とリクナビだけ残し、就職活動関連のサイト(毎日、日経)を退会したのを始めとして、今日はJ-gameも退会しました。
iTunesも退会しようと思ったら、iTunesをインストールしないとログインできないみたいで、退会できん…。残る整理対象はRagnarokのアカウントかなあ。最近やらないし月1,500円はかなり勿体無いです。
どうでもいいけど整理対象って書くと、借金の整理(債務整理)に見える…。
明日はドコモミーティングですが、意志の弱い私ですので、昼、榮樂氏に中古車屋でVits RSに試乗するって言われたらもう喜んでついて行きましたとも。
RSはVitsに1500ccエンジンを積んだグレードです。試乗車は中も外も非常に綺麗でした。自分が買うならこれはかなり高評価ですね。車の装備はほぼ純正で、オーディオ、マフラーくらいか?社外品。マフラーはうちのFTOよりうるさいのだけど、深夜でなければ気にしなくて良いと思います。
まあ、そんなことよりもさ!Vitsの基本的な使いやすさをベースに、1t切る軽い車重、エンジンが違うから、本気で踏めば速い、バンバン吹かさなければ燃費もそこそこ、が合わさって単なる足じゃない、楽しい車になっている点が大事なわけですよ。ハッチバック好きなら乗ってみて損は無いんじゃない?
昨日Ask Jeevesのクローラが来たっぽい。Ask.jpで検索したら既に載ってたよ、反映早いね。
それよりなぜ「野菜のめぐみ」でトップに来るかなあ?野菜のめぐみの話なんて全く無いよ!と文句をたれてたら、榮樂氏が色々と教えてくれました。以下、その話。
Yahoo! でCTiNで検索するとちかふみさんのところがトップに来ます。そこから「野菜のめぐみ」って名前でここにリンク張られているので、連鎖的にページランクが上がるんだそうです。同様にここがGoogleに載らないのは、ちかふみさんがGoogleに捕捉されていないからです。
つまり全てはちかふみさんのリンクによる恩恵なのです。でもちかふみさん、ここ見てないっぽいから今度リンクの名前変えてくださいって、お願いしなきゃいけないね。
今度の論文は TeXで書こう、なんて思ったのが運の尽きだった。
TeXの環境がないため適当にaptitude install ptex-base ptex-binその他、色々突っ込んだら、いつのまにか信学会のテンプレートがコンパイルできるようになりました。スタートは上々です。
論文のハードコピーの提出が必要なので、ぜひpsあるいはPDFが欲しいです。手始めにdvipsを使ったらいきなりこんなエラー。
$ dvips readme.dvi This is dvips(k) 5.94a p1.6 Copyright 2003 ASCII Corp.(www-ptex@ascii.co.jp) based on dvips(k) 5.94a Copyright 2003 Radical Eye Software (www.radicaleye.com) ' TeX output 2006.06.03:1615' -> readme.ps dvips: ! virtual recursion stack overflow
Google先生によると、dvipsk-jaとdvi2ps-fontdata-a2nを一緒にインストールするとこうなるそうです。ptex周りをごちゃごちゃ突っ込んだときに、一緒に入れてしまったか。dvi2ps-fontdata-a2nを削除したら直りました。
しかし今度は作成した psファイルをgvで表示すると文字化け。/usr/share/doc/gs/NEWS.Debian.gzによると、
For CJKV users: GPL gs 8.x does not contain CJK TrueType font support ...
...(snip)...
I strongly urge you to use gs-esp for the time being.
と書いてあったので、言われるままにgs-espを使います。これで日本語のpsファイルも平気です。
# aptitude install gs-esp # update-alternatives --config gs There are 2 alternatives which provide `gs'. Selection Alternative ----------------------------------------------- 1 /usr/bin/gs-gpl *+ 2 /usr/bin/gs-esp Press enter to keep the default[*], or type selection number: 2[Enter] Using `/usr/bin/gs-esp' to provide `gs'. # exit
しかしその後ps2pdfで出力したPDFを見るとなぜか全部ゴシック体にされていて、しかも字がずれている…ぐあーうぜえ!!もう、読めりゃいいよ。
TeXからPDFにするまでの流れです。各コマンドが動くようになるまでが大変なんですけどね。
$ platex readme.tex (略) $ platex readme.tex (数回やらないと図表の番号などが変になる) $ xdvi readme.dvi & (出力を確認する) $ dvips readme.dvi (略、psに変換される) $ gv readme.ps & (出力を確認する) $ ps2pdf readme.ps (略、PDFに変換される)
会社から内々定者懇談会の案内が来ました。ぎゃー、また大阪か!?と思ったら、東京でやるんだってさ。そっか、東京にも事業部いくつかあるからね、当然かも…。
来年の関西行き決定なのはもう諦めましたけど、車の行く末がひたすら気になって仕方ないです。こういう話こそ懇談会で聞くべきなのだろうか?
最近、夜中に建物がすごい揺れます。地震じゃないし、西大通からは遠いからトラックでもないし。
今日も揺れるんでまさかと思って、音楽止めてみたら、隣の部屋からわぁーとかやぁーとか声がする。くぁー原因はお前らかい…。夜中だしもちっと静かにやってくれよ。
おかげで、うちのアパートは人の力で建物が揺らせることがわかったけど、どうでもいいや。自分は夜遅い方だから気にならないですが、下の人はどう思っているのでしょう?不眠症になったりしていなければいいのだけど。
シス情セミナーの前に、研究の引き継ぎミーティングをしました。長引いてセミナーに遅刻しそうになりました。9:30に起きたのに、11:30に起きたときより遅刻しそうなんて…。
榮樂氏の買いたくなるような車を探して、塚田氏とともに学園都市周辺の中古車販売店を回って下調べしました。マニュアルという条件が厳しくて、なかなか車がありません。
それでも何件か回ったら、59万の走行少ないVits RS、39万のSC付きミラジーノ(ヴィヴィオだっけ?)、15万のプレリュードなどが見つかりました。自分なら即買いですが、榮樂氏は慎重みたいです。
免許取りたての時はマニュアルが欲しいと思ったけど、今はむしろ面倒臭いから要らんと思っております。しかし車なんて動きゃ良いというのとも違います。
要は今乗ってるFTOの変わったAT(※)が良いわけですね。実家のFocusのように普通のATだったら、不満を抱いてMT派になっていたかも知れません。
研究室にはマニュアルを欲しがる人が少なくとも4人は居ます。うーん、この温度差はどこから来るんだか。車好きの度合いなのかなあ?
※ATがあまり滑らない(3速は全然駄目だけど)、ATの割にエンブレが効く、シーケンシャルシフトなどの特徴。
ゼミの後、川崎君に自分の研究を説明していたら、リファレンスモニタ上でconfigureが失敗するという話に。横に居た榮樂神により、waitのstatusがちゃんと設定されていないせいだと判明しました。でもなんでだろう?
研究室ではさっぱり思いつかなかったのに、家に帰って5分で気づいた。自分にがっかりだ…。
第二引数statusには、状態変化を起こした子プロセスの状態を代入すべきなのに、親プロセス(waitpid() を呼んだプロセス)の状態(もちろん0)を代入していたせいでした。ケアレスミスです、いっぺん吊ってきます。
configureやmozillaが動くようになった記念に、ベンチマークを取りました。まずは素の状態で ./configureします。
~/usr/src/hello-2.1.1$ make distclean (略) ~/usr/src/hello-2.1.1$ time ./configure checking for a BSD-compatible install... /usr/bin/install -c (略) config.status: executing default commands real 0m8.700s user 0m4.488s sys 0m2.832s
Linuxのfork() って速すぎじゃね?本当にforkしてんのか?
次に、拙作のしょぼいリファレンスモニタ上で ./configureをします。
~/usr/src/hello-2.1.1$ make distclean (略) ~/usr/src/hello-2.1.1$ time ./configure checking for a BSD-compatible install... /usr/bin/install -c (略) config.status: executing default commands real 0m21.455s user 0m5.148s sys 0m4.224s
ぐあ、何これ。お、遅っ…orz
昨日の配達記録の話の続き。日本郵政公社のページから、昨日出した封書を追跡してみると、下図のように表示されました。さすが速達、一日で向こうに届きましたよ。
配達記録の追跡
昨日書いた封書を郵便局に出してきました。向こうに受け取ってないとかバックれられても困るので、配達記録にしました。届いたかどうかはネットで確認できるんだってさー、便利だね。
年金の学生特例の申し込みをした後、通帳の繰越をしに行きました。1時間もかからずに所用が済んだわけですが、所用を片付ける気になるまでが長くて…。実に4時間以上ごろごろしていましたね。
研究室の皆さんと香辛飯屋に行き、カレーを食べました。カレーと言えば…我が家にある18個のレトルトカレーをどうしてくれよう。
北脇さん、田口氏、結城さんときりんでプチ打ち上げをしました。北脇さんが必死にシュールストレミング(※)を買いたい、そして開けたい、と語っていました。中身を被ろうものなら服や頭を交換したくなりそうな代物を…誰が開けるのかなー?
※シュールストレミング: スウェーデン産、ニシンの塩漬けの缶詰のこと。SURSTROMMING。進んだ発酵により比類ない悪臭がするほか、発酵ガスの作用により爆発する危険性があり、空輸が禁止されている。缶を空けると、激しく中身が吹き出すという特徴がある。
大下さんとジョイ本に買い物しに行きました。生活用品だけを買う予定だったのですが、文房具コーナーで素敵なステープラーMAX HD-10DFL(写真左)を発見し、思わず購入しました。留めるとき軽く、針先をフラットにできる上に、普通紙26枚という貫通力が魅力です。
我が家のステープラーたち
ラクに留める機能が売りのコクヨSL-M71N(写真中央)はハズレ品だったのか、かなりジャムります。MAX HD-10N(写真右)はごく普通のステープラーで、使い勝手は良いものの、貫通力がイマイチで10枚越えのレポートに難儀します。
1000円もした今回のステープラーこそ、当たり品であることを祈るばかりです。
会社に健康診断書を送るため、封書を作りました。内容は「合格くれてありがとう、この前出せなかった書類を送るね☆」これだけです。もちろん手紙でこんな文体にしたら頭狂ってると思われます。
大学生になって初めてまともに封筒や便箋というものと向き合ったように思います。日本の学生(特有なのかは存じませんけど)は手紙の書き方も習わずに、社会人として放り出されます。ちょっと困りものですよ…。
現在の指導要領には手紙の書き方が入っているそうで、良い事だと思います。
昨日の所業のせいか頭がいてえ…。でも二日酔いなのに特に気持ち悪いなどもなく、動くのが億劫かな、という程度で済んだのが不思議です。飲み方が良かったとか?
lameのmp3コーデックをインストールしてみました。サウンドレコーダでmp3が作れます、使い方によっては便利…かもね?ffdshowインストールしているならそれで良いじゃん、って後で気づいたのは秘密です。
阿部さんいわく、プレゼンテーションを録画することになったけど、ビデオカメラのエンコーダは画質が良くないから PCに取り込んでしまうことにしたみたいです。そんなわけでキャプチャデバイスを買いに行きました。ケーズとパソコン工房を回った結果Canopusの赤いやつ(たしかMTVX2006USB)になりました。
PC関連の店はケーズデンキとパソコン工房しかないので微妙です。田舎に期待してはいかんのかな…。昔は選択肢としてヤマダ電機もありました。しかし血迷ってカー用品やブランド物を置き始めて、今や電器屋とは呼べなくなりました。そのうちドン・キホーテのようにアホとヤンキーの溜まり場になって、一帯の雰囲気を悪くしそうで心配です。
三学の駐車場に停めていたら車がアリだらけになりました。車体に接触していた木の枝から渡ってきたようです。ループを走ってみたけれど全然落ちなかったので、カスミの駐車場(家の駐車場は暗い)に停めて、手で払いました。不審者もいいとこです。室内に進入されていなかったのが不幸中の幸いでした。
結城さんとフィンラガンに行きました。テーブルが超混んでたためカウンターで飲みました。初めのギネスビール以外は、ウイスキーオンリーでした。頼んだのは、鹿の絵のGlenfiddich 12年、ピートの強いスコッチARDBEG、バーボンOld St.Nick 12年、アイリッシュJAMESON、カナディアンCanadian Clubだったか。マスターいわく「ストレートが一番うまい」ってことで全部ストレートで頼んだ。
思い返すとマスターに素人くさい質問ばっかりしていたなあ。ほんとに素人だから仕方ないんだけどさ…。
あと、マスターはリアルエール(無殺菌、炭酸無添加のビール)はこの辺だとウチしか置いてないよって言ってました。実は貴重な店だったのね、今度機会があったら頼んでみようかな。
セミナーは塚田氏の発表でした。質問時間シーンとしていて、私が質問したくとも、塚田氏は共著者なのでそうもいかず。で、何を思ったか司会役の人、質問がないって言って発表を終わらせてしまいました。質問がなければ司会者が質問するのが筋なのに…。
CSECという学会に発表することになっていたのですが、申し込みをミスってできていませんでした。今日色々な方にご迷惑をかけつつリカバリしていただきました。お世話になった方たちのためにもCSEC頑張るよ!
お昼に食堂でtsunamiに繋いだら10.x.x.x/16のようなサブネットでした。これなら研究室でもクラスAプライベートアドレスを使えるかもね?
榮樂氏の日記を見て、winbindをインストールし /etc/nsswitch.confを書き換えたのに、ping hogehogeに応答なし…。wbinfo -N hogehogeとやるとアドレスが得られるのでwinbinddは正常、telnet hogehogeとやると名前解決できました。どうやらpingだけだめなようです。
榮樂氏曰く「使ってるpingが違うかも?」だそうで。 netkit-pingとiputils-pingの2つがあるので、だめなときは入れ替えてみると吉かな。
我が家で実験してみたところ、Norton先生が悪さしているようでアドレス解決ができません。まあ我が家のマシンは固定IPだし、使えなくても別にいいんです…。
このページのページビュー履歴を取るようになってからわかったことがあります。
一日20前後のページビューですが、実質約15で残りは日記の編集中にリロードした自分によるものでした。自分のページを一切見ない日(5/20)13ヒットだったことからもうかがえます。
履歴機能でこんなことがわかるとはねー。自分でかなり回してるのがわかってしまって何か必死みたいに見えますね…。
Xenepic OnlineというMMORPG(大規模オンラインRPG)を始めてみました。説明などはHanGameから辿れます。
月額方式ではなく、アイテムによる課金方式です。つまり特殊なショップアイテムを買わないかぎりずっとタダです。その分、課金アイテムを買わないとしんどくなるようにできているんでしょうけどね。
ちょこっとやってみたところ、敵が強い割に経験値をくれず、レベルがあがりません。現在レベル15のへぼへぼです…。
かなりマイナーなのでだれもやってなさそうだなあ。
OSSSにミラーリングするようになって、5日ほど経ちました。
きちんと更新されているところを見ると /etc/cron.dに登録したミラーリング用のスクリプトも上手く動いているようです。といってもただrsyncを行うだけですけどね。
簡単に説明すると、~user/public_htmlというディレクトリがあることと、それが読めることをテストしてから、rsyncにてコピーという作業をしています。commandの部分は実際には一行です。一行にするときは行末の を取ってください。
フラグの意味は -rディレクトリを再帰的に処理、-lシンボリックリンクをコピー、-pパーミッションを保存、-t時間を保存、です。--deleteはコピー元に無いファイルは、コピー先からも消す、というフラグです。これを書かないとゴミが溜まりますね。
/etc/cron.d/rsync_html 50 5 * * * username command commandの部分(実際は1行) ---------- if [ -d /home/username/public_html ] && [ -r /home/username/public_html ]; then env LANG=C /usr/bin/rsync -rlpt --delete \ /home/username/public_html/index.html \ /home/username/public_html/diary \ username@hoge.example.com:public_html; fi
そういえばここは Google先生にだけ無視されている変なページでした。Google Botだけ蹴るなど、一切していないのにね?ま、それもOSSS側からそのうち捕捉されて終わると思います。一週間くらいでクローリングされると見ておりますが、それでもGoogleに無視されたら、もう神ですね。
Visual Studio 2005を買いました。Academic Editionなのですが、今のところ学生証を送れとか言われません。アクティベーションもなかったように思いますが、何日か経ったら言われるのかなあ?
榮樂氏より、新治村はかすみがうら市ではなく、土浦市との指摘がありました。ご指摘にあわせ 2006年5月20日の日記は訂正しました。ありがとうございます。
フリーフォントの中でIPAゴシックは、抜群の品質なのですが、ビットマップフォント部分(9と12ポイント以外入ってない?)に弱点があって、どうも画面表示には適していないように思います。
ああ、アンチエイリアスなんていうボロボロの文字をボケさせて誤魔化す(MacとかMacとかMac)品質放棄技術はやめてください。ディスプレイのような低解像度だとうっとおしいです。
現在Linux上でMSゴシックを使っていますが、それに代わる画面表示用フォントは無いものかと探してみました。ビットマップフォントの有無ってなかなか書いていないので、唯一情報が得られ、値段も手頃だったNECのFontAvenueとCanonのFontGalleryを購入しました。
ところが使ってみると、一部で異常に字が小さくなったり、ポイント数の大きい字が崩れるなど、あまり芳しくありません。オープンソースには全く縁の無いはずのMSゴシックがもっとも綺麗に表示されるあたりが皮肉ですね。
開発者たちはフリーフォントなんて使ってなくてMSゴシックでデバッグしているとしか思えません。そんな邪推もしたくなるような結果です。
やはりMSゴシックを超えるものは無いのかなあ…。
常総市にあるきぬの湯に行きました。一回も行ったことないのに現地集合は厳しいっす。でも見たことあるような建物だったような気もします。これが既視感?
走っているときに青看板を見ていると、相次ぐ合併のせいか見慣れない地名が増えたなあと思いました。そういえば新しい市はなぜに平仮名?愚民は漢字も読めないとでも言いたいのか。以下、ひらがなの街の例。
データは都道府県市区町村からのものです。
筑波市、常陸那珂市、霞ヶ浦市、と書くことに何の問題が?ああ、つくばみらい市はどう書いても終わってるので、大人しく伊奈市に変更すべきだと思います。
夜はダーツの予定でしたが、取りやめて結城邸で飲み会をしました。ストリングチーズを齧って食ったら、そんなの邪道だって。ど、どう食べたって良いじゃないですか。
雨だったので車で研究学園まで行って、電車に乗り、ドコモミーティングへ向かいました。帰りはせっかく区間快速を待って乗ったのに、寝過ごしてつくば駅まで行っちゃって、向かいに居た区間快速で戻る羽目に。ああ、時間無駄にしたわー…。
TXは秋葉原で区間快速を待つより目の前の快速に乗ってつくば駅に行き、区間快速で1駅戻る方がスムーズかもしれません。でも完全にキセル行為なので、やらないほうが身のためかな。
帰りに研究室に寄ったら、川崎君が、Wine上でGyaoを見るんだと言って頑張っていました。果たして成功したのでしょうか?
セミナーで発表しました。結構あっさり終わってしまって、つくづくドコモへの出張で頑張っておいて良かったと思いました。
研究室内のネットワークをどうするかなど話し合いましたがあまりまとまりませんでした。以下、覚えている限りの議事録です。
研究室のゼミの後に、明日のシス情セミナーの発表練習を行いました。ドコモへ出張したとき、発表会で使った資料をかなり流用したので、それなりにまとまっております。勢いでそのネタを研究会に発表することになりました。う、頑張らねば。
研究室にあるマシン(IDE HDD 2台)でRAID 0を構成して測ったら、なんと書き込み64MB/s〜72MB/sという脅威の性能を発揮しております。
我が家のサーバの場合はUSB接続だから遅いのと、妙にCPUを食うのが気になるけど、廉価RAIDだしこんなもんかな?次回作では複数のUSBカードを使うことや、外付けSATA接続などが良さそうですね。
Xenepicは昨日の発見した引数のままで今日もログイン可能なようです。HanGameアカウントのパスワードに関係の無い数値なので、この数字が漏れたら一巻の終わりじゃね??うへーうへーうへー…。
榮樂氏に「benchってナニ?」って突っ込まれたので、補足。benchはwrite速度を測るプログラムです。Linux 2.6専用と書いてあるのは、2.4系のDirect I/O(O_DIRECT)のアライメント制限を考えて書いていないからです。
一応、手元のLinux 2.4で試したら ext2はOKなのにext3でコケるからおかしいと思ったら、どこかのMLでカーネルのバグなんじゃね?という記述が見受けられました。
ホントかいなと思ってカーネルのコード見たら、fs/ext3/inode.cではstruct address_space_operationsのdirect_IOメンバに値を入れないため、O_DIRECTを指定して読み書きしようとした時点で失敗しEINVALが返ります。
バグというより、元々ext3はO_DIRECT使っちゃ駄目みたい…。なぜかはわかりませんけど。
benchのソースコードを下に貼っておきました。ヘッダや、エラー処理は省略しております。
int main(int argc, char *argv[])
{
int fd;
size_t size, bufsize, wsize, pos;
unsigned char *lpalignbuf;
struct timeval tv_start, tv_end, tv_past;
char *lpc;
size_t i;
if (argc < 4) {
printf("usage: \nbench filename size bufsize\n");
return 0;
}
//サイズを得る
size = strtol(argv[2], &lpc, 10);
bufsize = strtol(argv[3], &lpc, 10);
//Direct I/Oモードでファイルを開く
fd = open(argv[1], O_RDWR | O_DIRECT);
lseek(fd, 0, SEEK_CUR);
//アラインメントをそろえたバッファを生成、乱数で埋める
posix_memalign((void **)&lpalignbuf, 512, bufsize);
for (i = 0; i < bufsize; i++)
lpalignbuf[i] = rand() % 256;
//測定を開始する
gettimeofday(&tv_start, NULL);
//乱数を書き込む
for (pos = 0; pos < size; ) {
//書き込むサイズ
if (size - pos < bufsize)
wsize = size - pos;
else
wsize = bufsize;
//書き込む
write(fd, lpalignbuf, wsize);
pos += wsize;
}
free(lpalignbuf);
close(fd);
//測定を終了する
gettimeofday(&tv_end, NULL);
tv_past.tv_sec = tv_end.tv_sec - tv_start.tv_sec;
tv_past.tv_usec = tv_end.tv_usec - tv_start.tv_usec;
while (tv_past.tv_usec < 0) {
tv_past.tv_usec += 1000000;
tv_past.tv_sec -= 1;
}
//結果表示する
printf("time: %13d.%6d[sec]\n"
"speed: %f[MB/s]\n",
tv_past.tv_sec, tv_past.tv_usec,
(double)size * 1000000 / (tv_past.tv_sec * 1000000 +
tv_past.tv_usec) / 1000000);
return 0;
}
5/9のスクリプトをシェルスクリプトにして、検索結果リストのムービーを保存できるようにしました。その際再生ページのタイトルをファイル名に使います。ファイル名がIDだとまるで意味がわからなくなるので。
落とした .flvファイルのプレーヤは Media Player Classicとffdshowのコンビが良いです。拡大縮小も、シークも自由自在です。たまに再生開始時に数秒固まりますけど、落ちたりはしないようです。
Xenepic online(運営はHanGame)というゲームを始めてみたのですが、Ragnarok Onlineのパクリというか…。まあそのおかげで取っ付きやすいですけどね。ただ起動しただけではだめで、IEでいちいちHanGameにログインしないと遊べないようになっています。非常に面倒くさいです。
どうやって普通の起動と区別しているのか、下のプログラムをXenepicと入れ替えて引数を調べたら、変な数値とHangame IDを指定して起動していました。ちなみにその引数を渡すだけで普通にログインできます。作りがいい加減ですね…。
数値はパスワードのハッシュかと思ったのですが、パスワードを変えても不変でした。日付とか時間か?
#include <stdio.h>
int main(int argc, char *argv[])
{
for (int i = 0; i < argc && argv[i] != NULL; i++) {
printf("%d: %s\n", i, argv[i]);
}
getchar();
}
昨日作成したRAID0+1の書き込み性能を測定しました。
やはり3台もつないでミラーリングするとかなり遅いです。
$ ./bench ./a 102400000 262144 loop: 391 time: 4.812052[sec] speed: 21.279903[MB/s]
速度の見積もりはUSBバス帯域を480Mbpsの7割とし、データがストライピングで完全に三等分になったとして、
336/3*2=224Mbps=28MB/sです。
見積もりと実測値がかなり離れているので他にオーバヘッドがあるのかもしれませんが、不正確を承知でもう2台追加した場合を計算すると、
336/5*3=201.6Mbps=25.2MB/sです。
このようにバスに余裕がない状態でミラーリングすると、ディスクを増やしただけ書き込み速度が下がります。
ちなみに RAID0のみならディスクを増やしても速度が落ちる心配はありません。バスの飽和まで速度が上がるはずです。まあ、あまり増やしても分散書き込みの処理のオーバヘッドが増えるだけですけどね…。
外付けUSB HDDでSoftware RAIDを構築する全ての方へ。
※私自身よくわかってないので、間違いなどあるかもしれません。ご指摘は大歓迎です。
LinuxではUSB Mass Storage(USB HDDやUSBフラッシュメモリ)をSCSIエミュレーションによりあたかもSCSIデバイス(sda, sdb, ...)であるかのように扱います。ところがどのSCSIデバイスに割り当てられるかが不明瞭で、ただ差し直しただけで対応が入れ替わったりします。/dev/sdaがどのデバイスと関連付けられるかは、やってみるまでわからず、これではとてもRAIDを構築できそうにありません。
USBデバイスを固定する(?)方法としてudevがあります。scsiバス上にある(エミュレーションなのでそう見える)「○○社」製のデバイスなら、usbhdaに割り当てる、などの設定が可能です。区別に使える情報はudevinfoというプログラムで得ることができます(udev使うなら /sys以下の情報(sysfs)が必要かも)。
# aptitude install udev # udevinfo -a -p /sys/block/hda (... 略 ...) follow the class device's "device" looking at the device chain at '/sys/devices/pci0000:00/0000:00:1f.1/ide0/0.0': BUS="ide" ID="0.0" DRIVER="ide-disk" SYSFS{drivename}="hda" SYSFS{media}="disk" SYSFS{modalias}="ide:m-disk"
たとえば ○○社製のhogehogeという名前のHDDが一台だけある、という環境でしたら、以下のように書くことができます。/etc/udev/rules.d/ 以下に .rulesで終わる名前のファイルを適当に作ります。例ではlocal.rulesとしています。
モデル名は大抵スペースが入っているので、udevinfoで確認することをお勧めします。
BUS="scsi", SYSFS{model}="hogehoge ", NAME="sda%n", SYMLINK="usbhda%n"
NAMEならデバイスファイルが、SYMLINKならデバイスファイルではなくシンボリックリンクが作られます。%kという文字列を指定すると、カーネルが作成したデバイス名(sdaとかですね)に置換されます。詳しくはudevのドキュメントを見てください。
ところがこれで解決しない場合があります。私のように同じメーカーの同じ製品を2台使っている場合です。USBの機器にはシリアル番号を提供するものもあり(私の所持するIO-DATA製の外付けディスクなどがそう)ますが、SCSIエミュレーションのデバイスが提供してくる情報からは得られず、全く区別がつきません。
そこでLinux 2.6で最近登場した ubを使います。カーネルをリコンパイルしてubを有効にします。そのさいusb-storageドライバとSCSIエミュレーションによる方法は勝手に無効化されます。たぶん…。
私の環境ではカーネル構築だけDebian流にやってません、ご容赦ください。
# cd /usr/src/linux # make menuconfig (Device Drivers -> Block devices -> Low Performance USB Block driver) (.configならCONFIG_BLK_DEV_UB = yにする)
再起動すると /devの下にubaとかubbというブロックデバイスができていると思います。このデバイスに対してudevinfoするとIDという項目があると思います。これはおそらくUSBバス上の物理的なポートの位置ではないかと思います。
# udevinfo -a -p /sys/block/uba (... 略 ...) follow the class device's "device" looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-1/1-1:1.0': BUS="usb" ID="1-1:1.0" DRIVER="ub" SYSFS{bAlternateSetting}=" 0" (... 略 ...)
差し替えたり、抜いてみたりして観察してみた限り、IDは私の環境では同じポートに接続する限り不変な値のようです。この性質を利用して区別します。
先ほどのlocal.rulesに対して、以下のように書きました。
BUS="usb", ID="1-1:1.0", NAME="usb1-1_hd%n" BUS="usb", ID="1-2:1.0", NAME="usb1-2_hd%n" BUS="usb", ID="1-3:1.0", NAME="usb1-3_hd%n" BUS="usb", ID="1-4:1.0", NAME="usb1-4_hd%n" BUS="usb", ID="1-5:1.0", NAME="usb1-5_hd%n" BUS="usb", ID="1-6:1.0", NAME="usb1-6_hd%n"
これでmount /dev/usb1-1_hd1 /mnt/usb1-1-1などとすると、ポート1に接続されているデバイスの先頭パーティションをマウントできます。
肝心のポート1がどれなのかは、実際に機器を接続してudevinfoをして調べます。私にはIDを調べるうまい方法がわかりませんでした。ごめんなさい。
外付けUSB HDDでSoftware RAIDを構築する全ての方へ。
※しつこいですが私自身よくわかってないので、間違いなどあるかもしれません。ご指摘は大歓迎です。
Software RAIDについては、先日(2006年5月7日参照)紹介したので mdadmの使い方、cat /proc/mdstatの意味など基本的なことはそちらを見ていただくとしましょう。
さて、当方の環境ですが /homeを担っていたhda7とUSB HDD 3台でRAID 0+1を構築し、/homeにマウントしようと思います。容量は160GB(RAID1)+160GB(RAID1) のストライピング(RAID0) で320GBとなります。信頼性と容量が今までの倍になるわけです。そのぶんHDDが4倍ですが…。
まずはRAID1を2つ作成します。RAID1をいきなり作ってしまうと、ディスクの同期処理が始まり何もできなくなるので、いったん縮退モードで作成してデータのコピーを済ませ、その後ディスクを追加します。
# mdadm --create /dev/md0 -l1 -n2 missing /dev/usb1-1_hd # mdadm --create /dev/md1 -l1 -n2 missing /dev/usb1-3_hd
次に2つのRAID1をまとめるRAID0アレイを作成します。この構成はRAID1+0と呼ぶのかもしれませんが、ここでは一貫してRAID0+1と呼びます。
RAIDを作成するときデバイスファイルがないと言われたら、-aを付けてください。
# mdadm --create /dev/md3 -a -l0 -n2 /dev/md0 /dev/md1
間違ってmd2ではなくmd3にしてしまいましたがそのままいきます…。/proc/mdstatを見て作成されたかどうか確認します。確認したらmd3をreiserfsでフォーマットします。
# cat /proc/mdstat Personalities : [linear] [raid0] [raid1] [raid5] [raid4] [raid6] md3 : active raid0 md0[0] md1[1] 317127104 blocks 64k chunks md1 : active raid1 ubc[1] 156290816 blocks [2/1] [_U] md0 : active raid1 uba[1] 160836416 blocks [2/1] [_U] unused devices: <none> # mkreiserfs /dev/md3 (... 略 ...)
ブート時に自動的に構成されるように /etc/mdadm/ にある mdadm.confにRAID構成の設定を保存します。
# cd /etc/mdadm # echo DEVICE /dev/usb* /dev/md* > mdadm.conf # mdadm --detail --scan >> mdadm.conf # cat mdadm.conf DEVICE /dev/usb1-1_hd /dev/usb1-2_hd /dev/usb1-3_hd /dev/md0 /dev/md1 /dev/md3 ARRAY /dev/md3 level=raid0 num-devices=2 UUID=bxxxxxxx:xxxxxxxx:xxxxxxxx:xxxxxxx2 devices=/dev/md0,/dev/md1 ARRAY /dev/md1 level=raid1 num-devices=2 UUID=0xxxxxxx:xxxxxxxx:xxxxxxxx:xxxxxxx9 devices=/dev/usb1-3_hd ARRAY /dev/md0 level=raid1 num-devices=2 UUID=9xxxxxxx:xxxxxxxx:xxxxxxxx:xxxxxxx7 devices=/dev/usb1-1_hd
catした結果を見るとmd3, md1, md0の順番でスキャンされています。このままで良いはずなのですが、私の環境では md3の設定を一番後ろに書かないと、起動時にコケてしまいます。md3がmd0とmd1に依存しているからかなあ?よくわかりません。
データをコピーして、再起動したらディスクを追加します。同期処理にしばらくかかるので放置しておきましょう。
# mdadm --manage /dev/md0 -a /dev/usb1-2_hd # mdadm --manage /dev/md1 -a /dev/hda7
mdadm.confの設定を更新するのもお忘れなく。あとはfstabを修正して再起動してみて、動作を確認したら終わりです。
< | 2006 | > | ||||
<< | < | 06 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | - |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.15.
using GD bundled (2.1.0 compatible)(png support.)