AJAXの読み込みを待つプログレスバーを表示する
jQueryプラグインの、http://www.gayadesign.com/diy/queryloader2-preload-your-images-with-ease/:QueryLoader2プラグインを使うと、全画面表示のプログレスバーを表示することができる。(デモサイト)
しかしこのプラグインが検出するのは、HTMLドキュメント中の画像の読み込みの完了だけである。そのため、AJAXでHTML要素を順次読み込んでいくようなモノグサな仕様のサイトでは、このプラグインによってプログレスバーの画面を表示させることができない。そこで、このプラグインを改造して、AJAXリクエストがいくつ完了したかに応じて、プログレスバーの表示を行うようにした。
そのコードが以下のようなものである。
(function($) { var qlAjaxDone = 0; var qLimageContainer = ""; var qLoverlay = ""; var qLbar = ""; var qLpercentage = ""; var qLoptions = { ajaxEventCount : 0, onComplete : function() { }, backgroundColor : "#000", barColor : "#fff", barHeight : 1, percentage : false, completeAnimation : "fade", onLoadComplete : function() { if (qLoptions.completeAnimation == "grow") { $(qLbar).stop().css("width", "100%").animate({ top : "0%", height : "100%" }, 500, function() { $(qLoverlay).fadeOut(500, function() { $(this).remove(); qLoptions.onComplete(); }) }); } else { $(qLoverlay).fadeOut(1000, function() { $(qLoverlay).remove(); qLoptions.onComplete(); }); } } } var completeAjax = function() { if (qlAjaxDone < qLoptions.ajaxEventCount) { qlAjaxDone++; } var percentage = (qlAjaxDone / qLoptions.ajaxEventCount) * 100; $(qLbar).stop().animate({ width : percentage + "%" }, 700); if (qLoptions.percentage == true) { $(qLpercentage).text(Math.ceil(percentage) + "%"); } if (qlAjaxDone == qLoptions.ajaxEventCount) { destroyQueryLoader(); } } var destroyQueryLoader = function() { $(qLimageContainer).remove(); qLoptions.onLoadComplete(); } var createOverlayLoader = function() { qLoverlay = $("<div id='qLoverlay'><div id='loadingLogo'></div></div>").css({ width : "100%", height : "100%", backgroundColor : qLoptions.backgroundColor, backgroundPosition : "fixed", position : "fixed", zIndex : 666999, top : 0, left : 0 }).appendTo("body"); qLbar = $("<div id='qLbar'></div>").css({ height : qLoptions.barHeight + "px", marginTop : "-" + (qLoptions.barHeight / 2) + "px", backgroundColor : qLoptions.barColor, width : "0%", position : "absolute", top : "50%" }).appendTo(qLoverlay); if (qLoptions.percentage == true) { qLpercentage = $("<div id='qLpercentage'></div>").text("0%").css({ height : "40px", width : "100px", position : "absolute", fontSize : "3em", top : "50%", left : "50%", marginTop : "-" + (59 + qLoptions.barHeight) + "px", textAlign : "center", marginLeft : "-50px", color : qLoptions.barColor }).appendTo(qLoverlay); } } $.fn.queryLoader2 = function(options) { if (options) { $.extend(qLoptions, options); } this.ajaxComplete(function() { completeAjax(); }); createOverlayLoader(); return this; }; })(jQuery);
iPhone5と定期なくした。でどうしたか?
定期券(PASMO)再発行
駅事務所で再発行の依頼。レシートみたいなものが発行されるので、それを持って定期売り場へ。手数料500円+デポジット500円の計1000円で再発行してもらえる。チャージしていた金額もそのまま。
Ciscoコマンド覚書
よく使うであろうコマンドや設定項目を雑多に列挙。
ルータ初期化
startup-configを空にして、再起動する。
Router#erase startup-config Router#reload
ログに邪魔されずにコマンド入力できるようにする
初期設定だと、コマンド入力時にログが表示されまくって入力の邪魔なので設定。
Router(config)#line console 0 Router(line-config)#logging synchronous
ドメインルックアップ抑止
間違えたコマンドを入力すると、Ciscoルータは入力された文字列をホストだと認識して、名前解決をしようとして作業できなくなってしまう。この動作を抑止する。
Router(config)#no ip domain-lookup
host名設定
手動でhost名を設定する場合。(テスト環境でもない限り、普通は使わないだろうが。)
Router(config)#ip host
パスワード解析
パスワードを
- service password-encryption
などで暗号化すると、Type7というCisco独自の暗号化方式で暗号化される。
show runnning-configなどで見ると、こんな感じ。
line vty 0 4 password 7 051F031C355C4F1A0A login
この暗号化されたパスワードは、Ciscoルータのkey chainコマンドを使うことで、Ciscoルータ上で解析して平分に戻すことができる。
たとえば「051F031C355C4F1A0A」というパスワードを解読するとすれば、以下のようにすれば「testpass」と解析できる。
Router(config)#key chain kaidoku Router(config-keychain)#key 1 Router(config-keychain-key)#key-string 7 051F031C355C4F1A0A Router(config-keychain-key)#end Routar#show key chain kaidoku Key-chain kaidoku: key 1 -- text "testpass" accept lifetime (always valid) - (always valid) [valid now] send lifetime (always valid) - (always valid) [valid now]
HP ProLiant MicroServer + CentOS6 + RAID5
HP ProLiant MicroServerにCentOS6を突っ込んで、3台のWD20EARXでRAID5を組んでみたので、ベンチマークした。
RAID5の組み方はここを参考にした。CentOSでソフトウェアRAIDの構築 - maruko2 Note.
スペックは以下のとおり。
プロセッサー | AMD Turion〓 II NEO N40Lプロセッサー(1.5GHz、15W、2MB)×1 |
---|---|
メモリ | PC3-10600E DDR3 UB ECC 2GB(1×2GB) |
起動ディスク | SanDisk Cruzer〓 Fit〓 USB Flash Drive (8GB) |
ストレージ | Western Digital WD20EARX * 3 |
起動ディスクとストレージ以外は、購入したまま素の状態です。
bonnie++実行結果
Version 1.96 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP proliant 4G 385 89 15659 5 13914 4 1956 88 259150 30 304.8 15 Latency 664ms 1526ms 926ms 86556us 146ms 3213ms Version 1.96 ------Sequential Create------ --------Random Create-------- proliant -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 8341 14 +++++ +++ 12678 17 12761 21 +++++ +++ 12167 16 Latency 16474us 622us 665us 42511us 32us 56us
Sequential Output(Block)が15MB/s、Sequential Input(Block)が259MB/sですな。書き込みが異様に遅いのは、パリティ計算とかでしょうがないのかな・・・。
ddも試してみる。こんな感じで5GBのファイルを作成する。
dd if=/dev/zero of=/data/zero.dat count=10000000 10000000+0 records in 10000000+0 records out 5120000000 bytes (5.1 GB) copied, 303.784 s, 16.9 MB/s
やっぱし遅い・・・
ddを動かしている間のtopはこんな感じ。ddがCPU使用率2割ぐらい。RAID5のプロセスが6%ぐらい。
top - xx:xx:xx up x:xx, x users, load average: 1.81, 0.64, 0.37 Tasks: 126 total, 2 running, 124 sleeping, 0 stopped, 0 zombie Cpu(s): 0.7%us, 13.5%sy, 0.0%ni, 27.5%id, 58.3%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1923184k total, 1848112k used, 75072k free, 18176k buffers Swap: 3866616k total, 0k used, 3866616k free, 1637704k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2274 root 20 0 102m 652 548 S 17.6 0.0 0:18.65 dd 825 root 20 0 0 0 0 R 6.6 0.0 1:11.06 md0_raid5 986 root 20 0 0 0 0 D 2.3 0.0 0:23.23 kjournald 2273 root 20 0 0 0 0 D 1.0 0.0 0:00.85 flush-9:0
うーん。CPUが非力すぎるということなのか、どういうことなのか。
GbE越しのファイル転送とかも試してみたいね。それはまた今度の宿題。
BD -> New iPad
BDの映画をFull-HD画質のままでNew iPadで見るための方法。備忘録なので簡潔に。
nVidiaのCUDAを使った変換を想定しているが、ちょっと書き換えればCPUエンコードでもいけるはず。
ビデオの「ソース:MEncoder」が多分字幕焼付けのキモ。
ツール(実際に動作を確認したもの)
- MakeMKV v1.7.4
- MediaCoder x64 0.8.12.5245
- MakeMKVでBDからMKVを作成。字幕も忘れずに読み込むように!
- MediaCoderにMKVを読ませ、以下の様な設定を実施。
骨折した
生まれて初めて骨折した.何かと役に立つかもしれないので,時系列に従った記録をここに残しておく.
2012/01/03
夜,酔った時に階段を踏み外して,右足首を思い切りひねった.
酔っていたにも関わらずとにかく痛かったので,「これはやってしまったか?」と思ったが,とりあえずは研究室で休むことにした.
2012/01/04
研究室のベッドで寝ていたが,朝5時頃に痛みで起きる.平時の1.5倍ぐらいに足が腫れている.内出血もあるようで,足首の関節のあたりが青黒くなっている.
なんとか物につかまっていれば立ち上がれるし,相当痛いが歩くこともどうにかなったので,トイレに行ったり水を飲んだりして時間を潰した.研究室にあったオフィスチェアーが,簡易車椅子として非常に優秀だった.
そのまま医者にかかるのも手だったが,とりあえずは家に帰ったほうがいいだろうと考えているところに,研究室の先輩が来た.事情を話すと家に帰るためにタクシーを捕まえるのを手伝ってくれるということなので,ありがたく甘えて,先輩の捕まえたタクシーに乗って家へ帰った.
タクシーの運転手は気さくな人で,事情を話したところ大笑いして湿布を分けて頂いた.
家に帰ったが,その日は車を運転できる人が家にいなかったので,足を持ち上げて湿布を貼った状態で放置した.
2012/01/05
11:45頃に近所の整形外科医院へ向かう.午前の受付は既に終了してしまっていたので,午後1番の予約をした.
14:00に診察開始.すぐに車椅子に載せられてレントゲン室へ.
上がってきたレントゲン写真を見ると,右足の細い方の骨が,足首の関節付近でパッキリと折れており,その上斜めに5mm程ズレてしまっていた.
右足関節外果骨折というらしい.
しかもズレが有るために,これを治す手術が必要と言われてしまう.
骨折部にプレートをボルトで固定する手術らしい.
年始だということで病院側の手術予定も立てこんでおり,次に手術可能な日は12日と言われてしまった.
手術に関する詳しい説明等は,次の日に受けることになった.
足には添え木を付けられたが,この添え木が興味深かった.
厚さ2cm程度のシート状のものに水を入れて,それを足に押し付けると,次第にシートが熱を帯びてきて硬くなり,添え木として使えるものである.グラスファイバーが入っているようだ.OPTIMA Splintという商品らしい.
アルミ製の松葉杖をレンタル(100円/日)した.
2012/01/05
詳しい治療方針等を聞きに,整形外科医院へ向かう.
以下の事が決まった.
- 手術は12日
- 麻酔は腰椎麻酔
- 前日の11日から入院
- 右足を剃毛してくること
- 手術後2-3日は感染症予防のために点滴を入れる
- 退院は経過が良ければ16日
- 遅くとも18日には退院
- ゴツイ金属プレートとボルトを足に入れる
- 術後はしばらくは足を持ち上げながら移動できる車椅子で移動
改めてレントゲンを見せられたが,昨日よりもひどく見えた.
to be continued....