のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,663,146人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレ【PHP】下らねぇ質問はここに書き込みやがれ 71

php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
651 : nobodyさん - 2008/08/07(木) 03:17:10 ID:??? (+20,+29,-1)
>>649
なにがおすすめですか?
652 : nobodyさん - 2008/08/07(木) 03:54:19 ID:??? (+0,-30,-91)
最初に…、長文になってしまってすいません。

SQLインジェクションを防ぐために、SQL文を生成する際、「escape_string」を使用しています。
しかし、人為的なミスで「escape_string」を使用せずにSQL文を生成していまうことがあります。
そこで、mysqliクラスを完全にくるんだクラス(OrgDBクラス)を1つ作成して、DBに対する操作を
OrgDBクラスを介して行うようにしました。
654 : nobodyさん - 2008/08/07(木) 03:55:55 ID:??? (-27,-30,-282)
~OrgDBクラス(抜粋)~
class OrgDb {
 private $p_oConnect;
 private $p_sSql;
 public function OrgDb_connnect() {
   $this->p_oConnect = new mysqli(…);
   if ($this->p_oConnect->connect_errno !== 0) {
    return false;
   }
   return true;
 }
 public function OrgDb_makeSql($sSql) {
  for ($nCnt = 0; $nCnt < 10; $nCnt++) {
   $sSql = str_replace("<" . $nCnt . ">", pack("C", $nCnt), $sSql);//☆1ココ
  }
  $this->p_sSql = $sSql;
 }
 public function OrgDb_setSql($nIndex, $sData) {
  $this->p_sSql = str_replace(pack("C", $nIndex), $this->p_oConnect->escape_string($sData), $this->p_sSql);
 }
 public function OrgDb_execSql() {
  for ($nCnt = 0; $nCnt < 10; $nCnt++) {
   if (mb_strpos($this->p_sSql, pack("C", $nCnt)) !== false) {//☆2ココ
    return false;
   }
  }
  return $this->p_oConnect->query($this->p_sSql);
 }
}
655 : nobodyさん - 2008/08/07(木) 03:57:31 ID:??? (-27,-30,-100)
~OrgDBクラスを使用する~
$oDb = new OrgDb();
$oDb->OrgDb_connnect();
$oDb->OrgDb_makeSql("select * from table where key = '<0>'");
$oDb->OrgDb_setSql(0, "クライアントから送信されたデータ(要サニタイジング文字列)");
$oRes = $oDb->OrgDb_execSql();
656 : nobodyさん - 2008/08/07(木) 03:58:37 ID:??? (-27,-30,-226)
やっていることは、SQL文を生成する際、
 1.静的なSQL文を定義する。この際、動的に設定される部分を"<N>"と記述する。
 2.動的に設定される部分を実際のデータで置換する。
 3.生成されたSQL文を実行(発行)する。
と、いう流れです。

上記ソースの通り、発行されるSQL文はOrgDbクラス内に閉じ込めてあり、動的に設定される部分は、全て、
OrgDb_setSqlメソッドを介して設定されるので、必ず、サニタイジング(escape_string)されるようになっています。
※やり方はいろいろあると思うのですが、このやりかたしか思いつかなかったです...orz...


~質問~
「☆1」部分と「☆2」部分なのですが、クライアントから送信されないデータを
置換対象としたかったので、pack関数を使用して、バリナリデータ(制御コード)としましたが、
この方法で何か問題が発生することはあるでしょうか?
※ちなみに、置換対象の種類は10個と決めています。

長文、本当にすいません;;
657 : nobodyさん - 2008/08/07(木) 04:00:13 ID:??? (+23,+29,-21)
>>653
早々のご意見ありがとうございます。
諸事情により、PDOは使えないです。
使えるのであれば、PDOでやりたかったです;;
658 : nobodyさん - 2008/08/07(木) 04:00:35 ID:??? (+21,+28,-4)
諸事情って?
659 : nobodyさん - 2008/08/07(木) 04:06:25 ID:??? (+33,+28,-1)
>>658
システム的な理由ではなく、もろもろの事情です;;
すいません、上手く説明できません;;
661 : nobodyさん - 2008/08/07(木) 04:11:06 ID:??? (+30,+29,+0)
>>659
だからそれを聞いてる
662 : nobodyさん - 2008/08/07(木) 04:18:12 ID:??? (-17,+29,-38)
>>660
ご指摘ありがとうございます。
実際のソースには記述しております。
ありがとうございました。

