「STATE」を含む日記 RSS

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

2009-11-14

Top500

Rank Site Computer/Year Vendor Cores Rmax Rpeak Power1 DOE/NNSA/LANL

United States Roadrunner - BladeCenter QS22/LS21 Cluster, PowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz, Voltaire Infiniband / 2008

IBM 129600 1105.00 1456.70 2483.47

2 Oak Ridge National Laboratory

United States Jaguar - Cray XT5 QC 2.3 GHz / 2008

Cray Inc. 150152 1059.00 1381.40 6950.60

3 Forschungszentrum Juelich (FZJ)

Germany JUGENE - Blue Gene/P Solution / 2009

IBM 294912 825.50 1002.70 2268.00

4 NASA/Ames Research Center/NAS

United States Pleiades - SGI Altix ICE 8200EX, Xeon QC 3.0/2.66 GHz / 2008

SGI 51200 487.01 608.83 2090.00

5 DOE/NNSA/LLNL

United States BlueGene/L - eServer Blue Gene Solution / 2007

IBM 212992 478.20 596.38 2329.60

6 National Institute for Computational Sciences/University of Tennessee

United States Kraken XT5 - Cray XT5 QC 2.3 GHz / 2008

Cray Inc. 66000 463.30 607.20

7 Argonne National Laboratory

United States Blue Gene/P Solution / 2007

IBM 163840 458.61 557.06 1260.00

8 Texas Advanced Computing Center/Univ. of Texas

United States Ranger - SunBlade x6420, Opteron QC 2.3 Ghz, Infiniband / 2008

Sun Microsystems 62976 433.20 579.38 2000.00

9 DOE/NNSA/LLNL

United States Dawn - Blue Gene/P Solution / 2009

IBM 147456 415.70 501.35 1134.00

10 Forschungszentrum Juelich (FZJ)

Germany JUROPA - Sun Constellation, NovaScale R422-E2, Intel Xeon X5570, 2.93 GHz, Sun M9/Mellanox QDR Infiniband/Partec Parastation / 2009

Bull SA 26304 274.80 308.28 1549.00

11 NERSC/LBNL

United States Franklin - Cray XT4 QuadCore 2.3 GHz / 2008

Cray Inc. 38642 266.30 355.51 1150.00

12 Oak Ridge National Laboratory

United States Jaguar - Cray XT4 QuadCore 2.1 GHz / 2008

Cray Inc. 30976 205.00 260.20 1580.71

13 NNSA/Sandia National Laboratories

United States Red Storm - Sandia/ Cray Red Storm, XT3/4, 2.4/2.2 GHz dual/quad core / 2008

Cray Inc. 38208 204.20 284.00 2506.00

14 King Abdullah University of Science and Technology

Saudia Arabia Shaheen - Blue Gene/P Solution / 2009

IBM 65536 185.17 222.82 504.00

15 Shanghai Supercomputer Center

China Magic Cube - Dawning 5000A, QC Opteron 1.9 Ghz, Infiniband, Windows HPC 2008 / 2008

Dawning 30720 180.60 233.47

16 SciNet/University of Toronto

Canada GPC - iDataPlex, Xeon E55xx QC 2.53 GHz, GigE / 2009

IBM 30240 168.60 306.03 869.40

17 New Mexico Computing Applications Center (NMCAC)

United States Encanto - SGI Altix ICE 8200, Xeon quad core 3.0 GHz / 2007

SGI 14336 133.20 172.03 861.63

18 Computational Research Laboratories, TATA SONS

India EKA - Cluster Platform 3000 BL460c, Xeon 53xx 3GHz, Infiniband / 2008

Hewlett-Packard 14384 132.80 172.61 786.00

19 Lawrence Livermore National Laboratory

United States Juno - Appro XtremeServer 1143H, Opteron QC 2.2Ghz, Infiniband / 2008

Appro International 18224 131.60 162.20

20 Grand Equipement National de Calcul Intensif - Centre Informatique National de l'Enseignement Supérieur (GENCI-CINES)

France Jade - SGI Altix ICE 8200EX, Xeon quad core 3.0 GHz / 2008

SGI 12288 128.40 146.74 608.18

21 National Institute for Computational Sciences/University of Tennessee

United States Athena - Cray XT4 QuadCore 2.3 GHz / 2008

Cray Inc. 17956 125.13 165.20 888.82

22 Japan Agency for Marine -Earth Science and Technology

Japan Earth Simulator - Earth Simulator / 2009

NEC 1280 122.40 131.07

23 Swiss Scientific Computing Center (CSCS)

Switzerland Monte Rosa - Cray XT5 QC 2.4 GHz / 2009

Cray Inc. 14740 117.60 141.50

24 IDRIS

France Blue Gene/P Solution / 2008

IBM 40960 116.01 139.26 315.00

25 ECMWF

United Kingdom Power 575, p6 4.7 GHz, Infiniband / 2009

IBM 8320 115.90 156.42 1329.70

26 ECMWF

United Kingdom Power 575, p6 4.7 GHz, Infiniband / 2008

IBM 8320 115.90 156.42 1329.70

27 DKRZ - Deutsches Klimarechenzentrum

Germany Power 575, p6 4.7 GHz, Infiniband / 2008

IBM 8064 115.90 151.60 1288.69

28 JAXA

Japan Fujitsu FX1, Quadcore SPARC64 VII 2.52 GHz, Infiniband DDR / 2009

Fujitsu 12032 110.60 121.28

29 Total Exploration Production

France SGI Altix ICE 8200EX, Xeon quad core 3.0 GHz / 2008

SGI 10240 106.10 122.88 442.00

30 Government Agency

Sweden Cluster Platform 3000 BL460c, Xeon 53xx 2.66GHz, Infiniband / 2007

Hewlett-Packard 13728 102.80 146.43

31 Computer Network Information Center, Chinese Academy of Science

China DeepComp 7000, HS21/x3950 Cluster, Xeon QC HT 3 GHz/2.93 GHz, Infiniband / 2008

Lenovo 12216 102.80 145.97

32 Lawrence Livermore National Laboratory

United States Hera - Appro Xtreme-X3 Server - Quad Opteron Quad Core 2.3 GHz, Infiniband / 2009

Appro International 13552 102.20 127.20

33 Max-Planck-Gesellschaft MPI/IPP

Germany VIP - Power 575, p6 4.7 GHz, Infiniband / 2008

IBM 6720 98.24 126.34 1073.99

34 Pacific Northwest National Laboratory

United States Chinook - Cluster Platform 4000 DL185G5, Opteron QC 2.2 GHz, Infiniband DDR / 2008

Hewlett-Packard 18176 97.07 159.95

35 IT Service Provider

Germany Cluster Platform 3000 BL2x220, E54xx 3.0 Ghz, Infiniband / 2009

Hewlett-Packard 10240 94.74 122.88

36 EDF R&D

France Frontier2 BG/L - Blue Gene/P Solution / 2008

IBM 32768 92.96 111.41 252.00

37 IBM Thomas J. Watson Research Center

United States BGW - eServer Blue Gene Solution / 2005

IBM 40960 91.29 114.69 448.00

38 Commissariat a l'Energie Atomique (CEA)/CCRT

France CEA-CCRT-Titane - BULL Novascale R422-E2 / 2009

Bull SA 8576 91.19 100.51

39 Naval Oceanographic Office - NAVO MSRC

United States Cray XT5 QC 2.3 GHz / 2008

Cray Inc. 12733 90.84 117.13 588.90

40 Institute of Physical and Chemical Res. (RIKEN)

Japan PRIMERGY RX200S5 Cluster, Xeon X5570 2.93GHz, Infiniband DDR / 2009

Fujitsu 8256 87.89 96.76

41 GSIC Center, Tokyo Institute of Technology

Japan TSUBAME Grid Cluster with CompView TSUBASA - Sun Fire x4600/x6250, Opteron 2.4/2.6 GHz, Xeon E5440 2.833 GHz, ClearSpeed CSX600, nVidia GT200; Voltaire Infiniband / 2009

NEC/Sun 31024 87.01 163.19 1103.00

42 Information Technology Center, The University of Tokyo

Japan T2K Open Supercomputer (Todai Combined Cluster) - Hitachi Cluster Opteron QC 2.3 GHz, Myrinet 10G / 2008

Hitachi 12288 82.98 113.05 638.60

43 HLRN at Universitaet Hannover / RRZN

Germany SGI Altix ICE 8200EX, Xeon X5570 quad core 2.93 GHz / 2009

SGI 7680 82.57 90.01

44 HLRN at ZIB/Konrad Zuse-Zentrum fuer Informationstechnik

Germany SGI Altix ICE 8200EX, Xeon X5570 quad core 2.93 GHz / 2009

SGI 7680 82.57 90.01

45 Stony Brook/BNL, New York Center for Computational Sciences

United States New York Blue - eServer Blue Gene Solution / 2007

IBM 36864 82.16 103.22 403.20

46 CINECA

Italy Power 575, p6 4.7 GHz, Infiniband / 2009

IBM 5376 78.68 101.07 859.19

47 Center for Computational Sciences, University of Tsukuba

Japan T2K Open Supercomputer - Appro Xtreme-X3 Server - Quad Opteron Quad Core 2.3 GHz, Infiniband / 2009

Appro International 10368 77.28 95.39 671.80

48 US Army Research Laboratory (ARL)

United States Cray XT5 QC 2.3 GHz / 2008

Cray Inc. 10400 76.80 95.68 481.00

49 CSC (Center for Scientific Computing)

Finland Cray XT5/XT4 QC 2.3 GHz / 2009

Cray Inc. 10864 76.51 102.00 520.80

50 DOE/NNSA/LLNL

United States ASC Purple - eServer pSeries p5 575 1.9 GHz / 2006

IBM 12208 75.76 92.78 1992.96

51 National Centers for Environment Prediction

United States Power 575, p6 4.7 GHz, Infiniband / 2008

IBM 4992 73.06 93.85 797.82

52 Rensselaer Polytechnic Institute, Computational Center for Nanotechnology Innovations

United States eServer Blue Gene Solution / 2007

IBM 32768 73.03 91.75 358.40

53 Naval Oceanographic Office - NAVO MSRC

United States Power 575, p6 4.7 GHz, Infiniband / 2008

IBM 4896 71.66 92.04 782.48

54 Joint Supercomputer Center

Russia MVS-100K - Cluster Platform 3000 BL460c/BL2x220, Xeon 54xx 3 Ghz, Infiniband / 2008

Hewlett-Packard 7920 71.28 95.04 327.00

55 US Army Research Laboratory (ARL)

United States SGI Altix ICE 8200 Enhanced LX, Xeon X5560 quad core 2.8 GHz / 2009

SGI 6656 70.00 74.55

56 NCSA

United States Abe - PowerEdge 1955, 2.33 GHz, Infiniband, Windows Server 2008/Red Hat Enterprise Linux 4 / 2007

Dell 9600 68.48 89.59

57 Cray Inc.

United States Shark - Cray XT5 QC 2.4 GHz / 2009

Cray Inc. 8576 67.76 82.33

58 NASA/Ames Research Center/NAS

United States Columbia - SGI Altix 1.5/1.6/1.66 GHz, Voltaire Infiniband / 2008

SGI 13824 66.57 82.94

59 University of Minnesota/Supercomputing Institute

United States Cluster Platform 3000 BL280c G6, Xeon X55xx 2.8Ghz, Infiniband / 2009

Hewlett-Packard 8048 64.00 90.14

60 Barcelona Supercomputing Center

Spain MareNostrum - BladeCenter JS21 Cluster, PPC 970, 2.3 GHz, Myrinet / 2006

IBM 10240 63.83 94.21

61 DOE/NNSA/LANL

United States Cerrillos - BladeCenter QS22/LS21 Cluster, PowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz, Infiniband / 2008

IBM 7200 63.25 80.93 138.00

62 IBM Poughkeepsie Benchmarking Center

United States BladeCenter QS22/LS21 Cluster, PowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz, Infiniband / 2008

IBM 7200 63.25 80.93 138.00

63 National Centers for Environment Prediction

United States Power 575, p6 4.7 GHz, Infiniband / 2009

IBM 4224 61.82 79.41 675.08

64 NCAR (National Center for Atmospheric Research)

United States bluefire - Power 575, p6 4.7 GHz, Infiniband / 2008

IBM 4064 59.68 76.40 649.51

65 National Institute for Fusion Science (NIFS)

Japan Plasma Simulator - Hitachi SR16000 Model L2, Power6 4.7Ghz, Infiniband / 2009

Hitachi 4096 56.65 77.00 645.00

66 Leibniz Rechenzentrum

Germany HLRB-II - Altix 4700 1.6 GHz / 2007

SGI 9728 56.52 62.26 990.24

67 ERDC MSRC

United States Jade - Cray XT4 QuadCore 2.1 GHz / 2008

Cray Inc. 8464 56.25 71.10 418.97

68 University of Edinburgh

