「disabled」を含む日記 RSS

はてなキーワード: disabledとは

2021-07-22

SWCラビが出した声明の、最も重要な箇所

【原文】The Simon Wiesenthal Center condemns past anti-Semitic jokes as well as reported bullying of disabled individuals, made by Japanese comedian Kentaro Kobayashi, who is the show director of the opening ceremony of the Tokyo Olympics.

【訳】サイモン・ウィーゼンタール・センターは、すでに報じられている障害者に対するイジメ(※注:原文が"bullying"と云う単語を用いているため、ここでは「イジメ」と云う訳語を当てたが、増田個人は「虐待」と考えている)に対してと同様に、日本人コメディアン小林賢太郎(東京五輪開会式ディレクター)が過去に行った反ユダヤジョーク発言に対して非難します。

SWC声明に対する反応の一部に「小山田圭吾のしたことと混同している」と云うものがあったが、混同しているのではなく「障害者イジメと同じく、これについても我々は批判する」と言っているのである

これは、後段で

【原文】The Nazi regime also gassed Germans with disabilities.

【訳】ナチス政権は、障害を持つドイツ人もガスによって殺害しました。

と記されていることからも見て取れる。

もう一度言う。SWCは、小山田圭吾小林賢太郎混同しているのではない。小山田圭吾の「障害者イジメ」を批判するのと同じく批判すると言っているのである。つまり小山田圭吾のしたことは、ナチスドイツ蛮行と同じである」と言っているのである

それを理解すれば、小山田圭吾の起用を継続しようとしたJOCが、どれほど国際社会から白眼視されているか理解できるだろう。

SWC声明翻訳

自分なりに翻訳した(原文付き)。

The Simon Wiesenthal Center condemns past anti-Semitic jokes as well as reported bullying of disabled individuals, made by Japanese comedian Kentaro Kobayashi, who is the show director of the opening ceremony of the Tokyo Olympics.

サイモン・ウィーゼンタール・センターは、すでに報じられている障害者に対するイジメに対してと同様に、日本人コメディアン小林賢太郎(東京五輪開会式ディレクター)が過去に行った反ユダヤジョーク発言に対して非難します。

According to Japanese media reports, Kobayashi utilized the mass murder of six million Jews by the Nazis in a script for his comedy act in 1998. In his act, he made malicious and anti-Semitic jokes including “Let’s play Holocaust.” Kobayashi is reported to have made distasteful jokes about disabled individuals.

日本語メディア報道によれば、小林は、ナチスによる600万人のユダヤ人の大量虐殺を、1998年に彼が行ったコメディ公演の台本の中で用いました。この公演で、彼は"ホロコーストごっこをしよう。"と云う内容を含む、悪意のある反ユダヤジョーク発言しました。小林は、障害者に関する不愉快ジョーク発言を行っていたと報じられています

Any person, no matter how creative, does not have the right to mock the victims of the Nazi genocide. The Nazi regime also gassed Germans with disabilities. Any association of this person to the Tokyo Olympics would insult the memory of six million Jews and make a cruel mockery of the Paralympics,” stated SWC Associate Dean and Global Social Action Director, Rabbi Abraham Cooper.

"どのような人間であれ、どんなにクリエイティブ人間であろうと、ナチスによる虐殺被害者嘲笑する権利はありません。ナチス政権は、障害を持つドイツ人もガスによって殺害しました。どのような形であれ、この人物東京五輪に関与することは、600万人のユダヤ人についての記憶に対する侮辱であり、パラリンピックに対して残酷嘲笑することです。"と、ラビ=エイブラハム・クーパー(SWC Associate Dean and Global Social Action Director)は声明を出しました。

2021-07-19

作曲家の人

Tokyo 2020 composer apologises for historical bullying of disabled classmates

既にガーディアンとかのTwitterで、記事が回って炎上していた。

2021-07-18

オリンピック放映権持つNBC報道始めたな

Tokyo 2020 Olympics composer apologizes for bullying disabled classmates
 Keigo Oyamada, who uses the stage name "Cornelius" once described his abuse in graphic detail. He now apologizes.

 https://www.nbcnews.com/news/olympics/tokyo-2020-olympics-composer-apologizes-bullying-disabled-classmates-n1274307

 

知らん顔し続けてたファンNHKソニーに対してはこれが普通の反応だからわかった?というお気持ち

 

あと、

Back in the 1990s, when his star was still on the rise, the now 52-year-old Oyamada, in interviews with local music magazines, recalled how he would, among other things, force a mentally-disabled boy to eat his own feces and masturbate in front of other students.

(地元音楽雑誌インタビューで、知的障害のある少年排泄物を食べさせたり、他の生徒の前で自慰行為をしたりしたことなどを語っていた。)

・・・と、ちゃん性的虐待加害者として書いてるから

 

 

いじめ性犯罪と同じとか謎理論の前に、そもそも今回のケースは性犯罪傷害強請りたかりなので正しく認識しよう

anond:20210718233928 anond:20210718234504 anond:20210719020302 anond:20210719022059

英国新聞ガーディアン」に掲載された小山田圭吾記事7月17日

東京五輪2020の作曲家障害者同級生に対する昔のいじめ謝罪("Tokyo 2020 composer apologises for historical bullying of disabled classmates")」2021/7/17(Sat)

https://www.theguardian.com/sport/2021/jul/17/tokyo-2020-composer-apologises-for-historical-bullying-of-disabled-classmates

 

2020年東京オリンピック開会式音楽演奏される予定の日本人作曲家が、知的障害者を含む学校同級生いじめていたという報道を受け、謝罪しました。

 

2020年東京オリンピック開会式演奏される作曲家の一人である小山田圭吾氏は、自分オリンピックパラリンピックに関わることで「多くの人に不快な思いをさせてしまった」ことを大変申し訳なく思っていると述べました。小山田氏は自身ウェブサイトで「心よりお詫び申し上げます」と述べています

 

組織委員会の前会長である森喜朗氏は、2月女性スポーツ管理者に対する性差別的な発言で辞任に追い込まれた後、このような恥ずかしい出来事が起こりました。

その翌月には、開会式閉会式クリエイティブディレクターである佐々木宏氏が、人気女性タレントの渡辺直美さんを豚に例えて辞任しました。

 

コーネリアスとして知られる小山田氏は、1990年代に受けた雑誌インタビューで、少なくとも一人の障害者同級生いじめいたことを明らかに反省していないように話していたことが報道され、ソーシャルメディア上で炎上しました。

 

小山田氏(52歳)は、ある少年ウンチを食べさせたり、他の生徒の前でオナニーをさせたりしたとのことです。

 

小山田氏は、当時の自分は「非常に未熟だった」と述べ、自分の行動やその後のコメントを「深く反省している」と語り、式典への参加に否定的な反応を示す人がいるのは「当然のこと」だと付け加えました。

 

東京2020組織委員会は、不適切発言があったことを知らなかったとしながらも、小山田氏が「インタビュー時の発言を後悔しており、考え直している」と述べました。 また、小山田氏は開会式に「多大な」貢献をしたとし、「高い倫理観を持った人物」として、開会式の最終準備に専念することを期待していると述べました。

 

東京2020最高責任者である武藤敏郎は、小山田謝罪したことに触れ、開会式まであと6日となった時点で、彼がクリエイティブチームの一員として残ることを示唆しました。

 

武藤は、「小山田過去行為反省し、より高い倫理観を持って行動したいと言っている」と述べました。

組織委員会小山田行為を知らなかったのは事実ですが、彼の謝罪を聞いて、これから東京大会に貢献してくれることを期待しています」と述べました。

まだコーネリアス話題やりたいみたいだから世間の反応持ってきたよ

英国デイリー・テレグラフ (The Telegraph)で取り上げられたので話題ひとつとして Resetera にポストされてた

 

Japanese composer (Cornelius) who abused disabled classmates and forced them to perform sex acts remains involved in Tokyo Olympics opening ceremony

🔴Tokyo Olympics organisers insist they are happy for a Keigo Oyamada to continue as a composer for the opening ceremony despite interviews resurfacing where he described abusing mentally ill classmates.

https://www.resetera.com/threads/japanese-composer-cornelius-who-abused-disabled-classmates-and-forced-them-to-perform-sex-acts-remains-involved-in-tokyo-olympics-opening-ceremony.458274/

 

