日曜研究室 〜技術的な日常〜

技術的な観点から日常を綴ります

Archive for the '技術' Category


   7 月 24

jQueryを使って、イメージのディゾルブチェンジをする

久々にWordPressをアップグレードして、プラグインやらテーマやらも更新しました。スッキリ。 でも派手なテーマを使ってもなんか味気ない色気ない。ポスト自体がほとんど装飾がないものばかりですからねぇ。その辺もやり過ぎない程度に気をつけて行きたいところです。 さて本題ですが、最近巡回してるあるブログでjQueryを使って、イメージのディゾルブチェンジをしたい(未達成)という記事を読みまして、未達成ならじゃあ僕がやったろうやないかーということで作ってみました。 しかし正直言って、さらっと読んだだけでは元記事に書いてある問題点がいまいち理解できなかったので、問題点の解決策の提示というよりは、自分なりの作り方の提示ってことになります。 ディソルブの処理の概要としては、frontとbackの2つのimgがあって、backに次の画像をセットしてfadeInし同時にfrontをfadeOutし、そしてfrontとbackの参照を切り替えるってな感じです。 ゲームとかでよく使うダブルバッファリング処理を想像してもらうと分かりやすいかと。 そのディゾルブ処理部分のソースは具体的にこうなってます。 $(class_flick).load(function(){ layout(back); back.fadeTo(‘slow’, 1); front.fadeTo(‘slow’, 0); var tmp = back; back = front; front = tmp; }); 概要の説明のままですね。 layoutっていう関数は画像の表示位置の調節を行うだけですのでここではさほど重要ではありません。 一番重要なのは1行目で、$(class_flick)はfrontとback両方のimgを指すのですが、そのloadイベントによってsrcを変更して画像を読み込み終わったタイミングが分かるので、その中でディゾルブ処理を行うようにしています。 あとはボタンをクリックしたタイミングなどで、backのsrcを変更してやるだけで次の画像を読み込みながらのディゾルブ処理ができると、そういうことになります。 今回作ったサンプルは、ディゾルブ処理を行うイメージギャラリーの”てい”でjQueryのプラグイン風に書いてますので、簡単にプラグイン化できると思います。 あとはちゃんとやるんだったら、画像の先読み機能を付けたり、ボタンを連打すると挙動がおかしかたりするのでその辺の制御するようにすると良いんではないかなんて思います。 また、今回作ったサンプルには例によって?flickrの画像を適当に使ってますので、何か問題あればコメント欄とかで教えて頂ければ幸いです。 しっかし、jQueryとhtmlを1年ぶりぐらいに触った気がする。えらい苦労するかと思ったけどそうでもなかったり。

Read the rest of this entry »

   6 月 09

XenServer コマンドについて