United Kingdom HECToR - Cray XT4, 2.8 GHz / 2007

Cray Inc. 11328 54.65 63.44

69 University of Tokyo/Human Genome Center, IMS

Japan SHIROKANE - SunBlade x6250, Xeon E5450 3GHz, Infiniband / 2009

Sun Microsystems 5760 54.21 69.12

70 NNSA/Sandia National Laboratories

United States Thunderbird - PowerEdge 1850, 3.6 GHz, Infiniband / 2006

Dell 9024 53.00 64.97

71 Commissariat a l'Energie Atomique (CEA)

France Tera-10 - NovaScale 5160, Itanium2 1.6 GHz, Quadrics / 2006

Bull SA 9968 52.84 63.80

72 IDRIS

France Power 575, p6 4.7 GHz, Infiniband / 2008

IBM 3584 52.81 67.38 572.79

73 United Kingdom Meteorological Office

United Kingdom UKMO B - Power 575, p6 4.7 GHz, Infiniband / 2009

IBM 3520 51.86 66.18 562.60

74 United Kingdom Meteorological Office

United Kingdom UKMO A - Power 575, p6 4.7 GHz, Infiniband / 2009

IBM 3520 51.86 66.18 562.60

75 Wright-Patterson Air Force Base/DoD ASC

United States Altix 4700 1.6 GHz / 2007

SGI 9216 51.44 58.98

76 University of Southern California

United States HPC - PowerEdge 1950/SunFire X2200 Cluster Intel 53xx 2.33Ghz, Opteron 2.3 Ghz, Myrinet 10G / 2009

Dell/Sun 7104 51.41 65.64

77 HWW/Universitaet Stuttgart

Germany Baku - NEC HPC 140Rb-1 Cluster, Xeon X5560 2.8Ghz, Infiniband / 2009

NEC 5376 50.79 60.21 186.00

78 Kyoto University

Japan T2K Open Supercomputer/Kyodai - Fujitsu Cluster HX600, Opteron Quad Core, 2.3 GHz, Infiniband / 2008

Fujitsu 6656 50.51 61.24

79 SARA (Stichting Academisch Rekencentrum)

Netherlands Power 575, p6 4.7 GHz, Infiniband / 2008

IBM 3328 48.93 62.57 531.88

80 SciNet/University of Toronto

Canada Power 575, p6 4.7 GHz, Infiniband / 2008

IBM 3328 48.93 62.57 531.88

81 IT Service Provider (B)

United States Cluster Platform 3000 BL460c, Xeon 54xx 3.0GHz, GigEthernet / 2009

Hewlett-Packard 7600 48.14 91.20

82 Moscow State University - Research Computing Center

Russia SKIF MSU - T-Platforms T60, Intel Quadcore 3Mhz, Infiniband DDR / 2008

SKIF/T-Platforms 5000 47.17 60.00 265.00

83 National Supercomputer Centre (NSC)

Sweden Neolith - Cluster Platform 3000 DL140 Cluster, Xeon 53xx 2.33GHz Infiniband / 2008

Hewlett-Packard 6440 47.03 60.02

84 IBM - Rochester

United States Blue Gene/P Solution / 2007

IBM 16384 46.83 55.71 126.00

85 IBM Thomas J. Watson Research Center

United States Blue Gene/P Solution / 2009

IBM 16384 46.83 55.71 126.00

86 Max-Planck-Gesellschaft MPI/IPP

Germany Genius - Blue Gene/P Solution / 2008

IBM 16384 46.83 55.71 126.00

87 Texas Advanced Computing Center/Univ. of Texas

United States Lonestar - PowerEdge 1955, 2.66 GHz, Infiniband / 2007

Dell 5848 46.73 62.22

88 HPC2N - Umea University

Sweden Akka - BladeCenter HS21 Cluster, Xeon QC HT 2.5 GHz, IB, Windows HPC 2008/CentOS / 2008

IBM 5376 46.04 53.76 173.21

89 Clemson University

United States Palmetto - PowerEdge 1950/SunFire X2200 Cluster Intel 53xx/54xx 2.33Ghz, Opteron 2.3 Ghz, Myrinet 10G / 2008

Dell/Sun 6120 45.61 56.55 285.00

90 Financial Services (H)

United States Cluster Platform 3000 BL460c G1, Xeon L5420 2.5 GHz, GigE / 2009

Hewlett-Packard 8312 43.75 83.12

91 Ohio Supercomputer Center

United States xSeries x3455 Cluster Opteron, DC 2.6 GHz/QC 2.5 GHz, Infiniband / 2009

IBM 8416 43.46 68.38

92 Consulting (C)

United States Cluster Platform 3000 BL460c G1, Xeon E5450 3.0 GHz, GigE / 2009

Hewlett-Packard 6768 43.00 81.22

93 National Institute for Materials Science

Japan SGI Altix ICE 8200EX, Xeon X5560 quad core 2.8 GHz / 2009

SGI 4096 42.69 45.88

94 IT Service Provider (D)

United States Cluster Platform 3000 BL460c, Xeon 54xx 3.0GHz, GigEthernet / 2009

Hewlett-Packard 6672 42.41 80.06

95 Maui High-Performance Computing Center (MHPCC)

United States Jaws - PowerEdge 1955, 3.0 GHz, Infiniband / 2006

Dell 5200 42.39 62.40

96 Commissariat a l'Energie Atomique (CEA)

France CEA-CCRT-Platine - Novascale 3045, Itanium2 1.6 GHz, Infiniband / 2007

Bull SA 7680 42.13 49.15

97 US Army Research Laboratory (ARL)

United States Michael J. Muuss Cluster (MJM) - Evolocity II (LS Supersystem) Xeon 51xx 3.0 GHz IB / 2007

Linux Networx 4416 40.61 52.99

98 University of Bergen

Norway Cray XT4 QuadCore 2.3 GHz / 2008

Cray Inc. 5550 40.59 51.06 274.73

99 Jeraisy Computer and Communication Services

Saudia Arabia Cluster Platform 3000 BL460c, Xeon 54xx 3 GHz, Infiniband / 2009

Hewlett-Packard 4192 39.70 50.30

100 R-Systems

United States R Smarr - Dell DCS CS23-SH, QC HT 2.8 GHz, Infiniband / 2008

Dell 4608 39.58 51.61

2009-11-12

科学と生活のイーハトーヴ » 女性自己実現と、不幸の取り引き

http://blog.ihatovo.com/archives/4816

