[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/14 00:44 / Filesize : 373 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Proxomitron フィルター作成スレッド Part5



1 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/07/10(月) 06:09:39 ID:8aujFXYU0]
このスレは作成依頼されたフィルタを
有志により作るスレッドPart4です
煽り、荒しは放置してください

【関連サイト】
Proxomitron-J
ttp://www.pluto.dti.ne.jp/~tengu/proxomitron/
日本語訳ヘルプ
ttp://www.pluto.dti.ne.jp/~tengu/proxomitron/help/Contents.html
本体(N4.5May)とその日本語化パッチ、OpenSSLライブラリのダウンロード
ttp://www.pluto.dti.ne.jp/~tengu/proxomitron/download.html
アップローダー
ttp://wind.prohosting.com/proxmine/cgi-bin/uploader/
4.5June+shift_jis誤爆回避日本語化+RWIN32768回避+バイパス赤icon+有難屋icon な本体
wind.prohosting.com/proxmine/cgi-bin/uploader/download.cgi?PmU_0338.zip
IE用必須設定(高速化)・過去ログ・FAQ・ime.nu消し・関連リンク
ttp://www2.wbs.ne.jp/~go-to/prx/faq.html

【関連スレ】
Proxomitron Part25
ttp://pc8.2ch.net/test/read.cgi/win/1115110149/
■■■■Proxomitron入門スレッド■■■■5
ttp://pc8.2ch.net/test/read.cgi/pcqa/1107577736/
ブラクラにProxomitronで対抗するスレPart5
ttp://pc8.2ch.net/test/read.cgi/software/1060792740/

【過去スレ】
Proxomitron フィルタ作成スレッド
ttp://pc5.2ch.net/test/read.cgi/software/1083337210/
Proxomitron フィルター作成スレッド Part2
ttp://pc8.2ch.net/test/read.cgi/software/1100052614/


762 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/08(日) 02:29:33 ID:FO4N1OzA0]
>>761
自作自演じゃないならせめて100レスくらいは遡って見てくれ

763 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/08(日) 02:59:09 ID:pkkxx40D0]
>>99-760 同一人物
>>761-690

764 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/08(日) 03:01:46 ID:j5LqO3xi0]
あぼーん推奨 : ID:pkkxx40D0

765 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/08(日) 05:59:15 ID:pkkxx40D0]
('A`)

766 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/08(日) 15:46:35 ID:OhcwpJYk0]
うpロードされているものも含め、
ありとあらゆるフィルターを入れていますが、
ヤフーの
ttp://dailynews.yahoo.co.jp/fc/local/ibaraki_taxi_driver_case/?1160281661
などのページの最初に、バナー広告がいつの間にか出るようになってしましました。
キャッシュを消しても、再度出てきます。
これを消すフィルターを作っていただけないですか?


767 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/08(日) 17:57:03 ID:Qo+RAkFE0]
>>766
出てこない。
ありとあらゆるフィルタ入れてるなら、
ブロックリストに画像のアドレスなりを追加しとけ。

768 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/08(日) 18:09:17 ID:8tJusw/d0 BE:51702645-BRZ(1008)]
>>766
知らぬ間にスパイウェアでも入れちゃったんじゃないか?

769 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/08(日) 20:11:56 ID:7ltj5WIl0]
>>766
アップローダにうpされているのがどんなものか知らないけれど、
自分はこれで消している。

[Patterns]
Name = "[User] Portal @ Yahoo!"
Active = TRUE
URL = "*.yahoo.co.jp"
Limit = 3010
Match = "((<div align=center>*</div>"
"|<!--- AdSpace (TN(P|)|LSQ|UHD|N|CT|EU) --->*<!--- /AdSpace (TN(P|)|LSQ|UHD|N|CT|EU) --->"
"|<!--P-->*<!--/P-->)"
"$SET(1=<!-- Portal @ Yahoo! - Blocked by Proxomitron -->)"
"|<!--- /HEADER --(-|)>*<!--- (New|)CAT_LINK_TABLE --(-|)>"
"$SET(1=<!--- /HEADER -->\n\n<!--- CAT_LINK_TABLE -->))"
Replace = "\1"

770 名前:759 mailto:sage [2006/10/08(日) 20:17:24 ID:+xK4WvQa0]
www.so-net.ne.jp/tv/bangumi/tvprgm/1_29_6.htmlの右上の広告と
左上のこれは広告ではありませんがお知らせ類を消すフィルターお願いします。
分かりやすく書くと
> テレビ王国 > 10月8日(日)の番組表 [地上波/奈良/22- 5時]
から上をすべて消すフィルターお願いします。



771 名前:766 mailto:sage [2006/10/08(日) 20:56:53 ID:OhcwpJYk0]
>>769
ありがとうございます。
無事消すことができました。
感謝しつついただきました。

772 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/08(日) 21:08:01 ID:Xil5Fe4d0]
<title>hogehoge</title>の部分なんですが、たいていのポータルサイト・検索サイトは冗長ですよね。
例えばGoogleならGoogle検索:hogehogeだし、楽天は【楽天市場】hogehogeだし。
タブブラウザを使っていたり、こういうウェブページをブックマークするときに冗長な部分を抜きたいので
例えばg:hogehogeとか楽:hogehogeという具合にtitleを書き換えたいんですが、
とりあえずgoogleで試すと働きません。
ソースファイルに対してテストするとうまく行くのに、フィルターをONにしてウェブページをリロすると
まったく働かなかったり、テスト時とは違う働きをしたりします。
色々なウェブページで試してみると、どうも正常に働くサイトとそうでないサイトがあるようですが原因が分かりません。
アドバイスありましたらお願いします。

773 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/08(日) 23:27:04 ID:EzclonyV0]
[Patterns]
Name = "Google Title Simplizer"
Active = TRUE
URL = "www.google.co.jp/search?"
Limit = 1024
Match = "<title>\1 - Google [%E6][%A4][%9C][%E7][%B4][%A2]</title>"
Replace = "<title>{G} \1</title>"

こんな適当なのでも問題なく動くんだけど。

774 名前:think ◆MM0nnAOCiQ mailto:sage [2006/10/09(月) 08:21:05 ID:SIJ7Natg0]
>>772
この話、これが始めてではないので、ログを参照されることをお勧めします。
>>32-33,38-39
あと、このスレを「文字コード」で検索すると良いかと。

> どうも正常に働くサイトとそうでないサイトがあるようですが原因が分かりません。
症状を伺う限りでは、文字コードが合っていないのが原因ではないかと思います。

例えば、>773氏のフィルタは
ttp://www.google.co.jp/search?oe=utf-8&lr=lang_ja&q=Proxomitron
では有効ですが、
ttp://www.google.co.jp/search?oe=shift_jis&lr=lang_ja&num=30&q=Proxomitron
では無効となります。

> テスト時とは違う働きをしたりします。
テスト時にはマルチバイト文字は Shift_JIS としてテストされますから、EUC-JP,UTF-8などの文字コードのページではテスト時とは違った反応を示します。
その場合は、Webページ上でテストすることで対応してください。

