【PHP】下らねぇ質問はここに書き込みやがれ 5at TECH
【PHP】下らねぇ質問はここに書き込みやがれ 5 - 暇つぶし2ch743:デフォルトの名無しさん
16/06/12 17:51:52.67 SdG9GRKe.net
他力本願こそPHPerとして恥だぞ

744:デフォルトの名無しさん
16/06/12 18:52:27.13 Y/PMYUAu.net
>>734-735
あるファイルをphpで有効にLOCK_EXしても別プロセスで起動したviには何も影響しないと認識していたが?

だからphp以外をexecしてロックが生じてもphpの記述には関係がない=fclose前のLOCK_UNに関係ない
ある.php内であるいはexecで呼び出した.phpでファイルロックが起きてもmax_execution_timeの縛りで強制終了すればロックは解ける
ゆえに「ロック残り」とやらで掴みっぱなしになることはそうそうない、そう認識していたんだが

745:デフォルトの名無しさん
16/06/12 18:52:38.31 QKWa7och.net
で、お前らぴーえいちぱーって読んでんの?

746:デフォルトの名無しさん
16/06/12 19:03:36.38 4xmbllsr.net
>>741
flock によるロックって別のプロセスからのファイルアクセスを禁止するわけじゃないから。
同時にロックを取得できないだけであり、それによって「ロックを取得しようとするプロセス同士」を排他するわけ。
ロックを取得しようとしないプロセスはロックされたファイルであろうとアクセスし放題だよ、例えば vi とかね。
Windows では他のプロセスからのファイルアクセスを禁止することもできるけどな。

747:デフォルトの名無しさん
16/06/12 19:06:30.53 QKWa7och.net
ピーチクパーチク、ピーエイチパーチク
ヨー、チェケラッチョー

748:デフォルトの名無しさん
16/06/12 19:15:10.09 Y/PMYUAu.net
>>743
あれviってflock使ってなかったっけ?まあいいや他のなんでもいいんだが
本旨はphpにおける明示的flock($lock,LOCK_UN)の必要性だろう、それが他プロセスとどう関わるんだ
結局どういうときにLOCK_UNしないと「ロック残り」が起こるんだ

749:デフォルトの名無しさん
16/06/12 19:35:01.71 4xmbllsr.net
>>745
>>726 の実験コードで再現できるよ。
デッドロックのメカニズムはこう。

まず a.php でファイルを開き、ロックする。
そして system で b.php を開く(別に PHP である必要は無い)。
この段階で b.php は、a.php が開いていたファイルの fd(ファイルディスクリプタ)の複製を継承する。
b.php は継承した fd とは別に自前でファイルを開き、ロックしようとする。
ロック済みのファイルに対してロックしようとするから、これはブロックする。
この間 a.php は処理が進み、fclose が走る(*1)。
プログラマーの意図としてはここでロックも自動的に解放されると思っているが、このロックを共有する fd を b.php が閉じずに持っているので、まだロックは解放されない。
a.php は終了するがロックは解放されないので、b.php のブロックが解けることも無くデッドロックする。

このスクリプトをデッドロックさせずに走らせるためには、*1 の前に LOCK_UN するのが一案(PHP においては唯一の手段)。
これにより b.php は継承した fd を開かれたまま持ってはいるが(ある種のリソースリーク状態)、ロックは a.php により解放されるので、b.php が自分で開いた fd に対するロックを取得でき、処理が進行する。
もう一案は、PHP では実現不能だと思うけど、b.php が走り出した直後に継承した fd を閉じること。
PHP からは継承した fd の存在が見えないし、fd を知ることができたところで何もできないから詰むけど、fd を操作できる処理系ではそれが可能だし、むしろ常套手段。

ようは、何かのファイルをロックしたまま子プロセスを立ち上げ、その子プロセスが同じファイルのロックを取得しようとするかなり限定されたケースでは LOCK_UN が必要。

750:デフォルトの名無しさん
16/06/12 19:43:46.46 4xmbllsr.net
ついでにもう少し、>>746 のようなケースであれば、5.3.2 よりも前のように flose で LOCK_UN してくれりゃいいじゃんと思うかもしれない。
多分 PHP の設計者もそう思って、そうしていたんだろう。
でも pcntl_fork なんてことができるようになると、それじゃ問題が出るケースにぶち当たる。

通常 fork してもやっぱり親が持っていた fd は子プロセスに継承されるし、pcntl_fork に関して言えば継承された fd はファイルハンドルの形で PHP から操作できる状態で見えている。
通常マルチプロセスの処理は、親が持っていた fd はじめいろいろなものを継承してしまうので、子にとって不要なものを閉じてしまうというのが最初にやること。
親がロックを取得した fd をそのまま親と子で共有するなんてことはめったに無いから、親なり子なりでその fd を閉じる処理を書くことになる。
この時 LOCK_UN が自動的に走るようになっていると、そのロックを必要としている方のプロセスが持つロックまで解放され、非常に具合が悪い。
だから fclose で勝手に LOCK_UN するなんてのは余計なお世話以外の何物でもない。

というわけで、fclose で LOCK_UN しないようになったと、こういうことだよ。

751:デフォルトの名無しさん
16/06/12 19:49:34.59 4xmbllsr.net
>>747
> 親がロックを取得した fd をそのまま親と子で共有するなんてことはめったに無いから、親なり子なりでその fd を閉じる処理を書くことになる。
ちょっと誤解を招くかもしれないから捕捉。

親がロックを取得した fd をそのまま親と子で共有するなんてことはめったに無いから、
その fd はどちらか一方にとっては不要であるから、そちらのプロセスでは最初にその fd を閉じる処理を書く。

752:デフォルトの名無しさん
16/06/12 19:58:20.79 p2hTIoUv.net
>>745
プロセスが生きている間においては「ロック残り」が発生するが、どうせ死ぬから問題ないというスタンスだとすれば、
max_execution_timeを0にした場合や、(初期値が0である)CLIの場合は生き続けるよ。

753:デフォルトの名無しさん
16/06/12 20:37:09.64 SRdEl8UG.net
HTMLとは
ハイパー テキストマークアップ ラングアゲ

754:デフォルトの名無しさん
16/06/12 21:40:22.72 ETS5lku+.net
ランゲージ

755:デフォルトの名無しさん
16/06/13 09:32:27.21 Mgx0zrpD.net
今phpをステップ実行できるデバッガで便利なのってどのあたり?
ステップごとにそれぞれの変数の中身がどうなってるか簡単にわかるとうれしい

756:デフォルトの名無しさん
16/06/13 13:49:19.06 XIduanRK.net
array_filterで関数に他の引数も与えたい場合はどうしたらいいですか?

757:デフォルトの名無しさん
16/06/13 14:23:37.32 TYgkMCrQ.net
>>753
コールバックにオブジェクトメソッドを指定して、オブジェクトに他のパラメータを持たせるとか?

758:デフォルトの名無しさん
16/06/13 14:36:57.48 TYgkMCrQ.net
あんまやったことないけど、クロージャでやる方が簡単なのかね?

function my_array_filter(array $input, $param)
{
return array_filter(
$input,
function($var) use($param) {
return $var <= $param;
}
);
}

$a=array(1,2,3,4,5);

print_r(my_array_filter($a, 2));
print_r(my_array_filter($a, 4));

<実行結果>
Array
(
[0] => 1
[1] => 2
)
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)

759:デフォルトの名無しさん
16/06/13 15:15:41.61 XIduanRK.net
>>755
phpもクロージャ出来るようになってたんですね
ありがとうございます

760:デフォルトの名無しさん
16/06/13 16:04:29.44 poUAr+t+.net
Array→アレイ→アレ?→あれれ?
という発想が頭から離れなくて頭が基地外になりそうなんだけどプログラミングは向いてないよね?
ちなみに仕事はPG全く関係なくて異業種の作業員

761:デフォルトの名無しさん
16/06/13 18:18:38.79 Mj2HqjrQ.net
おでかけですか~?

762:デフォルトの名無しさん
16/06/13 18:53:18.04 I48wzFwG.net
おまえら、平和でいいな。

763:デフォルトの名無しさん
16/06/14 00:37:10.95 e/1BDrQk.net
>>757
電気屋さんとか電波屋さんと仲良くなれそう

764:デフォルトの名無しさん
16/06/14 02:04:02.36 vpCPShaK.net
配列をオブジェクト指向的に使うための組み込みクラスは何故ないのでしょうか?

