Home / Diary / タグ: opera

12345...6

目次

  1. Operaに英単語辞書が欲しい
  2. Operaのスキン調整を簡略化する試み
  3. OperaのWidgetからlocalhostにアクセスできない件
  4. スクリプト色々更新
  5. OperaのFile I/Oを試す
  6. OperaでもStylish
  7. OperaでNoScriptっぽいことを実現する「No More Scripts」
  8. OperaUserJavascriptManager v0.31
  9. OperaUserJavascriptManager v0.30
  10. Operaのキャッシュを見る試み

Operaに英単語辞書が欲しい

新しいページ開くんじゃなくてポップアップする感じのやつを右クリックに仕込んですぐに引けるようにしたい。

iKnow!を利用する

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

iスペースアルク辞書をポップアップ

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

SBM Comments

toton
 iKnowで辞書を引く

2008
0816

Tagsopera

Operaのスキン調整を簡略化する試み

Operaのアキレス腱の一つ、スキンの調整。スキンを導入すること自体は簡単だが、幅や高さを修正しようとしたり、ツールバー用にアイコンを追加しようとなると非常に手間がかかる。

  1. Operaを終了する
  2. スキンを解凍する
  3. skin.iniを修正する
  4. スキン内部全てのファイルをzipで圧縮する
  5. Operaを起動する
  6. 修正した箇所を確認する(まだ修正するなら1に戻る)

Operaをいちいち再起動までしなければならないのはめどい。加えてzipの圧縮/解凍も。これをなんとかできないかと考えたのだが、Operaのスキン配布形式に解決のヒントがあった。

例えば、Opera Skinsのページから気に入ったものを選んでDOWNLOADボタンを押す。ダウンロードが完了するとOperaは一時的にスキンを適用し、これでいいかどうかを聞いてくる。

この時点でOperaは再起動することなく新しいスキンを適用してくれている。これだ! この操作をローカルのサーバー上で行えないだろうか。

ローカルならばテキストエディタでskin.iniを弄りつつ、プレビューしたくなったらスクリプト側でスキンファイル郡を圧縮し、適切なヘッダを付加してブラウザで出力。そうすれば再起動することなくスキンを弄れるのでは無いか?

んで、実際に作成してみたのが以下のスクリプト。

opskintester.zip