>>661
「PDOを使わずに…」という条件で作成するというのがテーマでして…。
ただ、それだけです;;
※サーバには、PDOもインストールされているので、使用可能です。
663 : nobodyさん - 2008/08/07(木) 13:17:46 ID:??? (+26,+29,-39)
他環境がどうとかじゃなくて使わないってだけの条件って・・・
宿題ですか?
664 : nobodyさん - 2008/08/07(木) 13:28:22 ID:??? (+25,+29,-5)
>>662
そんな糞条件はやぶり捨てろ。
宿題ですか?
665 : nobodyさん - 2008/08/07(木) 13:28:55 ID:??? (+26,+29,-15)
自分に課したテーマだろ
俺もプログラム能力向上にたまにやる
ただ人に聞いてるようじゃ本末転倒
666 : 652 - 2008/08/07(木) 14:58:02 ID:??? (-22,-30,-260)
>>663,664
宿題ではないです^^;

>>665
ソノ通りです。自分で決めただけです。
おっしゃるとおり、自分で解決しないとダメですよね。
一通り、動作することは確認したのですが、pack部分がどうしても自信がなくて…

そもそもなのですが、今回の問題(質問)は、mysqliやPDOといったことではなくて、pack関数や文字コードについてなのです。

※ここから、憶測と過去の記憶で話をしますので、間違いが大量にあるかと思います。