765:デフォルトの名無しさん
16/06/14 03:26:27.75 E92ohJVI.net
ないんですか?

766:デフォルトの名無しさん
16/06/14 03:29:28.98 sdXnBDtj.net
>>761
当初はあまりオブジェクト指向じゃなかったという点と、
現状の array をそのままオブジェクトとして見なす変更をしてしまうと array を関数の引数に取る場合に他のオブジェクトの扱い(array はコピー渡し、オブジェクトは参照渡し)と一貫性が取れなくなるから、今更どうにもできないってところじゃね。

それより、関数が返す array を直接添え字でアクセスできないのをなんとかして欲しい。
ようは explode(',', $str)[1] みたいにやりたいわけだが、この改修ならほとんど問題無くできそうな気がするけどな。

767:デフォルトの名無しさん
16/06/14 03:34:56.83 pjhL6UK+.net
list(,$test)=explode(',', 'test1,test2,test3');
こうするのがせいぜいだが、これで妥協するか自分自身が開発に参加して改修するかだな

768:デフォルトの名無しさん
16/06/14 03:48:41.99 E92ohJVI.net
できないんですか?

769:デフォルトの名無しさん
16/06/14 05:18:59.07 jLlAbvBE.net
ArrayObjectとArrayIteratorならあるぞ

770:デフォルトの名無しさん
16/06/14 09:39:15.99 1o9WExv+.net
>>761
実装済みの>>766に加えて自前クラスでもArrayAccessインターフェイスを実装すれば配列のように扱えるクラスを実装出来る

771:デフォルトの名無しさん
16/06/14 10:25:21.42 ekIyBZy6.net
PHPStorm を優勝期限切れで使い続けてる人います?
バージョンアップできなくてつらくない?

772:デフォルトの名無しさん
16/06/14 11:58:51.69 vpCPShaK.net
ありがとうございます
ArrayObjectってあったんですね
探し方が足りなかったようです
やはり関数言語的な書き方をしようと思うと、生配列だと物足りなくなってきますね
ただArrayObjectも、関数言語的なメソッドは実装されてないようです
eachやmapやreduceなど
既にそういうの書いてる人はいるでしょうけど、
標準実装してほしいところです

773:デフォルトの名無しさん
16/06/14 12:23:57.32 nAMCA7y/.net
>>763
explode(',', $str)[1] については
いつまでも古いバージョンのPHPつかってんじゃねーよってことだが。

774:デフォルトの名無しさん
16/06/14 17:44:21.80 vpCPShaK.net
class ArrayObjectEx extends ArrayObject {

public function map($func){
foreach ($this as $key => $value){
$this[$key] = $func($value,$key);
}
return $this;
}

}

とりあえずmapを作ろうと上みたいな感じにしたのですが
インスタンスのmapを呼び出すとundefined functionと言われます
親クラスにないメソッドを追加することは出来ないのでしょうか?
だとしたらそんな制限は意味が不明すぎますが・・

775:デフォルトの名無しさん
16/06/14 19:05:12.07 4d00OzM8.net
検証すんのめんどくさいから全部コード乗っけてくれる?ハゲ

776:デフォルトの名無しさん
16/06/14 19:26:39.01 E92ohJVI.net
mapに何を渡したんですか?

777:デフォルトの名無しさん
16/06/14 21:39:45.32 vpCPShaK.net
失礼しました
あまりの非PHPっぽさに釣られて
$a.hoge();
みたいな書き方をしていました

778:デフォルトの名無しさん
16/06/14 23:57:10.36 sdXnBDtj.net
>>770
あれ本当だ
いつの間にこうなった

779:デフォルトの名無しさん
16/06/15 00:30:10.47 yBESscco.net
>>775
5.4からだから既に4年以上前

780:デフォルトの名無しさん
16/06/15 01:15:30.82 /9sc4puR.net
explodeの戻り値がfalseだったら文字列でもfalseでもない null が返ってくることになるよな、それ
noticeも出る

781:デフォルトの名無しさん
16/06/15 02:58:03.10 6YnDO2OY.net
そうですね

782:デフォルトの名無しさん
16/06/15 09:56:12.92 35n6X8km.net
>>776
ずっとそれ出来ないもんだと思ってた...

783:デフォルトの名無しさん
16/06/15 10:18:18.00 HJSiSv4s.net
猿は勉強しないから知らなくても無理はない。気にすんな。

784:デフォルトの名無しさん
16/06/15 11:45:48.59 DNtAqMfa.net
わかった。 もう気にしない。

785:デフォルトの名無しさん
16/06/15 12:28:52.64 63gxNX9v.net
マイナーバージョンアップで使えるようになった書き方は互換性の面で正直使いづらいな。
使いやすくなることは喜ばしいが。

786:デフォルトの名無しさん
16/06/15 14:10:09.61 i5XubNZf.net
自分の書いたコードが
PHPのどのバージョンから使えるコードなのかを判定する
ツール的なものはないのでしょうか?

787:デフォルトの名無しさん
16/06/15 14:13:56.64 x+vvrMaZ.net
言い出しっぺが作るのです

788:デフォルトの名無しさん
16/06/16 03:33:03.54 F+lw57im.net
readdirでディレクトリエントリを読んでいきながら
便宜ファイルを削除しても問題ないのでしょうか?

789:デフォルトの名無しさん
16/06/16 11:12:05.38 F+lw57im.net
URLリンク(stackoverflow.com)

ここを見ると問題ないようです
foreachで元の配列を破壊的に変化させてるようなものだと思うのですが
どういうアルゴリズムなのか。
一旦全てエントリを舐めて、一つ一つ取り出してるだけなのでしょうか
scandirではなくreaddirを使うのはメモリを節約したいという意識からですが
一度に全部読んで単に取り出しを一つ一つしているだけなら
あんまり意味がないですね

790:デフォルトの名無しさん
16/06/16 11:51:44.03 OOtzbp5n.net
>>785
問題が出るかは確認してないけど、
問題が出るかもしれないから readdir のループでは対象ファイルのリストアップだけして、改めて処理用のループ回してる。

791:デフォルトの名無しさん
16/06/16 15:13:15.23 rO3o63UR.net
配列の操作について質問です。
MySQLから点数データを取得してwhile文で配列に格納するとともに、
点数の5段階の相対評価を得たいです。

学生(要素数が可変)の点数配列scoresがあるとした場合、点数の高い順に
最初の1/5をA、次の1/5をB、次の1/5をC、次の1/5をD、残りをEに分類するには
どういう操作をするのが定石でしょうか?

792:デフォルトの名無しさん
16/06/16 15:14:35.80 rO3o63UR.net
(続き)
やりたいことは点数出力時に、「相対的」に5段階評価してランク付けも出力したいのです。
絶対評価なら80点以上はA、60点以上はB・・・など基本的なif文の分岐で可能ですが、
相対評価の場合に、定石的な方法や、便利な関数などはあるのでしょうか?

いったん点数を配列に格納後に、配列をコピーしてソートして5つに分類するとか考えているのですが、
もっといいアルゴリズムや便利な関数などありますか?
よろしくお願いします。

配列の中身(MySQLからwhile文で取得)
scores[1] = 19;
scores[2] = 82;
scores[3] = 37;
...
scores[488] = 11;
scores[489] = 55;

793:デフォルトの名無しさん
16/06/16 15:20:11.03 lOAG9aOi.net
>>788
ここはphpの下質スレですがご質問はphpに関する質問ですか?

794:デフォルトの名無しさん
16/06/16 15:25:56.10 rO3o63UR.net
>>790
はい。
PHPでのアルゴリズムの実装方法やそのためのPHPの関数などを教えて欲しいです。

795:デフォルトの名無しさん
16/06/16 15:32:21.65 F+lw57im.net
>>787
それが安心ですね
ありがとうございます

796:デフォルトの名無しさん
16/06/16 15:40:54.97 lOAG9aOi.net
>>791
まあ…ほんとにphpなら
単純に1次元配列を並び替えるだけならrsort($scores);するかその前にsqlの時点でORDER BYすればいい
あとは$scores = array_chunk( $scores, (int)(ceil(count($scores)/5)) );とかすればいい
データが二次元だとか細かい処理したいとかならrsort()ではなくusort()も使える

797:デフォルトの名無しさん
16/06/16 16:28:58.79 rO3o63UR.net
>>793
ありがとうございます。
配列操作の関数がたくさんあってどれが最適なのか見つけられずにいました。
ORDER BYとご教示頂きましたarray_chunkの関数の組み合わせが最適そうですね。
解決できそうです。ありがとうございました。

