Home / Diary / タグ: opera
新しいページ開くんじゃなくてポップアップする感じのやつを右クリックに仕込んですぐに引けるようにしたい。
iKnow!を利用する

実行するとこんな感じでウインドウの右上に小さく表示。選択テキスト内に日本語等が混じってもいいようにアルファベット以外を排除した上でiKnowに渡すようにした。
選択テキストの取得は以下のページから拝借した。
http://my.opera.com/kimama/blog/2666-1221-0386
iKnow!の辞書を利用すること自体は以下のページから。
http://my.opera.com/chooseopera-Japan/blog/2008/08/12/off
Item, "iKnow!で辞書を引く" = Go to Page, "javascript:(function(){var d=document,w=window,ds=d.selection,ws=w.selection,wg=w.getSelection;t=((ds?ds.createRange().text:ws?ws.createRange().text:wg?wg():d.getSelection?d.getSelection():'')+'');t=t.replace(/^\s+|\s+$/g,'').replace(/[^-a-z_., ]/gi,'');if(t!='')w.open('http://www.iknow.co.jp/items/matching/'+t,'iKown','width=250,height=400,left=10000')})()"
最初はこんな感じで右クリックに登録してたが、徐々に右クリック押すのが面倒になってきたのでツールバーに入れることにした。というわけでOperaだと下のリンクをツールバーにドラッグすればそのまま使えるはず。
Opera用ボタン : [iKnowで辞書を引く]
使い方も一緒で、辞書を引きたい単語を選択してボタンを押すだけ。多少日本語が混じっても問題無し。
スペースアルクを利用する
スペースアルクは辞書ページに余計な物が多いので、以下のUser JavaScriptも導入して表示をスッキリさせる。
alc.user.js

Item, "スペースアルクで辞書を引く" = Go to Page, "javascript:(function(){var d=document,w=window,ds=d.selection,ws=w.selection,wg=w.getSelection;t=((ds?ds.createRange().text:ws?ws.createRange().text:wg?wg():d.getSelection?d.getSelection():'')+'');t=t.replace(/^\s+|\s+$/g,'').replace(/[^-a-z_., ]/gi,'');if(t!='')w.open('http://eow.alc.co.jp/' + t + '/UTF-8/#popup','alc','width=250,height=400,left=10000')})()"
Opera用ボタン : [スペースアルクで辞書を引く]
Info
- 投稿日
- 2008年8月16日
- タグ
- opera
- このエントリの固定リンク
- http://bmky.net/diary/log/1812.html
- ブックマークに追加する
-
- コメント
2008
0816
Tagsopera
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
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
- ブックマークに追加する
-
- コメント
No More Scripts
大幅に修正。セカンドレベルドメインにも対応したので、ブロック指定が楽になった。
基本的に外部参照ファイルをブロックしているわけだが、NoScript同様、メニューを開くだけでそのサイトがどれだけ外部参照コンテンツ、というか広告の類を貼りまくっているかが一目瞭然なので・・・

こーいったサイトが多いからこそ、このようなスクリプトが必要になる。
Pragger
自作したPragger用プラグイン
elem_cacheは無かったことに。ラジオ新着関係を全部修正。ニコニコ動画検索も修正。クラブニンテンドーの未回答アンケートもファミコン探偵倶楽部を遊んだのでようやく対応。
そういや、Praggerをレンタルサーバー上で動かしているんだが、一部のプラグインの動作が、ssh上で実行した時とcron経由で実行した時とローカルで実行した時の動作が違ってしまって非常に困る。というかcron。明らかに入っているはずのプラグインがnot foundだったりわけわからん。
そもそも、ローカルのコマンドライン上で実行しているのがイレギュラーだから、サーバー上で動かしてみるべきなのか?
リンクの参照スタイル使用時にtitleを省略か空白にしていると正しく変換されなかったのを指摘して頂いたので修正。ありがとうございます。
Info
- 投稿日
- 2008年5月31日
- タグ
- javascript、opera、ruby、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1765.html
- ブックマークに追加する
-
- コメント
2008
0531
Tagsjavascriptoperarubyuserjs
File I/Oとは?
JavaScriptからローカルファイルにアクセスするためのインターフェース。そのFile I/Oが実装されたテストバージョンが遂にリリースされてプチ祭り状態。
んが、変態さん達が熱心なユーザーがこぞって試すとおもっていたのに、そーいった話が全然出てこなかったので、せっかくだからOperaUserJavaScriptManagerを移植できるかどうかを仕様書を斜め読みしながら試みた。
ローカルファイルへのアクセス
セキュリティがガチガチ・・・というか非常に安全に作られている。
まず、任意のディレクトリやファイルにパス決め打ちでアクセスすることができない。アクセスするには、必ずフォルダ選択ダイアログかファイル選択ダイアログを用いた場合のみアクセスできるようになる。
また、そのダイアログ表示も100個ぐらい並べられると立派なブラクラなので、mouseup、mousedown、click等のイベント内でしか動作しない。
つまり、ユーザーの意思の上でしかアクセスすることができないようになっている。
特殊な領域
それでは不便なので、applicationとstorageという領域が確保されている。
applicationはいわゆるWidgetの中身、config.xmlやらindex.htmlやらが置いてあるフォルダのこと。ここにはRead-onlyでアクセスできる。
storageはWidget専用の領域で、ここでは自由にファイルの読み書きが可能になっている。
両方に共通していることとして、ファイルやフォルダの検索を行えないことが挙げられる。つまり、storageに好きなだけファイルを放り込んでもいいけど、ファイル一覧は自分で管理しなければならない。
まあ、妙なスクリプトを実行させられてstorage内のファイルを荒らされないように・・・ということなのだろう。
User JavaScript Manager on Opera
んで、軽く移植して感じたところ、Win版との違いは以下のとおり。
- OperaからWidgetへは依然アクセスできないので、右クリックからインストールができない。
- storage内を検索できないので、インストールには、Widgetにインストーラーを実装させる必要がある。
- 毎回フォルダ選択ダイアログを出すわけには行かないのでstorageにUserJavaScriptを置くことになる。
- テキストエディタで開けない。
んー・・・微妙。唯一のメリットが「Operaと一緒に起動してくれる」というのがにんともかんとも。
ただ、作る側としてはWindowsより圧倒的にGUIを弄りやすいという点が嬉しい。
実際に作成したWidget
Opera announces specification for File I/O access in widgetsにあるインストーラーを使用したOperaでのみ使用可能。
userjsmanager.wgt

