【PHP】下らねぇ質問はID出して書き込みやがれ 77
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/12/08(月) 01:27:39ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/
◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0652nobodyさん
2008/12/20(土) 13:01:48ID:???じゃやっぱりphp大規模WEBシステムには向いてない?って事でFA?
0653nobodyさん
2008/12/20(土) 13:14:13ID:???銀行系とか。
0654nobodyさん
2008/12/20(土) 13:20:06ID:???0655nobodyさん
2008/12/20(土) 14:00:27ID:???見たことないんだが・・
0656nobodyさん
2008/12/20(土) 14:02:38ID:???となると、実際問題Java一択になるわけだ。
PHPで開発してもJavaっぽい書き方になる事が多いので、PHPのメリットが活かせないし。
捌くリクエスト数が多い、という意味で大規模ならば、実行速度の面でやや不向き。
だけど、これははっきり言って誤差の範囲。DB方面とかUIの出来のほうがよほど影響が大きい。
ひたすらに画面数が多く、しかも互いに独立性が高い場合、phpはむしろ向いている。
0657nobodyさん
2008/12/20(土) 14:08:30ID:???0658nobodyさん
2008/12/20(土) 14:12:34ID:???if(!---){
return エラー処理A();
]
if (!---) {
return エラー処理B();
}
if (!---) {
return エラー処理C();
}
if(---){
return 通常処理A();
}else{
return 通常処理B();
}
ファウラーの『リファクタリング』「ガード節の導入」を参照。
即returnしちゃまずいっていうなら、即returnできるような形に処理を関数として切り出しておく。
こういう処理を振り分ける部分には、実際の処理内容は一切書かず、こういう風に判定ロジックだけを残したほうが見通しがスッキリする。
意味が分からなくとも、「ifの論理判定を逆転すれば、エラー処理を先に、通常処理を後に書ける」ってのは便利。
可読性が若干落ちるが、エラー処理って大抵数行で終わるしな。
最初のifに対応するelseが1画面に収まる範囲内に無いと、可読性が急激に落ちる。
0659nobodyさん
2008/12/20(土) 14:22:24ID:???0660nobodyさん
2008/12/20(土) 15:54:33ID:???0661nobodyさん
2008/12/20(土) 16:21:34ID:5J5Av4Jfweb開発の現場で使われることがphpとJavaが多いのは、
技術者の数を確保しやすいため。
マイナー言語だと、募集しても集まらないし保守の時も困る。
大規模案件でphpよりJavaが多いのは、一言で言えば安全だから。
大規模ということは、関与する技術者も多い。そして得てして混交玉石。
その中で一定の質を上げるには、型チェックが厳しくコンパイルレベルでエラーが検出できるなどの
メリットがあるJavaの言語仕様の方が向いている。
処理速度については、処理を速くする機構を使えば、Javaもphpも体して変わりない。
総括すると、大規模な案件は単価が高い。単価が高いからみんなやりたがるし、競争も激しい。
よって、「全体として」Javaの技術者の方がphpのそれよりも単価が高いし、技術力も高い。
あくまで、これは一般論。
0662nobodyさん
2008/12/20(土) 16:23:20ID:???0663nobodyさん
2008/12/20(土) 16:30:02ID:???Javaの人はしっかりしてる人が多いもんな。
V2Cの作者とか。
それに比べてphpはバカが多い
XOOPS CUBEやってるやつとか。
女性にストーカーして警察に呼び出されて
注意された連中って、あいつらくらいだろ?
0664nobodyさん
2008/12/20(土) 16:30:38ID:5J5Av4JfJavaの大規模案件を一回やってみれば分かるよ。
型チェックがあることが、どんなに有り難いことか分かるから。
オブジェクト思考がない奴が開発に入ると、どうしてその型が使っているか分からずに、
型でまず苦労するが。
0665nobodyさん
2008/12/20(土) 16:32:21ID:???0666nobodyさん
2008/12/20(土) 16:35:26ID:???型あり言語としてC、
型なし言語としてBASIC
をやってるから、説明しなくても通じるんだけどねー
0667nobodyさん
2008/12/20(土) 16:36:04ID:???web屋は馬鹿でもできるけど、ネットワークエンジニアは馬鹿じゃできない、
っていっていたけど、何?
web屋だって馬鹿じゃできないでしょ。ネットワークエンジニアがweb屋より優れている点って何?
0668nobodyさん
2008/12/20(土) 16:36:30ID:???今はどこも.NETだよ
0669nobodyさん
2008/12/20(土) 16:38:00ID:???するんですよ
0672nobodyさん
2008/12/20(土) 16:52:27ID:???「インターフェースの画面作るだけの人」
くらいの意味で言ってる
0673nobodyさん
2008/12/20(土) 17:45:16ID:???一言で言うと、静的型付け言語の方がルールが多く、ルールに沿った書き方しかできないようになっているから、
たとえばPHPのような動的型付け言語は、ルールを無視してstringを要求する関数にarrayを渡したりできるわけだが、
静的型付け言語で同じ事をしようとすると、普通はコンパイル時、最悪でも実行時にエラーになる。つまりそういうルール違反が出来ない。
「こういう変数を渡しましょうね」とコメントに書くより、特定の型のオブジェクトしか受け取れないようにした方が確実だろ?
そういう、言語レベルで他人に何かを強制する仕組みは、Javaのような静的型付け言語の方が圧倒的に強力。
まあ、その代償として、Hello, worldを出力するのにクラスが必要、みたいな大仰な事になるのだが。
動的型付け言語と静的型付け言語のプロジェクトの効率は、
「コーディング規約」「ファイル名などの命名規則」がないプロジェクトとあるプロジェクトくらい差がある。
小規模なプロジェクトなら無いほうが効率がいいが、関わる人数が増えてくるとこの差は致命的に効いてくる。
0674nobodyさん
2008/12/20(土) 17:45:38ID:pE0RX0hBphp5からサイトのヘッダーあたりが一発で取れる関数があったはずだが
なんだっけ?
0675nobodyさん
2008/12/20(土) 17:50:32ID:???発狂してんのか?
0677nobodyくん
2008/12/20(土) 18:31:55ID:tNhejazTこいつはmbstring関数のデフォルトエンコードなの?
それともphpの内部エンコードなの(ゼンドエンジン)?
→ttp://journal.mycom.co.jp/special/2004/php5/010.html
検索したがphpに内部エンコードなんてないとか書いてあって・・・
ttp://hain.jp/index.php/tech-j/2007/02/13/p125
よく分からなくなってきてパニックです。
誰か教えてくれよん〜
0678nobodyさん
2008/12/20(土) 18:43:53ID:???ちなみに俺は>656=>673。>661は別の人。
タイプヒンティングは本質的に「静的型付け言語っぽい考え方」なんだよ。
だから、そういう方向に進んでも「静的型付け言語の劣化版」にしかならない。
そもそも、どんな型でも渡せる、型に縛られないというのが動的型付け言語の強み。
タイプヒンティングの考え方は、その強みを消してしまう。
たとえばPHP6では戻り値のタイプヒンティングが有効になるのだが、開発者はこれを「It's not PHP way」と断言している。
できないとは言っていない。>656でも書いたが、あくまで「(言語として)向いていない」っていうのが俺の主張。
Javaが依存性注入とかチマチマやってる中、動的型付け言語はダックタイピングで型に縛られない書き方が出来るし、動的にクラスを生成する事だって自由自在。
それはそれで強み。それで開発効率が上がる事だって多いし、自分ひとりならその方が快適。
だけど、その柔軟性が足かせになる事だってある、って話。
ま、開発言語が自由に選べるなんて幻想だけどな。俺も32bitOSじゃ扱えない額扱うPHPシステム開発やった事あるし。
0679nobodyさん
2008/12/20(土) 18:53:18ID:???どちらもできるんなら用途に応じて使い分ければいいじゃん
0680nobodyさん
2008/12/20(土) 19:23:22ID:VXNsKNQ00682nobodyくん
2008/12/20(土) 19:53:44ID:tNhejazT0684nobodyさん
2008/12/20(土) 20:12:49ID:???2行目には同意。
そもそも、静的型付けってのはできる事を制限する思想だから、「できる事が多い」は別にメリットではない。
という前提で。宗教論争になるから機能比較はしたくないんだが。
・引数の型によって同名の別関数を呼ぶ、という事ができない。
同様に、引数の数だけが違う同名の関数を定義できない。
・整数をタイプヒントに使用できない。
これは早晩解決されるだろうが。
・配列などの宣言時に、中に入る型を指定できない。
・そもそも実行時までタイプヒントに違反している事を検出できない(関数がどの型を返すか明示できないため)。
PHPしか触れてない奴にも容易に想像が付くものだとこの程度。
総じて「型があるからこそ使える便利な機能」は抜け落ちている傾向がある。
これは言語仕様として型を動的に扱う以上、埋めようがない差異。埋めたら別言語になってしまうし、性能がガタ落ちする。
恐らくこういうのが「It's not PHP way.」という発言の真意だろう。
型を使ってプログラマを制約するのは、PHPの得意分野ではないし、PHPの目指す方向でもない。
0685nobodyさん
2008/12/20(土) 20:24:58ID:???強力という言葉が果たして合うかはわからないが信頼性は高いよ
静的型付けはコンパイル時と実行時の2回チェックが行われる
対して動的型付けは実行しないと問題点がわからない
もう1つ静的型付けにすることによって最適化が図れる
型の定義というのはメモリの確保であるから
書き手が意識して書くことができる
0686nobodyさん
2008/12/20(土) 20:27:47ID:???目指す方向について詳しく。
0687nobodyさん
2008/12/20(土) 20:37:13ID:???0688nobodyさん
2008/12/20(土) 20:38:15ID:???どういう観点から明らかなの?
0690nobodyさん
2008/12/20(土) 21:26:13ID:???型が静的だと、変数が確保する領域のサイズがコンパイル時に分かる。
動的だと実行時まで分からない。後は分かるな。
静的言語に静的型付けを持つものが多い理由のひとつがここ。
0691nobodyさん
2008/12/20(土) 22:17:13ID:???初心者がしつもんできなくなるだろうから
さまざまな言語仕様について熱く語る闘技場
http://pc11.2ch.net/test/read.cgi/php/1228709756/
0692nobodyさん
2008/12/20(土) 23:10:55ID:5BlIZK9J<tr>
<td>id</td>
<td>name</td>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_rsLocations['id']; ?></td>
<td><?php echo $row_rsLocations['name']; ?></td>
</tr>
<?php } while ($row_rsLocations = mysql_fetch_assoc($rsLocations)); ?> ←ここ
</table>
”ここ”って行がエラーを吐きます
mysql_fetch_assoc(): 4 is not a valid MySQL result resource in
なぜでしょうか・・・・
0693nobodyさん
2008/12/20(土) 23:14:33ID:???$rsLocationsの中身を確認しましょう
$rsLocationsの中身がMySQLが返すリソースじゃないから
怒られてます
0694規模について質問した者
2008/12/20(土) 23:28:26ID:???なるほどある程度の大規模システムでもphpでパフォーマンスを損なう事無く
構築する事は可能なんですね。
ヤフー関連のWEBシステムでそんなに思いと感じる事は無いですしね。
>>java と phpを比較して解説してくれた人
@ITのなんちゃって記事を書いている人より分かり易かったです。
それはそうと、自分は.NETマンセーな人間なので、個人的にはWEBシステムは
ASP.net一本にしてくれればなぁ、と思ってます。
まぁ、WEB系+クラサバも全て.NET一本にしてしまえば色々とメリットがあると思うんですけどね。
俺の好きな言語の順序
ASP.net >> php >> Java
0695nobodyさん
2008/12/20(土) 23:29:43ID:???環境構築にもコード書くにもやたら面倒そうな印象だったんだが
0696nobodyさん
2008/12/20(土) 23:30:47ID:???0699nobodyさん
2008/12/21(日) 00:02:39ID:???if($hen != "")ってあるんですけど、これって=の時?それとも=で無い時?どっち?
!って良く解らないです。ビックリしてるわけじゃないと思いますが。
0703nobodyさん
2008/12/21(日) 00:19:31ID:???詳しく教えて欲しい。
0704nobodyさん
2008/12/21(日) 00:22:14ID:???0705nobodyさん
2008/12/21(日) 00:26:01ID:???処理のパフォーマンスを重視するなら、あり得ない選択。
0706nobodyさん
2008/12/21(日) 00:39:16ID:???0708nobodyさん
2008/12/21(日) 01:24:50ID:???PCユーザの何割がWindowsを使ってると思ってるんだ。↑
0709nobodyさん
2008/12/21(日) 04:20:18ID:???0710nobodyさん
2008/12/21(日) 04:21:40ID:???0712nobodyさん
2008/12/21(日) 05:40:08ID:???0713nobodyさん
2008/12/21(日) 05:53:02ID:???a=b これは代入
0714nobodyさん
2008/12/21(日) 06:10:13ID:???* セキュリティに関する大切な警告なのに、マニュア
ルの後ろの方に書かれている。サンプルコードより前
じゃないと気がつかない人が多そう
* 「なぜ使用してはいけないか」が書かれていない。
なので、対策を読んでも OK の場合と NG の場合の
区別がつかない
0715nobodyさん
2008/12/21(日) 06:25:36ID:???これ結局、どっちなの?
PHPでは、一部のマルチバイトエンコーディングにお
いて、addslashes()を使っているとSQLインジェクション
が発生しかねないよ、はてどうしましょう、というお話。
Chris Shiflett 氏が仰ることでは、addslashes()は使わず
に、mysql_real_escape_string()を使いましょうと。そこへ I
lia Alshanetsky 氏が、いやいや、mysql_real_escape_stri
ng()でも駄目で、Prepared Statements を使いましょう、
と言っているような気がします。一方日本でもこの現象
について触れている文書があります。
0716nobodyさん
2008/12/21(日) 06:28:44ID:???Shift_JISを素直に使っている限り、
addslashes()は駄目(Chris Shiflett氏)、
mysql_real_escape_string() は駄目(Ilia Alshanetsky氏)、
一部のPrepared Statements すらも駄目(id:jrofbyrsさん)、
ということらしいです。
0717nobodyさん
2008/12/21(日) 08:40:48ID:???大手のケータイサイトでさえEUCで作って鯖でシフトジスに変換して出力してんのに
貧乏鯖でしか借りれない人達はがんばってシフトジス(笑)で年越してくださいな
0718nobodyさん
2008/12/21(日) 10:34:46ID:???SET NAMES sjis;等を実行した後に使うと
2バイト目の0x5C文字がエスケープされない
0719nobodyさん
2008/12/21(日) 10:35:19ID:???わけではない」というものがあるが、これは断定できない
ことを言うときの逃げ口上だってことを知っておいたほう
がよい。マスコミには許されるが、技術文書には許されな
い。技術文書なら、前提を明らかにした上でその前提の
上で何が言えるかを書くのであって、例外があるなら例
外を書くようにする。
セキュリティの解説で「どれも完全じゃないからいろいろや
っておこう」という表現が出てきたら、その著者は信頼す
るに値しないと判断してよい。書いてる当人がわかってい
ないから、問題を整理できていないから、そういう表現が
出てくる。
0720nobodyさん
2008/12/21(日) 10:37:30ID:???さっさとやめろ
0721nobodyさん
2008/12/21(日) 10:42:23ID:???0722nobodyさん
2008/12/21(日) 10:44:07ID:???0723nobodyさん
2008/12/21(日) 10:51:21ID:pZUxQjb7UTF-8は、全ての文字が3バイト掛かるんだよ。
サーバー負荷が大きいサイトなら、メモリーが圧迫されることになる。
インフラも含めてプログラミングするのは、真のプログラマーだろ。
そういう視点が抜けているように思うが。
0725nobodyさん
2008/12/21(日) 10:54:28ID:pZUxQjb7今更、EUCって何だよ。俺はCCNPだぞ。もっと考えろよ。
0726nobodyさん
2008/12/21(日) 10:57:12ID:???0727nobodyさん
2008/12/21(日) 12:10:15ID:???>技術文書なら、前提を明らかにした上でその前提の
>上で何が言えるかを書くのであって、例外があるなら例
>外を書くようにする。
これの根拠が示されておらず勝手に決め付けてる。
0728nobodyさん
2008/12/21(日) 12:30:16ID:VviuyWm4$a=" aaa ";
$b=" bbb ";
$c= $a.$b;
print $c;
print "<br>";
trim ($c);
print $c;
?>
なんかこれで、
全然トリムされてないんだけど???
0730nobodyさん
2008/12/21(日) 12:52:07ID:VviuyWm4あ、、、
代入しないとダメなんだ、、、
ありがと
0731nobodyさん
2008/12/21(日) 12:52:30ID:???0732nobodyさん
2008/12/21(日) 13:06:16ID:VviuyWm4basenameって日本語使えないの?
0733nobodyさん
2008/12/21(日) 13:07:05ID:???0735nobodyさん
2008/12/21(日) 15:28:56ID:???やっぱ不景気でカツカツな人が多いいの?かわいそうに。
0736nobodyさん
2008/12/21(日) 15:33:09ID:???0737nobodyさん
2008/12/21(日) 15:41:06ID:???0740nobodyさん
2008/12/21(日) 16:04:30ID:???0743nobodyさん
2008/12/21(日) 16:09:21ID:???http://info.2ch.net/guide/faq.html#C5
0745nobodyさん
2008/12/21(日) 22:25:03ID:BLufKTBe同じクラスのメンバやメソッドにアクセスする際に $this->
はつけた方がいいのでしょうか?
class A {
private $hoge;
private function foo() { }
public function bar() {
$hoge = 'なんたらかんたら';
$this->hoge = 'なんたらかんたら'; /* どっちいいの? */
foo();
$this->foo(); /* どっちがいいの? */
}
}
0746nobodyさん
2008/12/21(日) 22:37:42ID:???0748nobodyさん
2008/12/22(月) 01:52:46ID:???あと日本語のマルチバイトが3バイト使うってだけでUTF8の全てが3バイトじゃないよね?
信頼性と容量どっちを優先するかは好きにすりゃいい。
自分でよりよい案も出せず文句つけるだけの723には無理だけど。
0749nobodyさん
2008/12/22(月) 02:19:57ID:???帳票出力アプリ任せてたのに、出力データ取得条件が絶対に1件も持ってこない条件だった。
引継ぎ資料には「帳票が出ないのは整合性の取れたデータが無いためです。アプリの動作は問題ありません」
エビデンスのデータで再テスト行っても出力されず。
技術が無くて作業が進まず、それを隠すために逃げたんだろうな
0751nobodyさん
2008/12/22(月) 05:37:08ID:???「ニューヨークにはピアノの調律師は何人いるか?」
って質問されたら、答えられなくて発狂するの?
■ このスレッドは過去ログ倉庫に格納されています