775 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/09(月) 10:11:48 ID:JcIL1z+A0]
お騒がせしてしまいましたが、原因はgoogle highlightがtitleを書き換えているためでした。
>773からgoogleのデフォルトtitleが"hogehoge - Google検索"だっていうことに気がついたのですぐに修正しました。
文字コードについては教えていただいたStrHexで対処しようと思います。
どうもありがとうございました。

776 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/09(月) 20:39:07 ID:7SsxD+m80]
掲示板などではりつけてある画像サイズが500×500をオーバー
していたら、500×500のサイズで固定する、といったような
画像サイズをコントロールするフィルタを作成いただけないでしょうか?
きっと役に立つと思うのです

777 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/09(月) 21:06:50 ID:iC2qFQxB0]
>>776
誤爆しないように自分に合わせて書き換えてね。

Name = "[User] Comune @ Image is Resized"
Active = TRUE
URL = "利用している掲示板のURLを見て決める"
Limit = ソースの該当部分をテストして決める
Match = "<img\s([^>]++width=$AV([#501:*])&[^>]++height=$AV([#501:*])[^>]+>)"
Replace = "<img\swidth="500"\sheight="500">"

778 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/09(月) 21:11:58 ID:iC2qFQxB0]
Communeだよ…mが1個ないー。・゚・(ノД`)・゚・。

779 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/09(月) 21:59:53 ID:7SsxD+m80]
ありがとう御座います。
しかし、ソースのほうに<img src="xxx.jpg" width="888" height="888"/>
等の手段で大きくしてある画像でなく、その写真自体大きいものに関して効果が現れません。
何か間違っているのでしょうか。諦めるしかないのでしょうか

780 名前: mailto:sage [2006/10/09(月) 22:02:23 ID:7SsxD+m80]
なんだか文章が横柄になってしまった気が致します。
失礼でしたらそのままスルーの方向で。ありがとう御座いました



781 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/09(月) 22:17:47 ID:jo5M1f8P0]
サイズ指定の無いものはサイズ指定を入れれば500x500に変えられるよ。
ただし小さい画像も大きくなるw

782 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/10(火) 00:32:21 ID:81G3JhxF0]
ソースから画像の大きさは取得できないから、大きいものだけ適用するのは
無理だ罠。

783 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/10(火) 00:36:49 ID:PZWGacNu0]
ワナ?

784 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/10(火) 21:43:57 ID:XNd3iqdd0]
>>781-782
誠にありがとうございましたm(. .)m

785 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/11(水) 06:27:48 ID:q2WH0Ko/0]
javascriptで画像の実サイズが取得できればねぇ…

786 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/11(水) 15:41:55 ID:XGJGVjFY0]
419ってまだ使えますか?上手くいかないんだけど

787 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/11(水) 17:16:22 ID:coC4meBG0]
使える

788 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/11(水) 17:19:04 ID:9Oj0NZ590]
アンカーも張らずに質問とな?

789 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/12(木) 00:47:31 ID:7EOqXU/X0]
>>786
エロフィルタ解除してると使えない

790 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/12(木) 02:49:57 ID:neIj8fsh0]
 



791 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/12(木) 07:18:26 ID:neIj8fsh0]
          
        

792 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/15(日) 02:13:44 ID:cJDwpIgG0]
エロフィルタ解除しても使えるようにしてくれ

793 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/15(日) 03:32:16 ID:9zQhNVR/0]
ttp://www.geocities.jp/pmpfr555/30ninn.html
巨大なGIFアニメ。
Firefox 1.5.0.7 で読んだら20秒ほど重くなって応答しにくい状態になった。
さすがにこういうものをフィルタリングするのは無理かな?

794 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/15(日) 03:37:54 ID:JU/5VgGk0]
流れを読まずにmixi広告対策フィルタ投下。

[Patterns]
Name = "[User] Commune @ mixi"
Active = TRUE
URL = "*mixi.jp"
Limit = 1025
Match = "(<td (align="center" width="553"|) background=$AV(img.mixi.jp/img/title2-.gif)>"
"<img src=$AV(img.mixi.jp/img/dot0.gif)[^>]+><br>"
"\s<a href=(mixi.jp/|)banner.pl\?id=[^>]+>*</a></td>"
"$SET(1=<!-- Commune @ mixi - Edited by Proxomitron -->\n"
"<td align="center" width="553" height=60 background="img.mixi.jp/img/title2-.gif">\n"
"\t<img src="img.mixi.jp/img/dot0.gif" width=1 height=1>\n"
"</td>\n<!-- /Commune @ mixi - Edited by Proxomitron -->)"
"|(<(table|td)\s[^>]++width=)\2$AV(710)([^>]+>)\3"
"$SET(1=<!-- Commune @ mixi - Edited by Proxomitron -->\n"
"\2"950"\3\n<!-- /Commune @ mixi - Edited by Proxomitron -->\n)"
"|<td width="224" valign="middle">*/td>"
"$SET(1=<!-- Commune @ mixi - Blocked by Proxomitron -->\n)"
"|<table border="0" cellspacing="1" cellpadding="0" width="100%" bgcolor="#FF9933" style="margin-bottom: 5px;">"
"\s<tr><td>*/table>*/table>"
"$SET(1=<!-- Commune @ mixi - Blocked by Proxomitron -->\n))"
Replace = "\1"

長くてゴメンね。

795 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/15(日) 03:38:53 ID:JU/5VgGk0]
あ、またh抜き忘れたorz

796 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/15(日) 04:25:02 ID:OtboygnJ0]
>>795
俺が使ってるJaneViewにはgifをファイルサイズによって展開しない機能が付いてる。
2chに貼られたURLを普通のブラウザで見るならブラクラ食らうくらいの覚悟はしとくべき。

んでオミトロンでやるならcontent-typeとcontent-lengthの2つのヘッダを使って対応する。
でもcontent-lengthヘッダを送ってこない場合も多いからこの方法じゃ100%防ぐのは無理。

797 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/15(日) 08:42:51 ID:JU/5VgGk0]
>>793
普段は「GIFアニメーションを止める」にチェック入れておいて、
見たいときにだけ有効にする。

798 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/16(月) 17:02:58 ID:C/xlJM+p0]
URLを加工して新たなURLを作りたいんですが、$URL()の中で変数を使ってマッチされられないので途方に暮れています。
例えばURLを以下とします。
esearch.rakuten.co.jp/rms/sd/esearch/vc?sv=2&f=A&g=0&v=2&p=3&e=0&s=6&oid=000&k=0&sf=0&sitem=%A5%EF%A5%A4%A5%F3&x=0
そしてブロックファイルprefetchに
[^.]+rakuten.co.jp $SET(&p=)と登録して
何らかの処理によってこのURLのうち&p=3の部分を&p=4と書き換えて
<link rel="prefetch" href"esearch.rakuten.co.jp/rms/sd/esearch/vc?sv=2&f=A&g=0&v=2&p=4&e=0&s=6&oid=000&k=0&sf=0&sitem=%A5%EF%A5%A4%A5%F3&x=0">
というのをソースに挿入したいんです。

色々と考えたのですが、やはり変数を使ったマッチングの方法が思い浮かびません。
任意の数に対して+1した値を取り出す方法は思いつきますが、この場合にp=に続く数字を取り出すことができません。
アドバイスありましたら宜しくお願いします。

799 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/16(月) 17:25:02 ID:C/xlJM+p0]
>798に誤りがありました。
正しくは[^.]+rakuten.co.jp $SET(prefetch=&p=)です

thinkさんのウェブサイトを眺めていて思ったことは
ブロックリスト内で$SET(prefetch=$URL())のようにして、何とか"p="に続く文字列を取り出せないかということなんですが
あれこれ弄ってみたところ、まだうまく行きません。

800 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/16(月) 18:27:40 ID:pn9Wrk6v0]
動作させることには成功しましたが、結果はかなり期待はずれのものでした。
フィルタ自体はヘッダフィルタのURLCONTROLのアイデアをWebページフィルタに移植しただけです。
ブロックファイルは以下としました。
$URL(
([^.]+.rakuten.co.jp/?++\&p=)\0
([0-9]++)\1
(1$SET(2=2)|2$SET(2=3)|3$SET(2=4)|4$SET(2=5)|5$SET(2=6)|6$SET(2=7)|7$SET(2=8)|8$SET(2=9)|9$SET(2=0)|0$SET(2=1))
(*)\3
)
見やすくするために改行とスペースを入れましたが、実際には入れていません。
フィルタは以下です。
Name = "prefetch"
Active = TRUE
URL = "$TYPE(htm)"
Limit = 256
Match = "</head>"
      "$LST(prefetch)"
Replace = "<link rel="next" href="\0\1\2\3">"
      "\n<link rel="prefetch" href="\0\1\2\3">"
      "\n</head>"

見ての通り、汎用性・管理性に乏しく、またブラウザ(Sylera)の動作が想像していたものとは違っていたので非常にorzです。
OPERAでグーグル検索をするとマウスジェスチャの「進む」で次の結果に進むので、
これはlinkタグの恩恵かと思っていたのですが、
このフィルタを入れても入れなくても楽天の商品検索ではOPERAは「進む」が効きますし、
使いたかったSyleraでは「進む」が効きませんでした。
兎にも角にもprefetchを効かせるフィルタとして、もう少し汎用性を高めていきたいと思います。
何かアイディアありましたら宜しくお願いします。



801 名前:793 mailto:sage [2006/10/16(月) 21:37:40 ID:9qp/s93b0]
>796
2chでないサイトに貼ってあったわけですよ……。
Content-Length を使う場合は、
$IHDR(Content-Type: image/gif) で
Content-Length が指定した値を超えたら\kするとか、そんな感じでしょうか?
参考になりました。ちょっと試してみます。

>797
これは簡単で即効性がありますね。
しかし、あまり使いたくないので、最終手段ということにしようと思います。

802 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/16(月) 23:09:08 ID:rXQtg6m60]
次のページに移るメソッドをスクリプトとして埋め込んでおいて
ブラウザのブックマークレットやスクリプトから呼ぶってのはどうだろ

ジェスチャにまでスクリプト割り当てられるかは知らんけど…

803 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/16(月) 23:49:31 ID:JE7pyNff0]
>>798が作りたいフィルターなら書けると思うがやりたいこととprefetchは無関係。
Operaは

<a href="〜">次へ</a>

等のリンクを検知して動いてる。 Operaの設定で「次」とかのキーワードを登録するところがあるんじゃないかな。
Syleraは知らないけどfirefoxならAll-in-One-Gesturesって拡張でまったく同じことが出来る。
これもリンク中の 「次」 等の文字を検知して動いている。

つまり上のようなリンクを挿入すればおk。 見栄えが悪くなるなら↓のように非表示にすればいい。

<a href="〜" style="display:none">次へ</a>

804 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/17(火) 00:20:12 ID:P1XwjcJ+0]
Operaフォルダのfastforward.ini に

> ;Japanese
> 次へ

ってのがあった、ここで設定するのかな?

805 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/17(火) 00:28:15 ID:o87r+yql0]
>>804
そこ

806 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/17(火) 00:33:15 ID:P1XwjcJ+0]
>>805
ありがと。 んじゃ後はフィルターを書くだけだね。

807 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/17(火) 01:16:32 ID:P1XwjcJ+0]
>>798
URL置換のサンプルフィルター。 www.google.co.jp/ で動作する。

[Patterns]
Name = "URL Replace test1"
Active = TRUE
URL = "www.google.co.jp/(^?)"
Limit = 256
Match = "<img src=$AV(*logo.gif)[^>]+>"
"$URL(www.google.(??)\0.jp/)"
"( $TST(\0=go)$SET(1=government) | $TST(\0=co)$SET(1=company) )"
Replace = "[\1] $STOP()"

マッチ欄の一行目はgoogleのトップ画像にマッチする。
二行目でURLの一部を \0 に取り込む。 この場合は co が取り込まれる。

三行目で \0 に取り込んだものをテストする。
\0 が go なら government が \1 に入る。
\0 が co なら company が \1 に入る。

808 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/17(火) 10:42:18 ID:1EbHilyf0]
>803
Operaの場合はfastforward.iniが効いてたんですね、すっかり忘れていました。
自分で手を加えて使いやすくしていたのに…。
スクリプトは苦手なので、Syleraに組み込めるかは自信がありませんがどうすれば可能かはようやく分かりました。

>807
このサンプルフィルタはどう使えばいいんでしょう。
当方のフィルタは少し使いやすくできました。
例は同じく楽天です。
[^.]+.rakuten.co.jp/*\&p= $URL(([^.]+.rakuten.co.jp/*\&p=[0-9]++)\#$LST(num+1)\#) $SET(prefetch=\@)
このようなブロックリストをフィルタのURL欄に入れてやればprefetch変数にprefetch先のURLを代入しますので
フィルタ自体も扱いやすくなり、またブロックリストから全ての管理を行えるので管理性も良くなったと思います。
なおURL欄でローカル変数を使ってもマッチング欄その他には変数を渡せないようです。(初期値にリセットされる)
ちなみに$LST(num+1)は一文字の数字を取り込んでそれより1だけ大きい数をスタックに追加するようなブロックリストです。

今気が付いたのですが、p=に続く数字をインクリメントするときに桁上げがあると少しやっかいですね。
数字を数字として扱えないproxomitronの欠点ですが、再帰的にブロックリストを構成することでなんとかなりそうです。

809 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/17(火) 10:43:56 ID:1EbHilyf0]
ブロックリストincrement
( $TST(num=([0-9]++)\09) $SET(num=\0) $SET(num2=0$GET(num2)) $LST(increment) | $TST(num=([0-9]++)\0$LST(num+1)) $SET(num=\0\@$GET(num2))

動作を検証してみる。
再帰的なブロックリストincrementを構成。
まずは初期値としてnumに19を代入してみる。
テストをしてnumの下一桁が9の場合には下一桁以外の数字をnum変数にリセットするのでnum変数が1になる。
と同時にnum2変数に0がセットされる。
そして最後に$LST(increment)が繰り返される。
最初に戻って、テストをしてnumの下一桁が9であるかを調べるが、この時点でnum変数は1なのでTSTの結果は偽。
よってOR関数の後者に移動する。
まずテストをしてnumの下一桁を$LST(num+1)で取り出し一つ大きな値をスタックに代入する。
ここではスタックに2が代入される。
次にnumの下一桁以外+スタックに入っている一桁の数字+今までにnum2に入った数字が代入される。
ここで最初の値は空値であり、次の値は2であり、最後の値は0である。
以上から初期値19に対して1だけ大きい20がセットされる。

こんなブロックリストが実際に動くかはまだ検証していません。
時間がある人が居れば試してみてください。

810 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/17(火) 13:32:12 ID:8nUFKOs50]
webフィルタなら適当なローカル変数に取り込んだあと
javascriptで処理させるのがセオリー



811 名前:think ◆MM0nnAOCiQ mailto:sage [2006/10/17(火) 18:01:22 ID:C/FhEIND0]
>>798-800,808-809
とりあえず、名前を固定化してください。
IDが変わると、誰が誰だかわからなくなります…。

>>809
> なおURL欄でローカル変数を使ってもマッチング欄その他には変数を渡せないようです。
ブロックリストの中なら変数への取り込みが効くと思うのですが、いかがでしょうか?
下記をブロックリストに登録すれば、"\@" で加工後のURLを挿入できます。

([^.]+.rakuten.co.jp/rms/sd/esearch/vc\?*\&p\=)\#(1$SET(#=2)|2$SET(#=3)|3$SET(#=4)|4$SET(#=5))(^(^\&|(^?)))\#

> 今気が付いたのですが、p=に続く数字をインクリメントするときに桁上げがあると少しやっかいですね。
先の表現では、(^(^\&|(^?))) で後ろに続く数字の存在を先読みチェックしています。
後述に "&" か (^?) があれば、そこで数字が終わることになります。

812 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/17(火) 18:25:03 ID:emUaxh1m0]
(^[0-9]) でもいいね。

813 名前:803 mailto:sage [2006/10/17(火) 19:37:17 ID:emUaxh1m0]
オミトロンで数字を+1するだけなら何桁の数字であっても出来そうな気がしてきた。

+ を使った繰り返し処理、 "繰り上がり" を意味する記号 "X" を使って以下のような処理をする。
X0 は 10 を意味し、 3X0 は 40 を意味するものとする。


(999に1を足す場合)

1、下一桁の 9 を X0 に置換する。 下一桁が 9 以外だったら従来通りの方法で置換し、終了。
  ⇒ 999 が 99X0 に置換される。

2、 99X0 の中の 9X を X0 に置換。 9X00 になる。

3、 9X00 の中の 9X を X0 に置換。 X000 になる。

4、 先頭が X なので X を 1 に置換し、+ループ終了。

このようにして記号 X が無くなるまでループさせれば自動的に +1 処理が完了する。

>>808
>>807はURLの一部を取り出してから処理する方法を示したものです。
フィルターがごちゃごちゃしてしまう場合にこうすると全体の処理過程が分かりやすくなる例です。
今回の件ではもう必要無いので忘れて下さい。

814 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/18(水) 18:46:17 ID:0r+ECrj30]
yahooでard.yahoo.co.jp/SIGで始まってるテキスト広告を消したいのだけどいいフィルターあるかな。

815 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/18(水) 19:10:53 ID:Oxpb2xGt0]
>>794
mixiのソースが変わってマッチしなくなってる。 書いた直後に仕様変更とはなんと間の悪い..。

>>814
>>1のうpろだにあるよ。

816 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/18(水) 19:57:20 ID:Oxpb2xGt0]
mixiはこれでどうかな、とりあえず上の広告だけ消すフィルターを修正してみた。
mixiのアカウントが某バーガー祭りで巻き添え削除食らったのでログインしても効くかは不明。

[Patterns]
Name = "mixi banner cleaner [2006-10-18]"
Active = TRUE
URL = "$TYPE(htm)([^/]++.|)mixi.jp/"
Limit = 4096
Match = "$NEST(<script,*ads.mixi.jp*,</script>) <noscript>*</noscript>$STOP()"
Replace = "<div style="background-image: url(img.mixi.jp/img/title2-.gif); width:468px; height:60px; border=0px;"></div>"

あとyahooとうたまっぷの歌詞表示のフィルターの修正済みのを>>2のうpロダに上げておきました。

817 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/18(水) 21:57:54 ID:bPOL+aCR0]
横スクロールバーの発生を防ぐためのフィルタなのですが、
ひとつ困ったことがあります。

Name = "css width limiter (2006.10.18)"
Active = TRUE
URL = "$TYPE(css)|$TYPE(htm)"
Limit = 64
Match = "$KEYCHK(c)width : ([#751:*]px|[#91:*]%)\1$SET(2=auto) (;|)\3|"
"$KEYCHK(v)width : ([#751:*]px$SET(2=750px)|[#91:*]%$SET(2=90%))\1 (;|)\3|"
"width : ([#751:*]px$SET(2=750px)|[#100:*]%$SET(2=auto))\1 (;|)\3"
Replace = "width: \2\3 /* css width limited - \1 */"

Replace で「/* */」のようにコメントを挿入しているのですが、
マッチするテキストがすでにコメントの中にあった場合、
コメントが二重になってしまいます。

Replace = "width: \2\3"
これで解決することもできますが、
Replace から「/* */」を削除せずともよい方法はありませんか?

818 名前:think ◆MM0nnAOCiQ mailto:sage [2006/10/18(水) 22:08:08 ID:dpbYjLHS0]
>>817
Limitを少し大きくして (^(^*/\*|(^*\*/))) を検索表現の末尾に挿入してはどうでしょう?
コメント内部にはマッチしなくなります。

819 名前:817 mailto:sage [2006/10/19(木) 00:47:01 ID:64qsfQ3f0]
>818
どうもありがとうございます。

Limit = 256
Match = "($KEYCHK(c)width : ([#751:*]px|[#91:*]%)\1$SET(2=auto) (;|)\3|"
"$KEYCHK(v)width : ([#751:*]px$SET(2=750px)|[#91:*]%$SET(2=90%))\1 (;|)\3|"
"width : ([#751:*]px$SET(2=750px)|[#100:*]%$SET(2=auto))\1 (;|)\3)(^(^[^/*]+/\*|(^[^/*]+\*/)))"

一応、上記とすることで解決しました。
「/*」または「*/」があっても消費させずにそのまま残すようなしくみなのでしょうか。
また、(^(^*/\*|(^*\*/))) の部分についてですが、

/* max-width: 200%; */
max-width: 200%;
/* min-width: 100%; */
min-width: 100%;

このような文字列でテストすると1行目のコメントが多重になってしまうので
一部をいじってみました。
これでしばらくテストしてみます。

820 名前:817 mailto:sage [2006/10/19(木) 01:08:10 ID:64qsfQ3f0]
>819だと
/* max-width: 200%; / */
こんなのにマッチしてしまいますね。ケアレスミスでした。
いろいろ試していますが、いまのところ望み通りの Match が見つかりません。



821 名前:794 mailto:sage [2006/10/19(木) 04:20:49 ID:Rp4XmZBf0]
>>815>>816
本当にうpした後に変更しおった、なんてこったい。
>>816のフィルタもログイン後でも正常に動作したよ。
教えてくれてありがとう。

height を 1pix 足したら、ほぼそのままで使えてしまった(゚∀゚)アヒャ
戻されても使えるように以前の条件をORで含めているけれど、
必要ない場合は削除。

822 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/19(木) 04:21:23 ID:0avczPwd0]
>>816
問題なく動くよ。thx

823 名前:794 mailto:sage [2006/10/19(木) 04:22:13 ID:Rp4XmZBf0]
[Patterns]
Name = "[User] Commune @ mixi"
Active = TRUE
URL = "*mixi.jp"
Limit = 1673
Match = "(<td (align="center" width="553"|) background=$AV(ttp://img.mixi.jp/img/title2-.gif)>"
"<img src=$AV(ttp://img.mixi.jp/img/dot0.gif)[^>]+><br>\s"
"(<a href=(ttp://mixi.jp/|)banner.pl\?id=[^>]+>*</a>"
"|<script type="text/javascript"*"ttp://ads.mixi.jp"*</noscript>)\s</td>"
"$SET(1=<!-- Commune @ mixi - Edited by Proxomitron -->\n"
"<td align="center" width="553" height=61 background="ttp://img.mixi.jp/img/title2-.gif">\n"
"\t<img src="ttp://img.mixi.jp/img/dot0.gif" width=1 height=1>\n"
"</td>\n<!-- /Commune @ mixi - Edited by Proxomitron -->\n)"
"|(<(table|td)\s[^>]++width=)\2$AV(710)([^>]+>)\3"
"$SET(1=<!-- Commune @ mixi - Edited by Proxomitron -->\n"
"\2"950"\3\n<!-- /Commune @ mixi - Edited by Proxomitron -->\n)"
"|<td width="224" valign="middle">*/td>"
"$SET(1=<!-- Commune @ mixi - Blocked by Proxomitron -->\n)"
"|<table border="0" cellspacing="1" cellpadding="0" width="100%" bgcolor="#FF9933" style="margin-bottom: 5px;">"
"\s<tr><td>*/table>*/table>"
"$SET(1=<!-- Commune @ mixi - Blocked by Proxomitron -->\n))"
Replace = "\1"

824 名前:816 mailto:sage [2006/10/19(木) 08:21:48 ID:I4R88+570]
>>821-822
動作確認ありがとうございます! >>816のフィルターは後で>>2のうpロダに上げときますね。

>>823
乙です。 あまり変更が無いとはラッキーでしたねw


ーーーーーーー
>>813で書いたものが一応動くようになったので晒しておきます。 まだ無駄が多いのでbeta版扱いで。
テストウインドウに 9999 などを入れてテストしてみて下さい。 では。

[Patterns]
Name = "number +1 (2006-10-19 beta)"
Active = FALSE
Limit = 256
Match = "(([0-9])\8($TST(F=roop)|(^(^([0-9]+)\9))$SET(C=up)$SET(F=roop)$TST(\9=\7)$SET(A=\8\7)$SET(7=)$SET(9=))"
"$TST(A=\0([0-9])\1(^?))($TST(C=up)$SET(C=)$TST(\1=(0$SET(2=1)|1$SET(2=2)|2$SET(2=3)|3$SET(2=4)|4$SET(2=5)"
"|5$SET(2=6)|6$SET(2=7)|7$SET(2=8)|8$SET(2=9)|9$SET(2=0)$SET(C=up)))$SET(B=\2$GET(B))|$SET(B=\1$GET(B)))"
"($TST(\0=[0-9]*)$SET(A=\0)|$SET(A=))$SET(0=)$SET(1=)$SET(2=))+{1,*}($TST(C=up)$SET(B=1$GET(B))|)"
Replace = "$GET(B)$SET(A=)$SET(B=)$SET(C=)$SET(F=)$STOP()"

825 名前:816 mailto:sage [2006/10/19(木) 14:03:18 ID:6Is2YjIm0]
よく考えてみると数字に+1するのにループは必要無さそう。
このアルゴリズムさえ思い付けばすごく簡単だ。

826 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/19(木) 16:32:46 ID:pqx0j20y0]
>>824-825
お疲れ様です。
興味深いトピックだったので、私も挑戦してみました。

[Patterns]
Name = "number +1 [Match ver] [2006/10/19] test6.1"
Active = TRUE
Limit = 32767
Match = "([0-9]++)\#([0-9])\0(9+{1,*})\1"
"$TST(\0=$LST(Num-plus))"
"$TST(\1=($LST(Num-plus))+)|"
"([0-9]++)\#([0-9])\0"
"$TST(\0=$LST(Num-plus))"
Replace = "\@"

Name = "number +1 [$TST ver] [2006/10/19] test5.1"
Active = TRUE
Limit = 32767
Match = "([0-9]+)\0"
"("
"$TST(\0=([0-9]++)\#([0-9])\1(9+{1,*})\2)"
"$TST(\1=$LST(Num-plus))"
"$TST(\2=($LST(Num-plus))+)|"
"$TST(\0=([0-9]++)\#([0-9])\1)"
"$TST(\1=$LST(Num-plus))"
")"
Replace = "\@"

827 名前:think ◆MM0nnAOCiQ mailto:sage [2006/10/19(木) 16:34:35 ID:pqx0j20y0]
>826です。名前入れ忘れましたw

## $LST(Num-plus) の中身

0$SET(#=1)
1$SET(#=2)
2$SET(#=3)
3$SET(#=4)
4$SET(#=5)
5$SET(#=6)
6$SET(#=7)
7$SET(#=8)
8$SET(#=9)
9$SET(#=0)

"Match ver" の方が若干高速ですが、取り込むフィルタによっては、"$TST ver" の方が都合がよい場合もあるので2パターンのフィルタを用意してみました。
心なしか "$TST ver" の方がすっきりしているような気も…。
まあ、たいした速度差はないので、好みで選んで構わないと思います。

アルゴリズムは>813,824とは全く違います。
フィルタの構成としては、繰り上がりが発生するときと発生しないときで処理を分岐させています。

・繰り上がりが発生しないときには、末尾の数字に +1
・繰り上がりが発生するときには、末尾の 999... を 0にし、繰り上がる桁の数値を +1

という仕組みです。

828 名前:think ◆MM0nnAOCiQ mailto:sage [2006/10/19(木) 16:54:12 ID:pqx0j20y0]
>>820
えー、そんな妙なコメントあるのかなあ。
・・・と、愚痴は置いておいて。

よく考えたら、(^((^\*/|/\*)?)+\*/) の方が厳密かつシンプルでした。
(私はシンプルに感じますが、大半の人はシンプルと受け取れないかも…)
「"*/" か "/*" の手前まで先読みして、その後ろに "*/" が存在してはならない」という表現です。
実は私の好きな表現でして、覚えておくとたまに役立ちます。


# 蛇足
>826のLimitが異様に大きいのは気にしないでください。(速度計測時の名残です…。)
実際に、フィルタに取り込むときにはもっと小さな値のLimitで作成することになると思います。

829 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/19(木) 18:18:18 ID:jrvNMl2x0]
>816さん、thinkさんがしっかりしたものを作り上げてくれたようなのでありがたいです。
あとはこれをリストにぶちこんで、モジュール化させれば簡単に
任意の箇所の一続きの数字列に対して1だけ大きい数を得ることができますね。

830 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/19(木) 18:21:06 ID:jrvNMl2x0]
むむ、リストに入れなきゃいけないわけではないけど、フィルタの中に突然↑のような処理が入ったら
なんのことやら混乱する可能性があるので可読性という点でリスト化させたほうが良いかなと思います。



831 名前:816 mailto:sage [2006/10/20(金) 00:59:27 ID:ELREBDG20]
>>826
乙です。

> 繰り上がりが発生するときには、末尾の 999... を 0にし、繰り上がる桁の数値を +1

これこそ>>825に書いた簡単なアルゴリズムです。 これに気付いていれば>>824みたいな難解で遅いものを
書く必要は無かったですね。 でも、 ローカル変数でも $SET(0=) 等で明示的に初期化する必要がある
場合があることなど、今まで知らなかったオミトロンの挙動が次々に出てきたのでなかなか楽しめました。

PS、
数字が 999 などの 9 の繰り返しだった場合に 000 などになってしまうようです。

>>829
リスト化すれば使い回しがしやすくて便利そうですね。
完成したらどこかで配布してみてはいかがでしょう、きっと重宝されると思います。

あと、リストを使った回帰的処理というのは面白い発想でした。
これが正しく動作するとすれば複雑な処理が簡単に書けるようになりますね。

832 名前:817 mailto:sage [2006/10/20(金) 01:36:13 ID:wAdVERPl0]
>828
どうもありがとうございます。ばっちり解決していますね。
>820のような妙なコメントを書く人はあまりいないだろうと思いますが、
書かれることを想定しておいた方が後々のためになるだろうと思います。
フィルタを作る際は、一応はあらゆる場合を想定しておいた方が
安心して使えるだろうと思うので……。
解説もありがとうございました。

>828のようなテクニックを集めたサイトがあるとよいと思うものの、
wikiやthinkさんのサイト内などにはあるのかな。

833 名前:816 mailto:sage [2006/10/20(金) 04:46:14 ID:kgbwGCqt0]
リストを使ったループもちゃんと動作しますね。 オミトロンでここまで出来るとは...。

[Patterns]
Name = "LIST rooptest"
Active = FALSE
Limit = 256
Match = "$LST(rooptest)"
Replace = "[\@]$STOP()"

----------------rooptest.txt----------------
(1)\#($LST(rooptest)|)
----------------rooptest.txt----------------

テストウインドウ: 111
結果: [111]

834 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/20(金) 04:49:49 ID:H4LiK3bO0]
どうでもいい話、ループの最大回数がわかってる場合は
(?)+{1,4}とか決め付けると極端に高速化したような気がした。
今はもうこれ自体使ってないからかなり忘れかけてるけど。

835 名前:816 mailto:sage [2006/10/20(金) 05:06:17 ID:kgbwGCqt0]
>>834
30000バイトの文字列をテストウインドウに貼って

(?)+{30000}
(?)+

の2つの速度をプロファイルボタンから調べて比べてみたんですが限りなく同タイムでした。
高速化したというのはたぶんlimitと同じような目的で使った場合の話ですね。

836 名前:816 mailto:sage [2006/10/20(金) 07:02:24 ID:kgbwGCqt0]
>>826
test6.1のほうですがテストウインドウに111と入れると222になったりしたので修正してみました。
「 + 」 での取り込みで最短一致でマッチングしてるのが原因でした。 ついでに 000 の問題も修正。
もっといい方法があれば手直しを。

[Patterns]
Name = "number +1 [Match ver] [2006/10/19] test6.2"
Active = TRUE
Limit = 32767
Match = "(9+{1,*})\0(^[0-9])$TST(\0=$SET(#=1)(9$SET(#=0))+)"
"|([0-9]++)\#([0-9])\0(9+{1,*})\1(^[0-9])"
"$TST(\0=$LST(Num-plus))"
"$TST(\1=($LST(Num-plus))+)|"
"([0-9]++)\#([0-9])\0(^[0-9])"
"$TST(\0=$LST(Num-plus))"
Replace = "[\@]"

837 名前:816 mailto:sage [2006/10/20(金) 07:09:54 ID:kgbwGCqt0]
すみません、余計酷くなってしまいました。 ↑は無かったことに....。

838 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/20(金) 15:16:57 ID:pRyei5xN0]
以前、永久ループに陥ってから倦厭していた$NESTが何となく解るようになった。
少し進歩した(゚∀゚)アヒャ

839 名前:think ◆MM0nnAOCiQ mailto:sage [2006/10/20(金) 22:19:35 ID:sNjWaFpG0]
>>831
> 完成したらどこかで配布してみてはいかがでしょう
出来れば、今日コンテンツに加えて更新したいところです。遅くとも明日には何とか…。

>>831
> あと、リストを使った回帰的処理というのは面白い発想でした。
>>832
> >828のようなテクニックを集めたサイトがあるとよいと思うものの、

実は「フィルタ公開 → 仕組み解説」という形でいくつかのテクニック解説をコンテンツに加えようと考えていましたが、考えるだけで先に進まないので、そろそろ始動しようと考えてます。
今サイトを改装中なので、そのときにフィルタ公開だけでもやってしまおうかと。
# 先にフィルタを公開すれば、要望or突っ込みなどいただけるかもしれませんしね。
# 別所で公開していたフィルタがあるので、皆さんが知っているフィルタも幾つかあると思います。(勘の鋭い方は既に気がついているかもしれませんねw)

>>836
> 「 + 」 での取り込みで最短一致でマッチングしてるのが原因でした。
確かに困りますね、これは。
どうも私の最短一致についての認識が甘いみたいです。
(以前も * の最短一致で指摘されたことがありましたが、未だに勘違いしている節があります(汗))
解決法としては、

・数値の先端/末尾を含めてマッチさせる (最長一致とほぼ同等)
・数値の末尾のみにマッチさせる (必要な箇所だけ最短一致)

のいずれかと思います。

840 名前:think ◆MM0nnAOCiQ mailto:sage [2006/10/20(金) 22:20:45 ID:sNjWaFpG0]
>839の後者の方で解決してみました。

[Patterns]
Name = "number +1 [Match ver] [2006/10/20] test6.3"
Active = TRUE
Limit = 32767
Match = "([0-9]++)\#([0-8])\0(9+{1,*})\1(^[0-9])"
"$TST(\0=$LST(Num-plus))"
"$TST(\1=($LST(Num-plus))+)|"
"([0-9]++)\#([0-8])\0(^[0-9])"
"$TST(\0=$LST(Num-plus))|"
"(9+{1,*})\1(^[0-9])"
"$SET(#=1)"
"$TST(\1=($LST(Num-plus))+)"
Replace = "\@"

Name = "number +1 [$TST ver] [2006/10/20] test5.3"
Active = TRUE
Limit = 32767
Match = "([0-9]+)\0(^[0-9])"
"("
"$TST(\0=([0-9]++)\#([0-8])\1(9+{1,*})\2)"
"$TST(\1=$LST(Num-plus))"
"$TST(\2=($LST(Num-plus))+)|"
"$TST(\0=([0-9]++)\#([0-8])\1)"
"$TST(\1=$LST(Num-plus))|"
"$TST(\0=(9+{1,*})\1)"
"$SET(#=1)"
"$TST(\1=($LST(Num-plus))+)"
")"
Replace = "\@"



841 名前:think ◆MM0nnAOCiQ mailto:sage [2006/10/20(金) 22:28:33 ID:sNjWaFpG0]
あと一行、書ければ…。

>>831
> 数字が 999 などの 9 の繰り返しだった場合に 000 などになってしまうようです。
こちらは、もう一つ分岐を作ることで対応しました。
よく考えたら、([0-9])\0 じゃなくて ([0-8])\0 で良かったのですよね。
これで3つめの分岐が期待通りに動作すると思います。

842 名前:816 mailto:sage [2006/10/21(土) 02:22:58 ID:62B1+yNF0]
>>839-841
サイト更新予定ですか、乙。 フィルターの公開とはとても楽しみです。
テクニック解説も期待してます、頑張って下さい。

>number +1 フィルター

修正乙です、ばっちり修正されてました。

あと、ちょっと考えてみたんですが、以下のことが気になったので

・ 下一桁が 9 である確率は 1/10 なのでこれにマッチするものを分岐の先頭に書くのは低速化になるような
・ 9 の繰り返しを 0 に置換するときはリストを使わずに $SET(#=0) を使ったほうが速い

自己流のものですが試しに書いてみました。

843 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/21(土) 02:29:26 ID:62B1+yNF0]
[Patterns]
Name = "number +1 (2006-10-21 beta3)"
Active = FALSE
Limit = 32767
Match = "([0-9]++)\#([0-8])\0(^[0-9])"
"$TST(\0=$LST(Num-p-Ten))"
"|"
"9(^[0-9])$SET(#=10)"
"|"
"([0-9]++)\#"
"([0-9])\0"
"(9+{1,*})\1"
"(^[0-9])"
"$TST(\0=$LST(Num-p-Ten))"
"$TST(\1=(?$SET(#=0))+)"
Replace = "\@"

-------Num-p-Ten.txt------
0$SET(#=1)
1$SET(#=2)
2$SET(#=3)
3$SET(#=4)
4$SET(#=5)
5$SET(#=6)
6$SET(#=7)
7$SET(#=8)
8$SET(#=9)
9$SET(#=10)
-------Num-p-Ten.txt------

このフィルターの場合、Num-plusリストの "9" で # に "10" を代入しても支障が無いので別のリスト名にして変更しました。
このせいで他のフィルターでリストの使い回しが出来なくなるのであれば元に戻す方向で。

844 名前:816 mailto:sage [2006/10/22(日) 07:56:03 ID:giDEESQO0]
>>824>>840>>843 の3つのフィルターの速度を3万文字の数字で試してみたら>>824が一番速い。
かなり予想外・・。

845 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/22(日) 08:54:24 ID:pIhJV0rv0]
処理にかかる時間は

 4   :  10   :   5
>>824   >>840    >>843

くらいの倍率になるようですね、>>843の高速化も予想以上に効いてます。

846 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/23(月) 06:41:54 ID:r0C1Bci+0]
所でオミトロンで数を+1することでどんなことが出来るんだ?

847 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/23(月) 13:46:05 ID:KvMb1J5K0]
主にcgiを中心としたURLだね。
あと一部のサイトにはサイトを番号で階層的に構築しているものもあるだろうから
そういう場合に次ぎのカテゴリに飛ぶリンクやカテゴリ内の次のページに飛ぶリンクを埋め込むことができると思われる。

ちなみにURLの処理の場合はソース内のそれと比べて遙かに量が少ないので高速化したところで意味はほとんどない。
彼らは単なるベンチマニアなので気にしないでおいてあげようw


848 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/23(月) 18:55:30 ID:MzXqWBCb0]
みんな頭がいいんだな。
もう何がなんだか(´・ω・`)ショボーン

