「bar」を含む日記 RSS

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

2012-01-18

Python vs Ruby vs PHP vs Haskell プログラミング言語バトル part1

 

42 : デフォルト名無しさん : 2011/11/12(土) 23:53:51.20

Pythonの方が弄れる対象が多いのに、なんでウェブ系だとPHPの方が流行ってんだろ

端末からテキスト処理も楽だし、数値計算周りのライブラリも充実しているのに

PHPが優遇されているのって歴史的な経緯以外に何か他の理由でもあるのか?

けどまぁ、情弱文系SEが大半を占めているバカだらけの日本じゃ別にPHPで困ることもないか


45 : デフォルト名無しさん : 2011/11/13(日) 01:41:24.25

数値計算や端末からテキスト処理なんてWeb系じゃ大して使わないからなあ…


43 : デフォルト名無しさん : 2011/11/13(日) 00:04:23.30

PHPが未だに現役なのは、単に歴史的な経緯でしかないだろ

Pythonに関しては、ZopeさえコケていなければWebサーバLLとして大成功していたはずなのに、

Railsなんかが登場したおかげで、すっかり影が薄くなってしまますた....


44 : デフォルト名無しさん : 2011/11/13(日) 00:49:55.28

zopeってコケてたんだ

ってか、railsインスパイアされたフレームワークって今じゃ幾らでもあるよね

djangoとかCakePHPとか。rubyってRoRを使いたいユーザを除くと、

pythonPHPの方がユーザー数は圧倒的に多いと思うんだけど

本家railsって、他を遥かに越えるほど良いものなんだっけ?


48 : デフォルト名無しさん : 2011/11/13(日) 08:30:25.68

44

Zopeが登場した当時、RDB+PHPはもう古い、これからOODB+ZopeWebの中軸になる!」

さかんに宣伝され、雑誌でもZope特集が組まれていた

 

少なくとも自分ZopeからPythonという言語を知ったし、その時点でRubyは知らなかった

そして、その後のORM(RDB)+Railsの出現と華々しい革新性への注目は、誰もが知っているだろう

今でもZopeの開発は継続されてはいるが、結果的に当初の期待が大きく裏切られたという事実は動かしがたい

 

djangoCakePHPについては実際に触っていないので憶測になるが、おそらく技術水準ではRailsと同等だろう

しかしRailsはRailsコミュニティの活動が活発だし、その進化は異常に早い

 

Railsに何か致命的なトラブルが発生して開発が停滞する、あるいはdjangoCakePHPから

何かのイノベーションが提示されでもされない限り、後発のdjangoCakePHPRailsに追いつくのは無理

Railsは決して技術的に完璧Webフレームワークではないんだけどね....(たとえばSeaSideのような.... )

 

からこそ「もしもZopeが....だったなら」という「たら・れば」感はPythonコミュニティの潜在認識になっている


51 : デフォルト名無しさん : 2011/11/13(日) 12:55:40.83

 C a k e P H P は う ん こ   

遅い、設計が古い、動作がおかしいの3重苦

日本では流行ってないけど海外だとYiiが流行ってきてる


55 : デフォルト名無しさん : 2011/11/13(日) 17:31:12.14

CakePHP使ってんの?

可哀そうにw


53 : デフォルト名無しさん : 2011/11/13(日) 14:44:48.55

求人PHPばかりだからPHPやるしかないだろ。


57 : デフォルト名無しさん : 2011/11/13(日) 19:34:04.95

でもやっぱりいつもの使い慣れたLL(Python/Ruby)で

Webサービスを書きたいってのがある


73 : デフォルト名無しさん : 2011/11/15(火) 17:32:46.07

アメリカ言語ユーザー数は

Python>>>>>>>>Ruby

求人数は

Ruby on Rails>>>>>>>>Django

http://www.indeed.com/jobtrends?q=django%2Cruby+on+rails&l=

どういうことなの?


74 : デフォルト名無しさん : 2011/11/15(火) 17:48:15.59

RubyRails以外に使い道がないか


75 : デフォルト名無しさん : 2011/11/15(火) 17:54:35.50

海外ではRubyは昨今のRailsバブルのお陰で

もはやWebスタートアップ共通語になってるらしいからね

求人数が多いのはそのためだと思うよ


76 : デフォルト名無しさん : 2011/11/15(火) 18:03:23.05

なんかのミスかと思ったがアメリカでもRuby on Railsは人気があるのかなあ・・・

Pythonのほうが使いやすいと思うのだがフレームワークRailsが優位なんだろうか


77 : デフォルト名無しさん : 2011/11/15(火) 18:23:14.33

Djangoは周辺ライブラリ微妙だし本体も鈍くさい感じがする。

でも、FlaskはSinatraより好きだからPythonが嫌いってわけではない。むしろ好き。

 

ただ、いざ作り始めるとやっぱりRailsが楽だなあってなって、Railsを使い続けている。


78 : デフォルト名無しさん : 2011/11/15(火) 18:38:46.28

同感だ

同じように思っている人が他にもいて安心した


79 : デフォルト名無しさん : 2011/11/15(火) 18:54:37.13

PHPJavaScalaには

Railsみたいなフレームワークあるのに

Pythonはいいのないんだよな


80 : デフォルト名無しさん : 2011/11/15(火) 21:19:09.89

PHPフレームワークが乱立しすぎているから、RailsPHPで実装してみようというやつが出てきた。

Scalaも注目されだしたのはつい最近のことだしな。

それに比べてPythonは、Zopeというデファクトスタンダードが既に存在していたけど、

つの間にかフェードアウト


ただ、どうやってもRailsもどきRailsを超えることはできないのは間違いない。


83 : デフォルト名無しさん : 2011/11/15(火) 21:25:38.55