798:デフォルトの名無しさん
16/06/16 16:49:55.80 BCCkDo9p.net
学生数が5できっちり割れる時は良いけど
そうならない時はどうするのかな?

799:デフォルトの名無しさん
16/06/16 17:36:01.49 rO3o63UR.net
>>795
ご注意ありがとうございます。
array_chunk には、次の記述がありますが、仕様上問題ないです。
「最後の部分の要素数は size より小さくなることもあります」
URLリンク(php.net)

800:デフォルトの名無しさん
16/06/16 21:36:32.86 geCt37Iz.net
質問させていただきます。
Class内でメンバ関数で定義した変数を別のメンバ関数から参照するにはどうすれば良いのでしょうか?

801:デフォルトの名無しさん
16/06/16 22:26:42.88 S7gZdFkC.net
>>797
何がしたいか分からんからやりたいことのコード例

802:デフォルトの名無しさん
16/06/16 22:30:00.80 geCt37Iz.net
>>798
あ、ごめんなさい
class {
public function a() {
$x = 'hello,world';
}

public function b() {
print $x; //hello,worldを表示する
}

}

簡潔にかけばこんな感じです。
aメソッドで定義した変数をbでも使いたいです

803:デフォルトの名無しさん
16/06/16 23:17:55.32 S7gZdFkC.net
>>799
クラスのプロパティにしたらあかんのか?

804:デフォルトの名無しさん
16/06/16 23:23:33.51 OOtzbp5n.net
クラス内の特定の機能だけでしか使わない変数の扱いについては悩ましいこともあるな。
スコープを厳格にしたいならその機能を別のクラスとして切り出すか、そこまで小分けしたくないなら大人しくプロパティにしてしまうか。
JAVAなんかだとクラス内クラスが簡単に扱えてこういうのに便利なんだけど、PHPってどうなんだっけ。

805:デフォルトの名無しさん
16/06/16 23:23:34.81 geCt37Iz.net
>>800
まあそれでもいいっちゃいいんですけど
ちょっとコードが長くなった時とか、別々にして処理させたいんですよね
皆さんがクラス書くときってどうやってるんでしょうか

806:デフォルトの名無しさん
16/06/16 23:30:35.19 S7gZdFkC.net
>>802
そもそも担当処理が違うなら別クラスにして委譲するのが適切だとは思う

807:デフォルトの名無しさん
16/06/17 00:04:23.57 OWOb/yaE.net
public function a() {
  static $x = 'hello,world';
}
これでは要求を満たさないならばおとなしく関数ではなくclassの変数やclass定数にすべき

808:デフォルトの名無しさん
16/06/17 01:04:47.60 bXZXch1T.net
>>804
質問を読んでなんでそんなコードが出てくるのか意味解らん

809:デフォルトの名無しさん
16/06/17 01:24:40.23 VvmzJV5D.net
配列から数をキーとして持つ要素だけを取り出す
いい方法はありませんか?

810:デフォルトの名無しさん
16/06/17 02:24:59.62 Ub5TQFWS.net
PHPの本で分かりやすいのある?

811:デフォルトの名無しさん
16/06/17 07:28:42.66 yged7CRH.net
>>807
皆さんはどんなosでどんなツールでphpやっているの?
教えて

812:デフォルトの名無しさん
16/06/17 07:38:35.18 kypwTnD/.net
机の上でノートに鉛筆でコードを書きながら脳内デバッグして脳内リリース。

813:デフォルトの名無しさん
16/06/17 07:55:00.51 zTp2v+lf.net
>>809
奇遇ですな。

同じくアイデア段階では、パソコンでやらずに紙です。
すぐにフローやイメージ図を書き留められる。放射状に広げていける。
紙とエンピツがその時だけ本当に便利だよね。

814:デフォルトの名無しさん
16/06/17 08:36:09.46 CYdk5Mt/.net
シーケンス図は手書きの方が楽、人に見せるときは格好つけてVisioで整形するがな

815:デフォルトの名無しさん
16/06/17 10:05:23.41 izLNj4Mm.net
>>807
山田祥寛(よしひろ)、翔泳社
10日でおぼえる PHP 入門教室、第4版、2012

この本は、Webアプリ作成の流れがわかるけど、
文法の説明は、あまりない

816:デフォルトの名無しさん
16/06/17 10:10:12.64 zTp2v+lf.net
>>812
その人の本地雷だろ。
初心者の時にPEARの本買ったら、意味がわからなくなって挫折しかかった。
別の本で救済された。文法云々の前にとにかく、理屈をこねすぎて本質部分全然わかりにくい。

817:デフォルトの名無しさん
16/06/17 10:56:59.01 izLNj4Mm.net
山田祥寛は第一人者。
様々な言語の本を書いている。RoRでも有名

講習会も1日4万円!

818:デフォルトの名無しさん
16/06/17 11:50:18.31 1vjuVThu.net
>>806
array_filter() で ARRAY_FILTER_USE_KEY フラグを使ってフィルタリングする。
あるいは、foreach で順に走査して該当するものだけ取得する。

819:デフォルトの名無しさん
16/06/17 13:12:30.73 VvmzJV5D.net
>>815
ARRAY_FILTER_USE_KEYというのは初耳でしたが、
借りたVPSに入ってるのは5.4なので、まだ使えませんでした
おとなしくforeachします
ありがとうございました

820:デフォルトの名無しさん
16/06/17 16:07:38.77 AeewtahV.net
ユーザーアイコンの取得方法について質問です。

現在ユーザーアイコンの保存にてaws s3(フレームはlaravel)を利用しています。
疑問なのはアイコンの存在チェックをするべきかどうかです。
(アイコン名はユーザーのid名です)

以下のようにすると、存在チェックと取得の計2回のリクエストが発生してしまいます。
@if (Storage::exists('user-icons/' . $user->id . '.jpg'))
<img src=&quo


821:t;{{ Storage::url('user-icons/' . $user->id . '.jpg') }}"> @else <img src="{{ Storage::url('user-icons/default.jpg') }}"> @endif そのため単純にユーザーが会員登録した時点でデフォルト画像をユーザーアイコンとして保存し 以下のようにただ取得するというシステムにしようか迷っています。 <img src="{{ Storage::url('user-icons/' . $user->id . '.jpg') }}"> (アイコンを変えないかぎり、ストレージ上ではデフォルト画像があふれるような感じ) アイコンを設定するようなサービスは、どのような構造になっているのでしょう?



822:デフォルトの名無しさん
16/06/17 16:09:49.84 KYjoOhmA.net
>>817
データベースは使わないの?

823:デフォルトの名無しさん
16/06/17 16:40:23.10 AeewtahV.net
>>818
アイコン変更履歴を格納するという意味でしょうか?

824:デフォルトの名無しさん
16/06/17 16:56:34.53 KYjoOhmA.net
>>819
履歴が必要なら履歴も登録してもいいけど。
例えば、user.iconに画像ファイル名が入ってるなら、
select cese when user.icon is null then 'default.jpg' else user.icon end as user_icon
画像ファイル名じゃなくて、あり/なしでもいいし、フルパスにしてもいいし、
userとは別テーブルにしてもいいし。

825:デフォルトの名無しさん
16/06/17 16:58:19.35 KYjoOhmA.net
っていうか、
> 以下のようにすると、存在チェックと取得の計2回のリクエストが発生してしまいます。
これほんと?
$user->idってインスタンスのプロパティアクセスじゃないの?

826:デフォルトの名無しさん
16/06/18 00:14:26.11 SEe9xJ4I.net
>>817
ファイルを保存したことが確定していればそれでいいというのであればそのステータスをローカルのDBなんかに保存する
アクセス時点でクライアントに画像が見えることを担保したいのであればクライアントサイドでやるべきではないか

827:デフォルトの名無しさん
16/06/18 00:48:21.29 W3J+GEBP.net
>>821
> これほんと?
しかまともなレスがない

828:デフォルトの名無しさん
16/06/18 03:06:39.83 zkudPs4r.net
>>823
つかそいつ一人しかレス付けてないじゃん。

>>817
S3 は高性能なストレージで存在チェック程度のアクセスは気にするような話ではないんじゃない?
ただアイコンを表示する全ての個所でそのコードを書くのはだるいから、デフォルトアイコンを作ってしまうというのもアリだと思う。
ただそうすると、例えばアイコンを設定してないユーザー 10人を一覧表示する場合、
存在チェック式なら同一の画像URL 10個が並ぶからクライアントは結果的に 1回の画像取得しかしないのに対し、
デフォルトアイコンコピー式では画像は個別の 10 の URL になるからクライアントは 10回画像取得をすることになり、
存在チェックなどの些細な負荷より重い実際の画像アクセスが増えてしまう。