~私が認識している「pack関数」の仕様~
pack関数を使用して、アスキーコードの制御コード部分をバイナリ文字列で作成しています。
 <今回のソースでは以下の部分で使用しています>
 $sSql = str_replace("<" . $nCnt . ">", pack("C", $nCnt), $sSql);//☆1ココ
 $this->p_sSql = str_replace(pack("C", $nIndex), $this->p_oConnect->escape_string($sData), $this->p_sSql);
 if (mb_strpos($this->p_sSql, pack("C", $nCnt)) !== false) {//☆2ココ

例えば、pack("C", 1)とした場合、pack関数は、SOH(ヘッディング開始)の制御コードをバイナリ文字列で作成します。
もっと、簡単に言ってしまえば、"01"というバイナリデータを作成します。
667 : 652 - 2008/08/07(木) 14:58:37 ID:??? (-27,-30,-181)
~私が認識している文字コード(SJIS)について~
今回、pack関数を使用して何をしたかったのかというと、
 置換対処となる位置へ制御コードを設定する
です。

なぜ、置換対処となる位置へ制御コードを使用したのかというと、記憶の片隅で
 制御コードと重なる文字(文字コード)はない
と、あったからです。

具体的にいうと、SJISでは、
 あ:82 A0
 い:82 A1
    :
と、文字コードが定義されています。ここで、(XX部分は任意)
 XX 01
もしくは、
01 XX
という文字コードは存在しない。
※SJISの文字コードは、「81 40」から始まるので問題ない。
668 : 652 - 2008/08/07(木) 14:59:42 ID:??? (-26,-29,-146)
~再度、質問~
以上のことを踏まえて、
 サニタイジング対象となる文字(クライアントからポストされるデータ)には、制御コードが含まれていることはない
という前提で、置換対処となる文字に制御コードを使用することにしました。
1.上記
   「~私が認識している「pack関数」の仕様~」、「~私が認識している文字コード(SJIS)について~」
  で、間違っている/誤って解釈している箇所はないでしょうか?
2.今回、置換対象部分に制御コードを使用しましたが、他の値を使用する場合(置換対象部分)どういった値が考えられるでしょうか?

以上、みなさんのお知恵を拝借できればありがたいです。
※説明するのが下手ですよね;;。すいません;;。
669 : nobodyさん - 2008/08/07(木) 15:14:08 ID:??? (+21,+28,+0)
いい加減にしてくれ
670 : nobodyさん - 2008/08/07(木) 15:24:17 ID:czWOVMJR (+52,+28,-32)
100万件の文字情報を処理するのに、
40分くらい掛かるのですが、これが普通でしょうか?

CPUは3GHzのものを使っているため、
理論的には一秒間に300億件処理できると思っていたのですが、
300億どころか400件ちょっとです。

その差がどこで出るのかちょっと分からないです。
671 : nobodyさん - 2008/08/07(木) 15:30:13 ID:??? (+13,+10,-18)
>>670
クロック数をなんだとおもってるんだwwwww
一クロックに10件ってw
672 : nobodyさん - 2008/08/07(木) 15:31:31 ID:??? (+28,+29,+0)
>>670
いくら何でもひどすぎる
673 : nobodyさん - 2008/08/07(木) 15:32:14 ID:??? (+27,+29,-4)
その処理内容がわからんと判断できん。
674 : nobodyさん - 2008/08/07(木) 15:32:39 ID:??? (+27,+29,-27)
> 理論的には一秒間に300億件処理できる

すげー理論だなw
むしろその理論の根拠を知りたい
675 : nobodyさん - 2008/08/07(木) 15:36:28 ID:??? (+33,+29,-8)
>>670の使ってる鯖は全くロスのない画期的なシステムを積んでいるw
676 : nobodyさん - 2008/08/07(木) 15:36:55 ID:czWOVMJR (+53,+29,-72)
一秒間に300億件処理できると書いてあったのは、
日経ソフトウェアという雑誌です。
日経が出しているということで信頼できると情報ソースだとは思うのですが。

処理内容についてですが、100万件の文の中に特定の文字列が含まれていないか
検査して、含まれていたら、文字をくっつけたり削除したりする処理です。

最新のCPUを買ってきたので、あまりにも遅すぎて絶句しました。
677 : nobodyさん - 2008/08/07(木) 15:37:13 ID:??? (+20,+16,-17)
>>670
ディスクが遅すぎるんだ。
SSDに変えろ
678 : nobodyさん - 2008/08/07(木) 15:38:34 ID:??? (+31,+28,-9)
>>676
お前の言う1処理と、CPUの単位で使う1処理がまったく違うんだよ。
679 : nobodyさん - 2008/08/07(木) 15:38:34 ID:??? (+33,+29,-19)
>>676
日経は正しいけどCPUがパチモン掴まされたんだよ。
680 : nobodyさん - 2008/08/07(木) 15:39:09 ID:??? (+34,+29,-36)
くだらないレスしてる奴って面白いと思って書いてるのか?

>>670
スレ違い
681 : nobodyさん - 2008/08/07(木) 15:40:28 ID:??? (+34,+29,-27)
>>676
お前のプログラムに無駄な処理が多すぎるから遅いんだよ
CPUの所為にするんじゃありません
682 : nobodyさん - 2008/08/07(木) 15:40:57 ID:z7k1C/ZX (+37,+29,-114)
>>676
とりあえずGは10億だよ

細かく説明しても分からないだろうから大雑把に言うけど(大雑把だからある意味間違ってるけど)

一秒間に30億処理できるのは、
CPUに与える命令の処理を数段階に分けたうちの一段分の処理です。
SQLで処理させるときはいろいろな命令を組み合わせているので1クロックではすみません。
683 : nobodyさん - 2008/08/07(木) 15:45:59 ID:??? (-22,-25,-11)
まあそのくらいの処理で400件/秒は普通じゃね?
結果の入出力もあるんでしょ?
684 : nobodyさん - 2008/08/07(木) 15:52:30 ID:czWOVMJR (+25,+29,-15)
すみません、私が勘違いしているようですね。
処理件数としては>>683さんがおっしゃられるように妥当な線なんでしょうね。
分かりました。お騒がせしました。
685 : nobodyさん - 2008/08/07(木) 15:59:50 ID:??? (+22,+29,-3)
無知って罪だよな
686 : 本質論 - 2008/08/07(木) 17:18:34 ID:??? (+38,+30,-98)
お前たち、昼間からそんな余裕ぶっていると職失うぞw

証券取引の電算化で、場立ちの職員は失業した。
自動改札口の登場で、切符きりの職員も失業した。
ICチップの登場で、数年後にはレジのババも失業する。
そして、自動プログラミング機の登場で、お前等も失業する。
687 : nobodyさん - 2008/08/07(木) 17:18:47 ID:??? (+27,+29,-13)
「では、立ち上げてください」

ガタッ
「はい。立ちました」
688 : nobodyさん - 2008/08/07(木) 17:27:25 ID:??? (+28,+30,-28)
まぁまぁ。誰でも最初は無知でしょ。
彼はここで質問して恥をかくことで、前に進んでいるわけだから
全然オーケーでしょう。

…そのシステムを明日納品というなら話は別ですが。
689 : nobodyさん - 2008/08/07(木) 17:47:39 ID:??? (+27,+29,-15)
自動プログラミングとかマジ最高じゃん
作業効率がぐんと上がる
でも、生きてる間にできるだろうか・・・
690 : nobodyさん - 2008/08/07(木) 18:10:53 ID:jtfieMzI (+24,+29,-13)
自動プログラミング機があったところで、やっぱり理論的に仕様を構築しなきゃいかんのだろ?
691 : nobodyさん - 2008/08/07(木) 18:12:17 ID:??? (+19,+26,-15)
そこで自動仕様構築機ですよ
692 : nobodyさん - 2008/08/07(木) 18:17:54 ID:??? (+25,+27,-38)
PHPは保守案件多そうだから定年まで後30年は安泰だろw
693 : nobodyさん - 2008/08/07(木) 18:26:41 ID:??? (+20,+27,-16)
そこで自動保守機ですよ
694 : nobodyさん - 2008/08/07(木) 18:30:28 ID:??? (-22,-15,-11)
自動保守機の保守は?
695 : nobodyさん - 2008/08/07(木) 18:57:01 ID:??? (+43,+30,-149)
>>686
> 証券取引の電算化で、場立ちの職員は失業した。
> 自動改札口の登場で、切符きりの職員も失業した。
> ICチップの登場で、数年後にはレジのババも失業する。
> そして、自動プログラミング機の登場で、お前等も失業する。

うーん。失業するようなのは職業の内容によって決まると思うな。

仮に同じ能力を持った人がいたとして、
二人になれば、こなせる作業の量も二倍になるという
ような内容の仕事、つまり作業内容がほぼ同じで並列実行可能な
単純作業は自動化できるから失業するんだよ。

だからこれプログラミングには当てはまらないのね。
696 : nobodyさん - 2008/08/07(木) 18:59:18 ID:??? (+33,+29,-16)
>>695
うおぉ、目が覚めるような達観な意見だわ。
暑い時にも、こういう論理的に物事を観察できる人と仕事したいわ。
697 : nobodyさん - 2008/08/07(木) 19:02:53 ID:??? (+33,+30,-62)
基本的に、IT化によって単純作業は減るだろ。
でも、IT化によって増える単純作業もある。
たとえば、有害サイトを監視する人たち。大量の人力を投入している。
結局、仕事の内容が変わるだけ。だから、路頭に迷うのはその変化について行けない人。
つまり適者生存。自助努力で生存はできるんだよ。だから、ワーキングプアなんていう人は単に努力が足りない怠け者。
698 : nobodyさん - 2008/08/07(木) 19:13:06 ID:??? (+21,+28,-3)
いま酷い自作自演をみた
699 : nobodyさん - 2008/08/07(木) 19:29:18 ID:??? (+33,+29,-34)
プログラミングだって同じ能力の開発メンバーが二つあったら同じ期間で二倍のソフト作れるだろwwwwww
半分の期間で一本つくるとかは無理だけどさ
700 : nobodyさん - 2008/08/07(木) 19:52:55 ID:nCGT/HD5 (+40,+2,-77)
ファイルからの読み込みに関して質問があります。
freadなどによる読み込み処理は基本的にアトミックでしょうか?非アトミックでしょうか?
fwriteに関してはマニュアルに書いてあるのですが、読み込み系の関数については書いてなく、またそれに触れた記述のあるサイトも見つからないので困っています。
どなたかわかるかたいたらよろしくお願いします。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について