Fuckでいっぱい ← 残当

 

That translated article is kind of a sad read, and he definitely didn’t feel an ounce of remorse残当

(その翻訳記事ちょっと悲しい内容で、彼には反省のかけらもありませんでした。)

  

I'd only believe he really changed if he revealed he spent the last couple decades trying to make things right and using a great deal of his time and money to assist his victims and disabled people in general. 一般的にはそうだろうね

(彼が本当に変わったと思うのは、過去数十年間、物事を正そうと努力し、自分時間お金を使って、被害者一般障害者支援してきたことを明らかにした場合だけです。)

 

Cornelius is an artist I really admired, I am shocked at this.  ←ほんこれな。この話はパラリンピック以前から知っては居たけど胸糞&反省なさ過ぎてな。彼の音楽は好きなんだけどね

(コーネリアスは本当に尊敬していたアーティストなので、今回のことはショックです。)

 

wooow,, did not know this about Cornelius, disgusted.
And he wasn't even a kid when he blatantly admitted to these things in interview, he was 25 at the time... I feel like tossing a couple songs off my spotify now I feel like tossing a couple songs off my spotify now
 ← 記事を見た時、ワイもそうした

(うわー、、コーネリアスについてこれを知りませんでした、うんざりです。

そして、彼がインタビューでこれらのことを露骨に認めたとき、彼は子供でさえありませんでした。彼は当時25歳でした

...私は今私のspotifyからいくつかの曲を投げたい気分です)

  

ソニーウォークマン宣伝のページがWEBサイトから消える

 

「音のディティールを掴んで音楽世界に夢中になれる」ヘッドホン

#Cornelius や #METAFIVE など、多様な音楽を紡いできた #小山田圭吾 さんギター

古くからの #ウォークマン ユーザーでもある小山田さんが、ご自身リスニングスタイル音楽専用機に感じている魅力を紹介しまスタジオマイク複数の音符

https://www.sony.jp/feature/products/200826/?s_tc=jp_sf_tw_feajrny_0827

 

該当ツイート

https://twitter.com/FeaturebySonyJp/status/1298849564854648832?s=20

 

ソニーも消すくらいなら調べてから宣伝採用すりゃあイイのに・・・

 

それはともかく、

彼がやったことは許されることじゃないけど、犯罪者再チャレンジを許さな社会はそれはそれでヤバいし、

なにより許す許さないをジャッジするのは被害者なのだから

 

今後日本公的仕事には参画しない

    or

障害者恐喝虐待した記事を平気で載せたままにしていたのだから障がい者スポーツ大会であるパラリンピックは辞退する』

 

これでじゅうぶんな禊ぎにはなると思う

 

これからも精力的に活躍はして欲しいがパラリンピックには不適切なのは明らかなのでとりあえず辞退して

 

 

参考になりましたか

anond:20210718071328 anond:20210718113849 anond:20210718120209 anond:20210718120548 anond:20210718123324 anond:20210718130753 anond:20210718133951 anond:20210718170015

2021-07-15

オリパラ音楽担当になった小山田圭吾の悪評をreddit投稿しようと考えてる。

このグーグル翻訳を駆使した英文大丈夫か教えてほしい。

増田仕様のせいで空行が入らないので読みにくいかも)

追記:ブコメですでに記事があるという指摘があったので、いまさら投稿しなくてもいいか

なにかに流用したい人がいるかわからんが好きに使ってくれていい。

A creative member of the Tokyo Olympics opening ceremony music was found to have been a fierce bullying assailant in the past.

Keigo Oyamada (born 1969) became a creative member of the Tokyo Olympics opening ceremony music.

In an interview with a music magazine in the 1990s, He talked about being a perpetrator of bullying as if it were a funny thing.

Interview in the January 1994 issue of the music magazine "Rockin' On Japan 20,000-word interview with Keigo Oyamada"

"Also, the bullying was really bad at my school."

 But you said you were the bully.

"Yeah. I bullied him. When I think about it now, it was really awful. I'd like to take this opportunity to apologize (laughs) because I've been bullying him pretty hard."

 Did you do something that bad?

"Yes. Yes, it's against the rules of humanity. I would strip them completely naked, wrap a string around them, and make them masturbate. They feed you shit. And backdropping him after he ate shit."

The school he attended was a combination of primary, secondary, high school and university.

The school offers "joint education" where normal children and disabled children are placed in the same class.

A writer who read this interview planned a dialogue between the "bully" and the "bullied", but it did not happen.

It became a personal interview with Keigo Oyamada.

There was a guy named Sawada. He was a very epoch-making guy, and he came to the school when I was in the second grade. It was a shock to the whole school (laughs). When he moved to a new school and introduced himself, he would suddenly say (in a tone that sounded like he had a speech impediment), "I'm Sawada. It's like, "Wow, that's great! Then, on the first day at the new school, I took a dump. It's a felony for elementary school students to take a dump at school, isn't it?

There was a cardboard box or something like that, and I put Sawada in it, tied it all up with duct tape, made air holes in it (laughs), and said, "Hey, Sawada, are you okay? (laughs) Then, with a chalkboard eraser or something, I slapped it around and said, "Poison gas attack! (laughs) Then, I took a blackboard eraser and said, "Poison gas attack! ...? He said something really interesting. I don't know what it was, but he said something like "Mommy" or something like that (laughs), and everyone burst out laughing.

When it comes to his jersey, everyone takes it off, but it's nothing for him to take his dick out, so he just walks around with it out. But he's got a big dick, and it's been that way since elementary school, but in high school it got even bigger (laughs). (laughs) The girls would react to it, so we would take it off on purpose and have him walk down the hallway.

2021-05-21

弱者男性って英語にしたらなに?

weak male? vulnerable male?

loser maleちょっと違うよね?

discriminated male とかdisabled maleもいけるか?な?

2020-09-11

映画 ジョーカー(Joker) が素晴らしかった点は、アレを見てみんなドンヨリしたこと

一時期、ネトフリでジョーカー(Joker) 観れるよと推してる増田 (anond:20200709210553) がいたけどジョーカー観た?

個人的には、公開時に映画館で観たし、名作だけどドンヨリするので何回も見る映画じゃ無いかなぁって思うんだけど、

主人公日記を付ける非常に印象的なシーンがあるんだよね

彼は日記にこう綴る (日記を書くシーンなので少しずつ日本語字幕が出てくる)、

(日本語字幕)

『心の病を持つものにとって最悪なのは・・・
世間の目だ』
『こう訴えてくる』
『心の病いなどない・・・
普通の人のように してろと』

 

(原文)

the worst part about
having a mental illness
is
people expect
you to behave
as if you
D😊NT

 

直訳: 精神を病んで最も最悪なところは、人々があなた精神を病んでないように振る舞うことを期待することだ。

 

個人的ジョーカーを観てすごく良かったのは、

ホアキン・フェニックスの演技が最高だとか、 XXのシーンが映画○○のオマージュ80年代描写美術が素晴らしいとか、

△△の暗喩社会風刺がとか、どこまでが本当かわからない構成イカしてる(すべて虚構 ジョーク可能性あり)とか、

そういうんじゃ全然無くて、

 

あの映画を観て多くの人がドンヨリした気分になったことを知れたことだ

 

ドンヨリしたってことはつまり主人公共感が出来たってことだ

 

『困難を抱えている人にみな共感することができる』

 

社会動物なんで当たり前っちゃ当たり前の話でもあるんだけど、文字にすると、言葉にすると、闇を照らすような言葉だよね?

(当たり前の例)

[Psychology] Anxiolytic Treatment Impairs Helping Behavior in Rats

https://www.frontiersin.org/articles/10.3389/fpsyg.2016.00850/full

 

[Current Biology] Harm to Others Acts as a Negative Reinforcer in Rats

https://www.cell.com/current-biology/fulltext/S0960-9822(20)30017-8

 

日本語記事:「誰かを助ける」のに理由はいらない(哺乳類なら):研究結果 (WIRED)

https://wired.jp/2016/07/01/rats-empathy/

 

日本語記事ラット他者を傷つける行為を嫌がることが判明:研究結果(WIRED)