849 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/23(月) 19:30:43 ID:r0C1Bci+0]
JSオフにしてる人用って事か

850 名前:think ◆MM0nnAOCiQ mailto:sage [2006/10/23(月) 20:46:24 ID:LNHCxGv10]
>>842
> ・ 下一桁が 9 である確率は 1/10 なのでこれにマッチするものを分岐の先頭に書くのは低速化になるような
> ・ 9 の繰り返しを 0 に置換するときはリストを使わずに $SET(#=0) を使ったほうが速い
なるほど。

>>843
([0-9]++)\#([0-9])\0(9+{1,*})\1 は面白いですね。この発想はありませんでした。
9999... の数値の置換が高速に動作するのが良い感じですね。

>>844
> 3万文字の数字で試してみたら>>824が一番速い。
おそらく、OR関数を使用している影響だと思います。
実際、ORの先頭の表現にマッチさせる条件だと、速度差がかなり小さくなります。



851 名前:think ◆MM0nnAOCiQ mailto:sage [2006/10/23(月) 20:47:43 ID:LNHCxGv10]
あれからもう一度、初心に返って考え直してみたら、驚くほどスリムなフィルタになりました。

[Patterns]
Name = "number +1 [Match ver] [2006/10/23] beta1"
Active = TRUE
Limit = 32767
Match = "(^(^[0-8]9+(^[0-9])))$LST(Num-plus)(9$SET(#=0))+|"
"(^(^9))$SET(#=1)(9$SET(#=0))+(^[0-9])"
Replace = "\@"

Name = "number +1 [$TST ver] [2006/10/23] beta1"
Active = TRUE
Limit = 32767
Match = "([0-9]+)\0(^[0-9])("
"$TST(\0=\#(^(^[0-8]9+(^?)))$LST(Num-plus)(9$SET(#=0))+)|"
"$TST(\0=$SET(#=1)(?$SET(#=0))+))"
Replace = "\@"

>842のアドバイスを受けて、ブロックリスト(Num-plus)から "9$SET(#=0)" を外し、更に ([0-9]++)\# を省きました。
>839で紹介した「数値の末尾のみにマッチさせる (必要な箇所だけ最短一致)」の応用形です。
我ながら、高速でシンプルなフィルタに仕上がったと思います。

852 名前:think ◆MM0nnAOCiQ mailto:sage [2006/10/23(月) 20:57:23 ID:LNHCxGv10]
>>846
「相対URL → 絶対URL」にするときに ../ の出現回数をカウントして繰り返し処理させたいと考えたことがあります。
「+1 するフィルタ」を応用すると、「-1 するフィルタ」も出来そうなので、 「../ が何度出現しても絶対URLにするフィルタ」が作れそうです。
(今までは繰り返し回数を1〜4回のように決めうちして、ORで指定していました)
決めうちでもほとんどの状況を網羅できるので、わざわざグローバル変数を使ってまで実現する必要があるかというと疑問が残りますが…。

また、「グローバル変数に『特定の文字列』が何回マッチしたか記憶させたい」と考えたことも。
何度か出た話題ですが、行数も \n の数をカウントすれば、取得できます。
行数でなくても、「ある単語」がn回HITしたら、フィルタを働かせるロジックは応用が利きそうですね。

>>847
> 彼らは単なるベンチマニアなので気にしないでおいてあげようw
アルゴリズムマニアも加えておいてくださいw

853 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/23(月) 21:31:20 ID:7VXS0HXl0]
画像を全部lightboxで表示するフィルタ書いてもらえませんか