XenServerで幾つかサーバーを運用してます。 実験的なサービスなどは非安定版のソフトウェアを使うことが多く、VMがフリーズしてしまうこともたまにあります。 (サポートされたOSで安定してるソフトウェアを使う分にはVMがフリーズした事はなく、コントロールドメイン自体もフリーズ等の問題が起きたことはないので、XenServer自体の安定性には問題はないと思います。) 例えVMがフリーズしてしまったとしても、XenServer(コントロールドメイン)自体は問題なく動いてるので、ssh接続してxsconsoleから該当のVMを強制再起動させるだけで復旧出来るので大きな問題ではないですが、外出中でノートPCもない場合(基本僕はノートPCは持ち歩きません)ssh接続自体が出来なくてオワタ\(^o^)/となります。 そこでいつも持ち歩いてるiPhoneにTouchTerm(450円:Proじゃない方)を入れて使ってみたのですが、xsconsoleが表示できなくてここでもオワタ\(^o^)/となってしまいました。 (xsconsoleはターミナルの縦横文字数が少ないとエラーを出して起動しないので、それを満たすようにTouchTermの文字サイズを小さくすることでxsconsoleはエラーを出さず起動するようになったようなのですが、全く内容が表示されないという問題が起きてしまい操作できませんでした。) TouchTerm自体は、3G回線でも接続でき、ポートもデフォルトの22から変更することができ、鍵の生成・利用もできるので、ssh接続してコマンドを打つという用途だと過不足なく実行可能ですばらしいアプリだと思います。 で、xsconsoleを使わずにVMの強制再起動をするために、XenServerのコマンドを色々調べたのでちょっとまとめておきます。 VMのリストを表示 xe vm-list すべてのVM(起動中か否かに関係なく)の情報を表示します。情報の内容はVMのuuid、name-label、power-state(起動中かどうかの状態)。 稼働中の(コントロールドメイン以外の)VMのすべてのパラメータを表示 xe vm-list power-state=running is-control-domain=false params=all オプションの意味はそのまんまです。実行結果を見れば分かりますがすべてのパラメータってのがかなり多め(60個以上)。 これで表示されるパラメータをpower-state=runningみたいにVMの絞り込みのオプションに使えます。 稼働中の(コントロールドメイン以外の)VMのname-labelとuuidを表示 xe vm-list power-state=running is-control-domain=false params=name-label,uuid paramsにallではなく、パラメータ名をカンマ区切りで指定すると、指定したパラメータの分だけ表示されます。 特定のVMについてパラメータをすべて表示 xe vm-param-list uuid=12345678-9abc-def0-1234-56789abcdef0 実はvm-listだと値を取得するのに計算リソースを食うという理由でCPU使用率等表示されないパラメータがいくつかありますが、vm-param-listでは表示されます。 その代わりuuidの指定が必要で一度に表示出来るのは一つのVMについてのみです。 特定のVMについてCPU使用率を表示 xe vm-param-get uuid=12345678-9abc-def0-1234-56789abcdef0 param-name=VCPUs-utilisation これでCPU使用率が取得出来ます。小数点以下桁数3の数値で表示され0.000がCPU利用率0%、1.000がCPU利用率100%に相当するようです。 さらに仮想CPUコアが複数ある場合もあるため、例えば2コアの場合は、”0: 0.251; 1:0.036″のように表示されます。 1コアの場合も同じく、”0: 0.843″のように表示されます。 特定のVMについて0番目のコアのCPU使用率を表示 xe vm-param-get uuid=12345678-9abc-def0-1234-56789abcdef0 param-name=VCPUs-utilisation param-key=0 CPU使用率以外にも<key>: <value>; <key>: <value>…という形式の値になってるパラメータがありますが、param-keyに<key>を指定すれば<value>だけを抽出することができます。 特定のVMについてOS名を表示 [...]

Read the rest of this entry »

   5 月 28

xlrd, xlwtでExcelファイルをテンプレートとして使うもうひとつの方法(のヒント)

先日書いた、xlrd, xlwtでExcelファイルをテンプレートとして使う というエントリですが、そのときに 正直言うとxlrdのスタイル情報から属性を全部読み取ってxlwt.Styleクラスのインスタンスを生成してwriteメソッドに渡すコードを書けばいいだけ と書いたもう一つの方法についてヒントを書いておきます。 先日のエントリの段階では、そのもう一つの方法はコピーする属性の数が多くて面倒という理由で選択しませんでしたが、xlutils.copyでスタイルもコピー出来ると言うことはその内部の処理で上記に挙げた処理を行うコードがあるはず、ということで調べてみました。 xlutilsのソースを全体的に流し読みしてみましたが、あまり直感的ではないアルゴリズムを多様してる印象です。 xlrdやxlwtのソースを見た時も同じ印象で、その時はBIFF形式のアレっぷりが影響してるのかと思ってましたが、もしかしたら書いた人のクセかもしれません。 (クラスに__call__メソッドを定義するのはメリットよりもデメリットのほうが大きいと思うんですよね〜) 前置きはこの辺にして、スタイルをコピーしてるまさにその処理は、filter.pyの276行目以降約60行に渡って(xlutils 1.4.1)書かれています。 ひたすら属性を一つずつコピーしてる感じで、これを1から書けといわれればかなり面倒ですが、ほぼそのままコピペで使えるようなのでコピペして自作の関数やメソッドにして使うのもアリかなと思います。 xlrd.Bookとxlwt.Workbookのインスタンスをメンバに持つクラスを作って、そのメソッドとしてスタイルをコピーするコードを書いて、”Excelファイルをテンプレートとして使えるクラス”にするのが先日書いた方法よりもオーソドックスかなぁと思います。

Read the rest of this entry »