829:デフォルトの名無しさん
16/06/18 08:33:50.00 8GpUPXrh.net
>>817
ファイルリストをキャッシュしておいて
ファイルが変更された(画像ファイルの追加や削除)タイミングで
キャッシュをInvalidateすればいいんでないかい?

830:デフォルトの名無しさん
16/06/18 08:42:32.00 saT7WdS7.net
default.jpgくらいは手元(ローカルサーバー)に置いておきたいというのはあるわな
その場合はlocal://default.jpgとかs3-icon://xxxx.yyyみたいな独自書式を用意するかな

831:デフォルトの名無しさん
16/06/18 13:57:43.89 a+CHws3P.net
formと振り分けphpについて質問です。

<form action="furiwake.php">
<input type=submit>
<input type=submit>
<input type=submit>
</form>

で、furiwake.phpで$_POSTの内容判定してheader['Location']するのと

<form><input type="submit"></form>
を何個も書いてそれぞれ別のページに飛ばすのってどっちが良いんですか?
ただの趣味の話?
それともこうした方が良いとかってありますか?

832:デフォルトの名無しさん
16/06/18 14:07:09.69 a+CHws3P.net
書き忘れ
顧客情報データ持っててhiddenで渡して次画面行きたいだけなのですが
1.全部$_SESSIONに詰め込んで<a href>を何個も作ってそれぞれに飛ばす
2.一つの<form>にsubmitを入れまくって振り分け用phpにhiddenで飛ばす
3.<form>を複数作って顧客情報をそれぞれhiddenで飛ばす

$_SESSIONに何でもかんでも詰め込んで良いものか、
それとも振り分け用phpへのアクセスが増える(現実問題は大した事ないけど作り方として)のを避けた方が良いのか
というようなことで迷いました。

833:デフォルトの名無しさん
16/06/18 16:03:58.68 ue516XaJ.net
端的に言うと、どれもやらねぇかな。

834:デフォルトの名無しさん
16/06/18 16:51:59.61 OFAUAFhz.net
>>827
目的と手段を考えれば答えがでるんじゃない。
データを持って次画面行きたいだけなら$_SESSIONを使うかな。
むしろPOSTする意味がわからない。

835:デフォルトの名無しさん
16/06/18 19:19:52.96 a+CHws3P.net
>>829
どんな方法使うんですか?

>>830
取り敢えず$_SESSIONに詰め込む事にします

836:デフォルトの名無しさん
16/06/18 20:16:44.01 CHIXqkwm.net
何を参考にしたのか知らないが、普通はそんなやり方はしない

837:デフォルトの名無しさん
16/06/18 20:41:31.45 a+CHws3P.net
普通はどうするんでしょうか

838:デフォルトの名無しさん
16/06/18 20:55:18.11 CHIXqkwm.net
普通は、一つのformに一つのsubmit
処理内容を分けたいなら、
処理の選択をするエレメントを付けてやる

839:デフォルトの名無しさん
16/06/18 22:59:24.24 pgLfn0h3.net
>>833
自分がしたい処理に似ている有名なサイトのページを分析してみればいい

840:デフォルトの名無しさん
16/06/19 18:04:14.78 JfyAxJGc.net
URLリンク(nanoappli.com)

こちらのサイトで
simpleXMLでXMLを組み立てた後
整形するためにDOMDocumentで出力しなおしていますが
最初からDOMDocumentでXMLを組み立てることは出来ないのでしょうか?

841:デフォルトの名無しさん
16/06/20 02:38:27.16 tnqQkYkd.net
$xml = simplexml_load_string($str);
json_decode(json_encode($xml), true);

で得られる形式の配列から
xmlに戻す、いい方法はありせんか?

842:デフォルトの名無しさん
16/06/20 06:31:07.37 gb8WC3Pe.net
foreachで頑張る

843:デフォルトの名無しさん
16/06/20 07:10:53.68 6mpJGPIZ.net
php同士ならserialize/unserializeでいいだろ
xmlとかyamlはまああれだ、趣味

844:デフォルトの名無しさん
16/06/20 12:29:12.56 tnqQkYkd.net
RSSを配列化→加工→RSSに戻す
ということをしたいのです
しかしPHPのXML周りはどうもイケてない気がします
簡単なことをするのも煩瑣で、少し突っ込んだ操作も不可能で・・
foreachで頑張るしかないのでしょうか

845:デフォルトの名無しさん
16/06/20 13:06:06.35 e7qwC/Xx.net
>>840
Rubyでも使いなさい

846:デフォルトの名無しさん
16/06/20 13:56:49.12 CH6czl6r.net
Rubyを使ったところで向こうのコミュニティに迷惑掛けるだけだろう
どの言語でも共通のDOMすら理解できてないんだから

847:デフォルトの名無しさん
16/06/20 14:30:03.12 ppvG3ddJ.net
Groovy なら、クロージャを使って、簡潔に書ける

タグ名.each{ 要素 ->
要素.value = 'abc'
}

848:デフォルトの名無しさん
16/06/20 15:02:05.88 tnqQkYkd.net
別にPHPが駄目だといっている訳ではありません
実用主義のPHPなのに
XMLと配列との相互変換のための関数が用意されていないのっておかしくね?
と言っているのです
あと値を設定した時に実体参照に変換してくれないところも気が利いてません

849:デフォルトの名無しさん
16/06/20 15:30:57.32 tnqQkYkd.net
>>837
あと良く使われてるこの手法もネームスペース属性がそぎ落とされますし・・
イケてないと言わざるを得ません

850:デフォルトの名無しさん
16/06/20 15:37:59.20 dCVNOi3X.net
黙れ!小童!!!!!
URLリンク(chattykh.com)


851:-content/uploads/2016/03/CZezN7LVIAApejO.jpg



852:デフォルトの名無しさん
16/06/20 15:43:22.49 CH6czl6r.net
>>844,845
配列に型変換して一体何が楽になると思ってるのか知らんけど
DOMが嫌だという人のために配列っぽく扱えるSimpleXMLElementが用意されてるだろ
ドキュメントも読まずに自分勝手にarray使っておいて気が利かないとか
マとして恥ずかしくないの?

853:デフォルトの名無しさん
16/06/20 15:46:32.10 kXAYtV38.net
>>847
少なくとも配列とDOMを相互変換とか言ってる時点で正気じゃない
黙ってNGに突っ込んでおくのがよい

854:デフォルトの名無しさん
16/06/20 16:19:51.02 tnqQkYkd.net
>>847-848
じゃあXMLのままフィルタリングやソーティングしてみて下さい

855:デフォルトの名無しさん
16/06/20 16:21:39.69 o/Q8QvES.net
入れ子になってる構造でソートだって?

856:デフォルトの名無しさん
16/06/20 16:22:31.78 1gK0q/ls.net
>>844
その辺に関してイケてると思う言語はどれ?

857:デフォルトの名無しさん
16/06/20 16:26:10.03 1A5wn0fq.net
>>850
兄弟の順序に意味があるXMLだって?

858:デフォルトの名無しさん
16/06/20 17:55:01.05 o3UTjcQ6.net
セキュリティ関係が頭に全然入ってこないです
どうやって勉強すればいいでしょうか

859:デフォルトの名無しさん
16/06/20 18:14:04.86 Iph33/KO.net
>>853
模擬サーバーにハッキングしてみる(実証実験)

860:デフォルトの名無しさん
16/06/20 18:43:25.91 6mpJGPIZ.net
頭に入らないってことは頭の安全性は保障されてるんじゃね、セキュアだな

861:デフォルトの名無しさん
16/06/20 19:42:02.13 DtHt205g.net
みんな頭いいね。おれなんて
total=total+1の時点で頭がテンパってるわ

862:デフォルトの名無しさん
16/06/20 19:51:18.58 7UcrPiUv.net
いまでもよく無限ループやらかします(小声)

863:デフォルトの名無しさん
16/06/20 19:56:33.91 Ht1YDCGg.net
>>857
ループ変数を $i にするのを卒業しようとしたら $i++ だけ残ってたり

864:デフォルトの名無しさん
16/06/20 21:23:50.71 7KDOMThT.net
イテレートで盛り上がれる純朴さが羨ましい限りだ。