かいつまんで読んだ解釈ですが、社会進出が進んだといえど、まだ完了していないという実感は根強く残っている。その一方で、働く/家事育児に専念する/両立させる、など選択肢が増えたことによる切り捨てたものへの後悔がもたらす不幸感(選択肢パラドックス Barry Schwartz: The paradox of choice http://www.ted.com/index.php/talks/barry_schwartz_on_the_paradox_of_choice.html)も生じているという話題かと。

The Paradox of Declining Female Happiness | MND: Your Daily Dose of Counter-Theory

http://mensnewsdaily.com/2009/09/14/the-paradox-of-declining-female-happiness/

What Women Want Now - The State of the American Woman - TIME

http://www.time.com/time/specials/packages/article/0,28804,1930277_1930145,00.html

CRT/tanaka Blog » Blog Archive » Women, Work and the Happiness Factor

http://blog.crt-tanaka.com/2009/10/women-work-and-the-happiness-factor/

Women’s Declining Happiness: The Paradox That Isn’t « Undecided

http://undecidedthebook.wordpress.com/2009/09/21/womens-declining-happiness-the-paradox-that-isnt/

Op-Ed Columnist - Blue Is the New Black - NYTimes.com

http://www.nytimes.com/2009/09/20/opinion/20dowd.html?hp

2009-09-24

http://anond.hatelabo.jp/20090924183205

横だが。

「I = busy」は常識的に考えて「My state of busyness = busy」の略記でしょう。

言語学的に考えればそれは正しくないと思う(元増田の発想の方がいいところを突いている)。繋辞・存在動詞で調べるといい。

http://anond.hatelabo.jp/20090924174208

まず「1+1は2」でなぜ理解できなかったのかがわからない。

「I = busy」は常識的に考えて「My state of busyness = busy」の略記でしょう。

何でもすぐアスペルガーにするのはアレとは言え、元増田は物事を字面通りにしか受け取れない傾向があるんじゃない?

2009-09-14

それを下世話な勘ぐりというのだよ

どうでもいい話。

なんかMiddle State Tennessee Universityに言ってる交換留学生の子たちはなんだか現地のアメリカ人たちと旅行いっているらしいね。

まぁ、それはいいんだけどその現地のアメリカ人ってのが日本人彼女ほしいだとか日本人の女はやれるだとか思っているやつとかいるんだけど、

やられてんのかなーとか考えるのは下世話な考えだよね~って話。

結論

Middle State Tennessee Universityに行っている交換留学生の子女をお持ちの父兄には問題かもしれないが、おれには関係ない。

ちなみに名****大学とか気のせいだから!気のせいだから!気のせいだから!

2009-08-07

思考の自由度チェック

心に自由を与える50の質問 - Free Your Mind! | 口コミ発信!モノ人

http://monojin.com/50-questions-that-will-free-your-mind/

思考の束縛を解く50の質問 - finalvent日記

http://d.hatena.ne.jp/finalvent/20090806/1249525203

考え方って、案外、型にはまってしまいがちなんだよね。だから、あなたはきっとこんな風に答えるだろうなって、何となく想像できる気がした。それに対して、僕はこんな風に反応するよ。でもまずは、下の質問を読んで答えてみてね。ここはまるまるhttp://monojin.com/50-questions-that-will-free-your-mind/からのコピペだよ。

  1. How old would you be if you didn’t know how old you are?
    • 自分の年齢を知らないとしたら、何歳でいたい?)
  2. Which is worse, failing or never trying?
    • (失敗するのと、やらないの。ダメなのはどっち?)
  3. If life is so short, why do we do so many things we don’t like and like so many things we don’t do?
    • 人生がそんなに短いんだとしたら、やりたくないことばかりして、やりたいのにやらないことがこんなに多い必要ってあると思う?)
  4. When it’s all said and done, will you have said more than you’ve done?
    • (すべて終えて振り返ったときに、やったことよりも、言ったことのほうが多くなってるって思う?)
  5. What is the one thing you’d most like to change about the world?
    • (世の中でたった一つだけ変えられるとしたら、何を変えたい?)
  6. If happiness was the national currency, what kind of work would make you rich?
  7. Are you doing what you believe in, or are you settling for what you are doing?
    • (あなたは今本当にやりたいことをしてる?それとも、今やっていることに落ち着いてるだけ?)
  8. If the average human life span was 40 years, how would you live your life differently?
    • (もしも、人間寿命が40年だとしたら、どんな人生を生きたい?)
  9. To what degree have you actually controlled the course your life has taken?
  10. Are you more worried about doing things right, or doing the right things?
    • (物事をちゃんとやるのと、正しいことをするのと、あなたにとってどっちがより大切?)
  11. You’re having lunch with three people you respect and admire. They all start criticizing a close friend of yours, not knowing she is your friend. The criticism is distasteful and unjustified. What do you do?
    • (あなたは尊敬する3人のひとたちとランチを食べている。その3人が一斉にあなたのとても身近な友人を批判し始めた。その3人はあなたとその人が友人であることを知らない。批判は品がなく、不当なもの。どう反応する?)
  12. If you could offer a newborn child only one piece of advice, what would it be?
    • (新たに生まれてくる子供にひとつだけアドバイスを上げられるとしたら、何て言ってあげたい?)
  13. Would you break the law to save a loved one?
    • (あなたは愛する人を救うために法律を犯すと思う?)
  14. Have you ever seen insanity where you later saw creativity?
  15. What’s something you know you do differently than most people?
    • (他の多くの人とくらべてみて、自分なら違うふうにやれると思うものって何?)
  16. How come the things that make you happy don’t make everyone happy?
    • (なんであなたが幸せだと思うことを、みんな幸せだと思わないんだろう?)
  17. What one thing have you not done that you really want to do? What’s holding you back?
    • (本当はやりたいけどまだやってないことってある?それをやってない理由は?)
  18. Are you holding onto something you need to let go of?
    • (忘れないといけないもの、手放さないといけないものなのに、いつまでも持ってるものってない?)
  19. If you had to move to a state or country besides the one you currently live in, where would you move and why?
    • (もしどこにでも引っ越せるとしたら、どこに行きたい?それはなぜ?)
  20. Do you push the elevator button more than once? Do you really believe it makes the elevator faster?
  21. Would you rather be a worried genius or a joyful simpleton?
  22. Why are you, you?
    • (なんで、あなたはあなたなの?)
  23. Have you been the kind of friend you want as a friend?
    • (あなたが友達になりたいような友達に、あなた自身がなったことある?)
  24. Which is worse, when a good friend moves away, or losing touch with a good friend who lives right near you?
    • (仲の良い友人が遠くへ行ってしまうのと、仲の良い友人が近くにいるのに疎遠になるのと、どっちが悲しい?)
  25. What are you most grateful for?
    • (あなたが最も感謝するものって何?)
  26. Would you rather lose all of your old memories, or never be able to make new ones?
    • (昔の記憶の全部が無くなってしまうのと、新しい思い出が作れないのと、どっちを選ぶ?)
  27. Is it possible to know the truth without challenging it first?
    • (やってみもしないで、ホントはどうかなんて、わからなくない?)
  28. Has your greatest fear ever come true?
    • (最も恐れていることが、ほんとに起こってしまったことってある?)
  29. Do you remember that time 5 years ago when you were extremely upset? Does it really matter now?
    • (5年前とかに、ものすごく腹が立ったことって何か覚えてる?それって、今も大切なこと?)
  30. What is your happiest childhood memory? What makes it so special?
    • 子供の頃の思い出で一番幸せだったのは?その思い出が特別なのはなんで?)
  31. At what time in your recent past have you felt most passionate and alive?
    • 最近、一番やる気が湧いてきて、やるぞっ!って感じたことはなに?)
  32. If not now, then when?
    • (今じゃないとしたら、いつ?)
  33. If you haven’t achieved it yet, what do you have to lose?
    • (まだ手に入れてないんだとしたら、失うものってないんじゃない?)
  34. Have you ever been with someone, said nothing, and walked away feeling like you just had the best conversation ever?
    • (かつて出会った人で、言葉を交わす機会はなかったけど、最高の会話をしたみたいに感じた人っていなかった?)
  35. Why do religions that support love cause so many wars?
    • (愛を訴えているはずの宗教が、いつも戦争の原因になるのはなんでだと思う?)
  36. Is it possible to know, without a doubt, what is good and what is evil?
    • (一片の迷いもなく、善悪を判断することってできる?)
  37. If you just won a million dollars, would you quit your job?
    • (一億円の宝くじが当たったら、仕事をやめたいと思う?)
  38. Would you rather have less work to do, or more work you actually enjoy doing?
  39. Do you feel like you’ve lived this day a hundred times before?
    • 今日という日を、もう何回も繰り返してるみたく感じたことってない?)
  40. When was the last time you marched into the dark with only the soft glow of an idea you strongly believed in?
    • (強く信じるかすかな明かりだけを頼りに、暗闇に踏み込んでいくようなことを最後にしたのはいつ?)
  41. If you knew that everyone you know was going to die tomorrow, who would you visit today?
    • (もし、あなたの知ってる人全員が明日死んでしまうとしたら、今日あなたは誰に会いに行く?)
  42. Would you be willing to reduce your life expectancy by 10 years to become extremely attractive or famous?
    • (ものすごく有名か、ものすごく魅力的な人になれるとしたら、寿命を10年縮めてでもなりたいと思う?)
  43. What is the difference between being alive and truly living?
    • (命があるだけなのと、本当に生きているのの違いって何?)
  44. When is it time to stop calculating risk and rewards, and just go ahead and do what you know is right?
    • リスクと見返りを天秤にかけるのをやめて、自分が正しいと思うことをとにかくやってみる、っていうような時はいつ来るの?)
  45. If we learn from our mistakes, why are we always so afraid to make a mistake?
    • (失敗から学ぶことができるんだとしたら、なんでいつもそんなに失敗することを怖がるの?)
  46. What would you do differently if you knew nobody would judge you?
    • (だれにも批評されないって知ってたらもっと違うやり方したのに、っていうことある?)
  47. When was the last time you noticed the sound of your own breathing?
    • (一番最近自分の吐息を聞いたのを覚えてるのっていつ?)
  48. What do you love? Have any of your recent actions openly expressed this love?
    • (あなたが大好きなことって何?最近あなたがとった行動であなたがそれを大好きだって、誰の目から見てもわかるようなことってあった?)
  49. In 5 years from now, will you remember what you did yesterday? What about the day before that? Or the day before that?
    • (今から5年後、あなたは昨日したことを覚えていると思う?一昨日のことは?その前の日は?)
  50. Decisions are being made right now. The question is: Are you making them for yourself, or are you letting others make them for you?
    • 決断はたった今下された。問題は、その決断をあなたが自分で下したのか、誰か他の人が下したのかってこと。)
  1. 「○○歳」と答えてたら、思考がかなり固定化されているかも。年齢なんて便宜的なもの。体力なのか、精神面なのか、はたま社会的な立場だとか、何とリンクさせて考えるのかも自由だからね。
  2. 「どっち?」って問いに、提示された選択肢の中からしか選べなかったなら、かなり頭が固くなっている可能性があるよ。ついでに言うと、本当にダメなのかどうかも疑ってみてね。
  3. 主客転倒というか、やりたくないことばかりして、やりたいのにやらないことが多いから、人生が短く感じられれるのかもしれないね。ところで、あなたのやりたいこととやりたくないことってそんなにはっきりわけられるもの?やりたいことの中にやりたくないことが混じっていたり、やりたくないことだって、実はほんの一部が面倒なだけだったりしない?
  4. やろうと思ったことを一つ残さず叶えている人なんているのかな。それって自然なことかな。確実にできることしか発言しなくていいのかな。誰かの力を借りる必要があるときってどんなときだろうね。
  5. 提示された条件の中でしか……(以下略)。変えたいという願望、本当はとっくに変える力を持っていたりするんじゃない?
  6. 名前のついた職業ばかりが「仕事」じゃないからね。そして、どんな通貨であれ、誰かのところに沢山集まってくることが理想的な状態かどうかってことも考えておきたいよね。
  7. 立ち止まって見えるか、前に進んで見えるのか、捉え方次第だよね。いろんなスパン自分の変化を見てみると面白いよね。
  8. 提示された条件の……(以下略)。残りが後これくらいしかなかったら、っていうことだけじゃないよ。自分に使える時間が分かっている場合と分からない場合で行動が変わるの?という問いかけだよ。
  9. 思った通りになることが唯一の正解だと考える性格だから、かなり低い値をだしてるでしょ。結果をきちんと受け止めてみると、自分コントロールしてきた割合って多分もっと大きくなるはずだよ。 自分人生の判断は自分で下すという覚悟の度合いでもあるよね。謙虚になりすぎるのも、結果から目を反らしている気持ちの現れかもしれないよ。
  10. 提示された……(以下略)。物事をちゃんとやるのと、正しいことをするのと、そこに違いがある世の中って不条理だよね。どちらを優先するかが大事なんじゃなくて、そう考える理由があなたの世の中の捉え方を反映しているかもねっていう話ね。
  11. 品がなくて不当な批判(誹謗中傷ってことだよね)をするような「尊敬できる」人を想像できたなら、あなたにとって「尊敬」という言葉定義を再確認してみる必要がありそう。逆に、想像できなかったなら、身近な人と意見が食い違ったときにどう振る舞う?って考えてみるとどうだろう。いろんなケースを想定して、自分の心に負担にならない考え方を見つけておくと、実際の場面で楽になるよ。
  12. たった一つだけ(しかできないの)?」と思うのも、「たった一つだけ(で全てを伝えたい)!」と考えるのも自由だよね。
  13. 法律ではなく、法、あるいは真理であったらどう?正しいと信じてきたものと戦ってみる覚悟はある?ねじ曲げてやる度胸はある?
  14. 「ある」からといって、おかしいと感じる直感を鈍らせてはいない?批判は否定じゃないので、遠慮しないでどんどん伝えて良いと思うよ。
  15. 自分が他人と違うと気付くっていう話じゃないよ。ただやり方が異なっているという事実と、それに伴う変化を見比べてみようね、というだけの話。自分の行動に理屈が伴っているかどうかの確認作業だね。
  16. 昔のあなたはそれを不満に感じていたよね。今のあなたは、もっと純粋な興味で見ているような気がするよ。どうしてそれを疑問に感じたんだろうね、どうしてそれを考えるんだろうね。
  17. 理由なんて本当にあったのかな。むりやり理由をつけてない?なりたい自分がたくさんあって、手が回らないってだけでもいいんだよ。
  18. 気付いているのなら、じきに卒業する時が来るよ。でもきっとまだ気付いていないだろうね。離れられたときに、しがみついたままでは見えなかったいろんな姿が見えてくるものだよ。
  19. 特定の地名じゃなくて、気候や近所の雰囲気や便利さや快適さで答えても良いんだよ。どうしても引っ越さなきゃいけない場面、必要は無いけど引っ越したくなる場面、思い描く行き先は同じかな。
  20. あなたは押さない人でしょ。なんでも無理に教訓を得なくてもいいんだよ。
  21. どっちかに偏らなきゃだめかな。あなたなら、どれくらいの割合で混ぜ合わせてみたい?
  22. 「なぜ?」って聞かれると、動揺しちゃうのはなぜなんだろうね。Whyって何?areってどういうこと?youって誰?わからないことは逆に聞き返してみるのもありだよ。
  23. その友達と同じような自分がいたとして、その自分とあなたは友達になりたいと思う?
  24. 悲しくなる気持ちはあなたの優しさの現れだと思うよ。でも友人はあなただけのものじゃないよね。変わっていくことは悲しいこと?そうなるべくしてそうなった人たちの門出をこれからもまた笑顔で見送ってあげようね。
  25. 誰に感謝するのかではなくて、どういう状況に対して感謝するのか、だよ。本当に尊敬に値する相手は、感謝の表し方や対象にはこだわらないものだと思うよ。
  26. そうなった時にどう振る舞うかを決めてしまえば、どっちでも価値のあるものにしてしまえるよね。
  27. 誰もがやらなかったことにも理由はあると思うんだ。やってみもしないのにわかっちゃうっていう体験もあるでしょ?そうなるように考えるトレーニングも大切だと思うんだ。
  28. 人一倍怖がりのあなたには、逆に、恐れていたけれど起こらなかったことが、世の中にどれほどたくさんあるのかも、数えてみて欲しいと思う。
  29. 多分それは腹が立ったことじゃなくて、自分の中で消化できなかった出来事だよね。時間をかけて結論を出していくこともあれば、あるときふいにすっきりすることもあるんじゃないかな。あなたは忘れたと言ってたけれど、僕は5年前にあなたを怒らせてしまったこと、いまでも覚えているし、あなたを理解する上で、それは大切なことだと感じてる。
  30. 幸せで特別な思い出、その出来事と理由が、もしいつまでも変わらずにあるとしたら、僕らは本当に成長しているのかなあ。
  31. やる気の形は一種類じゃないよね。どんな種類のやる気を持ってる?どんなふうに使い分けてる?周りの人をちゃんと利用してる?
  32. 焦らなくていいよ。そのときが来たら、あなたは考える前にもう始めているよ。大丈夫
  33. 「減るもんじゃないんだから、見せてよ」っていうのと同じでさ、失うものを怖れているなら、何か大事なものを既に手に入れているってことかもしれないね。それを手放してでも手に入れたいものは何?って考えるべきかもね。
  34. 願わくば、それが自分であって欲しいな、なんて。といいつつ、自分だって、すごくたくさんのそういった人たちがいるからなあ。
  35. 自分達だけは違うって、きっと誰もがそう主張していると思うよ。確かにみんなそれぞれ違っているんだろうね。でも、もしそうならさ、尊敬する対象完璧でなくちゃいけないかな。一人一人が完成された世界を目指す必要はあるのかな。みんなで力を合わせて、老若男女、入れ替わり立ち替わり補い合うのでは幸せにはできないかな。思った通りにならない状況は、そんなに受け入れがたいことかな。
  36. 「できない。けどやってしまう」って言わされちゃうよね。でも、できないからやらなくていいのかな。多分、そうではないと思うんだよね。結果を受け入れる覚悟のありかたじゃないかな、やっぱり。
  37. 一億円の価値をどんなふうにみたのかな。自分が生活するお金として見たのかな、それとも何かに使うお金として見たのかな。あなたのことだから、きっと自分のものにはしないだろうね。でも、自分の判断で最大限に有効に運用してやろうという考え方からも逃げていたりはしないかな。
  38. 選択肢を提示されたら……(以下略)。自分に見合った配分を知りたいよね。
  39. 感じるかどうかを問うているだけですよ。それが正しいとか正しくないとか考えてなかった?あなたのそのジャッジは必要だったかな?
  40. 世の中、タイミングでことが運ぶってこと、よくあるよね。自分の意志だけでそれができていたのかどうか、うまいこと誰かに背中を押されたのかもしれないし、違ったタイミングで振り返ると、また違ったものが見えてくるかもしれないね。
  41. 誰かに会いにいく以外のアクションも可能ですよ。今日と明日の区切りなんて便宜的なものですよ。
  42. 有名、魅力的、寿命。これらの言葉を、どんなふうにイメージ定義)した?言葉ってとってもカラフルだよ。一つの言葉にいろんなイメージを添えてみたいものだよね。
  43. この質問にみじんも疑問を抱かなかったなら、「〜の違いは何?」と尋ねられることで、違っていることを前提として刷り込まれているかもしれないね。
  44. これもまた「いつやるの?」と問うことでやることを前提に考えさせるトリックだよね。
  45. これも同様に。この手の質問を重ねることで、無意識のうちに、まるで自分が、どんな失敗をも怖がっているものと思い込まれされていたりしない?平気な顔で失敗していること、身近に意外とあるのでは?
  46. 「ある」と答えることに躊躇いを覚えたのは、自分の意志がない人だって指摘されたと脅えているからじゃない?誰にだって重みの違う用件があるものだから、ルーズ決断っていうものもあってもいいと思うんです。じゃないとくつろげないよね。逆にまるっきり「ない」のであれば、ひとりよがりすぎるかも。第三者視点を活用するということを意識してみようか。
  47. 尋ねられた瞬間に、反射的に意識してしまうよね、こういうことって。尋ねることで無意識顕在化させるのは相手をコントロールする手段としてはポピュラーなんですよ。とはいえ、我に返る方法を各々が独自に見つけ出すと役立つから、自分なりに探してみると良いかも。
  48. 四六時中、大好きなことを持っていなくちゃ充実していないとか、気持ちを素直に表現しなくちゃいけないだとか、そういったきまりはないと思うな、ねんのため。なかったなら「ない」でいいんだよ。とはいえ、大好きとかloveってどういうことなのかを考えるのもまた楽しいよね。
  49. Can you?じゃなくてwill you?と尋ねているということは、「覚えていられる?」ではなくて「覚えていようと思う?」という意志の問いかけなんだろうね、多分。ひょっと「覚えていられる?」と問われていたとしても、「覚えていたいと思う」ではなくて、「覚えていられる」と答えたのであれば、質問に対して受け身になり過ぎているかもしれないね。
  50. 決断の最終段階でそれを問うようなら、その決断自分で下したものではなくなるのでしょうね。で、それがどれほど大事なの?とさらに問うてみましょうか。結果よりもプロセスを重視する思考の偏りがみつかるかもしれないよ。頑張ったら必ず報われるのは公平なのかなとか、努力の方向はそれでいいのかなっていうことは、折に触れて考えていきたいね。