https://wired.jp/2020/04/08/rats-harm-aversion/

 

実際、ジョーカー日記の文でネット検索すると、出てくるでてくる共感言葉 (もちろん暴力精神疾患を結びつけるな誤解を招く😡もあったよ)

そして、Quora に出てくる "The worst part of having a mental illness is people expect you to behave as if you don't."Do you agree with this statement?

とまったく同じ文言質問の山 (その質問は既にありますよの概念世界中どこにも存在しない)

 

ほんで、山を覗いたり、blogを見たりすると、精神医療従事者に限らず、

 

身体障害は目に見えるが精神障害は目に見えないため、元気に見える(障害を持っているように見えない)』

理解の無い人たちに、“病いや障害は無い。普通に振る舞え” と言われるか、“クレージー” と言われる』

精神疾患が無いように振る舞うことを強制することは、当事者から自信を奪い、病状を深刻に悪化させる』

『昔の同性愛者・女性黒人(白人以外の人種)のように社会差別され抑制されている』

『彼らは、愛、共感、思いやり で扱われるべき』

 

って言ってるし、

よっぽどこのフレーズが気に入ったのか引用したTシャツトレーナーなどのアイテムパロディ商品も作られている

 

「ああよかった、また世界ひとつ、優しくなった、良くなった」と言って良さそうな風にも見えるけど、

どうですか? 映画 ジョーカー(Joker) の 後では、世界は少しは思いやりのある生きやす場所になった感はありますか?

 

まぁおそらくそうはなってはいなくて、わたしたち想像力があり共感も出来るのに、どうしてそうなっちゃうのかというと、

Quora で、ある元教師いわく、

 

Many people are very uncomfortable with any who are “different”. They much prefer to ignore the ill, the disabled, the handicapped, the challenged.
Mostly it is ignorance and lack of knowledge about how to act towards the “others”, their unease translates into avoidance.

(多くの人は、「人と違う」人を非常に不愉快に思います。彼らは病気の人、障害者(ディスエイブルドハンディキャップチャレンジド)を無視することを好みます

ほとんどの場合他者」に対してどのように行動すべきかについての無知知識の欠如であり、彼らの不安回避行動に変換されます)

 

・・・だそうな。氏に完全同意する

 

でも、『どのように行動すべきかについての知識の欠如』が原因なのはわかっているけれど、わたしたちは具体的にどんなアクションをするべきなんでしょうね?

 

とりあえず今日の夕飯はカレーにしたいと思います

2015-01-30

Windows で、利用可能メモリが搭載メモリより異常に少なくなる回避

備忘録情報共有(お互い様精神)>

原因:内蔵(オンボードグラフィックデバイスが、占有していた。グラボ増設しているが、内蔵グラフィックデバイス認識されてしまっている模様。

回避法:AMI (American Megatrends, Inc.) BIOS 設定 のうち Integrated Graphics Devices にある IGD Multi-Monitor を Disabled にしたら、2GB も占有されていたメモリの非利用可能領域が 1GB に減少。そして OS が利用できるメモリ量が 2GB から 3GB に増加。

PCI Express スロットnVidia 製のグラフィックボードを装着して拡張BIOS の優先内蔵デバイス設定も IGD (Integrated Graphic Device の略?) ではなく PEG (PCI Express Graphic Device?)に設定していており、現にWindows OS 上でも拡張ボード側が認識されているのだが。。

リソースモニタータスクマネージャーの「パフォーマンスから)で「メモリ」を確認すると、「ハードウエア予約済み」の占有サイズ確認できる。物理メモリからハードウエア予約済み」の分がアプリケーションで使用できず、利用可能メモリ量が減るのだ。

2014-08-05

さすがイギリス紳士の国ですね!!

Mother of boy with cerebral palsy forced to sit on bus floor because pensioners refused to move from disabled seats to give them room

http://www.dailymail.co.uk/news/article-2715380/Mother-boy-cerebral-palsy-forced-sit-bus-floor-pensioners-refused-disabled-seats-room.html

英国座席は誰のもの? バスに乗った身障者の母子、老人が席の移動を拒否→運転手に床に座らされる[8/5]

めいろま(@May_Roma)もうっとり!

2010-04-24

test

ルータメーカーサイトファームウェアを最新バージョンにするか、自動チューニング機能の設定を変更(無効にするなど)してみるといいかもしれません。

ルーターファームウェアアップデートする方法は、説明書なりメーカーのサイトなりに書いてあるでしょうからそちらを見てもらうとして、自動チューニング機能の設定を変更する方法ですが、

http://ascii.jp/elem/000/000/106/106192/

スタートメニューから「すべてのプログラム」→「アクセサリ」→「コマンドプロンプト」を右クリックし、「管理者として実行」を選択する。 続いて、「netsh interface tcp set global autotuninglevel=disabled」と入力すればいい。元に戻す場合は「netsh interface tcp set global autotuninglevel=normal」と入力する。

http://journal.mycom.co.jp/articles/2010/01/20/w7/index.html

受信ウィンドウ自動チューニングレベルを調整するには、「netsh interface tcp set global autotuninglevel={設定値}」と実行します。設定可能な値は下記のとおり。

「autotuninglevel」の設定値

disabled:自動最適化を無効にします

highlyrestricted:既定値より受信ウィンドウ保守的に拡大します

restricted:既定値より受信ウィンドウを制限的に拡大します

normal:既定値に戻します

experimental:実験的なシチュエーションで使用します

通常は「restricted」もしくは「highlyrestricted」を選び、先のコマンドを実行しますが、どちらがベストなのか、もしくは自動最適化を無効にした方が速くなるのかと、どの設定値を選ぶべきかは環境によって異なります(図15)。

これでも駄目な場合、もしかすると下記リンクが参考になるかもしれません。

http://questionbox.jp.msn.com/qa5697109.html

2010-01-26

handicapped は不適切

障害があることを表す単語には、disabled, handicapped, challenged がある。

handicapped は old-fashioned であり、多くの人が offensive な表現だと考えている。(OALD 7thより)

2009-06-03

すごく不思議な現象があった。

存在しないメアドに送るとPostmaster@ezweb.ne.jpからエラーメール返ってくるよな。

ところが,送った覚えも無いのにエラーメールが届いたんだ。

送信先メールアドレスが見つかりませんでした云々

The user(s) account is disabled.

@ezweb.ne.jp

しかも,この***というアドレスは全く知らない。アドレス帳に入ってないし送信履歴にも全く無い。

送信元を偽造した新手のSPAMなのか?

2009-03-22

Mac OSX 10.5.6にて。

GnuCash とかいう家計簿ソフトインストールしてみたわけだが、起動しない。

どうしたものか。

[***:~] ***% sudo port install gnucash
Password:
--->  Fetching gnucash
--->  Verifying checksum(s) for gnucash
--->  Extracting gnucash
--->  Applying patches to gnucash
--->  Configuring gnucash
--->  Building gnucash
--->  Staging gnucash into destroot
--->  Installing gnucash @2.2.9_0
--->  Activating gnucash @2.2.9_0
--->  Cleaning gnucash
[***:~] ***% gnucash
gnc.bin-Message: main: binreloc relocation support was disabled at configure time.

Xlib:  extension "RANDR" missing on display "/tmp/launch-6BB0ZT/:0".
The application 'gnucash' lost its connection to the display /tmp/launch-6BB0ZT/:0;
most likely the X server was shut down or you killed/destroyed
the application.

2008-02-21

生きてる価値ないよ自分。ちがう、がんばってくれ自分。

欲求我慢できないし、変な欲求だし、嫌なことをぜんぜん続けられないし、落ち着いた生活もできないし、将来のことも考えられないし、がんばれないし、周りの人に気を使えないし、バイトもやめて全然だめだし、資格もとれないし、授業だってうまくいかないし、ゼミのこともそんなに進んでないし、プログラミングだってうまくいかないし、こんな日記書いてるし、体裁気にしてミクシィには何にも書かずに何ヶ月もたってるし、マジ嫌だ。

なんでこんな気持ち悪い人間なんだろう。

直したい。直したい。直したい。

でもそうやって何度も直したい直したいって思っても、直せなかったから今またこうして悩んでいる。

ちょっとずつでも直ってるだろうか?直ってないだろう。