865:デフォルトの名無しさん
16/06/20 21:28:32.25 7KDOMThT.net
Too young to die, too drunk to live なのかねぇ…

866:デフォルトの名無しさん
16/06/20 23:03:57.10 tnqQkYkd.net
>>851
rssの生成は今回はじめてやってるので知りません
他の言語と比較してイケてないと言っているのではなく
単にイケてないと言っているのです

867:デフォルトの名無しさん
16/06/20 23:07:57.34 vKqEeD2c.net
>>861
プログラミング言語なんだからイケてるライブラリは作り放題だぞ
できたら公開してくれ

868:デフォルトの名無しさん
16/06/21 07:36:44.50 F8rFyF6H.net
>>861
XML_RSSってメンテされてないんでしょ、これはあれだ、お前がやれという天啓

869:デフォルトの名無しさん
16/06/21 13:10:43.41 ZCseRBtp.net
XMLオワコン
JSONだけでいいだろもう

870:デフォルトの名無しさん
16/06/21 14:03:51.86 ZWokyEcu.net
WEB IDEの PhpStorm ておいくらなの?
会社に購入を申請しようとおもうだけど
お値段がどこにものっていない

871:デフォルトの名無しさん
16/06/21 14:17:29.46 ZCseRBtp.net
URLリンク(www.jetbrains.com)
つうかphpstormでググれば3秒でわかるような質問してる人がプログラマーなのに驚愕

872:デフォルトの名無しさん
16/06/21 15:02:57.47 ZWokyEcu.net
>>866
高!!
199ドルもするの??

phpstormでググったけどその価格のページにたどりつけんかったんよ

873:デフォルトの名無しさん
16/06/21 15:07:06.24 ZWokyEcu.net
>>866
とりあえず会社に申請してみます。
ありがとう。

874:デフォルトの名無しさん
16/06/21 15:20:20.47 ZCseRBtp.net
ブラウザとか環境によるのかもしれんけど自分の場合こんな感じに出る

PhpStorm IDE :: JetBrains PhpStorm
URLリンク(www.jetbrains.com)
このページを訳す
The most intelligent PHP IDE with refactorings, code completion, on-the-fly code analysis and coding productivity orientation.
Download PhpStorm ・ Buy ・ What's new in PhpStorm 2016.1? ・ Docs & Demos

そんでBuyのとこを押すとたどりつけるというわけさ

仕事で使うなら商用ライセンスだろうということでそっち貼ったけど
199ドルは商用ライセンスだから個人の場合は89ドルね
URLリンク(www.jetbrains.com)

875:デフォルトの名無しさん
16/06/21 15:32:11.50 GUPYo8em.net
PEARを使うことによってPHPでの開発は劇的に向上する

876:デフォルトの名無しさん
16/06/21 16:01:19.29 GdkMnzSr.net
いまさらですか?

877:デフォルトの名無しさん
16/06/21 16:07:25.78 JNUr2v78.net
ネストされた配列を再帰を使わずにパースしていく
いい方法はありませんか?

878:デフォルトの名無しさん
16/06/21 16:53:13.58 PPdTS3ln.net
$199とか、1日の人件費くらいだろ

879:デフォルトの名無しさん
16/06/21 16:54:36.54 F8qq0CQB.net
>>871
あんたPEARなんて使ってんの?

880:デフォルトの名無しさん
16/06/21 16:56:47.93 GdkMnzSr.net
安価ミスですか?

881:デフォルトの名無しさん
16/06/21 17:10:33.70 gufFnXZC.net
これ以上ないくらい美しく書けた

//AWS S3上のphotosを削除(データベースはcascadeで対応)
$photosId = $user->photos()->lists('photos.id');
if (count($photosId) > 0) {
$deletePhotoPaths = [];
foreach ($photosId as $value) {
$deletePhotoPaths[] = 'photos/' . $value . '.jpg';
}
Storage::delete($deletePhotoPaths);
}

882:デフォルトの名無しさん
16/06/21 17:30:39.61 GdkMnzSr.net
API仕様知らないけどこれだとまずいの?

$deletePhotoPaths = [];
foreach ($user->photos()->lists('photos.id') as $value) {
$deletePhotoPaths[] = 'photos/' . $value . '.jpg';
}
Storage::delete($deletePhotoPaths);

という些細なものは置いといても、単数形と複数形のポリシーが適当すぎて気持ち悪い。

883:デフォルトの名無しさん
16/06/21 18:18:36.43 E96GoXUh.net
>>876
逆にそれより汚く書くとどうなるんだ?

884:デフォルトの名無しさん
16/06/21 18:32:23.09 JNUr2v78.net
正直ごく普通のコードに見えますが・・。
配列はphotosIdListとかにして配列と示した方が良さそうですね

885:デフォルトの名無しさん
16/06/21 18:39:20.94 E96GoXUh.net
ID からパスを求める処理は他でも使うから、メソッドなり関数なりに切り出しておくべきだろうね。
array_walk のコールバックに合わせたインタフェースにするといいかもしれないが、それだと単体の変換向けにはちょっと使いづらくなるから、
そこをどう解決するかにセンスを求められるかもな。

886:デフォルトの名無しさん
16/06/21 18:44:08.60 E96GoXUh.net
>>880
array_walk じゃなく array_map にすりゃいいのか。
なんかボケてたわ。

887:デフォルトの名無しさん
16/06/21 18:53:30.67 Dmco6gBH.net
>>873
フリーや零細ならそういう考え方でいいが、
ある程度の規模になるとそんな甘っちょろい考え方では済まなくなる。

888:デフォルトの名無しさん
16/06/21 20:06:44.71 E96GoXUh.net
>>872
なんで再帰にしたくないの?
パースって具体的にどんな処理?
もしかして >>837 の人?

889:デフォルトの名無しさん
16/06/21 20:08:30.54 JNUr2v78.net
>>845の件ですが
ネームスペースだけでなく、属性も消えると判明しました
ネームスペースや属性もちゃんと表示するコードをしこしこ手書きしたのに
短い方がいいと思って廃棄してからそのことに気付きました
ファックですね?

890:デフォルトの名無しさん
16/06/21 20:10:13.56 JNUr2v78.net
>>883
処理が単一的でないので、再帰だとどうもうまくいかないと思ったのです
でも再帰でうまく出来そうです
ありがとうございました

891:デフォルトの名無しさん
16/06/21 20:11:19.45 Dmco6gBH.net
>>884
一生言ってろ、dumbass

892:デフォルトの名無しさん
16/06/21 20:17:57.37 JNUr2v78.net
>>886
ハゲは黙ってろ

893:デフォルトの名無しさん
16/06/21 20:36:38.54 oaiM5wE7.net
>>884
gitみたいな分散バージョン管理システムつかいなよ
こまめにローカルコミットしとけば
戻りたい地点にすぐ戻れる

894:デフォルトの名無しさん
16/06/21 20:39:12.30 Dmco6gBH.net
サルがVCSか。どのように使うか見ものだな。

895:デフォルトの名無しさん
16/06/21 20:48:50.16 E96GoXUh.net
>>884
むしろ XML の使い方を simplexml_load_string で扱える範囲に収める方がいいんじゃない?
わざわざ XML を使うなんてのは余所とのデータ交換のためなんじゃないかと思うけど、であればなおさら誰でも読めるフォーマットにした方がいいでしょ。
もう仕様が確定して運用中だったらどうにもならないけど。

896:デフォルトの名無しさん
16/06/21 22:24:57.65 JNUr2v78.net
>>884の件ですが
ファイルを別ファイルとして保存
→undoしまくる
という方法で復活できました

>>888
一応dropboxをバージョン管理に使ってるのですが
今回はちょっとしたテストのつもりでデスクトップで書いていたので・・
ちゃんとした開発ではsubversion使ってます

>>890
生成しようとしてるのはpodcast用のRSSなので、
仕様はすでに決まってるのです・・

897:デフォルトの名無しさん
16/06/21 22:34:22.85 3K6j4RYc.net
>>891
dropboxでバージョン管理とな?

898:デフォルトの名無しさん
16/06/21 22:50:17.70 nLutN5Ez.net
ほんのちょこっとした個人用プログラムくらいなら
Dropboxでも十分よ

899:デフォルトの名無しさん
16/06/22 05:54:22.15 cac9buRO.net
素直にGitは難しくて使い方わかりませんって言えばいいのに。