854 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/23(月) 21:53:44 ID:4SBEQqzk0]
そういえば昔、相対URLを絶対URLにするフィルタをつくろうとして
断念したことがあったっけ。
不要な画像つきリンクをテキスト化して軽くするフィルタなんだけれども。
今では別のフィルタで対応しているからつくる必要がなくなった。

855 名前:816 mailto:sage [2006/10/24(火) 03:02:33 ID:96jgfWU+0]
>>850-851
乙です。 なるほど、こういう方法もありましたか。 置換に必要な場所にだけマッチさせる方法があったとは..。

それぞれのフィルターの速度を3万文字の数字で比較してみました。
計測には差が出やすいようにスーパーπ104万桁10分台の遅いマシンを使用。

---------------------------------------------------------------------
         (1)      (2)      (3)       (4)     (5)
        000.....0    000.....09    199.....9      999.....9   999....90    ( 対象文字列 )

>>824   43.319444   43.409722   49.640625   49.437500  46.897059   ( ミリ秒 )

>>843   48.953125   100.375000   70.340909   70.238636  33.804348

>>851   59.951923   60.000000   33.820652   25.366667  計測不能(応答なし)
---------------------------------------------------------------------

>>851のフィルターは 99999.. の後ろが 9 以外の数字で終わる場合に極端に時間がかかるようです。
実用的には問題無いと思われますがちょっと気になります。 先読みで数字の末尾を確認する
処理を入れたほうが良いかも..。