小学校まではこんな悩みはなかった。

中学校でもパソの内部知るのにはまる以外は、いたってまじめだった。

高校からこんな風になったんだ。

進歩させようと努力する方向が間違っているのかもしれない。

高校前までは気が散るものが少なく、娯楽も少なかった。

何を元に戻せばいいのだろうか?

中学校バランスが壊れそうになるのを、汚い部屋の中で、自分の日記自己啓発の本なんかを読みながら、ぶれないようにやってた。

興味の範囲がすごく狭かった。

そういえば周りの期待も大きかったんですねぇ。

期待のせいで視野が狭くなってたんだ。それがいい意味に働いていたかもしれないです。

叱咤激励ほどでもないけど、だらだらするのが制限されてたのもあります。

どうすればいいのでしょう。

自分に克をいれるためには。

8aweek入れて数日はネット我慢してたけど、今日勉強しなきゃいけないのに、TimerをDisabledにしてyoutube絶望先生にはまってた。

毎日自己啓発本を読むのか。

誰も頑張れなんていってくれないし。

がんばれよ俺。まじがんばってくれ。頼むよ!頼むがんばれ!

がんばるんだー。がんばれ!

2007-07-19

/* Ten */
if (typeof(Ten) == 'undefined') {
    Ten = {};
}
Ten.NAME = 'Ten';
Ten.VERSION = 0.06;

/* Ten.Class */
Ten.Class = function(klass, prototype) {
    if (klass && klass.initialize) {
	var c = klass.initialize;
    } else if(klass && klass.base) {
        var c = function() { return klass.base[0].apply(this, arguments) };
    } else {
	var c = function() {};
    }
    c.prototype = prototype || {};
    c.prototype.constructor = c;
    Ten.Class.inherit(c, klass);
    if (klass && klass.base) {
        for (var i = 0;  i < klass.base.length; i++) {
	    var parent = klass.base[i];
            if (i == 0) {
                c.SUPER = parent;
                c.prototype.SUPER = parent.prototype;
            }
            Ten.Class.inherit(c, parent);
            Ten.Class.inherit(c.prototype, parent.prototype);
        }
    }
    return c;
}
Ten.Class.inherit = function(child,parent) {
    for (var prop in parent) {
        if (typeof(child[prop]) != 'undefined' || prop == 'initialize') continue;
        child[prop] = parent[prop];
    }
}

/*
// Basic Ten Classes
**/

/* Ten.JSONP */
Ten.JSONP = new Ten.Class({
    initialize: function(uri,obj,method) {
        if (Ten.JSONP.Callbacks.length) {
            setTimeout(function() {new Ten.JSONP(uri,obj,method)}, 500);
            return;
        }
        var del = uri.match(/\?/) ? '&' : '?';
        uri += del + 'callback=Ten.JSONP.callback';
        if (!uri.match(/timestamp=/)) {
            uri += '&' + encodeURI(new Date());
        }
        if (obj && method) Ten.JSONP.addCallback(obj,method);
        this.script = document.createElement('script');
        this.script.src = uri;
        this.script.type = 'text/javascript';
        document.getElementsByTagName('head')[0].appendChild(this.script);
    },
    addCallback: function(obj,method) {
        Ten.JSONP.Callbacks.push({object: obj, method: method});
    },
    callback: function(args) {
        // alert('callback called');
        var cbs = Ten.JSONP.Callbacks;
        for (var i = 0; i < cbs.length; i++) {
            var cb = cbs[i];
            cb.object[cb.method].call(cb.object, args);
        }
        Ten.JSONP.Callbacks = [];
    },
    MaxBytes: 8000,
    Callbacks: []
});

/* Ten.XHR */
Ten.XHR = new Ten.Class({
    initialize: function(uri,opts,obj,method) {
        if (!uri) return;
        this.request = Ten.XHR.getXMLHttpRequest();
        this.callback = {object: obj, method: method};
        var xhr = this;
        var prc = this.processReqChange;
        this.request.onreadystatechange = function() {
            prc.apply(xhr, arguments);
        }
        var method = opts.method || 'GET';
        this.request.open(method, uri, true);
        if (method == 'POST') {
            this.request.setRequestHeader('Content-Type',
                                          'application/x-www-form-urlencoded');
        }
        var data = opts.data ? Ten.XHR.makePostData(opts.data) : null;
        this.request.send(data);
    },
    getXMLHttpRequest: function() {
        var xhr;
        var tryThese = [
            function () { return new XMLHttpRequest(); },
            function () { return new ActiveXObject('Msxml2.XMLHTTP'); },
            function () { return new ActiveXObject('Microsoft.XMLHTTP'); },
            function () { return new ActiveXObject('Msxml2.XMLHTTP.4.0'); },
        ];
        for (var i = 0; i < tryThese.length; i++) {
            var func = tryThese[i];
            try {
                xhr = func;
                return func();
            } catch (e) {
                //alert(e);
            }
        }
        return xhr;
    },
    makePostData: function(data) {
        var pairs = [];
        var regexp = /%20/g;
        for (var k in data) {
            var v = data[k].toString();
            var pair = encodeURIComponent(k).replace(regexp,'+') + '=' +
                encodeURIComponent(v).replace(regexp,'+');
            pairs.push(pair);
        }
        return pairs.join('&');
    }
},{
    processReqChange: function() {
        var req = this.request;
        if (req.readyState == 4) {
            if (req.status == 200) {
                var cb = this.callback;
                cb.object[cb.method].call(cb.object, req);
            } else {
                alert("There was a problem retrieving the XML data:\n" +
                      req.statusText);
            }
        }
    }
});

/* Ten.Observer */
Ten.Observer = new Ten.Class({
    initialize: function(element,event,obj,method) {
        var func = obj;
        if (typeof(method) == 'string') {
            func = obj[method];
        }
        this.element = element;
        this.event = event;
        this.listener = function(event) {
            return func.call(obj, new Ten.Event(event || window.event));
        }
        if (this.element.addEventListener) {
            if (this.event.match(/^on(.+)$/)) {
                this.event = RegExp.$1;
            }
            this.element.addEventListener(this.event, this.listener, false);
        } else if (this.element.attachEvent) {
            this.element.attachEvent(this.event, this.listener);
        }
    }
},{
    stop: function() {
        if (this.element.removeEventListener) {
            this.element.removeEventListener(this.event,this.listener,false);
        } else if (this.element.detachEvent) {
            this.element.detachEvent(this.event,this.listener);
        }
    }
});

/* Ten.Event */
Ten.Event = new Ten.Class({
    initialize: function(event) {
        this.event = event;
    },
    keyMap: {
        8:"backspace", 9:"tab", 13:"enter", 19:"pause", 27:"escape", 32:"space",
        33:"pageup", 34:"pagedown", 35:"end", 36:"home", 37:"left", 38:"up",
        39:"right", 40:"down", 44:"printscreen", 45:"insert", 46:"delete",
        112:"f1", 113:"f2", 114:"f3", 115:"f4", 116:"f5", 117:"f6", 118:"f7",
        119:"f8", 120:"f9", 121:"f10", 122:"f11", 123:"f12",
        144:"numlock", 145:"scrolllock"
    }
},{
    mousePosition: function() {
        if (!this.event.clientX) return;
        return Ten.Geometry.getMousePosition(this.event);
    },
    isKey: function(name) {
        var ecode = this.event.keyCode;
        if (!ecode) return;
        var ename = Ten.Event.keyMap[ecode];
        if (!ename) return;
        return (ename == name);
    },
    targetIsFormElements: function() {
        var target = this.event.target;
        if (!target) return;
        var T = (target.tagName || '').toUpperCase();
        return (T == 'INPUT' || T == 'SELECT' || T == 'OPTION' ||
                T == 'BUTTON' || T == 'TEXTAREA');
    },
    stop: function() {
        var e = this.event;
        if (e.stopPropagation) {
            e.stopPropagation();
            e.preventDefault();
        } else {
            e.cancelBubble = true;
            e.returnValue = false;
        }
    }
});

