はてなキーワード: CBとは
女は男のために痩せているのではないと言いながら、女の痩せ願望が批判されだしたら、やっぱり男が痩せた女を求めるから男が悪いとか言うってどういうこと?女は男のために痩せているのではないと言ったり、女は男のために痩せていると言ったり、その時々で都合よく言うことを変えるな。アッキーナはあれだけ痩せてうらやましいとか言っている阿呆な女がいるから、こんな記事が出てるんだよ。
若年女性のやせ、「国民健康の脅威」―日本成人病(生活習慣病)学会・学術集会 - 医療介護CBニュース - キャリアブレイン
http://www.cabrain.net/news/article/newsId/31911.html
南明奈みたいなガリガリの女が魅力的とか、本当におかしいよね。
なるほどね↓
http://anond.hatelabo.jp/20110119180714
女の痩せ願望問題で、また女側の問題が明らかになった記事が出た。
若年女性のやせ、「国民健康の脅威」―日本成人病(生活習慣病)学会・学術集会 - 医療介護CBニュース - キャリアブレイン
http://www.cabrain.net/news/article/newsId/31911.html
若年女性のやせ、「国民健康の脅威」―日本成人病(生活習慣病)学会・学術集会 (医療介護CBニュース) - Yahoo!ニュース
http://headlines.yahoo.co.jp/hl?a=20110117-00000002-cbn-soci
こういう記事での結論↓
ガリガリの痩せ過ぎの女には魅力がない、肉付きがいい女のほうがいいという
多くの男たちの声を素直に聞いていれば、
やっぱりこの世の中は、多くの男の目に適う女の体型が最もふさわしいんだよ。
出産する女の適応体型に多くの男は惹かれるから。女のダイエットという
女の身体的な問題でも、男の目線が入ったほうが
この記事とかの批判でよく出るオンナのジリツの感想や日記の類もあるね。
男はガリガリの女は好きではないとか、肉付きがいいほうが男は好きとか言い出すと、
おしゃれな服が入らないからとか言い出す。
女は男に左右されずに自立して決定していると言い出す。
男は勘違いするなと言い出す。
女は女同士の見栄の世界で痩せ願望のダイエットをしているということ。
女同士の嫉妬で「私のほうがもっと痩せられる!」とかね。
こういう女同士の嫉妬と見栄は、嫁姑問題でも分かるよね。
女は女同士の足の引っ張り合いで傷ついている。
そこに男が入らないといけない。
女同士の見栄と嫉妬の世界を緩和するために。
女が選択してダイエットをしているのなら、女の痩せ願望での男叩きは無理だ。
でも、女の痩せ願望でそう仕向けている男が悪いとか
男叩きをしている女たちは少なくないよね。その女たちは何だろう?
と
ダイエットで女が痩せ過ぎるのは男が悪い!
は繋がらないんだが。
自立した女がした決定で女が痩せ願望になって、健康障害とか低出生体重児
とかの問題になるって、女のジリツって何だろう?
女のジリツを突き詰めると、女自身にとってもよくないことが起きるね。
女が自立を叫んでも、不幸な女が増えるという一つの事例が
また明らかになったということ。
女が女だけで決定するのは、問題があるということ。
女のジリツ思考も何ともならないものだな。
女のジリツというスイーツ思考も考えないといけないことだね。
都合のいい時には女の自立を叫んで、
都合が悪くなると、やっぱり自立は無理だから男に頼るって、
何かに似てるね。その似てる構図が女の痩せ願望でも見えている。
痩せ過ぎの原因は女に求められるわけだが、女の痩せ過ぎが批判されだすと、
やっぱり痩せ過ぎた女を求める男が悪いとか意味が分からないことを言うな。
学会でも、女の痩せ願望のために低出生体重児の問題が出ているし、
やっぱり、この記事は正しかったんだな。
低出生体重児:「小さく産んで…」に警鐘 やせ願望影響で増加 生活習慣病の誘因に
http://mainichi.jp/life/edu/child/news/20110107ddm013100107000c.html
この突出して多いのは、女の問題。女は男のためにダイエットをしていないと言い張り、
男が肉付きがいい女が好きとか関係ないとか言ってるんだから。
それだけ言っておいて、今さら男が悪いは通らないよ。
女の痩せ願望問題で、また女側の問題が明らかになった記事が出た。
若年女性のやせ、「国民健康の脅威」―日本成人病(生活習慣病)学会・学術集会 - 医療介護CBニュース - キャリアブレイン
http://www.cabrain.net/news/article/newsId/31911.html
若年女性のやせ、「国民健康の脅威」―日本成人病(生活習慣病)学会・学術集会 (医療介護CBニュース) - Yahoo!ニュース
http://headlines.yahoo.co.jp/hl?a=20110117-00000002-cbn-soci
こういう記事での結論↓
ガリガリの痩せ過ぎの女には魅力がない、肉付きがいい女のほうがいいという
多くの男たちの声を素直に聞いていれば、
やっぱりこの世の中は、多くの男の目に適う女の体型が最もふさわしいんだよ。
出産する女の適応体型に多くの男は惹かれるから。女のダイエットという
女の身体的な問題でも、男の目線が入ったほうが
この記事とかの批判でよく出るオンナのジリツの感想や日記の類もあるね。
男はガリガリの女は好きではないとか、肉付きがいいほうが男は好きとか言い出すと、
おしゃれな服が入らないからとか言い出す。
女は男に左右されずに自立して決定していると言い出す。
男は勘違いするなと言い出す。
女は女同士の見栄の世界で痩せ願望のダイエットをしているということ。
女同士の嫉妬で「私のほうがもっと痩せられる!」とかね。
こういう女同士の嫉妬と見栄は、嫁姑問題でも分かるよね。
女は女同士の足の引っ張り合いで傷ついている。
そこに男が入らないといけない。
女同士の見栄と嫉妬の世界を緩和するために。
女が選択してダイエットをしているのなら、女の痩せ願望での男叩きは無理だ。
でも、女の痩せ願望でそう仕向けている男が悪いとか
男叩きをしている女たちは少なくないよね。その女たちは何だろう?
と
ダイエットで女が痩せ過ぎるのは男が悪い!
は繋がらないんだが。
自立した女がした決定で女が痩せ願望になって、健康障害とか低出生体重児
とかの問題になるって、女のジリツって何だろう?
女のジリツを突き詰めると、女自身にとってもよくないことが起きるね。
女が自立を叫んでも、不幸な女が増えるという一つの事例が
また明らかになったということ。
女が女だけで決定するのは、問題があるということ。
女のジリツ思考も何ともならないものだな。
女のジリツというスイーツ思考も考えないといけないことだね。
都合のいい時には女の自立を叫んで、
都合が悪くなると、やっぱり自立は無理だから男に頼るって、
何かに似てるね。その似てる構図が女の痩せ願望でも見えている。
痩せ過ぎの原因は女に求められるわけだが、女の痩せ過ぎが批判されだすと、
やっぱり痩せ過ぎた女を求める男が悪いとか意味が分からないことを言うな。
学会でも、女の痩せ願望のために低出生体重児の問題が出ているし、
やっぱり、この記事は正しかったんだな。
低出生体重児:「小さく産んで…」に警鐘 やせ願望影響で増加 生活習慣病の誘因に
http://mainichi.jp/life/edu/child/news/20110107ddm013100107000c.html
この突出して多いのは、女の問題。女は男のためにダイエットをしていないと言い張り、
男が肉付きがいい女が好きとか関係ないとか言ってるんだから。
それだけ言っておいて、今さら男が悪いは通らないよ。
日本のサッカー代表はたまにベスト16に行くことがあっても基本的に南米や欧州の列強に追い付くことはできません。追いつくためには日本の教育制度、スポーツの学校依存、究極的には日本の社会制度までにメスを入れなければならないからです。
現在の代表でも、半数以上はサッカーエリートであるクラブ出身ではなく部活サッカー出身だ。普通の感覚ならどれだけ「自分はやれる」とおもっても並の高校に行った時点でプロをあきらめてしまうの。とくに偏差値の高い学校にはいった競技者はプロを目指すのはよっぽどのかわりものだろう。
学校の部活動は短期間、具体的には2年または2年半で結果を求められる。求めるなというのが無理なのだ。競技者、および指導者(学校の教員)の双方にとってそれがメリットだからだ。2年で結果を出せばまた名門サッカー高校に進学できる。また2年半で結果を出せばJリーグ以外では最もメジャーなサッカー大会である。「高校サッカー選手権」にでられる。普通の高い才能であればこの大会にピークを持ってくることが目標なのだ。
南米、欧州ではもちろんちがう、クラブのユースではある意味子どもたちは商品なのだ、名門クラブであればそのトップチームに上げることが目標となる。そうでなくとも名門に売れれば大きな金が入る。日本の部活のように自分勝手な猛練習はしない。体が壊れたら誰も得をしないのだ。ユースでもジュニアユースでも週に4-5回、一日2-3時間の練習と週に1回の試合。日本のように年間練習試合をふくめ100試合もやるようなことはない(中堅校でもこのくらいやるところは少なくない)
逆に公式戦はリーグ戦が主体で多く、リーグなので絶対的な勝利にこだわることもない。指導者も競技者も目指すのはその先なので、個人の技術の向上、戦術理解が優先される。
また日本ではユース世代は競技者のサッカーレベルでチーム分けがされない基本的に「競技者の学力」でチーム分けがされる。高校の部活動なのだから当然だが、これがどれだけ異常なことかおわかりだろうか?
また日本では必ずしもサッカー経験者もしくは指導を志す者がサッカーを指導するわけではない、これまた異常なことなのだが事実だ、ジュニアユース時代に技術的なことを指導されなければどれだけ才能があっても伸び悩む。さらにユース時代も確率的には少ないが必ずしも専門家が指導するわけではない。(例えばわたしは長らく高校サッカー部の顧問をしていたが、なった理由は校務分掌上、若い男性であいているものが私しかその学校にいなかったという理由。当時全くサッカーには興味関心がなかった。)学力別に分けられた競技者がたまたま良い指導者、環境に当たればよいが、絶対にそうなるとは限らない。学力が関係なければ、後に日本代表になる可能性がないではないが、学力が高ければ指導者と関係なくその学力の高校(チーム)にいく。そして高い才能があろうとサッカー選手になる道はほぼなくなるのだ。
ここで「日本でも、今言ったように、学力と関係ない名門高校があるんだから、そこで注目されるのでは?」とおもうだろう。もちろんそういう選手も多いが、ここで現代表の来歴をみてみる。
日本代表CBの3人の来歴は非常に異色だ、田中はブラジル人を留学生としてとっているサッカーが盛んな新興名門進学校「渋幕」に留学した。その後、Jリーグに入り帰化した。これは前代表のアレックスやサッカーでないが朝青龍もそうだ。
中沢はサッカーエリートとは関係のない道をあゆみ、強豪でない三郷工技の部活動からブラジルのクラブに入り、帰ってきて三郷工技で練習していて練習試合でヴェルディとやったあとに練習生としてヴェルディに入った。
岩政は普通の地方進学校から数学の教師になるため東京学芸大に入り、ユニバーシアードなどで活躍して注目され鹿島に入った。
後者2人は本人のサッカーへの強い意志と偶然により、Jリーグに入り代表になったことになる。偶然がなければこのWカップのメンバーは違う人が入っていたということになる。ということはこの人たち以外にも日本代表に入れる才能を持ちながら途中でなんらかの事情で断念している多くの競技者が、掬いあげられずに、一サッカーファンとしてWカップを見ているはずなのだ。普通のフットボールネイションであれば代表に入るような才能であれば小さいころから注目され少なくともプロになる選択を与えられるのは必然でなければならない。
普通のフットボールネイションで岩政のような選択は非常に不可解に感じるだろう。代表になれるような才能があれば、16-7歳でプロ契約するのが普通。サッカーの能力が非常に高くかつ数学の教師になりたいのであれば、大学はサッカーのプロキャリアを終えたあとに行けばいいわけで、なにも、大好きであるサッカー競技者を断念して教師になる必要はない。岩政の選択は日本では非常に特殊で普通なら数学の教師になりサッカー部の顧問になる(もしくは校務分掌の事情でなれない)のが普通だろう。高校で普通の進学高にいった時点でプロサッカー選手になるという選択はない。冷静な頭で考えればリスクとリターンが合わないからだ。
日本ではあるレールからはずれると修正がきかないとおもわれている。サッカー選手を選択して失敗したら大学目指そうとかそういう選択は普通しないのだ、就職に一番有利なのは何の瑕疵もなく22年で大学を卒業した者であり、30歳くらいでサッカーのプロ経験者であってもいわゆる一流企業の正社員になるのは難しいだろう。であれば高い学力があってサッカーの高い才能がある場合、リスクをとってサッカー選手になるという選択は普通なくなる。このようなリスクテイカーに冷たい社会ではサッカー選手になるというのはなかなか決断しにくいのだ。岩政は非常にリスクの高いことをやって成功したことになる。
他にも多くの理由があるが、スポーツの学校依存、リスクテイカーに冷たい日本の社会制度を変えない限り野球のようなマイナースポーツで一番になることはあってもサッカー大国になることはないだろう。
部活動の問題についてはまたの機会に書きたいと思います。
http://d.hatena.ne.jp/keyword/%C2%E7%C0%EE%CE%B4%CB%A1?kid=296274
* e-231kon 2010/05/29 19:48 重複しています。
* herecy8 2010/05/31 02:48 既にhttp://d.hatena.ne.jp/keyword/%C2%E7%C0%EE %CE%B4%CB%A1?kid=187790が登録されており、同じ項目が重複しています。後から登録された方を削除します。
* hikarinobosatu 2010/06/07 06:36 最新の情報です。
* hikarinobosatu 2010/06/07 06:37 最新の情報です。
* viron 2010/06/07 14:05 重複項目を理由に再三削除されているが、削除理由とは全く関係ない説明で復帰されている。
* hikarinobosatu 2010/06/08 08:01 後から登録したものの方が、より詳しいから。
* e-231kon 2010/06/08 19:05 重複。
* kobomaru 2010/06/09 10:58 何故、そんなにムキになって削除したがるのでしょうか?
* viron 2010/06/09 11:12 同一項目を重複登録する理由がない。
* kobomaru 2010/06/09 14:41 重複していても、より詳しいから。
* 大川隆法@20100609144107 (2010/06/09 14:41:07)kobomarukobomaru change category to 一般 CommentsAdd Star
* 大川隆法@20100609111221 (2010/06/09 11:12:21)vironviron change category to 削除予定キーワード CommentsAdd Star
* 大川隆法@20100609105801 (2010/06/09 10:58:01)kobomarukobomaru change category to 一般 CommentsAdd Star
* 大川隆法@20100608190535 (2010/06/08 19:05:35)e-231kone-231kon change category to 削除予定キーワード CommentsAdd Star
* 大川隆法@20100608080120 (2010/06/08 08:01:20)hikarinobosatuhikarinobosatu change category to 一般 CommentsAdd Star
* 大川隆法@20100607140530 (2010/06/07 14:05:30)vironviron change category to 削除予定キーワード CommentsAdd Star
* 大川隆法@20100607063754 (2010/06/07 06:37:54)hikarinobosatuhikarinobosatu change category to 一般 CommentsAdd Star
* 大川隆法@20100531024851 (2010/05/31 02:48:51)herecy8herecy8 change category to 削除予定キーワード CommentsAdd Star
* 大川隆法@20100531024209 (2010/05/31 02:42:09)kobomarukobomaru change category to 一般 CommentsAdd Star
* 大川隆法@20100529194812 (2010/05/29 19:48:12)e-231kone-231kon change category to 削除予定キーワード CommentsAdd Star
* 大川隆法@20100529090856 (2010/05/29 09:08:56)hikarinobosatuhikarinobosatu upload image CommentsAdd Star
* 大川隆法@20100529084943 (2010/05/29 08:49:43)hikarinobosatuhikarinobosatu upload image CommentsAdd Star
* 大川隆法@20100529084826 (2010/05/29 08:48:26)hikarinobosatuhikarinobosatu editCommentsAdd Star
* 大川隆法@20100529084759 (2010/05/29 08:47:59)hikarinobosatuhikarinobosatu editCommentsAdd Star
* 大川隆法@20100529084409 (2010/05/29 08:44:09)hikarinobosatuhikarinobosatu appendCommentsAdd Star
大川隆法総裁 http://d.hatena.ne.jp/keyword/%C2%E7%C0%EE%CE%B4%CB%A1%C1%ED%BA%DB
大川隆法総裁先生 http://d.hatena.ne.jp/keyword/%C2%E7%C0%EE%CE%B4%CB%A1%C1%ED%BA%DB%C0%E8%C0%B8
エル・カンターレ http://d.hatena.ne.jp/keyword/%A5%A8%A5%EB%A1%A6%A5%AB%A5%F3%A5%BF%A1%BC%A5%EC
主エル・カンターレ http://d.hatena.ne.jp/keyword/%BC%E7%A5%A8%A5%EB%A1%A6%A5%AB%A5%F3%A5%BF%A1%BC%A5%EC
とか、無意味に登録を増やすことに邁進しています。
法身 http://d.hatena.ne.jp/keyword/%CB%A1%BF%C8
これも重複登録かな。
腐女子やヲタク向けにエロパロ発行してることは知ってたし、当時はふゅーじょんだけが特出してたけど、
だから、なに?って感じだ。
良いものは良いだろうし、マーケットがあるなら、それがヲタク向けだろうが、アングラだろうが、サブカルだろうが、入り込んでやれ、って商魂たくましいのがふゅーじょんだろうと思ってる。
それぞれのファンがそれぞれを認識して、理解しあう必要なんてどこにあるの?
ガロとかのファンが、腐女子マーケットを理解して、どうするの?
どっちも爆発的にマーケットに乗るような物じゃないのに、持ち上げた事で今の地位を得てると思ってる。
少なくとも、ガロ読者とかは、”恐ろしく漫画やアニメの知識が偏って”るだろうに。
その偏りをちゃんと理解してるはずだ。(だから、ガロは特殊な分野でいられる)
そして、偏りにたいして、公平にしようなんて思ってもいないだろう。
===============================
===============================
Ba級 北海道 神戸 お茶の水 筑波 横国 上智 ICU 阪市 同志社
Bb級 千葉 金沢 東京農工 京都工繊 豊田工業 阪府 岡山 広島 阪外語 首都 東京理科
Bc級 名工業 横市 熊本 明治 中央 東学芸 立教 立命館 学習院 津田
=============================== ========
Ca級 電通 九工 帯広畜産 名古屋市立 京都府 奈良女 青学 関学
Cb級 埼玉 新潟 静岡 小樽 滋賀 信州 法政 関大 三重 成蹊 南山
================================== ========
Da級 西南 日女 高崎経済 岩手 群馬 岐阜 徳島 長崎 東京海洋 鹿児島 東京女子
Db級 山形 福島 茨城 宇都宮 山梨 富山 鳥取 山口 愛媛 大分 宮崎 兵庫県立
=============================== ================
Ea級 北教育 室工 弘前 福井 香川 高知 佐賀 日大 東洋 駒沢 専修 京都産業 近大 甲南 龍谷
=============================== ================
以下多数
出典 5000万アクセスの超有名サイト http://gakureki.nobody.jp/
ランキングで本編が載ることはあっても、MADは載るのが少ない。本編としては今日あたりは「みなみけ」がランクに入っていたし、他の日なら「ひぐらし」や「バンブーブレード」がランクインする。しかしMADは少ない。最近知ってるのはガンダム00の「武力介入できないCB」ぐらい。調べてみるとMAD自体はあるんだが、あまり見られてない。本編の人気とこうしたMADを含めた同人活動は正比例しているから、MADへの注目が少ないってことはやっぱり人気がないってことなんだろう。
それかニコニコ動画で見てる人はファンというよりは暇つぶしで見る人たちなんだろうな。ファンだったらいちいち画面の小さいニコニコ動画で見る意味ないしね。
ごめん、変な乗り換えが発生してた。
料金 980円
料金 1,240円
いずれにしろ初乗りより高い。
http://taisa.tm.land.to/tensei.php?a=%C1%E1%B0%F0%C5%C4%C2%E7%B3%D8&b=%B7%C4%B1%FE%C2%E7%B3%D8&c=%C1%E1%B0%F0%C5%C4%C2%E7%B3%D8%A4%CF%A5%B9%A5%DD%A1%BC%A5%C4%A1%A2%CA%D9%B3%D8%A4%C8%A4%E2%A4%CB%CD%A5%BD%A8%A4%C7%A4%A2%A4%EB%A4%C8%BC%E7%C4%A5&d=%C1%E1%B0%F0%C5%C4%C2%E7%B3%D8%A4%CF%A5%B9%A5%DD%A1%BC%A5%C4%A4%F2%A4%B9%A4%EB%B3%D8%C0%B8%A4%CF%CA%D9%B3%D8%A4%CF%A4%BB%A4%BA%A1%A2%CA%D9%B3%D8%A4%F2%A4%B9%A4%EB%B3%D8%C0%B8%A4%CF%A5%B9%A5%DD%A1%BC%A5%C4%A4%CF%A4%B7%A4%CA%A4%A4%A4%C8%BC%E7%C4%A5&e=%C6%FE%B3%D8%BC%D4%A4%CE%A5%EC%A5%D9%A5%EB%A4%AC%C4%E3%A4%A4&f=%C6%FE%B3%D8%A4%B9%A4%EB%A4%B3%A4%C8%A4%AC%C6%F1%A4%B7%A4%A4:早稲田大学と慶応大学]をやってみた。
ちょっと文のつながりがへんなところあるけど、ちょっと楽しかった。
作ってみた
朝日新聞は11万人と主張している。しかしちょっと待って欲しい。11万人と主張するには早計に過ぎないか。
朝日新聞の真摯な姿勢が、今ひとつ伝わってこない。
このような声に朝日新聞は謙虚に耳を傾けるべきではないか▲
思い出してほしい、過去にも何度も朝日新聞は2chの叫びを無視している。
朝日新聞は2chの捏造だという主張を間違いであるかのような発言をして、批判を浴びた。
確かに2chにはアベするという問題もある。だが、心配のしすぎではないか▲
朝日新聞の主張は一見一理あるように聞こえる。
しかし、だからといって本当に朝日新聞は11万人と主張できるのであろうか?
それはいかがなものか。的はずれというほかない▲
事の本質はそうではではない。その前にすべきことがあるのではないか。
朝日新聞は、未来を担う一員として責任があることを忘れてはならない。
朝日新聞の主張には危険なにおいがする。各方面の声に耳を傾けてほしい。▲
朝日新聞に疑問を抱くのは私達だけだろうか。
11万人と主張したことに対しては2chの反発が予想される。捏造だという主張を支持する声も聞かれなくもない▲
朝日新聞もそれは望んでいないはず。しかし朝日新聞はアサヒるである。
11万人と主張する事はあまりに乱暴だ。朝日新聞は再考すべきだろう。
朝日新聞の11万人と主張したことは波紋を広げそうだ。今こそ冷静な議論が求められる。
2ちゃんねる ソーシャルネット板より 【通報しても無駄】mixiから業者が減らない理由
1 :練乳:2007/08/22(水) 17:32:57 ID:a/3is8Cg 今まで何度通報しても消えてない業者の副垢が多数ある件、 運営が業者撲滅コミュを強制削除しようとしている件、 業者と運営の間になにか特別な関係があるとしか思えません。 これを見つけてしまったので、納得しました。 ▼スポンサーサイト mixiで月93万円の不労所得 www.hkys.com 石田和善のmixiで月93万円の 不労所得を得た男はこちらから! http://mixi.jp/search_diary.pl?submit=search&keyword=%B7%EE93%CB%FC ▼スポンサーサイト ミククエ2で豪華特典をゲット mixiquest.com ミククエ2を購入すると今だけ 豪華特典ゲットミククエで100万 http://mixi.jp/search_diary.pl?submit=search&type=dia&keyword=%A5%DF%A5%AF%A5%AF%A5%A8 ねずみ講も巡回ツールもスポンサーサイトでお世話になってねって ことですか。 業者の商用利用はミクシィでは公認ってことですか? 通報しても無駄なわけですね^^
実際にグルかどうかは不明だけど、これで18歳未満に開放して大丈夫なのか
/* 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
友人と軽く討論になったので改めて書いてみる
きっかけはこんな会話から
友「じゃあ来週の日曜ね」
俺「おk・・・って来週?」
友「そう17日」
俺「それは今週末じゃないのか?」
友「ええーカレンダーだと・・・」
曰く、大概のカレンダーは日曜から始まって土曜で折り返り
次の段へ行くので一週間の区切りは「日曜から土曜」らしい。
おいおい「月曜から日曜」だろ常識的に考えて・・・・。
念のため調べてみた。
http://dictionary.goo.ne.jp/search.php?MT=%BD%B5%CB%F6&kind=jn&mode=0&base=1&row=0>
http://dic.yahoo.co.jp/dsearch?dtype=2&p=%BD%B5%CB%F6
> 金・土曜から日曜日にかけてのころ
日曜日は『週末』ですか?『週始め』ですか?日曜日から始まるカレンダーもあるし
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1010421490
「月曜から日曜」優勢ながらも
「日曜から土曜」もアリ、
というか元々は「日曜から土曜」だったらしい
結論としては
http://www.nhk.or.jp/bunken/research/kotoba/kotoba_qq_04040101.html
>「週末」は、指す範囲があいまいです。放送では、なるべく「今度の土曜日・○日」などと
> 具体的に「曜日」や「日にち」を示したほうがよいでしょう。
このあたりが適切か。
秋葉原へ行く約束が一週間延びるところだったぜ。
あ、かがみは俺の嫁。
4バック(DFが4人いるフォーメーション)と3バック(DFが3人いるフォーメーション)はどちらが攻撃的か?と訊ねられたら、サッカーをよく知らない人は「4バックはDFが4人いるんだから、そちらの方が守備的なんじゃないの?」と答えると思う。でも「3バックは攻撃的」「4バックは守備的」とは一概には言えない。
サイドバック(=SB)……あー、SBってのは4バックの外側に位置するポジションなんだけど。
図にすると↓
● ○ ○ ●
黒丸がSBで、白丸がセンターバック(=CB)。現代サッカーのSBは、ガンガン攻め上がっていくことが多い。敵陣までオーバーラップしていっては、また自陣まで戻って守備をする、みたいなね。SBの基本位置がセンターライン付近ってこともざらで、両SBが攻撃的な場合は、システム上は4バックでも実質2バック状態ということもありうる。つまり、4バックは3バックよりも攻撃的だ、と言えることになる。
・・・という話を、「見た目の数字に騙されちゃダメだぞ」的な話として使えないだろうか。
もちろん4バックの全員が守備的な役目を担っているということもありうるし、逆に3バックでもCBがガンガンにオーバーラップしていくチームもある。さらに言うと、守備の堅さというのは、たぶんCBとボランチの数なんだと思う。3バックで3センターだったりすると中央は鉄壁だろうし、4バックでワンボランチだったりするとボランチは過労で死ぬ。それだけでなく、いまはFWにも前線からプレスをかけていくことが求められている。だから攻撃的とか守備的とかをDFの数で判断すること自体がナンセンスなんだろうな。