(3)、(4) の速さがすごいですね、高速化済みの>>843の3倍も速いとは...w

>>824は対象がどんな数字でも安定してることが分かります。
>>843は対象の末尾が 9 の場合をイレギュラーと考え、この場合の速度を無視した書き方なので
9 で終わる場合は遅いですね。

856 名前:816 mailto:sage [2006/10/24(火) 03:42:20 ID:96jgfWU+0]
>>846
〜/00581.jpg
〜/00582.jpg
〜/00583.jpg

みたいな連番の画像ファイルを見るときにブラウザをリロードするだけで次々に見れるようになります。
他にも応用次第で色々なことに使えるはず。

>>848
慣れればそのうち書けるようになるはず。

>>849
JSでは出来ないことにも使えるはず。 HTTPヘッダの置換等。

>>852
>わざわざグローバル変数を使ってまで

今まではグローバル変数を使うとすごく遅くなるという固定観念を持ってましたが
>>824を見るとそうでもなさそうなんですよね。 遠慮せずにもっと使うべきものなのかも。

>>854
>相対URLを絶対URLにするフィルタ
それらしきフィルターをどこかで見た。

857 名前:816 mailto:sage [2006/10/24(火) 06:48:23 ID:96jgfWU+0]
あれ、>>824は対象文字列が3文字などの短い場合は他のよりかなり遅い。 グローバル変数のせいだろうか。
グローバル変数は動的な生成とその解放をするときに時間がかかるが、
代入や取り出しにかかる時間はローカル変数と変わらない...ってことかな?