予想通り、修正即適用が可能になった。

  1. スクリプトを実行
  2. スキンのzipをskinフォルダに置く
  3. ブラウザでhttp://localhost:10080/にアクセス(この時点でzipを解凍してくれる)
  4. テキストエディタでskin/[スキン名]/skin.iniを弄る
  5. リンクをクリックしてスキンをプレビュー(まだ修正するなら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

見た目はこなかじ。

Operaのスキンを調整した比較画像

Info

SBM Comments

u1_113
Wiki とかでは良くある感じの目次を生成するプラグイン。サイトによっては使いどころはありそう。

2008
0619

Tagsoperaruby

OperaのWidgetからlocalhostにアクセスできない件

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

SBM Comments

edvakf
szskさん渾身のニコニコ動画専用Opera@USB。ダ

2008
0602

Tagsopera

スクリプト色々更新

No More Scripts

大幅に修正。セカンドレベルドメインにも対応したので、ブロック指定が楽になった。

基本的に外部参照ファイルをブロックしているわけだが、NoScript同様、メニューを開くだけでそのサイトがどれだけ外部参照コンテンツ、というか広告の類を貼りまくっているかが一目瞭然なので・・・

おびただしい がいぶドメインのかずかず

こーいったサイトが多いからこそ、このようなスクリプトが必要になる。

Pragger

自作したPragger用プラグイン

elem_cacheは無かったことに。ラジオ新着関係を全部修正。ニコニコ動画検索も修正。クラブニンテンドーの未回答アンケートもファミコン探偵倶楽部を遊んだのでようやく対応。

そういや、Praggerをレンタルサーバー上で動かしているんだが、一部のプラグインの動作が、ssh上で実行した時とcron経由で実行した時とローカルで実行した時の動作が違ってしまって非常に困る。というかcron。明らかに入っているはずのプラグインがnot foundだったりわけわからん。

そもそも、ローカルのコマンドライン上で実行しているのがイレギュラーだから、サーバー上で動かしてみるべきなのか?

js-markdown-extra

リンクの参照スタイル使用時にtitleを省略か空白にしていると正しく変換されなかったのを指摘して頂いたので修正。ありがとうございます。

Info

2008
0531

Tagsjavascriptoperarubyuserjs

OperaのFile I/Oを試す

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と一緒に起動してくれる」というのがにんともかんとも。

ただ、作る側としては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

SBM Comments

edvakf
別profileのOperaを特定WebApp専用クライアントに、決定版。最後の高速化など、細部まで詰められてる。AutoHotKeyはMacに無いのが残念。独自プロトコル感動した。はてなスター2008個。これをOpera@USBにして配布できないかな?
asiamoth2008
0520

Tagsoperauserjs

OperaでもStylish

・・・のCSSを使えたらいいなぁ。

という思いがあってAutoHotKeyにてproxomitron用のフィルタに出力するスクリプトを作っていたのが去年のこと(だったと思う)。

しかし、最近はNo More ScriptsのおかげでJavaScriptが常に有効になっているので、UserJavaScriptで出力してしまってもいいな。と考えるようになったので、Rubyに移植してみた。

設定ファイルにstylish.rdfのフルパスとOperaのUserJavaScriptを保存しているフォルダを指定すれば準備完了。exeを実行すればたちまち大量のスタイルを組み込んだUserJavaScriptが作成される。

その他詳細は同梱のマニュアル参照。

注意

他人が書いたCSSはあまり取り込んでいないので、妙なCSSを書いていると出力されないかも。

メモ

Ruby1.8xでは正規表現で戻り読みがサポートされていないが、1.9以降は標準で鬼車搭載により戻り読みがサポートされているようだ。

Info

2008
0513

Tagscssoperauserjs

OperaでNoScriptっぽいことを実現する「No More Scripts」

ダウンロード
本体:nomorescripts.js
設定ファイル:nomorescripts_domains.js

経緯

  1. OperaでNoScriptが実現された日。にてblockscriptsおよびblock externalの存在を知る。
  2. ソース見る
  3. なーるM
  4. NoScriptっぽいインターフェースに改造&調整
  5. それなりにまともな動作をしているようなので公開

解説

上記リンク内にも書いてある通り、UserJavaScriptを有効にしたままサイト側のscriptをブロックすることができる

使い方もNoScriptとほぼ同じ。右下のアイコンにマウスを乗せると許可しているドメインとブロックしているドメインが表示されるので、クリックで切り替えることが可能。

なお、常に許可したいドメインは設定ファイルに書くことになる。

まだブロックが甘い箇所があるが、そこそこ動いているようなので公開することにした。もし不具合が出るようであれば、メニューの一番上の項目をクリックすることでスクリプトの動作自体を止めることができる。

ドメインについて

一応NoScript同様にホスト名(www等)を取り除いたものを扱うようにした。例えばニコニコ動画なら、nicovideo.jpを許可するだけで

と、一気に許可することができる。逆にwww.nicovideo.jpだけを許可したいという場合には対応できない。url-prefixも同様で、次回実装する予定。

Info

SBM Comments

toton
 iKnowで辞書を引く

2008
0426

Tagsoperauserjs

OperaUserJavascriptManager v0.31

バグフィックス

ページ作ったので、ダウンロードはそっちから。

OperaUserJavascriptManager

Info

2008
0129

Tagsoperarubyuserjs

OperaUserJavascriptManager v0.30

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
0125

Tagsoperarubyuserjs

Operaのキャッシュを見る試み

OperaCacheExplorer(opcacheexplorer.zip)

起動したら一番左上のボタンでOperaのキャッシュディレクトリ(Opera/profile/cache4)を指定すると、ずら~~~~っとファイルが表示される。カラムでソート、URLで絞込み、適当にファイルを選択してデスクトップやらフォルダにD&Dでコピーも可能。

メインはサルベージ補助。Opera9.5以降はキャッシュファイルの拡張子が無くなるので、地味に使えるかもしれない。

他には、ニコニコ動画のダウンローダーに組み込んで、ダウンロードする前に、まずキャッシュを見て、見つかったらサルベージしてサーバーにアクセスしなくても済むようにするつもり。

キャッシュの操作にあたって、Ashula.Info / dcache4.urlを参考にした。バイナリ処理は経験が浅いので、今はとりあえず動く程度。9.5が出たらもちょっとまともにする。

Info

SBM Comments

asiamoth
お、del.icio.usってURLが変

2008
0121

Tagsoperaruby

暴満館

最新のエントリ
注目のエントリ(はてな)
ゲーム攻略

暴満館 ~The House of Full Violence~
Powered by WordPress.
About | Contact | 新着のエントリ情報 RSS

ページ内の見出し一覧
Operaに英単語辞書が欲しい
Operaのスキン調整を簡略化する試み
OperaのWidgetからlocalhostにアクセスできない件
スクリプト色々更新
OperaのFile I/Oを試す
OperaでもStylish
OperaでNoScriptっぽいことを実現する「No More Scripts」
OperaUserJavascriptManager v0.31
OperaUserJavascriptManager v0.30
Operaのキャッシュを見る試み