実際に動くとこなかじ。Widgetを起動したら、左下の「load scripts」から現在UserJavaScriptを入れているフォルダを選択する。
これでstorageに全てコピーされるので、後はブラウザの設定でUserJavaScriptのフォルダをstorageに変えるだけ。storageのフォルダは以下に存在する。
C:\Documents and Settings\[Windows ユーザー名]\Application Data\Opera\Opera 9.5\profile\widgets\[数字の羅列]\storage
Widgetからは、meta情報の表示、有効/無効の切り替え、アップデートのチェックのみが可能。機能が中途半端なのは、「これ、実際に使えるようになるのは数ヶ月先なんだよな・・・」という現実に気づいたから。
仕様も確定したわけじゃないので変更が入るだろうし、とりあえず触りだけ、ということで。
なお、上記リンクにもあるとおり、「実験的なバージョンだから何が起きても知らねーからな!」ということなので、そこらへんの覚悟ができている方のみインストールしていただきたい。
Info
- 投稿日
- 2008年5月20日
- タグ
- opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1763.html
- ブックマークに追加する
-
- コメント
・・・のCSSを使えたらいいなぁ。
という思いがあってAutoHotKeyにてproxomitron用のフィルタに出力するスクリプトを作っていたのが去年のこと(だったと思う)。
しかし、最近はNo More ScriptsのおかげでJavaScriptが常に有効になっているので、UserJavaScriptで出力してしまってもいいな。と考えるようになったので、Rubyに移植してみた。
設定ファイルにstylish.rdfのフルパスとOperaのUserJavaScriptを保存しているフォルダを指定すれば準備完了。exeを実行すればたちまち大量のスタイルを組み込んだUserJavaScriptが作成される。
その他詳細は同梱のマニュアル参照。
注意
他人が書いたCSSはあまり取り込んでいないので、妙なCSSを書いていると出力されないかも。
メモ
Ruby1.8xでは正規表現で戻り読みがサポートされていないが、1.9以降は標準で鬼車搭載により戻り読みがサポートされているようだ。
Info
- 投稿日
- 2008年5月13日
- タグ
- css、opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1761.html
- ブックマークに追加する
-
- コメント
2008
0513
Tagscssoperauserjs
- ダウンロード
- 本体:nomorescripts.js
- 設定ファイル:nomorescripts_domains.js
経緯
- OperaでNoScriptが実現された日。にてblockscriptsおよびblock externalの存在を知る。
- ソース見る
- なーるM
- NoScriptっぽいインターフェースに改造&調整
- それなりにまともな動作をしているようなので公開
解説
上記リンク内にも書いてある通り、UserJavaScriptを有効にしたままサイト側のscriptをブロックすることができる。
使い方もNoScriptとほぼ同じ。右下のアイコンにマウスを乗せると許可しているドメインとブロックしているドメインが表示されるので、クリックで切り替えることが可能。
なお、常に許可したいドメインは設定ファイルに書くことになる。
まだブロックが甘い箇所があるが、そこそこ動いているようなので公開することにした。もし不具合が出るようであれば、メニューの一番上の項目をクリックすることでスクリプトの動作自体を止めることができる。
ドメインについて
一応NoScript同様にホスト名(www等)を取り除いたものを扱うようにした。例えばニコニコ動画なら、nicovideo.jpを許可するだけで
- www.nicovideo.jp ← webページ
- res.nicovideo.jp ← スクリプト等
- tn-skr[num].nicovideo.jp ← サムネイル
と、一気に許可することができる。逆にwww.nicovideo.jpだけを許可したいという場合には対応できない。url-prefixも同様で、次回実装する予定。
Info
- 投稿日
- 2008年4月26日
- タグ
- opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1758.html
- ブックマークに追加する
-
- コメント
2008
0426
Tagsoperauserjs
バグフィックス
- コマンドラインオプションが正常に動いていなかったので修正
- 更新確認時に更新ステータスを一つずつ表示するようにした
ページ作ったので、ダウンロードはそっちから。
OperaUserJavascriptManager
Info
- 投稿日
- 2008年1月29日
- タグ
- opera、ruby、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1585.html
- ブックマークに追加する
-
- コメント
2008
0129
Tagsoperarubyuserjs
userjsmanager.zip
名称が変わりました
OperaUserScriptManagerからOperaUserJavascriptManagerに。ファイル名とかは一切変化無し。
理由:ぐぐったらUserJavascriptが正式っぽかったので。Operaのヘルプにも書いてあるし。
ユーザー JavaScript による制御
というか、UserScriptでぐぐってもGreaseMonkeyのコードばっかりヒットするのよね。
ふと思った
GreaseMonkeyはインストール時にconfig.xmlに色々設定を記録するが、実際に動作する時はgm_script内に保存したスクリプトをそのまま呼び出している。
なので、OperaUserScriptManagerの対象フォルダをgm_scriptに設定すれば、スクリプト情報の変更や無効化が効かなくてもアップデートは有効。
・・・これFirefoxでも使えね?
というわけで
last-modifiedを吐かない(動的にページを作ってるからだと思う)Userscripts.orgから最終更新日を取得できるようにした。
また、スクリプト本体にuserscript.orgのURLを発見したら、自動的にそれをスクリプトのページとして登録して更新前の手間を省くようにした。
さらに、Opera用とFirefox用に使い分ける為に、設定ファイルを指定できるようにした・・・んだけど、これってどうなのかね?
設定ファイルを一元化して、タブあたりでOperaかFirefoxに切り替えられるほうがいいのか。そうすれば、設定ファイル複製⇒コマンドプロンプト経由で起動という2ステップが省略されるんだよな。
だが、そこまでいくと、本来Operaに特化していたはずなのに、Firefoxもサポートしていくようになってgdgdになってしまう恐れがあるので、今はOpera特化ということで見送り。
スクリプトの文字コード
扱いやすいからUTF-8で読んでUTF-8で保存してるんだが、問題はあるのか? 基本的にスクリプト内に2バイト文字を挿入することがほとんどないはずなので大丈夫だとは思うが。
あと、open-uriでダウンロードしたスクリプトの全ての改行に\rが付くのは一体何故だ。とりあえず/\r$/mで対処。
コマンドプロンプトウインドウがウザイ
消すこともできるが、AVGが反応してしまうので仕方なく表示している。
どうも、かの山田オルタナティブがRuby+exerbで作られていたらしく、それで誤検知しているらしい。
参考:ITmedia エンタープライズ:「山田オルタネイティブ」の動作を知る (2/2)
そこで、WindowsAPIを使って、起動後にコマンドプロンプトウインドウだけ消せないかと思って試したら成功したので搭載した。起動後少し表示されるが、すぐに消えるようになった・・・はず。
せっかくだからOperaのユーザースクリプトを探せるとこ一覧
Info
- 投稿日
- 2008年1月25日
- タグ
- opera、ruby、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1584.html
- ブックマークに追加する
-
- コメント
2008
0125
Tagsoperarubyuserjs
OperaCacheExplorer(opcacheexplorer.zip)
起動したら一番左上のボタンでOperaのキャッシュディレクトリ(Opera/profile/cache4)を指定すると、ずら~~~~っとファイルが表示される。カラムでソート、URLで絞込み、適当にファイルを選択してデスクトップやらフォルダにD&Dでコピーも可能。
メインはサルベージ補助。Opera9.5以降はキャッシュファイルの拡張子が無くなるので、地味に使えるかもしれない。
他には、ニコニコ動画のダウンローダーに組み込んで、ダウンロードする前に、まずキャッシュを見て、見つかったらサルベージしてサーバーにアクセスしなくても済むようにするつもり。
キャッシュの操作にあたって、Ashula.Info / dcache4.urlを参考にした。バイナリ処理は経験が浅いので、今はとりあえず動く程度。9.5が出たらもちょっとまともにする。
Info
- 投稿日
- 2008年1月21日
- タグ
- opera、ruby
- このエントリの固定リンク
- http://bmky.net/diary/log/1581.html
- ブックマークに追加する
-
- コメント