はてなキーワード: ^Hとは
これ読んでてよくわからん買ったんだけれど、増田も断捨離あんになっちゃいけなかったのか?
人のものを勝手に捨てる(というか、売り飛ばす)のがOkなんだよね?
そして、勝手に捨てて^H^H^H売った後に、涼しい顔して「余計なものがなくなって、暮らしやすくなったでしょ?」なんてかますのOkなんだよね。
まず増田の大事なものを全部家族に内緒にしているトランクルームなり、貸金庫なりに隠せ。
それから、まずはそのBBAの家の高そうなもの全部車に積んで古物商に売り飛ばせ。
それでもって、「余計なものがなくなって暮らしやすくなったでしょ?」って言ってやれ。
次にいつも使っているものを全部捨ててやれ。
「執着がなくなってすっきりしたでしょ?」って言ってやれ。
BBAはそれだけのことをしたんだと思い知らせてやれよ。
K殺沙汰にされたら、お前もこれまでに何やられたかをぶちかましてやれよ。証拠取ってるんだろ?
...とまあ、無責任に思った。
いくら都会でもそういうのが通用するのって小梨で賃貸に住んでいる人くらいのもんじゃないの?
子どもがいたら、PTAというなんだかんだいって互助会的な組織に強制加入することにならない?
もちろん、田舎の煩わしさ^H^H^H^H互助組織に比べたら年に1回の旗当番とか子供が卒業するまでに1回の係とか屁みたいなものだと思うけど、ないわけではない。
そりゃあ、なんだかんだ言って旗当番図すら出てこないけしからん親も時々いるけれど、そういうことする奴は珍しい方だと思う。
子供が卒業するまでにやる係も、履歴がありませんよと声をかけると、大抵は渋々ではあってやるものでしょ。
それも、声をかけた側が( ゚Д゚)ハァ??と思うような自分勝手な理由をつけてエスケープするフリーライダーが時々おるけど。
賃貸だと別に自治会的な組織に入らないでいいと思うんだが、戸建てだと町内会、マンションだと管理組合にほぼ強制加入だよね。
入っていたら役員の仕事も持ち回りでやってくるわけで、何もしないでいい組織なんてない。
どちらも若い加入者は労働力としてそれなりに期待されているのを感じる。
ワイも小梨で賃貸に住んでいたころはそういう煩わしいのは回ってこなかったから、「田舎が特殊だー」と言っている人はそういう人なのかなって思った。
普段から俺様が使っているスクリプトあるから、公開してほめちぎってもらうぞー!
出力はただの文字列だから音声読み上げアプリでも何でも、突っ込んで遊んでくれ。
jq必須です。
ログインせず使うので当然アカウント固有の非表示設定とかは動きません。
あれなIDのコメントも全部所得することになるのでご注意ください。
まあそこらへんはsedでも使って気に入らないidの行を勝手に削除してくれ
hatebu_comment.sh
#!/bin/bash if [[ "$1" =~ ^http ]];then : # Success else echo "Error: 引数に指定したURLのブックマークのコメント一覧を取得するやーつ" echo "例: ./hatebu_comment.sh 'https://www3.nhk.or.jp/news/html/20200405/k10012369381000.html' | less" exit; fi if [[ "$1" =~ b.hatena.ne.jp/entry/s ]];then # はてブページのURLでも動作するように url="https://$(echo $1 | sed -e 's@.*/entry/s/@@')" else url=$1 fi if ! jq --version > /dev/null ;then echo "Error: jqがインストールされていません" exit; fi curl -s "https://b.hatena.ne.jp/entry/jsonlite/?url=$url" | jq '.bookmarks[] | if .comment != "" then ("「" + .user + "」 " + .comment) else empty end' | sed 's@^"@@g' | sed 's@"$@@g'
俺がその課に行く前にいた先輩のことなので正直なんでそこまでそうなったのかは知らんけど、なんで周囲もなんも言わなかったんだろうね。
ぶっちゃけあの課はちょっと課長からしてパワハラ気質で、先輩はパワハラされてたっぽいからそういうことなのかなとも思わんでもない。
つまりは課の雰囲気としてそれを強要^H^H許容する感じがあったというか。
先輩はちょっと人づきあいが下手そうなタイプで課長が圧力かけてそうなったんだろうなと予想する。
現場を見ていたわけじゃないから知らんけど、あの課であの課長だったらそうなるだろうなと。
そんでもって俺もとんずらこいたからそのあとの課のことは知らん。
集合Kが2つの二項演算+: K×K→K、*: K×K→Kを持ち、以下の性質を満たすとき、Kは体であるという。
K, Lを体とする。K⊂Lとなるとき、LをKの拡大体という。L/Kが拡大であるともいう。もちろん、これはLの部分群Kによる剰余群のことではない。
C/Rや、C/Qは体の拡大の例である。K(X)/K(X^2)なども体の拡大の例である。
L/Kを体の拡大とする。任意のa∈Lに対して、K係数の多項式f(X)が存在して、f(a)=0となるとき、LをKの代数拡大体、またはL/Kは代数拡大であるという。
そのような多項式が存在しない元が存在するとき、LはKの超越拡大体、またはL/Kは超越拡大であるという。
なぜならば、任意のz∈Cはz = x + yi (x, y∈R)と表わせ、z* = x - yiとおくと、zは二次方程式
X^2 -(z + z*)X + zz* = 0
の解だから。
Kを体とする。K上の任意の多項式F(X)に対して、Fの根を全て含む体Lが存在する。言い換えれば、FはLで
と一次の積に分解する。このようなLのうち最小のものが存在し、Fの(最小)分解体という。Fの分解体はKの代数拡大体である。
LをFの分解体とする。Lの部分環Vを
K[X1, ..., Xn]→L (f(X1, ..., Xn)→f(a1, ..., an))
の像とすると、VはK上のベクトル空間である。各aiはn次多項式の根であるから、aiのn次以上の式はn-1次以下の式に等しくなる。従って、VはK上高々n^2次元の有限次元のベクトル空間である。
Vは整域であるから、0でない元による掛け算は、VからVへの単射線形写像である。したがって、線形写像の階数と核の次元に関する定理から、この写像は全射である。よって、Vの0でない任意の元には逆元が存在する。つまり、Vは体である。
Lは、Kと各aiを含む最小の体であり、V⊂Lなので、L=Vである。
さて、Lの元でK上のいかなる多項式の根にならないものが存在したとし、それをαとおくと、無限個の元1, α, α^2, ...は、K上一次独立となる。これはVが有限次元であることに矛盾する。□
L/Kを代数拡大とする。LはK上のベクトル空間となる。その次元をL/Kの拡大次数といい、[L : K]で表す。[L : K]が有限のとき、L/Kは有限拡大といい、無限大のとき無限次代数拡大という(上の証明でみたとおり、超越拡大は必ず無限次拡大である)。
M/K、L/Mがともに有限拡大ならば、L/Kも有限拡大であり、[L : K] = [L : M] [M : K]。
α∈Lとする。K上の多項式fでf(α)=0をみたすもののうち、次数が最小のものが定数倍を除いて存在し、それをαの最小多項式という。
[K(α) : K]は、αの最小多項式の次数に等しい。なぜならば、その次数をnとするとαのn次以上の式はすべてn-1次以下の式になるため、[K(α) : K]≦n。1, α, ..., α^(n-1)が一次従属だとすると、n-1次以下の多項式でαを根に持つものが存在することになるので、[K(α) : K]≧n。よって、[K(α) : K]=n。
Lの自己同型σでKの元を固定するもの、つまり任意のa∈Kに対してσ(a)=aとなるもの全体のなす群をAut(L/K)と書く。
任意の有限拡大L/Kに対して、#Aut(L/K) ≦ [L : K]。
L/Kを有限拡大とする。#Aut(L/K) = [L : K]が成り立つとき、L/KをGalois拡大という。L/KがGalois拡大のとき、Aut(L/K)をGal(L/K)と書き、L/KのGalois群という。
L/Kを有限拡大、[L : K] = 2とする。#Aut(L/K) ≦ [L : K] = 2なので、Aut(L/K)に恒等写像以外の元が存在することを示せばよい。
[L : K] = 2なので、α∈L\Kが存在して、1, α, α^2は一次従属。したがって、α^2 - aα + b = 0となるa, b∈Kが存在する。解と係数の関係から、α, a - α∈Lは、2次方程式X^2 - aX + b = 0の異なる2解。
α∉Kより、K⊕KαはK上2次元のベクトル空間で、K⊕Kα⊂LなのでL=K⊕Kα。
σ: L→Lをσ(1)=1, σ(α)=a-αとなるK線形写像とすれば、σは全単射であり、Kの元を固定する体の準同型でもあるので、σ∈Aut(L/K)。□
C/RはGalois拡大。
L/Kを有限拡大とする。任意のα∈Lに対して、αのK上の最小多項式が、Lで1次式の積に分解するとき、L/Kを正規拡大という。
L=K(α)とすると、L/Kが正規拡大であるのは、αの最小多項式がLで一次の積に分解するときである。
K(α)/Kが正規拡大で、さらにαの最小多項式が重根を持たなければ、αを他の根に写す写像がAut(K(α)/K)の元になるから、Aut(K(α)/K) = αの最小多項式の次数 = [K(α) : K]となり、K(α)/KはGalois拡大になる。
nを自然数として、ζ_n = exp(2πi/n)とする。ζ_nの最小多項式は、Π[0 < m < n, gcd(m, n)=1](X - (ζ_n)^m)であり、Q(ζ_n)/QはGalois拡大である。
L/Kを有限拡大とする。任意のα∈Lの最小多項式が重根を持たないとき、L/Kは分離拡大という。
体Kに対して、1を1に写すことで一意的に定まる環準同型f: Z→Kがある。fの像は整域だから、fの核はZの素イデアルである。fの核が(0)のとき、Kの標数は0であるといい、fの核が(p)であるとき、fの標数はpであるという。
F_2 = Z/2Zとする。F_2係数の有理関数体F_2(X)/F_2(X^2)は分離拡大ではない。
実際、XのF_2(X^2)上の最小多項式は、T^2 - X^2 = (T - X)(T + X) = (T - X)^2となり、重根を持つ。
L/KをGalois拡大、Gal(L/K)をGalois群とする。
K⊂M⊂Lとなる体Mを、L/Kの中間体という。
部分群H⊂Gal(L/K)に対して、L^H := {a∈L| 任意のσ∈Hに対してσ(a)=a}は、L/Kの中間体になる。
逆に、中間体K⊂M⊂Lに対して、Aut(L/M)はGal(L/K)の部分群になる。
次のGalois理論の基本定理は、L/Kの中間体がGalois群で決定されることを述べている。
L/KをGalois拡大とする。L/Kの中間体と、Gal(L/K)の部分群の間には、以下で与えられる1対1対応がある。
- H'⊂H⊂Gal(L/K)ならば、K⊂L^H⊂L^H'⊂L
- K⊂M⊂M'⊂Lならば、Aut(L/M')⊂Aut(L/M)⊂Gal(L/K)
- 中間体K⊂M⊂Lに対して、#Aut(L/M)=[L : M]。つまり、L/MはGalois拡大
- 部分群H⊂Gal(L/K)に対して、#H = [L : L^H]、#Gal(L/K)/H = [L^H : K]
- 中間体K⊂M⊂Lに対して、M/Kが正規拡大(L/Kは分離的なのでM/Kも分離的であり、従ってGalois拡大)であることと、Gal(L/M)がGal(L/K)の正規部分群であることが同値であり、Gal(L/K)/Gal(L/M)〜Gal(M/K)。同型はσ∈Gal(L/K)のMへの制限で与えられる。
K=Q, L=Q(√2, √3)とすると、Gal(L/K)はσ√2→-√2とする写像σと、√3→-√3とする写像τで生成される位数4の群Z/2Z×Z/2Zである。
この部分群は{id}, {id, σ}, {id, τ}, {id, στ}, {id, σ, τ, στ}の5種類があり、それぞれ中間体L, Q(√2), Q(√3), Q(√6), Kに対応する。
.
本記事末尾のローカルなkey mappingを実現するコードを改良してプラグインにしました。
↓
Vimperatorでローカルなkey mappingを実現するプラグイン local_mappings.js を書いた。
http://anond.hatelabo.jp/20080826124641
2008-07-14 - やぬすさんとこの日記
http://d.hatena.ne.jp/janus_wel/20080714
→n秒後/前に移動するkey mappingも忘れずに!
Re: autocmd が分からない - hogehoge
http://d.hatena.ne.jp/teramako/20080731/p1
のコードをいじった。
" --- autocmd --- " nicovideo " cでコメント入力、Cでコマンド入力、sでシーク、lでボリューム調整、 " pで停止/再生、mでミュートのon/off、vでコメの表示トグル、zでズーム。 javascript <<EOM liberator.plugins.nicomap = function(){ // no args var list=[ ["p","nicopause"], ["m","nicomute"], ["v","nicomementvisible"], ["z","nicosize"], ["s","nicoseek"], ]; // has args var list2=[ ["c","nicomment"], ["C","nicommand"], ["l","nicovolume"], ["s","nicoseek"], ]; if(buffer.URL.indexOf("http://www.nicovideo.jp/watch") == 0){ for (var j=0; j<list.length; j++){ let i = j; liberator.mappings.addUserMap([1],[list[i][0]],list[i][1], function(){ liberator.execute(list[i][1]); },{ rhs:":"+list[i][1]+"<CR>" } ); } for (var j=0; j<list2.length; j++){ let i = j; liberator.mappings.addUserMap([1],[list2[i][0]],list2[i][1], function(){ liberator.execute('normal :'+list2[i][1]+'<Space>'); },{ rhs:":"+list2[i][1]+"<Space>" } ); } } else { for (var i=0; i<list.length; i++){ liberator.mappings.remove(1,list[i][0]); } for (var i=0; i<list2.length; i++){ liberator.mappings.remove(1,list2[i][0]); } } }; liberator.autocommands.add('LocationChange','.*','js liberator.plugins.nicomap()'); EOM
http://d.hatena.ne.jp/nokturnalmortum/20080802#1217633913
.
現在のマウスカーソル位置でクリックイベント発生するkey mappingを設定できればより快適なんだが・・・。
(「コメントする」ボタンのDOMノードが取得できれば、dispatchEventでいけそうだけど)
" ************* local key mappings **************** javascript <<EOM (function(){ function setlocalmap(obj){ var list = obj.list; var list2 = obj.list2; var exp = obj.exp; if(list.constructor != Array || list2.constructor != Array){ echr("invalid argument: array argument required");return; } if(exp.constructor != RegExp){ echr("invalid argument: regex argument required");return; } if(exp.test(liberator.buffer.URL)){ for (var j=0; j<list.length; j++){ let i = j; liberator.mappings.addUserMap([1],[list[i][0]],list[i][1], function(){ liberator.execute(list[i][1]); },{ rhs:":"+list[i][1]+"<CR>" } ); } for (var j=0; j<list2.length; j++){ let i = j; liberator.mappings.addUserMap([1],[list2[i][0]],list2[i][1], function(){ liberator.execute('normal :'+list2[i][1]+'<Space>'); },{ rhs:":"+list2[i][1]+"<Space>" } ); } } else { for (var i=0; i<list.length; i++){ liberator.mappings.remove(1,list[i][0]); } for (var i=0; i<list2.length; i++){ liberator.mappings.remove(1,list2[i][0]); } } } /** * Add Key Mappings to Specific Web Pages * @param obj : has following properties * list : commands that take no args * list2 : commands that take args * exp : target page's URL (regex) * @see Re: autocmd が分からない - hogehoge * http://d.hatena.ne.jp/teramako/20080731/p1 */ liberator.plugins.addLocalUserMap = function(obj){ liberator.plugins[obj.name + "MapSetter"] = function(){ setlocalmap(obj); } liberator.autocommands.add( 'LocationChange', '.*', 'js liberator.plugins.' + obj.name + 'MapSetter()' ); }; // nicovideo // cでコメント入力、Cでコマンド入力、sでシーク、lでボリューム調整、 // pで停止/再生、mでミュートのon/off、vでコメの表示トグル、zでズーム。 var nicovideo = { name : 'nico', exp : /^http:\/\/www.nicovideo.jp\/watch/, list : [ ["p","nicopause"], ["m","nicomute"], ["v","nicomementvisible"], ["z","nicosize"], ["s","nicoseek"], ], list2 : [ ["c","nicomment"], ["C","nicommand"], ["l","nicovolume"], ["s","nicoseek"], ], }; liberator.plugins.addLocalUserMap(nicovideo); })(); EOM
実行してみたら出力に変化がなかった。アルェー?
# tree -pugs | perl -e '@line=<>; $max=(sort {$b<=>$a} map {/^(.*?)\[/; length($1)} @line)[0]; map {s/^(.*?)\[/$1 . " "x($max-length($1))."\["/e} @line; print @line'
毎回正規表現考えるのも面倒かなーとかとか。
理想を語ると出力形式指定できれば最強だなーとか妄想してた。
この辺は、ファイルにして ~/bin に放りこんで、自分好みに育て上げる、ってのがエロゲ^H^H^Hギークの楽しみ方かと。
雛型的には↓かなぁ。どうだろ。弾・monger・コーガイ氏が登場したら……滅多切りさるかもw
#!/usr/bin/perl use strict; use warnings; use Getopt::Std; use vars qw($opt_t); # オプション処理 getopts('t'); # $opt_tがセットされていたらタブ処理、ということにする。 # コマンド起動 # 引数処理とかシグナルとか面倒なところは…… open TREE, "tree -pugs ".join(" ",@ARGV,"|") or die; my @line = <TREE>; # 富豪的にいく close TREE; # ここで子プロセスの処理だっけ? # それともwaitするんだっけ? # ツリー表示部分の最大長を求める。 my $max=(sort {$b<=>$a} map {/^(.*?)\[/; length($1)} @line)[0]; # 色々やる時はユーザ名とかグループ名とかファイル名とかの最大長がいるかも foreach (@line) { if ($opt_t) { # タブ(\t)で位置をそろえるとか…… } else { s/^(.*?)\[/$1 . " "x($max-length($1))."\["/e; } print; }
treeへのオプションの与え方とか、それによる出力の変化とか考えると、結構面倒だけど、自分用に決め打ちしとけば何とかなるでしょう。
あと、「[%p<>%u<>%g<>%s]」みたいなのはCPANに転がってたりしそうな気もするので、それを使うとか。
そんなところでなかろうか。
[追記]
http://search.cpan.org/~darren/String-Format-1.14/Format.pm というのがあった。
便利すぐる!とか思ったんだけど、オプション次第では出力がちょっと汚い。
これってうまいこと成形できないかな。かな。
これ。
http://arbolbell.jp/tools/2007/11/linux-tree.html
[root@localhost www]# tree . |-- cgi-bin |-- error | |-- HTTP_BAD_GATEWAY.html.var | |-- HTTP_BAD_REQUEST.html.var | |-- HTTP_FORBIDDEN.html.var | |-- HTTP_GONE.html.var | |-- HTTP_INTERNAL_SERVER_ERROR.html.var | |-- HTTP_LENGTH_REQUIRED.html.var | |-- HTTP_METHOD_NOT_ALLOWED.html.var | |-- HTTP_NOT_FOUND.html.var | |-- HTTP_NOT_IMPLEMENTED.html.var | |-- HTTP_PRECONDITION_FAILED.html.var | |-- HTTP_REQUEST_ENTITY_TOO_LARGE.html.var | |-- HTTP_REQUEST_TIME_OUT.html.var | |-- HTTP_REQUEST_URI_TOO_LARGE.html.var | |-- HTTP_SERVICE_UNAVAILABLE.html.var | |-- HTTP_UNAUTHORIZED.html.var | |-- HTTP_UNSUPPORTED_MEDIA_TYPE.html.var | |-- HTTP_VARIANT_ALSO_VARIES.html.var | |-- README | |-- contact.html.var | |-- include | | |-- bottom.html | | |-- spacer.html | | `-- top.html | `-- noindex.html |-- html (以下略)
こんな感じで出してくれる。超便利。
[root@localhost www]# tree -pugs . |-- [drwxr-xr-x hoge hoge 4096] cgi-bin |-- [drwxr-xr-x hoge hoge 4096] error | |-- [-rw-r--r-- hoge hoge 9108] HTTP_BAD_GATEWAY.html.var | |-- [-rw-r--r-- hoge hoge 6633] HTTP_BAD_REQUEST.html.var | |-- [-rw-r--r-- hoge hoge 11193] HTTP_FORBIDDEN.html.var | |-- [-rw-r--r-- hoge hoge 12700] HTTP_GONE.html.var | |-- [-rw-r--r-- hoge hoge 12846] HTTP_INTERNAL_SERVER_ERROR.html.var | |-- [-rw-r--r-- hoge hoge 7539] HTTP_LENGTH_REQUIRED.html.var | |-- [-rw-r--r-- hoge hoge 6773] HTTP_METHOD_NOT_ALLOWED.html.var | |-- [-rw-r--r-- hoge hoge 13255] HTTP_NOT_FOUND.html.var | |-- [-rw-r--r-- hoge hoge 6336] HTTP_NOT_IMPLEMENTED.html.var | |-- [-rw-r--r-- hoge hoge 6565] HTTP_PRECONDITION_FAILED.html.var | |-- [-rw-r--r-- hoge hoge 7802] HTTP_REQUEST_ENTITY_TOO_LARGE.html.var | |-- [-rw-r--r-- hoge hoge 7099] HTTP_REQUEST_TIME_OUT.html.var | |-- [-rw-r--r-- hoge hoge 7103] HTTP_REQUEST_URI_TOO_LARGE.html.var | |-- [-rw-r--r-- hoge hoge 7822] HTTP_SERVICE_UNAVAILABLE.html.var | |-- [-rw-r--r-- hoge hoge 13035] HTTP_UNAUTHORIZED.html.var | |-- [-rw-r--r-- hoge hoge 6353] HTTP_UNSUPPORTED_MEDIA_TYPE.html.var | |-- [-rw-r--r-- hoge hoge 7009] HTTP_VARIANT_ALSO_VARIES.html.var | |-- [-rw-r--r-- hoge hoge 1979] README | |-- [-rw-r--r-- hoge hoge 4256] contact.html.var | |-- [drwxr-xr-x hoge hoge 4096] include | | |-- [-rw-r--r-- hoge hoge 291] bottom.html | | |-- [-rw-r--r-- hoge hoge 9] spacer.html | | `-- [-rw-r--r-- hoge hoge 969] top.html | `-- [-rw-r--r-- hoge hoge 5043] noindex.html |-- [drwxr-xr-x hoge hoge 4096] html (以下略)
いまいちかっちょわるい。
体裁とか好きなようにいじれたらそのまま書類にできるんだけどなーと。
欲しいものをまとめると
http://anond.hatelabo.jp/20080415182703
てな感じです。
http://anond.hatelabo.jp/20080416071526
雛型をtreetest.plとして保存して動かすとこんな感じになりました。
[root@localhost www]# perl ./treetest.pl . |-- [drwxr-xr-x hoge hoge 4096] cgi-bin |-- [drwxr-xr-x hoge hoge 4096] error | |-- [-rw-r--r-- hoge hoge 9108] HTTP_BAD_GATEWAY.html.var | |-- [-rw-r--r-- hoge hoge 6633] HTTP_BAD_REQUEST.html.var | |-- [-rw-r--r-- hoge hoge 11193] HTTP_FORBIDDEN.html.var | |-- [-rw-r--r-- hoge hoge 12700] HTTP_GONE.html.var | |-- [-rw-r--r-- hoge hoge 12846] HTTP_INTERNAL_SERVER_ERROR.html.var | |-- [-rw-r--r-- hoge hoge 7539] HTTP_LENGTH_REQUIRED.html.var | |-- [-rw-r--r-- hoge hoge 6773] HTTP_METHOD_NOT_ALLOWED.html.var | |-- [-rw-r--r-- hoge hoge 13255] HTTP_NOT_FOUND.html.var | |-- [-rw-r--r-- hoge hoge 6336] HTTP_NOT_IMPLEMENTED.html.var | |-- [-rw-r--r-- hoge hoge 6565] HTTP_PRECONDITION_FAILED.html.var | |-- [-rw-r--r-- hoge hoge 7802] HTTP_REQUEST_ENTITY_TOO_LARGE.html.var | |-- [-rw-r--r-- hoge hoge 7099] HTTP_REQUEST_TIME_OUT.html.var | |-- [-rw-r--r-- hoge hoge 7103] HTTP_REQUEST_URI_TOO_LARGE.html.var | |-- [-rw-r--r-- hoge hoge 7822] HTTP_SERVICE_UNAVAILABLE.html.var | |-- [-rw-r--r-- hoge hoge 13035] HTTP_UNAUTHORIZED.html.var | |-- [-rw-r--r-- hoge hoge 6353] HTTP_UNSUPPORTED_MEDIA_TYPE.html.var | |-- [-rw-r--r-- hoge hoge 7009] HTTP_VARIANT_ALSO_VARIES.html.var | |-- [-rw-r--r-- hoge hoge 1979] README | |-- [-rw-r--r-- hoge hoge 4256] contact.html.var | |-- [drwxr-xr-x hoge hoge 4096] include | | |-- [-rw-r--r-- hoge hoge 291] bottom.html | | |-- [-rw-r--r-- hoge hoge 9] spacer.html | | `-- [-rw-r--r-- hoge hoge 969] top.html | `-- [-rw-r--r-- hoge hoge 5043] noindex.html |-- [drwxr-xr-x hoge hoge 4096] html (以下略)
ステキすぐる。
これを元にいろいろいぢくればcodereposでコミっても怒られないものができそう。
Format.pmもかなり使えそうと言うか僕の要求ずばりですよ。
firefoxでしか確認していないけれど、URL、正規表現、XPathで指定できる様にしてみたよ。
// ==UserScript== // @name filter for Hatena::Bookmark // @namespace http://anond.hatelabo.jp/ // @include http://b.hatena.ne.jp/hotentry* // @include http://b.hatena.ne.jp/entrylist* // origin http://anond.hatelabo.jp/20080302214727 // ==/UserScript== (function(){ var itemxpath = "//div[@class='entry']"; function xpathgenURL(url) {return "//div[@class='entry' and descendant::a[starts-with(@href,'"+url+"')]]"} var filters = [ // start with '//' then xpath // moconico douga // {"tag": "div", "name": "entry", "pattern": "nicovideo\.jp"}, "//div[@class='entry' and descendant::a[contains(@href,'nicovideo.jp')]]", /* // tag of "2ch" {"tag": "a", "name": "tag", "pattern": "2ch", "parentNum": HatebuTagParentNum}, {"tag": "a", "name": "tag", "pattern": "\\*2ch", "parentNum": HatebuTagParentNum}, ***/ // start with 'http' then url // 2ch blogs // livedoor // {"tag": "div", "name": "entry", // "pattern": /http:\/\/blog\.livedoor\.jp\/(insidears|dqnplus)\//}, "http://blog.livedoor.jp/insidears/", "http://blog.livedoor.jp/dqnplus/", // {"tag": "div", "name": "entry", // "pattern": /http:\/\/(guideline|alfalfa|news4vip)\.livedoor\.biz\//}, "http://guideline.livedoor.biz/", "http://alfalfa.livedoor.biz/", "http://news4vip.livedoor.biz/", // typeof /regexp/ is function (@firefox) then regexp pattern // fc2 // {"tag": "div", "name": "entry", // "pattern": /http:\/\/(urasoku|news23vip|waranote|vipvipblogblog|netanabe|res2ch|kanasoku|tenkomo)\.blog\d+\.fc2\.com\//}, /http:\/\/(urasoku|news23vip|waranote|vipvipblogblog|netanabe|res2ch|kanasoku|tenkomo)\.blog\d+\.fc2\.com\//, // tag of "neta" // {"tag": "a", "name": "tag", "pattern": "ネタ", "parentNum": HatebuTagParentNum}, "//div[@class='entry' and descendant::a[@class='tag' and string()='ネタ']]", // {"tag": "a", "name": "tag", "pattern": "*ネタ", "parentNum": HatebuTagParentNum}, "//div[@class='entry' and descendant::a[@class='tag' and string()='*ネタ']]", // hatena anonymouse diary // {"tag": "div", "name": "entry", "pattern": /http:\/\/anond\.hatelabo\.jp\//} "http://anond.hatelabo.jp/", ]; for (var i=0; i<filters.length; i++) { var filter = filters[i]; var type = typeof filter; var regexp; var xpath; if (type == "function") { xpath = itemxpath; regexp = filter; } else if (type == "string") { if (filter.match(/^http/)) { xpath = xpathgenURL(filter); } else if (filter.match(/^\/\//)) { xpath = filter; } else { next; } } var removeNodes = document.evaluate(xpath,document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null); for (var j=0; j<removeNodes.snapshotLength; j++) { var node = removeNodes.snapshotItem(j); if (!regexp || node.innerHTML.match(regexp)) { node.parentNode.removeChild(node); } } } })();
ついでに増田版も作ってみたよ。
// ==UserScript== // @name filter for Hatelabo::AnonymousDiary // @namespace http://anond.hatelabo.jp/ // @include http://anond.hatelabo.jp/ // @include http://anond.hatelabo.jp/*?page=* // @exclude http://anond.hatelabo.jp/YourID/* // ==/UserScript== // origin http://anond.hatelabo.jp/20080302214727 (function(){ var itemxpath = "//div[@class='section']"; function xpathgenURL(url) {return "//div[@class='section' and descendant::a[starts-with(@href,'"+url+"')]]"} var filters = [ // start with '//' then xpath "//div[@class='section' and child::h3[starts-with(string(),'■はてなの嫌われ者!')]]", // start with 'http' then url "http://anond.hatelabo.jp/", // typeof /regexp/ is function (@firefox) then regexp pattern /釣り/, ]; for (var i=0; i<filters.length; i++) { var filter = filters[i]; var type = typeof filter; var regexp; var xpath; if (type == "function") { xpath = itemxpath; regexp = filter; } else if (type == "string") { if (filter.match(/^http/)) { xpath = xpathgenURL(filter); } else if (filter.match(/^\/\//)) { xpath = filter; } else { next; } } var removeNodes = document.evaluate(xpath,document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null); for (var j=0; j<removeNodes.snapshotLength; j++) { var node = removeNodes.snapshotItem(j); if (!regexp || node.innerHTML.match(regexp)) { node.parentNode.removeChild(node); } } } })();
相撲ファンの目を離れて外の目から見れば。
いくら強かろうと巡業サボった朝青龍はクビでよくね? となるし、「かわいがり」で死亡した斉藤某とかなんですぐに司法解剖に持って行かないの? となるし、八百長だって逆に何でブックがあっちゃいけないの? という話になるし、高額売買が指摘される親方株だって別にそんなの要らないっていうか何で引退してからじゃないと指導できないの現役力士でも強ければ道場持てばいいじゃん(昔で言う二枚鑑札)という話になる。
でさ、このへんはもういっそ外の感覚に合わせてしまえばいいと思うんだ。
# その際協会寄付行為で「解散時の財産の帰属は類似の公益団体に」とあるから、一旦は文部省傘下の公益法人が全株を保有し、しかる後に随時民間に売却することになろう。
これで理事会^h^h^h取締役会の「上」に株主総会ができるので親方どもの好き勝手にはできなくなるし、そもそも取締役に力士出身者がつくことも困難になろう。
で、NHKも必ずしも全場所中継しないようにする。逆に言えば、(株)大相撲は放映権に関するフリーハンドを得、従来の不透明な座席手配よりも放映権の売りさばきによる収益をメインにするようになろう。
しかも、株主の目に加えて放映権者の目がある以上、殺人とか暴行なんて決定的なスキャンダルは自粛せられるだろう。暴力団とのスキャンダルで放映権売れなくなって衰亡した某団体を教訓にするならば。
でだ。面白ければ八百長もアリにするのだ。八百長相撲を「自然」に見せるにはそれはそれで高度な技術がいる、ということは彼の「中盆」板井も強調するところであるし、実際八百長云々は関係なしに「千代の富士時代」の相撲は格闘技興行として面白かった。一概に害悪と切って捨てるのは勿体ない。
但し、それは力士間の不透明な売買ではなく、(株)大相撲のブックメーカーが定めた「ブック」「ギミック」に基づくものでなければならない。力士間に「ストーリー」を設定して遣ってもいいし、「ヒール」「ベビーフェイス」を設定してやる。もちろんガチを貫く力士が居るならブックメーカーはそれすら尊重してブックを立てることが望まれる。
もちろん力士はレスラーよろしく、簡単に「脱退」したり「(株)大相撲とは別の組織を結成」したり「復帰」したり「ガチを標榜する新競技を主張」したりするようになるだろう。「プロレス化」するだろう。
で、それで何か「見る側にとって」問題があるの?