900:デフォルトの名無しさん
16/06/22 08:16:06.21 b8o1sKk7.net
>>893
俺もプロジェクトごっそり暗号化zipにして日付つけてdropboxに放り込んでるわ
そういう簡単なソフト作った
windowsなら標準でonedriveにバージョン単位で保存できるみたいだけど

901:デフォルトの名無しさん
16/06/22 09:54:21.10 pXRO6eh+.net
GitとGitHubは別物ですか?
SQLとMySQLみたいな。

902:デフォルトの名無しさん
16/06/22 10:14:00.80 PtXJngN/.net
gitを使おうとしたら全部のディレクトリに勝手に管理用のファイルが
生成されたからなんか嫌で使ってない
本番用の公開サイトでもgitの管理ファイルがあってもいいものなの?

903:デフォルトの名無しさん
16/06/22 10:52:05.69 Aw/Pyhhi.net
以前はFTPでファイルのアップロードを行なっていて
いつのころからかrsyncで同期するようになり
今ではhg push

904:デフォルトの名無しさん
16/06/22 11:01:25.47 uyRcysT8.net
気付けば何もかもが面倒になって直接サーバ入ってviで作業

>SQLとMySQLみたいな
うまい

905:デフォルトの名無しさん
16/06/22 11:27:29.72 A5e06e5G.net
全然うまくねえよ、ハゲ

906:デフォルトの名無しさん
16/06/22 11:52:44.24 WfMLciR4.net
>>897
git はトップディレクトリにしか作らなくね?
エクスプローラーがあちこちに Thumbs.db を作ったりするよりはよほどいいと思うよ。
なんにしてもそんなものを公開サーバに上げるのはマヌケ。

それよりも、個人的にはファイルのタイムスタンプが維持されないのが気に食わない。

907:デフォルトの名無しさん
16/06/22 12:24:51.88 OlmvlLQ3.net
>>901
ありがと。参考になります。もう一度やってみるよ。

908:デフォルトの名無しさん
16/06/22 12:59:23.09 k28/2S7E.net
>>882
> ある程度の規模になるとそんな甘っちょろい考え方では済まなくなる。
ある程度の規模になれば、それこそ$199なんて誤差になってくるだろ
MSDNに比べれば、ゴミのような値段

909:デフォルトの名無しさん
16/06/22 13:08:25.26 A5e06e5G.net
>>903
流石、平しかなった事のない奴の発言は重みがあるな。
お前はずっとそう思ってればいいよ。

910:デフォルトの名無しさん
16/06/22 13:10:35.97 BFfjtylb.net
PEARを使うことで格段に作業効率がUPするのにどうしてみんな使わないの?

911:デフォルトの名無しさん
16/06/22 13:42:08.67 pXRO6eh+.net
オブジェクト指向でクラス化して作っても
結局はあとあと、再利用、改変、再購読する可能性が低ければ
クラス化する意味はあまり無いのですか?

912:デフォルトの名無しさん
16/06/22 14:07:44.37 WfMLciR4.net
>>906
変数をクラス内に閉じ込めておけるという点だけでもクラス化の恩恵はあると思う。

913:デフォルトの名無しさん
16/06/22 14:33:22.24 k28/2S7E.net
>>904
お前のような奴がいると、ちゃんとした統合環境も使えず、GitHubなんかも使えず、
CI環境とか監視ツールとかもできあいのものが使えないんだろうよ
かわいそうだわ

914:デフォルトの名無しさん
16/06/22 18:17:18.97 s+FJ5KLI.net
「添字配列」を英語で何と言いますか?

915:デフォルトの名無しさん
16/06/22 18:27:32.70 k28/2S7E.net
>>909
indexed array

916:デフォルトの名無しさん
16/06/22 18:55:49.97 cac9buRO.net
>>908
どういう論拠でその結論をだしたんだ?
サルの考えることは本当によくわからんな…

917:デフォルトの名無しさん
16/06/22 18:58:15.96 cac9buRO.net
>>905
どれもこれも古臭くて不便だから。
他に良い方法がなく、それが最善である場合を除いては使う必要ない。

918:デフォルトの名無しさん
16/06/22 19:03:43.32 cac9buRO.net
先日PEAR::Mailを使ってるプロジェクトのメンテしたが、
たかがメール送るのにあんなクソみたいなライブラリを使うヤツの気が知れない。
そんな奴だから、PEAR::Mailをより不便に糞ラップしてあった。
そうだ、これこそがPHPerの恐ろしいところだ。

919:デフォルトの名無しさん
16/06/22 19:03:46.51 s+FJ5KLI.net
>>910
ありがとうございます

920:デフォルトの名無しさん
16/06/22 19:05:47.43 cac9buRO.net
>>906
それ、前スレだったか、かなり前に同じこと聞いてなかったか?

921:デフォルトの名無しさん
16/06/22 19:13:55.80 cac9buRO.net
俺が今でも使ってるPEARライブラリというと、Net_GeoIPくらいか…
代替手段が無いのかどうかはしらないが、
昔書いたコードで特に不便はないから放置してあるというのが正しいが。

922:デフォルトの名無しさん
16/06/22 19:27:13.26 s+FJ5KLI.net
>>906
オブジェクト指向で書かないと分かりにくいくらい複雑になった時点で
オブジェクト指向に移行します
再利用しなくても、その方が理解しやすくなるというメリットがあります

923:デフォルトの名無しさん
16/06/22 20:22:05.78 s+FJ5KLI.net
SimpleXMLElementオブジェクトから
XML宣言を取得したいのですが、それらしいメソッドがありません
asXMLメソッドで全体の文字列を取得して
先頭から切り出せば取得できますが、そんな方法しかないのでしょうか?

924:デフォルトの名無しさん
16/06/22 20:57:41.64 UX1eBnCv.net
基礎を身につけました
実践的な力を付けたいので
これを作るといいという物を教えてくだたもれ

925:デフォルトの名無しさん
16/06/22 21:17:09.01 14AwA6D3.net
>>919
お家カタログ

926:デフォルトの名無しさん
16/06/22 21:17:59.56 tA72U/sZ.net
>>919
スマホゲーム

927:デフォルトの名無しさん
16/06/22 21:52:32.27 6WTwmu+N.net
>>897
それバージョンアップで変わったよ。
リリース時はトップレベルの.gitフォルダを削除してあげればおk

928:デフォルトの名無しさん
16/06/22 21:56:30.25 14AwA6D3.net
>>919
話し相手

929:デフォルトの名無しさん
16/06/22 22:03:00.47 s1zk4i3O.net
>>919
なにを作るべきかついて話し合うサイト

930:デフォルトの名無しさん
16/06/22 22:10:54.83 npVvWban.net
>>922
それだけで本番環境に置き換えられるならすごい便利かも
貴重なアドバイスに感謝です

931:デフォルトの名無しさん
16/06/22 22:30:22.51 rpiti0Uo.net
不要なもんは削除したほういいけど、デプロイはリモートリポジトリからプル。ってやるなら.gitは残さないと。公開ディレクトリ外である事前提だけど。

932:デフォルトの名無しさん
16/06/22 22:34:17.61 WfMLciR4.net
>>926
そのやり方は便利なんだけど、PULLしてる最中の中途半端な断面が公開されてる状態になるというのがいただけないよな。

933:デフォルトの名無しさん
16/06/22 23:01:22.76 rpiti0Uo.net
>>927
そうだね。厳密にやるならプル後にシンボリックリンクでディレクトリ毎切り替えとか。まぁツールで楽しろってこったね。

934:デフォルトの名無しさん
16/06/23 10:25:07.43 XHBKYGLc.net
>>911
> サルの考えることは本当によくわからんな…
お前の考えることの方がわからんわ
$199ごときでがたがた言うのに、>>908みたいなことはないというのか?

935:デフォルトの名無しさん
16/06/23 11:02:23.22 Ox92qZ2z.net
「CakePHP3」の登場でPHPはプログラミング言語の上位に返り咲くことが出来ました! 多謝!!!!!

936:デフォルトの名無しさん
16/06/23 11:22:16.08 w+1ZvzwV.net
PHPスクリプトを用いて、某英辞書サイトから任意の英単語の語義を抽出してPSS形式(=P-Study-System)にしたいのですが、どなたか方法がわかる方がいたら教えていただけないでしょうか?

●ネット上におちていたPHPのコード : URLリンク(massive.tendon.bz)
(拡張子をphpに変えて、FC2サーバLiteで使用)
●某辞書サイト: URLリンク(eow.alc.co.jp)(検索ワード)/UTF-8/
●出力ファイル→output.csv
成功版: URLリンク(massive.tendon.bz)
失敗版: URLリンク(massive.tendon.bz)
●任意の英単語→wordlist.txt : URLリンク(massive.tendon.bz)