/* Ten.DOM */
Ten.DOM = new Ten.Class({
    getElementsByTagAndClassName: function(tagName, className, parent) {
        if (typeof(parent) == 'undefined') {
            parent = document;
        }
        var children = parent.getElementsByTagName(tagName);
        if (className) { 
            var elements = [];
            for (var i = 0; i < children.length; i++) {
                var child = children[i];
                var cls = child.className;
                if (!cls) {
                    continue;
                }
                var classNames = cls.split(' ');
                for (var j = 0; j < classNames.length; j++) {
                    if (classNames[j] == className) {
                        elements.push(child);
                        break;
                    }
                }
            }
            return elements;
        } else {
            return children;
        }
    },
    removeEmptyTextNodes: function(element) {
        var nodes = element.childNodes;
        for (var i = 0; i < nodes.length; i++) {
            var node = nodes[i];
            if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
                node.parentNode.removeChild(node);
            }
        }
    },
    nextElement: function(elem) {
        do {
            elem = elem.nextSibling;
        } while (elem && elem.nodeType != 1);
        return elem;
    },
    prevElement: function(elem) {
        do {
            elem = elem.previousSibling;
        } while (elem && elem.nodeType != 1);
        return elem;
    },
    scrapeText: function(node) {
        var rval = [];
        (function (node) {
            var cn = node.childNodes;
            if (cn) {
                for (var i = 0; i < cn.length; i++) {
                    arguments.callee.call(this, cn[i]);
                }
            }
            var nodeValue = node.nodeValue;
            if (typeof(nodeValue) == 'string') {
                rval.push(nodeValue);
            }
        })(node);
        return rval.join('');
    },
    onLoadFunctions: [],
    loaded: false,
    timer: null,
    addEventListener: function(event,func) {
        if (event != 'load') return;
        Ten.DOM.onLoadFunctions.push(func);
        Ten.DOM.checkLoaded();
    },
    checkLoaded: function() {
        var c = Ten.DOM;
        if (c.loaded) return true;
        if (document && document.getElementsByTagName &&
            document.getElementById && document.body) {
            if (c.timer) {
                clearInterval(c.timer);
                c.timer = null;
            }
            for (var i = 0; i < c.onLoadFunctions.length; i++) {
                    c.onLoadFunctions[i]();
            }
            c.onLoadFunctions = [];
            c.loaded = true;
        } else {
            c.timer = setInterval(c.checkLoaded, 13);
        }
    }
});

/* Ten.Style */
Ten.Style = new Ten.Class({
    applyStyle: function(elem, style) {
        for (prop in style) {
            elem.style[prop] = style[prop];
        }
    }
});

/* Ten.Geometry */
Ten.Geometry = new Ten.Class({
    initialize: function() {
        if (Ten.Geometry._initialized) return;
        var func = Ten.Geometry._functions;
        var de = document.documentElement;
        if (window.innerWidth) {
            func.getWindowWidth = function() { return window.innerWidth; }
            func.getWindowHeight = function() { return window.innerHeight; }
            func.getXScroll = function() { return window.pageXOffset; }
            func.getYScroll = function() { return window.pageYOffset; }
        } else if (de && de.clientWidth) {
            func.getWindowWidth = function() { return de.clientWidth; }
            func.getWindowHeight = function() { return de.clientHeight; }
            func.getXScroll = function() { return de.scrollLeft; }
            func.getYScroll = function() { return de.scrollTop; }
        } else if (document.body.clientWidth) {
            func.getWindowWidth = function() { return document.body.clientWidth; }
            func.getWindowHeight = function() { return document.body.clientHeight; }
            func.getXScroll = function() { return document.body.scrollLeft; }
            func.getYScroll = function() { return document.body.scrollTop; }
        }
        Ten.Geometry._initialized = true;
    },
    _initialized: false,
    _functions: {},
    getScroll: function() {
        if (!Ten.Geometry._initialized) new Ten.Geometry;
        return {
            x: Ten.Geometry._functions.getXScroll(),
            y: Ten.Geometry._functions.getYScroll()
        };
    },
    getMousePosition: function(pos) {
        // pos should have clientX, clientY same as mouse event
        if ((navigator.userAgent.indexOf('Safari') > -1) &&
            (navigator.userAgent.indexOf('Version/') < 0)) {
            return {
                x: pos.clientX,
                y: pos.clientY
            };
        } else {
            var scroll = Ten.Geometry.getScroll();
            return {
                x: pos.clientX + scroll.x,
                y: pos.clientY + scroll.y
            };
        }
    },
    getElementPosition: function(e) {
        return {
            x: e.offsetLeft,
            y: e.offsetTop
        };
    },
    getWindowSize: function() {
        if (!Ten.Geometry._initialized) new Ten.Geometry;
        return {
            w: Ten.Geometry._functions.getWindowWidth(),
            h: Ten.Geometry._functions.getWindowHeight()
        };
    }
});

/* Ten.Position */
Ten.Position = new Ten.Class({
    initialize: function(x,y) {
        this.x = x;
        this.y = y;
    },
    subtract: function(a,b) {
        return new Ten.Position(a.x - b.x, a.y - b.y);
    }
});

/*
// require Ten.js
**/

/* Ten.SubWindow */
Ten.SubWindow = new Ten.Class({
    initialize: function() {
        var c = this.constructor;
        if (c.singleton && c._cache) {
            return c._cache;
        }
        var div = document.createElement('div');
        Ten.Style.applyStyle(div, Ten.SubWindow._baseStyle);
        Ten.Style.applyStyle(div, c.style);
        this.window = div;
        this.addContainerAndCloseButton();
        document.body.appendChild(div);
        if (c.draggable) {
            this._draggable = new Ten.Draggable(div, this.handle);
        }
        if (c.singleton) c._cache = this;
        return this;
    },
    _baseStyle: {
        color: '#000',
        position: 'absolute',
        display: 'none',
        zIndex: 2,
        left: 0,
        top: 0,
        backgroundColor: '#fff',
        border: '1px solid #bbb'
    },
    style: {
        padding: '2px',
        textAlign: 'center',
        borderRadius: '6px',
        MozBorderRadius: '6px',
        width: '100px',
        height: '100px'
    },
    handleStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        backgroundColor: '#f3f3f3',
        borderBottom: '1px solid #bbb',
        width: '100%',
        height: '30px'
    },
    containerStyle: {
        margin: '32px 0 0 0',
        padding: '0 10px'
    },
    // closeButton: 'close.gif',
    closeButton: 'http://s.hatena.com/images/close.gif',
    closeButtonStyle: {
        position: 'absolute',
        top: '8px',
        right: '10px',
        cursor: 'pointer'
    },
    _baseScreenStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        display: 'none',
        zIndex: 1,
        overflow: 'hidden',
        width: '100%',
        height: '100%'
    },
    screenStyle: {},
    showScreen: true,
    singleton: true,
    draggable: true,
    _cache: null
},{
    screen: null,
    windowObserver: null,
    visible: false,
    addContainerAndCloseButton: function() {
        var win = this.window;
        var c = this.constructor;
        var div = document.createElement('div');
        win.appendChild(div);
        Ten.Style.applyStyle(div, c.containerStyle);
        this.container = div;
        if (c.handleStyle) {
            var handle = document.createElement('div');
            Ten.Style.applyStyle(handle, c.handleStyle);
            win.appendChild(handle);
            this.handle = handle;
        }
        if (c.closeButton) {
	    var btn = document.createElement('img');
            btn.src = c.closeButton;
            btn.alt = 'close';
            Ten.Style.applyStyle(btn, c.closeButtonStyle);
            win.appendChild(btn);
            new Ten.Observer(btn, 'onclick', this, 'hide');
            this.closeButton = btn;
        }
        if (c.showScreen) {
            var screen = document.createElement('div');
            Ten.Style.applyStyle(screen, Ten.SubWindow._baseScreenStyle);
            Ten.Style.applyStyle(screen, c.screenStyle);
            document.body.appendChild(screen);
            this.screen = screen;
            new Ten.Observer(screen, 'onclick', this, 'hide');
        }
    },
    show: function(pos) {
        pos = (pos.x && pos.y) ? pos : {x:0, y:0};
        with (this.window.style) {
            display = 'block';
            left = pos.x + 'px';
            top = pos.y + 'px';
        }
        if (this.screen) {
            with (this.screen.style) {
                display = 'block';
                left = Ten.Geometry.getScroll().x + 'px';
                top = Ten.Geometry.getScroll().y + 'px';
            }
        }
        this.windowObserver = new Ten.Observer(document.body, 'onkeypress', this, 'handleEscape');
        this.visible = true;
    },
    handleEscape: function(e) {
        if (!e.isKey('escape')) return;
        this.hide();
    },
    hide: function() {
        if (this._draggable) this._draggable.endDrag();
        this.window.style.display = 'none';
        if (this.screen) this.screen.style.display = 'none';
        if (this.windowObserver) this.windowObserver.stop();
        this.visible = false;
    }
});