そもそも、この質問の一つ一つに律儀に反応している時間が勿体ないと思えるくらい、目の前にやりたいことが待ち構えているようになるのが理想なんだろうけど。そういう意味では、あなたのように、途中で飽きてここまで読み飛ばしてくるようなずぼらさも、自由な思考の一つの形なのかもね。

2009-03-21

http://anond.hatelabo.jp/20090321104826

そりゃぁ、「共和国」とか、外国語を無理矢理、日本語に直すからでしょう。英語だと:

日本国State of Japan

韓国 :Republic of Korea

同じ3単語だよ。

http://en.wikipedia.org/wiki/List_of_sovereign_states

2009-02-25

http://anond.hatelabo.jp/20090225205005

25~11個

24 from know 

23 who because with 

22 economy

21 an new people plan so

20 by every health

19 us

18 America care they time

17 do

16 also that's these

15 all Americans It's must years your

14 about education energy here jobs make no

13 budget if

12 cost country one recovery than there tonight we've why

11 crisis how out reform those when

10個

at banks college Congress don't future money nation next responsibility some tax what where world

9個

children deficit even just me meet need put up work year

8個

afford back cannot down economic end first help lending my see take times was way

7個

again businesses confidence days each ensure get government high history invest issue million once only power right system

6個

already another been begin bring buy century challenges clean come credit debt fact families financial goal helping largest long-term made most over president recession save schools still support through too

5個

address any ask bad before business called chamber commitment cut cuts effort ever family finally global home its job keep last lead like loans many market necessary never off opportunity other programs provide spend united we'll were would

4個

able accountable across act action administration am asked can't could critical cyber cycle cynical difficult does dollars easy force four-year he homes investment Iraq let longer may men moment national nearly old pay percent price private problems promise receive renewable restore say security send sense she should single soon stand States street struggle technology tell think values war well well-being we're without words workers worse yet

3個

ability absolutely after auto bank begins beyond breaks build cause change child comes community compete comprehensive concern confront costs created decade decisions Democrats depend depends didn't dime done efficient enough entrepreneurs everyone federal forward foundation given good govern great half her higher hold hope housing I'm includes industry inherited insurance into I've lay layoffs legislation letter life long lost major makes Medicare move nor often part passed place problem progress protect pushed regulations Republicans resources restart return root said same savings says seen Sen. sent serve simply solar solve speak spirit step struggling students taxpayer thank then today together training understand use wait want watching ways whatever which women won't working young

2個

abuse accounts affordable Afghanistan agenda allow along amid appointed approach areas around arrived assistance assure away balance become begun being believe benefits best billions bless boldly both bought built burden car career Carolina cars children's citizens clear close committed common company complete continue continued corporations countries creating crushing debates decline demand did different diploma directly disease doctors doesn't dollar doors dreams eliminate enterprise era example expand expanded extremism face failure far fastest-growing father few fiscal forces forge found four fraud full fully generation generations getting give God Greensburg had hard haven't healthy held helped highest him his historic households ideas ignore important industries innovation inspiration instead invented kind lasting launched law laying lift line lines list living loan look lose lower massive millions months mortgage much nations neighbor nobody office oil open order ordinary ourselves overseas own pass paychecks payment payments places policies priorities probably process program prosperity provided public quality quick quickly quitters quitting rates real rebuild recover reflects renewed require responsible re-start result revive rewards rules sacrifice safe second secure seek serious service set ship sitting small Social something source South spending spur state stock stopped stores strength strengthen strong stronger submit suffering surely takes teacher teachers term terrorists third though thousands threats three told tomorrow took tough trust trying tuition turn under upon very Vice view wake walk Wall waste wasteful weakened went what's wind worthy yourself

変化とか無視した。1個なんて載せられるかー!

2009-02-19

http://anond.hatelabo.jp/20090218205723 に続いてハアレツのコメント

http://anond.hatelabo.jp/20090218205723翻訳をなさった方とは別の者ですが、そのあとに投稿されたコメントからひとつ。粗訳ですが、イスラエル国内からの反応です。非常に「ハアレツ」らしい反応だと個人的には思います。

 

 

http://www.haaretz.com/hasen/spages/1064909.html#resp の8件目のコメント

http://www.haaretz.com/hasen/objects/pages/ResponseDetails.jhtml?resNo=4543383&itemno=1064909&cont=2

Title: im with #7

Name: MMS

City: Telaviv State:

 

I agree with #7. I think Murakami is simply saying eggs=individuals and wall=system. He is saying that all including both people from Gaza and Israel are all eggs and that they are fighting against each other because of the system they've created and are involved in, in a long history behind them. He is saying that he wants to believe in individual consciousness rather than putting his energy thinking who is right and who is wrong. There are people(eggs) in both sides who want peace but most of the time, only the extremists from both sides are acting out to make the situation worse and it looks as if they are protecting their own people. Yep...the system is stronger and it is so far protecting people in Israel. But it`s not getting any better neither. Grrrr...sorry, I don`t know what the hell is going to solve this situation...maybe generation after generation, people will stop brainwashing each other? Maybe all the eggs will stand up instead of only extremists?

 

 

