はてなキーワード: Clickとは
以下を全てGoogle Reader上で行いたい。
タイトルをクリックしたら自動的に全文を取得して表示して欲しい。以下の設定を行うと出来る。
ブコメが表示されないので、これを直したい。
id:northappleさんが「googleリーダー内ではてなブックマークのコメントを参照したいで.. - 人力検索はてな」という質問の回答及びコメント欄でこれを直す方法を教えてくれている。よって、その通りに変更すると直る。2ヶ所置換が必要。
以下、Google Reader plus Hatenaの変更点です。変更するには、Firefoxの右上にある猿(Greasemonkey)のアイコンの右にある下矢印をクリック→「ユーザスクリプトの管理」をクリック→「Google Reader plus Hatena」の「設定」をクリック→「このユーザスクリプトを編集します」をクリックするとエディタで「Google Reader plus Hatena」のスクリプトが表示されるのでそれを編集する。
62行目
mySpan.innerHTML = '<a href="http://b.hatena.ne.jp/entry/'+url+'" onClick="window.open(this.href,\'\',\'status=yes,scrollbars=yes,directories=yes,menubar=yes,resizable=yes,toolbar=yes\'); return false;" ><img src="'+ BookmarkImageURL +'" /></a>';
を、
mySpan.innerHTML = '<a href="http://b.hatena.ne.jp/my/add.confirm?url='+url+'"><img src="'+ BookmarkImageURL +'" /></a>';
に変更。これで「○○ users」をクリックすると、目的のウィンドウが開くようになる。
147行目
var t = bookmark.timestamp.split(" ")[0].split("/");
を、
var t = bookmark.timestamp;
に変更。
156行目、
html += "<li><span class=\"__hatena_bookmark_anywhere_timestamp\">"+escapeHTML(t[0])+"年"+escapeHTML(t[1])+"月"+escapeHTML(t[2])+"日</span><img src=\"http://www.hatena.ne.jp/users/"+escapeHTML(bookmark.user.substring(0,2))+"/"+bookmark.user+"/profile_s.gif\" width=\"16\" height=\"16\"><a href=\"http://b.hatena.ne.jp/"+escapeHTML(bookmark.user)+"/"+escapeHTML(t.join(""))+"\" class=\"hatena_bookmark_anywhere_user\">"+escapeHTML(bookmark.user)+"</a><span class=\"hatena_bookmark_anywhere_tags\">"+tags.join(", ")+"</span>"+escapeHTML(bookmark.comment)+"</li>";
を、
html += "<li><span class=\"__hatena_bookmark_anywhere_timestamp\">"+escapeHTML(t.slice(2,-3))+"</span><img src=\"http://www.hatena.ne.jp/users/"+escapeHTML(bookmark.user.substring(0,2))+"/"+bookmark.user+"/profile_s.gif\" width=\"16\" height=\"16\"><a href=\"http://b.hatena.ne.jp/"+escapeHTML(bookmark.user)+"/"+escapeHTML(t.split(" ")[0].split("/").join(""))+"#bookmark-"+escapeHTML(json.eid)+"\" class=\"hatena_bookmark_anywhere_user\">"+escapeHTML(bookmark.user)+"</a><span class=\"hatena_bookmark_anywhere_tags\">"+tags.join(", ")+"</span>"+escapeHTML(bookmark.comment)+"</li>";
に変更。
# ブコメのはてなスターを取得しやすいように、ブコメのリンクもブコメのパーマリンクへ変更してあります。
を、
var evt = document.createEvent( "MouseEvents" ); evt.initEvent( "click", false, true ); createSpan.dispatchEvent( evt );
に変更。(「 JavaScriptの動かないコード (中級編) clickイベントを強制的に発生させたい (fireEvent/createEventの使い方) - 主に言語とシステム開発に関して」を参考にさせて頂きました。)
出来た。けど、めちゃくちゃソースが汚いので、差分として公開するのが難しい。ごめんなさい。
hk2mr_hu 社会 サッカーボールを避け転倒→足を骨折→認知症になる→食べ物を気管につまらせ死亡。これでどうして死亡責任まで問われるかが理解できない。しかも問われるとしたら少年の責任ではなく、学校の管理責任だろう。 2011/06/28
だから学校の管理過失よりもより直接的な原因があるだろうがよ。
frsatti 司法, 事故, 裁判, 不法行為 国賠訴訟かと思いきや、どうしてこうなった。 2011/06/286 clicks
国賠に行くほうが例外。管理過失なんてのは、直接の加害者にゼニが無いときの代替手段だ。
shoji-no 事故, 裁判 高校野球のバッターに「打ち方によってはファールボールがスタンドの観客に当たることが予想できる」と言ってるようなもの。 2011/06/288 clicks
その場合は観客にファールボールが来ることについて同意がある。楽天砂かぶり席での事故について裁判があった。
mkusunok 風が吹けば桶屋が儲かる的な判決。ちょっと信じ難いのだが。学校の管理責任を問わない理由も気になるところ 2011/06/28166 clicks
答えは簡単。原告が学校を被告にしなかったから。被告でもないのに責任問われたらおかしいだろ。
tdam 桂充弘弁護士の"やや酷な印象"との指摘以上に、老人にはありうる"認知症の症状""誤嚥(ごえん)性肺炎"までサッカー少年の責任にするのはいくらなんでも因果関係の過大評価だ。控訴審で覆ると信じたい。 2011/06/28
「老人にはありうる」などという一般論で、個別具体的な事件を判断してるなよ。被害者は認知症じゃなかったんだから、「この」老人には「ありえ」なかった事故。
kubomi 俺みたいにあらぬ方向へボールを蹴る可能性のある奴はもっと人殺しの顔をしろってことですか 2011/06/28
人を殺さないように気をつけろ。
mrkn law, これはひどい "日本の"ではなくて"大阪の"司法が腐ってるんだろう。こういうのは最高裁で覆る気がしているんだが、そうならなければ結局日本の司法が腐ってるという事になるね。 2011/06/2850 clicks
なんでいきなり最高裁なのかと思ったら、そうか、「大阪」だから高裁も腐ってるって言ってるのか。だがそうだとしたら、法律審たる最高裁で覆えすのは比較的難しい。
いや、蹴った奴が第一義的な問題だ。
muipla 社会, これはひどい じいさんに向けて蹴ったわけじゃないのに、どうして学校の管理責任(ゴールの位置が適正だったとか)問われないんだよ。それに転倒して死亡したのではなく誤嚥性肺炎て…朝日タイトル直せ。 2011/06/286 clicks
道路にボール出すな。学校の管理責任は原告が問わなかったから。
なんだよ「無罪」って。いつ「有罪」になったんだよ。民事と刑事の区別くらいつけろ。さもなきゃ黙れ。
oguogu 848事故, 560判決 判決内容に納得できないのは当然としても、どうして一審判決が出るまで6年も掛かっているのが気になる。事故は愛媛なのに裁判が大阪というところも。 2011/06/287 clicks
こいつ前にもいなかったか?管轄が気になるなら民訴法読め。管轄についてはかなり手前の位置にあるからすぐ見つかるだろ。
T_Tachibana これはひどい, 司法, 事故 たとえ子供がふざけて蹴り出したとしても校内活動中の事であれば問われるべきは学校側の管理責任では?ちなみに歳をとれば嚥下機能は低下するので認知症でなくても誤嚥性肺炎を起こす可能性は十分ある 2011/06/28
こいつ特に酷いな。もし子どもがふざけて蹴り出したんなら、断じて学校側の管理責任なんかじゃねーよ。なんでも学校のせいにしてんな。てめぇみたいなのが教育を滅ぼすんだよ。
touchmee 事故に合われた方には申し訳ないですが、このケースで子供の親に賠償責任があるというのは無理があるような気がしますけど。 2011/06/287 clicks
んじゃ子ども自身に賠償責任(709条)負わせてみるか?どっちが外道だよ。
kalmalogy これはひどい, 司法, 社会 "足を骨折。その後に認知症の症状が出るようになり"ここの因果関係の証明とか無理だろ 2011/06/286 clicks
「因果関係」が事実的因果関係であれば、そこの因果関係は認めるべき。ひっじょーによくあるケース。
p_shirokuma 娑婆世界 子どもは「管理せよ」という公式見解。こういう判例が出るようだと、ますます子どもは育てづらくなるなー。 2011/06/2827 clicks
いや、子供は管理しろよ。つか管理しろってのは100年以上も維持されてきた法的義務だ。
goshi_goshi これはひどい, 社会, 事故, 裁判, 司法, news, ニュース, 生活, education, sports これはどうなんだろう。フリーキックに違法性なんて限りなくないと思うんだが… 2011/06/2811 clicks
公道にボールが出る危険を知りながら、何ら対策もせずにボール蹴ってたんだったら違法性あるだろ。
Moodykajigaya 最初は少年が蹴ったボールで死亡したのかとおもった。素直に解釈すれば、「若者は余計な事を何もするな」。こんな酷い判決が出てしまう時点で「日本は老害天国」と思う/ こういう訴訟こそ裁判員制度使うべき 2011/06/281 click
ボールも校庭の中に留まってたら良かったのにな。
tyatya_moon 最悪の想定ですべて動くと何も行動できなくなるんだが・・・本当に地裁とかとんでもない判決下すのが多いけどいらないんじゃないのか?こういう裁判こそ裁判員制度を導入すればいいのに・・・ 2011/06/28
最悪の想定でもいろいろ出来るだろ。お前の最悪の想定は「天が崩れ落ちてきたらどうしよう」ってやつだ。
koega これはひどい プロでも外すフリーキック。小五が一発外しただけで1,500万円の損害賠償。どうやったらこんな判決が出てくるのか。ぜひ最高裁まで戦ってほしい。 2011/06/28129 clicks
hiroyukiest 裁判 これは酷だな。介護で生活が一変したってのはわかるけど、事故当時80歳前後のじいさんの余生に小5の少年(とその家族)の人生を変えるだけの価値があるのか疑問。まぁただの感情論だけど。 2011/06/284 clicks
あぁ。ただの感情論だ。「生活が一変」の中には介護費用もある。]
tawafu 小学生に大人なみの注意力を要求するとは!高齢者優遇社会(悪い意味で)。これでは、老人を敬う社会にはならないだろう。年長者(裁判官含む)への敬う心は廃れる。年長者だからこそ丸くおさめられないのか? 2011/06/28
大人並みの注意力なんざ要求してない。5年生に必要な注意力を基準にすれば、公道にボール出さないよう気をつけるべき。
linden 社会, 事故, これはこわい これは酷な判決だな。この記事を読む限り、少年よりむしろ学校側の管理責任が問われるべきだろう。 2011/06/287 clicks
むしろとか関係ない。なぜなら裁判所は原告の訴えについてのみ判断するから。
「逸失利益の算出方法おかしすぎる」と思うなら、なぜ損害額が逸失利益だと思うんだ?
imo758 これはひどい 校庭から飛び出さないようになんて特に子供に対しては大人が監督してもどだい無理。責任は社会全体で負うべき。記事からの印象通りなら判決が反社会的な馬鹿。 2011/06/28
「子供」の理解の決めが粗すぎる。「無理」だから放置するのか?何歳まで放置するつもりだ?
tihoujiti 訴訟 なんともいえない判決。学校の管理責任は問題ないのか、という観点もある気が 2011/06/28
その観点は訴訟では問題になってない。
kk6 「蹴り方によっては道路に出ることを予測できた」これが通るなら球技が行われるであろう校庭をもつ学校という施設を設置した自治体に責任を問えちゃうよね 2011/06/289 clicks
自治体に責任を問えるからと言って直接の加害者の責任を問えなくなるわけではない。
yamasita3 社会 有罪はしょうがない気もするが、1500万か・・・。高齢者が増えてきたら、同じような事件が増えかねないし、なんらかの対策が必要だなあ・・・。 2011/06/286 clicks
filinion これはひどい, 司法, 学校 これは、学校(=市が)両親を全面的に支援して控訴すべき。こんなのが確定したら学校も大変なことになる。 2011/06/28
これは正しい。なぜ「学校も大変なことになる」かというと、両親から求償されるから。民訴法上は補助参加を行うことになろう。
yoshi1ym 避けようとしたということは、前方にボールが飛んできたわけ。仮に飛び出してきたのが子供なら避けるのは当たり前、よけれるスピードで当たり前。牽いたら前方不注意じゃないですか?しかも脳の持病って運転に耐える 2011/06/281 click
轢かないで転倒したんだろ。子どもの飛び出しを避けようとして転倒し、子供には全く触れず、それで運転手に損害が発生したら、子供側に賠償責任あるだろ。
REV 後期高齢者の安全を担保した校舎設計・学校運営が必要という判決だが、その金の出処が気になる。 2011/06/289 clicks
そんなことどこにも書いてない。せいぜい「子供にはボールを公道に出さないようにしつけろ」。
z0rac それを云うなら、自力で立ってられない二輪車に乗ってることが事故を招いたとも云えないか? 2011/06/28
言えないだろ。だいたい二輪車は自走するし。
rz1h931f4c 裁判 そもそも87歳が運転するバイクなんて「事故が起こる危険性を予想できた」だろ。立法、行政、司法は何をやっとるんだ 2011/06/28
どういう事故だよ具体的に言ってみろよ。今回の事故はその「予見」した事故か?
有罪じゃねーよ。
つーわけで、頭の悪いブクマが多すぎる。
参考までに一応、基本的な処理を書いておく。
まず過失の有無。
行為の良し悪しを判断する能力があれば、故意・過失は認められる。例えば小学生でも人殺しは悪いことだと分かるんだから、小学生による殺人には不法行為が成立する(3才児なら成立しないだろう)。で、この行為の良し悪しを判断する能力は、同じ年令でも、行為の種類によって変わってくる。例えば7才児にインサイダー取引の良し悪しを判断する能力はないから、この場合は不法行為責任は発生しない。
しかるに「サッカーをする場合、ボールを公道に出してはいけない」という点については、小学5年生ともなれば判断できる。つまり、小学5年生はボールを公道に出さないように気をつけて遊ばなければならない。
とすると、そのような注意を怠ったんだから過失は認められるだろう。
そしてその過失によって公道に出たボールを避けようとしてバイクの運転手が転倒した。少なくともこの段階についてまでは、因果関係を肯定できる。因果関係をどこまで肯定できるかについては後述する。
そうすると、少なくとも一定の範囲で少年に不法行為が成立する。
もっとも、5年生というと、ボールを公道に出したことによる(法的)責任についてまでは、判断能力が追いつかないかもしれない。というわけで、子供への優しさを持って、この少年には責任弁識能力(712条)が認められないとする。そうであれば、この少年自身は不法行為に基づく損害賠償責任を負わない。
もっともそのような場合「その責任無能力者を監督する法定の義務を負う者」が賠償責任を負う(714条1項)。すなわち両親だ。行為当時直接に子供を監督していたか否かは問題とならない。子供が勝手にどっかに行って不法行為を行ったときに、被害者が泣き寝入りになっては困るからな。
というわけで、晴れて両親に賠償を命じた判決の正当性が説明できた。
ところで少なくないブコメが言う「学校側の管理責任」とやらは何なのか。
普通は、損害賠償請求は直接の加害者に対して行う。しかし、加害者が一私人だと損害賠償に足るだけの金を持ってないかもしれない。そこで、絶対に取りっぱぐれない相手に請求しようと考える。
ここでふと考えてみたときに、もし学校に「管理責任」が認められれば、その管理責任違反と因果関係のある損害について賠償請求できる(国家賠償法1条,2条)。
そういうわけで、もし学校側と戦っても勝てそうであれば、より確実に金を回収できる学校を相手取って戦うわけだ。
さて、学校と直接の加害者(少年)のいずれにも損害賠償責任がある場合にはどうなるか。両者は共同不法行為を行ったと言うことができるから、両者の損害賠償責任は不真正連帯債務となる。つまり、学校と少年側、いずれに対しても、損害の全額を賠償請求できる(2賠の額を請求できるわけではない。一方から全額の支払いを受ければ、債権が消滅して他方には請求できなくなる)。
そして、学校側と少年側の間で、それぞれの責任の割合に応じて、被害者に支払った額について折半される。例えば責任の割合が(少年:学校側=6:4)だとして、少年側が全額(10割)を支払ったならば、学校側に、そのうちの4割について少年側に支払うように請求(求償)する。
というわけで、学校側の責任というのはあくまで加害者同士でやり取りする問題に過ぎない。
あと、裁判所は訴えのないことについて勝手に判断してはいけないから、原告が少年側だけを被告としているならば、学校の管理責任について判断してはならない。
で、本件の判決で問題となるのは、むしろその損害賠償の範囲だ。
実務に従えば不法行為と「相当因果関係」のある損害について、賠償責任が認められる。相当因果関係の有無は、簡単にいえば予見可能性で画定される。
公道にボールが出たら車両が事故るかもしれない。車両が事故れば骨折くらいはするだろう。だから、常識の範囲内で考えれば、少なくとも骨折については損害賠償が認められる。問題はその先だ。
骨折から認知症、認知症から誤嚥、誤嚥から窒息死という各段階は、少なくとも事実的因果関係としては、いずれも肯定しうる。骨折とボケが関係ないと言ってる奴は常識がないだけのこと。
しかし、だからといってそれが過失行為との相当因果関係を肯定しうるような予見可能性のあるものとは、必ずしも言い難いところがある。特に、骨折から認知症というプロセスは、被害者が高齢老人であるという被害者側の素因を加味して初めて予見可能であり、そうであれば予見可能性を否定するか、あるいは被害者側の訴因について損害の公平な分担の見地から過失相殺を類推するべきだと思う(私見)。もっとも、飛び出したボールによる事故が予見できるならば、その被害者が若者だと信じるほうがおかしいとして、高齢者の可能性も予見できる以上、認知症もまた予見可能だと、そういう見解が全く突拍子も無いとまでは言えない。
技術系では自分が素人だという自覚があってだんまりの人も、なぜか法律系は自分が素人だという自覚が無くなるようで。
はてなブックマーク - asahi.com(朝日新聞社):サッカーボール避け転倒死亡 蹴った少年の親に賠償命令 - 社会
tama_lion 「ボールが道路に出て事故が起こる危険性を予想できた」えええーだったらゴール置いた学校の責任じゃないの?つーか87歳なんて...いややめとこ 2011/06/2826 clicks
「予想できた」のはサッカーボールを蹴った人。なので責任は一義的にはサッカーボールを蹴った人にある。id:tama_lionは、自分の敷地内で遊んでる人間が他人に怪我を負わせたら、その責任が真っ先に自分に振りかかると思っているんだろうか?
napsucks 87って・・・もう寿命じゃんw 社会的生産性もないし命の残存価値など皆無だろw それに1500万って・・・頭おかしいわ 2011/06/284 clicks 40
1500万円も逸失利益があるわけ無いと思いながら、1500万円が逸失利益だと思っているという。ばーか。
solt-nappa ため息, 社会 うかうかサッカーの練習もできないよのなかになるな。イヤダイヤダ。 2011/06/28 18
半分正解。だがうかうかにも程がある。例えば公道を挟んでキャッチボールしたら「うかうか」じゃ済まされない。程度問題であり、遊ぶ側としては公道にボールを出さないべきだろう。
akawi フリーキックでホームランしたら人殺し呼ばわりされた挙句1500万? どう考えてもおかしいだろ 2011/06/2816 clicks
「どう考えても」の「どう」は空集合。「フリーキックでホームランした」というから悪くないように見えるが、「公道にサッカーボールを出したら交通事故が起きた」場合に何も悪く無いと思うのだろうか?
nextworker 普通、こういうときは学校の管理責任を訴えると思うんだけど、遺族はどうして少年を被告にしたんだろう。少年の両親が金持ってたのかな。 2011/06/28 56
それは「普通」じゃない。少なくとも民法の原則から言えば、責任追及は一義的には過失行為を行った者に対して行う。それが少年であるがために714条で両親に追求したわけだ。過失行為の主体ではない学校の管理責任を問うのが寧ろ裏道であり、学校=市町村からは取りっぱぐれないからという、まさに金のために殴る相手を広げる例。
しかも「少年を被告にし」てもいない。記事を見ろよ。「両親に」支払いを命じたって書いてあるだろうがよ。
こんな何一つ正しくないコメに☆が大量についているのはまさに集合恥。
お前は公園で遊ぶとき、公道にボールを出すなと教わらなかったのか?
過失はある。そして、「ある」ならば、1だろうが100だろうが、損害賠償責任を負う。被害者に過失がない以上、過失相殺はされない。
toronei news, 社会, soccer, sports これ少年側の責任なの? むしろ学校側の安全責任が問われるべき例じゃないの? これではもう子どもに球技なんて親は怖くてさせられないよなあ。 2011/06/28
少年側の責任だろ。少年側に過失がなかったらどうして学校側に責任があるんだよ。
学校側に責任があるとしても、それは少年との共同不法行為ということになるから、少年側の損害賠償責任はびた一文免れない。
Kou_RYU 社会, 裁判, ため息 東電の原発事故でも助け舟がでるのに、19歳がボールを蹴ったら1500万円支払えと言われる国ニッポン。年寄りを狙って蹴ったわけじゃないんでしょ? 2011/06/28
年寄りを狙ってないから過失が無いと?ってかボール蹴ったの19歳じゃねーよ。19歳だったら両親じゃなくてガキに直接請求だっつーの。
sasurai7 裁判, 事故 裁判を起こすのなら、サッカーやってた少年より、学校の施設管理責任(ゴール裏にボール飛び出し防止用のネットを張る必要があったか等)が問われるものでは? 2011/06/28
前述の通り。つーか、加害者より加害者が利用してた施設っていうその発想が馬鹿。
kz78 自分ちの庭で壁打ちでもやってたのかと思ったら、校庭でゴールに向かってボール蹴ったのか。それで賠償責任が発生するのはきつくないか。 2011/06/2813 clicks
自分ちの庭と校庭で何が違うんだよ。
相当因果関係の認定は微妙ではある(後述)。が、全然関係なくはないだろ。
Cai0407 これはひどい なんでボール蹴った少年の責任が問われるの?学校の管理責任のほうが大きいと思うんだが。しかもボール避けて転倒→骨折→認知症発症→誤嚥性肺炎で死亡→1500万賠償とつなぐのは無理じゃね? 2011/06/2838 clicks
「のほうが大きい」とか言ってる時点で馬鹿。共同不法行為だから学校と少年の両者が全額の損害賠償責任を負う。つまりどっちが大きいとか関係ない。
施設管理「も」問題になりうるに過ぎない。
bbk0524 これはひどい 87歳が街中でバイク乗り回すことの社会的責任は一切問われないのかよ。老人のゴネ得社会だなこの国は。 2011/06/28 67
なんで87歳(86歳だがな)が街中でバイク乗っちゃいけないんだ?
redfox2667 87歳で認知症になったのが子供のせいか? 因果関係が怪し過ぎ。 2011/06/2833 clicks
あとで書こうと思ったが、ここで書いてしまおう。今回の件と関係なく、しゃっきりしてた老人が骨折して歩けなくなった途端に認知症を発症するというのは、かなり頻繁に見られる症例だ。そうすると「認知症になったのは骨折のせい」とは言いうる。そして今回の骨折は少年のせいだから、事実的因果関係は肯定できる。
ただし87歳ともなればもともとボケやすい状態にあったといえる。それゆえ「被害者の素因」によって722条2項の趣旨に照らして損害額を減じたのだろう。記事にそれらしき言及がある。
絶対おかしいとまでは言えない。もちろん報道を鵜呑みにしない姿勢は良いのだが、存在しない情報を求めるだけでなく、報道の意味を正しく咀嚼することも必要だ。
いやいや、(ボケ→窒息はともかく)事故ぐらいは予測しろよ。公道にボール出したら事故ぐらい起きるわ。「ゴールに向かって蹴ったボールが外れるわけがない」ってか?日本代表になれよ。
hatomaguro これはひどい 転倒→骨折→入院で認知症進行→誤嚥性肺炎→死亡の流れはよくある話。"学校"側が転倒までの責任を負うなら判るけど。。。 2011/06/28
なぜ加害者をおいて真っ先に学校側になるんだよ。その方がわかんねーよ。
chi-bit これ重いよなぁ。これじゃ外で遊べなくなる可能性があるし、それを言うなら小学校側の責任は? 2011/06/28
前述のとおり。あるとしても共同不法行為。
okgwa 酷なようだが、87でバイクに乗るリスクを過小評価してた遺族側の過失のほうがよほど大きいと思う。しかしこの判事、事故と認知症との因果関係をよく認めたなあ。司法の常識ではあり得ないという印象。 2011/06/2813 clicks 67
87でバイクに乗ることが「過失」だって?んなわけねーだろ。「司法の常識」とかいうんなら参酌できる「過失」の意味を理解しとけよ。
ERnanchan これって、賠償命令ひどくねえ? 少なくとも記事の文面だけからみれば。トンデモ判決かどうかの第三者評価が必要そうな第一印象。 2011/06/28137 clicks
賠償「命令」?少なくともお前に「第三者評価」は無理だな。
pwiser これで1500万円はヒド過ぎで加害者は不可抗力、学校で練習中にボールが外に出たってことなんだから払うのもどうかと思うわ。それ以前に87歳でバイク運転してた爺さん側が一番落ち度あるから被害者側屑過ぎて笑えない。 2011/06/28
不可抗力の意味を調べて出なおせ。1500万円「は」ヒド過ぎっていうんなら1万円なら良いんか?それなら不可抗力じゃねーよな?
つか何で「学校で練習中にボールが外に出たってことなんだから払うのもどうかと思う」んだよ。練習無罪ってか?
ちげーよ。本田だって外しまくってんだろーが。「せめて公道にボール出すな」だ。
suyntory_junnama jiken p なんて判決だ!! 少年の行為より、87歳でバイクに乗って出かける行為の方が問われるべき。何故家族はバイクに乗る事を止めさせなかったのか、何時か他人を巻き込む事故につながると予測しなかったのか。其方の方 2011/06/2810 clicks
何を「問われる」ってんだよ。他人を巻き込む事故?他人に巻き込まれたんだよ真逆じゃねーか。
shukaido170 asahi, education 子「ママ、サッカー行ってくる」母「サッカーなんかして誰かに怪我させたら大変だから、DSやってなさい!」な世の中になるんだね…。 2011/06/2813 clicks
nippondanji さっぱり理解できない。入院生活が認知症に悪影響を及ぼしたのなら病院を訴えるべきだろ。老人が入院したら認知症になるなら誰も入院出来なくなるだろ。 2011/06/28143 clicks
ftype パソコンでニートになったのでパソコン会社を訴える、オンラインゲームで人生失ったので運営を訴える、2chで人生棒に降ったのでひろゆきを訴えることもできるようになりますか? 2011/06/28 19
ぜんっぜん関係ないじゃん。
BRITAN 極論、校庭から出るのを防げなかった学校の柵が悪いんじゃないの?飛ぶ方向制御なんてプロでないと無理だよw 2011/06/2821 clicks
そう思うんならそんな場所でサッカーするなってことだ。学校が悪くて少年は毫も悪くないってか?ばーか。
TakamoriTarou 社会, 事故 訴えるなら子どもじゃ無くてネットを張ってなかった学校側なんじゃないかな。子どもが蹴ると超える事が予想できるような状況なら、学校側がそういう状況を予想できるはずだし回避義務があるような気がする。 2011/06/28
rakko74 普通に考えれば学校の責任となるはずだが、どうしてこんな判決になるのかよくわからん。 2011/06/28
mmsshhrr これはひどい 「蹴り方によっては道路に出ることを予測できた」( ゚д゚)ポカーン 2011/06/2814 clicks
お前は予想できないのか?
hi_kmd これがアリなら傷害事件も殺人事件に出来そうな気がするぞ。 2011/06/28
しねーよばーか。民事だし過失だし、何一つ記事と関係ないだろ。
naga_sawa そもそもボールが存在する以上、道路にボールが出る可能性は0にはならない/すなわち、急いで全国の学校・家庭・販売店etcからサッカーボールを撤去しろ!間に合わなくなっても知らんぞー!! 2011/06/28
いや0になるだろ。
You-me 事故, 司法 これはもし事故の責任を問うなら、損害の公平な分担を求めるなら両親じゃなく施設管理者じゃないかなぁ/老人の歩けなくなるような事故と痴呆の関係は割と認められてたような気がしなくもないけどどーだったろ 2011/06/28
だから施設管理者はせいぜい共同不法行為責任。被告になってないなら不真正連帯債務だから施設管理者なんて出てこない。「損害の公平な分担」「施設管理者」なんて言葉を使ってみても、民法知らないのな。
「どんなに」は空集合。
shinkichi1986 記事まとめ このガキに罪があるわけ無いだろ、しかも当時小学生だぜ?むしろ学校側の不十分な安全対策が原因だな。だいたい運動場ではボールで遊んでる生徒が多いのに学校の囲いの金網って低いんだよなぁ。しかも外は通勤道路。 2011/06/28
10歳ともなれば、ボール遊びについて、責任を弁識する能力は書くとしても、事理を弁識する能力はある。
kaeru333 これはひどい, 裁判 裁判官は世界がどんな感じで見えてんだろ・・・ それにしても、なぜ遺族は少年を訴えたんだろ。 2011/06/2845 clicks
被告は少年じゃなくて両親な。そしてそれは極めて当たり前の話だ。加害者は少年なんだから。
ze-ki news 色々おかしい。だいたいバイクの87歳男性、足骨折しただけなのになんで認知症と結び付けられてるのか分からん。どういうロジックだよ。 2011/06/2864 clicks
お前は認知症をどれだけ知ってるんだ?前述のとおり、骨折から認知症発症はかなりよくあるパターンだ。
weekly_utaran なぜ学校側の施設管理責任ではないのか、そもそもこの年齢でバイクに乗ることによる事故の危険性は?高裁で逆転判決が出て欲しい、そうしないと全国の学校の校庭でサッカー禁止になる 2011/06/28112 clicks
原告が少年の過失責任を問うたから。問われてないことについて裁判所は答えてはいけない。被告でもないのに急に賠償責任負わせられたらおかしいと思うだろ?
W53SA これはひどい 「判決は『蹴り方によっては道路に出ることを予測できた』と指摘」裁判官の常識のなさに危機感を覚える。学校ではなく親を責める遺族側の発想を是認するのもおかしい。 2011/06/2814 clicks
いや、ボール遊びするときは公道にボール出さないように気をつけるのが「常識」だろ。お前の常識のほうが実害付きで危険だよ。
そして学校ではなく親を責めるのが民法の原則。なんで場所貸してただけで、蹴り出した張本人(の代位責任)を負うのか、そっちの方が例外的な考え方だ。
kumakuma1967 わからん, 児童の権利侵害 100%少年に責任がないとこの額は出ない気がするが、ボールから死亡まで予期できる裁判長はニュータイプか?事故は愛媛なのになぜ大阪地裁?田中敦裁判長名でググると信楽事故のトンデモ判決も出てきた。http://goo.gl/AVqzd 2011/06/28
100%じゃなかったって記事に書いてあるだろ。
つーか裁判所の管轄について疑義を呈してる時点でテメーのほうがよっぽどトンデモだよ。管轄は民訴法で細かく定められているが、今回はおそらく不法行為の結果(死亡)発生地だろう。不法行為においてはできるだけ被害者に都合よく管轄を認めるのが民訴法の立場で、その立場はまったくもって正当だ。
as62 民事は、一方の主張に対して他方が否定主張をせずにほっとくと事実認定されてしまうから、単に少年側の法廷戦略が下手すぎなだけなような。常識的に負けるわけねえと弁護士つけてなかったとか、あるんじゃないか? 2011/06/28
7年もかかってるのに弁論主義で処理ってのは無いだろ。まして本人訴訟なら求釈明する。
toaruR 少年や両親に過失があるなら、爺さんとその家族にもありそうなもんだけど。せめて、学校のせいだろ……地裁にしても酷い 2011/06/28
なんでそこで「せめて、学校のせい」がボール蹴り出した奴より先に来るんだよ。
「使えばいい」って、使えねーだろ。まさか民事に裁判員制度導入しろってか?悪夢もいいとこだ。
iwamototuka 裁判, 事故 そこまで小学生(当時)個人に責任持たせるのかよ。うかつに校庭でサッカーもできないな 2011/06/289 clicks
責任の主体は親、な。
nobuharasawa バイクでこけて死んだのかと思ったら、足を折っただけ。それで1500万円はあり得ん RT@ 2011/06/2810 clicks
「足を折っただけ」なら「1500万円はあり得ん」のに、なんで「足を折っただけ」で「1500万円」の判決が出たと思うんだ?
yukimi1977 これはひどい ボールが原因で死亡事故を起こしたわけじゃないのに。もしそうでも学校の過失で少年じゃない。ぐぐったらこの裁判官、別の判決でも因果関係が?な過失を認めてる。 2011/06/28
少年じゃないって理屈がおかしい。過失がなくってボールが公道に出るかっつーの。そんなんで責任負わされてたら校庭でボール遊び禁止だろ。
Sophitia 「蹴り方によっては道路に出ることを予想できた」のは、ボールを蹴った本人じゃなくて、そんな環境下で蹴ることを許した学校側の責任でしょ。その辺りを取り違ったおバカな判決。絶対控訴すべき! 2011/06/28
いや、本人だろ。なんで本人が予想できないと思うんだ?
また馬鹿か。
これはその通りで、結構な人が東電から賠償もらえるんだよ。東電のせいで倒産とか自殺とか、ちゃんと賠償請求できるってことをアナウンスしてたらもっと減ってるはず。
daisuk-com *その他, 裁判 どう考えてもこれはひどい。施設管理の学校じゃなくて子供側を訴えたのかわからん。 2011/06/2812 clicks
suzuki_kuzilla 東京電力が原発放置したせいで就職活動が長引き巨額の交通費支払いと長期にわたって授業を受けられないという損害を受けました。って訴訟する? / asahi.com(朝日新聞社):サッカーボール避け転倒死亡 蹴った少年の親 2011/06/28
これはちょっと無理筋かも、と思う。
snowdrop386 司法 おかしな判決だ。事故と死因の相当因果関係がなく、さらに学校管理下での行為によるものなのに保護責任を親と安易に決めている点が特におかしい。 2011/06/28
いや、保護責任じゃなくて714だから親なんだろ。子どもの居場所ごとに714の主体が変わるとでも?
Marin_MTB 事故, 裁判, これはひどい これ認めちゃダメでしょう。校外にボールが飛び出さないような校庭をつくるしかないじゃん。 2011/06/2811 clicks
程度問題ではあるが、そういう校庭が普通だろ。ゴールの方向に出口があるわけじゃなければ、出口方向に転がったボールは大して勢いは無く、外に出る前に走って追いつく。
NOV1975 司法 これは検察と弁護側とどっちの質が悪いの?司法と併せて三冠王か? 2011/06/2868 clicks
hk2mr_hu 社会 サッカーボールを避け転倒→足を骨折→認知症になる→食べ物を気管につまらせ死亡。これでどうして死亡責任まで問われるかが理解できない。しかも問われるとしたら少年の責任ではなく、学校の管理責任だろう。 2011/06/28
だからPermalink | トラックバック(1) | 00:19
>とりあえず、メッセージウィンドウ送りの下三角とエンターキーを$.clickと$.keyupでフックするんだ。
>それで使いやすくなると思われ。
フック……? 曲げる? 引っ掛ける? フックボタン?
もうホンマにすみません。こういう基礎用語も分からないのです。
「フックする」の検索でwikipediaとかヒットしたけど、いまいち分かりません……。
でも、「メッセージウィンドウ送りの下三角」をクリックして進んだりすると、使いやすいかもしれませんね!
あ、でも下三角は隠れているところがあるので、メッセージ枠のどこかをクリックで移動させてみます。
「進む」クリックと同じことをする」
で、keyupですが……これは何か、キーを押して離したら動くみたいですね。
「必殺! 手当たりしだい検索して解説のコードを見つけてコピペする!!」
JavaScript + Ajax 実践サンプル集 - jQuery 1.4.1のanimate()の使い方
$(function() {
$(document).keyup(function(event) {
if (event.keyCode == 13) { // enter key
こんな感じで書くんでしょうかね?
モノマネして書いたら、なんか動いたのでたぶんOKだと思われます。
……いつもながらヒドイ方法です。
あと、ifの中にifとか入るのかな……と、気になったんで、実験してみたら動きますね。おー、面白い!
というわけで、ドラクエサイトは、エンターキーを押せば以下の動きをするようになりました。
1・最初の表紙が出ているなら、表紙が消える
2・そうでないなら、「すすむ」クリックと同じ動きをする
おお、なんかパワーアップ!
てか、エンターキーとか、そういうのでもjQueryって動くんですね。
矢印キーとか組み合わせれば、なんかゲームっぽいのも作れそうな……。
「もどる」を押した後にエンターで進もうとすると謎の動きをするんです。
もう一度「すすむ」などで移動すると、またリターンの移動ができるのですが、なんでしょうね。
いろいろ調べてみたんですが分かりません。またゆっくり勉強して解決策を探してみます。
なので、「エンターで進む」は隠しコマンドみたいな感じにして、このエラーもふくめて残しておきます。
誤字脱字は勘弁な。
I was at home the other night inth middle of my dinner when the phone rang.
ME:Hello.
ME:Thie is AT&T,
ME:Is this AT&T.?
AT&T:Yes! This is AT&T, may I speak to Mr.Byron, please?
ME:OK, hold on.
At this point I put the phone down for a solid 5 minutes thinking that, surely, this person would have hung up the phone. I ate my salad. Much to my surprise, when I picked up the receiver, they were still waiting,
ME:Hello?
ME:May I ask who is calling, please?
ME:This is AT&T?
ME:The phone company.
ME:I thought you said this was AT&T.
AT&T:Yes, sir, we are phone company.
ME:I already have a phone.
AT&T:We aren't selling phones today, Mr.Byron. We world like to offer you 10 cents a minute, 24 hours a day, 7 days a week, 365 days a year.
ME:Now, that's 10 cents a minute, 24 hours a day?
AT&T:(getting a little excited at this point by my interest) Yes, sir, that's right! 24 hours a day!
ME:7 days a week?
ME:I am definitely interested in that! Wow!! That's amazing!
AT&T:We think so!
ME:That's quite a sum of money!
AT&TYes, sir, it's amazing how it adds up.
ME:OK, so will you send me checks weekly, monthly or just one big one at the end of the year for the full $52,560; and if you send an annual check, can I get a cash advance?
AT&T:Excuse me?
ME:You know, the 10 cents a minute.
AT&T:What are you talking about?
ME:You said you'd give me 10 cents a minute, 24 horus a day, 7 days a week, 365 days a year. Thats comes to $144 per day, $1008 per week and $52,560 per year, I'm just interested in knowing how you will be making payment.
AT&T:Oh, no sir. I didn't mean we'd be peying you, You pay us 10 cents a minute.
ME:Wait a minutes. how do you figure that by saying that you'll give me 10 cents a minute, that I'll give YOU 10 cents a minute? Is this some kind of subliminal telemarketing scheme? I've read about things like this in the Enquirer, you know.
AT&T:No, sur, we are offering 10 cents a minute for
ME:THERE YOU GO AGAIN! Can I speak to supervisor please?
AT&T:Sir, I don't think that necessary.
ME:I insist on speaking to supervisor!
AT&T:Yes, Mr.Byron. Pleas hold.
At this point, I begin trying to finish my dinner.
ME:Yeah.
SUPERVISOR:I understand you are not quite understanding our 10 cents a minute program.
ME:is This AT&T?
SUPERVISOR:Yes, sir, it sure is.
ME:(I had to swallow before I choked on my food, It was all I could do to suppress my laughter and I had to be Careful not to produce a snort.) No, actually, I was just waiting for someone to get back to me so that I could sign up fo the plan.
SUPERVISOR:Ok, no problem, I'll transfer you back to the person who was helping you.
ME:Thank you.
I was on hold once again and managed a few more monthfuls. I need to end this conversation. Suddenly, there was an aggravated but polite voice at the other end of the phone.
AT&T:Hello, Mr.Byron, I understand that you are interested in sighning up for our plan?
ME:No, but I was wondering - do you have that "Friend and Family" thing because I'm an only child and I'd really like to have a little brother...
最新はこれでいいんですか?
誰も話題にしてないので俺だけかな
reblogcount しか動いてなかったので自力で直そうと頑張ってみたが、
一応動画の再生と画像の拡大2種の3つに関しては動くようにできた
likeは使ってないのでとくに見てませんすみません
if (img[n].style.display != 'none') { click($X('./a', img[n])[0]); return stdin; } else{ click($X('./preceding-sibling::a[1]', img[n])[0]); return stdin; }
および
if (mov[n].style.display != 'none') { click($X('.//a', mov[n])[0]); return stdin; }
これは何をしてるんでしょうか?
残したままだとどうもうまくいかなかったので丸ごと削ってしまった
クリックすべき要素を直接XPath指定、にしたんだけどマズイ?
以下patchです
@include に www.tumblr.com/queue* も勝手に足してしまいました
どなたかまともにしてくださいm(__)m
--- 20101127_play_on_tumblr.user.js +++ 20110402_play_on_tumblr.user.js @@ -6,6 +6,7 @@ // @include http://www.tumblr.com/show/* // @include http://www.tumblr.com/tumblelog/* // @include http://www.tumblr.com/tagged/* +// @include http://www.tumblr.com/queue* // ==/UserScript== (function() { @@ -43,25 +44,15 @@ command: function(stdin) { try { if (!stdin.length) stdin = execute('current-node'); - var img = $X('.//div[starts-with(@id, "highres_photo")]', stdin[0]); + var img = $X('.//img[contains(@id, "thumbnail_photo_")]', stdin[0]); for (var n = 0; n < img.length; n++) { - if (img[n].style.display != 'none') { - click($X('./a', img[n])[0]); - return stdin; + click(img[n]); } - else{ - click($X('./preceding-sibling::a[1]', img[n])[0]); - return stdin; - } - } - var mov = $X('.//div[contains(@id,"watch_") and .//a]', stdin[0]); + var mov = $X('.//img[contains(@id,"video_thumbnail_")]', stdin[0]); for (var n = 0; n < mov.length; n++) { - if (mov[n].style.display != 'none') { - click($X('.//a', mov[n])[0]); - return stdin; + click(mov[n]); } - } - var timg = $X('.//img[contains(@src,"tumblr.com/tumblr_")]|.//img[@class="inline_external_image"]', stdin[0]); + var timg = $X('.//img[contains(@class, "inline_external_image")]', stdin[0]); for (var n = 0; n < timg.length; n++) { click(timg[n]); }
私も少し前から無料アカウントで使っているのですがちょっと気になったことがあります。
それは表示される広告の右上に×ボタンがあってそれをクリックすると「広告を消したければ有料アカウントにアップグレードしてください」的なメッセージが出ること。
どうなんでしょうこれ。
広告を表示すること自体ではなく広告は消せないのにわざわざ×ボタンを表示してクリック誘導するやり方。
「Click Here」ってどぎつい色で書いてあるでかいバナーと同じ臭いがする。
要するに「古い」やり方に見える。
もうちょっとスマートにアップグレードを促すやり方はないのかなと思います。
いわゆるフリーミアムなサービスは無料でもいかに魅力あるサービスを提供するかがけっこう重要だと思っているので。
まぁ広告一つじゃ何とも言えないんですけどね。
参考SS
http://www.info-zzzzzzzzzzzzzzzzz.jp/click.php?aid=xxxxxx&iid=aaaaa
こういう感じのリンクを張った増田の投稿が複数散見されるんだけど、これって何をしたいんだろう?
リンク先のaid=xxxxxxの部分が複数のエントリで共通してるんだけど、これはこのリンクを張ってる人の情報商材のサイトでのidだよね?
情報商材サイトに通報されれば、迷惑行為として情報商材のサイトから追い出されると思うけど。
特にはてなは詳しくてうるさい人が多いから、すぐにスパムとして報告されちゃうよ。
連休の合間の日曜日にもこの界隈には人が溢れているから、たぶん、もう二十件くらい報告されてるんじゃないかな。
儲かるどころか、宣伝行為をしたとして、料金を請求されたりしても文句は言えないかも。
idを持っている本人が投稿してるんだったら、もうやらないのがお勧めだよ。
もしくはこのidの人に恨みがあって、idを持ってる本人と別の人がやってるのかなあ。
それにしても、非生産的な行為なので止めた方が良いと思うよ。
どちらにしても、どうでもいいけど。
YourFileHostのCAPTCHA画像をなんとかするの続きの続き。
まぁ、なんというか、一応できたので張ってみる。微妙な出来栄えだけど。
decaptcha.rbと同じディレクトリに置いて適当に動かしてみてください。
どっかにいいRSSがないかなぁ。。。
しかし、CAPTCHA画像を相手にしてた時の方が楽しかったなぁ。。。
あと、添削とかいろいろ歓迎です。
なぜか&が&amp;に置き換えられてるみたいなので、適当に&に読み替えてください。
#!/usr/local/bin/ruby $LOAD_PATH << File::dirname(File::expand_path($0)) require 'rubygems' require 'rss' require 'mechanize' require 'decaptcha' # require 'ruby-debug' # require 'pp' DESTDIR = 'files' TMPDIR = '/tmp' class Downloader COOKIE_URI = 'http://www.yourfilehost.com/media.php?cat=video&file=%s' DOWNLOAD_URI = 'http://www.yourfilehost.com/downloadlink.php?cat=video&file=%s&adult=1' VERBOSE = false DEBUG = false def self.fetch(file, destdir) puts "Fetching file: #{file}" destfile = destdir + '/' + file if test(?e, destfile) then puts ' - Already exists. skip' puts return nil end # # Initialize Mech # mech = WWW::Mechanize.new mech.user_agent_alias = 'Windows IE 6' mech.max_history = 3 mech.open_timeout = 15 mech.read_timeout = 3 # # get cookie # uri = COOKIE_URI % file page = mech.get(uri) # # Challenge against CAPTCHA # uri = DOWNLOAD_URI % file page = mech.get(uri) for i in 0...3 captcha_path = (page/'img[@height="38"]').attr(:src) captcha_uri = 'http://www.yourfilehost.com/%s' % captcha_path gif = mech.get_file(captcha_uri) open("#{TMPDIR}/captcha.gif", 'w') {|fd| fd.write(gif) } mech.back code = DeCAPTCHA.decode("#{TMPDIR}/captcha.gif") File.unlink("#{TMPDIR}/captcha.gif") if code.nil? then puts ' - CAPTCHA decode failed. retry' if VERBOSE next end form = mech.page.forms.first form.verify = code page = mech.submit(form) break unless page.links.empty? end if page.links.empty? then puts ' - Failed 3 times. Try another one.' puts return nil end # # download # puts " - Downloading: #{page.links.first.href}" if DEBUG retry_count = 0 video = nil begin video = page.links.first.click rescue Timeout::Error => evar retry_count += 1 if retry_count < 5 then puts " * Timedout, retry" if VERBOSE retry end raise evar end unless video.instance_of?(WWW::Mechanize::File) then if DEBUG then puts " - Something wrong while downloading. skip." puts end return nil end video.save(destfile) return destfile end end # # main # [DESTDIR, TMPDIR].each do |dir| if !test(?d, dir) or !test(?w, dir) then puts "#{dir}: Directory not exists or cannot write." exit end end files = [] # collect URIs from RSS RSS_URI = [ ['http://www.yourfilehost.com/make-rss.php?range=day&af=off', lambda {|rss| rss.items.map {|x| x.link }}, ], ] RSS_URI.each do |uri, preprocessor| rss = RSS::Parser.parse(uri) uris = preprocessor.call(rss) #=> Array of URI of YourFileHost uris.map {|x| /file=([^&]*)/.match(x).to_a[1] }.each do |file| # next if file !~ /\.wmv/ # uncomment it if you need only wmv files << file end end files.uniq! # download files.each do |file| begin Downloader.fetch(file, DESTDIR) rescue SystemCallError, Timeout::Error => evar puts " - error (#{evar.to_s}). skip." puts end end __END__
せっかく書いたから匿名でのせてみるよ
使い方は
必要なものを gem で取ってくるにはこうすればいいよ
長すぎてelispが消えたから続きがあるよ
@echo off setlocal set WD=%~dp0 cd /d %WD% ruby get_movies.rb ruby get_images.rb ruby create_m3u.rb
user: ユーザID password: パスワード ids_file: ids.txt done_file: ids_done.txt movies_dir: movies log4r_config: pre_config: global: INFO loggers: - name: app type: Log4r::Logger level: INFO outputters: - STDOUT - FILE outputters: - name: STDOUT type: Log4r::StdoutOutputter formatter: type: Log4r::PatternFormatter pattern: "%d [%l] %C - %M" date_pattern: "%H:%M:%S" - name: FILE type: Log4r::FileOutputter filename: "#{LOGDIR}/sangels.log" formatter: type: Log4r::PatternFormatter pattern: "%d [%l] %C - %M" date_pattern: "%Y-%m-%d %H:%M:%S"
require 'fileutils' require 'logger' require 'mechanize' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" require "#{BASEDIR}/sangels" $config = load_config(BASEDIR) prepare_logger(BASEDIR) $log = new_logger("get_movies") WWW::Mechanize.log = new_logger("mechanize") WGet.log = $log class IDFile def initialize(file) @file = file unless File.exist?(@file) Fileutils.touch(@file) end end def ids(contains_comment = nil) File.open(@file) {|io| io.to_a.map {|x| x.chomp }.select {|x| if x.empty? nil elsif contains_comment true else not /^\s*\#/ =~ x end } } end def add(id) ids = ids(true) unless ids.any? {|x| x == id} write(ids + [id]) end end def delete(id) ids = ids(true) if ids.any? {|x| x == id} write(ids - [id]) end end def write(ids) File.open(@file, "w") {|io| ids.each {|x| io.puts x} } end end $log.info("BEGIN #{$0} ================") exit_code = 0 begin ids_file = IDFile.new($config.ids_file) done_file = IDFile.new($config.done_file) movies_dir = $config.movies_dir wget = WGet.new sangels = SAngels.new sangels.login($config.user, $config.password) ids_file.ids.each {|id| begin movies = sangels.movies(id) rescue SAngels::Movies::InvalidMoviesError $log.warn("invalid movie id: #{id}") next end dir = File.expand_path(id, movies_dir) movies.each {|link| wget.retrieve(link.href, dir) } expected = movies.movie_links.map{|x| File.basename(x.href)} actual = Dir.glob("#{dir}/*").map {|x| File.basename(x)} if (expected - actual).empty? done_file.add(id) ids_file.delete(id) end } rescue => e $log.error(e) exit_code = 1 end $log.info("END #{$0} (#{exit_code}) ================") exit exit_code
require 'fileutils' require 'logger' require 'mechanize' require 'ostruct' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" require "#{BASEDIR}/sangels" $config = load_config(BASEDIR) prepare_logger(BASEDIR) $log = new_logger("get_images") WWW::Mechanize.log = new_logger("mechanize") WGet.log = $log $log.info("BEGIN #{$0} ================") exit_code = 0 begin movies_dir = $config.movies_dir sangels = SAngels.new sangels.login($config.user, $config.password) thumbnails = sangels.thumbnails Dir.glob("#{movies_dir}/*").each {|dir| next unless File.directory? dir id = File.basename(dir) url = thumbnails.url(id) unless url $log.warn("#{id} is not found") next end path = File.expand_path("00_thumbnail#{File.extname(url)}", dir) next if File.exist? path $log.info("retrieving #{url}") thumbnail = thumbnails.get_file(id) File.open(path, "wb") {|io| io.write(thumbnail)} } rescue => e $log.error(e) exit_code = 1 end $log.info("END #{$0} (#{exit_code}) ================") exit exit_code
BASEDIR = File.dirname($0) require "#{BASEDIR}/util" $config = load_config(BASEDIR) movies_dir = $config.movies_dir Dir.glob("#{movies_dir}/*") {|dir| next unless File.directory? dir name = File.basename(dir) files = Dir.glob("#{dir}/*.wmv").sort File.open("#{movies_dir}/#{name}.m3u", "w") {|io| files.each {|file| io.puts "#{name}/#{File.basename(file)}" } } File.open("#{dir}/00_movies.m3u", "w") {|io| files.each {|file| io.puts "#{File.basename(file)}" } } }
require 'mechanize' require 'hpricot' BASEDIR = File.dirname($0) require "#{BASEDIR}/util" class SAngels HOST = "real2.s-angels.com" LOGIN_URL = "http://#{HOST}/member/" INFO_URL = "http://#{HOST}/teigaku/item.php" THUMBNAILS_URL = "http://#{HOST}/teigaku/" THUMBNAIL_URL = "http://#{HOST}/images/default/thumb/" def initialize() @agent = WWW::Mechanize.new end def login(user, password) login_form = @agent.get(LOGIN_URL).forms.find {|form| form.fields.any? {|field| field.name == "frmLoginid"} } login_form.frmLoginid = user login_form.frmPw = password @agent.submit(login_form) end def movies(id, no_validate = nil) Movies.new(@agent, id, !no_validate) end def thumbnails Thumbnails.new(@agent) end class Thumbnails def initialize(agent) @agent = agent doc = Hpricot(@agent.get_file(THUMBNAILS_URL)) elems = doc.search("div[@class=realthum]/a") @links = Hash( elems.map {|elem| href = elem["href"] id = $1 if /ID=(.+)/ =~ href url = elem.search("img")[0]["src"] [id, url] }) end def get_file(id) @agent.get_file(url(id)) end def url(id) @links[id] end def exist?(id) url(id) end end class Movies class InvalidMoviesError < StandardError end def initialize(agent, id, no_validate) @agent = agent @id = id if !no_validate && !valid? raise InvalidMoviesError end end def info_page_url "#{INFO_URL}?ID=#{@id}" end def info_page @agent.get(info_page_url) end def movies_page @agent.click(info_page.links.find {|link| /P=10/ =~ link.href}) end def movie_links movies_page.links.select {|link| /wmv$/ =~ link.href }.sort {|a, b| File.basename(a.href) <=> File.basename(b.href) } end def valid? info_page.uri.to_s == info_page_url end def each(&block) orig_links = movie_links orig_links.each {|orig_link| link = movie_links.find {|l| File.basename(l.href) == File.basename(orig_link.href)} block.call(link) } end end end
require 'log4r' require 'log4r/yamlconfigurator' require 'singleton' require 'fileutils' require 'ostruct' def Hash(a) Hash[*a.flatten] end def load_config(basedir) OpenStruct.new(File.open("#{basedir}/config.yaml") {|io| YAML.load(io)}) end def new_logger(name) Log4r::Logger.new("app::#{name}") end def prepare_logger(basedir, logdir = nil) logdir ||= basedir Log4r::YamlConfigurator["LOGDIR"] = logdir Log4r::YamlConfigurator.load_yaml_file("#{basedir}/config.yaml") end class NullObject include Singleton def method_missing(message, *arg) NullObject.singleton end end class WGet class << self attr_accessor :log def initialize super @log = NullObject.singleton end end def log self.class.log end def retrieve(url, dir) FileUtils.mkdir_p(dir) file = File.expand_path(File.basename(url), dir) if File.exist?(file) log.info("already retrieved #{url}") return true end tmp = "#{file}.part" log.info("retrieving #{url}") ret = system("wget", "-c", "-O", tmp, url) if ret log.info("retrieving succeeded #{url}") File.rename(tmp, file) else if $? == 0x020000 # Ctrl-C exit($?) else log.error("retrieving failure #{url} (#{$?})") end end return ret end end
Good day. You have received an eCard To pick up your eCard, choose from any of the following options: Click on the following link (or copy & paste it into your web browser): http://mdoctornet.com.br/e-card.ex[xxx]e Your card will be aviailable for pick-up beginning for the next 30 days. Please be sure to view your eCard before the days are up! We hope you enjoy you eCard. Thank You!
まあすごいな。SPAMメールはちゃんと見たことはほとんどなかったのだが、直接exeを叩かせようとする。
某巨大掲示板でしか行われていないことだと思っていたのだが、わーるどわいどにわいるどだ。
古典的なんだろうけど。
結局概要表示機能追加した。unsafeWindow使いまくり。大丈夫かいな。
// ==UserScript== // @name Hatena Bookmark Tree Expander // @namespace http://anond.hatelabo.jp/ // @include http://b.hatena.ne.jp/entry/* // ==/UserScript== // <div class="info"> // <ul id="similar_entries" class="bookmarklist"> // <li></li> // </ul> // </div> // <div class="info"> // <ul id="referred_entries" class="bookmarklist"> // <li id="referred-entry-\d+"></li> // </ul> // </div> // <div class="info"> // <ul id="relation_diary" class="bookmarklist"> // <li id="diary-{id}-\d+"></li> // </ul> // </div> (function() { function main() { loadBookmarkCommentViewer(); similar.prototype.rootAppend(); referred.prototype.rootAppend(); } function HBTM(target) { this.target = target; this.targetXPath = "//ul[@id='"+target+"']/li"; this.targetRegExp = new RegExp('<ul id="'+target+'"(.|\\s)*?</ul>'); } HBTM.prototype = { openIcon: '<img width="15" height="15" class="icon" style="opacity: 0.6" src="http://anond.hatelabo.jp/images/common/open.gif"/>', closeIcon: '<img width="15" height="15" class="icon" style="opacity: 0.6" src="http://anond.hatelabo.jp/images/common/close.gif"/>', loadingIcon: '<img width="13" height="13" class="icon" src="http://anond.hatelabo.jp/images/common/loading.gif"/>', commentIcon: function(url) { return '<img class="hatena-bcomment-view-icon" src="http://r.hatena.ne.jp/images/popup.gif" onclick="iconImageClickHandler(this, \''+url+'\', event);">' }, create: function() { this.comment = document.createElement("span"); this.comment.innerHTML = this.commentIcon($X("string(descendant::a/@href)", this.node).value()); this.open = document.createElement("a"); this.open.href = "javascript:void(0)"; this.open.innerHTML = this.openIcon; this.close = document.createElement("a"); this.close.href = "javascript:void(0)"; this.close.innerHTML = this.closeIcon; this.close.style.display = "none"; this.loading = document.createElement("span"); this.loading.innerHTML = this.loadingIcon; this.loading.style.display = "none"; this.node.appendChild(this.comment); this.node.appendChild(document.createTextNode(" ")); this.node.appendChild(this.open); this.node.appendChild(this.close); this.node.appendChild(this.loading); this.open.addEventListener("click", bind(this.openAct, this), false); this.close.addEventListener("click", bind(this.closeAct, this), false); }, openAct: function() { this.open.style.display = "none"; if (this.tree) { this.tree.style.display = "block"; this.close.style.display = "inline"; } else { this.loading.style.display = "inline"; this.load(); } }, closeAct: function() { if (this.tree) { this.tree.style.display = "none"; this.close.style.display = "none"; this.open.style.display = "inline"; } }, load: function() { var url = $X("string(descendant::a[starts-with(@href, '/entry/')]/@href)", this.node).value(); GM_xmlhttpRequest({ method: "GET", url: "http://b.hatena.ne.jp"+url, onload: bind(this.loadCallback, this) }); }, loadCallback: function(result) { var match = result.responseText.match(this.targetRegExp); if (match) { var sandbox = document.createElement("div"); sandbox.innerHTML = match[0].replace(this.target,""); this.tree = sandbox.firstChild; } else { this.tree = document.createElement("ul"); } this.append(); this.loading.style.display = "none"; this.close.style.display = "inline"; }, append: function() { this.tree.style.backgroundColor = "transparent"; this.tree.style.listStyleType = "circle"; this.node.appendChild(this.tree); $X("li", this.tree).each(function(n) { var a = $X("a",n).node(); var c = $X("count(//li/a[@href='"+a.href+"'])").value(); if (c > 1) n.parentNode.removeChild(n); }); $X("li", this.tree).each(bind(function(node){new this.constructor(node)}, this)); }, rootAppend: function() { $X(this.targetXPath).each(bind(function(node){new this.constructor(node)}, this)); } }; function similar(node) { this.node = node; this.create(); } similar.prototype = new HBTM("similar_entries"); similar.prototype.constructor = similar; function referred(node) { this.node = node; this.create(); } referred.prototype = new HBTM("referred_entries"); referred.prototype.constructor = referred; function loadBookmarkCommentViewer() { var head = document.getElementsByTagName("head")[0]; var script = document.createElement("script"); script.type = "text/javascript"; script.src = "http://b.hatena.ne.jp/js/BookmarkCommentViewerAllInOne.1.2.js"; head.appendChild(script); var css = document.createElement("link"); css.rel="stylesheet"; css.href="http://d.hatena.ne.jp/css/base.css"; css.type="text/css"; css.media="all"; head.insertBefore(css, head.firstChild); window.addEventListener("load",function(){ var BCV = unsafeWindow.BookmarkCommentViewer; BCV.options['screenshot'] = true; var asyncCommnetView = BCV.asyncCommnetView; BCV.asyncCommnetView = function(url, onCompleteCallback) { var div = asyncCommnetView(url, function(){ onCompleteCallback.apply(this, arguments); new unsafeWindow.Ten.XHR("http://b.hatena.ne.jp/entry/rss/"+url, {}, function(result) { if (! result.responseText.match(/<description>(.*?)<\/description>/)) return; if (! RegExp.$1) return; // var desc = document.createTextNode("desc: "+RegExp.$1); var desc = document.createElement("li"); desc.appendChild(document.createTextNode("desc: "+RegExp.$1)); div.lastChild.insertBefore(desc,div.lastChild.getElementsByTagName("li")[0]); }); }); return div; }; BCV.asyncCommnetView.origin = asyncCommnetView; }, false); } function bind(f,o) {return function() {return f.apply(o, arguments)}} function $X(xpath, context) { if (!(this instanceof $X)) return new $X(xpath, context); this.xpath = xpath; this.context = context || document; } $X.prototype = { evaluate: function() { var result = document.evaluate(this.xpath, this.context, null, this.type, null); switch (result.resultType) { case XPathResult.STRING_TYPE : return result.stringValue; case XPathResult.NUMBER_TYPE : return result.numberValue; case XPathResult.BOOLEAN_TYPE: return result.booleanValue; case XPathResult.FIRST_ORDERED_NODE_TYPE: return result.singleNodeValue; } return result; }, node: function() { this.type = XPathResult.FIRST_ORDERED_NODE_TYPE; return this.evaluate(); }, value: function() { this.type = XPathResult.ANY_TYPE; return this.evaluate(); }, each: function(func) { this.type = XPathResult.ORDERED_NODE_SNAPSHOT_TYPE; var result = this.evaluate(); for (var i=0; i<result.snapshotLength; i++) func(result.snapshotItem(i)); } }; main(); })();
http://www.nicovideo.jp/watch/sm1928803
Up主の説明によるとClick&Createの前身Klik&Playで作られているらしい。
http://hp.vector.co.jp/authors/VA018766/text/cnc.html
http://www2.ocn.ne.jp/~kandp/whats.html
説明画面に現れるVEL01212をググってみたら
http://www.google.co.jp/search?q=VEL01212
こんな結果が。
From: one-click-sagi@hotmail.co.jp
To: phpedit@hotmail.com
Subject: いい加減な記事を書かないでください
Date: Thu, 18 Oct 2007 21:37:33 +0900
訂正もあの程度ならサイト閉鎖してください
返事が来たよ
From: phpedit@hotmail.com
To: one-click-sagi@hotmail.co.jp
Subject: Re: いい加減な記事を書かないでください
Date: Thu, 18 Oct 2007 23:41:13 +0900
田中さま
ご指摘ありがとうございます。
何がいけなくて、何がよいのか?納得のいく訂正とはどのようなものでしょう?
これだけ騒ぎになっているのに,“何がいけなくて,何がよいのか”わからない人に納得いく説明は無理でしょう
タイトルはあおり気味だけど、30秒はうそじゃない。
基本、http://anond.hatelabo.jp/20071009175840で書いたのと同じ。
なんでもう一回書くかというと、ニコニコ動画がリニューアルにより
notepad c:\windows\system32\drivers\etc\hosts
0.0.0.0 adserver.yahoo.co.jp ard.yahoo.co.jp ai.yimg.jp 0.0.0.0 bizad.nikkeibp.co.jp ads.nikkeibp.co.jp 0.0.0.0 ads.mixi.jp 0.0.0.0 click.adv.livedoor.com image.adv.livedoor.com 0.0.0.0 ad.doubleclick.net 0.0.0.0 ad.nicovideo.jp
http://business.nikkeibp.co.jp/article/nmg/20071008/136857/
そもそもmixiにせよyahooにせよ見る側からすると広告ってウザい。
だから、広告サーバを騙して、広告を出さないようにする、その簡単な方法を紹介する。
この方法って、ネットに詳しい人には至極当然で当たり前に
何年も前から行われてることなんだけど、この方法が広がっちゃうと
自分の首を絞めることになるから、あんまり言いたがらないし、雑誌やネットでも書かれていない。
だから、一般ユーザはいつまでたってもこれを知ることができず
いまもウザい広告を見せ付けられ続け、ある意味「搾取」されている。
私はネット業界にいない人間なので、タブーはない。あえてここで書いてしまう。
この方法のデメリットとしては、面白いウェブ広告を見落とすことかな。
ちなみにXP用なので。ほかのOSはhostsファイルを各自探して。
スタート→「ファイル名を指定して実行」で下のをコピペ実行する
notepad c:\windows\system32\drivers\etc\hosts
メモ帳がでてきたら、ファイルの最後にしたのをコピペ追記して保存。こんだけ。
0.0.0.0 adserver.yahoo.co.jp ard.yahoo.co.jp ai.yimg.jp 0.0.0.0 bizad.nikkeibp.co.jp ads.nikkeibp.co.jp 0.0.0.0 ads.mixi.jp 0.0.0.0 click.adv.livedoor.com image.adv.livedoor.com 0.0.0.0 ad.doubleclick.net
これをやるのとやらないのとでは大違い。お試しあれ。
Windowsでも簡単だよ
http://rubyforge.org/projects/rubyinstaller/
以下コマンドラインから。cmd.exeはOne-Click Ruby Installerを実行したあとにやってね。
> gem install -y rails
> gem install sqlite3-ruby
> gem install mongrel
> rails -d sqlite3 my_great_webapp
> cd my_great_webapp > ruby script/server
ブラウザで http://localhost:3000/ にアクセスすればWelcome boardが出るはず。頑張れ〜。
あとエラーメッセージはビロビロと全部貼った方がいいと思った。問題解決したいなら、ね。独学でやりつつこっちは愚痴り場でもいいと思うけど。
てか各種入門記事は絶対にSQLite3を推すべきだと思うのだがどうだろう。MySQLとか難しいよね。
<html><head><title>Hello JavaScript World!</title><style type="text/css"> <!-- .select { margin-left: 30px; padding: 0 2px; width: 6em; border: dotted 1px; } .select p { margin: 2px; } --> </style></head><body><script type="text/javascript"> <!-- // step 1 : output text document.write("Hello world!"); // step 2 : output html document.write("<br/><b>Hello javascript world!</b>"); // step 3 : manipulate DOM var p1 = document.createElement("p"); p1.appendChild(document.createTextNode("Hello DOM world!")); document.body.appendChild(p1); // step 3 : interactive, using function, event handler function solid() { this.style.borderStyle="solid"; } var p2 = document.createElement("p"); p2.appendChild(document.createTextNode("Hello interactive world!")); document.body.appendChild(p2); p2.addEventListener("click", solid, false); // not solid() // step 4 : using object, prototype, closure function P(str) { this.str = str; } P.prototype.regist = function(parent){ this.elem = document.createElement("p"); this.elem.appendChild(document.createTextNode(this.str)); parent.appendChild(this.elem); var self = this; this.elem.addEventListener("click", function(){self.act()}, false); // otherwise // this.elem.helloworld = this; // this.elem.addEventListener("click", function(){this.helloworld.act()}, false); // bad way // this.elem.addEventListener("click", this.act, false); // this.elem.addEventListener("click", function(){this.act()}, false); }; P.prototype.act = function(){}; var p3 = new P("Hello prototype world!"); p3.act = function(){ if (this.elem.style.borderStyle == ""){ this.elem.style.borderStyle = "solid"; } else { this.elem.style.borderStyle = ""; } }; p3.regist(document.body); // step 5 : inheritance function SELECT(parent, str) { this.str = str; this.regist(parent); } SELECT.prototype = new P(); SELECT.prototype.act = function(){ p4.elem.style.borderStyle = this.str; p4.div.style.display = "none"; } var p4 = new P("Hello world!"); p4.div = document.createElement("div"); p4.div.className = "select"; p4.div.style.display = "none"; p4.select = [ new SELECT(p4.div, "none"), new SELECT(p4.div, "dotted"), new SELECT(p4.div, "solid") ]; p4.act = function(){ p4.div.style.display = "block"; }; p4.regist(document.body); document.body.appendChild(p4.div); //--> </script></body></html>
エディタなしでも大丈夫。アドレスバーでJavaScriptを実行してみよう!
アドレスバーに入れた場合、最後の値が表示されます。
javascript:"Hello world!"
サンプルでは良くあるけれど、実際、ダイアログはほとんど使いません。でもちょっとしたデバッグには便利です。
javascript:alert("Hello alert() world!")
このとき「alert()」とは「window.alert()」を表します。windowオブジェクトはブラウザの表示ウィンドウを表すオブジェクトです。windowオブジェクトのプロパティやメソッドを使用する場合は、alertに限らず「window.」が省略できます。
これが「print "Hello world!"」に一番近と思います。
javascript:document.write("Hello document.write() world!"); document.close()
documentオブジェクトは表示中のドキュメント全体を表すオブジェクトです。
Document Object Modelを利用して要素を追加します。
javascript:document.write("<html><body></body><html>"); document.close(); var p = document.createElement("p"); p.appendChild(document.createTextNode("Hello DOM world!")); document.body.appendChild(p);
現在のドキュメントがHTMLであれば、先ほどの「document.write()」はHTMLを扱うことになります。これを使用してbody要素を作っておき、そこへp要素を追加しています。
[追記] createTextNodeを使用するように変更しました。
javascript:document.write("<html><body>Hello world!</body><html>"); document.close(); p = document.createElement("p"); p.innerHTML = "Hello javascript world!"; document.body.appendChild(p); p.addEventListener("click", function(){this.style.borderStyle="solid"}, false)
イベントハンドラの使用方法は幾つかありますが、ここでは「addEventListener」を使用します(申し訳ありませんがIEでは動きません)。この例では、イベントに対するコールバック関数として無名関数の「function(){……}」が登録されます。p要素がクリックされたとき「function(){……}」が呼び出されます。このとき、this(変数ではありません!)が、要素pを示します。