/* Ten.Draggable */
Ten.Draggable = new Ten.Class({
    initialize: function(element,handle) {
        this.element = element;
        this.handle = handle || element;
        this.startObserver = new Ten.Observer(this.handle, 'onmousedown', this, 'startDrag');
        this.handlers = [];
    }
},{
    startDrag: function(e) {
        if (e.targetIsFormElements()) return;
        this.delta = Ten.Position.subtract(
            e.mousePosition(),
            Ten.Geometry.getElementPosition(this.element)
        );
        this.handlers = [
            new Ten.Observer(document, 'onmousemove', this, 'drag'),
            new Ten.Observer(document, 'onmouseup', this, 'endDrag'),
            new Ten.Observer(this.element, 'onlosecapture', this, 'endDrag')
        ];
        e.stop();
    },
    drag: function(e) {
        var pos = Ten.Position.subtract(e.mousePosition(), this.delta);
        Ten.Style.applyStyle(this.element, {
            left: pos.x + 'px',
            top: pos.y + 'px'
        });
        e.stop();
    },
    endDrag: function(e) {
        for (var i = 0; i < this.handlers.length; i++) {
            this.handlers[i].stop();
        }
        if(e) e.stop();
    }
});

/* Hatena */
if (typeof(Hatena) == 'undefined') {
    Hatena = {};
}

/* Hatena.User */
Hatena.User = new Ten.Class({
    initialize: function(name) {
        this.name = name;
    },
    getProfileIcon: function(name) {
        if (!name) name = 'user';
        var pre = name.match(/^[\w-]{2}/)[0];
        var img = document.createElement('img');
        img.src = 'http://www.hatena.ne.jp/users/' + pre + '/' + name + '/profile_s.gif';
        img.alt = name;
        img.setAttribute('class', 'profile-icon');
        img.setAttribute('width','16px');
        img.setAttribute('height','16px');
        with (img.style) {
            margin = '0 3px';
            border = 'none';
            verticalAlign = 'middle';
        }
        return img;
    }
}, {
    profileIcon: function() {
        return Hatena.User.getProfileIcon(this.name);
    }
});

/* Hatena.Star */
if (typeof(Hatena.Star) == 'undefined') {
    Hatena.Star = {};
}

/*
// Hatena.Star.* classes //
**/
if (window.location && window.location.host.match(/hatena\.com/)) {
    Hatena.Star.BaseURL = 'http://s.hatena.com/';
} else {
    Hatena.Star.BaseURL = 'http://s.hatena.ne.jp/';
}
Hatena.Star.Token = null;

/* Hatena.Star.User */
Hatena.Star.User = new Ten.Class({
    base: [Hatena.User],
    initialize: function(name) {
        if (Hatena.Star.User._cache[name]) {
            return Hatena.Star.User._cache[name];
        } else {
            this.name = name;
            Hatena.Star.User._cache[name] = this;
            return this;
        }
    },
    _cache: {}
},{
    userPage: function() {
        return Hatena.Star.BaseURL + this.name + '/';
    }
});

/* Hatena.Star.Entry */
Hatena.Star.Entry = new Ten.Class({
    initialize: function(e) {
        this.entry = e;
        this.uri = e.uri;
        this.title = e.title;
        this.star_container = e.star_container;
        this.comment_container = e.comment_container;
        this.stars = [];
        this.comments = [];
    },
    maxStarCount: 11
},{
    flushStars: function() {
        this.stars = [];
        this.star_container.innerHTML = '';
    },
    bindStarEntry: function(se) {
        this.starEntry = se;
        for (var i = 0; i < se.stars.length; i++) {
            if (typeof(se.stars[i]) == 'number') {
                this.stars.push(new Hatena.Star.InnerCount(se.stars[i],this));
            } else {
                this.stars.push(new Hatena.Star.Star(se.stars[i]));
            }
        }
        if (se.comments && !this.comments.length) {
            for (var i = 0; i < se.comments.length; i++) {
                this.comments.push(new Hatena.Star.Comment(se.comments[i]));
            }
        }
        this.can_comment = se.can_comment;
    },
    setCanComment: function(v) {
        this.can_comment = v;
    },
    showButtons: function() {
        this.addAddButton();
        this.addCommentButton();
    },
    addAddButton: function() {
        if (this.star_container) {
            this.addButton = new Hatena.Star.AddButton(this);
            this.star_container.appendChild(this.addButton);
        }
    },
    addCommentButton: function() {
        if (this.comment_container) {
            this.commentButton = new Hatena.Star.CommentButton(this);
            this.comment_container.appendChild(this.commentButton.img);
        }
    },
    showStars: function() {
        var klass = this.constructor;
        // if (this.stars.length > klass.maxStarCount) {
        //     var ic = new Hatena.Star.InnerCount(this.stars.slice(1,this.stars.length));
        //     this.star_container.appendChild(this.stars[0]);
        //     this.star_container.appendChild(ic);
        //     this.star_container.appendChild(this.stars[this.stars.length - 1]);
        // } else {
        for (var i = 0; i < this.stars.length; i++) {
            this.star_container.appendChild(this.stars[i]);
        }
    },
    showCommentButton: function() {
        if (this.can_comment) {
            this.commentButton.show();
            if (this.comments.length) this.commentButton.activate();
        } else {
            // this.commentButton.hide();
        }
    },
    addStar: function(star) {
        this.stars.push(star);
        this.star_container.appendChild(star);
    },
    addComment: function(com) {
        if (!this.comments) this.comments = [];
        if (this.comments.length == 0) {
            this.commentButton.activate();
        }
        this.comments.push(com);
    },
    showCommentCount: function() {
        this.comment_container.innerHTML += this.comments.length;
    }
});

/* Hatena.Star.Button */
Hatena.Star.Button = new Ten.Class({
    createButton: function(args) {
        var img = document.createElement('img');
        img.src = args.src;
        img.alt = img.title = args.alt;
        with (img.style) {
	    cursor = 'pointer';
	    margin = '0 3px';
            padding = '0';
            border = 'none';
            verticalAlign = 'middle';
        }
        return img;
    }
});

/* Hatena.Star.AddButton */
Hatena.Star.AddButton = new Ten.Class({
    base: ['Hatena.Star.Button'],
    initialize: function(entry) {
        this.entry = entry;
        this.lastPosition = null;
        var img = Hatena.Star.Button.createButton({
            src: Hatena.Star.AddButton.ImgSrc,
            alt: 'Add Star'
        });
        this.observer = new Ten.Observer(img,'onclick',this,'addStar');
        this.img = img;
        return img;
    },
    ImgSrc: Hatena.Star.BaseURL + 'images/add.gif'
},{
    addStar: function(e) {
        this.lastPosition = e.mousePosition();
        var uri = Hatena.Star.BaseURL + 'star.add.json?uri=' + encodeURIComponent(this.entry.uri) +
            '&title=' + encodeURIComponent(this.entry.title);
        if (Hatena.Star.Token) {
            uri += '&token=' + Hatena.Star.Token;
        }
        new Ten.JSONP(uri, this, 'receiveResult');
    },
    receiveResult: function(args) {
        var name = args ? args.name : null;
        if (name) {
            this.entry.addStar(new Hatena.Star.Star({name: name}));
            //alert('Succeeded in Adding Star ' + args);
        } else if (args.errors) {
            var pos = this.lastPosition;
            pos.x -= 10;
            pos.y += 25;
            var scroll = Ten.Geometry.getScroll();
            var scr = new Hatena.Star.AlertScreen();
            var alert = args.errors[0];
            scr.showAlert(alert, pos);
        }
    }
});