上記のコードを使い、一度は語義の抽出ができたのですが、「Fatal error: Maximum execution time of 30 seconds exceeded in /コードを格納してあるアドレス/crawl.php on line 37」と、表示されて以来、任意の英単語のみ(失敗版output.csv)しか吐かなくなりました。

フリーソフト「PSS=P-Study-System」に読み込んで、英単語学習をしたい……と思ったのですが、使い方がつまずいています。

どなたか解決方法がわかる方がいらっしゃるようでしたら、どうかご教授のほど、お願い致します。

937:デフォルトの名無しさん
16/06/23 12:23:02.34 g0w8fquD.net
>>931
30秒返事がなかったからエラーにするって書いてあるけど
そのサイト、て入力でアクセスして返事すぐ返ってくる?
頻繁にアクセスしすぎて制限かけられたとかじゃないの?

938:デフォルトの名無しさん
16/06/23 12:30:52.85 x8Tq2OJc.net
勘で答えるけど、30秒以上も、色々なサイトを、クロールしていたから、
サーバーエラーになったのだろう

エラーの際、プロセスの強制終了により、設定ファイルか何かのリソースに、
途中まで中途半端に書き込まれて、整合性が取れなくなった。
それ以後、そのファイルを読んでも、正しく処理されないとか?

まあ、普通の無料アプリで、エラー処理まできっちり書いていることは、まれ。
エラー処理後のテストなども、普通しない

設定ファイルなどをすべて削除して、最初からやり直せば?
でも、またサーバーエラーが出れば、同じようになるかも

939:デフォルトの名無しさん
16/06/23 12:52:22.88 aUw7JVj6.net
失敗版しか吐かない問題とは別に、クローラはCLIで動かしましょう

940:デフォルトの名無しさん
16/06/23 12:56:23.30 ISrN3FK4.net
>>932
いやそれはクローラーで、初回に実行しておくかバッチで回すものなんじゃないの。
多分。

941:デフォルトの名無しさん
16/06/23 14:23:39.57 Ox92qZ2z.net
CakePHPとLaravolどっちがいいかな?

942:デフォルトの名無しさん
16/06/23 17:11:28.79 WHuxwDdZ.net
ネストされた配列に、キーの配列を使ってアクセスする関数って
PHPにないんですか?
$array['a']['b']['c']['d']
のような配列に、配列['a','b','c','d']でアクセスできるようなやつです

943:デフォルトの名無しさん
16/06/23 17:33:34.71 WHuxwDdZ.net
$a = 'a';
$b = 'b';
echo $a ? $a : $b;

こういう処理で、$aを二度書くのが嫌なのですが
いい方法ありませんか?

944:デフォルトの名無しさん
16/06/23 17:39:57.01 WHuxwDdZ.net
boolとしての判定を配列の先頭から行っていって
trueになった時点でその値を返す
という関数があればいいのですが、phpにはないのでしょうか?

945:デフォルトの名無しさん
16/06/23 18:25:23.33 7w307aVI.net
総合するとおそらく求められているのは
URLリンク(php.net)
みたいなやつだろ、返す値が不満なら自分で改造しなよ

946:デフォルトの名無しさん
16/06/23 18:37:39.57 opomWGEo.net
>>938
エルビス・プレスリーを使う
echo $a ?: $b;

947:デフォルトの名無しさん
16/06/23 18:44:33.45 znOgoNn/.net
>>929
おサルさん、よく聞きなさい。
仕事の現場で大切なのはお金だけではありません。
俺様が一度でも金について話しましたか?
だからあなたは平しかなった事のない野猿だというのですよ。

948:デフォルトの名無しさん
16/06/23 18:46:27.39 znOgoNn/.net
> >>908みたいなことはないというのか?

あるわけねぇだろ、ハゲ
お前は観点がおかしいんだ
保育園からやり直せ

949:デフォルトの名無しさん
16/06/23 18:52:22.06 znOgoNn/.net
>>938
PHP7を使う。

950:デフォルトの名無しさん
16/06/23 18:58:32.34 pXTHavhi.net
俺様だってよwww

951:デフォルトの名無しさん
16/06/23 19:10:25.79 znOgoNn/.net
朕と言った方がよかったか?

952:デフォルトの名無しさん
16/06/23 19:12:54.18 ISrN3FK4.net
>>941
おーすげー
はじめて知った、こりゃ便利だな

953:デフォルトの名無しさん
16/06/23 19:37:46.60 aUw7JVj6.net
「こういう処理」のさらに限定的用法でいいならエルビスでも合体でも使えばよろし

954:デフォルトの名無しさん
16/06/23 19:38:09.84 znOgoNn/.net
$hoge = @$_POST["foo"] ?: "bar";

こういうことしなきゃいけなくなるからダメなんだよ。やっぱ7の ?? じゃねぇと。

955:デフォルトの名無しさん
16/06/23 19:40:29.22 WHuxwDdZ.net
>>940
自分でそういう関数を書くのは簡単ですが
標準の機能を使ってやりたいです
>>941
エルビス演算子というのですね
こんなものがあったとは
ありがとうございました

956:デフォルトの名無しさん
16/06/23 19:45:31.19 aUw7JVj6.net
?: の代わりに ?? を使えと読めてしまうあたり、
偉そうだけど正しい情報を出してくれるタイプの人というわけでもないようだ。

957:デフォルトの名無しさん
16/06/23 19:54:22.07 WHuxwDdZ.net
PHP7では出来るようになってるんですか
でもかなりのメリットがあるなら別ですが
yumで普通に入るくらいになってないと使いたくはないですね

958:デフォルトの名無しさん
16/06/23 19:58:22.33 znOgoNn/.net
この >>951 馬鹿、何言ってるのかよくわかんねぇから、誰か翻訳してくれ。

959:デフォルトの名無しさん
16/06/23 20:00:11.97 znOgoNn/.net
ああ、>>948 に対して >>949 を言ったと思ったのか。サルだな。
投稿時間をよく見てみろよ、マヌケ

960:デフォルトの名無しさん
16/06/23 20:03:47.46 znOgoNn/.net
ID:aUw7JVj6 ← 今日採れたての猿

961:デフォルトの名無しさん
16/06/23 20:04:19.65 aUw7JVj6.net
>>954
え?そういう話じゃないんだけど

962:デフォルトの名無しさん
16/06/23 20:05:13.04 pXTHavhi.net
サルサルサルサルさるげっちゅ言うてる奴がサルだったというオチ

963:デフォルトの名無しさん
16/06/23 20:09:48.69 znOgoNn/.net
>>954
じゃあなんでどういう話か言わないんだ?おさるさん。

964:デフォルトの名無しさん
16/06/23 20:10:09.01 znOgoNn/.net
アンカー間違えちゃったよ

965:デフォルトの名無しさん
16/06/23 20:12:18.41 znOgoNn/.net
>>929 とか >>956 はマトモに日本語の会話できんのかな?

966:デフォルトの名無しさん
16/06/23 20:13:28.27 aUw7JVj6.net
>>958
それこそ >>948 で書いた。
限定された状況下でしか等価にならないものを、知ってか知らずかそれを言わずに ?: や ?? を使えばいいというレスは
正しい情報とはいえないだけ。

967:デフォルトの名無しさん
16/06/23 20:19:11.19 znOgoNn/.net
>>961

>>938 になんて書いてあるか読めないハゲってことか?

状況が限られてるんだが、PHP7を奨めることになんか問題あんのか?

脳みそないのにお前がハゲになったのは考えすぎたわけじゃなくて遺伝か?

968:デフォルトの名無しさん
16/06/23 20:19:28.62 aUw7JVj6.net
"?: や" は忘れてくれすまん。

969:デフォルトの名無しさん
16/06/23 20:20:22.45 znOgoNn/.net
あと、

> それこそ >>948 で書いた。
> 限定された状況下でしか等価にならないものを、知ってか知らずかそれを言わずに ?: や ?? を使えばいいというレスは
> 正しい情報とはいえないだけ。

このクソみたいな日本語は何だ? 中学生でももう少しマシな説明が書けるぞ。

970:デフォルトの名無しさん
16/06/23 20:20:51.96 aUw7JVj6.net
>>962
確認させて。
>>938 の状況に対して PHP7 を使い、そして ?? を使えばいいというレスをしたってことでいいの?

