「COPYRIGHT」を含む日記 RSS

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

2010-01-23

http://anond.hatelabo.jp/20100123122405

海賊版Windowsを使っている、Officeを使っている、Photoshopを使っているetc

は盗用ではなく、もはや窃盗だね。

オープンソースコードコピペして、Copyrightだけを書き換えて販売するのが盗用。アウト。

オープンソースを読み込んで、新たに作りなおすのはセーフ。

 

いずれにしろ、きちんと、内部告発なりなんなり、して欲しいもの。

2009-11-14

ブログスカウトのペイパーポスト依頼メール

【緊急募集!】Amazonギフト券1,000円分・地域情報サイトリニューアルオープンにつき登録ブロガーさん大募集!

こんにちはブログスカウト事務局からのお知らせです。

11月17日(火)47都道府県観光情報など、

地域についてのブログ記事が集まる

ブログポータルサイトリニューアルオープンいたします。

今回は、このポータルサイトに登録いただける方を募集いたします!

以下の詳細をご覧の上、ふるってご応募ください。

(応募者多数の場合は審査とさせていただきます

ご注意

1.本メールは「参加者事前募集」です。ブログへの掲載はお控えください。

2.お申込みフォームには本メールを受信したメールアドレス入力ください。

※応募期限は 11月16日(月)AM10:00 まで!

  • <企画全体の流れ>----------------------------------------------

1.まずは以下の詳細をご確認ください。

2.ご参加いただける場合は、フォームに必要事項をご入力ください。

3.事務局にてブログ登録後、謝礼をお送りいたします。

------------------------------------------------------------------

詳細を以下にてお知らせいたします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

サイト名】「観光navi

URLhttp://itp.ne.jp/contents/kankonavi/

(運営:NTT番号情報株式会社

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

■説明:

NTT番号情報「iタウンページ」のコンテンツ観光navi」が

11月17日(火)にリニューアルオープン

全国各地の地元ブロガーさんならではのブログ記事が集まる

より楽しいサイトバージョンアップします。

ブログを登録していただくと、

普段更新している記事が「観光navi」に自動で掲載されて

より多くの人に記事を読んでもらうことができます!

また「観光navi」に登録しているブロガーさん同士で

情報交換をすれば、よりブログ更新が楽しくなるかも!?

登録料や手数料は一切かかりません。

※これまでに、同じ仕組みで

このようなブログポータルサイト制作しました↓

女性たちが語り明かす日常の出来事が集まる

「ここぷり ~こころはいつもプリンセス~」

http://www.cocopri.jp/

大阪周辺の地域情報クチコミグルメ情報が集まるブログポータル

「おおさか遊ぶろぐ」

http://www.osaka-asoblog.jp/ など

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【お願いしたいこと】「観光navi」にブログを登録させてください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

観光navi」のためのブログポータルサイト観光navi」が

11月17日(火)にリニューアルオープンします!

この「観光navi」へブログを登録させてください。

地域情報を知りたい人がたくさん訪問してくるので、

ブログの注目度を高めるチャンス♪

メール文末で案内しているフォームから、ぜひお申込ください!

(応募者多数の場合は審査とさせていただきます

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【ご確認ください】ブログRSS設定を変更していただく場合がございます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

観光navi」で更新された記事の全文を見られるようにするために

一部のブロガーさんには、RSS設定の変更をお願いする場合がございます。

FC2ブログ

ココログ

ヤプログ!

はてなダイアリー

エキサイトブログ

などのブログは、RSS情報が配信する記事データを「全文」に

設定をお願いさせていただきます

手順はブログスカウト事務局より、

改めてご連絡をさせていただきますのでどうぞよろしくお願いいたします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【さらに!】 月に2回出されるお題で記事を書くと・・・

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

メールで月に2回出題される記事掲載のお題に対して、

ご応募をいただいた方、毎回先着10名様に記事掲載を

ご依頼させていただきます

条件を満たしている記事掲載が確認できた方に

「登録謝礼1,000円」とは別にその都度謝礼をお贈りいたします。

※違うお題であれば、毎回ご応募いただいてOK!

詳しくは掲載依頼メールをご確認ください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【ご登録いただいたお礼】Amazonギフト券1,000円分をお送りします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

お礼に【Amazonギフト券1,000円分】をお送りさせていただきます

※応募者多数の場合は審査とさせていただきます

※「Amazonギフト券」って・・・?

ネットショッピングサイトAmazon.co.jp」で利用できる

Amazonギフト券」をEメールでお送りします。商品を選んで、

精算時に記載されているギフト券番号を入力いただくと、

商品を購入することができます。

詳細: http://www.amazon.co.jp/gp/help/customer/display.html?nodeId=642976#use-ordering

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【参加のお返事について】

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

★ご参加いただける場合は、以下のURLのフォームから

ご連絡先を入力ください。

https://repo.jp/blogscout/kknv_agree.html

【応募〆切 11月16日(月)AM10:00まで】

※応募者多数の場合は審査の上、

11月17日(火)までに当選のご連絡をさせていただきます

※ご入力いただいた情報は、弊社規定に基づき、

弊社内、かつ、本件に関してのみ使用させていただきます

その他、ご不明点やご不安な点などございましたら、

お気軽にメールをください。

ikeda-kn@media.writeup.co.jp

それでは、どうぞよろしくお願い申し上げます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

【お問い合わせはこちら】

ブログスカウト事務局 http://blogscout.jp/

ikeda-nb@media.writeup.co.jp [ブログスカウト事務局]

※このメールに書かれた内容の無断転載、無断複製を禁じます。

Copyright(C) 2009 Writeup Co.,Ltd. All rights reserved.

※「もっとブログ生活ブログ」絶賛更新中!※

http://media.writeup.co.jp/official/

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2009-09-24

みんなの農園の「RAKOO」とサンシャイン牧場の「Rekoo」はどんな関係?

どちらも中国系らしいんだが詳しい事がわからない…

サンシャイン牧場は51.comの阳光牧场と同じっぽい(http://www.rekoo.com/

みんなの農園はもともと中国SNS「開心網」の農場ゲームらしい(http://mixiapp.blog45.fc2.com/blog-entry-85.html)RAKOOの採用ページでも「中国北京の開発チームと連携したサービスの企画・開発やサービスの運営を行います。」(http://www.rakoo.co.jp/recruit.html)と書かれているけど、どこと提携してるのかよくわからない。

さらに「開心農場」の「楽しい農夫」ともうめちゃくちゃですね(http://mixiapp.blog45.fc2.com/blog-entry-89.html

ゲーム提供で好調なFacebookのそっくりサイト、早くも海賊版が登場

 中国Facebook、いや、むしろFacebookにそっくりなサイトというべきデザインSNSサイト「校内網」が人気だ。「校内網」は会員向けゲーム「開心農場」をリリースしたことで、毎週10万元(140万円)の収益が出るほど盛り上がっていると報じられたことで、広告以外で儲かるSNSサービスの新しいビジネスモデルとして、にわかに注目が集まっている。

 一方で、「開心農民」「陽光牧場」など、「校内網」が提供するゲーム「開心農場」とデザインやコンセプトが酷似したゲームが早くも登場している。魅力的な付加サービスを追加して人気を集めると、必ずといっていいほど海賊版が登場するため、新しいビジネスモデルもそう容易ではないようだ。

http://internet.watch.impress.co.jp/static/column/m_china/2009/03/06/index.htm

結局中国内のパクりパクられがそのまま日本上陸したってこと?


とりあえず、Copyright 2007-2008 © ReKoo.comの中国語サイトと紛らわしい名前つけて2009年からはじめたrakoo.jpは今すぐ名前変えるべきじゃないですかね。こんな話もあるようだし使いたくなくなるよ。

2009-07-11

エロ漫画言及しているブロガー達はそろそろこの辺にも触れとくべき

タイトルが途中で切れてしまった。本当は、

エロ漫画言及しているブロガー達はそろそろこの辺にも触れとくべきなんじゃねーの?

なんとなく便乗

http://anond.hatelabo.jp/20090711161753

最近オタ系の個人ニュースサイトでも、割とおおっぴらにエロ漫画レビューなんかへのリンクを見かけるようになった気がする。まれに「怪作」とでも呼ぶべき代物が登場する分野なので、それはそれで不快だと思った事はない。エロ漫画レビュー専門のブログなんかもたまに見かけるようになった。

んで個人的に、そろそろこの界隈の人達も、何らかの認識を一致させておく必要があるんじゃないかと思う事案があるわけ。P2Pで大量に出回ってる漫画ファイル

あれ凄いわ。発売直後に速攻で流れるんだもん。人気のありそうな物は片っ端から、殆ど全て。中には、秋葉原あたりで発売日前にフラゲして、そのまま発売日前にばらまかれる事すらある。人気漫画家に限れば発売から10日以内に流れる確率70%。一ヶ月以内に流れる確率90%って感じ(俺の個人的印象)。

ちなみに、先月の成年コミック(黄色いマークがついてるやつ)の流出状況はこんな感じだ。

タイトル(一部伏せ字)作者(一部伏せ字)発売日推定流出時期
**の夜*玄6/19発売1日前
****されたい****たかし6/26発売4日後
****のつくり方**の者6/17発売12日後
****な日6/27発売2日後
***性活!**Q弥6/17発売9日後
*****・はらみっくす**しゅん6/10発売16日後
****じゃダメかしら?***えい6/19発売9日後
**** *****と妹の…!なコト**かづき6/25発売6日後
新装版 ***ママ*六6/25発売9日後
***嫁**あるちゅ6/29発売6日後
覚えたて**・フィーユ6/5発売6日後
****プリンセス!!*****宝田6/27発売4日後
そんっなに**させたいの?*****宝田6/27発売4日後
**** DOLL*安6/1発売1日前
**はら**薯6/1発売34日後

こういう状況が未だに放置され続けているわけよ。放置されているものだから、「出版社に通報してもあいつらは絶対に動かない。警察が動くと自分達が困るからだ」と、まるでヤクザチンピラ言いがかりみたいにやりたい放題やってるわけだ。

自腹でエロ漫画レビューしてる人達は、自分達が身を置く文化圏の中にこういう奴らが少なからず混じっている事に対して、そろそろ何らかの見解を示すべきなんじゃないか?

それと、出版社がこういう不法行為を黙認している理由が全く分からない。出版不況が叫ばれているこのご時世だから、知っていて黙認しているとはとても思えない。仮に知らないのであれば、ネット親和性の高いオタク相手の商売の割りに鈍いとしか思えない。かといって、批判するだけじゃあ何も生み出さないわけで、せめて「違法アップロード許すまじ!」の声を上げて、出版社漫画家へのアピールをすべきなんじゃなかろうか。

追記

guldeen これはひどい, copyright, p2p, comic, ero エロ漫画家ひんでんブルグ氏も自分ブログでちらっと触れてたが、例えば中華圏など「訴訟しても賠償金がロクに得られない」国で主にワレズされてるってのが問題。作者に利益が来ないフリーライド問題は根が深い。 2009/07/13

そういうブツってのも、日本P2Pアップローダーから流出した物が出所だったりするけどね。

http://anond.hatelabo.jp/20090713192556

エロゲソフトみたいな単価高いものだと違法DLの影響力はハンパないけど、エロマンガ同人誌みたいな、せいぜい単価1000円の品の場合は、違法DLがあってもなくてもさして変わるもんじゃないと思います。

たとえそうであっても、正当な権利を持っている出版社漫画家が黙認する理由にはなり得ないな。著作権侵害されているのは確定的に明らかなんだからさ。

それと、出版業界自体が全体的に右肩下がりの状況で、エロ分野なんてのはまさにそれがモロに出ているわけで、「犯人捜し」の結果として違法アップロードやり玉に挙げられて、業界全体がダウンロード違法化に傾かないとも限らんだろう。

2009-05-18

http://anond.hatelabo.jp/20090518173917

元々、インターネットというのは、学者さんたちが、自分たちの研究成果を蓄積して共有するために作った場所だから、インターネット上に存在しているものは、すべて「人類の共有財産だ」というのはどう思う?

建築目的はこの際関係ない。この道は参勤交代のために作られたものだから……並みに意味がない。TCP/IP を策定したのは学者であっても現在回線を維持してるのは営利企業だし。もっとも当初からライセンスを使ってそういう利用条件を義務付けておけば面白い展開が見られたかもね。全コンテンツに対してパブリックドメイン化を強制するみたいな。商用ネットとしては使いづらそうだけど歴史的IF論や立法論としては面白いと思う。無断でアップロードする奴をどう事前に遮断するかが肝だろうね。

増田の杜」自身は著作権を主張しているよ。何についてのRightsだが知らんが自分の権利は守ってほしいみたいだ。

copyright© 2007 (新)増田の杜 All Rights Reserved

2009-03-10

http://anond.hatelabo.jp/20090310151821

貧乏人は飢えて死ねという虐殺独裁者buyobuyo

「話は聞かせてもらったぞ

y_arimはシベリア送りだ」

http://anond.hatelabo.jp/20090309232518

http://s03.megalodon.jp/2009-0309-2323-15/b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20090307040202

buyobuyo 死ねばいいのに 飢えてしんじゃえよ。 2009/03/09

http://anond.hatelabo.jp/20090309225846

http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20090309225846

y_arim anonymous, music, copyright, freedom, capitalism そもそも「はてサ」の中には左翼もいればリベラリストもいるわけで。buyobuyo氏はリベラリスト寄りでしょう。あと「左翼」にも穏健なのからアナーキストまでよりどりみどりで、全然一枚岩じゃない。



ちょっと変えてみた

独裁者buyobuyo

buyobuyo

「話は聞かせてもらったぞ

y_arimはシベリア送りだ」

http://anond.hatelabo.jp/20090309232518

http://s03.megalodon.jp/2009-0309-2323-15/b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20090307040202

buyobuyo 死ねばいいのに 飢えてしんじゃえよ。 2009/03/09

http://anond.hatelabo.jp/20090309225846

http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20090309225846

y_arim anonymous, music, copyright, freedom, capitalism そもそも「はてサ」の中には左翼もいればリベラリストもいるわけで。buyobuyo氏はリベラリスト寄りでしょう。あと「左翼」にも穏健なのからアナーキストまでよりどりみどりで、全然一枚岩じゃない。

buyobuyoはリベラリストじゃなくてスターリニストだろjk

http://anond.hatelabo.jp/20090309225846

http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20090309225846

y_arim anonymous, music, copyright, freedom, capitalism そもそも「はてサ」の中には左翼もいればリベラリストもいるわけで。buyobuyo氏はリベラリスト寄りでしょう。あと「左翼」にも穏健なのからアナーキストまでよりどりみどりで、全然一枚岩じゃない。

http://anond.hatelabo.jp/20090309232518

http://s03.megalodon.jp/2009-0309-2323-15/b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20090307040202

buyobuyo 死ねばいいのに 飢えてしんじゃえよ。 2009/03/09

死ねばいいのに 飢えてしんじゃえよ。」

こんな事スターリンしかいわねーよwwwwwwwww

http://anond.hatelabo.jp/20090309225846

y_arim anonymous, music, copyright, freedom, capitalism そもそも「はてサ」の中には左翼もいればリベラリストもいるわけで。buyobuyo氏はリベラリスト寄りでしょう。あと「左翼」にも穏健なのからアナーキストまでよりどりみどりで、全然一枚岩じゃない。

はてサヨクとはてリベラリストってどう違うの?

有村

「話は聞かせてもらったぞ

buyobuyoはシベリア送りだ」

http://anond.hatelabo.jp/20090309225846

はてサヨクとはてリベラリストってどう違うの?

説明責任どこー?

有村スターリンみたいに独裁して決めてるの~?

y_arim anonymous, music, copyright, freedom, capitalism そもそも「はてサ」の中には左翼もいればリベラリストもいるわけで。buyobuyo氏はリベラリスト寄りでしょう。あと「左翼」にも穏健なのからアナーキストまでよりどりみどりで、全然一枚岩じゃない。

http://anond.hatelabo.jp/20090309225846

はてサはてな虐殺サヨクキタ━ヾ(   )ノ゛ヾ( ゚д)ノ゛ヾ(゚д゚)ノ゛ヾ(д゚ )ノ゛ヾ(  )ノ゛━━!!

http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20090309225846

y_arim anonymous, music, copyright, freedom, capitalism そもそも「はてサ」の中には左翼もいればリベラリストもいるわけで。buyobuyo氏はリベラリスト寄りでしょう。あと「左翼」にも穏健なのからアナーキストまでよりどりみどりで、全然一枚岩じゃない。

ポル・ポトサヨクじゃない

スターリンサヨクじゃない

高橋直樹サヨクじゃない

・buyobuyoはサヨクじゃない

http://anond.hatelabo.jp/20090310131522

ダイレクトに変更

http://anond.hatelabo.jp/20090309225846

はてサはてな虐殺サヨクキタ━ヾ(   )ノ゛ヾ( ゚д)ノ゛ヾ(゚д゚)ノ゛ヾ(д゚ )ノ゛ヾ(  )ノ゛━━!!

http://anond.hatelabo.jp/20090310131522

http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20090309225846

ツリーに入れといた



id:y_arimへ

id:y_arim anonymous, music, copyright, freedom, capitalism そもそも「はてサ」の中には左翼もいればリベラリストもいるわけで。buyobuyo氏はリベラリスト寄りでしょう。あと「左翼」にも穏健なのからアナーキストまでよりどりみどりで、全然一枚岩じゃない。

はてサヨクとはてリベラリストってどう違うの?

説明責任どこー?

http://anond.hatelabo.jp/20090310131522



これは俺も聞きたい>有村

id:y_arimへ

id:y_arim anonymous, music, copyright, freedom, capitalism そもそも「はてサ」の中には左翼もいればリベラリストもいるわけで。buyobuyo氏はリベラリスト寄りでしょう。あと「左翼」にも穏健なのからアナーキストまでよりどりみどりで、全然一枚岩じゃない。

はてサヨクとはてリベラリストってどう違うの?

説明責任どこー?

http://anond.hatelabo.jp/20090310131522

はてサはてな虐殺サヨクキタ━ヾ(   )ノ゛ヾ( ゚д)ノ゛ヾ(゚д゚)ノ゛ヾ(д゚ )ノ゛ヾ(  )ノ゛━━!!

http://b.hatena.ne.jp/entry/http://anond.hatelabo.jp/20090309225846

y_arim anonymous, music, copyright, freedom, capitalism そもそも「はてサ」の中には左翼もいればリベラリストもいるわけで。buyobuyo氏はリベラリスト寄りでしょう。あと「左翼」にも穏健なのからアナーキストまでよりどりみどりで、全然一枚岩じゃない。

ポル・ポトサヨクじゃない

スターリンサヨクじゃない

高橋直樹サヨクじゃない

・buyobuyoはサヨクじゃない




都合の悪い連中は都合が悪くなった後にサヨクから外すはてサwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

2009-01-24

http://takekuma.cocolog-nifty.com/blog/2009/01/post-50a2.html

 さらにMさんの説明で面白いと思ったのは、この会社ダウンロード販売しているデータ普通PDFファイルで、一切のプロテクトをかけておらずコピーも自由なのだが、その代わり

全ページに購入したユーザー名が入る

仕様になっているのだそうで、もし不正コピーネットに流出したら、即、誰に販売したデータなのかがわかるようになっているのだそうです。

これで思い出したけど、AIP系の雑誌オンライン論文も、PDFで落とすと全てページに、

下記のようにDL情報が入って、少なくとも威圧感は発揮してるわ(下記はJAPの例, XXXはDLした端末のIPアドレス)。

http://journals.aip.org/

Downloaded 24 Jan 2009 to XXX.XXX.XXX.XXX. Redistribution subject to AIP license or copyright; see http://jap.aip.org/jap/copyright.jsp


学術論文って、多くの雑誌ではライセンス上はいろんな制限が課されてて(紙でもオンラインでも、本当はかなり制限があるんだけど)、

たとえばオンラインの場合でも1論文あたり$10くらいで購入するか、自分がその学会の会員だとかでアクセス権があるか、

もしくは所属機関がサイトライセンスを買ってくれていれば(見かけ上)ほぼフリーアクセスになったりする。

ところが、その論文アクセス代がバカにならなかったり(さまよってるうちに数十の論文を落として読み比べてたり)、

サイトライセンスを持ってない貧乏機関に所属してたりすると、認証がすごく面倒だったりする。

で、(本当はお互いにライセンス違反なんだけど)サイトライセンスが使える機関に所属している知り合いにお願いして

入手代行をお願いしたりして・・・PDFだからオンラインコピーは自由だし・・・って、アッー!な話なわけで。

でもDL情報、ましてIPアドレスが入っていると、

IPアドレスで所属機関と研究室がバレる→所属機関まるごと処分対象→コピッた研究者もバレる→期間内でも白い目で見られる

って流れになるのがわかってるので、ある程度の抑制と自粛を図る気にはなるなぁ、と。

2008-12-27

Re: anond:20081227163226

こういうこと?

Python 2.6 (r26:66721, Oct  2 2008, 11:35:03) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> spam = "egeegeegeggeeegeee"
>>> "egg" in spam
True
>>> spam = "egegegeeegeeeegege"
>>> "egg" in spam
False

2008-10-15

http://anond.hatelabo.jp/20081015164921

でも、まるで自分に著作権があるように他人の著作物である画像を表示させてたらアウトだろうなあ。

たとえば画像を呼び出しているページ内にこう書いてるとか。

Copyright (C)ページ製作者  All rights reserved.

これは、コンテンツ全てに(表示させている画像にも)著作権を持っているのだと思われかねない表記だから。

2008-08-17

そもそも二次創作って嫌だよ

既存の他人の作品の人気にあやかってるのが気持ち悪い。

学校で隣の席のやつに落書きを見せて楽しむ程度だな、私の許せる限度は。

不特定多数に向けて(手数料程度だとしても)お金をとって渡したりする行動は、そこまでするなら一次創作しろって思う。

webネタにするなら、「無許可です、すみません(苦笑」の一言ぐらいは入れておくのが礼儀だろう。

無許可勝手にやってる小ネタゆえ、もちろん権利主張などいたしませんので許してください。」と言うのがスジってもんだろう。

だからこそ「無断転載もどうぞご自由にどうぞ。報告などいりませぬ」って思うぐらいの謙虚さがあってこそ、一次創作者も黙認するってものだ。

二次創作なのにコピーライトサインを入れる奴ってサイテーだと思う。


Re:

2008年08月17日 SiroKuro あとで読む こいつ何で吠えてるの?気色悪い。

コメントせずにはいられなかったように見受けられる。何でって?ホッテントリあるあれを読んだからだよ。あとで読んで。

日記見たけど、http://d.hatena.ne.jp/SiroKuro/ やっぱりオタクの人なのね。美少女とかのアニメが好きな感じ?

いきなり人をこいつ呼ばわりするのはどうかと思うよ。そういう常識的なところが欠けている人が多い印象、オタクの人って。

2008年08月17日 pycol あとでみる なんとも残念なやつ

なにがどう残念なの?そもそも残念な奴ってどういう意味?あなたにとって私がこんな感じなのが残念なの?

「あとでみる」ってこんな短い文章なのに?読んだからコメント書いたんじゃないの?ねぇ、どうなの?

2008年08月17日 altana11 この記事もそうだけど、気持ち悪いという言葉には悲しいくらい力がない。気持ち悪い気持ち悪いと相手を否定しても否定する相手が多数派なのでどんどん孤独になっていく。どうあがいても否定されるのは少数派。寂しい

え、同人誌書いたりコミケ行ったりする奴が少数派でしょう。どっちが多数かはあまり関係ないけど。気持ち悪いというか卑怯者?他人の創造物を無断で改変する失礼な奴?まぁ言葉はなんでもいいんだよ。ああいう周りの見えていない人間どもが嫌い。最近開き直り具合は世も末だと思う。

2008年08月17日 soylent_green 気持ちはわかるんだが、どうしようもないね。

どうしようもないし、とめられるともとめようとも思わないけど、なくなってほしいと望むね。せめて、嫌悪感は伝えたい。それはサイテーと思われるような事なんだよと。伝えれば嫌な気持ちになってやめる人もいるでしょう。

2008年08月17日 popopom 変な日本語, 同人, license なんか男子中学生が書いたような文章だな。ブクマコメに対する食いつきといい。/“ホッテントリあるあれ”って何?どのエントリのことだろう?

http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/y_arim/20080815/1218830796

これです。「に、あるあれ」のにを間違えて消しちゃっていました。

2008年08月17日 KoshianX copyright こういう認識人間も実際にいるからなあ。西遊記やら三国志やら古典二次創作は許せるとか言い出すんだろうな、ドラゴンボールみたいな。で、どこから古典?みたいな話に。

現在話題で人気に乗っかるのと、古典とじゃぜんぜん違うじゃない。

2008年08月17日 sea_side !エントリー, 文化 あまり関係ないけど、過度なオリジナル志向も害だと思うねぇ。

え、なにそれ。オリジナル作品しか作ってない人は害なの?同人誌を書いていないクリエイター社会にとって害悪存在?ぜんぜんわかりません。

2008年08月17日 fake-01 copyright, 同人, 二次創作 「せめて、嫌悪感は伝えたい。」権利ではなくて、嫌悪感の問題って事ですか。なら、気持ち悪いから、黙ってろって言われるのも、想定してるね。こんな感情論だけでは意味ないので、まず、著作権というものを学べ。

感情を無視するのは良くないよ。人々の感情あっての法律だから。黙ってろと何百回でも言ってもいいよ。黙らないけど。

2008年08月17日 y_arim anonymous, illustration, copyright, creator, doujin, 言及されました ところでおれのオリジナルイラストを見てくれ こいつをどう思う?

猥褻だと思いました。http://hatena.g.hatena.ne.jp/keyword/%E3%81%AF%E3%81%A6%E3%81%AA%E6%83%85%E5%A0%B1%E5%89%8A%E9%99%A4%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3

ポルノ情報

* 性器の露出する画像風俗店情報は原則として削除を行う(はてな発信情報ユーザーはてな発信情報ユーザー発信情報

* 性器の露出する画像風俗店情報が掲載された外部ウェブサイトへのリンクは原則として削除を行う(はてな発信情報ユーザーはてな発信情報ユーザー発信情報

* 性器を表す単語、及びそれに順ずる猥褻語は原則として削除を行う(はてな発信情報ユーザーはてな発信情報ユーザー発信情報

* はてなが明らかに第三者に嫌悪感を与える情報であると考え得る情報については削除を行う(ユーザーはてな発信情報ユーザー発信情報

* 第三者からの通告を受け、当該情報嫌悪感を与える情報かどうかが定かでない場合、発信者への照会手続きを行う(ユーザーはてな発信情報ユーザー発信情報


2008年08月17日 m-bird これはひどい そもそも増田って嫌だよ 匿名という安全性にあやかっているのが気持ち悪い。不特定多数Disる行動は、そこまでするなら実名でしろって思う。// http://d.hatena.ne.jp/m-bird/about

こんにちは、筑波大の水野貴史さん。いつもお世話になっております。フリーオ便利そうですよね。

2008年08月17日 mgkiller 「今現在話題で人気に乗っかるのと、古典とじゃぜんぜん違うじゃない。」ネタを拝借するという点では同じ。君は法律的観点を持ち出さず感情論でのみ物を言ってるからそこを分断するのは論が破綻してるよ。

あのさ、共通点をさがしてるんじゃないんだから。私の文意ではまったく別。現時点での人気度合いがオフセットとして働く形で己の創作物の価値を高めているって意味で全く違う。そりゃ西遊記の人気があるからドラゴンボールの人気が上がったという面もゼロではないかもしれないけど古典と現行品では雲泥の差じゃん。コミケ同人誌と同じっていう方がムリあるよ。三国志はもともと史実じゃん。そんなの挙げて言い訳してみっともない。

2008年08月17日 SEBEC オタク, 著作権, 二次創作 近年稀に見る釣りエントリ

その不愉快なものに対してすぐ釣りとか言うのやめてほしいな。本心を言っているだけなのに。釣りだってことにすれば何か納得できるっていうわけなの?どんな意見でももうちょっと真剣に受け止めるほうがいいんじゃないの?さもなくば無言でスルーしようよ。はいはい釣りね~とか言うのはみっともないと思う。

~ですね、分かります。

とかいうコメントは全部、とても頭悪いと思う。それで気が済むとしたらお目出度い奴としか言いようが無い。冗談ならいいけど。

雑感

ハテブコメントは、オタクの人が多いから意見が大きく偏るなぁ。少数意見のはずのものが多数のように見えてしまいますね。

あと、http://anond.hatelabo.jp/20080817123327 これを書いたのは私です。

言葉定義の問題?

 ここで、二次創作物といっているのはいわゆるコミケなどであつかわれている類の同人誌のことです。MADアニメでもいいです。コスプレなども含まれるかもしれません。原作漫画アニメ映画化とか、小説漫画化とか、商取引上で著作権者同士の合意に基づいて派生されたものは、一次創作物だと思っています。

Re:

http://d.hatena.ne.jp/ezil/20080818

コピーライトってようは「著作権持ってますよ」ってことだよね?これを否定するようなものですよ?

二次著作物著作権があるのがおかしい、ということか?

他人のものなのに、これは俺のものだよって言ってるのがおかしいよ。パクっといて自分のものって主張すんな。と思います。そのキャラクターはお前が生み出したものじゃないだろ、なに自分サインつけてんだよ。って思います。

共同著作物ならオリジナルの作者名が必要だろ?だからって勝手名前使うなよ、ちゃんと許可とれよ。って思います。

2008年08月19日 tizell 「~がスジだろう」「~が礼儀だろう」「~するってものだ」と、想像で書いてることばっかり。「お前の想像するようなルール存在しないよ」としか言えない。

多くの常識感覚は明文化されたルールにはなっていないものだよ。人とであったら挨拶しようとか、親切にされたらお礼を言おうとか、そういうものでしょ?それがスジでしょう。それが礼儀でしょう。そうするべきでしょう。それとおんなじ。他人が作った創造物を無断で利用したり改変するのはよくないよ。

法律に書いてあるのかよ!」ていう小学生みたいなこと言わないで。

http://blog.chiether.net/item/113

だからこそ「大神」だとか「私立T女学院」などという大金をかけて宣伝されていない作品ですらファンが同人誌を作る。

どちらも全国展開して売り出されたもので、大金をかけて宣伝されたものという認識です。個人が自分ウェブサイトに載せました、とか近所の電柱にチラシを張りましたとか、そういうのが大金をかけて宣伝されていないものです。全国展開している雑誌広告を載せたり、大手の流通に乗せたりしている品物という意味で、個人レベルのアピールとは桁違いの知名度そもった物であるという意味で言いました。

自分創作活動100に対して1の割合ぐらいの息抜きで、パロディーとかIFとかやるのはいいと思う。自分制作活動の5割とかそれ以上の大きな割合を二次創作が閉めているような人間は嫌いだし、それを買うことで肯定する客も嫌い。そのぐらいの小さな割合でなら許す。

あと、二次創作原作者にむけて作るのならいいとおもう。原作者を楽しませるために、まず最初に原作者にみせ、原作者の許可のもとで他者にも見せるならわかる。

法律に書いてあるのかよ!』とか屁理屈は通じなくても

『お前が決めた事なんてしらねぇよ(笑)』と言われてしまいますよ。

嫌い、以上の事は言っていません。非常識人間性がなってない、と思ってるといいたかっただけ。あーあー聞こえなーい、しらねー、と気にせず傍若無人に好き勝手原作レイプする人がたくさんいて止めようがないのは百も承知。一言、人として間違ってる、礼節がなってないと言ってやりたかったから増田に書いただけ。まわりはオタクが沢山居て同人誌を書いている友人もいてコピーライト自分ってサインする人も沢山居て、そういう人には何を言っても無駄だけど、こうして増田に書いたら賛否もいっぱいいろんな人が応答してくれて、かなり満足ですよ。

ブクマ同意反応一覧

2008年08月17日 soylent_green 気持ちはわかるんだが、どうしようもないね。

2008年08月17日 gadgetman 元ネタ原作者より儲けてる同人作家がいるかも…とか想像すると、なんか嫌な方向にもやもやするんで、わからなくもない。/id:KoshianXがここで西遊記とか持ち出す意味がわからん。二次創作マンセーな方ですか?

2008年08月17日 toward_to_terrada この手のエントリはてブ見ると何でオタク迫害されるのか良く分かるよ・・・。それこそ100文字では言い切れない位に。

2008年08月17日 tnai45 自分の好きな作品18禁同人ネタにされるのは確かに嫌だ。だから、なるべくそういうのは見ないようにしてる。

2008年08月17日 tek_koc 人気をあやかろうって視点では確かに不気味だと思う。芸人の真似して笑いを取るみたいな感じ。

2008年08月17日 daca 二次創作を嫌がる人も中にはいる。多数派だって印象はないし、故にあまり顧慮されない傾向はある。ただ好意的黙認を受けた二次創作は、自らも利用されることに好意的であってほしい気はする。 GPL増殖的な。

2008年08月18日 gouk 気持はわかる(…略…)

2008年08月18日 winter-snow わかる。金がらみになるとすごいさめる。そこまでするもんじゃないだろうって。

2008年08月18日 Hlao 気持ちはなんとなく分る(…略…)

2008年08月18日 mike_n ヲタ わたしも二次創作は苦手(気持ち悪いと思うこともある)(…略…)

2008年08月20日 midou_shin そういう感情は分かる(…略…)

2008年08月21日 lefthanded そんなに批判されるようなこと書いてるようには思えないが…。自分二次創作自体は嫌いじゃないが、二次創作物の権利を声高に主張するような人はだめだと思う。まあ、そんな人多くないと思うけど。

Re:

ああ、腹立つわ・・・チラシの裏ならmixiでやれってんだ。

ちょっと感情的になりすぎでは。あなたの友人にも言えないでいる人いると思いますよ。

追記 全く同意

http://anond.hatelabo.jp/20090207183508

二次創作なんて語事態が気持ち悪いね。自己肯定なのだろうけど。他人のふんどし相撲をとるっていうの、創作者の風上にも置けない。

2008-04-08

天台宗僧侶チベット発言のYoutube動画を何故かACCSが消した件

天台宗トップの住職チベット問題について涙ながらに語る」の動画http://www.youtube.com/watch?v=BjlbL0j_qQ8)だけど、ACCSが消したみたいだね。

This video is no longer available due to a copyright claim by Association of Copyright for Computer Software

青山繁晴が「消すな」と関西テレビに言ってるから、関西テレビは消さないかもしれないけど、ACCSが何で消すんだ?ACCS何者?

該当動画のはてぶ

2007-11-11

鼻毛

鼻毛は切るもんじゃない。抜くものだ。

Copyright(C) 2007 Masuda All Rights Reserved.

2007-09-26

不条理化するライフハック

http://d.hatena.ne.jp/sirouto2/20070921/p2

「ドアを閉めましょう」というのが「在宅で仕事をする人が生産効率を高めるための」「Tips」なのか。それに気付かない人がいるのか。なぜ誰も突っ込まないのか。

最後が実はジョークなのはよくある。

http://the-getting-things-done.blogspot.com/2007/08/productivity-tips-for-home-office.html

Close your door - If there are distractions at home, like people calling round or noisy kids, make it a rule to not be disturbed when your door is shut.

ドアを閉めよう - 例えば人が訪ねてきたり、子供達が喧しかったり、そんな気が散る原因が家にあるなら、ドアが閉じてからは邪魔されないようにしよう。

http://web-marketing.zako.org/hacks/lifehacks/productivity-tips-for-the-home-office.html

10.ドアを閉めましょう

元気な子供や、何度も電話が鳴るような気が散る要素が家にあるのであれば、神経質にならないためにも、仕事中はドアを閉じるようにしてください。

Five Points to write translation blogs

Get permission
It violates the copyright law to post translated articles without getting writer's permission. So ask him/her first.
Consult a dictionary
Seemingly correct translations may have missed hidden idioms. You should be fed up with using intuition on exams.
Be away with automatic translators
The result may look tolerable, but actually, it's far.
Don't make an excuse
Your work shouldn't be entitled "free translation" or the like to cheat readers. Instead, ask them to point your mistranslations.
Point out wrong translations of others
Point mistakes out hardly on blog comments to make them intimidated. Nobody except you should translate potentially popular posts.

The original post is 翻訳ブログを作成するための5つのポイント

2007-09-19

http://zapanet.info/blog/item/1089

キャッシュの話でないのであれば、複製を保存せず、透過的に変換する行為については著作権侵害には問えないだろう。

一時期流行った「赤ちゃん語変換」みたいなサイトならともかく、「半角」と「全角」の違いであればクライアント側のグリフでいかようにもなってしまう話である。 著作者本人がいくら「半角」での表示を期待していても、それを「全角」文字として表示してしまうコンピュータはたくさんあるのだ。

アスキーアートなんて、まともに絵として表示される環境の組み合わせは相当限定されているはずだが、絵として表示できなければ著作権侵害になってしまうのかってな話だ。

RSS は生の XML のまま表示させないといかんのかってな話だ。

だいたいにして著作権法の同一性保持権は「著作物の性質並びにその利用の目的及び態様に照らしやむを得ないと認められる改変」を認めている。

表示能力に劣る携帯端末での文書表示が目的ならこの改変は認められるのではないだろうかと思うがどうだろうか。

キャッシュの話であれば、もう fj.soc.copyright やらでさんざん議論されていたような気はするが。

ひろゆきが言うように複製を保持してそれを公衆送信可能にすることは、現行の著作権法では著作権の侵害になる。

しかし、現在ではインターネットの公正な利用の範疇として、キャッシュ機能は検索エンジン等で広く利用されている。 皆がそれを利用している。

その行為でだれかの利益が侵されているならともかく、だれの利益も侵さない行為は「侵害」と言わないと思う。

侵害されていると思うなら、裁判所に行ってくればいい。 もしかしたら Google から大金せしめられるかもしれない。

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.

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