Home / Diary / 2008年6月のログ
Operaのアキレス腱の一つ、スキンの調整。スキンを導入すること自体は簡単だが、幅や高さを修正しようとしたり、ツールバー用にアイコンを追加しようとなると非常に手間がかかる。
- Operaを終了する
- スキンを解凍する
- skin.iniを修正する
- スキン内部全てのファイルをzipで圧縮する
- Operaを起動する
- 修正した箇所を確認する(まだ修正するなら1に戻る)
Operaをいちいち再起動までしなければならないのはめどい。加えてzipの圧縮/解凍も。これをなんとかできないかと考えたのだが、Operaのスキン配布形式に解決のヒントがあった。
例えば、Opera Skinsのページから気に入ったものを選んでDOWNLOADボタンを押す。ダウンロードが完了するとOperaは一時的にスキンを適用し、これでいいかどうかを聞いてくる。
この時点でOperaは再起動することなく新しいスキンを適用してくれている。これだ! この操作をローカルのサーバー上で行えないだろうか。
ローカルならばテキストエディタでskin.iniを弄りつつ、プレビューしたくなったらスクリプト側でスキンファイル郡を圧縮し、適切なヘッダを付加してブラウザで出力。そうすれば再起動することなくスキンを弄れるのでは無いか?
んで、実際に作成してみたのが以下のスクリプト。
opskintester.zip
予想通り、修正即適用が可能になった。
- スクリプトを実行
- スキンのzipをskinフォルダに置く
- ブラウザでhttp://localhost:10080/にアクセス(この時点でzipを解凍してくれる)
- テキストエディタでskin/[スキン名]/skin.iniを弄る
- リンクをクリックしてスキンをプレビュー(まだ修正するなら4に戻る)
と、このように再起動することなくスキンの調整が行える。調整後はOpera/profile/skinに溜まったゴミを削除すれば良いだろう。
修正例
先日リリースされたOpera9.50 RC2に付属している新スキン。ちょっとタブが高いし、ツールバーのボタンの間隔が広いなー、と思ったら、Paddingを以下のように修正する。
; セミコロン以降はコメントなので、デフォルト値を残しておくと良い
[Pagebar Button Skin]
...
Padding Top = 3;7
Padding Bottom = 4;8
[Toolbar Button Skin]
...
Padding Left = 3;4
Padding Top = 0;4
Padding Right = 4;5
Padding Bottom = 0;5
[Toolbar Button Skin.pressed]
...
Padding Left = 3;5
Padding Top = 0;5
Padding Bottom = 0;4
見た目はこなかじ。