/* Hatena.Star.CommentButton */
Hatena.Star.CommentButton = new Ten.Class({
    base: ['Hatena.Star.Button'],
    initialize: function(entry) {
        this.entry = entry;
        this.lastPosition = null;
        var img = Hatena.Star.Button.createButton({
            src: Hatena.Star.CommentButton.ImgSrc,
            alt: 'Comments'
        });
        img.style.display = 'none';
        this.observer = new Ten.Observer(img,'onclick',this,'showComments');
        this.img = img;
    },
    ImgSrc: Hatena.Star.BaseURL + 'images/comment.gif',
    ImgSrcActive: Hatena.Star.BaseURL + 'images/comment_active.gif'
},{
    showComments: function(e) {
        if (!this.screen) this.screen = new Hatena.Star.CommentScreen();
        this.screen.bindEntry(this.entry);
        var pos = e.mousePosition();
        pos.y += 25;
        this.screen.showComments(this.entry, pos);
    },
    hide: function() {
        this.img.style.display = 'none';
    },
    show: function() {
        this.img.style.display = 'inline';
    },
    activate: function() {
        this.show();
        this.img.src = Hatena.Star.CommentButton.ImgSrcActive;
    }
});

/* Hatena.Star.Star */
Hatena.Star.Star = new Ten.Class({
    initialize: function(args) {
        if (args.img) {
            this.img = args.img;
            this.name = this.img.getAttribute('alt');
        } else {
            this.name = args.name;
            var img = document.createElement('img');
            img.src = Hatena.Star.Star.ImgSrc;
            img.alt = this.name;
            with (img.style) {
                padding = '0';
                border = 'none';
            }
            this.img = img;
        }
	new Ten.Observer(this.img,'onmouseover',this,'showName');
	new Ten.Observer(this.img,'onmouseout',this,'hideName');
	if (this.name) {
            this.user = new Hatena.Star.User(this.name);
            this.img.style.cursor = 'pointer';
            new Ten.Observer(this.img,'onclick',this,'goToUserPage');
        }
        if (args.count && args.count > 1) {
            var c = document.createElement('span');
            c.setAttribute('class', 'hatena-star-inner-count');
            Ten.Style.applyStyle(c, Hatena.Star.InnerCount.style);
            c.innerHTML = args.count;
            var s = document.createElement('span');
            s.appendChild(img);
            s.appendChild(c);
            return s;
        } else {
            return this.img;
        }
    },
    ImgSrc: Hatena.Star.BaseURL + 'images/star.gif'
},{
    showName: function(e) {
        if (!this.screen) this.screen = new Hatena.Star.NameScreen();
        var pos = e.mousePosition();
        pos.x += 10;
        pos.y += 25;
        this.screen.showName(this.name, pos);
    },
    hideName: function() {
        if (!this.screen) return;
        this.screen.hide();
    },
    goToUserPage: function() {
        window.location = this.user.userPage();
    }
});

/* Hatena.Star.InnerCount */
Hatena.Star.InnerCount = new Ten.Class({
    initialize: function(count, e) {
        this.count = count;
        this.entry = e;
        var c = document.createElement('span');
        c.setAttribute('class', 'hatena-star-inner-count');
        Ten.Style.applyStyle(c, Hatena.Star.InnerCount.style);
        c.style.cursor = 'pointer';
        c.innerHTML = count;
        new Ten.Observer(c,'onclick',this,'showInnerStars');
        this.container = c;
        return c;
    },
    style: {
        color: '#f4b128',
        fontWeight: 'bold',
        fontSize: '80%',
        fontFamily: '"arial", sans-serif',
        margin: '0 2px'
    }
},{
    showInnerStars: function() {
        var url = Hatena.Star.BaseURL + 'entry.json?uri=' +
        encodeURIComponent(this.entry.uri);
        new Ten.JSONP(url, this, 'receiveStarEntry');
    },
    receiveStarEntry: function(res) {
        var se = res.entries[0];
        var e = this.entry;
        if (encodeURIComponent(se.uri) != encodeURIComponent(e.uri)) return;
        e.flushStars();
        e.bindStarEntry(se);
        e.addAddButton();
        e.showStars();
    }
});

/* Hatena.Star.Comment */
Hatena.Star.Comment = new Ten.Class({
    initialize: function(args) {
        this.name = args.name;
        this.body = args.body;
    }
},{
    asElement: function() {
        var div = document.createElement('div');
        with (div.style) {
            margin = '0px 0';
            padding = '5px 0';
            borderBottom = '1px solid #ddd';
        }
        var ico = Hatena.User.getProfileIcon(this.name);
        div.appendChild(ico);
        var span = document.createElement('span');
        with(span.style) {
            fontSize = '90%';
        }
        span.innerHTML = this.body;
        div.appendChild(span);
        return div;
    }
});

/* Hatena.Star.NameScreen */
Hatena.Star.NameScreen = new Ten.Class({
    base: [Ten.SubWindow],
    style: {
        padding: '2px',
        textAlign: 'center'
    },
    containerStyle: {
        margin: 0,
        padding: 0
    },
    handleStyle: null,
    showScreen: false,
    closeButton: null,
    draggable: false
},{
    showName: function(name, pos) {
        this.container.innerHTML = '';
        this.container.appendChild(Hatena.User.getProfileIcon(name));
        this.container.appendChild(document.createTextNode(name));
        this.show(pos);
    }
});

/* Hatena.Star.AlertScreen */
Hatena.Star.AlertScreen = new Ten.Class({
    base: [Ten.SubWindow],
    style: {
        padding: '2px',
        textAlign: 'center',
        borderRadius: '6px',
        MozBorderRadius: '6px',
        width: '240px',
        height: '120px'
    },
    handleStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        backgroundColor: '#f3f3f3',
        borderBottom: '1px solid #bbb',
        width: '100%',
        height: '30px',
        borderRadius: '6px 6px 0 0',
        MozBorderRadius: '6px 6px 0 0'
    }
},{
    showAlert: function(msg, pos) {
        this.container.innerHTML = msg;
        var win = Ten.Geometry.getWindowSize();
        var scr = Ten.Geometry.getScroll();
        var w = parseInt(this.constructor.style.width) + 20;
        if (pos.x + w > scr.x + win.w) pos.x = win.w + scr.x - w;
        this.show(pos);
    }
});