パクリオリジナルを超えられない(キリッ って定型句だけど、

これってキリッって言いたいだけだと思う。

後発品が先に出たものを超えたものなんていくらでもあるから


84 : デフォルト名無しさん : 2011/11/15(火) 21:30:04.39

D言語って超えたって?


85 : デフォルト名無しさん : 2011/11/15(火) 21:31:12.00

B言語って超えたって?


86 : デフォルト名無しさん : 2011/11/15(火) 21:53:33.76

でもRailsRubyの黒魔術を使いまくりから

PHPで同じ事をできないわけではないだろうけど、Ruby on Railsほど簡潔にはできない


90 : デフォルト名無しさん : 2011/11/15(火) 22:50:07.81

スタートアップなんて根無し草の集まりにとって、

googleが囲った言語coolさを見出せないんだろ


123 : デフォルト名無しさん : 2011/11/20(日) 11:32:16.79

まあくだらねえWEBサービス作って喜んでる情弱は早く死ねって事だよ


91 : デフォルト名無しさん : 2011/11/15(火) 22:52:42.98

そういう理由じゃなくてRailsのほうが単純に情報プラグインも多いからでしょ


3 : デフォルト名無しさん : 2011/11/15(火) 23:07:07.67

linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん

わざわざ不合理で不完全な言語を使うなんて

社会からハミ出た奴らの精神的な作用によるものじゃないの?


95 : デフォルト名無しさん : 2011/11/15(火) 23:20:20.21

django情報プラグインが増えないという、

現実に対する鬱憤を吐いてるようにしか聞こえないな

もしも

linuxじゃデフォのツールなんだし、ツールとの連携を考えたらpython一択じゃん

真実であるのなら、今頃はdjango情報プラグインが溢れかえっているはず


104 : デフォルト名無しさん : 2011/11/16(水) 01:20:49.05

Python信者乙。

yumや、gdbgnome拡張pythonであるからといって、それをwebアプリでも使いたいと思う人は少ないというだけのこと。

ソースからインストールする必要があったとしても、web開発ではrubyを使いたいという人が多いというだけのこと。


94 : デフォルト名無しさん : 2011/11/15(火) 23:15:11.93

というか、世界中Pythonプログラマが Remeber Zope!! を合い言葉

打倒RailsたるWebフレームワークを開発しているはずだけど、

いまだにRailsを超えるプロダクトが登場しないのはナゼ?


Railsも登場してから、かなりの年月が経過しているんだけどなぁ....

その間にもRailsRails 3が登場して、REST/AJAXの強化等の進化継続しているよ

347 : デフォルト名無しさん : 2011/12/09(金) 10:16:35.22

Ruby では

ary.map {|x| x**2}

となるものが、Python では

map(lambda x: x**2, ary)

となり、lambda の本体が1つの式では表現しきれなくなると

def mapper(x):

.....

map(mapper, ary)

書き換える必要があります


348 : デフォルト名無しさん : 2011/12/09(金) 10:24:20.94

Pythonのlambdaを用いた階乗計算

f = lambda x:(x and f(x-1)*x)or 1

RubyにはPythonのように「lambda本体は式でなければならない」という限定がありませんから

andやorを使った不自然記述をしなくても

f = lambda{|x|if x == 0 then 1 else x*f.call(x-1) end}

または

f = lambda{|x|x == 0 ? 1 : x*f.call(x-1)}

と書けます。lambda内でreturnが使えますから、書きたければ

f = lambda{|x|if x == 0 then return 1 else return x*f.call(x-1) end}

でもOKです。


390 : デフォルト名無しさん : 2011/12/10(土) 15:35:41.62

348

これはPythondisっているように見せかけてRubydisっているのか? と一瞬思ってしまったw

だってRubyのほうが長くない?CLのfuncallみたいなcall()がちょっとうざいし…

そしてどっちもlambda式の中で束縛変数名前再帰可能、と

350 : デフォルト名無しさん : 2011/12/09(金) 11:12:13.28

要素に対する関数適用と、抽出を組み合わせる場合

Python

print [x*2+100 for x in [1,2,3,4,5] if x > 2 and x < 5]

暗号のように見える。

Ruby

puts [1,2,3,4,5].select{|i| i > 2 and i < 5}.map{|i| i*2+100}

思考の流れと、コードの流れが一致しているので書きやすい。


351 : デフォルト名無しさん : 2011/12/09(金) 11:22:55.04

だれだPythonなら書き方はひとつとか言ってるのは

map(lambda x: x*2+100, filter(lambda x: x > 2 and x < 5, [1,2,3,4,5]))

354 : デフォルト名無しさん : 2011/12/09(金) 12:22:07.37

pythonて可読性が高いのをうたってる割にはそこいまいちだよね


353 : デフォルト名無しさん : 2011/12/09(金) 12:10:08.46

Ruby場合には、左から右へと無名関数データフローあるいは

パイプラインのように並ぶからコードが読みやすい

 

関数型プログラミングに不慣れな初心者でも、参照透明性のあるコード自然に書ける

プログラマにとって優しい or プログラミングの楽しさを教えてくれるのがRuby

 

それと比較すると、Pythonコードは、関数型プログラミングというもの

いかに高度で難解なものであるかという事をもったいぶってプログラマ押し付け

 

もしもPythonしか知らないプログラマであれば、関数型 = 難解 という印象を持つだろう


356 : デフォルト名無しさん : 2011/12/09(金) 12:53:45.66

階乗計算くらいだと単純すぎて、ナゼ重要なのかが分かりづらいと思うのでコードで示す

result_list = source_list.map { |elem|

  x = foo(elem.x)  # ここが局所宣言を書く部分

  y = bar(elem.y)  # ここも局所宣言の続き

  x + y       # 最後に評価された式の値が、無名関数のリターン値になる

}

Rubyでは、map等に与える無名関数の中で局所的な環境(クロージャ)が作られるから

x = foo(...) のような代入文がいくつでも(= 複雑な処理でも)書ける

このポイントは、実用的なプログラム関数型風で書こうとした時に、威力を発揮する

357 : デフォルト名無しさん : 2011/12/09(金) 12:59:21.07

余計分かりづらくなった

358 : デフォルト名無しさん : 2011/12/09(金) 13:17:26.54

リスト内包表記が暗号みたいと言ってる奴は

高卒ドカタなんだろうなぁと可哀想になる

大学数学に触れる機会があれば

集合の表記に似せてることが分かるから

386 : デフォルト名無しさん : 2011/12/10(土) 01:41:34.46

数学とかで慣れてるし区切りが関数のがわかりやすい


359 : デフォルト名無しさん : 2011/12/09(金) 13:46:31.97

355

map/filterはfor/ifと同じだと言っているだけだから、難解という印象は持たない。

関数型プログラミングに慣れた、あるいは得意な人であれば、そういった印象なんだろね

Rubyの魅力はこれから関数型プログラミングを学ぼうとする初心者、 あるいはそんな初心者へ教える立場から見た、優しさ or 分かりやすさなんだ



360 : デフォルト名無しさん : 2011/12/09(金) 13:53:28.85

Rubyだと直感的に書けるコード

[1,4,3,2].sort.reverse.map{|x| x.to_s}.join('-')

Pythonだと読みにくい。

'-'.join(map(str, reversed(sorted([1,4,3,2]))))


361 : デフォルト名無しさん : 2011/12/09(金) 14:07:17.88

360

Pythonでは思考の流れと一致しないばかりか、「カッコだらけ」のコードになると.....


364 : デフォルト名無しさん : 2011/12/09(金) 14:28:55.99

カッコだらけのコードを分かりやすくする基本的な方法静的単一代入じゃないか

Rubyのやり方は基本ではなく玄人のやり方だろ


372 : 369 : 2011/12/09(金) 16:21:03.82

Pythonでは組み込みの型でメソッドチェインはやって欲しくないな

listにmap,filterメソッドができたとしても、

似たようなコレクションtuple,deque,array,queue等にも同じメソッドが必要になってくるし。

シーケンスプロトコルの利点が活かせない。

383 : デフォルト名無しさん : 2011/12/10(土) 01:17:28.39

372

外部のライブラリでも列挙可能なものは、たいていEnumerableモジュールをimportしてます

Rubyユーザーは列挙可能なものmapselectできて当然だろって思ってる気がしま


377 : デフォルト名無しさん : 2011/12/09(金) 18:41:51.79

Pythonは「何かを便利に書くためのしわ寄せ」をはっきり寄せてくる

得意と不得意を言語レベルではっきり主張するのでメリケン好みと言えなくもない

Rubyは全方位になんとなく八方美人なので、全体的になんとなく書きやすくてなんとなくキモくて遅い

379 : デフォルト名無しさん : 2011/12/09(金) 18:48:52.27

Pythonユーザー調教っぷりは異常

「書きにくいってことはその処理に向いてないってことだから諦めろ」を地で行く


387 : デフォルト名無しさん : 2011/12/10(土) 13:40:40.74

リストの内包表記はシンプルに書けるときは使うけど

基本その場でdefするのがPython風なんだと思う。

389 : デフォルト名無しさん : 2011/12/10(土) 14:40:31.04

無名関数が文を使うほど複雑なら名前を付けるのが Python 流と想像

384 : デフォルト名無しさん : 2011/12/10(土) 01:23:49.48

outer(center(inter( arg )))

これを読みづらいと感じるのは、左から右に流れる

日本語文に慣れているからだと思うが、

もしかしてアラビア語ネイティブな人からすると逆に読みやすいのか?


385 : デフォルト名無しさん : 2011/12/10(土) 01:34:57.89

なるほど、ということは右から左、左から右どっちでも行ける言語が最高ですね

F#パイプライン演算子最高ということで

2012-01-17

ヨソジ

31歳で癌になって、とりあえず治して、それから早8年。この分だと普通に60歳くらいまでは生けそうな感じだ。

癌が治って退院したときは、40歳自分もなかなか想像できなくて、オレは生涯独身で行こうと思ったものだが、意外と人間、簡単には死なないようだよ。まあでも自分の選択に後悔はしていない。もし運良く結婚できたとして、嫁さんは分かってて結婚するわけだから自己責任だが、もし自分の子供が癌になってしまったらと思うと、ちょっとね。ましてやオレより先に死にでもしたら耐えきれませんよオジサンは。

そんなわけで今、オレの隣に奥さんはいないし、オレの膝の上に子供はいないわけだが、オレは充分に幸せなのだ2chまとめサイトは相変わらず面白いし、たまに東京に行って女子高生BARメイドキャバクラで酒を飲むのは最高だ。そうそう、35歳でギターを始めた。奥田民生が弾きたいんだよ。

2012-01-11

1本満足BAR

とりあえず、カウンターで「もう5時か。」とつぶやけば、

よってたかった"YOU! IPPON-MANZOKU MAN!?"とおだてられるので、

「マッマッMANZOX!イッポンMANZOX!」と言えばいいんだな。

よく分かった。

http://anond.hatelabo.jp/20120111020515

一人BARデビューしてきた話

男で酒飲める人なら誰でも憧れる一人BAR



行きたいけどどう振舞っていいかわからん

過去には

http://burusoku-vip.com/archives/1354659.html

みたいなつらい思いをした人もいて、

BAR初心者にはオススメできないところだーなんて思ってたが

勇気をふりしぼって昨日今日と一人BARデビューしてみて、

なんとなく一人BARの過ごし方がわかってきたので

つらつらと書いてみる。



・とにかくカウンターに着く。

お酒を頼む。男は構わずウイスキーを頼んどけ。

ウイスキー2杯目。ここで1杯目に飲んだウイスキーと比べてもっと辛い、もっと甘いとかリクエストする。

 ぴったりの1杯を選んでくれるはずだ。

・話したげな目線バーテンさんにおくる。多分話しかけてくれる。

 話題は「木戸に立てかけし衣食住」からセレクトする。

 自分の家の近くのBARを選ぶと「住」の話がしやすいのでいいんじゃないかな。

テレビあるバーにも行ってみたけど、ここはテレビが話題を作り続けてくれるので

 話題が途切れるということがなく、デビューという意味では過ごしやすい。

常連さんっぽい人が登場。話に耳を傾けるだけでも時間がすぎる。

・お店を出る前に、「このへんで行きつけのBARを作りたくて、いろいろ回ってる」と伝えると

 オーナーさんは意外と親切に教えてくれる。



こんな感じかね。

結局2日間で3件回ってみたが、

お店の内装はもちろん、バーテンさんの考え、行動がお店ごとにあるので

色々バー巡りしてみるのはほんとうに面白そうだ。

また行こうと思う。



ところで、みんなお店のバーテンさんを「マスター」と呼んでるんだけど

これは常連じゃなくても呼んでいいのかな・・・・?

2011-12-08

Re: http://anond.hatelabo.jp/20111207101856

これは、「(他のライブラリが必要な)特殊なモジュール使ってますか?」「環境依存の設定ありますか?」とかを包括した質問かもしれない。

いや~そんな難しい話ではないんですよ。

fooとbarというDLLがあってfooからbarのヘッダーファイルインクルードしてクラスを使ったらリンクエラーが出たっていう簡単なお話

2011-07-06

英語勉強がんばりましょうという話

まだまだ英語話せないのですが、勉強をしていると僅かながら日々上達はしてまして、当然ながらそれは毎日毎日英語勉強をやり続けているかです通勤往復、帰宅後、休日ともともと出不精というのもありますが、土日もほとんど自宅にいて英語勉強をしています。それでも学生時代にさぼっていたツケは大きく、まだまだ中学生レベルを脱することができません。

これから英語勉強しようと思っている人に言いたいことは「思ってるよりもきついよ」ということです。いや、きついよ。デジマデジマ(おっさんが若者ぶって言う言葉)。英語の基礎知識のない人間がいきなり英語にとりかかっても、上達スピードがとんでもなく遅いと感じます。好きこそものの上手なれ、とよく言いますが、こちとら英語が好きでもなんでもないうえに英語を避けて生きてきたおっさんです学生時代英語が好きで留学した人とは比べるまでもないです

そんな英語嫌い人間英語勉強を続けるのは至難の業です漠然と「英語できないと今後きついよなあ」と思っている人たちが一念発起してまずやってみることは、「一日5分で~」とかいう枕言葉教科書スピードラーニングかい無駄ものを1週間程度やってみて上達が感じられず諦めることの繰り返しでしょう。なんでもそうですモチベーションを保つ最良の方法は上達を実感して気持ちよくなることです。ところが、英語に関してはそれを実感するのに時間がかかりすぎます。我々おっさんは余計に。

一つ言えるのは、英語ができる人や英語勉強したこともない人から言われる言葉にいちいち傷付く必要はないということです英語を1年程度勉強したあなたは何度もこう言われると思います

「1年も勉強してるのに、まだそれだけしかしゃべれないの?」

「1年も勉強したんだから、もうかなりしゃべれるでしょ?」

あなた英語が好きで勉強した人とは違うし、あなた英語勉強していない人でもないのです。違う人間の考え方を気にして落ち込んでも仕方ないということをボクは最近学びました。外人がいるBARに行って生きた英語とやらを体感しに行く必要なんてないし、Sex And The City字幕なしで見る必要もありません。それからエキサイト翻訳を使っている人間の言うことも無視していいです英語嫌いには英語嫌いなりの勉強方法があります。変なプレッシャーを感じてモチベーションを失くすくらいならやらないほうがマシです勉強継続することが大事ですし、継続することで吸収力も上がっていきますですので、なによりも自分継続できる勉強法を探しましょう。誰かのやり方を真似する必要はありません。英語が嫌いな人用の勉強法だってネットを探せば山ほどあるので自分に合った方法を探し、毎日続けることを最優先にすべきだとボクは思います

いっしょに英語勉強がんばりましょう。

2011-06-16

「6.11新宿原発やめろデモ」における20学生集団リンチ事件

「6.11新宿原発やめろデモ」において発生した、20学生に対する集団リンチ

「6.11新宿原発やめろデモhttp://611shinjuku.tumblr.com/)」において、20歳の学生に対する、集団リンチ事件。

白石比呂志氏(@HIRO_SHIRAISHI)のツイート

原発デモでタコ殴りにされた(笑)
http://twitter.com/HIRO_SHIRAISHI/status/79594873187074048
原発デモ連帯を申し込んだ(ヤクザではない、真面目な)右翼団体が「ヘイトスピーチを許さない会」によって完全排除されたらしい。これは本当にふざけてる。異なる主張を持った人たちを排除する姿勢はザイトク系右翼とかとなんにも変わらない。マジで終わってんな。
http://twitter.com/HIRO_SHIRAISHI/status/79325760887865345
@penguinlegs 「反原発デモ左翼団体の専売特許じゃない、異なる主張を持った人たちー右翼の人たちを排除したのはおかしい!」って演説したら「おい右翼!」と缶ビールが飛んできて「右翼がいるぞ!」とか言われて大勢に取り囲まれてクビを締められたり殴られたりしました(>ε<
http://twitter.com/HIRO_SHIRAISHI/status/79712421413011457
体中痛いよ(>ε<)「異なる主張を持った人たちを排除するのはおかしい!どうして右翼を排除したんだ!」ってアジったら「右翼がいるぞ!」とぼくちんを取り囲んでリンチ。ザイトク会と変わんねえ素敵な連中だったな。やっぱり、理論の強さなんかではなくケンカの強さが重要なんだなあと学習したよ。
http://twitter.com/HIRO_SHIRAISHI/status/79716673401270273
昨日ボクを助けてくれたみんな、本当にありがとう(>ε<)アルタ前で俺に向かって「右翼がいるぞ!」と取り囲み、殴ったりクビを絞めてきた人たちも、素敵な夜をありがとう左翼にもザイトク会みたいな連中はいるんだなあと勉強になりました(笑)
http://twitter.com/HIRO_SHIRAISHI/status/79713426439548928
@giyuugungityou @penguinlegs いや、僕を囲んだ連中がそのヘイトスピーチを許さない会の人たちかどうかはわかりません(>ε<)あとそいつら本当むかつく(>ε<)「お前がなんたら義勇軍の構成員か?」などと謎なことを言われました(笑)
http://twitter.com/HIRO_SHIRAISHI/status/79754074521743360
@giyuugungityou 止めたくないというより、後になってネチネチと、やれ「主催者の責任がどうだ」とか「暴力を振るった」ことをダシにして鬼の首を取ったように彼らを攻撃するのがダサいと思うんですあいつらキライだけど、あいつらをネチネチ攻撃する連中もあんま好きになれません
http://twitter.com/HIRO_SHIRAISHI/status/79786958246776832
昨日のセクト主義クサレサヨク、目がザイトク会みたいだったよね…ああいう、異論火病を起こす連中は政治をやるべきじゃあないわ。騒ぎには関係してないのに「君ごめんな、俺は左翼なんだけど左翼を代表して謝るわ」と頭を下げてくれた心の広い方三人のツメのアカでも飲んどけや。
http://twitter.com/HIRO_SHIRAISHI/status/79922987603722241

白石比呂志氏の友人、菅谷圭祐氏(@sugaya_keisuke)のツイート

6月11日の深夜の件で「暴行はなかった」という方もいるようですが、友人の名誉のためにツイートさせてください。僕が騒動に気づいて助けに行ったのはしばらく経ってからなのですが、その時点で揉み合いの中で友人が首を誰かに絞められているところは見ました。 @yu_hirano
http://twitter.com/sugaya_keisuke/status/80855391575080961

上記ツイートreply元(平野悠、「ライブハウスロフトグループ」席亭)

ロフト加藤梅造から素人の乱の内幕をあまり書くな」ってあったので書けないが、本日の「素人の乱6.11デモ総括会議」はクズ左翼言論弾圧機関「ヘイとスピーチを許さない会」の集会破壊暴力行為をどう判断するのか?もしスルーするのであれば私はこれから素人の乱とは関わらない。
http://twitter.com/yu_hirano/status/80827417844908033

LOFT PROJECT、加藤梅造氏(@umezox)

しかし「ヘイトスピーチに反対する会」ってホント典型的なバカ左翼だったな。やってることは在特会と一緒。「自分たちのヘイトスピーチ以外に反対する会」に改名したほうがいいンじゃないか
http://twitter.com/umezox/status/79683455255977984

白石比呂志氏の知人、木野トシキ氏(@Kino_from_Tokyo)のツイート

@moriteppei 今回新宿アルタ暴行された白石君は知り合いなんですけれども、本人は右翼ではないんですよ。あくまで針谷氏の登壇が妨害されたことに抗議していただけのようで。いずれにしてもこういった暴力事件があったのはとても残念です
http://twitter.com/Kino_from_Tokyo/status/79778693920194560
何度も同じこと言って申し訳ないけど、「反原発なら誰でも参加できるデモです」なんてウソつくの、今後はやめたほうがいいよ。実際に日の丸を持った青年スピーチを妨害され、「右翼を排除するのはおかしい」と主張した人が集団暴行されたんだから。「誰でも参加できます」は、ウソなんだよ最初から
http://twitter.com/Kino_from_Tokyo/status/79823383931535360

白石比呂志氏の知人、もやし氏(@moyashiJK)のツイート

取りあえず、新宿脱原発デモでは暴力沙汰があった。これは決して忘れてはならない事実だ。知人は、右翼だと罵られ、複数人に暴行された。
http://twitter.com/moyashiJK/status/79874764193271808

法政大学文化連盟(@hosei_bunren)

〓個人名〓? RT @HIRO_SHIRAISHI 昨日ボクを助けてくれたみんな、本当にありがとう(>ε<)アルタ前で俺に向かって「右翼がいるぞ!」と取り囲み、殴ったりクビを絞めてきた人たちも、素敵な夜をありがとう左翼にもザイトク会みたいな連中はいるんだなあと勉強になりました
http://twitter.com/hosei_bunren/status/79750593958256640
集団リンチ犯、〓個人名〓一味は人間のクズ。 RT @suzukiorz: 土曜の夜の新宿での暴行事件のことを今初めて知った。自分は思想的には暴力を否定しないし(自分が殴られたら恐らく警察に行くとは思うが)、ヘイトスピーチ(略)会についても器が小さいということの他に言うこともない。
http://twitter.com/hosei_bunren/status/80825244251725824
〓個人名〓は6月11日の深夜、20歳の学生を「右翼」呼ばわりして集団リンチを加えた中年ブサヨオヤジどもの一味ですゲス、卑怯者。RT @toyamakoichi 11日の東京の反原発デモから右翼を排除”した「ヘイトスピーチに反対する会」とやらにはやっぱりクソ野郎・〓個人名〓がいたか
http://twitter.com/hosei_bunren/status/80166059088420864
異議なし。20歳の学生を「右翼」呼ばわりした揚句集団で取り囲み暴行を働いた自称「左翼」自称「アナキスト」の中年ブサヨ連中は日本左翼業界の恥。卑怯者。 RT @umezox: しかし「ヘイトスピーチに反対する会」ってホント典型的なバカ左翼だったな。やってることは在特会と一緒。
http://twitter.com/hosei_bunren/status/80829347811966977
30、40を過ぎたいい年したおっさんが「俺は左翼だ!」「俺はアナーキストだ!」などと叫び、自身が右翼規定した20歳の学生に、殴る、引き倒す、首を絞める等、1対多でリンチを加える。人として恥ずかしくないのかね……。
http://twitter.com/hosei_bunren/status/80831067543699456
確かです。じゃなきゃ、名前なんか出すはずがないでしょう。彼らの言う通り白石くんが「右翼」だったら、新宿署行って被害届出して終わりです。 RT @suzukiorz: 白石を殴った連中の中に〓個人名〓氏がいたのは確かなのでしょうか?
http://twitter.com/hosei_bunren/status/80841032819949568
@suzukiorz あと、本件は「中年ブサヨによる20学生集団暴行事件」ですからゆとり世代全体に向けられた挑戦でもあります。こういう馬鹿は放っておくとまたどこか別の場所で同じようなことをする。他者に適当レッテル張りをして暴力をふるう。中年ブサヨ粗暴犯の征伐は、社会正義です
http://twitter.com/hosei_bunren/status/80871584419688448
〓個人名〓は最低の男でしょう。 RT @kdxn: ヘ会は文連からも見放されたのか…w
http://twitter.com/hosei_bunren/status/80879478225649664
自称「左翼」自称「アナキスト」のいい年をこいたおっさんが若干20歳の学生を取り囲み、暴行暴言の数々。理由は「右翼から」。馬鹿じゃねえの? 卑怯にもほどがある。
http://twitter.com/hosei_bunren/status/80879552351580160
仮に相手が右翼だったとして、右翼から一方的に暴言を浴びせかけていいとか、右翼から一方的に暴行を働いていいとかい理屈がまったくわからない。お前ら一体何様なんだ? 今回の件で2ちゃんねらーが左翼一般を「ブサヨ」と嘲笑したい心情がよくわかった。
http://twitter.com/hosei_bunren/status/80898018001420288
しかも当該学生右翼ではないという。ゲスだね。
http://twitter.com/hosei_bunren/status/80880016560361472
20学生に集団暴行を働いた自称「左翼」自称「アナキスト」連中の一味、ヘイスピ〓個人名〓45歳は恥を知れ!RT @toyamakoichi: (…)法政を例外として「学生運動」は一切評価しない私のスタンスに不満らしい。しかし〓個人名〓みたいなの輩出する運動はやっぱり評価しねえよ(…)
http://twitter.com/hosei_bunren/status/81025034008801280
内ゲバではなく「集団リンチです右翼だとの嫌疑で、自称左翼中年オヤジ連中が20歳の学生に、殴る、引き倒す、首を絞める等の暴行を働きました。 RT @kasekun777: 6.11の反原発デモの夜、新宿デモ参加者による暴行事件があったのか…。厭だなぁ…そういう内ゲバっぽいの
http://twitter.com/hosei_bunren/status/81040197814460416
笑いごとじゃないですよw こういう言い方はアレだけど、たか20歳相手に30、40過ぎのいい年こいたおっさん(自称左翼)が集団暴行ですよ。頭おかしいし、恥ずかしいよ。 RT @kayo_kiseki: 今回は「反」原発デモで、異論を口にしたら「右翼」とリンチされた大学生がいます
http://twitter.com/hosei_bunren/status/81043985971429376
そうかも(笑) いずれにせよ、「日本左翼業界恥部」として歴史に刻印されました。 RT @muneomausu: @hosei_bunren もう思想関係ないじゃんw暴れたかっただけじゃないのかそのオッサンwww
http://twitter.com/hosei_bunren/status/81046493066313728
あれだけ大きく盛り上がった6.11脱原発デモに泥を塗るようで松本哉氏を始め関係者の方には内心本当に心苦しいけど、でも、存在した集団暴行をなかったとは言えない。そういった泣き寝入りは、必ず特定個人の尊厳を奪うことに繋がるからだ。中年ブサヨ集団による20学生リンチを我々は許さない。
http://twitter.com/hosei_bunren/status/81052521690443778

外山恒一氏(@toyamakoichi)

福岡の反原発デモに「反原発右派」として参加。沿道で街宣していた「救う会」の人々とは手を振りあい、「在特会」の人々とは罵りあった。こちらは特に敵意は持ってなかったのに、福岡在特会リーダー馬鹿オヤジがカラんできたのでカラみ返したまである
http://twitter.com/toyamakoichi/status/79453619979689984
福岡在特会馬鹿オヤジに「(左翼に)寝返った」とか罵倒されたが、監視社会格差社会原発の問題では左翼連帯し、国防外交歴史観の問題では右翼連帯するという私の立場は、ファシスト転向以来一貫している。っていうか、オマエラも反原発派に寝返れ。原発日本文化じゃねえぞ。
http://twitter.com/toyamakoichi/status/79455453163163648
在特会左翼のやることにいちいち反発するよりも、国民の分断を許すな(格差社会反対)、美しい国土を汚すな(原発反対)とか叫んで、左翼の「正義」をむしろ奪い取るべきだ。そっちの方がよっぽど左翼にとって“脅威”になるはずなのに。
http://twitter.com/toyamakoichi/status/79479791132229632
東京の反原発デモで「右翼を排除しろ」と騒いだ一部左翼の言動が問題になってるが、そういう偏狭さは嫌いではない。が、右翼ナアナア左翼右翼よりタチが悪い、そんなダメ左翼と組むより右翼と組んだ方がマシだ、右翼と組んでダメ左翼を粉砕しよう、と徹底的にコジらせない中途半端さが嫌いだ。
http://twitter.com/toyamakoichi/status/79550140502913025
昨夜は冗談めかして呟いたが、当然ながら私も東京の反原発デモからの“右翼排除”には心底ムカついているのである
http://twitter.com/toyamakoichi/status/79976738528043009
素人の乱界隈の、インテリパンクという活動家名のインテリでもパンクでもない奴がやっている「RLL(ラジカルお笑い左翼)」というラジカルでも面白くもない連中(だから私は単に「L(左翼)」と呼んでる)が、昨日の反原発デモから右翼を排除」した連中とツルんでいるようだ。死ねばいい。
http://twitter.com/toyamakoichi/status/79960022792151040
11日の東京の反原発デモから右翼を排除”した「ヘイトスピーチに反対する会」とやらにはやっぱりクソ野郎・〓個人名〓がいたか。コイツは06年末東京でのフリーター労組系の集会で「ファシストから」って理由で私の発言を封じた奴だ。私の宿敵・矢部史郎の仲間でもある(あった?)。
http://twitter.com/toyamakoichi/status/79975744159232001
まっすぐに排外的言動を繰り返す在特会の方が、「排外主義はいけない」と云いながら排外的言動を繰り返す「ヘイトスピーチに反対する会」より少しだけマシだ。駆け出しの頃、先輩活動家に「帝国主義者とはただただ悪い奴ら。スターニストとは善人ヅラした悪い奴ら」と教わったのを思い出す。
http://twitter.com/toyamakoichi/status/80165378004754433
スターリニズムを批判した新左翼自身がことごとくスターリニズム化したという歴史を、自らが新左翼の系譜に属すること自体には自覚的であるはずの〓個人名〓や矢部史郎らは真摯に見つめていないから、今回みたいなことがたびたび起きる。
http://twitter.com/toyamakoichi/status/80191416097189888
新左翼が自らのスターリニズム化を回避する唯一の方途がファシズム転向であることは、全共闘の最もラジカルな活動家だった牧田吉明、最もラジカルな理論家だった千坂恭二、後続世代でほぼ唯一「全共闘継承」を大真面目に追求した私のいずれも結局ファシズム転向している事実からも明らかだ。たぶん。
http://twitter.com/toyamakoichi/status/80191839436681216
BARラジカルでの会話より】在特会と違ってシャレの分かる排害社が「ヘイトスピーチに反対する会」にエールを送ればいいんじゃないか。ホメ殺し的に。「諸君が一言天皇』と云ってくれれば我々は喜んで諸君と手を結ぶ」と。
http://twitter.com/toyamakoichi/status/80632377373769729
数ヶ月前の某誌を読んでたら、批判的に言及されていた。90年前後若者運動について、法政を例外として「学生運動」は一切評価しない私のスタンスに不満らしい。しかし〓個人名〓みたいなの輩出する運動はやっぱり評価しねえよ(ん? 「非学生運動」の我々も矢部史郎を輩出してるから同じか…)。
http://twitter.com/toyamakoichi/status/80978316487696386

ヘイトスピーチに反対する会」

ヘイトスピーチに反対する会」有志

柏崎正憲 栗原学 常野雄次郎(@toled) ほくしゅ(@hokusyu82) 山口素明 ほか2人



ヘイトスピーチに反対する会 - 「6.11新宿原発やめろデモ」に対する公開質問状

http://livingtogether.blog91.fc2.com/blog-entry-96.html

関連? http://www.youtube.com/watch?v=boYumfuaEh4#t=7m43s

2011-03-20

より良いPHPerにならないための20Tips

http://1-byte.jp/2011/03/20/20_tips_you_need_to_learn_to_become_a_better_php_programmer/

良いPHPerだって?そんなものは丸めゴミ箱にでも捨ててしまった方が資源の再利用になる分いくらかマシだ。

つまり俺たちがしなくちゃならないことは「より良いPHPerにならないため」に何ができるかってことなのさ。

それじゃ、始めよう。

1. ?>を使うな

?>なんて使っちゃいけない。そう俺たちはBAD PHPer。

無駄ホワイトスペースの出力に悩まされるくらいなら対称性なんて丸めゴミ箱にでも捨てた方がまだマシだ。非対称性こそが賛美。

2. 設定ファイルPHPで書くな

require_once("config.php");

未だにこんなことやってるやつがいるのかいベイベー。絶対にダメだ。この一行を見たら俺は悶絶する。

ダメだ、早く何とかしないと。

大抵このconfig.phpの中身はこうなっている。見て絶望だ。

$hoge_path = '';
if (!LOCAL) {
    define('FOO_FLAG', 1);
    if (HONBAN) {
        define('HOGE_FLAG', 1);
    }
    else if (TEST) {
        define('HOGE_FLAG', 2);
    }
}
else {
    $hoge_path = '/local';
    define('FOO_FLAG', 2);
    define('HOGE_FLAG', 3);
}

define('HOGE_URL', $hoge_path.'/hoge/');

こういうのが延々と続くわけだ。もういやだ。もう見たくない。

本番環境テスト環境でどういう値の違いがあるのか、ローカル環境だとどうなるのか、まったく把握できる気がしない。

なまじPHPな設定ファイルのせいで処理をついつい書いてしまう。そしてどんどん複雑になってしまう。

やはり設定データは基本的にYAML等のデータしか定義できない形式のもので用意すべきだ。そして環境ごとに設定ファイルを分けるべきである

そうすることで何にどういう違いがあるのかすぐにわかるし、diffすれば一度にすべて把握することができる。

# 本番環境設定ファイル
foo_flag: 1
hoge_flag: 1
hoge_url: '/hoge/'
# テスト環境設定ファイル
foo_flag: 1
hoge_flag: 2
hoge_url: '/hoge/'
# ローカル環境設定ファイル
foo_flag: 2
hoge_flag: 3
hoge_url: '/local/hoge/'

3. コメントを信用するな

そう、あなたはこんな状況に遭遇したことがあるんじゃ?

// ここで後の処理のためにhogeメソッドを呼び出しておく
$q->foo();

// $a['foo']はここに来る時点で真のはず
// 2010-03-10 判定がおかしいので修正
// 2010-06-21 やっぱり値が入ってる方が正しい
if ( !isset($hoge[0]) ) {
}

コメント保守されない。そう、それは真実。こんなコメント発見したら即効削除しよう。コメントは基本信じるな。

俺たちにちょっとしたヒントと大きな損害を与えてくれる、それがコメントの役割なのだ。

4. タブとうまく付き合うしかない

わかる。いいたいはとてもわかる。俺たちはしばしばインデントにスペースを使うはずだ。一方でIDEのしっかりした言語ではタブも使うことがある。しかし悪いことに、両者を混同しているプログラマも一定数いるのだ。

タブを画面上で認識しにくいエディタが世の中には存在する(何とは言わないが)

そして画面上で認識しにくいことを理由にタブを気にしないプログラマがいる。

この二つの条件が重なると、タブとスペースの交じり合ったインデントが完成する。もうぐちゃぐちゃだ。これは永遠に続く戦いだ。

私たちが勝利を掴むためにできることなどせいぜい、常にスペースしか使わない。タブを見つけたらその都度スペースに変換する。そういった地道な活動が明日へとつながるのだ。

5. 変数名に時間をかけるな

われわれがプログラムをするとき、何に一番時間がかかってるか。実は変数の命名なのである。ここで拘り過ぎて時間をかけ過ぎては何も進まない。

御託はイイからさっさと書け、だ。しかしとはいっても変数名は重要。日頃からどういうときにどんな名前を使うかを決めておくといい。

そして変数名に型はまったく必要ない。型宣言のないPHPにおいて、型の変数名をつけること自体ナンセンスだ。

コンパイラ様に保証されてない状態での

$iNumber = 'aaa';

になんの意味もない。コメントを信じるなでも言ったが、これはプログラマを混乱させるだけの害悪なものだ。

6. 変数初期化場所

変数を使う前に初期化するのは、警告を出さないという意味でも良い癖だ。しかし具体的にどこでやるかが問題だ。

$foo = null;
$foo = $q->foo();

こんな初期化意味はない。よくあるのはやはり、if文で値を振り分けるケースだろう

$foo = null;
if ( $hoge ) {
    $foo = 1;
}
else if ( $bar ) {
    $foo = 2;
}

このとき初期化はとても有効だ。もしnullの初期化を忘れたまま$fooを使うと警告が出るが、ちゃんと初期化してるので出ない。基本中の基本だ。

7. 不正なら常に死ね

function getStatus() {
    $bReturn = false;
    if ($i == 2) $bReturn = true;
    return $bReturn;
}

(中略)

もし、何かしらの理由で、あなたの書いたif文が間違っていたら?

この書き方をしていれば、間違った値に対して、常にfalseが返る。

私たちが、PHPでsensitiveなデータを取り扱うなら、正しいデータ入力されるまでは、動かないコードを書くべきだ。

trueとfalseの条件がいまいち明確ではないが、本当に動かないコードを書けというのであれば以下のようにすべきだ

function getStatus() {
    $bReturn = false;
    if ($i == 2) $bReturn = true;
    else if ($i == 1) $bReturn = false;
    else throw new Exception("bad status! $i");
    return $bReturn;
}

中途半端にfalseを返して生存させる必要性はまったくない。今すぐ死ね

8. 連想配列キーアクセスする場合

単なる配列に対して数値をクオートで囲う必要はない。

連想配列キーを指定する場合だけ定数と間違わないようにクオートで囲まなければならない。そして逆に定数を使いたい場合はクオートで囲ってはいけない。

更に後世のプログラマ処理を見たときに、定数が使いたかったのか、文字列が使いたかったのかを明確にした場合はconstantを使うと良い。

// 定数のFOOを使うよということが明確になる
print $a[constant('FOO')];

9. echoよりもprintfを使え

もし、文字列変数の値と一緒に出力するときPHPではコンマの代わりにprintfを使うことが使える。

なぜ?コンマを使うよりも可読性がグッとあがるから

printf( “Hello, my name is %s“, $sName);

以下の代わりに上記のコードを使う。

echoHello, my name is “, $sName;

出力すべき変数が増えれば増えるほど、有効になっていく。とにかく迷ったならば、printfを使え、だ。

10. 三項演算子は一回まで

三項演算子はとても有効だ。しか優先順位に難があるせいで三項演算子ネストしようとすると以下のようなコードになってしま

$n = (($i == 1) ? 2 : (($i == 2) ? 3 :$i));

括弧だらけで読みにくいったらありゃしない。三項演算子を使うなら一回まで。約束守れないやつは丸めゴミ箱にでも捨てちまえ。

11. 真偽値のチェックは生でいけ

if ( $flag ) {
}

仕様をちゃんと把握しているなら真偽値のチェックなどこれで十分。

もし事前にbool型だというのが確定してるのなら「$flag === true」を使えばいい。

12. ++と--の演算子を見極めろ

インクリメント、デクリメント演算子は前に付くか後ろに付くかで意味が変わるので慣れるまでは非常にややこしい

けがからなくなるくらいなら初めから使わないほうが良い。見極められないなら使うな。それがPHPerなのだ。

13. 代入演算子を使え

文句なしだ。これは文句がない。

他にも色々あるので覚えておこう

$a %=  1;
$a &=  1;
$a |=  1;
$a ^=  1;
$a <<= 1;
$a >>= 1;

14. 変数dump関数はより便利に

てっとり早く画面に表示する際にpreはよく使うが、デザインの関係上画面の文字が見えないときがある。

なのでdivを使って以下のようにしとくと便利だろう。

function p($var) {
    echo "<div align='left' style='background-color:white;color:black;'><pre>";
    print_r($var);
    echo "</pre></div>";
}

15. 定数から手を洗え

君らが通常作るアプリケーションなんぞに、定数なんぞ必要ない。いいか、もう一度言う、お前ら程度のもんが、定数使おう何ぞ、おこがましいわ!

大丈夫。なんでもかんでも定数にする必要はない。結局設定ファイルに定数をずらずら作りまくってわけがからなくなってるパターンが多い。

貴様たいなもんに、定数は制御できん。いいか設定ファイルYAML等のデータで持つようにし、その連想配列データ構造を一つ持ってるだけで定数の変わりになる。

このメリットに比べれば、定数だと書き換えられなくて良いという利点などこの歯のカスほどのものだ。そんなものは丸めゴミ箱へ捨ててしまうといい。

認識を改めろ。俺たちはより良いPHPerにならないために努力している。

16. $_GETと$_POSTを生で使うな

できれば何かしら簡単なクラスでもいいのでラップしろ。

class Request {
    private $parameters;
    private $method;
    function __construct () {
        $this->method = $_SERVER['REQUEST_METHOD'];
        if ( strtoupper($this->method) === 'POST' ) {
            $this->parameters = $_POST;
        }
        else {
            $this->parameters = $_GET;
        }
    }
    function param ($key) {
        return isset($this->parameters[$key]) ? $this->parameters[$key] : null;
    }
}

これだけでもいい。たったこれだけでもとても便利だ。ここから拡張してGETやPOSTを明示的に取るメソッドとかも作ってみるといい。自分の手を動かすのだ!

17. 関数だのオブジェクトだのの問題ではな

例が良くない。こんなのは引数20個ある関数からset20回呼ぶオブジェクトに変わっただけではないか

そもそもこの20個の引数はなんなのか。何かのデータ構造なんであれば連想配列にして引数一つとして渡すべきだし、それぞれまったく異なる用途の変数なのであればWindowsプログラミングじゃあるまいし20個も引数取る時点設計が間違えている。

何がいいたいか。別に関数でもオブジェクトでもどっちでもいいということだ。

そんなことで悩んでる暇があったら設計を見直せ。

18. メソッドチェインを愛用せよ

スキあらば自分自身を返せ。スキあらばオブジェクトを返せ。配列はArrayObjectのARRAY_AS_PROPSで返せ。

ひたすらメソッドチェイン。来る日も来る日もメソッドチェイン。とにかくメソッドチェインを使い続けろ。そこに未来はある。

19. コードの汎用化は慎重に

どんなコードも繰り返すな。もし、少しでも同じコードを書いていたなら、それは関数に置き換えてしまえ。

・・・と、いうのはやめなさい。

一見同じように見えた処理でも前後の流れでまったく違うものということが往々にしてある。

まとめ方にも問題があるケースもある。何でもかんでも関数化すると、関数が膨大に増えていく。君は見たことがあるだろうか。common.phpやfunction.phpの恐ろしさを。

かに細かく関数化はされているが、適切に関数化していないのである。結合度が非常に高い。なんでもかんでも盲目的にまとめれば良いという話ではないのだ!

20. 結合度は適切に減らし、適切に結合せよ

あまりに極度に意識しすぎると、プログラムそのものができなくなる。そういう状態に陥る。

気を抜いて。そう気を抜いて。所詮あなたコードなんてすぐに消えてなくなるよ。きっともっと偉い人が作り直すよ。だからまずは思うが侭にやるといい。

結合度を減らすというのは非常に難しい何度何度も失敗し続けて、ようやくここは分けた方が良かったんだなと気付く。次に活かそうと心に決める。そしてまた同じ過ちを繰り返していくわけだ。

まずは実装することだ。これが一番の早道だ。まずはがっつり結合した関数をあえて作るといい。何も考えずに作ろう。

そしてその後に、一部分使いましたいとおもうことがあるはずだ。その時に関数に切り出そう。それを繰り返すといい。そのうち初めから分けた方が良いと気付く。

何事も経験が必要である経験を積まないプログラマ丸めゴミ箱に捨ててしまえ。

さて、先の例で言うならば、私ならadd_result_outputという関数を作ってしまうだろう。だってaddとresultを連続して呼ぶのはめんどくさいんだもん。一連の流れをいつも使うのなら、その流れをやってくれる関数を作ればいいじゃないか

function add_result_output ($iVar, $iVar2) {
    $r = add($iVar, $iVar2);
    echo result($r);
}

もっと言えばクラス化してしまってもいいかもしれない。どんな感じになるかは君の手を動かして確認しよう!


最後

このTipsはとてもわかりにくく、ニッチ過ぎる部分も多いかもしれない。

しかしもう一度タイトルを確認してほしい

あくまでも「より良いPHPerにならないための20Tips」なのだ。

君はこの記事を鵜呑みにしてはならない。PHPPHPと見抜けないPHPerはPHPを使うのは難しい


おまけ

もし、あなたPHPプログラマなら、公式のPHPドキュメントあなたのケツの穴を拭くための紙になるだろう。

私は、それぞれのセクションを眺めて、各関数でどんなことが出来るかなんぞ、歯クソのゴミ程に役に立たないとおもっている。動けばいい。はは。

あなたは、PHPで用意された既製関数で多くのことが実現できることに、(俺の仕事を減らすなと)驚くはずだ。

この記事があなたの役に立たない事を。

どんなコメントでも待ってます

ふざけんな!


個人的な感想

この記事に書かれている内容は、丸めゴミ箱に捨てた方が良いレベルです

もしここまで読んでしまったら、丸めゴミ箱に捨てましょう。



プログラ増田のあなぐら

2011-01-24

Win7 64bit IE8 + Silverlight + Flashget

覚書。

OS:Windows7 64bit使用。

Internet Explorer8(64bit版ではない)にてGyaO!Yahoo!ニュースDMM等の動画サイトを閲覧するとブラウザクラッシュする。

Internet Explorer は動作を停止しました

強制終了されるページはMicrosoft Silverlightプラグインを使用したもの。


イベントビューアーでログを見てみると

障害が発生しているアプリケーション名: iexplore.exeバージョン: 8.0.7600.16700、タイムタンプ: 0x4cd23213

障害が発生しているモジュール名: getflash.dllバージョン: 1.0.0.1、タイムタンプ: 0x4506208e

例外コード: 0xc0000005

障害オフセット: 0x00008c40

障害が発生しているプロセス ID: 0x1198

障害が発生しているアプリケーションの開始時刻: 0x01cbbb667d383d68

障害が発生しているアプリケーション パス: C:\Program Files (x86)\Internet Explorer\iexplore.exe

障害が発生しているモジュール パス: C:\PROGRA~2\FlashGet\getflash.dll

FlashGet1.73をインストールしていたのだが、こいつとSilverlightの相性がわるいのか。

IEの『アドオン管理から『FlashGet Bar』と『gFlash Class』を無効したら落ちなくなった。

2011-01-23

ぼったくりバー CHEERS BAR

ぼったくりバー

〒106-0032 東京都港区六本木 5丁目5-1 ロアビルB1

CHEERS BAR

http://www.cheersbar-tokyo.com/

2010-09-03

俺は悩んでいた。会社と家の往復に。何の刺激もなかった。

カッコいいこと言ってるが、その往復では出会いが単純にないからつまらない。会社人間恋愛なんかしても後が面倒だし、リスクがデカイ。

だから恋人探すなら外で探すと決めていた。しかし、なーんも行動しなかったら何も起こるわけない。当然だ。綺麗なお姉さんが俺に一目惚れして「好きです!付き合ってください!」なんてことは宝くじが当たるよりも低いと思う。それに最近ようやく気づいた。

でも外で探すってどうやったら・・。なんて考えていた。出会い系?なんかそれじゃ積極的に探してない気がした。

婚活パーティー?うーん、それも金払ってわざわざ出会いを探す!?なんか違うなー。

だからクラブとかBarに行って、女の子に声をかけよう!と思いついた。なんかハードル高い感じだけど、いきなりナンパよりは低いからやってやろう!と決意した。

しかし、お店に一人で行くことに違和感というか単純に「一人で行っても大丈夫なのかな?」と思っていた。ネットであれこれ調べて、知識武装をしまくった。2chで一人でBarに行く人みたいな内容があったので、「あ、そーゆー人間もいるのね」と安心してちょっと自信が湧いた。

いざ決行当日!仕事帰り。やっぱり当然怖い。わざわざ仕事帰りでスーツの格好で行くことには、理由があった。仕事帰りでちょっと立ち寄ったんですよー。的な雰囲気を醸し出したかったからだ。

そしてネットで調べたBarの前に来た。足がすくむ。若干震えていた。当然自分が知らない場所だから踏み込むのに相当の勇気がいった。しかし店の前をウロウロしてるだけじゃ始まらないので俺はBarに行ってみた。

当然俺は一見さん。Barのマスター的には「ん?一人?見ねぇ顔だな・・・」みたいな顔をしている。当然か・・。しかしそこで負けてはいけないと“Barに慣れてる”感を無理やり演出してみた。

お勧めあります」

「・・いえ、お客様の好みが分かりかねますので・・」

くそっ、失敗か!?なんて色々考えつつとりあえずコロナとか頼んで黙ってじっとしていた。そんな俺にマスターがちょいちょい話しかけてくれた。なんで、一人なの?とかどこでウチの店しったの?とかまぁ、そんな質問。出会い求めてBarに来ました。とは言えなかったが。

出会い云々はいいとして、行動できた俺が若干誇らしかった。これで出会いがありゃ完璧なんだけどと思っていたその時・・

カランコロンカラーン・・

店のドアが開いて女が数人入ってきた!しかも若い!!おおっ!!スゲェ!!なんて心では思いつつクールを決めていた俺。「絶対話しかけてやる!」

最初は、何から話しかければ・・・と悩んでいたがマスター経由で色々話していたらあら不思議。なんかフツーに話せるようになった。マスターに心のなかで感謝した。そして番号ゲットまで出来た。

そして改めて、今思い返してみて、外へ出るってことは素晴らしい。家と会社の往復だけじゃ経験できない事が沢山ある。

そして、環境は作られるものじゃない、自分が作るんだなと勉強できた。大学入って、社会人になってというレールは、ある種自分で決めているようだけど、皆がそうするから自分もそうするというものに近い気がする。俺はそれを自分環境を作ったとは思えない。流れに任せていたらここにたどり着いた的なね。

だから会社女性がいなくて、「あー、この会社出会いがねぇわ。だから恋人もできねぇ!」なんて言っていた昔の自分に情け無さを感じた。自分で無理やりにでも環境を作って出会いを求める!そういう選択肢もあるんだなと。

そう考えればナンパ師ってのは、一瞬にして出会いがある環境を創りだす天才なんだなと。そこには当然失敗もあるだろうけど、ビビって動かない俺なんかよりは遥かに先を行ってる。50歩、いや100歩先を歩いてるだろうね。

まぁ、とりとめがないけどそんなこと思ったよ。

2010-08-19

アドオンリスト

さてどこから消すか

2010-06-09

http://anond.hatelabo.jp/20100609003211

例を挙げたらきりがないけど

多いのは普段自分がいる社会学校とかイベントとか会社とか)の人とネット上で話すこと。単にすれ違っていただけの関係から、話をする間柄になり、やがて付き合うことになったパターンが多い。俺は文系で大教室で授業を受けていると300人以上いたんだが、そうすると映画館の隣の客を付き合えるか?みたいなもので、顔は知っているけど話はしたことがないやつがたくさんいた。

2010-03-12

やる気を削がないダメ出しのコツ

ttp://news.atode.cc/bar.php?u=http://www.future-planning.net/x/modules/news/article.php%3Fstoryid%3D2899

「ここがよくない」



というかわりに、




 「ここがもったいない



と伝えてみる。

2010-03-04

韓国人日本掲示板サーバーテロするたった一つの理由

はじめまして私は日本大久保に住む大学院生韓国人の男です。

バンクーバーオリンピックの女子のフィギィアスケートで韓日間に歴史に残る戦いがあったために両国間のネット住民の間で喧嘩がおこりました。

私は韓国人としてヨナの戦いを誇りに思います。

同じく私は日本在住の男性としてマオの戦いを誇りに思います。

10代のアジア人の可弱い女性ヨーロッパ北米選手を抑えて金メダル銀メダルの偉業は感動しました。

私は大久保スポーツ専門のBARのタムヤンで同じ韓国人留学生20人とヨナを応援していました。

金メダルの瞬間は皆大喜びでした。

それと同じくマオの戦いも皆たたえました。

 

 

私や日本に在住した留学生と同じように本国在住の韓国人も同じようにマオをたたえています。

マオがいたからヨナが強くなれたのです。

日本BBSでは韓国人マオが嫌いと書かれていますが大きな間違いです。

韓国人マオが嫌いな人はあまりいません。

しかしマオよりもヨナが好きなのです。

ヨナが好きだから一番になって欲しいだけなのです。

決してマオが嫌いだからマオに負けてほしいのではありません。

それは日本人のみなさん誤解をしていないでほしいのです。

 

 

 

日本掲示板ではマオをたたえています。

当たり前のことです。

日本人マオを誇りの思うのは素晴らしい行為です。

しかしヨナを批判している日本人がいるのは残念です。

韓国人マオをたたえているのに日本人はヨナを嫌うのはなぜというのでしょうか。

 

 

日本掲示板サーバーテロした韓国人犯罪者であると韓国では批判しています。

しかし彼らがサーバーテロする理由は日本人がヨナを嫌ったからです。

彼らは犯罪者といいいますが、同じく彼らはヨナを守る強い男性なのです。

国を守るためにサーバーテロのやり方をしたのです。

彼らは逮捕されるべきで、しかし同じくヨナを嫌った日本人逮捕されるべきです。

そうすれば韓日の友情はまた深まります。

 

 

日本はいつも韓国に勝ちたがります。

政治経済スポーツなどたくさんのところで韓国に勝ちたがりますが韓国も負けたくないのです。

スポーツ韓国がすべて強く政治も強いでしょう。

日本韓国より強いのは製造業だけです。

それもトヨタアメリカで起こした故障で逆転します。

それでも日本人韓国に負けた事を受け入れてほしいです。

掲示板韓国を嫌うのは止めてほしいです。

私は日本が好きなのでここにこう書こうと決めました。

日本人メッセージが欲しいです。

2010-02-24

鬱と戦って

今日も鬱と戦っております!

ウォーキングが鬱には効果があるとのことなので、

会社帰りに30分ウォーキング

帰ったら気分を落ち着かせるために

部屋の照明は暗くして、お香を焚いてまた~り。

Jazzなんかも流してちょっとしたBARにいる気分。

鬱と戦ってる人、

一緒に戦いましょう!

2010-02-21

俺のhogeがfooしてbarになる

2010-01-23

gcclink time optimization

gcc-4.5 から link time optimization (lto) と呼ばれる最適化が可能になった。

従来の分割コンパイルでは、コンパイル単位(ファイル)での最適化しかできなかった。例えば、別ファイル関数をインライン展開することはできないし、引数に渡されたポインタの escape analysis も諦めざるを得なかった。

lto はコンパイルする時に、中間表現(GIMPLEのバイトコード表現)をオブジェクトファイルに残しておき、リンクするときに、すべての中間表現を使って最適化しなおす。要は、ソースコードを全部とっておいて、最後に全部をコンパイルしなおすのと、同じようなものだ。

最大の欠点は、最後にコンパイルしなおすところだ。
このコンパイルは一回のコンパイルであり、単一プロセスで実装されているのでマルチCPUを生かせない。(いっぽう、分割コンパイルなら依存関係が緩いので並列化しやすい。)また、プログラム全体は巨大であり、最適化するのに時間がかかる。

使いかたは簡単だ。-fltoを付ければいい。

gcc-4.5 -c -O2 -flto foo.c

gcc-4.5 -c -O2 -flto bar.c

gcc-4.5 -o myprog -flto -O2 foo.o bar.o

2009-12-10

PHPのあの関数Perlでやるには?

元ネタ http://phpspot.org/blog/archives/2009/12/phpjavascriptph_1.html



面白そうだと思ったので僕もやってみた。モジュールPerl5.8系の標準モジュールのみ利用可という制限。

全部はキツイので関数処理関係の関数(http://php.benscom.com/manual/ja/ref.funchand.php)だけ実装してみた。

use strict;
use warnings;

=head2 call_user_func

 $ret = call_user_func($function,@param);
 $ret = call_user_func([$class,$method],@param);

example1

 sub plus { $_[0] + $_[1] }
 print call_user_func('plus',10,20); # 30

example2

 package Foo;
 sub plus { $_[1] + $_[2] }
 package main;
 print call_user_func(['Foo','plus'],10,20); # 30

=cut

sub call_user_func {
    my $proto = shift;
    if ( ref $proto eq 'ARRAY' ) {
        return $$proto[0]->${\$$proto[1]}(@_);
    }
    else {
        require Pod::Functions;
        if ( $Pod::Functions::Flavor{$proto} ) {
            return eval qq{$proto(\@_)};
        }
        else {
            no strict 'refs';
            return $proto->(@_);
        }
    }
}

=head2 call_user_func_array

 $ret = call_user_func_array($function,\@param);
 $ret = call_user_func_array([$class,$method],\@param);

example

 sub plus { $_[0] + $_[1] }
 print call_user_func_array('plus',[10,20]); # 30

=cut

sub call_user_func_array {
    return call_user_func(shift,@{+shift});
}

=head2 create_function

 $code = create_function($args_str,$code_str);

example

 $code = create_function('$c,$d=1','print $c+$d');
 $code->(10); # 11

=cut

sub create_function {
    my $args = shift;
    my $code = shift;
    my $default = 0;
    my @args = split /,/,$args;
    my $code_str = 'sub {';
    for my $arg (@args) {
        if ( $arg =~ /^\s*(\$[a-zA-Z][\w]*)\s*(?:=\s*(.+))?\s*$/ ) {
            my $val = $1;
            my $def = $2;
            if ( defined $def ) {
                $default = 1;
                $code_str .= qq{my $val = \@_ ? shift : $def;\n};
            }
            else {
                die 'parse error' if $default;
                $code_str .= qq{my $val = shift;\n};
            }
        }
    }
    $code_str .= $code . '}';
    my $sub = eval $code_str;
    die $@ if $@;
    return $sub;
}

=head2 forward_static_call

 $ret = forward_static_call($function,@param);
 $ret = forward_static_call([$class,$method],@param);

=cut

sub forward_static_call {
    call_user_func(@_);
}

=head2 forward_static_call_array

 $ret = forward_static_call_array($function,\@param);
 $ret = forward_static_call_array([$class,$method],\@param);

=cut

sub forward_static_call_array {
    call_user_func_array(@_);
}

=head2 func_get_arg

 $arg = func_get_arg($no)

example

 sub foo { print func_get_arg(1) }
 foo(100,200); # 200

=cut

sub func_get_arg {
    my $n = shift;
    package DB;
    @DB::args = ();
    () = caller(1);
    return defined $DB::args[$n] ? $DB::args[$n] : undef;
}

=head2 func_get_args

 @args = func_get_args()

example

 sub foo { print join ':', func_get_args() }
 foo(11,22,33); # 11:22:33

=cut

sub func_get_args {
    my $n = shift;
    package DB;
    @DB::args = ();
    () = caller(1);
    return @DB::args;
}

=head2 func_num_args

 $arg_count = func_num_args()

example

 sub foo { print func_num_args() }
 foo(11,22,33); # 3

=cut

sub func_num_args {
    my $n = shift;
    package DB;
    @DB::args = ();
    () = caller(1);
    return scalar @DB::args;
}

=head2 function_exists

 $bool = function_exists($func)

example

 sub foo {}
 print function_exists('foo');  # 1
 print function_exists('bar');  # 0
 print function_exists('rand'); # 1

=cut

sub function_exists {
    my $func = shift;
    return 1 if exists &$func;
    require Pod::Functions;
    return $Pod::Functions::Flavor{$func} ? 1 : 0;
}

=head2 get_defined_functions

 $funcs = get_defined_functions()

=cut

sub get_defined_functions {
    require Pod::Functions;
    return {
        internal => [ keys %Pod::Functions::Flavor ],
        user     => [ grep { exists &$_ } keys %:: ],
    };
}

=head2 register_shutdown_function

 register_shutdown_function($func,@param);
 register_shutdown_function([$class,$method],@param);

=cut

{
    my $REGISTER_SHUTDOWN_FUNCTION = [];
    sub register_shutdown_function {
        my $proto = shift;
        push @$REGISTER_SHUTDOWN_FUNCTION, [
            do {
                if ( ref $proto eq 'ARRAY' ) {
                    $$proto[0]->can($$proto[1]);
                }
                else {
                    require Pod::Functions;
                    if ( $Pod::Functions::Flavor{$proto} ) {
                        sub { eval qq{$proto(\@_)} };
                    }
                    else {
                        no strict 'refs';
                        \&$proto;
                    }
                }
            },
            [@_]
        ]
    }
    END {
        $_->[0]->(@{$_->[1]}) for @$REGISTER_SHUTDOWN_FUNCTION;
    }
}

思ったよりも難しかった。標準関数一覧を取る手段がなかったので標準モジュールを利用して標準関数の一覧を取得した。

あと文字列から標準関数を呼び出すスマートな手段が思いつかなかったのでeval便りに。

create_functionはかなりゴリ押し。myを勝手に付けたりデフォルト引数にも対応してたり細かい芸が光る(自分で言うな)

forward_static_callはぶっちゃけPerl的にcall_user_funcと殆ど処理が変わらないのでそのまま利用。

func_get_arg系は結構クリティカルだなー。@DB::argsをリアルに使ったの初めてだよ。

register_shutdown_functionはちょっとねー。ENDブロックを利用してるわけなんだけど当然mod_perlとかではうまく動かない。あとシグナルとか使った方が良いのかもしれない。

ヒマがあったら他の関数とかも実装してみたいかも。



プログラ増田のあなぐら

2009-11-08

450 :名無しの心子知らず:2009/11/05(木) 18:15:06 ID:IkeOreMy

»275

すっごい遅いレスで申し訳ないが、マジかよと思って調べたら

東京六本木麻薬危険地帯に指定されてるんだな、ぶっ飛んだ。



この危険地帯指定って、いわゆる暴動やら戦争やらでやばい国に旅行者が行かないようする為のものなんだよね。

それが国じゃなくて六本木という一地域指定って・・どんだけ。



Americans told to avoid Tokyo bar district after spate of robberies

http://www.guardian.co.uk/world/2009/mar/18/us-embassy-tokyo-warning

(Guardian: 18 March 2009)



そしてこう続く



“米大使館に先立って、英国オーストラリア大使館が同様の警告を出していた。”



「薬物で意識不明にさせ高額請求」、外国人ねらい六本木で急増 米大使館警告(AFP通信)

http://www.afpbb.com/article/disaster-accidents-crime/crime/2583516/3929658



多くの海外メディア報道

http://www.google.co.jp/search?hl=ja&q=US+Embassy+warns+Roppongi



Wikipedia 英語版でも言及されている

http://en.wikipedia.org/wiki/Roppongi#Nightlife_in_Roppongi

2009-09-02

あるBAR常連の間で起きたショボい出来事

A=私。28歳。恋人なし。一応女性

B=24男性

C=28歳男性。Aと同い年で友達。いいヤツ。Bの先輩。

D=22歳男性。和ませキャラだが、若干笑われキャラも入っている。

E=22歳女性

年齢は便宜的に。全員あるBAR常連

AとB:Cを介して知り合い、店で隣席になれば話しをするようになり、2回ほど2人で晩ご飯を食べに行ったことがあるという関係


ある時、DくんがEちゃんに告白してフラれた。

EちゃんはそれまでDくんに思わせぶりな態度をとっていたため、この顛末を知っている関係者は「あーあ…(可哀想…)」「相手が悪かったね」「全力でDくんをはげまそう」という反応だった。

ところが、その直後くらいから、BARの店内でちょくちょくEちゃんがBくんにしなだれかかったり、ソファー席で膝枕したり、いちゃつくようになる。しかもDくんがいてもおかまいなし。

この件を知っている一部の人はEちゃんに対して好意的な見方をしなくなったし、Eちゃんは他のコミュニティでもいわゆるサークルクラッシャー的な行動をしてて「あの子には気をつけた方がいいよ」と言われているというような噂が流れた。

しかし私が驚いたのは、Bくんが、DくんとEちゃんの間の顛末を知りつつ、Eちゃんがいちゃいちゃしてくるのを受け入れていたということ。

そこである日、Bくんと帰り道が一緒になった時に「2人はつきあってるの?」と聞いた。

そしてBくんが「友達だよー」と言うので、「せめてDくんがいるところでは控えたほうがいいんじゃない?」とつい言ってしまった(これがお節介)。

これに対してBくんは「うーん、でもEちゃんも寂しいんだよねー、きっと。僕もわかるからさー」と言った。

勝手な話だが、このひとことはBくんへの私の評価を暴落させるに十分だった。

その後、私はBくんと距離をとり、疎遠になった。



それから約1年経ったこの間、人づてに「BはA(=私)にフラれてからチャラくなった」とCさんが言ってたのを聞いた。

そういえば、Cさんは上の顛末を全然知らないからなー。

Bくんとはつきあってもいないし、Bくんに好きだ、とか、つきあって欲しい、とか、それらしきことは一度も言われたことがなかった。

しかし、よりによって私に振られたからチャラくなったとは…。

かなり心外。

その前からチャラかったじゃん!というのもあるし、もう今となっては弁解することもできない。

弁解するためには、上の事情を全部言わなければならない。

お節介なんてするもんじゃないし、人間関係って難しいなー。

それにしても心外だ!!!

2009-03-18

公明党都議選重視?

コピーして、test.htaのような拡張子HTAで保存

HTAプログラム

 ↓

<html&gt;

<head&gt;

<style type="text/css"&gt;dt{float:left;clear:left;width:10em;}</style&gt;

<meta content="charset=Shift_JIS"/&gt;

</head&gt;

<body&gt;

<script type="text/javascript"&gt;</p&gt; <p&gt;window.onload = init;</p&gt; <p&gt;var url = [</p&gt; <p&gt; "<a href="http://www.senkyo.metro.tokyo.jp/h19sangiin/san_kekka/h19san_hkai.html"&gt;http://www.senkyo.metro.tokyo.jp/h19sangiin/san_kekka/h19san_hkai.html</a&gt;",</p&gt; <p&gt; "<a href="http://www.senkyo.metro.tokyo.jp/h17shugiin/sokuhou/7kaijyo_s.htm"&gt;http://www.senkyo.metro.tokyo.jp/h17shugiin/sokuhou/7kaijyo_s.htm</a&gt;",</p&gt; <p&gt; "<a href="http://www.senkyo.metro.tokyo.jp/h17togisen/sokuhou/2kaijyo_s.htm"&gt;http://www.senkyo.metro.tokyo.jp/h17togisen/sokuhou/2kaijyo_s.htm</a&gt;",</p&gt; <p&gt; "<a href="http://www.senkyo.metro.tokyo.jp/data/h16san_hkai.html"&gt;http://www.senkyo.metro.tokyo.jp/data/h16san_hkai.html</a&gt;",</p&gt; <p&gt; "<a href="http://www.senkyo.metro.tokyo.jp/data/h15shu_hkai.html"&gt;http://www.senkyo.metro.tokyo.jp/data/h15shu_hkai.html</a&gt;",</p&gt; <p&gt; "<a href="http://www.senkyo.metro.tokyo.jp/data/data01_01_03.html"&gt;http://www.senkyo.metro.tokyo.jp/data/data01_01_03.html</a&gt;",</p&gt; <p&gt; "<a href="http://www.senkyo.metro.tokyo.jp/data/data01_02_05.html"&gt;http://www.senkyo.metro.tokyo.jp/data/data01_02_05.html</a&gt;",</p&gt; <p&gt; "<a href="http://www.senkyo.metro.tokyo.jp/data/data03_04.html"&gt;http://www.senkyo.metro.tokyo.jp/data/data03_04.html</a&gt;",</p&gt; <p&gt; "<a href="http://www.senkyo.metro.tokyo.jp/data/data01_05_05.html"&gt;http://www.senkyo.metro.tokyo.jp/data/data01_05_05.html</a&gt;"</p&gt; <p&gt;];</p&gt; <p&gt;var base = "<a href="http://www.senkyo.metro.tokyo.jp/data/tokuhyo_23ku/"&gt;http://www.senkyo.metro.tokyo.jp/data/tokuhyo_23ku/</a&gt;";</p&gt; <p&gt;var file = ["chiyoda","chuou","minato","shinjyuku","bunkyo",</p&gt; <p&gt; "taitho","sumida","koutho","sinagawa","meguro",</p&gt; <p&gt; "ohta","setagaya","shibuya","nakaono","suginami",</p&gt; <p&gt; "toshima","kita","arakawa","itabashi","nerima",</p&gt; <p&gt; "adachi","katushika","edogawa"];</p&gt; <p&gt;for(var i=0; i<23; i++){</p&gt; <p&gt; url.push(base + file[i] + "\.html");</p&gt; <p&gt;}</p&gt; <p&gt;var id = [</p&gt; <p&gt; "2007 参院比", "2005 衆院比", "2005 都議会", "2004 参院比", "2003 衆院比",</p&gt; <p&gt; "2001 参院比", "2001 都議会", "2000 衆院比", "1998 参院比", "1997 都議会"</p&gt; <p&gt;];</p&gt; <p&gt;var ku = [</p&gt; <p&gt; "千代田","中央","港","新宿","文京",</p&gt; <p&gt; "台東","墨田","江東","品川","目黒",</p&gt; <p&gt; "大田","世田谷","渋谷","中野","杉並",</p&gt; <p&gt; "豊島","北","荒川","板橋","練馬",</p&gt; <p&gt; "足立","葛飾","江戸川"</p&gt; <p&gt;];</p&gt; <p&gt;var regexku = new RegExp("(" + ku.join("|") + ")区");</p&gt; <p&gt;var iframe = [];</p&gt; <p&gt;var data = {};</p&gt; <p&gt;var parse = [ function(){</p&gt; <p&gt; var d = iframe[0].contentWindow.document;</p&gt; <p&gt; var td = d.getElementsByTagName("td");</p&gt; <p&gt; for(var i=0, l=td.length; i<l; i++){</p&gt; <p&gt; if(regexku.test(td[i].firstChild.nodeValue)){</p&gt; <p&gt; for(var j=0, e=td[i]; j<10; j++){</p&gt; <p&gt; e = e.nextSibling;</p&gt; <p&gt; }</p&gt; <p&gt; data[RegExp.$1 + "0"] = e.firstChild.firstChild.nodeValue.replace(/\.\d+/,"");</p&gt; <p&gt; }</p&gt; <p&gt; }</p&gt; <p&gt; show();</p&gt; <p&gt;}, function(){</p&gt; <p&gt; var d = iframe[1].contentWindow.document;</p&gt; <p&gt; var nobr = d.getElementsByTagName("nobr");</p&gt; <p&gt; for(var i=0, l=nobr.length; i<l; i++){</p&gt; <p&gt; if(regexku.test(nobr[i].firstChild.nodeValue)){</p&gt; <p&gt; for(var j=0, e=nobr[i].parentNode; j<4; j++){</p&gt; <p&gt; e = e.nextSibling;</p&gt; <p&gt; }</p&gt; <p&gt; data[RegExp.$1 + "1"] = e.firstChild.nodeValue;</p&gt; <p&gt; }</p&gt; <p&gt; }</p&gt; <p&gt; show();</p&gt; <p&gt;}, function(){</p&gt; <p&gt; var d = iframe[2].contentWindow.document;</p&gt; <p&gt; var nobr = d.getElementsByTagName("nobr");</p&gt; <p&gt; for(var i=0, l=nobr.length; i<l; i++){</p&gt; <p&gt; if(regexku.test(nobr[i].firstChild.nodeValue) &amp;&amp; nobr[i].parentNode.tagName == "SPAN"){</p&gt; <p&gt; for(var j=0, e=nobr[i]; j<6; j++){</p&gt; <p&gt; e = e.parentNode;</p&gt; <p&gt; }</p&gt; <p&gt; var e2 = e.nextSibling.nextSibling.firstChild.childNodes[2].firstChild;</p&gt; <p&gt; var k = 0;</p&gt; <p&gt; data[RegExp.$1 + "2"] = 0;</p&gt; <p&gt; while(e2){</p&gt; <p&gt; if(e2.firstChild.firstChild.nodeValue.indexOf("公明党") != -1){</p&gt; <p&gt; data[RegExp.$1 + "2"] += parseInt(e2.parentNode.nextSibling.childNodes[k+2].firstChild.nodeValue.replace(",",""), 10);</p&gt; <p&gt; }</p&gt; <p&gt; e2 = e2.nextSibling;</p&gt; <p&gt; k++;</p&gt; <p&gt; }</p&gt; <p&gt; data[RegExp.$1 + "2"] = int2str(data[RegExp.$1 + "2"]);</p&gt; <p&gt; }</p&gt; <p&gt; }</p&gt; <p&gt; show();</p&gt; <p&gt;}, function(){</p&gt; <p&gt; var d = iframe[3].contentWindow.document;</p&gt; <p&gt; var td = d.getElementsByTagName("td");</p&gt; <p&gt; for(var i=0, l=td.length; i<l; i++){</p&gt; <p&gt; if(regexku.test(td[i].firstChild.nodeValue)){</p&gt; <p&gt; for(var j=0, e=td[i]; j<19; j++){</p&gt; <p&gt; e = e.nextSibling;</p&gt; <p&gt; }</p&gt; <p&gt; data[RegExp.$1 + "3"] = e.firstChild.firstChild.nodeValue.replace(/\.\d+/,"");</p&gt; <p&gt; }</p&gt; <p&gt; }</p&gt; <p&gt; show();</p&gt; <p&gt;}, function(){</p&gt; <p&gt; var d = iframe[4].contentWindow.document;</p&gt; <p&gt; var td = d.getElementsByTagName("td");</p&gt; <p&gt; var regexku2 = /(大田|世田谷|練馬|足立|江戸川)/;</p&gt; <p&gt; for(var i=0, l=td.length; i<l; i++){</p&gt; <p&gt; if(regexku.test(td[i].firstChild.nodeValue)){</p&gt; <p&gt; data[RegExp.$1 + "4"] = td[i].nextSibling.nextSibling.firstChild.nodeValue.replace(/\.\d+/,"");</p&gt; <p&gt; continue;</p&gt; <p&gt; }</p&gt; <p&gt; if(regexku2.test(td[i].firstChild.nodeValue)){</p&gt; <p&gt; data[RegExp.$1 + "4"] = (data[RegExp.$1 + "4"] || 0) </p&gt; <p&gt; + parseInt(td[i].nextSibling.nextSibling.firstChild.nodeValue.replace(",","").replace(/\.\d+/,""));</p&gt; <p&gt; }</p&gt; <p&gt; }</p&gt; <p&gt; for(var j=0; j<5; j++){</p&gt; <p&gt; data[ku[[10,11,19,20,22][j]]+"4"] = int2str(data[ku[[10,11,19,20,22][j]]+"4"]);</p&gt; <p&gt; }</p&gt; <p&gt; show();</p&gt; <p&gt;}, function(){</p&gt; <p&gt; var d = iframe[5].contentWindow.document;</p&gt; <p&gt; var td = d.getElementsByTagName("td");</p&gt; <p&gt; for(var i=0, l=td.length; i<l; i++){</p&gt; <p&gt; if(regexku.test(td[i].firstChild.firstChild.nodeValue)){</p&gt; <p&gt; for(var j=0, e=td[i]; j<10; j++){</p&gt; <p&gt; e = e.nextSibling;</p&gt; <p&gt; }</p&gt; <p&gt; data[RegExp.$1 + "5"] = e.firstChild.firstChild.nodeValue.replace(/\.\d+/,"");</p&gt; <p&gt; }</p&gt; <p&gt; }</p&gt; <p&gt; show();</p&gt; <p&gt;}, function(){</p&gt; <p&gt; var d = iframe[6].contentWindow.document;</p&gt; <p&gt; var td = d.getElementsByTagName("td");</p&gt; <p&gt; for(var i=0, l=td.length; i<l; i++){</p&gt; <p&gt; if(regexku.test(td[i].firstChild.firstChild.nodeValue)){</p&gt; <p&gt; for(var j=0, e=td[i]; j<7; j++){</p&gt; <p&gt; e = e.nextSibling;</p&gt; <p&gt; }</p&gt; <p&gt; data[RegExp.$1 + "6"] = e.firstChild.firstChild.nodeValue.replace(/\.\d+/,"").replace("-","0");</p&gt; <p&gt; }</p&gt; <p&gt; }</p&gt; <p&gt; show();</p&gt; <p&gt;}, function(){</p&gt; <p&gt; var d = iframe[7].contentWindow.document;</p&gt; <p&gt; var td = d.getElementsByTagName("td");</p&gt; <p&gt; for(var i=0, l=td.length; i<l; i++){</p&gt; <p&gt; if(regexku.test(td[i].firstChild.firstChild.nodeValue)){</p&gt; <p&gt; for(var j=0, e=td[i]; j<9; j++){</p&gt; <p&gt; e = e.nextSibling;</p&gt; <p&gt; }</p&gt; <p&gt; data[RegExp.$1 + "7"] = e.firstChild.firstChild.nodeValue;</p&gt; <p&gt; }</p&gt; <p&gt; }</p&gt; <p&gt; show();</p&gt; <p&gt;}, function(){</p&gt; <p&gt; var d = iframe[8].contentWindow.document;</p&gt; <p&gt; var td = d.getElementsByTagName("td");</p&gt; <p&gt; for(var i=0, l=td.length; i<l; i++){</p&gt; <p&gt; if(regexku.test(td[i].firstChild.firstChild.nodeValue)){</p&gt; <p&gt; data[RegExp.$1 + "8"] = int2str(td[i].nextSibling.firstChild.firstChild.firstChild.nodeValue);</p&gt; <p&gt; }</p&gt; <p&gt; }</p&gt; <p&gt; show();</p&gt; <p&gt;}, function(n){ return function(){</p&gt; <p&gt; var d = iframe[n+9].contentWindow.document;</p&gt; <p&gt; var td = d.getElementsByTagName("td");</p&gt; <p&gt; data[ku[n]+"9"] = 0;</p&gt; <p&gt; for(var i=0, l=td.length; i<l; i++){</p&gt; <p&gt; if((((td[i].firstChild || 0).firstChild || 0).nodeValue || "").indexOf("公明") == 0){</p&gt; <p&gt; data[ku[n]+"9"] += parseInt(td[i].parentNode.lastChild.firstChild.firstChild.nodeValue.replace(",",""));</p&gt; <p&gt; }</p&gt; <p&gt; }</p&gt; <p&gt; data[ku[n]+"9"] = int2str(data[ku[n]+"9"]);</p&gt; <p&gt; show();</p&gt; <p&gt;}}];</p&gt; <p&gt;function init(){</p&gt; <p&gt; for(var i=0; i<23; i++){</p&gt; <p&gt; var dl = document.createElement("dl");</p&gt; <p&gt; dl.appendChild(document.createTextNode("\n【" + ku[i] + "区における公明票】\n"));</p&gt; <p&gt; for(var j=0; j<10; j++){</p&gt; <p&gt; var dt = document.createElement("dt");</p&gt; <p&gt; var dd = document.createElement("dd");</p&gt; <p&gt; dt.innerText = id[j];</p&gt; <p&gt; dl.appendChild(dt);</p&gt; <p&gt; dl.appendChild(dd);</p&gt; <p&gt; }</p&gt; <p&gt; document.body.firstChild.appendChild(dl);</p&gt; <p&gt; }</p&gt; <p&gt; for(var i=0; i<32; i++){</p&gt; <p&gt; var e = document.createElement("iframe");</p&gt; <p&gt; iframe[i] = e;</p&gt; <p&gt; e.style.display = "none";</p&gt; <p&gt; if(i<9) var f = parse[i];</p&gt; <p&gt; else var f = parse[9](i-9);</p&gt; <p&gt; e.attachEvent("onload", f);</p&gt; <p&gt; e.src = url[i];</p&gt; <p&gt; document.body.appendChild(e);</p&gt; <p&gt; }</p&gt; <p&gt;}</p&gt; <p&gt;function show(){</p&gt; <p&gt; for(var i=0; i<23; i++){</p&gt; <p&gt; var dl = document.body.firstChild.childNodes[i];</p&gt; <p&gt; for(var j=0; j<10; j++){</p&gt; <p&gt; var dt = dl.childNodes[j*2+1];</p&gt; <p&gt; dt.innerText = id[j] + " " + (data[ku[i]+j] || "");</p&gt; <p&gt; dt.nextSibling.innerText = bar(data[ku[i]+j], j);</p&gt; <p&gt; }</p&gt; <p&gt; }</p&gt; <p&gt;}</p&gt; <p&gt;function int2str(num){</p&gt; <p&gt; return new String(num).split("").reverse().join("").replace(/(\d{3})/g,"$1,").split("").reverse().join("");</p&gt; <p&gt;}</p&gt; <p&gt;function bar(str, flag){</p&gt; <p&gt; str = str || "";</p&gt; <p&gt; if(str == "" || str.length < 5) return "";</p&gt; <p&gt; var num = parseInt(str.match(/\d+/)) + 1;</p&gt; <p&gt; var arrow = (flag == 2 || flag == 6 || flag == 9) ? " ←" : "";</p&gt; <p&gt; var _bar = new Array(num).join("|") + arrow;</p&gt; <p&gt; return _bar;</p&gt; <p&gt;}</p&gt; <p&gt;</script&gt;

</body&gt;

</html&gt;

2009-02-18

[] <中国語中文

[Resources] リンク集 Useful Link Resources

学習に役立つリンクを集めた言語学総合サイトなど。

  1. 無料中国語学習できるサイト初心者用) - NAVER まとめ
  2. Web site Title (サイト名)

[Learner’s Available Language/ Learning Language] 何語で何語を学ぶ Learning - by -

[Japanese/English] 日本語中国語を学ぶ Learning Chinese by Japanese

  1. 中国語辞書 by 楽訳中国語
  2. 楽訳中国語教室
  3. 中国語会話入門
  4. こんな時だから旅の中国語英語
  5. 中国語学サイト Virtual 中国語講座
  6. あいうえお中国語中国語学習・中国語講座
  7. 我愛中国語
  8. オンライン中国語学習-中国語とは?<中国情報局
  9. 中国語教材 - BitEx中国語
  10. 紅の中国語講座
  11. ピンイン(Pinyin)と漢字の壺
[Speaking] 会話
  1. 実用中国語講座--無料で学べる中国語学サイト--
Pronunciation /pinyin /発音 /声調
  1. 中国語発音塾:スペースアルク
  2. BB中国語発音
  3. 中国語の基本発音 / 中国語学サイト中文広場
  4. 中国語発音講座
  5. 中国語発音辞書(ピンイン検索) / 中国語学サイト中文広場
  6. 音韻配合表 | 発音編 | 中国語教材 - BitEx中国語

[Dictionary] オンライン辞書 Online Dictionaries

[Translation] 翻訳サイト Free Online Translation Sites

[Tool] 学習ツール Helpful Tools for Learning Language

  1. Chinese Perapera-kun: Chinese Popup Translator :: Firefox Add-ons
  2. ピンイン(pinyin)変換サービス -- 書虫
  3. [Ajax] 中国語漢字ピンインローマ字ルビ
  4. 中国語ピンイン変換の「どんと来い、中国語」にようこそ! | どんと来い、中国語
  5. 下载谷歌拼音输入法(google pinyin)

[Portal] 学習言語圏のポータルサイトテキストソース Portal Sites of Learning Language / Text Sources

学習言語ポータルサイトなど。

[RSS] RSS feeds

ツールやリンクアップデート更新中の教材紹介記事など。

[Podcast] ポッドキャストリスニング教材 Podcasts / Listening Resources

[Youtube] 動画学習 Movie Resources

  1. YouTube - cnstation's Channel

[Culture] 文化マナー・生活習慣 Culture / Manner / Life Style

冠婚葬祭言語圏生活で必要な情報など

[Set up] タイピング基礎、言語入力システムインストール Set up Tips for the Absolute Beginners.

  1. How to display/input Chinese? – Support - Learn Chinese

[Vocabulary] ボキャブラリー、語彙習得

[News] ニュースソース

[Extensive Reading] 読み物(小説ブログなど) Novels / Blogs

[Search Word] 検索ワード Words and Sites for Searching Resources

  1. ○○語 华语/華語、汉语/漢語、中文
  2. 学習
  3. 勉強 教学/教學
  4. 教育 
  5. 方法
  6. 教材
  7. 翻訳
  8. 辞書
  9. 便利
  10. 役立つ
  11. 文法
  12. 練習

[Tips] お役立ち記事など

[Just For Fun] おまけ Bonus Materials

[Unedited] 未編集備忘録 Transient stock/ Memorandum

  1. 中国語All About
  2. オンライン中国語学習-中国語とは?<中国情報局
  3. YellowBridge Chinese-English Dictionary
  4. Ting - Chinese English Dictionary Study Center 听-汉英词典学习中心 -Learn Language
  5. Tongue Twisters -- Ting -- Chinese - English Language
  6.  
  7. Best Chinese Websites
  8. China Daily Website - Connecting China Connecting the World
  9. Chinese Tool Bar
  10. 中国語例文検索中国語入力
  11. 日本作品_日本文学_日本作家_日本小说_日文小说_日文书籍_贯通日本
  12. 華流ドラマ 三国志 「連環計」 1-6 ネット中国語
  13. 中国語学習,質問掲示板:(中国語入力可能)-Mahoo!上海
  14. PTT批踢踢實業坊 - 首頁
  15. Chinese Forums
  16. MDBG Chinese-English dictionary
  17. 中国語】 お勧め参考書辞書を教えてください!≫ 【国際】 2ch世界ニュース (゚∀゚ )!
  18. 中文 - HSK-中国汉语水平考试
  19. ジュンク堂書店 聴読中国語
  20. 中国語」は存在しない!! 使用言から見た統一国家中国」の内実

語学学習サイト個人的リンクメモ / Lists of Language Learning Links)

http://anond.hatelabo.jp/20090101193230

2008-11-18

Science and Pseudo-Science

Science and Pseudo-Science (Stanford Encyclopedia of Philosophy)

http://plato.stanford.edu/entries/pseudo-science/

Meditating on consciousness : Article : Nature

http://www.nature.com/nature/journal/v456/n7219/abs/456170a.html

Dalai Lama gets go-ahead for meditation lecture : Nature

http://www.nature.com/nature/journal/v436/n7054/abs/4361071b.html

Science and religion in harmony : Nature

http://www.nature.com/nature/journal/v436/n7053/abs/436889a.html

Buddhism is no bar to an open mind. Is science? : Nature

http://www.nature.com/nature/journal/v436/n7053/abs/436912a.html

Religion and ScienceBuddhism on the brain : Article : Nature

http://www.nature.com/nature/journal/v432/n7018/abs/432670a.html

- 転職ならen
- 派遣ならen
2ページ中1ページ目を表示(合計:42件)