Home / Diary / タグ: opera
No More Scripts
大幅に修正。セカンドレベルドメインにも対応したので、ブロック指定が楽になった。
基本的に外部参照ファイルをブロックしているわけだが、NoScript同様、メニューを開くだけでそのサイトがどれだけ外部参照コンテンツ、というか広告の類を貼りまくっているかが一目瞭然なので・・・

こーいったサイトが多いからこそ、このようなスクリプトが必要になる。
Pragger
自作したPragger用プラグイン
elem_cacheは無かったことに。ラジオ新着関係を全部修正。ニコニコ動画検索も修正。クラブニンテンドーの未回答アンケートもファミコン探偵倶楽部を遊んだのでようやく対応。
そういや、Praggerをレンタルサーバー上で動かしているんだが、一部のプラグインの動作が、ssh上で実行した時とcron経由で実行した時とローカルで実行した時の動作が違ってしまって非常に困る。というかcron。明らかに入っているはずのプラグインがnot foundだったりわけわからん。
そもそも、ローカルのコマンドライン上で実行しているのがイレギュラーだから、サーバー上で動かしてみるべきなのか?
リンクの参照スタイル使用時にtitleを省略か空白にしていると正しく変換されなかったのを指摘して頂いたので修正。ありがとうございます。
Info
- 投稿日
- 2008年5月31日
- タグ
- javascript、opera、ruby、userjs
- このエントリの固定リンク
- http://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://diary/log/1763.html
- ブックマークに追加する
-
- コメント
2008
0520
Tagsoperauserjs
・・・の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://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://diary/log/1758.html
- ブックマークに追加する
-
- コメント
2008
0426
Tagsoperauserjs
バグフィックス
- コマンドラインオプションが正常に動いていなかったので修正
- 更新確認時に更新ステータスを一つずつ表示するようにした
ページ作ったので、ダウンロードはそっちから。
OperaUserJavascriptManager
Info
- 投稿日
- 2008年1月29日
- タグ
- opera、ruby、userjs
- このエントリの固定リンク
- http://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://diary/log/1584.html
- ブックマークに追加する
-
- コメント
2008
0125
Tagsoperarubyuserjs