PHP関連の書籍 第7版
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/12/27(火) 11:18:37.05ID:Px3be9gShttp://kohada.2ch.net/test/read.cgi/php/1213919075/901-1000
よくわかるPHPの教科書,実践マスター PHP+MySQL PHP5対応,PHPレッスンブック―PHP5対応
上記が前スレで割りと評判良かったです。
*プログラミング未経験者向け
0711nobodyさん
2012/08/18(土) 16:48:37.56ID:5NhPHYfCPHPなら比較的簡単に覚えたり難しいプログラムを覚える事無く色々出来るってのはPHP容認派の意見。
それなりに時間かけてプログラムを覚えたPHP否定派からすれば素人でも簡単にプログラムを作動させる事が気に入らないだけ。
0712nobodyさん
2012/08/18(土) 16:59:50.77ID:???他の言語でも見られるものがほとんどなのに、
他の言語で役に立たないというのは理解できないを通り越して
間違ってるだろうな。
0713nobodyさん
2012/08/18(土) 17:21:04.15ID:???PHPと同一の変数スコープをもつ言語を教えてください。
PHPとJavaのオブジェクト指向機能の違いについて教えて下さい。
0715nobodyさん
2012/08/18(土) 17:25:26.68ID:???PHPでシングルトンを実装する場合と
マルチスレッド言語でシングルトンを実装する場合の効果の違いを教えて下さい。
0716nobodyさん
2012/08/18(土) 18:01:08.11ID:???その中にすでに他の言語でも応用が出来る言葉が出てるな
変数、スコープ、オブジェクト指向。
これらは他の言語にもあることだ。
PHPと同一の変数スコープ?
PHPはクラス内ではデフォルトでローカルスコープだよ。
>>714
> PHPの関数を覚えると他の言語の習得にどのようなメリットがあるのか教えてください。
関数という考え方は、他の言語でも応用ができる考えだ。
printf、join、split、機能だけでなく名前まで同じ物だってたくさんある。
文字列関数なんかC言語由来の名前が多い。
>>715
シングルトンというのも、他の言語でも使われる用語だ。
PHPでもマルチスレッド言語でもシングルトンの効果自体は一緒だ。
ただしマルチスレッドで使う場合は、スレッドセーフになるようにしなければいけない。
よくあるコードはスレッドセーフになってないものがあるから注意しろよ。
0717nobodyさん
2012/08/18(土) 18:02:13.37ID:???PHPと他の言語で共通する考え方は多い。
0718nobodyさん
2012/08/18(土) 18:19:17.62ID:???PHPと同一の変数スコープをもつ言語を教えてください。
PHPの標準関数を覚えると具体的にどの言語の習得に役立ちますか?
スレッドセーフはシングルトンクラスのみ気をつければよいのでしょうか?
あえてそこで強調する意味を教えて下さい。
PHPでもマルチスレッド言語はメモリ空間が違うと思いますが、
どのようにシングルトンの効果は同一になりますか?
0719nobodyさん
2012/08/18(土) 18:27:36.64ID:???フピーとかプフプーとかのほうがいいでしょ?
0720nobodyさん
2012/08/18(土) 19:57:58.78ID:???> PHPと同一の変数スコープをもつ言語を教えてください。
それはなんのために聞いてるのですか?
そもそも言語ごとに変数スコープは微妙に異なり、
どれも完全に同じものはありません。
複数の言語を扱ったことがあればわかることです。
そんなことも知らないのですか?
0721nobodyさん
2012/08/18(土) 20:01:10.28ID:???> スレッドセーフはシングルトンクラスのみ気をつければよいのでしょうか?
> あえてそこで強調する意味を教えて下さい。
誰もそんな事はいっていません。
マルチスレッドでシングルトンとあなたが言い出したから
それならスレッドセーフを気にする必要があるといっただけです。
それ以外は全く同じです。そもそもシングルトンというのは
インスタンスの生成数を一つ(または固定数)に制限するときに使うもの。
インスタンスの生成数を制限するという効果・・・・を求めているときに使うものです。
「効果が同一」ではなく「同一の効果」を得るために使うのです。
だから効果が同一になって当たり前です。
0722nobodyさん
2012/08/18(土) 20:37:33.52ID:v7ZflPc6何が気に食わないのかわからない。
これって英語(C)が使えると他の国の言葉(JAVA等)覚えるのに
文法が似てるから便利だけど日本語(PHP)で十分って人も居るのと一緒。
0723nobodyさん
2012/08/18(土) 21:49:35.52ID:???横槍ですが、
PHPの場合は外部キャッシュシステムを利用しないと
マルチスレッド言語のシングルトンの同一の効果には近づけないかと。
0724nobodyさん
2012/08/18(土) 21:53:56.47ID:???俺はWebデザインなんでhtmlとcssぐらいしか分からんのだが、外注先はphpでやってるよ
0725nobodyさん
2012/08/18(土) 21:55:31.05ID:???PHPのオブジェクト指向で不足している機能を教えてください。
JavaあるいはC++、Objective-C、
SmallTalkのいずれかの言語と比較してお答えください。
0727nobodyさん
2012/08/18(土) 22:53:39.49ID:???0728nobodyさん
2012/08/18(土) 23:22:44.77ID:???意味がわかっているなら答えてください。
マルチスレッド言語のシングルトンの効果とは
どんな効果かということを。
0729nobodyさん
2012/08/18(土) 23:24:28.72ID:???さっきからマルチスレッドって強調しているけど、
PHPが特殊なんじゃなくて、シングルトン自体はどの言語でも同じで、
マルチスレッドの場合においてのみ何かが違うってことじゃないか。
0730nobodyさん
2012/08/18(土) 23:32:23.29ID:v7ZflPc6とてもじゃないが俺にはCやjavaは敷居が高過ぎる。
またそれを勉強する時間も無い。
正直HTMLから初めてPHP(MySQL)とJavaScriptでアップアップ。
その上見栄えの良いHP作ろうと思えば画像系のソフトも使いこなす必要が有る。
こんなのは暇の有る学生のうちからやらないと。
社会人でも畑違いの仕事してる人間にはこれが精一杯どころか出来ない人が
大半だろ?
0731nobodyさん
2012/08/19(日) 00:13:20.71ID:???PHPのシングルトンは意味ないかもって危険マークのところに書いてあるだろ。
英語版や日本語版はページがぶっとんでいるのでポルトガル語でどうぞ。
http://php.net/manual/pt_BR/language.oop5.patterns.php
0732nobodyさん
2012/08/19(日) 00:17:35.57ID:???http://php.net/manual/de/language.oop5.patterns.php
0733nobodyさん
2012/08/19(日) 00:27:59.90ID:???0734nobodyさん
2012/08/19(日) 01:25:43.19ID:???それで?
話がずれてるな。
他の言語でも応用できる知識になるかどうかだろ?
なってるじゃん。シングルトンの話してるんだからさ。
0735nobodyさん
2012/08/19(日) 01:30:22.38ID:???ようするにPHPは優れてるってことだよ。
http://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%82%A2%E3%83%BC%E3%83%89%E3%83%BB%E3%83%8A%E3%83%83%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%BB%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3
シェアード・ナッシング・モデルは通常は、大規模な状態(state)データを中央に集中的に
格納するシステムと対比されるが、これはデータベースやアプリケーションサーバなど、
その他の単一競合箇所のいずれについても適用される。
例えばDBMSの場合は、Oracle Databaseはシェアード・ディスク・モデル(DISK共有モデル)であり、
DB2の分散系におけるPE、EEE、DPFなどはシェアード・ナッシング・モデルである。
シェアード・ナッシング・モデルは現在では、Webのシステムにおいて頻繁に議論されるが、
この概念はウェブ以前からあり、UCバークレー大学のマイケル・ストーンブレーカーは1986年の
データベース論文においてこのキーワードを用いており、それ以前でも用いられた可能性もある。
シェアード・ナッシング・モデルはスケーラビリティの観点からウェブ開発において頻繁に用いられる。
Google社が例示したように、純粋なシェアード・ナッシング・モデルシステムは廉価なコンピュータを
追加することによりほぼ無限にスケールすることが可能である。それはシステムの処理速度を低下させる
単一のボトルネックが無いからである。Google社はこれをshardingと呼んでいる。
典型的なシェアード・ナッシング・モデルシステムにおいては、データは異なるデータベースの多数の
ノードに分散されるか(この場合ユーザやクエリごとに異なるコンピュータを割り当てる)、
あるいは何らかの同期化プロトコルを用い、全てのノードにアプリケーションデータのコピーを持たせる形をとる。
これはdatabase shardingと呼ばれるものである。
0736nobodyさん
2012/08/19(日) 01:35:56.56ID:???たとえばクラウドのようなサーバーが複数あるシステムを思い浮かべれば良い。
それぞれが単体で動く=共有しているリソースがない=シェアードナッシング
なのでオブジェクトを一つにすることが不可能ということ。
もちろん、一つのシステム(リクエスト)内では一つにできるから
オブジェクトの作成にコストがかかるようなものを、
シングルトンにする意味はある。
でもシステム全体で一つには出来ないし、
スケールアップのことを考えるとしない方がいい。
これはPHPにかぎらず、シェアードナッシングなアーキテクチャを
持つものすべてに当てはまる話。
ということで、他の言語でも応用できる知識でした。
0737nobodyさん
2012/08/19(日) 02:09:34.71ID:???ここは書籍のスレなんだが、何回注意しても湧いてくる
スレタイ理解できないやつは、phpとかCとか言わなくて
いいから他いけよ迷惑なんだよ
0738nobodyさん
2012/08/19(日) 02:12:06.45ID:???ttp://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/
0739nobodyさん
2012/08/19(日) 04:25:19.29ID:tBu2WfHi0740nobodyさん
2012/08/19(日) 06:42:25.01ID:???ただそれだけの事。
0741nobodyさん
2012/08/19(日) 07:49:50.10ID:82eA3w0Rでも売れる理由は良く分かるよ。
ただそれでPHPが使えるように成るかは別の話だけど。
0742nobodyさん
2012/08/19(日) 08:07:15.46ID:???0743nobodyさん
2012/08/19(日) 10:51:59.75ID:yq4xxco/具体的な例をあげるとそこそこ分かりやすいと言われてる「実線マスター」でも
単独では分かり難いけど「PHPの教科書」を併用して使うとかなり分かりやすい。
ちなみにPHPを覚える時にSQLの本を進めてる人が居るけどやりながら
覚えようとするなら絶対にPHPより後回しにするべき。
はっきり言ってまったく別の次元の事だよ。
0744nobodyさん
2012/08/19(日) 11:55:50.50ID:???どちらかというと、内容を批判しながら読める中上級者向け。
0745nobodyさん
2012/08/19(日) 11:58:36.58ID:???> Cやjavaから始めた人間からすればPHPは新たに覚える事が他の言語より多いから使い辛い。
新たに覚えることは他の言語でも同じぐらいの量しかないと思うが?
何を新しく覚えた?
0746nobodyさん
2012/08/19(日) 12:36:36.90ID:hIIxTTnj0747nobodyさん
2012/08/19(日) 12:44:56.59ID:???他にあるのか?
むしろPHPの方が、他の言語より覚えることが少ないだろw
0748nobodyさん
2012/08/19(日) 13:38:11.21ID:???0749nobodyさん
2012/08/19(日) 13:41:34.06ID:???0750nobodyさん
2012/08/19(日) 13:53:38.25ID:???じゃあ、シングルトンの意味は?
0751nobodyさん
2012/08/19(日) 14:23:07.41ID:???違うだろw
元々はPHPの知識が、他の言語に応用が効くかという話
> 712 名前:nobodyさん[sage] 投稿日:2012/08/18(土) 16:59:50.77 ID:???
> PHPを構成している言語機能はPHP特有じゃなくて、
> 他の言語でも見られるものがほとんどなのに、
> 他の言語で役に立たないというのは理解できないを通り越して
> 間違ってるだろうな。
0752nobodyさん
2012/08/19(日) 14:28:53.43ID:???すっかり、PHPとは関係ない話になったなw
デザインパターンの話じゃないか。
言語関係なくマルチプロセス環境ではシングルトンは複数できてしまうもの
シングルトンというのは、同一のプロセス内において
オブジェクトが一つという定義であり、
PHPでも同一のプロセス内でオブジェクトを一つにできる。
0753nobodyさん
2012/08/19(日) 14:51:34.07ID:???馬鹿なバグの原因になる。
当たり前だが、ネットでころがっている他の言語の説明は鵜呑みにするな。
0755nobodyさん
2012/08/19(日) 14:59:30.71ID:???シングルトンって基本はシングルスレッドだぞ。
マルチスレッドの場合、通常のシングルトンコードに
マルチスレッド対応のコードを追加するが。
お前、実はわかってないだろw
0756nobodyさん
2012/08/19(日) 15:04:22.48ID:???http://www.02.246.ne.jp/~torutk/cxx/designpattern/singleton.html
> GoF本の実装の問題
>
> GoF本の実装例のコードが抱える問題点を列挙します。
>
> マルチスレッド安全性がない
> if (instance == 0) { // (1)
> instance = new Singleton; // (2)
この人も書いているように、オリジナルのシングルトンは
マルチスレッド対応されてない。
0757nobodyさん
2012/08/19(日) 15:07:45.57ID:???言ってる意味があべこべだな。
マルチスレッド言語では、シングルスレッド言語のような感覚で
シングルトンは使うな。馬鹿なバグの原因になる。
これが正解じゃないか。
PHPはシングルスレッド言語だから、安心して使っていい。
0759nobodyさん
2012/08/19(日) 15:31:34.09ID:???PHPではシングルトンが複数できるがマルチスレッドの場合は事情が違うから確かにそのとおり。
PHPのシングルトンはマルチトンだからな。
0760nobodyさん
2012/08/19(日) 15:35:25.86ID:???リソース共有しないPHPでは意味ないかもって。
0764nobodyさん
2012/08/19(日) 16:05:36.48ID:???0765nobodyさん
2012/08/19(日) 16:12:16.59ID:???0766nobodyさん
2012/08/19(日) 16:14:18.21ID:???いや、だから、プロセスが違えば
他の言語のシングルトンも、マルチトンになるんだよ。
嘘だと思ってるならやってみな。
CLIアプリでいいから、Javaでシングルトン作って、
そのプログラムを2つ以上実行して、
複数のプロセス間で、オブジェクトが一つなのか
複数なのか確認してみ。
0767nobodyさん
2012/08/19(日) 16:14:50.14ID:???外部キャッシュ使える環境ならPHP使う意味も無い。
0768nobodyさん
2012/08/19(日) 16:15:07.22ID:???> お前、馬鹿じゃないの?シングルトン、公式サイトですら否定しているだろ
シングルトンの何を否定してるの?
シングルトンが意味ないってこと?
そりゃシングルトンの批判だろ?
0770nobodyさん
2012/08/19(日) 16:18:09.36ID:???PHPっていうか、マルチプロセス全般の話だよね。
マルチプロセスでシングルトンを使うには
確かに外部キャッシュシステムなんかを使えばいい。
memcachedとか。
でもそうすると、すべてのプロセスで共通のリソースを使うってことで
その部分がシングルポイントになりボトルネックとなる。
それではスケールしないシステムになってしまう。
つまり、シングルトンという仕組みそのものが、
時代遅れな設計。
そしてそのシングルトンを否定しているPHPは
将来を見据えた言語ということ。
0771nobodyさん
2012/08/19(日) 16:19:14.02ID:???0773nobodyさん
2012/08/19(日) 16:23:35.75ID:???だよね。
シェアードナッシングだからリソースを共有しない。
だからたとえ同じデータでも毎回データベースなどに取りにいけばいいし。
共有データのために一回のアクセスで済むところを何千回もアクセスすればいいんだよ。
0774nobodyさん
2012/08/19(日) 16:26:19.75ID:???シェアードナッシングを実現している
PHPの代表的なアプリとしてはOpenPNE。ついでWordPressなどがある。
これらは次世代型のシェアードナッシングアプリであるな。
0775nobodyさん
2012/08/19(日) 16:26:56.63ID:???0776nobodyさん
2012/08/19(日) 16:29:37.91ID:???0777nobodyさん
2012/08/19(日) 16:33:11.05ID:???データベースへ超絶アクセスする。
これをシングルトンで解決しようと考える奴はイケてない。
なぜなら負荷分散のために、アプリサーバーを
複数台構成にした時、シングルトンでは解決できないからだ。
つまりシングルトンは何も意味が無い。
これがシングルトンが否定されてる理由の一つ。
0778nobodyさん
2012/08/19(日) 16:33:54.08ID:???0779nobodyさん
2012/08/19(日) 16:34:10.09ID:???そのとおりだよ。
だからリソース共有のために
memcachedなどを使う。
シングルトンでは、リソース共有といっても
複数のスレッドで共有するのが限界で、
プロセスが違っていたり、サーバーが違っていたりした場合
共有できないからね。
0780nobodyさん
2012/08/19(日) 16:38:08.51ID:???シェーアードナッシングってキツイくね?
君がいうアプリサーバーを複数台にしても
OpenPNE君とか悲惨だもんね。
複数台構成にする規模だとPHPを使う意味はないからね。
0781nobodyさん
2012/08/19(日) 16:39:25.06ID:???おかしな議論するんじゃない。
0782nobodyさん
2012/08/19(日) 16:40:37.40ID:???> memcachedを使える環境であればPHP使う意味はない。
その根拠が示されるまでは>>781は無視して良い。
0783nobodyさん
2012/08/19(日) 16:40:48.72ID:???0784nobodyさん
2012/08/19(日) 16:42:04.98ID:???> シェーアードナッシングってキツイくね?
きつかったとしてもやらないといけない。
シングルポイントがあれば、そこが一つダウンしただけで
サービス全体が停止してしまう。
最近のクラウドサービスは、シェーアードナッシングか
それに近い状態になってる。
0788nobodyさん
2012/08/19(日) 16:45:15.07ID:???そのFacebookがPHPを使って
言語よりもキャッシュサーバーが重要って言ってるんだが。
キャッシュがスケーラビリティに大きな役割を果たしている
http://www.publickey1.jp/blog/09/facebook.html
0789nobodyさん
2012/08/19(日) 16:46:14.19ID:???PHPはout of the questionだってさ。
facebookの元お偉いさんが言っているよ。
0790nobodyさん
2012/08/19(日) 16:46:49.60ID:???まずどこにボトルネックがあるか調べる。
アプリ側か、データベース側か、
アプリ側であれば単純に増やせば良い。
0793nobodyさん
2012/08/19(日) 16:52:30.43ID:???そんなことは調べているし、実践している。
しかしつまるところ、「シェアードナッシング」だから遅いことがわかっている。
アプリが原因とも言えるがより深い原因はリソース共有できない言語に由来するよね。
こういう場合はどうしたらいい?
0794nobodyさん
2012/08/19(日) 16:52:36.29ID:???あぁこれだな
Large-Scale Data Processing with Hadoop and PHP (DPC11 2011-05-21)
http://www.slideshare.net/Wombert/largescale-data-processing-with-hadoop-and-php-dpc11-20110521
11. SOME NUMBERS? Facebook ? Google ? New data per day:
? Data processed per month: 400 PB (in 2007!) ? 200 GB (March 2008)
? Average job size: 180 GB ? 2 TB (April 2009) ? 4 TB (October 2009) ? 12 TB (March 2010)
0795nobodyさん
2012/08/19(日) 16:54:21.18ID:???今は基幹はJava系みたいですよ。
facebookはご存知のHadoopの開発元のひとつでもありましたから。
0796nobodyさん
2012/08/19(日) 16:55:54.48ID:???0797nobodyさん
2012/08/19(日) 16:56:47.28ID:???0798nobodyさん
2012/08/19(日) 16:58:02.99ID:???> しかしつまるところ、「シェアードナッシング」だから遅いことがわかっている。
まずお前の勘違いから正していこうか。
あべこべなことを言ってるから話が進まない。
一言で言えば、シェアードナッシングは高速なGoogleが採用している設計
http://ja.wikipedia.org/wiki/%E3%82%B7%E3%82%A7%E3%82%A2%E3%83%BC%E3%83%89%E3%83%BB%E3%83%8A%E3%83%83%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%BB%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3
シェアード・ナッシング・モデルはスケーラビリティの観点からウェブ開発において頻繁に用いられる。
Google社が例示したように、純粋なシェアード・ナッシング・モデルシステムは廉価な
コンピュータを追加することによりほぼ無限にスケールすることが可能である。
それはシステムの処理速度を低下させる単一のボトルネックが無いからである。
Google社はこれをshardingと呼んでいる。典型的なシェアード・ナッシング・モデルシステムにおいては、
データは異なるデータベースの多数のノードに分散されるか(この場合ユーザやクエリごとに異なるコンピュータを割り当てる)、
あるいは何らかの同期化プロトコルを用い、全てのノードにアプリケーションデータのコピーを持たせる形をとる。
これはdatabase shardingと呼ばれるものである。
0799nobodyさん
2012/08/19(日) 16:59:29.02ID:???基幹じゃないだろ。
LinuxがCだから基幹がCと言ってるようなもんだ。
PHPが基幹で、Hadoopを呼び出しているだけだよ。
0800nobodyさん
2012/08/19(日) 16:59:43.00ID:???OpenPNEってアクセスするだけで相当なSQLを発行するって知っている?
デフォルトでインストールしてデバッグモードで調べるといいよ。
複数台構成にしてもあれだけSQLが多かったらどうにもならないよ。
0802nobodyさん
2012/08/19(日) 17:01:11.50ID:???0804nobodyさん
2012/08/19(日) 17:02:29.71ID:???0806nobodyさん
2012/08/19(日) 17:03:53.71ID:???■ このスレッドは過去ログ倉庫に格納されています