971:デフォルトの名無しさん
16/06/23 20:22:53.99 znOgoNn/.net
> "?: や" は忘れてくれすまん。

こいつ何言ってんだ?

?: の場合、$aが設定されていなければNotice吐くんだぞ?
だから >>949 で説明してやったのに。

ここはサル山動物園か?

972:デフォルトの名無しさん
16/06/23 20:23:42.18 znOgoNn/.net
>>965

他に読めるならどう読むか逆に教えてくれ。

973:デフォルトの名無しさん
16/06/23 20:26:01.78 aUw7JVj6.net
ありがと。

$a = '0'

974:デフォルトの名無しさん
16/06/23 20:27:10.81 znOgoNn/.net
>ありがと。
>$a = '0'

それがなんの問題があるんだ? 説明してみろよ。

975:デフォルトの名無しさん
16/06/23 20:28:40.89 aUw7JVj6.net
試せばわかるでしょ

976:デフォルトの名無しさん
16/06/23 20:28:51.68 znOgoNn/.net
$a = '0'
$b = 'hoge'

$a = $a ?? $b;

この場合に$aに入って欲しい値を何だと思ってるんだ?

977:デフォルトの名無しさん
16/06/23 20:29:24.06 znOgoNn/.net
>>970
その言葉、そのまま返すから、何が入って欲しいか言ってみろよ。

978:デフォルトの名無しさん
16/06/23 20:30:34.66 aUw7JVj6.net
等価じゃないことは確かだから、一概に ?? を使えとはいえないよね。

979:デフォルトの名無しさん
16/06/23 20:31:03.07 znOgoNn/.net
ほら、話をはぐらかし始めたw

980:デフォルトの名無しさん
16/06/23 20:31:36.67 znOgoNn/.net
ああ、こいつ、どうやらこの前のシングルクオートエスケープ馬鹿じゃねぇか?

981:デフォルトの名無しさん
16/06/23 20:32:11.22 znOgoNn/.net
早く何が入って欲しいか答えろよ野猿

982:デフォルトの名無しさん
16/06/23 20:36:14.10 /dY0hFq/.net
最近変なのが多いな,
「PHPにないんですか?」のID:WHuxwDdZ
「サルと戯れる人」のID:znOgoNn/
ついでにめんどくさいこと分かってるのにわざわざ相手にしちゃうID:aUw7JVj6

983:デフォルトの名無しさん
16/06/23 20:37:40.18 znOgoNn/.net
>>973

「私は“何が入って欲しいか答えろ”と言いました。
するとどうでしょう?
彼は何もしゃべらなくなりました。
あなたは自分の答えに自信があったんですよねぇ。
あなたは猿じゃないんですよねぇ。ID:aUw7JVj6さん」

URLリンク(www.youtube.com)

984:デフォルトの名無しさん
16/06/23 20:38:47.51 znOgoNn/.net
>>977

この状況で単発で ID:aUw7JVj6 擁護って、随分肝っ玉の大きいこって。

985:デフォルトの名無しさん
16/06/23 20:39:39.42 znOgoNn/.net
>最近変なのが多いな,

PHPerって本当に自己紹介が得意だよな。尊敬するわ。

986:デフォルトの名無しさん
16/06/23 20:39:50.55 aUw7JVj6.net
>>978
何が入ってほしいかは質問者しか知らんよ。
で、あなたは挙動の異なる演算子を提示した。
それだけの話。

987:デフォルトの名無しさん
16/06/23 20:41:05.93 znOgoNn/.net
>968 : デフォルトの名無しさん2016/06/23(木) 20:26:01.78 ID:aUw7JVj6
>ありがと。
>
>$a = '0'

言った後自分で試してみてびっくり m9(^Д^)プギャーーーッ

988:デフォルトの名無しさん
16/06/23 20:41:49.13 znOgoNn/.net
>>981
ほら、更に話をはぐらかし始めたww

989:デフォルトの名無しさん
16/06/23 20:43:04.83 znOgoNn/.net
これが、これこそがPHPerなのです。皆さん、どうぞ ID:aUw7JVj6 を宜しく。

>ありがと。
>ありがと。
>ありがと。
>ありがと。
>ありがと。

>$a = '0'

990:デフォルトの名無しさん
16/06/23 20:45:15.70 znOgoNn/.net
>何が入ってほしいかは質問者しか知らんよ。
>で、あなたは挙動の異なる演算子を提示した。

望む挙動がお前にはわからないのに、なんで異なるって分かるの? おさるさん

>それだけの話。

どれな話なの? ちゃんと説明してくれる?

991:デフォルトの名無しさん
16/06/23 20:46:11.95 znOgoNn/.net
>ありがと。
>ありがと。
>ありがと。
>ありがと。
>ありがと。

>$a = '0'

アホすぎる! アホがすぎるぞ! ID:aUw7JVj6 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


992:デフォルトの名無しさん
16/06/23 21:03:01.96 8l+T8FXA.net
次スレ立てます

993:デフォルトの名無しさん
16/06/23 21:06:15.49 /dY0hFq/.net
>>987
頼んます

前も言ったけどテンプレ古臭過ぎるので要検討

994:デフォルトの名無しさん
16/06/23 21:06:46.23 aUw7JVj6.net
ワッチョイつきが立ってるよ

【PHP】下らねぇ質問はここに書き込みやがれ 5 [無断転載禁止]©2ch.net
スレリンク(tech板)

995:デフォルトの名無しさん
16/06/23 21:09:32.67 8l+T8FXA.net
次スレ
スレリンク(tech板)

996:デフォルトの名無しさん
16/06/23 21:11:23.06 8l+T8FXA.net
立ててしまった・・・
どちらを使うかはおまかせします

997:デフォルトの名無しさん
16/06/23 21:17:37.65 /dY0hFq/.net
あー, 重複スレがあったのか。
すっかり忘れてた, すまんな

998:デフォルトの名無しさん
16/06/23 21:47:29.07 pXTHavhi.net
こんな過疎スレに一日30回近く書き込みする物好きがいると聞いて見物している

999:デフォルトの名無しさん
16/06/23 22:09:04.47 pXTHavhi.net
さっさと埋めろや無能ども

1000:デフォルトの名無しさん
16/06/23 22:12:48.63 WHuxwDdZ.net
issetを使っているところをエルビス演算子に置き換えてみたのですが
@でエラー出力を抑制しても、
エラーハンドラをセットしている時にはしっかり呼び出されてますね・・
エラー出力を抑制しないといけないところに使うのは、
あまり筋のいい書き方ではないですね

1001:デフォルトの名無しさん
16/06/23 22:29:59.73 ISrN3FK4.net
?: は便利な書き方だけど $a を boolean として評価した結果と選択したい方が一致しない場合には使いづらいな。
$a が文字列だとして空の時に特別な表示をしようと
echo $a ?: '未設定';
なんてやった場合、$a が '0' だったりすると意図から外れちゃうもんな。

便利な書き方なんだけど惜しい。

1002:デフォルトの名無しさん
16/06/23 22:39:41.33 BeTIQhqe.net
?:は、@$foo にしないとやってられない…

1003:デフォルトの名無しさん
16/06/23 22:44:17.42 ISrN3FK4.net
@ もまた使いづらい。
特に変数が配列だったりすると、内部的には配列のコピーが作られてパフォーマンスに影響があるんだよね。
@$_POST['foo'] の場合にこのキーが無ければ、$_POST がコピーされ foo に対応する値が null な配列を作り出し、式としては null を返し、作った配列は捨てちゃうと。
なんでこんな実装になってるんだろ。

1004:デフォルトの名無しさん
16/06/23 23:01:44.89 /dY0hFq/.net
そもエラー抑制演算子なんて相当の理由がなければ使うべきじゃないし

楽したいならそういう機能のある新しいバージョン使う方が絶対に正しい
新しいバージョンが使えない, 使いたくないというのであれば, 楽をするのはあきらめて素直にissetで定義済みか確認せねばならん

1005:デフォルトの名無しさん
16/06/23 23:08:30.51 ISrN3FK4.net
>>999
まあな。
ただ、配列に関して言えば array_key_exists より isset の方がパフォーマンスがいいというのは微妙に納得いかないw
いや isset の方が楽で助かるけどさ。

1006:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 43日 1時間 21分 40秒

1007:1002
Over 1000 Thread.net
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


──────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
──────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
URLリンク(premium.2ch.net)
URLリンク(pink-chan-store.myshopify.com)


1008:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch