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/
752 名前:名無しさん@お腹いっぱい。 [2006/10/07(土) 01:57:03 ID:4fXR5G+G0] ジャバスクリプトの外部ファイルを使えるようにするフィルタお願いします
753 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/07(土) 11:21:15 ID:Pz1G80hw0] >>750 Name = "we're all aiseikai" Active = TRUE URL = "$TYPE(htm)" Limit = 16 Match = "</head>" Replace = "</head>" "<marquee behavior="alternate" direction="left" scrollamount="50" bgcolor="black">"
754 名前:名無しさん@お腹いっぱい。 mailto:gaug [2006/10/07(土) 13:24:58 ID:th6MhiCB0] サーバ側のプログラムを無効化するフィルターお願いします
755 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/07(土) 14:19:39 ID:5ye5pJfu0] IE用必須設定(高速化)・過去ログ・FAQ・ime.nu消し・関連リンク <a href=
756 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/07(土) 20:23:51 ID:uS60llj20] なんだこの流れ…('A`)
757 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/07(土) 22:46:46 ID:5ye5pJfu0] IE用必須設定(高速化)・過去ログ・FAQ・ime.nu消し・関連リンク ttp://www2.wbs.ne.jp/~go-to/prx/faq.html が消えているのでフカーツきぼん。無理ならどなたか2ch の最新汎用広告完消しフィルターを。
758 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/07(土) 22:54:49 ID:+O89j41I0] >>757 ttp://proxo.hp.infoseek.co.jp/cgi-bin/sn_uploader/src/pr0043.txt
759 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/08(日) 00:29:19 ID:LJj0nXmQ0] www.so-net.ne.jp/tv/bangumi/tvprgm/1_29_6.html の右上の広告と 左上のこれは広告ではありませんがお知らせ類を消すフィルターお願いします。
760 名前:759 mailto:sage [2006/10/08(日) 00:35:42 ID:LJj0nXmQ0] 分かりやすく書くと > テレビ王国 > 10月7日(土)の番組表 [地上波/奈良/22- 5時] から上をすべて消すフィルターお願いします。
761 名前:名無しさん@お腹いっぱい。 mailto:sage [2006/10/08(日) 01:05:58 ID:pkkxx40D0] >>760 [Patterns] Name = "Yahoo! Music swf -> txt part1 (2006_09_21)" Active = TRUE URL = "www.so-net.ne.jp/tv/bangumi/tvprgm/1_29_6.html" Bounds = "$NEST(<script,</script>)" Limit = 3453 Match = "*www.so-net.ne.jp/tv/bangumi/tvprgm/1_29_6.html\?id= ([a-z0-9]+{1,*})\1\&aid=([0-9]+{1,*})\2*" Replace = "<iframe src="music.yimg.jp/bin/sendlyricstext\?ArtistId=\2\&Id=\1" height="400" width="600">('A`)b</iframe>"
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