>>855に書いた 999... の末尾が 9 以外の場合に遅くなるという件は "#" の回数制限の100文字程度なら
プロファイルでも全然問題なく動作しますね。 3万文字の場合でもプロファイルでなく普通にテストする分には
正常に動作するから修正の必要は無いか。

858 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/24(火) 07:40:31 ID:iS+1bFGh0]
>>853
abc.s65.xrea.com/prox/wiki/%A5%D5%A5%A3%A5%EB%A5%BF%A1%A2%A5%EA%A5%B9%A5%C8%B8%F8%B3%AB/Image%20Popup/

859 名前:816 mailto:sage [2006/10/24(火) 08:14:51 ID:96jgfWU+0]
応答なしの問題を回避するために>>851に手を入れてみました。 変更点↓

・ 9999.. の末尾の先読み判定を前に移動。
・ (^[0-9]) を (^[0-8]) に修正。
・ (^(^ 〜 )) から && に代えてみました。 タイム比較用。

[Patterns]
Name = "number +1 (2006-10-24) beta4"
Active = FALSE
Limit = 32767
Match = "([0-8]9+(^[0-8])&&$LST(Num-plus)(9$SET(#=0))+)|"
"(9+{1,*}(^[0-8])&&$SET(#=1)(9$SET(#=0))+)"
Replace = "\@"

// (^(^9))9$SET(#=0) は (^(^9))?$SET(#=0) より速いんですね、これも意外..。

860 名前:816 mailto:sage [2006/10/24(火) 08:30:32 ID:96jgfWU+0]
タイム比較の結果は (^(^ 〜 )) >>> && でした。 以上。



861 名前:816 mailto:sage [2006/10/24(火) 08:32:00 ID:96jgfWU+0]
※ (^(^〜))[速い] >>> &&[遅い]  です。

862 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/24(火) 10:18:39 ID:PwmdsW1B0]
www.so-net.ne.jp/tv/bangumi/tvprgm/1_29_0.html
>テレビ王国 > 10月24日(火)の番組表 [地上波/奈良/ 5-12時]
から上を消すフィルタお願いします。

>商号変更のおしらせ 「ソネットエンタテインメント株式会社」へ [PDF]
>[テレビ王国ランキング!レポート全国版] 10/16〜10/22分リリース!!
>テレビも動画も!あなたの好みに合わせてオススメ!
>ドラマ情報続々!この秋スタートドラマを事前にチェック。
など
>テレビ王国 > 10月24日(火)の番組表 [地上波/奈良/ 5-12時]
より上すべて消したいです。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<373KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef