PHP上級者が集まるスレ
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/01/14(日) 16:53:46ID:???我こそはPHPプロフェッショナルだという方の書き込みをお待ちしております。
0263nobodyさん
2010/10/20(水) 20:55:04ID:???>PHP関係ないです。2chを開発または維持保守してる人達に聞いてください。
2chを開発してるのは誰ですか?
0266nobodyさん
2010/10/21(木) 09:22:12ID:???0267nobodyさん
2010/11/28(日) 01:08:02ID:F1JfXYTU日付情報はローカル時刻から世界標準時に変換してDBに保存して、
閲覧時には、閲覧者の国に合わせて時刻を変換するのがベストなんでしょうか?
0268nobodyさん
2010/11/28(日) 01:17:47ID:???0269267
2010/11/28(日) 01:30:18ID:F1JfXYTU0270nobodyさん
2010/11/28(日) 08:17:58ID:???ワールドワイドに展開してるということを分かってもらう必要がある
つまり日本時刻に統一することで、日本のサイトがワールドワイドに展開してると認識してもらう
0271nobodyさん
2010/11/29(月) 00:45:34ID:???YES。
閲覧時に変換すればいいだけの話で、
DBにはローカル時刻で保存しておいても問題無いよ。
というか、日本で開発するならデバッグのし易さ等も含めて、、
わざわざ世界標準時に変換して保存する必要は無いかと。
0272nobodyさん
2010/11/29(月) 00:56:52ID:???0273nobodyさん
2010/11/29(月) 01:10:16ID:???を使えば GET も POST もどちらの値も取れる様なので
GET や POST を使わずに
REQUEST 一本で行こうかと思っているのですが
何か問題(セキュリティー的な面で)はありますか?
0274nobodyさん
2010/11/29(月) 01:28:15ID:???0276nobodyさん
2010/11/29(月) 02:50:23ID:???PHPおよびDBのtimestamp型はグリニッジ標準時で格納されて、
表示のときにタイムゾーンにあわせて変換されてるの??
0277nobodyさん
2010/11/29(月) 02:52:33ID:???<img src="http://hoge.com/sendmessage?title=shine&body=aho">
なんてのが掲示板に書き込まれたらどうだろう?
CSRFチェックしてるならいいけど。
0278nobodyさん
2010/11/29(月) 03:13:43ID:???でも2038年までしか使えないのか。
案外すぐそこだと思ってしまう。
0279nobodyさん
2010/11/29(月) 03:15:47ID:???ええのかな。
>>277
ごめんなさい。
かりに投稿されてもサニタイジング処理するから
問題無い気もするのですが何が問題なのでしょうか?
0280nobodyさん
2010/11/29(月) 03:56:53ID:???0281nobodyさん
2010/11/29(月) 10:10:19ID:???DateTimeつかいなよ
あと「2038年問題」で検索すればわかるけど
過去に銀行でトラブルがありニュースになってる
php5.1までは対応が面倒だったが
php5.2以降ならDateTime使えば2038年問題はクリアできる
書式も柔軟で使いやすい
0282nobodyさん
2010/12/01(水) 01:33:56ID:fFpZquRWtry-finally-catchでも別にいいのでこんなの考えたけどキモいかなあ
$ex=NULL;
try{
…例外が出るかも知れない処理…
}
catch(Exception $ex){}
…finally処理…
switch(true){
case $ex instanceof HogeException:
…例外ハンドラ…
case $ex instanceof Exception:
…例外ハンドラ…
throw $ex;
}
0283nobodyさん
2010/12/01(水) 02:41:56ID:???0284nobodyさん
2010/12/02(木) 04:12:56ID:???どのようなユーザーDBを持っているのでしょうか?
まさかすべてのサービスを1つのDBに格納してるわけではないですよね?
サーバやDBを分けると、リレーションが作れないと思うのですが
管理しにくくなるデメリットをどう回避しているのでしょう?
たとえば、全IDの基本情報を持った1つのユーザーIDマスターテーブルがあって、
サービスごとのDBに、ユーザーIDマスターテーブルをコピーして、サービス用のカラムを追加した
各サービス用のユーザーIDテーブルがあって、マスターが更新されると、こちらも自動更新されるとか、
もしくは、各サービス用ユーザーテーブルには、マスターのIDが保存されていて
GET http://api.mydomain/?getUserDetail=username
とかHTTPリクエストでマスターテーブルから取得しているんでしょうか。
(いま利用しているレンサバは外部からのDB接続ができません)
できるだけスマートな実装を教えてください。
0285nobodyさん
2010/12/02(木) 04:44:43ID:???0286nobodyさん
2010/12/02(木) 04:53:14ID:???基本情報の保存されたマスターユーザテーブルと、
サービス別に必要なカラムを持ったテーブル(マスターユーザIDで紐付け)があるんじゃねーの?
マスターサーバに負荷がかかると思われるが、
それはハードウェア的に分散してるものだと思われる。
0287nobodyさん
2010/12/02(木) 19:18:34ID:???0288nobodyさん
2010/12/02(木) 23:52:26ID:???だったら普通にレプリケーションしてるだけじゃないの
0289nobodyさん
2010/12/03(金) 01:32:27ID:???同じ処理を書きたくないからこそのfinallyじゃない?
>>284
レプリケーションとかDB直接接続もできるorしてるかも知れないけど、
少なくともそういうAPIは裏側で用意されてるはず。
他社製の物と連携すること考えるとDBMSが異なるサービスにも使えるようにしてると思う。
ポリシー上そのAPI介さないと(自社製でも)ユーザ情報にアクセスさせないとかは十分ありうるね。
で、レンサバという制限の元、何とか共有したいという話なら
使える物は何でも使って最も楽な方法でやればいいと思うよ。
例えばCronで定期的にユーザマスタcsvを子サービスにSSLで送りつけてもいいし。
ちなみにサービス別にユーザテーブル作る場合、全件は複製せずに
そのサービスを使ってる人のIDだけが入ってるというのが多い実装だと思う。
0290nobodyさん
2010/12/04(土) 00:41:28ID:???PostgreSQLだとDoctrine_Core::generateModelsFromDb()はできない?
確認したら
Import/Pgsql.phpの
$sql[ 'listTableColumns']のSQL実行してるみたいなんだけど
これが失敗してるんだよなあ
0291Perl忍者 ◆M5ZWRnXOj6
2010/12/05(日) 14:11:08ID:v423lubtPerl-casualのやつら
こいつらはやばいよネットヤクザだよ
だいたいのWEB業界 mixi,gree,ライブドア,google,yahoo,楽天など
牛耳ってるのもperl-casualのやつら
mixi事件のメルアド検索もperl-casualのやつらの工作
perl-casualのやつらはやばいよ
まじでこれは言える
perl-casualのやつらが日本のインターネット業界を支えている
これはマジで実話
0292被リンクサービスの決定版
2010/12/05(日) 18:43:27ID:07kW5KS8http://hibari.2ch.net/test/read.cgi/hp/1291304974/43
0293nobodyさん
2010/12/06(月) 01:02:20ID:???3万も払って、たった10ブログからのリンクだけ??
クソボロい商売だな。
俺一人で個人経営やっても、数日で1000ブログ以上作るシステム開発する自信あるぜ?
てかもう存在してるだろうけど。
0294nobodyさん
2010/12/06(月) 11:55:38ID:???問題はプロモーションだ。
0295nobodyさん
2010/12/08(水) 00:40:37ID:???smartyとか覚えきれなかったので
0296nobodyさん
2010/12/08(水) 00:51:42ID:???ってかSmartyだって素のPHPなんだが・・・w
0297nobodyさん
2010/12/08(水) 02:44:18ID:???フレームワークってのは使い方を覚えて初めて役に立つものだから
覚えることがデメリットになるくらいなら使わない方が無難な物ができると思う。
素のPHPだから一概に悪いなんてことないよ。
0299nobodyさん
2010/12/12(日) 06:49:26ID:k+72gwmMこれもいいよ、っていうツールはありませんか?
いまはWSHでやってて限界感じています。
0300nobodyさん
2010/12/12(日) 12:35:52ID:???0301nobodyさん
2010/12/17(金) 03:26:27ID:???PHPDocumentorでチュートリアルを生成すると文字化けが起こるんですけど、どなたか解決方法を知りませんか?
文字化けというより、不正な文字を「?」に置き換えてる感じで、日本語が全部「??????」で出力されます。
チュートリアル以外のドキュメントは文字化けを起こさないのですが。。。
0302nobodyさん
2010/12/17(金) 03:36:57ID:???すみません、解決しました。。。
Setup.inc.php の 733行目 にあった $ret = utf8_decode($ret); をコメントアウトしたら解決しました。
お騒がせしました。
0303nobodyさん
2011/01/02(日) 13:53:35ID:6H//G+jSPEARのコーディング規約でこんなの見つけたんだけど。
何でいけないんだろう。
unix系OSでphp使ってる人には身近なコメントだと思うんだけど、
(#)使っちゃいけないっていうのはただ単にWin系もしくは
入門者の人が見慣れてないから使うなってだけかな?
べつにPEARのコーディング規約をリファレンスにする必要は無いと思うし、
嫌なら別の規約を使えばいい話なのはわかってるんだけど、
「PHPでshell形式はいけない物」みたいな風潮が広まちゃったら嫌だなって・・・。
0304nobodyさん
2011/01/02(日) 15:03:30ID:???0306nobodyさん
2011/01/03(月) 21:50:57ID:???「するべきではありません。」っていうのがいかにも#をつかうのが良くないと言っているように見えるけど
多分must not beぐらいの意味だろう。
0307nobodyさん
2011/01/03(月) 22:35:35ID:???初心者のことを考えて//に統一するのもよい。
0308nobodyさん
2011/01/03(月) 23:45:21ID:???for($request as $key1 => $value1){
for($value1 as $key2 => $value2){
for($value2 as $key3 => $value3){
$result[$key3][$key2][$key1] = $value;
}}}
こんなイメージな多次元配列の次元位置を入れ替える方法を考えています
多次元配列の次元数が固定されていれば、
上のようなやり方でも大体行けるのですが、
n次元だった場合のいいロジックってないでしょうか
0309nobodyさん
2011/01/04(火) 00:00:56ID:???$result = array();
foreach ($request as $key => $value) {
if (is_array($value)) {
$result[$key] = test($value);
} else {
return array($key=>$value);
}
}
return $result;
}
0310nobodyさん
2011/01/04(火) 00:03:03ID:???0311nobodyさん
2011/01/04(火) 00:16:30ID:???0312nobodyさん
2011/01/04(火) 08:50:08ID:???最初に作る時にそうしておくか、使う時に対応するかのどっちかで大抵は済むし、
最悪でも最初に2種類構築すればいいし
0314nobodyさん
2011/01/06(木) 01:37:45ID:???n次元てことは再帰だろーなーと思うけど
array_keys()使う感じでできんかな。
0315nobodyさん
2011/01/06(木) 13:03:14ID:???まぁ自作関数ライブラリがあれば足りるケースがほとんどではあるが。
0319nobodyさん
2011/01/08(土) 00:51:52ID:???で、今バリデーションの案を抗争中な訳なんだが、
どんなソースコードになったら、見やすくて分かりやすいだろ?
$str = vali::post('text')->mbLength(0,256)->var();
みたいにJavaっぽく書けば、分かりやすいけど細かい設定は付けれない
$v_id = array('func'=>vali::alnum,'error'=>'どうたらこうたら');
$id = vali::post('text', $v_id);
と、Cake風の書き方すれば、細かい設定もしやすいからいろんな事が出来る
そんなわけで、どんなバリデーション作ったら使いたくなる?
0320nobodyさん
2011/01/08(土) 01:02:08ID:???var $VALIDATIONS = array(
'varname' => array(
'trim' => array(),
'ascii' => array(),
'unique' => array( '※すでに使われている名前です。'),
'blank' => array( '※必ずご記入ください。'),
'date' => array( '※正しい日時ではありません。'),
'range' => array(18,100, '※18から100の数字をご記入ください。'),
'length' => array( 0, 20, '※20文字以下でご記入ください。'),
'bytes' => array( 0, 40, '※40バイト以下でご記入ください。'),
'regex' => array('/^[a-z0-9\-\_]*$/i', '※英数字と -(ハイフン) _(アンダースコア) のみでご記入ください。'), //複数設定可??
'in' => array('OPTIONS', '※正しい選択肢ではありません。'), //複数または直接array??
'method' => array('model::method', '※正しい値ではありません。'), //うまいことやる!!
),
);
0321nobodyさん
2011/01/08(土) 01:22:31ID:???だいたいそんな感じになると思うけど
>trim
入力値の評価と修正が一緒にあるのは気持ち悪いかも
>unique
それはどっかDBとか見に行かなきゃいけないわけで汎用的にならないんじゃ?
>date
年月日が別のフィールドに分かれてたら3つフィールド名指定できる?
>blank
別のフィールドの値がXの時だけ必須入力とかはblankかmethodで対応できる?
0322nobodyさん
2011/01/08(土) 01:33:45ID:???>入力値の評価と修正が一緒にあるのは気持ち悪いかも
なるほど。ちょっと考えてみる。ちなみに「ascii」も全角→半角変換のつもりw
>>unique
>それはどっかDBとか見に行かなきゃいけないわけで汎用的にならないんじゃ?
まーねー。確かに規約で縛りすぎるのも気持ち悪い。しかし、どう代替しようか。
>>date
>年月日が別のフィールドに分かれてたら3つフィールド名指定できる?
柔軟な日時クラスがあるので、$varnameはymdのarrayでもsqlでもatomでもなんでもおk
>>blank
>別のフィールドの値がXの時だけ必須入力とかはblankかmethodで対応できる?
methodはなんでも屋のつもりだけど、確かに連動必須項目はテンプレ化してもいいかもね。
ただ、シンプルなテンプレ化の方法は少し考えねば…
0323nobodyさん
2011/01/08(土) 02:54:32ID:???0324nobodyさん
2011/01/08(土) 02:56:33ID:???配列&正規表現を工夫すればフレームワークじゃなくて
単なるクラス(か関数)でも用意できる。
0325nobodyさん
2011/01/09(日) 18:56:19ID:???>unique
わざわざ用意するまでもなく単にmethodでやればいいんじゃないかな?
削除フラグが立ってない中でユニーク…とかを考えると大掛かりになるし
>$varnameはymdのarrayでもsqlでもatomでもなんでもおk
$_POSTを丸ごと渡すんじゃなくて、
前処理として $ymd = array($_POST['hoge_y'], $_POST['hoge_m'], $_POST['hoge_d']); 的なコードが別途必要ということかな
>ただ、シンプルなテンプレ化の方法は少し考えねば…
必須(blank)に関するチェックに条件が付く場合が殆どで、
他フィールドの値に対して定数との==、!=比較ができれば当分困らないと思う。
'blank' => array(... /*必須にする条件→*/array('eq', 'OtherField', '1')) みたいな
>>323
このあたり既製品じゃ対応しづらい要望が顧客から入りやすい
0326nobodyさん
2011/01/09(日) 19:03:41ID:???0327nobodyさん
2011/01/09(日) 20:09:18ID:???> わざわざ用意するまでもなく単にmethodでやればいいんじゃないかな?
そんな気がしてきた。すげーしてきた(笑)。
> $ymd = array($_POST['hoge_y'], $_POST['hoge_m'], $_POST['hoge_d']); 的なコードが別途必要ということかな
いや、フォームの段階で <input name="hoge[year]"... な感じ。
uniqueとかblankとか、少し条件が複雑なものは汎用的な中間methodでも作って…とかやりだすと地獄を見るかな(笑)
0328nobodyさん
2011/01/10(月) 01:29:42ID:???汎用的かつ、書きやすい構文を考えるのは結構面倒だよね。
汎用性を追求し過ぎると、大抵は既存FWのバリデーターに近い形に落ち着いてしまう。
0329nobodyさん
2011/01/10(月) 17:22:39ID:???// {{{ requires
の {{{ って何ですか?
0330nobodyさん
2011/01/10(月) 17:42:06ID:???0331nobodyさん
2011/01/10(月) 17:47:29ID:???なにか、ドキュメント生成系で使われてるのかな?と思ったんですけど、そんなことはないみたいですね。
ありがとうございます。
0332nobodyさん
2011/01/10(月) 20:32:02ID:???http://www.emacswiki.org/cgi-bin/wiki/FoldingMode
0334nobodyさん
2011/01/12(水) 16:58:41ID:KnVXPSXC指定したユーザ(例えば testman )が呟いた内容を
テキストファイルに出力したいのですが
どの様に書けば良いでしょうか?
0335nobodyさん
2011/01/12(水) 19:48:32ID:???0336nobodyさん
2011/01/13(木) 17:17:41ID:???Twitter Stremaing API を使用して
指定ユーザの呟きを取得する部分が
分からないです。
※テキストファイルへの出力コードはわかります。
0337nobodyさん
2011/01/13(木) 18:23:45ID:???お前はとても上級者に見えないが。
0338nobodyさん
2011/01/13(木) 18:43:54ID:???初心者の私上級者の方教えて下さい。
0340nobodyさん
2011/01/13(木) 21:14:10ID:???PerlやPythonといった言語での解説サイトはありますが
PHPでの実装方法を解説したサイトが見つかりません。
0341nobodyさん
2011/01/13(木) 21:23:18ID:???0342nobodyさん
2011/01/14(金) 01:13:37ID:???俺もオレオレバリデータ作ったことがある。
ワンタイムトークン的なものつくるとかとか、確認画面用に、値をセッションに格納して読みだして〜とかの機能とか
設定したバリデートルールを使って、Javascriptのコードも生成させて、クライアントサイドでも
バリデート出来るようにしたりね。
最近は、jQuery使って、CakePHPのヘルパとかでバリデーションルールをJSONにした物から
クライアントサイドでのバリデーションも連動するようなものを、作りかけた。
まぁ、書き慣れない言語はソースが迷子になって困る。
0343nobodyさん
2011/01/14(金) 03:57:17ID:???を解決することの出来る勇者はいないでOK?
0349nobodyさん
2011/01/14(金) 13:30:20ID:???0350nobodyさん
2011/01/14(金) 13:32:44ID:???0351nobodyさん
2011/01/14(金) 19:36:01ID:???0352nobodyさん
2011/01/15(土) 03:30:50ID:???0353nobodyさん
2011/01/15(土) 04:22:53ID:???なんとかStreamingAPIを使用して
特定ユーザの発言を常にフックする方法を教えて下さい。
※上級者の方、宜しくお願いします。
0354nobodyさん
2011/01/15(土) 04:42:55ID:???HTTPプロトコル及びTCP/IPの基礎知識はあるかい?
PHPはCLI環境等で常駐させる事が可能かい?
>特定ユーザの発言を常にフックする方法を教えて下さい。
Twitter Streaming APIへ接続して、受信メッセージを順次ストリーミング処理するだけだが、
何が解らないのか解らない。
上記の基礎知識が無いなら説明しても理解出来ないだろうし、
基礎知識があるならAPIの仕様を読めば実装出来ると思うけど。
0358nobodyさん
2011/01/15(土) 18:10:38ID:???基本的なツイッターAPIの呼出方については分かるのですが
どうしても Streaming API を使用して特定ユーザのついーとを
取得する方法が分かりません。
もし宜しければPHPで実装した人のHPや、
コードを載せて頂けないでしょうか?
>>355 >>356
お前らみたいなクズには聞いていない。
0359nobodyさん
2011/01/15(土) 18:35:33ID:???0361nobodyさん
2011/01/15(土) 18:39:01ID:???Streaming APIはREST APIのように単純には処理出来ない。
OAuthとかの実装は済んでるかい?
0362nobodyさん
2011/01/15(土) 19:38:05ID:???■ このスレッドは過去ログ倉庫に格納されています