/* Hatena.Star.CommentScreen */
Hatena.Star.CommentScreen = new Ten.Class({
    base: [Ten.SubWindow],
    initialize: function() {
        var self = this.constructor.SUPER.call(this);
        if (!self.commentsContainer) self.addCommentsContainer();
        return self;
    },
    style: {
        width: '280px',
        height: '280px',
        overflowY: 'auto',
        padding: '2px',
        textAlign: 'center',
        borderRadius: '6px',
        MozBorderRadius: '6px'
    },
    handleStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        backgroundColor: '#f3f3f3',
        borderBottom: '1px solid #bbb',
        width: '100%',
        height: '30px',
        borderRadius: '6px 6px 0 0',
        MozBorderRadius: '6px 6px 0 0'
    },
    containerStyle: {
        margin: '32px 0 0 0',
        textAlign: 'left',
        padding: '0 10px'
    },
    getLoadImage: function() {
        var img = document.createElement('img');
        img.src = Hatena.Star.BaseURL + 'images/load.gif';
        img.setAttribute('alt', 'Loading');
        with (img.style) {
            verticalAlign = 'middle';
            margin = '0 2px';
        }
        return img;
    }
},{
    addCommentsContainer: function() {
        var div = document.createElement('div');
        with (div.style) {
            marginTop = '-3px';
        }
        this.container.appendChild(div);
        this.commentsContainer = div;
    },
    showComments: function(e, pos) {
        var comments = e.comments;
        if (!comments) comments = [];
        this.commentsContainer.innerHTML = '';
        for (var i=0; i<comments.length; i++) {
            this.commentsContainer.appendChild(comments[i].asElement());
        }
        if (e.starEntry && !e.can_comment) {
            this.hideCommentForm();
        } else {
            this.addCommentForm();
        }
        var win = Ten.Geometry.getWindowSize();
        var scr = Ten.Geometry.getScroll();
        var w = parseInt(this.constructor.style.width) + 20;
        if (pos.x + w > scr.x + win.w) pos.x = win.w + scr.x - w;
        this.show(pos);
    },
    bindEntry: function(e) {
        this.entry = e;
    },
    sendComment: function(e) {
        if (!e.isKey('enter')) return;
        var body = this.commentInput.value;
        if (!body) return;
        this.commentInput.disabled = 'true';
        this.showLoadImage();
        var url = Hatena.Star.BaseURL + 'comment.add.json?body=' + encodeURIComponent(body) +
            '&uri=' + encodeURIComponent(this.entry.uri) +
            '&title=' + encodeURIComponent(this.entry.title);
        new Ten.JSONP(url, this, 'receiveResult');
    },
    receiveResult: function(args) {
        if (!args.name || !args.body) return;
        this.commentInput.value = ''; 
        this.commentInput.disabled = '';
        this.hideLoadImage();
        var com = new Hatena.Star.Comment(args);
        this.entry.addComment(com);
        this.commentsContainer.appendChild(com.asElement());
    },
    showLoadImage: function() {
        if (!this.loadImage) return; 
        this.loadImage.style.display = 'inline';
    },
    hideLoadImage: function() {
        if (!this.loadImage) return; 
        this.loadImage.style.display = 'none';
    },
    hideCommentForm: function() {
        if (!this.commentForm) return;
        this.commentForm.style.display = 'none';
    },
    addCommentForm: function() {
        if (this.commentForm) {
            this.commentForm.style.display = 'block';
            return;
        }
        var form = document.createElement('div');
        this.container.appendChild(form);
        this.commentForm = form;
        with (form.style) {
            margin = '0px 0';
            padding = '5px 0';
            // borderTop = '1px solid #ddd';
        }
        //if (Hatena.Visitor) {
        //    form.appendChild(Hatena.Visitor.profileIcon());
        //} else {
        //    form.appendChild(Hatena.User.getProfileIcon());
        //}
        var input = document.createElement('input');
        input.type = 'text';
        with (input.style) {
            width = '215px';
	    border = '1px solid #bbb';
            padding = '3px';
        }
        form.appendChild(input);
        this.commentInput = input;
        var img = this.constructor.getLoadImage();
        this.loadImage = img;
        this.hideLoadImage();
        form.appendChild(img);
        new Ten.Observer(input,'onkeypress',this,'sendComment');
    }
});

/* Hatena.Star.EntryLoader */
Hatena.Star.EntryLoader = new Ten.Class({
    initialize: function() {
        var entries = Hatena.Star.EntryLoader.loadEntries();
        this.entries = [];
        for (var i = 0; i < entries.length; i++) {
            var e = new Hatena.Star.Entry(entries[i]);
            e.showButtons();
            this.entries.push(e);
        }
        this.getStarEntries();
    },
    createStarContainer: function() {
        var sc = document.createElement('span');
        sc.setAttribute('class', 'hatena-star-star-container');
        sc.style.marginLeft = '1px';
        return sc;
    },
    createCommentContainer: function() {
        var cc = document.createElement('span');
        cc.setAttribute('class', 'hatena-star-comment-container');
        cc.style.marginLeft = '1px';
        return cc;
    },
    scrapeTitle: function(node) {
        var rval = [];
        (function (node) {
            if (node.tagName == 'SPAN' &&
                (node.className == 'sanchor' ||
                 node.className == 'timestamp')) {
                     return;
            } else if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
                return;
            }
            var cn = node.childNodes;
            if (cn) {
                for (var i = 0; i < cn.length; i++) {
                    arguments.callee.call(this, cn[i]);
                }
            }
            var nodeValue = node.nodeValue;
            if (typeof(nodeValue) == 'string') {
                rval.push(nodeValue);
            }
        })(node);
        return rval.join('');
    },
    headerTagAndClassName: ['h3',null],
    getHeaders: function() {
        var t = Hatena.Star.EntryLoader.headerTagAndClassName;
        return Ten.DOM.getElementsByTagAndClassName(t[0],t[1],document);
    },
    loadEntries: function() {
        var entries = [];
        //var headers = document.getElementsByTagName('h3');
        var c = Hatena.Star.EntryLoader;
        var headers = c.getHeaders();
        for (var i = 0; i < headers.length; i++) {
            var header = headers[i];
            var a = header.getElementsByTagName('a')[0];
            if (!a) continue;
            var uri = a.href;
            var title = '';
            // Ten.DOM.removeEmptyTextNodes(header);
            var cns = header.childNodes;
            title = c.scrapeTitle(header);
            var cc = c.createCommentContainer();
            header.appendChild(cc);
            var sc = c.createStarContainer();
            header.appendChild(sc);
            entries.push({
                uri: uri,
                title: title,
                star_container: sc,
                comment_container: cc
            });
        }
        return entries;
    }
},{
    getStarEntries: function() {
        var url = Hatena.Star.BaseURL + 'entries.json?';
        for (var i = 0; i < this.entries.length; i++) {
            if (url.length > Ten.JSONP.MaxBytes) {
                new Ten.JSONP(url, this, 'receiveStarEntries');
                url = Hatena.Star.BaseURL + 'entries.json?';
            }
            url += 'uri=' + encodeURIComponent(this.entries[i].uri) + '&';
        }
        new Ten.JSONP(url, this, 'receiveStarEntries');
    },
    receiveStarEntries: function(res) {
        var entries = res.entries;
        if (!entries) entries = [];
        for (var i = 0; i < this.entries.length; i++) {
            var e = this.entries[i];
            for (var j = 0; j < entries.length; j++) {
                var se = entries[j];
                if (!se.uri) continue;
                if (encodeURIComponent(se.uri) == encodeURIComponent(e.uri)) {
                    e.bindStarEntry(se);
                    entries.splice(j,1);
                    break;
                }
            }
            if (typeof(e.can_comment) == 'undefined') {
                e.setCanComment(res.can_comment);
            }
            e.showStars();
            e.showCommentButton();
        }
    }
});

/* Hatena.Star.WindowObserver */
Hatena.Star.WindowObserver = new Ten.Class({
    initialize: funct


  

2007-02-09

YouTubeにアップしたビデオ削除された。

Google中の人たちが日本テレビ局と交渉した翌日の出来事。

そんでYouTubeからメールが来てた。折角なんでここに置いておきますね。

差出人名義 <DMCA Complaints> copyright_counternotice@youtube.com

件名    Video Removed: Copyright Infringement

YouTube | Broadcast Yourself™

Dear Member:

This is to notify you that we have removed or disabled access to the following material as a result of a third-party notification by (某民放局), Inc. claiming that this material is infringing:

クリップ名): http://www.youtube.com/watch?v=クリップID

Please Note: Repeat incidents of copyright infringement will result in the deletion of your account and all videos uploaded to that account. In order to avoid future strikes against your account, please delete any videos to which you do not own the rights, and refrain from uploading additional videos that infringe on the copyrights of others. For more information about YouTube's copyright policy, please read the Copyright Tips guide.

If you elect to send us a counter notice, to be effective it must be a written communication provided to our designated agent that includes substantially the following (please consult your legal counsel or see 17 U.S.C. Section 512(g)(3) to confirm these requirements):

A physical or electronic signature of the subscriber.

Identification of the material that has been removed or to which access has been disabled and the location at which the material appeared before it was removed or access to it was disabled.

A statement under penalty of perjury that the subscriber has a good faith belief that the material was removed or disabled as a result of mistake or misidentification of the material to be removed or disabled.

The subscriber's name, address, and telephone number, and a statement that the subscriber consents to the jurisdiction of Federal District Court for the judicial district in which the address is located, or if the subscriberis address is outside of the United States, for any judicial district in which the service provider may be found, and that the subscriber will accept service of process from the person who provided notification under subsection (c)(1)(C) or an agent of such person.

Such written notice should be sent to our designated agent as follows:

DMCA Complaints

YouTube, Inc.

1000 Cherry Ave.

Second Floor

San Bruno, CA 94066

Email: copyright@youtube.com

Please note that under Section 512(f) of the Copyright Act, any person who knowingly materially misrepresents that material or activity was removed or disabled by mistake or misidentification may be subject to liability.

Sincerely,

YouTube, Inc.

 
ログイン ユーザー登録
ようこそ ゲスト さん