タイトル: 7番のコメント(前の投稿 http://anond.hatelabo.jp/20090218205723 の「『ドンキホーテ』のコメント主へ」)に同意します

投稿者: MMS

所在地: テルアビブ

 

 

7番のコメントに同意します。村上さんは単に、「卵」=「個人」、「壁」=「システム」と言っているだけだと思います。彼が言っているのは、ガザの人々もイスラエルの人々も含め、すべての人々がみな「卵」であり、彼らが互いに戦っているのは、その背景にある長い歴史において彼らがつくり出し、彼らが深く関わっている (involved in) システムが原因である、ということです。彼は、誰が正しくて誰が間違っているかを考えることに注力するよりも、個々人の良心を信じたい、と言っています。両方の側に平和を望んでいる人々(「卵」)がいますが、たいていは両方の側の過激主義者たちだけが目立った行動をとり、状況をより悪くしておいて、まるで自分たちの側の人々を守っているかのような態度をとる。そう……システムは頑強で、そして今のところはイスラエルの人々を守っています。けれども、それがよくなっているかというとそうではありません。うーーーむ……すみません、私には一体何がこの状況を解決することになるのか、わかりません……世代を経ていくうちに、人々が互いに洗脳しあうことをやめれば、ということかもしれませんし、過激主義者だけでなくすべての「卵たち」が立ち上がれば、ということかもしれません。

2009-02-18

http://anond.hatelabo.jp/20090218205723 (ハアレツに寄せられたコメント) の訳抜

おつかれさまです。まず一箇所、訳抜けのところ。

Title: re #5

Name: B

City: SF State: CA

I get where you're coming from because I'm tired of utopian solutions from dreamers in Europe.

ヨーロッパ連中が言うユートピア的解決にはもう飽き飽きしちゃうよね。

  ↓

ヨーロッパ連中が言うユートピア的解決にはもう飽き飽きしちゃっているから、あなたの出身地に来ました。

ということでは。

#5の「ドンキホーテ」のコメントの人(Fed Upさん)は、この記事のコメントではCityのところに「バルセロナ」と書いていますが、おそらく別の記事のコメント欄で「米国出身」ということを書いているのではないかと思います。なおかつ、このコメントの投稿者のBさんは、Fed Upさんと過去にやり取りしたことがあるのでは、と。(ハアレツはコメントのページからコメント投稿者の過去コメントを確認する術がないようなので、推測することしかできませんが。)

 

 

同じコメントから:

I know we're not used to having media acknowledge our citizens as people, so we get defensive, but I give Mr. Murakami the benefit of the doubt.

メディアはぼくらを人間あつかいしないから、防戦一方だけど。でも村上さんに対して性急な判断は控えたい。

  ↓

確かに、メディアがぼくらを人間としてみなすことにぼくらは慣れていないから、どうしても防御的になるけど、村上さんに対して性急な判断は控えたい。

このdefensiveは「何かあると攻撃されていると思って過剰に身構える」といった意味でしょう。

(ところでここの「性急な判断は控えたい」って、いい訳ですね!)

 

 

もう少し下の方:

From his speech I feel he's criticizing the entire system that has our neighbors trying to destroy us in the first place and the world legitimizing it and the common acceptance of boycotting Israel because it's the in thing to do.

ぼくらのご近所さんイスラエル破壊しようとしている事、世界がそれを正当化しようとしている事、イスラエルボイコットの考えが一般化する事を強制するシステム全体を非難しているようにぼくには思えた。

ややこしい文ですね、これ。

he's criticizing

  the entire system that has our neighbors trying to destroy us in the first place

  and the world legitimizing it

  and the common acceptance of boycotting Israel because it's the in thing to do.

という構造ではないでしょうか。したがって、

彼の講演からは、まず(←in the first place)、ぼくらのご近所さんイスラエル破壊しようとするのを許している(←ちょっと訳語が変。that has our neighbous のhasが《使役》)システム全体を非難し、それを正当化している世界を非難し、流行しているから(←the in thing)という理由でイスラエルボイコットすることが一般に受け入れられていることを非難しているように、ぼくには思えた。

※「訳語」はちゃんと検討していませんのであしからずご了承ください。

 

 

あるいは、

he's criticizing

  the entire system that has our neighbors trying to destroy us in the first place

  and (the entire system that has) the world legitimizing it

  and the common acceptance of boycotting Israel because it's the in thing to do.

という構造かもしれません。この場合、

彼の講演からは、まず、ぼくらのご近所さんイスラエル破壊しようとするのを許し、また世界にそれを正当化させているシステム全体を非難し、また、流行しているからという理由でイスラエルボイコットすることが一般に受け入れられていることを非難しているように、ぼくには思えた。

常に卵の側に(ハアレツに寄せられたコメント

http://anond.hatelabo.jp/20090218005155

村上春樹:「常に卵の側に」( http://www.haaretz.com/hasen/spages/1064909.html )でハアレツに寄せられたコメントの一部です。


http://www.haaretz.com/hasen/objects/pages/ResponseDetails.jhtml?resNo=4542207&itemno=1064909&cont=2

Title: To Mr. Murakami: a few words of reply from an egg

Name: A Philosopher

City: State:

First, let me welcome you to the region. Second, I would like to disagree with you about your description of literature as a skilful lie. A lie must, by definition, involve malice, deception, whereas literature is about imagination: there is no malice about that. Unfortunately, much of what you hear lately on international TV about Israel are indeed lies, not even fiction. You say that Israel is the wall and the Palestinians are the eggs, just because we have Tanks. You tend to forget that the Palestinians are part of more than one billion Muslims in the world, many of whom would like to get rid of Israel if they just could. You also forget that if the situation were reversed and the Palestinians were instead in possession of tanks, there wouldn`t be any eggs left in the middle-east. The wall we build is exactly to protect us, as eggs, from the wolf lurking outside. And If the terrorists didn`t use their own eggs as shield, they wouldn`t break either. All the best to you.

題:村上さんに卵からいくつかの回答

まずは、中東までご苦労さまでした。で、技巧に富んだ嘘として文学を称された件については賛成できません。嘘とはその定義によれば、悪意やごまかしを含んでいるのに対し、文学想像力に関するものであり、悪意はありません。不幸にもイスラエルに関してあなたが国際報道で目にしたことはまったくの嘘であり、創作でさえありません。イスラエルは壁でパレスチナは卵だとおっしゃられますが、たまたま戦車が私たちにあっただけです。お忘れのようですがパレスチナは10億以上の人口を抱えるイスラム世界の一部です。その多くがもし可能ならイスラエルを消滅させたいと願っています。逆の立場で考えればパレスチナ人戦車を持ったら中東から卵は消え去る事も思い出して下さい。外をうろつく狼から身を守るためだけに私たちは壁を作ったのです。テロリスト自分のところの卵を人間の盾に仕立てなければ、割れることもなかったでしょう。

ごきげんよう


http://www.haaretz.com/hasen/objects/pages/ResponseDetails.jhtml?itemno=1064909&resNo=4543094

Title: Like Quixote tilting at windmills

Name: Fed Up

City: Barcelona State:

I don`t doubt that this fellow`s books may be addictive, but I do doubt the value of getting hooked on stories that are all, apparently, based on a false ontology of the world being clearly divided into "walls" and "eggs." As talkback #1 points out, even tank-drivers have their fragility, and to deny their humanity by summarily labeling them "walls," and considering them to be part of some chimerical menace called "the system," is to paint a thin veneer of chivalry over a rotten base of moral recklessness.

What`s been going on in Sderot over the last several years? Have Gazans, driven to desperation by the evil system-monster, been left with no option but to toss their eggs against the walls that surround them? Is it evil for people on the receiving end to retreat unto bomb-shelters (aka "walls") against which these eggs can`t help but break?

Mr. Murakami, walls don`t break eggs unless there is someone throwing those eggs.

題:まるでドンキホーテ

彼の本がやみつきになるのは私も否定しないが、与太話、明らかに間違った本体論、つまり「壁」と「卵」とに世界を分類するというのは何の意味もない。1番目のコメントが指摘するように戦車の兵士だって(卵のように)壊れやすい。あっさり彼らを「壁」とひとくくりして、「システム」という名のでっちあげた脅威にしたてるなんて、わけわからん理由で廃屋に挑む騎士のようなもんだ。スデロット(Sderot)でここ何年もなにが起きている?ガザ連中は悪のシステムモンスターのせいでやけっぱちのやけくそ自分とこの卵をぐるりと囲む壁に投げつけたというのだろうか?シェルターに追いつめられた(これも「壁」だよね、卵は仕方なしに投げつけられて壊れる)人々が邪悪だって?村上さん、誰かが卵を投げなければ壁は卵を壊さないんだよ。


http://www.haaretz.com/hasen/objects/pages/ResponseDetails.jhtml?itemno=1064909&resNo=4543134

Title: wall & eggs

Name: JR

City: Amsterdam State:

bit folish to say that the only option is that the hurt civilians are the eggs and the israeli tank and bombs are the wall. Never thought that the israel people are the eggs in a small basket called eretz jisrael which is surrounded by a rather large muslim wall?

No fiction here mr , just hard facts.

Kind regards from the Netherlands

題:壁と卵

負傷した人々が卵でイスラエル戦車爆弾が壁だとしか言えないなんてちょっとまぬけだね。もっと大きいムスリムの壁に包囲されたイスラエルの地(eretz jisrael)という小さなかごにいる人たちが卵だって考えなかったのかね?フィクションじゃないよ、ちゃんとした事実だ。


http://www.haaretz.com/hasen/objects/pages/ResponseDetails.jhtml?itemno=1064909&resNo=4543210

Title: re #5

Name: B

City: SF State: CA

I get where you`re coming from because I`m tired of utopian solutions from dreamers in Europe.

But I believe Murakami is a guy who also understands the tank driver and our kids in Sderot. I know we`re not used to having media acknowledge our citizens as people, so we get defensive, but I give Mr. Murakami the benefit of the doubt.

From his speech I feel he`s criticizing the entire system that has our neighbors trying to destroy us in the first place and the world legitimizing it and the common acceptance of boycotting Israel because it`s the in thing to do. This guy is acknowledging our fight to overcome this as individuals and as societies.

This guy is deeper than our critics from Europe, and this guy is a novelist, not a critic.

In Norwegian Wood he painted a really accurate picture of some self-righteous university organizations, quite similar to many of our critics. All I`m saying is before dismissing him or arguing, see that he`s not picking fights or sides.. besides us eggs

題:「ドンキホーテ」のコメント主へ

ヨーロッパ連中が言うユートピア的解決にはもう飽き飽きしちゃうよね。

村上戦車の兵士やスデロット子供たちも理解していると思う。メディアはぼくらを人間あつかいしないから、防戦一方だけど。でも村上さんに対して性急な判断は控えたい。ぼくらのご近所さんイスラエル破壊しようとしている事、世界がそれを正当化しようとしている事、イスラエルボイコットの考えが一般化する事を強制するシステム全体を非難しているようにぼくには思えた。こいつは僕らの戦いが個人として、社会として克服されるって事を知ってる。

ヨーロッパ評論家よりずっとわかってるし、彼は小説家であって評論家じゃない。

ノルウェイの森に出てくる独善的な学生運動家は評論家連中みたいで、きっちり描かれている。彼のことをくさす前に、論争を挑んだり一方の側につくつもりがないのを理解しないと。

2009-02-03

はてなニュース調子悪いぞ

http://uk.reuters.com/article/usPoliticsNews/idUKTRE5120MP20090203

Hillary Clinton is expected to travel to Japan, South Korea, China and possibly Indonesia in mid-February on her first trip as U.S. secretary of state, diplomats said on Monday.

ヒラリークリントン国務長官として最初の旅行に2月中旬に日本韓国中国、そしておそらくインドネシアにも訪問したいことを外交官が月曜、明らかにした。

こーゆーの投稿しようとしてんのに。

2009-01-25

就職にあたって日本企業について思うこと

暴論かもしれないが日本企業就職活動を通じて思ったことについて書いてみたいと思う。

厚生福利が明記されている。

まだ就職活動といっても2年と半年先なので企業を調べているだけなので比較することはできないが、job descriptionを見る限りだとほとんどの日本企業(少なくとも大手)は厚生福利が充実しているように思える。米国企業も厚生福利はあるだろうが通常job descriptionには書いてない。

仕事について全く明記されていない。

はっきり言わせてもらえば日本企業就職しようと思っても全く何をするのか想像することができない。米国企業はこの点について豊富である。どんな内容なのか明記されている場合が多い。

新卒って便利だな〓

日本企業新卒しか雇わないがそれはそれで新卒にとっては便利だ。アメリカだと雇用が流動的だから新卒はentry levelやtraineeで応募しないといけないんだけど新卒専用のページがあることなんて珍しい。college graduatesとかあるけどそのまますべてのjob listingにリダイレクトされるのが普通

インターンとかはっきり言って無駄だよね。

たった数日のインターンで何を習うのだろうか。インターン無駄だからやめたほうがいいと思う。確かにアメリカみたいにpaidのインターンcoopは金がかかるかも知れない。しかし、インターンでやってくる学生は明らかに”安い労働力”であることは確かである。また、彼らは簡単に解雇することができる(なぜなら期間工みたいなようなものだから)。また、仮にもインターンを貴社に望んで来るような学生なのであるからその学生は貴社を受けることはまず間違いないだろう(ブラックなか医者でない限り)。長期間のインターンcoopで培われた知識や経験企業そのものに対して利益となるし、また学生採用する時により多くの情報を与えるだろう。

理系文系給与が大差ないなんて...

はっきり言えば、海外工学系を学んだ学生はたぶん日本には帰ってこない。たとえば自分の学部でいえばstarting salaryが48k-58k + bonusだ。額面の金額だからfederal taxやstate taxなど計算しないといけないが。税金なんて計算したことないから間違ってるかもしれないが、例えば、州税や給与所得税のないテネシーだと(その分消費税がべらぼうに高いが)、38Kくらいもらえそうだ。まぁ、AMTでぶっこぬかれる場合があるかもしれないが。その分仕事を得るのは大変だ。いい成績や英語能力インターンの有無、いろいろな要因が重なるだろうが、それだけの努力意味あるのだと思う。4年間、汗水鼻水たらして努力して遊んで暮らした文系と同じ給与なんてやってられない。もし、行くのだったらどこか自分を評価してくれるところがいい。

給与が上がっていくことはいいことだよね。

勝手給与が上がっていくのはいいことだよね。アメリカだとPEとか資格取ったりしないと給与上がらないし!

そのうち続き書く

2009-01-21

毎朝読対訳:就任演説(5)

http://anond.hatelabo.jp/20090121125115

 For everywhere we look, there is work to be done.

(M)どこを見回してもすべき仕事がある。

(A)あらゆるところに、なすべき仕事がある。

(Y)なすべき仕事は至る所にある。

 The state of the economy calls for action, bold and swift, and we will act - not only to create new jobs, but to lay a new foundation for growth.

(M)経済状況は、大胆で迅速な行動を求めている。我々は新しい職場創造だけでなく、成長のため新しい基盤を作らねばならない。

(A)経済状況は、力強く迅速な行動を求めている。私たちは行動する。新たな雇用を創出するだけではなく、成長への新たな基盤を築くためにだ。

(Y)米国経済は、大胆かつ迅速な行動を求めている。そして我々は新規の雇用創出のみならず、新たな成長の礎を整えることができる。

 We will build the roads and bridges, the electric grids and digital lines that feed our commerce and bind us together.

(M)我々は道路や橋、電線やデジタル通信網をつくり、我々の商業を支え、我々の結びつきを強めなければならない。

(A)商業の糧となり、人々を結びつけるように、道路や橋、配電網やデジタル回線を築く。

(Y)道路や橋を造り、電線やデジタル通信網を敷き、商業を支え、我々を一つに結び付ける。

 We will restore science to its rightful place, and wield technology's wonders to raise health care's quality and lower its cost.

(M)我々は科学を本来あるべき場所に引き戻し、技術活用医療の質を引き上げると共にコストを下げる。

(A)科学を本来の姿に再建し、技術の驚異的な力を使って、医療の質を高め、コストを下げる。

(Y)科学を本来あるべき地位に戻し、医療の質を引き上げながら、そのコストは減らす。

 We will harness the sun and the winds and the soil to fuel our cars and run our factories.

(M)太陽、風や土壌を使って我々の自動車の燃料とし、工場を動かす。

(A)そして太陽や風、大地のエネルギーを利用し、車や工場の稼働に用いる。

(Y)太陽、風や土壌を利用して自動車を動かし、工場を動かす。

 And we will transform our schools and colleges and universities to meet the demands of a new age.

(M)我々の学校や単科大、大学を新たな時代の要請にあわせるようにする。

(A)新しい時代要請に応えるように学校大学を変革する。

(Y)新時代の要請に合うよう学校や単科大、大学を変えていく。

 All this we can do.

(M)これらすべてが我々には可能だ。

(A)これらすべては可能だ。

(Y)我々はすべてのことを成し遂げられる

 And all this we will do.

(M)これらすべてを我々は実行するのだ。

(A)そしてこれらすべてを、私たちは実行する

(Y)し、行っていく。

 Now, there are some who question the scale of our ambitions -

(M)我々の志の大きさに疑問をはさむ人もいる。

(A)私たちの志の大きさに疑念を抱く人がいる。

(Y)我々の野望の大きさについて疑念を抱く人がいる。

  - who suggest that our system cannot tolerate too many big plans.

(M)我々のシステムでは大きすぎる計画は達成できないという人々だ。

(A)我々のシステムではそんなに多くの大きな計画は無理だ、と言うのだ。

(Y)我々のシステムは多くの大きな計画に耐えられないと指摘する人もいる。

 Their memories are short.

(M)彼らは覚えていないのだ。

(A)だが、そうした人たちは忘れるのが早い。

(Y)だが、彼らは忘れている。

 For they have forgotten what this country has already done; what free men and women can achieve when imagination is joined to common purpose, and necessity to courage.

(M)彼らはすでにこの国が成し遂げたことを忘れているのだ。想像力が共通の目的に出会った時、必要が勇気と出会った時、自由な男女に達成できることを忘れているのだ。

(A)これまで我が国が成し遂げてきたこと、そして、共通の目的勇気の必要性に想像力が及んだとき、自由な人々がどんなことを成し遂げられるかを、忘れているのだ。

(Y)彼らはこの国が何を成し遂げたかを忘れている。想像力が共通の目的と出合った時、必要が勇気と結びついた時、自由な男女が何を達成できるかを忘れているのだ。

 What the cynics fail to understand is that the ground has shifted beneath them -

(M)皮肉屋が理解できないのは、彼らの下で大地が動いたということだ。

(A)皮肉屋たちは、彼らの足元の地面が動いていることを知らない。

(Y)皮肉屋が理解できないのは、彼らがよって立つ地面が動いたということだ。

 - that the stale political arguments that have consumed us for so long no longer apply.

(M)我々を余りに長期間、消耗させた使い古しの政治論議はもはや適用されない。

(A)つまり、これまで私たちを消耗させてきた陳腐な政争はもはや当てはまらない。

(Y)長い間、我々を疲れさせてきた陳腐な政治議論はもはや通用しない。

 The question we ask today is not whether our government is too big or too small, but whether it works -

(M)今日、我々が問うのは、政府が大きすぎるか小さすぎるかではなく、機能しているかどうかだ。

(A)私たちが今日問わなくてはならないことは、政府が大きすぎるか小さすぎるか、ではなく、それが機能するかどうかだ。

(Y)我々が今日問うべきなのは、政府の大小ではなく、政府が機能するか否かだ。

 - whether it helps families find jobs at a decent wage, care they can afford, a retirement that is dignified.

(M)家庭が人並みの収入を得られるよう仕事を見つけ、威厳をもって引退できるよう助けているかどうかだ。

(A)まっとうな賃金仕事や、支払い可能な医療・福祉、尊厳をもった隠退生活を各家庭が見つけられるよう政府が支援するのかどうかだ。

(Y)家族が人並みの給与仕事を見つけたり、負担できる(医療保険や、立派な退職資金を手に入れることの助けに、政府がなるかどうかだ。

 Where the answer is yes, we intend to move forward.

(M)答えが「イエス」の施策継続する。

(A)答えがイエスならば、私たちは前に進もう。

(Y)答えがイエスの場合は、その施策を前進させる。

 Where the answer is no, programs will end.

(M)「ノー」の施策は廃止する。

(A)答えがノーならば、政策はそこで終わりだ。

(Y)ノーならば終わりとなる。

 And those of us who manage the public's dollars will be held to account - to spend wisely, reform bad habits, and do our business in the light of day -

(M)公金を預かる我々は、説明責任を果たさなければならない。適切に支出し、悪い習慣を改め、誰からも見えるように業務を行う。

(A)私たち公金を扱う者は、賢明に支出し、悪弊を改め、外から見える形で仕事をするという、説明責任を求められる。

(Y)公的資金管理する者は適切に支出し、悪弊を改め、誰からも見えるように業務を行う。

 - because only then can we restore the vital trust between a people and their government.

(M)それによって初めて、国民政府の間の重要な信頼を回復できる。

(A)それによってようやく、政府国民との不可欠な信頼関係を再建することができる。

(Y)それによって初めて、国民政府の間に不可欠な信頼を回復できる。

 Nor is the question before us whether the market is a force for good or ill.

(M)市場が正しいか悪いかも、我々にとっての問題ではない。

(A)市場が良い力なのか悪い力なのかも、問われていることではない。

(Y)問うべきなのは、市場の良しあしでもない。

 Its power to generate wealth and expand freedom is unmatched,

(M)富を生み出し、自由を拡大する市場の力は比肩するものがない。

(A)富を生みだし、自由を広めるという市場の力は、比類なきものだ。

(Y)富を作り自由を広げる市場の力に比肩するものはない。

 , but this crisis has reminded us that without a watchful eye, the market can spin out of control - and that a nation cannot prosper long when it favors only the prosperous.

(M)だが、今回の金融危機は、注意深い監視がなされなければ、市場は制御不能になり、豊かな者のみを優遇する国は長く繁栄することはできないことを我々に気付かせた。

(A)しかし、今回の(経済)危機は、市場は注意深く見ていないと、制御不能になるおそれがあることを、私たちに思い起こさせた。また、富者を引き立てるだけでは、国は長く繁栄できない、ということも。

(Y)だが、今回の(経済)危機は、監視がなければ、市場は統制を失い、豊かな者ばかりを優遇する国の繁栄が長続きしないことを我々に気づかせた。

 The success of our economy has always depended not just on the size of our Gross Domestic Product, but on the reach of our prosperity; on our ability to extend opportunity to every willing heart -

(M)我々の経済の成功は国内総生産の規模だけでなく、繁栄が享受される範囲や、望む人すべてに機会を広げる能力にかかってきた。

(A)私たちの経済的な成功は、国内総生産(GDP)の規模だけではなく、繁栄がどこまで到達するかに常に依存してきた、つまり、意欲のある人にどれだけ機会を広げられたかだ。

(Y)我々の経済の成功はいつも、単に国内総生産(GDP)の大きさだけでなく、我々の繁栄が広がる範囲や、機会を求めるすべての人に広げる能力によるものだった。

 - not out of charity, but because it is the surest route to our common good.

(M)慈善としてではなく、公共の利益に通じる最も確実な道としてだ。

(A)慈善心からではなく、それが、私たちの共通の利益への最も確実な道筋であるからだ。

(Y)慈善としてではなく、公共の利益に通じる最も確実な道としてだ。

2008-12-08

Fucking Hostileの和訳 メモ

1, 2, 3, 4!

Almost every day

ほとんど毎日

I see the same face

同じ顔を

On broken picture tube

壊れたテレビで見るぜ

It fits the attitude

態度にピッタリだな

If you could see yourself

自分自身を見直してみろ

You put you on a shelf

自分のことを棚に上げながら

Your verbal masturbate

口先だけのオナニー

Promise to nauseate

ゲロみたいな約束なんだ、お前のやってることは

Today I'll play the part of non-parent

今日保護者の役はやれないな

Not make a hundred rules

100個もルールを作る気にもならない

For you to know about yourself

お前が自分自身についてわかるように

Not lie and make you believe

嘘なしで信じさせてやる

What's evil is making love

セックス

and making friends

友達も

and meeting God you're own way

神様に祈るのも悪いことさ

The right way

こいつが正しいんだ


(Chorus)

To see

見てみろ

To bleed

血を流してみろ

Cannot be taught

教えられることじゃねえ

In turn

次々に

You're making us

お前が俺を作ってるんだな

Ohhhh Fucking hostile

なんてお前は敵対的なんだ


We stand alone

俺たちは一人ぼっちってことさ


The truth in right and wrong

真実は間違ってるけど正しい

The boundaries of the law

法律すれすれのところで

You seem to miss the point

お前はしくじっちゃったみたいだな

Arresting for a joint?

マリファナに気づかれちまったのか?

You seem to wonder why

どうしてって聞きたいみたいだな

Hundreds of people die

何百もの人が死んでいって

You're writing tickets man

お前はその切符を書いてる

My mom got jumped -- they ran!

母親が飛ぶとあいつらは走るから

Now I'll play a public servant

警察と今遊んでるのさ


To serve and protect

奉仕して、守って

By the law and the state

法と国家によって

I'd bust the punks

パンク野郎をぶったおしてる

That rape steal and murder

盗み、強姦殺人

And leave you be

お前をそんなふうにして

If you crossed me

俺ともう一回会えるなら

I'd shake your hand like a man

人間にみたいに握手をしよう

Not a god

神じゃなくて


(Chorus)


Come meet your maker, boy

お前の親父に会わせろよ

Some things you can't enjoy

享受できないことだってあるさ

Because of heaven/hell

天国と地獄のせいさ

A fucking wives' tale

糞みたいな物語

They put it in your head

あいつらがお前の頭の中に入れて

Then put you in your bed

ベッドのそばで子守唄にする

He's watching say your prayers

お前のために祈ってる奴を見ろってあいつは言うなあ

Cause God is everywhere

神様はどこにでもいるからだってさ

Now I'll play a man learning priesthood

じゃあ俺は聖職者に付き従ってる男の役でもやってみよう

Who's about to take the ultimate test in life

誰が人生最大の問いなんてものを投げかけてきても

I'd question things because I am human

俺は人間だから答えてやろう

And call NO ONE my father who's no closer than a stranger

知らない奴より神様に近い奴なんていなんだ

I won't listen

聞きたくもないんだ


To see

見てみろ

To bleed

血を流してみろ

Cannot be taught

教えられることじゃねえ

In turn

次々に

You're making us

お前が俺をつくってるんだな

Fucking, fucking, fucking

糞みたいに

FUCKING HOSTILE!

お前は敵対的なんだ


安らかに眠れ

ダイムバッグダレル

2008-10-28

http://anond.hatelabo.jp/20081026132547

FizzBuzz続き

Cにもlambdaがあればいいのに

#include <stdio.h>
#include <unistd.h>
#define FALSE 0
#define TRUE !FALSE

typedef struct state_t {
    int state;
    int num;
    int max;
    int outputted;
} state_t;

typedef struct fsm_t {
    state_t *(*func)(struct fsm_t *, state_t *);
    int divider;
    char *str;
} fsm_t;

static state_t *fizzbuzz(fsm_t *, state_t *);
static state_t *end_of_line(fsm_t *, state_t *);
static state_t *cond(fsm_t *, state_t *);
static state_t *succ(fsm_t *, state_t *);

static fsm_t fsm[] = {
    { fizzbuzz, 3, "Fizz" },
    { fizzbuzz, 5, "Buzz" },
    { end_of_line, 0, NULL },
    { cond, 0, NULL },
    { NULL, 0, NULL },
};

static state_t *fizzbuzz(fsm_t *fsm, state_t *cur) {
    if ((cur->num % fsm[cur->state].divider) == 0) {
        printf("%s", fsm[cur->state].str);
        cur->outputted = TRUE;
    }
    return succ(fsm, cur);
}

static state_t *end_of_line(fsm_t *fsm, state_t *cur) {
    if (!cur->outputted)
        printf("%d", cur->num);
    puts("");
    cur->outputted = FALSE;
    return succ(fsm, cur);
}

static state_t *cond(fsm_t *fsm, state_t *cur) {
    if (++cur->num > cur->max)
        return NULL;
    return succ(fsm, cur);
}

static state_t *succ(fsm_t *fsm, state_t *cur) {
    if (fsm[++cur->state].func == NULL)
        cur->state = 0;
    return cur;
}

int main(void) {
    state_t state = { 0, 1, 100, FALSE };
    state_t *cur = &state;

    while ((cur = (*fsm[cur->state].func)(fsm, cur)) != NULL)
        ;

    return 0;
}

2008-10-26

DRYFizzBuzz

http://anond.hatelabo.jp/20081026002746

ステートマシン大好きっ子としては書かずにいられない

もう少しがんばればforも無くせるな

fsmの中身ってDRYなの?的な話もあるだろうが,こんなもの他のプログラム自動生成すればいいんだよ!(開き直り)

#include <stdio.h>

static int process(unsigned char *str, int c) {
    if (str != NULL)
        puts(str);
    else
        printf("%d\n", c);
    return ++c % (3 * 5);
}

static int iter(int c) {
    return process(NULL, c);
}

static int fizz(int c) {
    return process("Fizz", c);
}

static int buzz(int c) {
    return process("Buzz", c);
}

static int fizzbuzz(int c) {
    return process("FizzBuzz", c);
}

static int (*fsm[])(int) = {
    fizzbuzz, iter, iter, fizz, iter,
    buzz, fizz, iter, iter, fizz,
    buzz, iter, fizz, iter, iter
};

int main(void) {
    int i, state;

    for (i = state = 1; i <= 100; i++) {
        state = (*fsm[state])(i);
    }

    return 0;
}

2008-04-05

さくらの旧(?)専用サーバ CentOS 4.6 を Linux-Vserver に入れ替えてみた

前置き

契約直後の初期状態

  • ホスト名をsakura2とした。
  • sshd と vsftpd が動いていた。
[admin@sakura2 ~]$ uname -a
Linux sakura2 2.6.9-67.0.4.ELsmp #1 SMP Sun Feb 3 07:08:57 EST 2008 i686 athlon i386 GNU/Linux
[admin@sakura2 ~]$ cat /etc/issue.net
CentOS release 4.6 (Final)
Kernel \r on an \m

CentOS 5 へのアップグレード(?)

中身の整理
  • なるべく最小構成に近い最新のCentOS4.6にしてみる。
# yum update
# yum remove emacs emacspeak emacs-leim emacs-common
# yum remove NetworkManager
# yum remove bluez-bluefw bluez-hcidump bluez-libs bluez-utils
# yum remove cups cups-libs
# yum remove irda-utils isdn4k-utils pcmcia-cs wireless-tools
# yum remove wpa_supplicant gpm xinetd
# yum remove ppp nfs-utils lksctp-tools autofs
# yum remove xorg-x11-libs
# yum remove selinux-policy-targeted
# yum remove vsftpd
# yum clean all
CentOS 5 にアップグレード(?)してみる
[admin@sakura2 ~]$ uname -a
Linux sakura2 2.6.9-67.0.7.ELsmp #1 SMP Sat Mar 15 06:54:55 EDT 2008 i686 athlon i386 GNU/Linux
# rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/centos-release-notes-5.1.0-2.i386.rpm \
http://mirror.centos.org/centos/5/os/i386/CentOS/centos-release-5-1.0.el5.centos.1.i386.rpm
[root@sakura2 admin]# cat /etc/issue.net
CentOS release 5 (Final)
Kernel \r on an \m

# yum update glib procps udev iptables
# rpm -Uvh --nodeps http://mirror.centos.org/centos/5/os/i386/CentOS/initscripts-8.45.17.EL-1.el5.centos.1.i386.rpm \
http://mirror.centos.org/centos/5/os/i386/CentOS/mkinitrd-5.1.19.6-19.i386.rpm
# rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/e2fsprogs-1.39-10.el5.i386.rpm \
http://mirror.centos.org/centos/5/os/i386/CentOS/e2fsprogs-libs-1.39-10.el5.i386.rpm \
http://mirror.centos.org/centos/5/os/i386/CentOS/e2fsprogs-devel-1.39-10.el5.i386.rpm
# rpm -Uvh http://mirror.centos.org/centos/5/os/i386/CentOS/kernel-2.6.18-53.el5.i686.rpm
[admin@sakura2 ~]$ uname -a
Linux sakura2 2.6.18-53.el5 #1 SMP Mon Nov 12 02:22:48 EST 2007 i686 athlon i386 GNU/Linux

# yum clean all

[root@sakura2 admin]# yum --version
Loading "fastestmirror" plugin
2.4.3
[root@sakura2 admin]# rpm --version
RPM version 4.3.3
# yum update
Error: Missing Dependency: python-abi = 2.3 is needed by package python-elementtree
  • 解決法がわからないので放置

Linux-Vserver の導入

# vi /etc/ssh/sshd_config
# /etc/init.d/sshd restart
# vi /etc/yum.repos.d/dhozac-vserver.repo
# yum update kernel
# yum install util-vserver{,-core,-lib,-sysv,-build}
[admin@sakura2 ~]$ uname -a
Linux sakura2 2.6.22.19-vs2.3.0.34.1 #1 SMP Mon Mar 17 05:32:04 EDT 2008 i686 athlon i386 GNU/Linux

ホストOS環境の整備

# yum update bash screen rsync
# /etc/init.d/iptables save
# /etc/init.d/iptables start
# cat /etc/sysconfig/iptables

# Generated by iptables-save v1.3.5 on Mon Mar 24 19:57:07 2008
**filter
:INPUT ACCEPT [1067:96557]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [63680:6208436]
:e0 - [0:0]
-A INPUT -i eth0 -j e0
-A e0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A e0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A e0 -p tcp -m tcp --dport 22 -j ACCEPT
-A e0 -p tcp -m tcp --dport 80 -j ACCEPT
-A e0 -p tcp -m tcp --dport 443 -j ACCEPT
-A e0 -j REJECT --reject-with icmp-port-unreachable
COMMIT
# Completed on Mon Mar 24 19:57:07 2008
# Generated by iptables-save v1.3.5 on Mon Mar 24 19:57:07 2008
**nat
:PREROUTING ACCEPT [179:10642]
:POSTROUTING ACCEPT [213:13895]
:OUTPUT ACCEPT [251:16220]
-A PREROUTING -s ! 10.0.0.0/255.255.255.0 -p tcp -m tcp --dport NNNN -j DNAT --to-destination 10.0.0.1:22
-A POSTROUTING -s 10.0.0.0/255.255.255.0 -d ! 10.0.0.0/255.255.255.0 -j SNAT --to-source AAA.BBB.CCC.DDD
COMMIT
# Completed on Mon Mar 24 19:57:07 2008

ゲストOSの設定

[root@sakura2 ~]# /usr/sbin/vserver-stat
CTX   PROC    VSZ    RSS  userTIME   sysTIME    UPTIME NAME
40013   27 301.5M  73.8M  30m36s31  56m38s90  11d06h56 one
40015    5  10.8M   4.4M   0m28s33   0m12s68   9d04h23 two
40016    2   4.2M   1.3M   0m00s47   0m00s64   0m01s97 three

追記

2008-02-22

anond:20080222131301

さらにググって見たよ。

記事は何か間違えてるね。

ごめん。記事は間違えてなかった。

The design goal of Gravia is to provide light in a room (600-800 lumensâ??”roughly equal to one 40 watt incandescent lightbulb),

http://www.core77.com/competitions/greenergadgets/projects/4306/

バ−ジニア工科大学サイトの紹介ページも、実際には機能しないということを認めている。

http://wiredvision.jp/news/200802/2008022219.html

The criticism is that a great deal of weight ?? about two tons -- would be required and current LEDs are not sufficiently efficient.

Designer Clay Mouton acknowledges that the current state of the art isn't sufficient to actually build the lamp.

http://www.vtnews.vt.edu/story.php?relyear=2008&itemno=111

スラドにも上がってた。

http://slashdot.jp/hardware/article.pl?sid=08/02/21/2352228

ミソは「デザイン賞」かな。実現性はわからないけれど思いついてみました。って所か。残念。

2007-10-26

ブックマークスパム多重アカウント疑惑(関西暴力団アダルトサイト)

アカウントを大量に所持し、ブックマークスパムを繰り返して情報操作を行っているとの疑惑について。

 

ソース

http://b.hatena.ne.jp/entry/http://5.movie-connection.com/

 

同一人物が管理運用ブックマークをつけていると思われるユーザーIDは以下の通り。

id:yh4a1uj4r2ew id:kelopa id:xn--icktho51ho02a id:jk23d1sx id:kd1321ks3241 id:ldf132d11h1h id:z1sx12tfd3g1h id:juhytfsdsadgh id:udfhfkrio id:srtyukrgnyujk id:ojkhfetybjhji id:ohgtyihgdryu id:lapvnfdkxsldie id:lphybcgfn id:adeftgvmkhg id:dkfjfureydkdlcjdh id:yglpsjeyfg id:ijuyvnfjko id:yutydfre id:ueowidkei id:uloijeiss id:ieowicvkhjl id:kiebjieudls id:iueiwodjbmf id:utiuyeowos id:ioiojfibalsieu id:uurwoisoigbm id:lakaiajaigiekwl id:iuwoiunolzzxc id:uaoiuveullsiu id:hilineosilew id:hy4a654yer id:kisiritooru id:bh6s34 id:hs3s4 id:sd3gf35 id:dtbghj354 id:sfgsfg5 id:fsgs5646f id:dgsf5453 id:adf3a432aa id:af3432sss id:af34a34a id:aef4afae id:dfae324adef id:fae456ae id:fgaera4654ae id:fatre354adf id:agfa3245atae id:gafea4854s3r id:fata6541aga id:agaw32456afga id:aea453165g id:a6544a id:gae52487r id:gae284tg id:gfaefa8543ht56f id:ws21496af id:hgara354ga id:hseg5154f id:ada254f id:dae326a id:dsf6454sfd id:dfs654654sdf id:jah4785 id:anj1458 id:hajba54716 id:dafh478549 id:ajdk14785 id:dh215 id:dh21485 id:dj54ds5 id:ys65 id:nsd1485 id:bhs1th8545 id:syh5 id:sth18 id:hth51 id:hs24t8 id:h8t4hg5 id:jdydt8452s id:fa414a7yh5 id:a464ag5 id:a4189j1a45 id:hs34h654a id:s65ts54hg id:a654ya id:a68t4a8a46a id:aga56444ga id:a64a5at4r id:g23r6s2s id:sa5546y6a id:ju54a56sa id:ha56ag64a id:at568421sae id:ae5234afre id:yws35t25a56 id:ga5g24e42d id:j7j54g8 id:yjs6t581f id:ts515gt8 id:shj321js5r7 id:sjs4851s2 id:js24sh16 id:je6a15ta21 id:shj3549s id:jhs548s35 id:shs95s47 id:shs54s54 id:sys54sy54 id:sh24158hs id:stsrs547s id:str5s47 id:sts548 id:sr514h2s5 id:sg5rg5487s id:s5rtsf4578 id:htrsg548 id:srsag9544s id:hs54s87h id:hjsr51s56 id:hsfsg484s id:ggg48 id:f2r4t25f1 id:ik1gtf5y5 id:ta64a2eerr id:ya6y4a21y487a id:a654y2a34a id:ayt67a4ewe5 id:yfag56a15ewr63 id:a64a524rehgy3 id:ua327a3a id:uhwe354gt4r id:aekds34a1r54a id:h674atat id:hay64e314w id:yayuh354a31a id:a56a065syt0a id:g0a6544ae56e0 id:a655ya15ea id:dk6ldk3sdk id:dtu6fj63dhs id:druik5kdgt id:g6gd52cud id:fkuf34gk id:fogvk3fiuy5 id:jdshb25hdsjh3s id:dst6hjdsh5h id:dj5dhjs5dsh id:jdf5dj5d id:djjdsh52dj id:shs64jhs id:h56dj65sh id:jdt3jdsh id:shsth5dh id:shs5hshs id:hjsr1465s id:h3s343 id:sdjszf34sauj id:hargf8ahg id:hsaar3setat id:arg2srggarr id:jhs56dhs id:taa354ha id:gsar34sga id:hara6agar id:gafg63gha id:hsfdh3zh id:aghs6ga id:yhxd52gh id:arett3agta id:fga63rfgas id:asarg3agtg id:sg6a id:agtta52sgha id:aa6hatta id:jysrah5shsra id:ash5gfa id:gadaf2atgta id:atr4hsfda id:hsr35hggar id:jyesr35ad id:dga5ata id:ae2satf id:hga57shye id:hhy54 id:ar35454a id:ae6354sarr id:ueko22toteti id:ueko21toteti id:ueko20toteti id:ueko19toteti id:ueko18toteti id:ueko17toteti id:ueko16toteti id:ueko15toteti id:ueko14toteti id:ueko13toteti id:ueko12toteti id:ueko11toteti id:ueko10toteti id:ueko09toteti id:ueko08toteti id:ueko07toteti id:ueko06toteti id:ueko05toteti id:ueko04toteti id:ueko03toteti id:ueko02toteti id:ueko01toteti id:uttyann137 id:uttyann136 id:uttyann135 id:uttyann134 id:aea34g34 id:uethy234 id:sj684stt8dgh4 id:uttyann122 id:uttyann120 id:uttyann130 id:uttyann133 id:uttyann132 id:uttyann131 id:uttyann129 id:uttyann128 id:uttyann127 id:uttyann126 id:uttyann125 id:uttyann124 id:uttyann123 id:uttyann121 id:uttyann119 id:uttyann117 id:kye851dj4d id:asjdyj541dsu id:ijkfd48415 id:sjhty5445d id:jfsj8yx5yy4 id:hs5741a5 id:hid3543ik id:e7g3avc1h3s id:af34a354fa4 id:hsth5723 id:ghs9845s id:fsr84sg145 id:adfa18fgs2 id:da354ga id:g345ag id:hg54gj5 id:gjs354s1 id:ahotte47484 id:afa84727h id:aaa5454awg id:d4f75hgd4 id:gh75h8d4 id:s6d5c9 id:s427a8s7 id:f417f82g5 id:zz9578zgf id:f45f478z id:f454f4599 id:fdfdf8479 id:fsdfg245 id:hikken id:kuro_utopia id:yuri_hanataba id:toge_hitoki id:kuroi_maria id:syounen_boy id:spray_de_egaita id:nite_and_day id:like_a_angel id:kuro_no_postol id:sea_you id:beams_ah_beams id:yasashii_higeki id:ice_my_life id:for_dear id:mac_wo_kiwameru id:powerbook_g id:my_win_good id:my_mac_saikou id:wansegu_yoi id:selves_xxxx id:in_sairensu id:dezaia_l id:end_obu_sorrow id:ra_se_n id:g_god_g id:wizu_rabu id:fakexxxx id:civilize_luna id:feisu_to_feisu id:inoran_ken id:true_b id:call_for_love id:ueto_dakishime id:ueto_kiss id:ueto_renai id:genki_c id:hutsuka_yoi id:atama_itai id:orona_min_c id:kasaneta_kuti id:kasaneta_yubi id:queen_for_you id:mist_of_tears id:hatujouki id:more_trance id:risoukyou id:shilk_shilk id:last_eve_for id:equal_jesus id:sutekina_yume id:i_believe_y id:tsuki_wo_omou id:chess_chess id:nugget id:karatani id:cocoron20 id:kami_ga_warau id:the_slain id:kagirinaku_t id:shade_shade id:branch_road id:samdhi_taimu id:taimu_izu id:precious_xxxx id:decide_ones id:ima_ha_fate id:hurry_up_mode id:milmilmilmil id:ayapon565

 

多重アカウントを所持しブックマークスパムを支持していると思われる業者のドメイン(の一部)はこれ。

 

high.movie-connection.com

5.movie-connection.com

4.movie-connection.com

2.movie-connection.com

1.movie-connection.com

www.movie-connection.com

xn--cck0cya3lt22posxn4qgqh.movie-connection.com

www.movie-connection.com

azuqun.blog103.fc2.com

mlink.blog111.fc2.com

eroikoeroiko.eroiko-daisuki.com

sexs.sex-sexs.net

de.coco-de-aeru.net

ero.ero-moe.net

xn--n8j214gc5b6wwz3a.sblo.jp

xn--h9ja3mb0426g1hwa.sblo.jp

ブックマークスパムによる情報操作を発注していると思われるMOVIE-CONNECTION.COMについての情報分析。

Domain Name: MOVIE-CONNECTION.COM
Registrar: KEY-SYSTEMS GMBH 
Whois Server: whois.rrpproxy.net 
Referral URL: http://www.key-systems.net 
Name Server: NS1.VALUE-DOMAIN.COM 
Name Server: NS2.VALUE-DOMAIN.COM 
Name Server: NS3.VALUE-DOMAIN.COM 
Status: ok 
Updated Date: 15-mar-2007 
Creation Date: 15-mar-2007 
Expiration Date: 15-mar-2008 
DOMAIN: MOVIE-CONNECTION.COM 
RSP: DigiRock Inc. 
URL: http://www.value-domain.com 
created-date: 2007-03-15 
updated-date: 2007-03-15 
registration-expiration-date: 2008-03-15 
owner-contact: P-TGK215 
owner-organization: Personal 
owner-title: student 
owner-fname: takahiro 
owner-lname: kubo 
owner-street: koyama1-1-5 None 
owner-city: koubesinisiku 
owner-state: hyougo-to 
owner-zip: 651-2144 
owner-country: JP 
owner-phone: 090-1005-6622
owner-email: gongongon1221@yahoo.co.jp 
admin-contact: P-TGK215 
admin-organization: Personal 
admin-title: student 
admin-fname: takahiro 
admin-lname: kubo 
admin-street: koyama1-1-5 None 
admin-city: koubesinisiku 
admin-state: hyougo-to 
admin-zip: 651-2144 
admin-country: JP 
admin-phone: 090-1005-6622 
admin-email: gongongon1221@yahoo.co.jp 
tech-contact: P-TGK215 
tech-organization: Personal 
tech-title: student 
tech-fname: takahiro 
tech-lname: kubo 
tech-street: koyama1-1-5 None 
tech-city: koubesinisiku 
tech-state: hyougo-to 
tech-zip: 651-2144 
tech-country: JP 
tech-phone: 090-1005-6622 
tech-email: gongongon1221@yahoo.co.jp 
billing-contact: P-TGK215 
billing-organization: Personal 
billing-title: student 
billing-fname: takahiro 
billing-lname: kubo 
billing-street: koyama1-1-5 None 
billing-city: koubesinisiku 
billing-state: hyougo-to 
billing-zip: 651-2144 
billing-country: JP 
billing-phone: 090-1005-6622 
billing-email: gongongon1221@yahoo.co.jp 
nameserver: ns1.value-domain.com 
nameserver: ns2.value-domain.com 
nameserver: ns3.value-domain.com 

<<

どうやらブックマークスパムの元締め関係者は、神戸市西区小山クボタヒロという人らしい。(偽名の可能性あり)

なお、登録されている電話番号は090-1005-6622だが、この電話番号でググルとこの出会い系サイト利用規約に書いてある電話番号と完全に一致する。

 

http://72.14.235.104/search?q=cache:tjQsEzlAt-UJ:love-ag.com/use.html

<第1条> 目的

規約は会員が無料コンテンツサービス[LOVEアゲイン](以下、弊社又は当サイト)を利用する上で遵守すべき規約を定める事を目的とします。 個人間で発生したトラブルには一切の責任を負いかねます。

(略)

【管理主】〒542-0067 大阪府大阪市中央区松屋町9-20

管理者:木村勇登

TEL:090-1005-6622

MAIL:info@love-ag.com

さらにこのlove-ag.comというドメインWhois検索するとこういう情報が出てくる。

 

Domain Name: LOVE-AG.COM 
Registrar: ENOM, INC. 
Whois Server: whois.enom.com 
Referral URL: http://www.enom.com 
Name Server: NS1.LOVE-AG.COM 
Name Server: NS2.LOVE-AG.COM 
Status: clientTransferProhibited 
Updated Date: 23-oct-2007 
Creation Date: 04-oct-2007 
Expiration Date: 04-oct-2008 
Domain name: love-ag.com 
Registrant Contact: 
personal 
masasi odazima (iyaiyatereruna@yahoo.co.jp) 
+80.52368569 
Fax: - 
aogakidai 1-3 none 
nara-shi, nara-ken 631-0053 
JP 
Administrative Contact: 
personal 
masasi odazima (iyaiyatereruna@yahoo.co.jp) 
+80.52368569 
Fax: - 
aogakidai 1-3 none 
nara-shi, nara-ken 631-0053 
JP 
Technical Contact: 
personal 
masasi odazima (iyaiyatereruna@yahoo.co.jp) 
+80.52368569 
Fax: - 
aogakidai 1-3 none 
nara-shi, nara-ken 631-0053 
JP 
Status: Locked 
Name Servers: 
ns1.love-ag.com 
ns2.love-ag.com 

ドメイン奈良県奈良市青垣台のオダジママサシなる人物が管理しているらしい。(やはり偽名の可能性あり)

 

以上の情報から分析すると、数十のアダルトサイトを同時に運用している組織による情報操作であることから、前述の疑惑はてなIDは、関西組織暴力団関係者によって運用されている可能性は極めて高いと思われる。

2007-07-30

anond:20070730135823

そら日本共産党の俺違うよ理論もとい独自解釈だ。"Communist State"と呼ばれる国家普通にあった・ある。それが日本語ではhogehoge社会主義共和国となぜか訳されてたりするんだが。共産主義目標として掲げて第一歩としての社会主義確立をはかった(と標榜した)国家ごろごろしてる。

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-07-11

めいろさくせーぷろぐらむつくってみたー

http://anond.hatelabo.jp/20070711013155

人待ちの間暇だったから作ってみたよー。

さっくり作ったから無駄が多い気がするけど、とりあえず動いた。

全体が埋まったかどうかの判定をしないでひたすらまわしまくってるし、なんか綺麗な形じゃないけど、とりあえず投稿しちゃうよ!

これ綺麗な形にするの結構難しいんじゃないかな。面白いね。

class Maze
	class Box
		WALL = 0
		LOAD = 1
		def initialize(state = LOAD)
			@state = state
		end
		def is_wall?
			return true if @state == WALL
			false
		end
		def is_load?
			return true if @state == LOAD
			false
		end
		def set_wall
			@state = WALL
		end
		def set_load
			@state = LOAD
		end
	end
	TOP = 10
	RIGHT = 11
	BOTTOM = 12
	LEFT = 13
	def initialize(height = 100, width = 60)
		@height = height
		@width  = width
		@data = Array.new
		self.fillbox
		@counter = 1000
		@root = Array.new
	end
	def choose_random
		return rand(@width-3)+1, rand(@height-3)+1
	end
	def choose_direct
		t = rand(4)+10
		return t
	end
	def move(x, y, t)
		new_x = x
		new_y = y
		case t
		when TOP
			new_y -= 1
		when RIGHT
			new_x += 1
		when BOTTOM
			new_y += 1
		when LEFT
			new_x -= 1
		end
		return new_x, new_y
	end
	def make_load?(x, y)
		return false if x < 0 or y < 0 or x > @width-1 or y > @height-1
		return false if @data[x][y].is_load?
		true
	end
	def dead_end?(x, y, t)
		case t
		when TOP
			if make_load?(x-1, y) and \
				 make_load?(x-1, y-1) and\
				 make_load?(x, y-1) and\
				 make_load?(x+1, y-1) and\
				 make_load?(x+1, y) then
				 return false
			end
		when RIGHT
			if make_load?(x, y-1) and \
				 make_load?(x+1, y-1) and\
				 make_load?(x+1, y) and\
				 make_load?(x+1, y+1) and\
				 make_load?(x, y+1) then
				 return false
			end
		when BOTTOM
			if make_load?(x-1, y) and \
				 make_load?(x-1, y+1) and\
				 make_load?(x, y+1) and\
				 make_load?(x+1, y+1) and\
				 make_load?(x+1, y) then
				 return false
			end
		when LEFT
			if make_load?(x, y+1) and \
				 make_load?(x-1, y+1) and\
				 make_load?(x-1, y) and\
				 make_load?(x-1, y-1) and\
				 make_load?(x, y-1) then
				 return false
			end
		end
		true
	end
	def check_all?(stack)
		for i in TOP..LEFT do
			return false if !stack.include?(i)
		end
		true
	end
	def extend(x, y)
		@data[x][y].set_load
		check_stack = Array.new
		loop do
			t = choose_direct
			check_stack << t
			new_x, new_y = move(x, y, t)
			if enable_new_point?(new_x, new_y)
				if !dead_end?(new_x, new_y, t) then
					@root << ["ex", new_x, new_y, t]
					extend(new_x, new_y)
					break
				end
			end
			break if check_all?(check_stack)
		end
	end
	def enable_new_point?(x, y)
		return false if x<=0 or y <= 0 or x > @width-1 or y > @height-1
		return false if @data[x][y].is_load?
		true
	end
	def _make
		x = y = 0
		loop do
			x, y = choose_random
			break if @data[x][y].is_load?
		end
		@root << [x,y]
		extend(x, y)
	end
	def make_goal
		x = @width - 2
		y = @height - 1
		for i in 1..@width-3
			if @data[x-i][y-1].is_load? then
				@data[x-i][y].set_load
				break
			end
		end
	end
	def make_start
		for i in 1..@width-3
			if @data[i][1].is_load? then
				@data[i][0].set_load
				break
			end
		end
	end
	def make
		self.fill_all
		x, y = choose_random
		@root << [x,y]
		@data[x][y].set_load
		extend(x,y)
		while(!is_fill?) do
			_make
		end
		make_goal
		make_start
		self
	end
	def is_fill?
		@counter -= 1
		return true if @counter < 0
		false
	end
	def fillbox
		for i in 0...@width do
			@data[i] = Array.new
			for j in 0...@height do
				@data[i][j] = Box.new
			end
		end
	end
	def fill_all
		for i in 0...@width do
			for j in 0...@height do
				@data[i][j].set_wall
			end
		end
	end
	def output
		for i in 0...@height do
			for j in 0...@width do
				if @data[j][i].is_wall? then
					print "#" 
				else
					print " "
				end
			end
			print "\n"
		end
	end
end

Maze.new(30, 30).make.output

## output

# ############################
#  ##    # #     ##    #     #
##    ##   ## ## #  ##   ### #
### #  ###  #  #   #### ###  #
#   # ## ## ## ### #  #  #  ##
### #  #  #  #   #### ## # ###
##  ## ## ## ###   #  ## #   #
#  ### #  #   #### # ##  ## ##
# ## #   ####    #    # ###  #
#  # ###  # #### # ## # #   ##
##     ## #      #  ### ######
######  ### #######   ###    #
#    ##   ###   # # #   ## # #
# #######  #  # # # ###  ### #
#   # # ##   ##   #   ##   # #
### #    ######## ########   #
#   # ## ##     #    #     ###
# ### ##  ## ##   ##   ##### #
#      ##  # #  #  ###  #    #
# ######## # #####   ## # # ##
#       ## #  #  #####  # #  #
####### #  ## # ## #   ## ## #
##    ### ###   ##   ####### #
#  ##  ##   ## ##  ###    ## #
# ####  ###  # #  ## # ##    #
#  # ##   ## # # ###    ######
## #  # #  # # #   ## #    ###
#    ## ## #   # #  # # ##  ##
# # ##  ##   # # ##   #  ##  #
########################### ##

はてなスターソースコードの最後に更新履歴が載ってた

2007-07-11 v1.2 Release version

2007-05-30 v1.1 Added fold stars feature

2007-03-29 v1.0 Changed screens using Ten.SubWindow, you can d&d!

2007-03-28 v0.9 Changed Hatena.* classes to Ten v0.05.

2007-03-25 v0.8 Fixed Safari popup problem

2007-03-22 v0.7 Added active state to comment buttons

2007-03-21 v0.6 Added Comment function

2007-03-05 v0.5 Changed uri to Ridge-based paths.

2007-01-24 v0.4 Added Hatena.Diary.Entry class,

Changed Hatena.Star.Entry methods using class method

Added author parameters.

2007-01-23 v0.3 Added Hatena.Star.User class, added Hatena.js, Hatena.Star.js compatibility

2007-01-06 v0.2 Changed name spaces. Using Hatena.*, Hatena.Star.*

2007-01-05 v0.1 Initial version

4月前に大体出来てたって事かな

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