Info
- 投稿日
- 2008年6月19日
- タグ
- opera、ruby
- このエントリの固定リンク
- http://bmky.net/diary/log/1771.html
- ブックマークに追加する
-
- コメント
2008
0619
Tagsoperaruby
なんかスゴイのがきた。
FlexScan HDは第2章へ:PC、映画、ゲームに“もはや隙なし”の完成度――AV入力対応24.1インチワイド液晶ディスプレイ「FlexScan HD2452W」
ゲーマーにとって液晶の遅延は、次世代機で遊ぶことによる最大の障害のひとつと言っても過言では無い。というのも、液晶の構造上1フレームは確実に遅延してしまうからだ。
遅延だけでなく、スケーリング周りの機能で満足のいく液晶が存在しないという問題もある。
例えば、ドットバイドット表示が不可能な液晶。インターレースを繋ぐと比率がおかしくなったり、HDMI以外ではドットバイドットができない等々。9万円クラスの液晶ですらこーいったものがゴロゴロしているおかげで、「ゲーム用ならこれ!」という液晶が無かった。
それだけに、FlexScan HD2452Wは期待できるかもしれない。
スルーモードにより1フレームに抑えた遅延は他でも同じだが、豊富なスケーリング機能により、480p等の小さい画面でもドットバイドットのまま2倍表示ができる。さらにインターレースを入力してもしっかりi/p変換を行ってくれるので、WiiやPS2だけでなくメガドラ等の古いゲームもそのまま繋げられる。さらにスルーモードにも関わらず、ある程度の画質調整が可能。
ここまでいたせりつくせりだと、気になるのがスルーモード時の残像ぐらい。そこまで酷くないのなら買いと言わざるを得ない。
MDT242WGと比較
ゲーム用液晶として以前から候補に挙がっていたのが三菱のMDT242WG。結構人気がある。
こちらもスルーモードにすることで遅延を約1フレーム(17ms)に抑えられるらしいが、スルーモード時には2倍表示ができなかったりプログレオンリーだったりと、ちょっと不便。
だが、市場価格が9万ちょっとなので、XBOX360とPS3しか繋がないというのであればこれでいいかも。あらゆるゲーム機を繋ぎたいというのであればFlexScan HD2452Wか。
NANAO FlexScan HD2452W-BK ブラック
参考
Info
- 投稿日
- 2008年6月14日
- タグ
- game、hardware
- このエントリの固定リンク
- http://bmky.net/diary/log/1770.html
- ブックマークに追加する
-
- コメント
2008
0614
Tagsgamehardware
HORI - リアルアーケードPro. EX
XBOX360の純正パッドの出来の悪さは異常。改造してもマシになる程度でひどいまま。月下の夜想曲のコマンド技が面白いように出ないわ、TGMはゴゴゴるわで散々。
純正パッドが終わってる、HORIパッドが微妙、キャリバースティックも微妙(らしい)となると、選択肢はこれしか無いわけで、テトリスと斑鳩及び今後発売する大往生・ケツイを楽しむためには購入せざるを得ない。(ライデソは未購入。あんま思い入れないので。)
唯一の欠点が連射無しという点だが・・・まあ、大抵のSTGではゲーム側で設定できるだろうから要らないか。
本日の午前10時から予約開始とのことで、帰宅してから早速予約。7月10日が待ち遠しいわー。
そういや、大往生・ケツイにスティック同梱版が出るとか聞いたが、これでいらなくなってしまった。
追記
廃刊ダメゲーマーさん曰く、早速売り切れたとのこと。どうやら7時半頃までは予約できたらしい。あぶねー。ギリギリだ。
Info
- 投稿日
- 2008年6月10日
- タグ
- game
- このエントリの固定リンク
- http://bmky.net/diary/log/1769.html
- ブックマークに追加する
-
- コメント
2008
0610
Tagsgame
ブックマークコメントを各エントリに表示したかったが、世に出回っているもののほとんどがJavaScript製。リニューアル後の方針の一つとして、できるだけJavaScriptは導入しないと決めていたので使いたくない。
だが、ご丁寧に各サービスともAPIを用意しているので、いっちょRubyで取得するか、と思ったら既に作っている人がいた。
SBM - コメントを取得
これを自サイト用に改造しよう。
コメントがついているエントリを探す
今までのエントリを上記スクリプトにかけると途方も無い時間がかかってしまう。「ブックマークされたエントリ」だけを処理にかけるというのが理想的だが、それをどのようにして取得するか。
はてなブックマークの注目・人気・新着を次へ次へと漁るのもめんどいなーと思っていたら、Get URLsという、指定したURL配下のブックマークされたURL一覧を取得できる素晴らしいサービスが存在したので、ありがたく利用させてもらうことにした。
どのようにして表示するか
取得したコメントをただのHTMLで出力し、Wordpressのテンプレート側からincludeする。こうすれば負荷が少ない上にキャッシュされるのでサイトにやさしい。
if( file_exists( $post->ID . ".html" ) ) {
include( $post->ID . ".html" );
}
こんな感じで、出力されたコメントHTMLが存在する時だけ表示するようにした。
完成物
sbmcomments.rb
- なぜかjsonをインストールできなかったのでjson_pureを利用
- クロスポストを考慮して、全く同じコメントは取り除く
- livedoor クリップからは取得しない(メインで使ってる人が少ないと思われるので)
- 1URL毎に1秒待機
このサイト用に特化しているので、取得するURLと出力部分を弄れば他サイトでも使えるはず。
cronで回す
以前praggerもcronで動かそうと思っていたが、なぜか動かなかった。それは今回も同様で、rubygemsが無いというエラーが空しく返ってくる。
どうしたもんかと途方に暮れそうになった時に以下のページを発見。
なお、crontab で実行されるときには、ほとんどの環境変数が設定されていないので注意が必要。~/.cshrc・~/.login で設定している環境変数は設定されていないし、PATH も /bin:/usr/bin くらいにしか通っていない。そのため、command の部分に指定するのはシェルスクリプトにしておいて、シェルスクリプトの先頭で環境変数の設定を行い、その後いろいろなコマンドを実行するようにしておくのがよいだろう。
UNIXの部屋 コマンド検索:crontab (*BSD/Linux)
な、なんだってー!? rubygemsをインストールした時に.bashrcというファイルに環境変数が記述がされていたので、てっきりcron実行時に自動的に読んでいるものだと思ったら、全く読んでいなかったってことか!
というわけで、.bashrcの内容をコピペする。
#!/bin/sh
export PATH=$HOME/packages/bin:$PATH
export RUBYLIB=$HOME/packages/lib/ruby/site_ruby/1.8:$HOME/lib/ruby
export GEM_HOME=$HOME/packages/lib/ruby/gem
/usr/local/bin/ruby sbmcomments/sbmcomments.rb
cd ~/pragger
/usr/local/bin/ruby pragger.rb -c nicovideo.yaml
/usr/local/bin/ruby pragger.rb -c radio.yaml
exit
そして実行を待つこと数十分。エラーを出すこともなく無事にスクリプトが動いた! Praggerのプラグインも動くようになった!
あとは大体1日毎にコメントを取得するように設定して設置完了。頻繁にブックマークされるようなサイトじゃないので、これぐらいの周期で十分だろう。
Info
- 投稿日
- 2008年6月3日
- タグ
- ruby、site
- このエントリの固定リンク
- http://bmky.net/diary/log/1768.html
- ブックマークに追加する
-
- コメント
2008
0603
Tagsrubysite
JQuery(じゃなくてもいいけど)を使って以下のようにアクセス。
$.ajax(
{
type : "GET"
, url : "http://127.0.0.1:10080/"
, data: "foo=1&bar=2"
, async : false
, dataType : "html"
, success : function( data, status ) {
log( data, status );
}
}
);
すると、以下のようなエラーが返ってきた。
JavaScript - file://localhost/C:/widget/hogehoge/index.html
Event thread: DOMContentLoaded
Error:
name: Error
message: Security violation
これを見て、Opera的にはlocalhostも立派なローカルストレージの一部であり、プライベートな領域だからアクセスできないようにしていると思った。
という旨をTwitterで愚痴ったところ、edvakfさんからOpera Widgets security model - Opera Developer Communityのページを紹介して頂いた(というかページの存在に今まで気づかなかったのもどうかと思うが)。このページの中に以下のような記述が。
The following IPv4 IP ranges are defined as intranets:
- 10.0.0.0 to 10.255.255.255
- 172.16.0.0 to 172.31.255.255
- 192.168.0.0 to 192.168.255.255
- 169.254.0.0 to 169.254.255.255
Opera Widgetが接続を許可しているイントラのIPアドレスの範囲だが、自分のPC=localhostは127.0.0.1なので許可されていない。
やはりセキュリティ的にアクセスさせない方向だったか・・・いや、むしろサーバーのほうを変えてみるというのはどうだ?
WebrickのServerを以下のように設定して起動させてみる。
server = WEBrick::HTTPServer.new( {
:Port => 10080,
:BindAddress => '192.168.0.***'
} )
BindAddressにはプライベートアドレスを。でもってWidget側でアクセスしてみたところ、見事に反応が返ってきた。
ただ、これってセキュリティ的にどうなのよ? と思ったら、しっかり書いてあった。
A special limitation is that widgets may only contact either internet addresses or intranet addresses, not both kinds.
つまり、Widgetはインターネットかイントラネットのどちらかにしか接続できませんよ、と。実際に試したところ、http://www.yahoo.co.jp/にリクエストを出したWidgetでは、リロードしようが何しようがローカルには一切接続できなくなった。逆もしかりで、削除するまで有効な設定として残るようだ。
これなら、例えプライベートアドレス+ポートを総当りで恥ずかしいデータを抜かれても外に持ち出せない、ということなのだな。
いちいちサーバーにスクリプトをアップロードせずともローカルだけでテストできるようにしたかったので、テスト用途ならこの仕様で満足だわ。
Info
- 投稿日
- 2008年6月2日
- タグ
- opera
- このエントリの固定リンク
- http://bmky.net/diary/log/1767.html
- ブックマークに追加する
-
- コメント
PV4を購入したので真っ先にこれを撮ろうとしたんだが、予想以上にてこずった。
X3~X5はかなり完璧にパターン化できたので滅多にミスしない。X6についてはクリアは安定するがタイムが不安定。問題はX1のケイルとX2のソーマ。
ケイルは動きが高速且つ不規則且な上にレーザーを当てると起動が変わるので戦い辛い。調子がいい時と悪い時では最悪20秒もの差ができてしまった。
さらにソーマ。ケイルとは逆でパターン化できていれば全く問題は無いが、そのパターンというのが非常にキツイ。
タイムを縮めるために一度でもコアを逃さないようにするということは、コア露出時に全てのビット及びコアを潰さなければいけないわけで、それすなわち0.3秒でも操作が遅れたら即終了という世界に。
これのおかげでケイルが調子良くてもソーマでポインティングを少しミスって終わりになったり、ケイルがさっぱりでX2以降に進めなかったりと、結局6時間近くに渡る戦いとなった。
で、よーやく上の動画が撮れたんだが・・・ケイルが遅い。あと10秒縮む。そしてカルディアも運次第では10秒縮みそうだということで、動画アップロード後もチマチマ挑戦していたんだが、一向に記録が出ない。X1~X5まで全てうまくいってもX6のきまぐれで稼いだ分が全てパーになったりとか。
さすがにランダムに振り回されるのが嫌になってきたので、一旦本編のタイムアタックに移って、しばらくしたら戻ろうか。・・・や、本編も運で±2分くらいはするから、運ゲーとしてはこっちの比じゃないんだがなぁ。
プレイ内容について注釈
- ケイルの裂傷はタイムロスでは?
- ケイルが消滅してから次の2体が出てくるまでの間に処置できればロスにならない。
- ソーマでビットを潰す順番
- コアを先に潰すほどタイムは縮むがバイタルダメージが特大なので、ビットを幾つか潰してからコアを潰す。超執刀使用時はノーダメージなので真っ先にコアを潰してタイム短縮。
- オープスで被弾
- 分裂時にレーザーをMAX近くにしておく必要があるので、被弾していなくても数秒時間が空くから問題なし。
- オニュクス開幕
- 中央→左下→右上と探して最後に見つかるという最悪のパターンだが、5秒以内に切り出せば1秒延長してくれるので、その間に注射。その後はずっと俺のターン。
- なお、初期出現位置は幾つかの中からランダム。
- ブラキオン
- 完全パターン化。以上。
- カルディア
- 膜剥がし2段階目で下に向かってくるという最悪の行動を取ってきたためタイムロス。
- 膜剥がし3段階目の最後。バイタルが低かったのでスルーしたが、剥がしてしまうべきだった。改めて動画を見たが、僅かなマイナスで済んでいたはず。
Info
- 投稿日
- 2008年6月1日
- タグ
- game
- このエントリの固定リンク
- http://bmky.net/diary/log/1766.html
- ブックマークに追加する
-
- コメント
2008
0601
Tagsgame