1 名前:デフォルトの名無しさん mailto:sage [2016/05/11(水) 21:46:50.27 ID:e/4BOK4y.net] PHPに関する下らない質問用避難スレです。 まず読むこと【PHPマニュアル】 www.php.net/manual/ja/ 前スレ 【PHP】下らねぇ質問はここに書き込みやがれ 4 [無断転載禁止]©2ch.net echo.2ch.net/test/read.cgi/tech/1457792733/ 次スレは>>980 が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
511 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 18:54:08.22 ID:FTbmrFHZ.net] 真っ赤?それは俺のこの手だ csvや配列で持ってるデータを複雑な条件で検索したいときって DBに格納するのが一番良いんかね
512 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 19:01:04.88 ID:K+q297Cv.net] >>508 まだベータだけどLINQ for PHPとか
513 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 19:19:03.12 ID:FTbmrFHZ.net] >>509 まさにこれなんだけど、こんなんがあって今βってことは やっぱこれ使う以外だとDBに入れるか自前で検索を組むしかないってことか ありがとう
514 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 19:44:25.80 ID:K+q297Cv.net] >>510 PackagistでLINQで探してみたら結構いろいろ実装があるみたいよ 探してみては如何
515 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 20:36:49.27 ID:FTbmrFHZ.net] >>511 ちょうどいろいろみてた 負荷と頻度考えて検討するわ
516 名前:デフォルトの名無しさん mailto:sage [2016/06/04(土) 21:59:15.81 ID:MFqaq7Mp.net] >>512 レポよろ
517 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 12:03:20.74 ID:xob/1tpk.net] 「次のn時m分」を取得するにはどうすればいいですか?
518 名前:デフォルトの名無しさん [2016/06/05(日) 12:03:29.70 ID:zsJffcbc.net] PHPであらゆることが出来るようになっていくなあ PHPさえマスターすれば仕事に困らないのさ
519 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 13:07:49.58 ID:9mzbmJB7.net] >>514 setTimeして戻ってたら+1 dayするとか function nextHM(DateTime $dt, $h, $m) { $next = clone $dt; $next->setTime($h, $m); if ($next <= $dt) { $next->modify('+1 day'); } return $next; }
520 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 13:24:18.21 ID:xob/1tpk.net] >>516 datetimeクラスなんてあったんですね 勉強になります ありがとうございました
521 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 18:26:14.42 ID:Tkwljjf2.net] >>514 こんな感じで計算をがんばるとか function nextHM($t, $h, $m) { $dif = date('Z'); $lt = $t + $dif; $nt = $lt - $lt % (24 * 3600) + $h * 3600 + $m * 60; if($nt <= $lt) $nt += 24 * 3600; return $nt - $dif; } $t は UNIXタイムスタンプね。
522 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 19:51:28.22 ID:TM3QCo+d.net] 見ろ、コードがゴミのようだ!
523 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 19:58:07.41 ID:CV0omAn/.net] これは酷い
524 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 20:12:32.45 ID:Tkwljjf2.net] え、計算でやろうと思ったらこんなもんじゃね? UTC からの時差を求め、ローカルタイムに直し、その日の指定時刻を求め、既に過ぎていたら日時なら翌日にし、UTC に直して返す、ということを淡々と並べただけだが。
525 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 20:24:39.75 ID:Tkwljjf2.net] あ、サマータイムに対応できないとかうるう秒とかどうなってんだって話なら、それはその通りだ。
526 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 23:07:07.91 ID:Iavazaq6.net] レンタルサーバーを借りたのでチャットができるホームページを作りたいです その為にwordpressの上でチャットプログラムを動かしたいと考えています まず何から取り掛かれば良いのか分かりません どのような知識が必要になり、どう勉強すれば良いか教えて頂きたいです
527 名前:デフォルトの名無しさん mailto:sage [2016/06/05(日) 23:21:32.87 ID:Tkwljjf2.net] >>523 wordpress は置いといて、取りあえずチャットを作ってみたら。 定期的にリロードする式のチャットなら簡単だし、サンプルになりそうなのは探せばすぐ見つかるんじゃね。
528 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 00:49:55.95 ID:KjVn6FKA.net] >>516 >>518 まじかよおまえら
529 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 00:53:43.37 ID:O157QY9D.net] >>518 クソコードに認定します。
530 名前:デフォルトの名無しさん [2016/06/06(月) 01:05:50.44 ID:mm33J6PT.net] 代替案を出さずに煽るだけ 口だけオッサン
531 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 01:21:12.75 ID:BBAYr+Aj.net] >>525 と >>526 で意見が割れてるから、この二人が話し合えばいいように思う
532 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 04:46:49.75 ID:J1e3bhcQ.net] >>527 あのコード見てもこんな事言ってるというだけで、 如何にこのアゲバカが何も知らない低能かという事がハッキリしたな。
533 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 07:47:24.77 ID:OUgENTLv.net] >>527 ほんそれ
534 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 07:59:47.71 ID:z3VswDq0.net] >>524 ありがとうございます とりあえずは簡単でも動くプログラムを目指してみます サーバーとクライアントのチャットならイメージが湧くんですけど、phpでやるとなるとサーバー側のプログラムだけで実現するんですよね・・ リロードするということはデータベースにログを格納して参照するという認識で合ってい ますか?
535 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 08:33:02.73 ID:xfsRheZo.net] >>531 データベースに手を出す前に、まずはプレーンなファイルにログを保存する方が簡単。 直近の100行くらいをそのままテキストファイルに保存しておくとか。 掲示板と変わらないよ。 名前とか色とか時刻みたいなパラメータを個別にフィールド化したいなら行を適当に書式化する必要があるけどね。 例えばこんな感じ。 2016/06/05 23:10:01<タブ>system<タブ>000000<タブ>たろうさんが入室しました<改行> 2016/06/05 23:10:01<タブ>たろう<タブ>FF0000<タブ>こんばんは<改行> 2016/06/05 23:10:06<タブ>じろう<タブ>00FF00<タブ>やあ<改行> このファイルを file_get_contents するとファイルの中身全部がひとつの文字列として取得できる。 これを<改行>(¥n)で explode すれば行ごとの配列になる。 各行を<タブ>(¥t)で explode すればフィールド毎の配列になる。 新しい書き込みは行ごとの配列に追記し、必要な件数になるように array_splice なんかで調整する。 それを join なんかで配列を文字列化してファイルに保存する。 入力値にタブや改行が含まれている場合はスペースに置換する対策をするとして preg_replace なんかを使う。 ログファイルの読み書きを排他するためには flock を使う。 flock はログファイルそのものに対してやるんじゃなく、別のロックファイルを使うのを勧める。 flock でのロックなら使い終わったロックファイルは消さずに放置していい。
536 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 10:29:24.73 ID:z3VswDq0.net] >>532 具体的なアドバイスありがとうございます ファイルの読み書きでも実現できるんですね・・ すごく丁寧に手順を教えて頂けたのでその方法でやってみようと思います 排他制御など考えることも多そうですが、だいぶイメージが湧きました
537 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 10:53:52.96 ID:gg/xefDK.net] >>531 >データベースにログを格納して参照する それであってる。リロードに関してはAjaxとか使えばいい。 ファイルもいいが、データベースの方が応用利くのでおすすめだぞ。
538 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 11:07:34.48 ID:SWJRXsGZ.net] 一度DBに慣れるとファイル使うのめんどくさくなるよね
539 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 11:28:46.71 ID:xfsRheZo.net] いずれはDBにも手を出すことになるだろうが、今の段階ではまずファイルがいいよ。 DBの準備、テーブルの準備、DBへの接続、開発中のデータのメンテナンス、etc. 手始めにチャットをちょろっと作るには少々面倒だと思う。 しかも自前のファイル処理は排他なんかの基礎的な技術も使うちょうどいい題材だと思う。
540 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 12:02:24.68 ID:z3VswDq0.net] >>534 ,536 お二人ともありがとうございます まだphpを学習している段階ですので、ファイルから入りデータベースの利用も考えて拡張していけたらと考えています MySQLは多少触ったことがあるのですがAjaxとやらはJSで書かれてるみたいなんで心配ですね 当面の間の目標は決まったので取り組んでいきたいと思います
541 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 12:48:53.75 ID:cB/a+aRW.net] unixタイムスタンプの変数名として$dateを使うのは変ですか? dateといえば通常日付を持つオブジェクトですが phpの場合、dateは日付を文字列に直す関数の名前なので phpの作法としては良くないのか?とも思います どうなのでしょうか?
542 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 12:56:02.62 ID:i0QOUB1M.net] お前のシステムのタイムスタンプは日付単位なのか。すげえな。
543 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 13:05:19.30 ID:xfsRheZo.net] >>538 マニュアルではタイムスタンプを取る関数の引数リストは timestamp となってるから、PHP流にするならそれに従うとか? おれは近距離で使う場合なら $t とか $tm で済ますな。
544 名前:デフォルトの名無しさん [2016/06/06(月) 14:07:10.33 ID:VZp5fXoT.net] 一度でいいから口だけオッサンの溜め息が出るほどに素晴らしい華麗なプログラムを見せて欲しいものだ まあ、それが出来ないから口だけオッサンなわけなんだけれどもね
545 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 14:25:14.47 ID:cB/a+aRW.net] >>539 アスペ乙 >>540 timestampが無難ですね ありがとうございました
546 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 14:37:23.20 ID:CS8YjhCP.net] 最近の質問者は煽り耐性がないなw
547 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 14:48:20.68 ID:e+TlXwYN.net] int32だと2038年になったとき困るもんな そこで64bitPHPですよ
548 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 15:02:04.40 ID:Nu4gS3Qg.net] >>544 64bitPHPって、動作環境も64必須になるの?
549 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 15:44:32.88 ID:3yfrnV+f.net] 8bit環境でも動くよ
550 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 16:42:19.25 ID:cB/a+aRW.net] strtotimeは非常に柔軟な解釈をしますが これはphpが他の言語を参考にしたのでしょうか?
551 名前:デフォルトの名無しさん mailto:sega [2016/06/06(月) 16:44:19.58 ID:m0TG3c4D.net] Cのexec系のように 自分自身のプロセスを置き換えるプログラムの起動方法はありますか?
552 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 18:43:05.67 ID:BBAYr+Aj.net] >>548 こないだの人と同じだろうか。 php.net/manual/ja/ref.pcntl.php とりあえずここを一通り見るとこれからの疑問もいくつか解決できるかと。
553 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:06:02.71 ID:J1e3bhcQ.net] >>543 無いのは耐性じゃなくて羞恥心だ。本当にサルしかいなくなった。
554 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:08:37.27 ID:J1e3bhcQ.net] >>547 マネする事しかできないサルはそんなこと気にしても無駄だ。おとなしく使い方だけ覚えてろ。
555 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:10:05.25 ID:J1e3bhcQ.net] >タイムスタンプの変数名として$dateを使うのは変ですか? dateの意味が分からないサル、素敵。
556 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:17:07.72 ID:J1e3bhcQ.net] >>549 そのバカは教えてもらっても活用できないから総合的なリンクを貼っても無駄だ。 1から100まで手とり足とり教えてやるだけの覚悟が必要だぞ。
557 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 19:37:24.24 ID:cB/a+aRW.net] >>549 ちがいますよ 「こないだの人」っていうのはたぶん自分なので
558 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 21:51:51.16 ID:1+sOyhVW.net] MySQLの画像が表示できずに困っています。 main.php <img src="gazou.php"> gazou.php $src = file_get_contents('画像のURL'); echo header('Content-Type: image/jpeg'); echo $src; これなら正常に動作しますが、gazou.phpでDB接続しただけで画像も表示されなくなってしまいます。 $link = mysql_connect('localhost', 'root', 'pass'); DBに接続できる事は確認済みです。エラーも起きていません。 原因のわかる方がいたらお願いします。助けてください。
559 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 21:52:47.52 ID:1+sOyhVW.net] すみません。改行がおかしくなってました
560 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:00:04.71 ID:O157QY9D.net] <?php
561 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:06:18.56 ID:xfsRheZo.net] >>555 DB接続と画像取得を同時にやると memory_limit に引っかかるとか?
562 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:16:02.69 ID:lRe9eSuk.net] >>555 いや何でheaderをechoしてんの
563 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:20:02.11 ID:xfsRheZo.net] 言われてみればw
564 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 22:22:35.62 ID:1+sOyhVW.net] >>558 リミット増やして、画像を極小の物にしましたが駄目でした。 >>559 ネットにあった物を丸コピしましたが、echoする必要なかったんですね。 ありがとうございます。
565 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 23:12:41.43 ID:pobwg1Vi.net] >>561 そんなのネットに落ちてるのか URL教えてくれまいか
566 名前:デフォルトの名無しさん mailto:sage [2016/06/06(月) 23:15:55.37 ID:pcbEmQ5n.net] >>561 DB接続を先にして画像表示を後にしてみれば
567 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 00:05:13.10 ID:lP0BMeFG.net] >>563 すみません、先に接続してます 画像が表示されなくなるので、DBの画像がおかしいのかと色々調べて結論が DBに接続したからってよく分からない原因でした 自分以外は起きないようですしDBに画像入れるのは諦めます、ありがとうございました
568 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 00:21:59.49 ID:D2B0dW6i.net] >>564 レスポンス見るとたぶんなんか文字列が出てるんだと思うよ
569 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 03:50:11.15 ID:T/syB7Ij.net] こんなんで諦めるのか。
570 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 06:38:58.63 ID:T/syB7Ij.net] コードの出し惜しみすっからこういう事になんだよ。 細切れじゃなく動かないコードを全部はっつけてれば>>559 あたりがとっくに解決してくれたろうに。 勝手に質問して勝手に諦めて、ただのスレ汚しでしかねえよ。
571 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 07:25:50.44 ID:zVxkgyZ2.net] ブラウザからgazou.phpにアクセスすれば一発でわかるよ どうせDB接続エラーでも出てるんだろ
572 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 08:59:25.37 ID:bV3Kj9Se.net] 2038年問題とか気にしてるやついるのかよ もう32bitとか絶滅危惧種じゃねえか
573 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 09:56:02.61 ID:ljS7Rtyf.net] >>569 というか、今動いている32bit機があと20年は余裕で保守されてしまうのだよ・・・
574 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 10:01:48.24 ID:SWn+auCj.net] COBOLじゃあるまいし基幹系でPHP採用してるのはキチガイと言わざるをえないしその心配はいらない
575 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 10:08:11.73 ID:EI+C64Wv.net] 今なお動いているphp4のとき書かれた業務システムが普通にある
576 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 10:13:16.18 ID:mGsXs7zb.net] PHP4使ってるところすらあるでしょ。「保守」はされてないだろうけどw
577 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 10:17:14.37 ID:SWn+auCj.net] そのとおりだな 放置が正しい
578 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 11:27:15.75 ID:ZIJtMgP1.net] 2038年問題より、1970年問題に当たったことならあるなぁ 生年月日を扱おうとして。
579 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 13:46:49.20 ID:ljS7Rtyf.net] >>571 思うのはいいけど、現実は厳しいからね
580 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 14:17:17.55 ID:LhHMvfyC.net] 思うのっていうか、PHPのバージョンと開発者の技量に影響受けまくるので、4の頃なら頭おかしいって評価はとても正しい。
581 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 14:52:12.33 ID:Ht3PiVwV.net] phpをCLIで実行した場合、 $_SERVER['SERVER_ADDR']が設定されていません マシンのipアドレスを知りたい時には シェルコマンドを実行して自前で取得するしかないのでしょうか?
582 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 15:06:32.48 ID:TyQk9mVD.net] >>578 マシンのipアドレスって?
583 名前:デフォルトの名無しさん [2016/06/07(火) 15:38:49.13 ID:57zhvgUm.net] カレンダーを作るといいらしいね
584 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 15:47:57.36 ID:e+17T4IJ.net] 404や500などのエラー返す時にContent-TypeとResponse BodyってMUST?SHOULD?
585 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 16:33:43.53 ID:LhHMvfyC.net] >>578 $h = gethostname(); echo gethostbyname($h); isn't it?
586 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 18:26:48.76 ID:EI+C64Wv.net] そりゃIP複数持ってるマシンなんざいっぱいあるんだから設定されてなくても仕方なかろう
587 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 18:31:43.94 ID:Ht3PiVwV.net] >>582 随分すっきり書けるんですね ありがとうございます
588 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 18:49:34.57 ID:T/syB7Ij.net] >>584 u are welcome. >>583 $_SERVER php.net/manual/ja/reserved.variables.server.php > The entries in this array are created by the web server. do u think the web server will say something in cli? stupid!
589 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 20:25:27.97 ID:zVxkgyZ2.net] >>575 生年月日をタイムスタンプで扱ってるの? 生まれた瞬間のミリ秒まで必要?
590 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 22:16:27.40 ID:ZIJtMgP1.net] >>586 ミリ秒じゃなく秒と言いたいんだろうけど、秒どころか時刻もいらん。 ただ時間を扱ういろいろな関数の引数が UTC だから何も考えず UTC で扱っとけと思って失敗したという話。
591 名前:デフォルトの名無しさん mailto:sage [2016/06/07(火) 23:51:25.08 ID:GjrjfS/I.net] ハハ。$_SERVERの勘違いって誰もが通る道だね。
592 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 00:14:36.94 ID:mGCA+lka.net] 初心者なんだけど cgi,php の掲示板って普通にサーバーにアップロードして 動かすとサイトのURLの末尾が cgi、php ってなるけど 例えば、自分の好きな英数字 xxxx.html とかで htmlで表示する方法があるんだよね? これってやり方紹介してるサイトとかあるの?
593 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 00:23:54.79 ID:uL38izUF.net] Apacheかなんかのスレにどうぞ
594 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 01:23:51.21 ID:JCoBBX/9.net] >>589 > htmlで表示する方法があるんだよね? ある > これってやり方紹介してるサイトとかあるの? ある
595 名前:デフォルトの名無しさん [2016/06/08(水) 02:06:02.23 ID:HLpzPaCj.net] まとめますとggrks
596 名前:デフォルトの名無しさん [2016/06/08(水) 03:29:07.02 ID:YJzUTB/9.net] PHPとJavascriptって両方覚えた方が良いの?
597 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 04:13:34.53 ID:E3Y0fydP.net] htmlは静的、phpは動的なファイル。 静的なファイルは変更されないから、キャッシュ・圧縮が効く 開発環境でのディレクトリの場所が違ってくるし、 その拡張子・ディレクトリ構成を前提とした、フレームワーク・ツールが動かなくなる htmlファイルは処理Aして、phpファイルは処理Bして、という前提条件が崩れる また、CDNなどのキャッシュ・圧縮などに影響するかも? 素人は、変なことを考えない方がいい
598 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 04:45:13.41 ID:xWo5zVvm.net] 最後の1行に説得力を持たせるためにそれらを書いたのなら、かなりのセンス。
599 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 06:14:37.48 ID:Y0v6vn2E.net] サルが必死に知恵を絞るとこういう文章になってしまうというだけだ。 センスとか関係無い。
600 名前:594 mailto:sage [2016/06/08(水) 06:37:14.53 ID:E3Y0fydP.net] 慣例に従わないと、フレイムワーク・プラグイン・ツールなどが動かなくなる。 そういうツールの作者は、慣例を前提条件にして作っているから 何かがバグった時に、素人じゃ解決できないだろう プロでも設定ファイルで、あーだこーだ設定しても、 設定した人にはわかるけど、人が変われば、もうダメだろう
601 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 06:41:40.02 ID:Y0v6vn2E.net] >>595 な、マジもんだっただろ? 頭おかしいからほっとくしか無い。 素人にはかわいそうなこった。
602 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 06:43:42.35 ID:gbxJmrOf.net] みんないいか?触るなよw
603 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 07:10:14.83 ID:Y0v6vn2E.net] 今日も動物園一直線か。 たまには人間が見たいもんだ。
604 名前:594 mailto:sage [2016/06/08(水) 07:34:36.51 ID:E3Y0fydP.net] 君らは、Gradle, Jenkins などで、.html .php など、 拡張子によって、テストツールなどの処理を変えたりしないのか?
605 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 07:40:28.27 ID:Y0v6vn2E.net] うん、おまえ頭おかしいから元の質問100回よみかえして どういう状況かよく考えたら病院行って薬もらってこい。
606 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 08:10:33.58 ID:uL38izUF.net] 自分はApacheくらいしか分からんけども、ぱっと思いつくのは3パターンくらい。 質問に対して正直に答えるなら、.htmlも動的ファイルとして認識させる方法だが、 大昔のSSIとかはともかく、今はデメリットしか無いだろうなあ。 ファイルの更新よりも極端に閲覧が多いなら、伝統的な手段として、 あらかじめ静的ファイルを生成する方法があるが、質問者の意図とは遠いだろう。 あとは今の御時世だと、そこまでパフォーマンス的なメリット薄いかも。 比較的質問者の意図に近く、かつ>601のような問題にも対応するなら mod_rewriteによるパスの書き換えが無難かしらね? ただ初心者には難しい気がする。 やるなら最後だが、結局のところ最初はやらんほうがいいってことになるのかね。
607 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 08:25:59.30 ID:2v7uDDwq.net] htmlを動的ファイルとして認識させるのは、理解し切ってやるならデメリットだけとも言えないとは思う 質問者の意図から外れるのは同意だけど静的htmlの生成・保持は今のご時世でもメリット薄くないと思う 昔はサーバリソースの問題から、今のご時世でもアクセス数の増大と先読みやらなんやらの超アクセスの問題から 特に重い処理は一部だけの保持でも十分に効果がある というか一番の問題は動機、なんで拡張子偽装したいのか意味あんのかってあたりだと思うが そこを突っ込むのは野暮か *****.htmlじゃなくて /*****/ アクセスにするだけでも解決しそうな・・・
608 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 10:58:47.40 ID:YYbuS1Qq.net] php7ってなんで公式リポジトリに含まれないん? わざわざremiリポジトリ登録してやらんとあかんが疑問 JPCERTでも以前脆弱性出てたし わかる方いたら教えて
609 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 12:38:58.71 ID:CAvCMOWG.net] 有益かゴミかはやり方知った後でやる奴が判断すりゃいいんだよ。 頭のおかしい外部のサルが判断すことじゃない。 教えるかggrksのどっちかでいいんだ。ゴタクは日記に書いてろ。
610 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 12:56:25.16 ID:lrS0iOEg.net] >>605 デフォルトでは使うなってことでしょ
611 名前:デフォルトの名無しさん [2016/06/08(水) 13:40:06.16 ID:oY9bTRlh.net] パーフェクトPHPのフレームワークの章とアプリケーション開発の章を理解するには 先にCakePHPの基礎を学ぶのがいいと書いているブログがあった このスレ的にはどう思うよ?
612 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 15:55:08.69 ID:kQTZ9CNF.net] そんな無意味な書籍読まないし知らんけど FWのイロハがわからない人間にはイメージがつきにくい内容なら 実際何かしら触った方がいいのは当たり前のことだと思うが
613 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 16:46:59.87 ID:2v7uDDwq.net] そんな本読んだことないし読む気もないが、フレームワークの章だけならまだしも アプリケーション開発の章を理解するためにCakePHPの基礎やっとけというなら 高確率でそのブログが役立たずまたはその本が役立たずと思われる
614 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 16:56:11.26 ID:VGRHY7q5.net] 何でもいいよ PHP系のフレームワークはどれも同じ
615 名前:デフォルトの名無しさん [2016/06/08(水) 16:58:16.97 ID:HLpzPaCj.net] >>609 >>610 君らは自分の過去を無かったものにするのだな 別の本なりネットなりで勉学した初心者時代があっただろう 記憶喪失になったかな?
616 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 17:13:12.10 ID:2v7uDDwq.net] >>612 初心者の勘違い防止とステマ防止のためなら何度でも言うが 一番重要なのはHTTP、DNS、HTMLの仕組みの理解を深めることであって phpに関する学習は基本的にphp.netで十分 あとはプロセスだのスレッドだのファイルシステムだのSSL/TLSだのをレベルと必要性に応じて学べば足りる
617 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 17:51:55.00 ID:ZBwXDrqR.net] マンモス本がでてPHPの時代が来るんじゃあと思ったことならある LAMPで構成されることが多いしCMSもMVCフレームワークも豊富で困らないけどCakePHP推しはちょっと古いかもな ORMは使わないことが多く、結局PHPよりSQLの知識の方が需要あるんだよね
618 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:01:25.33 ID:lrS0iOEg.net] チームで開発するなら、フレームワークいいと思うけどね
619 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:05:39.32 ID:jZ2+9jcA.net] syslog(LOG_INFO,'info'); syslog(LOG_DEBUG,'debug'); syslog(LOG_NOTICE,'notice'); こうすると、debugだけ/var/log/messagesに記録されていません 開発時にはDEBUGなどの定数を設定しておいて その時にはLOG_DEBUGも出力される 開発が終わればLOG_DEBUGは出力しない みたいなことをやりたいのですが どうやれば出来ますか?
620 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:26:10.13 ID:PuNp4spr.net] 出ないのはsyslog.confの設定しだいだろうけど log出力をライブラリ利用するかラッパーかまして自分で制御しては syslogは開発完了後も使う前提だと思うけど
621 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:27:46.41 ID:v2PxA+KY.net] >>615 フレームワーク使うにしてもそれに合わせた設計や規約を作らないといけないんだから、それほど意志疎通の手間を省くこともできないしそれ程素晴らしいとも思えないがなぁ。 もちろん自分達で一から書くよりはマシだろうという期待はあるが、フレームワーク自体のメンテナンスも必要になってくるしねぇ。
622 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:33:06.92 ID:lrS0iOEg.net] >>618 > フレームワーク使うにしてもそれに合わせた設計や規約を作らないといけないんだから、 使わない方が大変な気がするが > それほど意志疎通の手間を省くこともできないし 共通基盤部分の意思疎通は不要だし、わからないこともWebで調べることができるというメリットがある
623 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:38:13.16 ID:jZ2+9jcA.net] >>617 LOG_〜はsyslogに対しての指定なのですね どうもその辺りが分かってなくて ありがとうございました
624 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:40:18.38 ID:Y0v6vn2E.net] CakePHPなんて薦めてる時点でお察し。 フレームワーク嫌いになるし、MVC勘違いするしでいい事なんにもねぇよ。
625 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:40:30.18 ID:mGCA+lka.net] >>594 cgi,phpをhtmlで表示する方法を知りたかったんだけど 素人はいじらない方いいってこと?検索して探しまくったけど細かく説明してるサイトがないんだよね 配布してるサイトには全く触れてないしさ
626 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:44:05.32 ID:Y0v6vn2E.net] >>611 の言うとおり、ロクなものが無いと言う点に於いては PHPのフレームワークなんてどれもおんなじ。 使いまわせるライブラリやフレームワーク自体を作ることが出来無い低レベルの会社か、 人の入れ替わりの激しい人買いくらいしかPHPの有名どころのフレームワーク使う恩恵なんてない。
627 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 18:45:20.25 ID:Y0v6vn2E.net] >>622 そういうことはしない方がいいってわかってるから情報も少ない。 まぁ、ぐぐりまくれ。いい勉強にはなる。
628 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 19:53:45.61 ID:cqVMGaEH.net] >>622 htmlでもPHPが動くようにapache設定するといいよ
629 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 21:28:57.46 ID:E3Y0fydP.net] 慣例から外れたことをやると、色々な設定を変えなければならなくなり、 一つ設定を変えると、またそれによって動かなくなるものが出てくる それで大変だから、慣例に従うのよ。 素人は解決能力が無いので、変わったことをしない方がいい たいてい、2chに居つく素人は、そういう変更をした人。 ずっと解決できなくて、2chに居つくw
630 名前:デフォルトの名無しさん mailto:sage [2016/06/08(水) 23:12:26.27 ID:gbxJmrOf.net] 素人こそムチャクチャにいじり倒したほうがいいよ。流した涙の分だけ強くなれる
631 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 05:24:32.22 ID:Z+K8nZfh.net] >>626 最後の二行なんか、まるで自己紹介かと思うくらいに真実味があるな。
632 名前:uy ◆e6.oHu1j.o [2016/06/09(木) 07:58:20.47 ID:soxVcx2A.net] 質問です <h1><?php echo "ruby"; ?></h1> これは純粋なHTMLコードよりサーバーに行わせる処理が多いものと思いますけど 気にしたほうが良い負荷ですか? 全てのページでこういう事やるのは避けたほうが良いですか?
633 名前:デフォルトの名無しさん [2016/06/09(木) 08:31:49.73 ID:udAwsxyk.net] 俺もそれ考えて、CachedNodeというクラスを実装しようと思う。 変更が有った時に幹に向かって破棄ビットを立てる。 変更があっても関連の無いノードのキャッシュは依然有効なまま。 変更が無い限り出力はキャッシュ済みでメモリー上にあるので最速。 まあセッションごとに起動される建前のPHPでは無理だけど。
634 名前:デフォルトの名無しさん [2016/06/09(木) 11:41:49.74 ID:I0vdXVFT.net] アロー演算子 -> って前後にスペース入れちゃだめなの? $this -> hogehoge() みたいにしちゃダメ?
635 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 12:52:46.82 ID:1e+LEmpu.net] >>629 そういうことする為にwebプログラム言語はあるんだ。
636 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 18:58:43.72 ID:Z+K8nZfh.net] なんで uy がここにいんの?
637 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 21:48:33.33 ID:gOehAXHk.net] PHPでフォークをしてみたいのですが 子プロセスが全部終了するのを親が待つのは 作った子の数だけpcntl_waitすればいいのでしょうか? 子が死んだ時に待ってる制御が必ず戻ってくるのか、 というところに不安があります もし待っているのに制御が戻らないと、永久ループになりますよね そのへんは心配いらないのでしょうか?
638 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 21:49:19.88 ID:gOehAXHk.net] ×子が死んだ時に待ってる制御が必ず戻ってくるのか ○子が死んだ時に制御が必ず戻ってくるのか でした
639 名前:デフォルトの名無しさん mailto:sage [2016/06/09(木) 22:59:36.92 ID:gOehAXHk.net] $childPidList = []; for ($i=0; $i<5; $i++){ $pid = pcntl_fork(); if (!$pid){ echo getmypid()." forked\n"; sleep(100); exit(); }else{ $childPidList[] = $pid; } } while (count($childPidList)){ $pid = pcntl_wait($status); $idx = array_search($pid,$childPidList); unset($childPidList[$idx]); echo "{$pid} ended\n"; } こんな風にしてからkill -9で子プロセスを外から強制終了させても、 ちゃんと制御が戻りました 心配しなくても良さそうですね?
640 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 03:12:35.40 ID:0e6lKjME.net] 1つのファイルに1つのclassが書かれてるとして、許せる行数/KiB数はどのくらい?
641 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 04:50:15.18 ID:9JKXGlcv.net] >>637 IDE使ってれば勝手に教えてくれる。 まだテキストエディタで書いてるのか?
642 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 08:24:36.60 ID:PSfQ4+av.net] 最近のIDEは行数にまで口出してくるのか。うぜえなw
643 名前:デフォルトの名無しさん [2016/06/10(金) 10:09:46.35 ID:mlu6vup/.net] 時代はJavaScriptよ Mode.jsなら何でも出来る
644 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 10:19:00.19 ID:QeldepT2.net] >>639 「変数が再定義されています。予期しない不具合を避けるため別の名前を用いて下さい」とかまで言ってくれるぞ。可愛いだろ?時々ぶっ壊したくなるけど。
645 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 10:21:02.62 ID:wJTDb5hO.net] うちはもう全部SATAだぞ いい加減古いPCは捨てろよ
646 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 11:16:48.36 ID:vAcnizog.net] サーバーのファイルを直接的に編集できるからNotepad++使ってるんだけど こうしたFTP機能があるIDEってある?
647 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 12:29:34.80 ID:QeldepT2.net] 大抵のIDEはできるんじゃねえの? そういう事はやらんからよく知らんけどやってる奴は見た。
648 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 12:54:52.57 ID:vAcnizog.net] >>644 ありがとう。 IDEは重いから避けてたけど、勉強がてらもう一度やってみます。
649 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 14:36:45.66 ID:VX0S6iFV.net] phpの関数の引数の順番に迷うことが多いです 覚えやすいコツありますか?
650 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 14:38:09.38 ID:VX0S6iFV.net] たとえばarray_searchなら arrayをサーチするんだからarrayの方が先やろ→誤 となります
651 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 15:57:07.05 ID:gE4dMqOe.net] >>646 覚えることを諦めてIDEに教えてもらう
652 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 18:47:17.98 ID:9JKXGlcv.net] >>648 いい流れだ。腕を上げたな。 >>646 覚えなくてもいいから何が何でもphp.net検索しろ。 たまに下の方まで読むといろいろためになる情報が書いてあったりする。
653 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 18:50:21.21 ID:9JKXGlcv.net] >>647 そういうのはJavaScriptみたいなのがいいよな。 array.join(",") みたいなの。ずっと分かりやすい。 Rubyもこんな感じだったっけか。
654 名前:デフォルトの名無しさん [2016/06/10(金) 18:54:05.44 ID:TQGlf4QP.net] PHPStorm使えばいいんだろ?
655 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 19:02:50.34 ID:4O+4qcPo.net] PSR-2フォーマッタついててPHPマニュアルがすぐ引けるなら何でもいい
656 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 19:31:49.15 ID:9JKXGlcv.net] >>651 PHPStormは有償だから必ずしも職場で使えるとは限らない。 使えればラッキーだが、使えなかった時の事も考えておかなければならない。
657 名前:デフォルトの名無しさん mailto:sage [2016/06/10(金) 20:18:43.09 ID:nh6LPx54.net] >>612 なんで特定の本の話題出してそれに答えなきゃならんのか もってること前提で質問されてもここはサポセンじゃないわけでな ちなみに本に頼ったことなどない
658 名前:デフォルトの名無しさん [2016/06/10(金) 20:26:02.28 ID:TQGlf4QP.net] >>654 亀レスにも程が有るのでは?
659 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 02:22:58.71 ID:BPhbrCpU.net] 亀をいじめないで!
660 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 05:12:42.04 ID:YhzsbXwG.net] 40レスぐらいで亀って随分平和になったな
661 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 06:46:43.40 ID:U0YLx5iK.net] レス数の問題だと思う奴は頭の障害疑ったほうがいいぞ。 普通は時間とタイミングを考慮する。
662 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 11:22:18.74 ID:7IE41uX0.net] ファイルをオープン(なければ作成) →ロック →読み込んで配列にunserialize →配列の内容を変更 →配列をserializeしてファイルに書き込み →ロック解除 ということをやりたいのですが、 ロックする前の、もしファイルがなければ作成する、という処理の部分は 排他的ではないので、変なことが起きる可能性があるんじゃないかという気がします どうなんでしょうか?
663 名前:デフォルトの名無しさん [2016/06/11(土) 11:35:30.80 ID:BbMy6dfc.net] >>659 其の通り
664 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:05:21.84 ID:U0YLx5iK.net] そういう心配しなくてもいいようにDBつかうんだぬー わざわざファイル操作で頭悩まさると禿げるんだぬー
665 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:11:12.11 ID:7IE41uX0.net] でも良くある処理ではありますよね? どうすれば問題が出ないようにできますか?
666 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:18:20.33 ID:enSm4S6w.net] 何らかの方法で排他的ロック方法を採用する 動作させるOSによって色々方法はある
667 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:21:08.46 ID:e5AOazPt.net] uniqid()とかで一意なファイル名にする
668 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:24:02.14 ID:enSm4S6w.net] →ロック →ファイル操作 →ロック解除
669 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:30:39.02 ID:rc3AwP02.net] >>661 DBならそういう心配しなくていいと思ってるからお前禿げてるんだろ?
670 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:34:32.72 ID:vIdecit0.net] >>659 オープンと無ければ作成は同時にできる。 そこで取得したハンドルを flock すれば何の問題も無い。 でも、ロックファイルと本当に読みたいファイルは分けておくと何かといいと思う。 ロック方式を変える場合とか、データファイルの読み書きに fread じゃなく fire_get_contents とか include とか使いたいとか、 いろいろと融通が利くようになるから。 一度やれば面倒なんてことはないから、たったそれだけのために DB に走るのはまだ早い。
671 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 12:40:53.02 ID:vIdecit0.net] たったこれだけ。 $lock = fopen('.lock', 'a'); flock($lock, LOCK_EX); <排他されたコード> fclose($lock); 排他されたコードとして、データファイル読んで操作して更新する処理を書けばいい。 更新の仕方を工夫すると、共有ロックと排他ロックを使い分けて同時アクセス時のパフォーマンスも上げられる。
672 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:02:26.63 ID:U0YLx5iK.net] >>666 DBはそういうこといちいち考えなくても大丈夫な仕組みがいっぱいあるんだぬー そんな事もわからないからおまえは666とか不吉な数字なんだぬー おまえみたいなとんちきはオジー・オズボーンと一緒に田舎のババアから十字架持って追いかけられるといいんだぬー アホが治るぬー
673 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:05:21.79 ID:U0YLx5iK.net] >>668 > fire_get_contents とか あうあうあうあうあうあうあうあうあう… やばいよやばいよやばいよ… いろいろやばいよ…
674 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:06:01.45 ID:rc3AwP02.net] >>669 その大丈夫な仕組みが>>668 みたいなコードなわけだけど DBとファイルでやってることが根本的に違うわけでもなしに 言ってることもキチガイじみてるし病院いったほうがいいよ^^;;
675 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:06:40.55 ID:U0YLx5iK.net] やばくないか… 酔っ払ってるから何言いたいのかよーわからん 後で読み返す。
676 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:07:43.11 ID:U0YLx5iK.net] >>671 だったらおまえはずっとファイル操作でしこしこやってたらいいんだぬー
677 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:09:52.19 ID:vIdecit0.net] >>670 燃えそうw
678 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:10:00.47 ID:rc3AwP02.net] 酔っ払ってるを言い訳にするぐらいなら書くなよ だからお前のコードはデッドロックばっかおこしてるんだぜ
679 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:14:29.55 ID:U0YLx5iK.net] >>675 デッドロックなんて気にしてるってことがおまえがアホみたいな事やってる証拠なんだぬー 俺様はそんなしんぱいしなくてもいいようにシステムを作るので全く無縁の話なんだぬー
680 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:16:52.88 ID:U0YLx5iK.net] >>667 がどんなアホかと思ったけど、よく読んでみたら ファイルをロックしていても読める関数使えって事らしいから、 本物のアホではないみたいだぬー ただ、やってることが旧時代的でアホらしくてやってられないんでぬー
681 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:19:18.72 ID:vIdecit0.net] >>676 排他する対象がひとつの DB の内容だけにとどまっていれば適当にやってもそうそうデッドロックしないかもしれないけどな。 余所の DB やシステムと連携したり限られたデバイスやリソースを共有するとか、排他は奥が深いぞ。
682 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:24:19.64 ID:U0YLx5iK.net] >>678 その事と本件が何の関係があるんだぬー ファイルロックしてれば他所のシステムと連携した場合でも簡単に排他できるのかぬー? よっぽど大変になるのが目にみえてるんだぬー おまえが物事の深さを語るのは108年早いんだぬー
683 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:25:50.01 ID:vIdecit0.net] >>679 ファイルロックがあれば基本的になんでも排他できるだろ。 セマフォとか知らないか? あれも実装によってはファイルロックだぞ。
684 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:30:10.44 ID:vIdecit0.net] なんでもは言いすぎだったな。 でもいろんな応用をするための基礎だからやっとけって。
685 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:36:56.47 ID:U0YLx5iK.net] >>680 「なんでも排他できるだろ」っておまえはアホかぬ? 排他する事だけがシステムの目的みたいになってるアホ発言だぬー そんなにはいたいなら医者行けばいいぬー ファイルで取り回すよりDB使ったほうがやれることがはるかに膨大なんだぬー 排他なんてそのうちのほんの1メリットだぬー だったらDB使っちゃったほうがお得だぬー とか言ってると、「DB使えない場合はどうすんだ」とか言うアホがでてくるんだぬー だから今のうちに言っとくぬー 一般的でないケースの事なんか知るかハゲ!
686 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:38:31.55 ID:U0YLx5iK.net] >基礎だからやっとけって。 DBは今時常識だからやっとけって。
687 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:41:00.34 ID:c3/xDSGs.net] >>668 if (flock($lock, LOCK_EX)) { ... } という風に失敗した場合の分岐を用意しよう また新しいPHP(5.3.2以降)では手動でflock($lock, LOCK_UN)する必要があるらしい
688 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:42:44.74 ID:vIdecit0.net] >>683 DB 使うなとは言ってないぞ。 手持ちのカードが多ければ好きに使い分けられるだろ。 お前はアクセスカウンター作るにもDB使うんだろうが、その選択しかできないのであれば潰しがきかないぞ。
689 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:43:06.58 ID:U0YLx5iK.net] ほら、なんかいろいろとめんどくさい情報がくっついてきたぬー おまえら、人生楽しそうだぬー
690 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:45:16.50 ID:U0YLx5iK.net] >>685 ファイル操作にこだわってるお前のほうが潰しきかないから他人の心配してる暇ないんじゃないかぬー?
691 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:46:22.53 ID:vIdecit0.net] >>684 LOCK_UN 必須の件は初耳だったけど、それ本当? この辺の機能は OS の機能をそのまま使ってて、そんなに差がでる部分じゃないというか、ハンドル閉じてロックだけ残るってどういう事情だよって感じだが。 ハンドルを複製してるケースとかかな?
692 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:49:14.38 ID:U0YLx5iK.net] >>688 おまえが調べてQiitaにでもまとめといてくれぬ。 必要になった時に見てやるぬ。 それまでは俺様は優雅にDB使ってるぬ。
693 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:53:03.18 ID:vIdecit0.net] >>684 5.3.3 で試したけど、少なくとも >>668 の使い方では LOCK_UN の明示は要らないね。
694 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:55:02.40 ID:c3/xDSGs.net] >>688 ついさっき確認したら変更履歴にそう書いてあったからであって、俺は検証してないよ php.net/manual/ja/function.flock.php どうなるのか想像でしかないが、解放しないと2度目からFALSE返すとかじゃね
695 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:57:05.92 ID:U0YLx5iK.net] 圧倒的な人柱感
696 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 13:58:16.03 ID:U0YLx5iK.net] そういう、ファイルシステムの影響モロに受けそうな処理を平気でやる人たちって、 結局心が強いんだろうな。 オレはチキンだから無理だぬー
697 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:18:34.99 ID:a1oB3JFl.net] まーた馬鹿が暴れてるのかー
698 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:24:21.01 ID:U0YLx5iK.net] まーた馬鹿が戯言だけホザくのかー
699 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:29:21.37 ID:U0YLx5iK.net] 本当に、まともな思考力のある人間はいないのかねぇ…
700 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:39:42.63 ID:a1oB3JFl.net] え?自分がまともな思考力もってると思ってんの?
701 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:46:49.83 ID:7IE41uX0.net] >>668 ロック用ファイルを別に用意するんですね ありがとうございます ちなみにやたらdbを推してる狂人がいますが 今書いてるのはなるべく他のプログラムを使いたくないものなので、 今のところdbは考えていません
702 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:54:08.42 ID:U0YLx5iK.net] >>697 自己紹介乙 このスレの参加者は自己紹介だけは得意だ
703 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:55:15.54 ID:U0YLx5iK.net] >>698 なんか修行でもしてるんだ。学生は暇でいいね。
704 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 14:57:12.43 ID:U0YLx5iK.net] PHPerはとにかく何でもPHPでやりたがるというのは本当だな。 脳みそが崩壊してる。
705 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 15:36:01.25 ID:a1oB3JFl.net] ノウミソ崩壊って自己紹介はやめろって!
706 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 15:43:02.88 ID:U0YLx5iK.net] オウムさん餌でもついばんででください
707 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 15:45:49.48 ID:U0YLx5iK.net] 人間、いないねぇ…
708 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 15:59:10.40 ID:a1oB3JFl.net] 低収入オッサンやめろよ ここはストレス発散のはけ口じゃないんだよ!!!
709 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 16:05:51.89 ID:U0YLx5iK.net] うん、ここはお前らの低能をなぐさめあう場所でもない。わかってるだろ?
710 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 16:06:40.12 ID:U0YLx5iK.net] あと、さすがに酔いがまわってきたから突然落ちるよ。
711 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 16:08:50.21 ID:a1oB3JFl.net] 低能低能いうけどお前レベル低いからな(笑)自覚しろよ!!!
712 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 16:11:06.58 ID:ZgIjL8Zc.net] 最初flock絡みでデッドロックやらかした時は スクリプト止まらないしエラー吐かないしで何が悪いのか全然わからなくて立ち往生状態だった >>698 serializeほど楽じゃないが別途db用デーモンを起動させとかなくていいsqliteは便利 そういや手軽なdbの話じゃ最近berkeley dbの名前を全然見ないな…なんでだ
713 名前:デフォルトの名無しさん [2016/06/11(土) 16:11:26.13 ID:BbMy6dfc.net] PHP使ってるのなんてみんな底辺だから仲良くしようや
714 名前:668 mailto:sage [2016/06/11(土) 16:16:02.35 ID:0LrYNLoc.net] >>698 >>684 の情報により、fclose の前に flock($lock, LOCK_UN) を入れてね。 あと flock 使った排他で重要なところは、処理が終わってもロックファイルを消しちゃダメということ。 ロックファイルの存在確認式なんかだと処理が終わったらロックファイルを消す必要があるけど、flock式はそうじゃない。 同一のファイル(パスではなく inode)をオープンすることでロックをかけるから、消して作り直しても同じファイルにはならずその間でのロックがかからない。 あと、NFS 領域に対しては flock が使えない場合があるから、それは制限事項として覚えておいて。 といった具合に説明すると長くなるけど、コードはシンプルだから覚えておいて損は無いよ。
715 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 16:24:29.25 ID:ZgIjL8Zc.net] >>691 いや違う、falseを返すとかじゃなくてデッドロックを引き起こす 延々とロック取得待ち状態になってkillしなきゃいけなくなる
716 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 19:09:00.14 ID:U0YLx5iK.net] お前ら、人生楽しそうだな。 俺は頭痛い…
717 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 19:12:41.27 ID:U0YLx5iK.net] おっかしいな… なんでこんなに頭いたいんだ?
718 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 21:39:16.03 ID:vIdecit0.net] >>712 マニュアルに書いてあることにケチつける気は全く無いんだけど、 Linux の 5.3.3 と Windows7 の 5.6.22 で実験しても、LOCK_UN が必要だと思われる挙動が認められない。 fclose だけでロックは外れるし、同プロセス内で同じハンドルに対してアンロックも fclose もしないまま 2重にロックを掛けてもデッドロックしない。 どういうケースで LOCK_UN の明示が必要なんだろう? 実験コードはこれ。 $lock = fopen('lock','a'); echo "start\n"; if(!flock($lock, LOCK_EX)) { echo "fail 1\n"; exit(1); } echo "locked 1\n"; // ロック成功 if(!flock($lock, LOCK_EX)) { echo "fail 2\n"; exit(1); } echo "locked 2\n"; // 二重ロックでもデッドロックしていない fgets(STDIN); // ENTER が押されるまで待つ fclose($lock); // アンロックせずクローズ print "unlocked\n"; sleep(5); // プロセスの終了を引き延ばす(ロック残り状態があるならそれを維持する) print "end\n";
719 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 22:15:24.50 ID:ZgIjL8Zc.net] >>715 すまんが712は単純に「LOCK_EXされたファイルへのLOCK_EX」の挙動を書いただけ flockの仕様から同一プロセスからの多重flockは後に指定したLOCK_**に上書きされるだけ、なのも確実(winは知らん) で、記憶掘り返しながらこっちでも試してみたけど>>715 の言うとおり 同一プロセス内でも、別プロセスでも、fopen->flock->fclose->fopen->flock でデッドロックしなかった flock($fh, LOCK_EX)絡みでデッドロックになってハマった記憶が確かにあるんだがなあ…しかも1プロセスで 昔書いたソースとメモを読んでるけど該当箇所が見つからん
720 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 22:25:33.55 ID:U0YLx5iK.net] 具合悪い… 吐きそう…
721 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 22:43:11.56 ID:vIdecit0.net] >>716 アンロックも fclose もせずに fopen からやり直したに一票。 $lock = fopen('lock','a'); flock($lock, LOCK_EX); echo "locked 1\n"; $lock = fopen('lock','a'); flock($lock, LOCK_EX); echo "locked 2\n"; それは置いといて、仕様変更の事情が気になったので PHP のソースを読み始めた。 読んで分かるかは分からんけど、とりあえずソースを flock で grep したところから辿ってる。
722 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 22:53:40.15 ID:U0YLx5iK.net] 排他的に内容更新したいだけなのにお前ら何やってんだよ…
723 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 23:21:54.93 ID:u5pRtWh9.net] 僕の友達に「ゲームプログラムを兄から頼まれてよくやってるー」などと言ってる奴がいます。そいつにどんな言語使ってんの?とかきいてもいろんな言語使ってるから意識したことないわwとか誤魔化したり、c言語は難しくてよくわからんとか言っているのです。 なんか嘘くさいんで掘り下げてやろうと考えてます。 もしゲームプログラムするならこれは知ってて当然みたいな知識あったらそいつに仕掛けて反応見てみたいので教えてください。
724 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 23:27:06.01 ID:u5pRtWh9.net] 各場所間違えてました ごめんなさい
725 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 23:36:10.98 ID:ZgIjL8Zc.net] >>718 そんな感じがしてきた。(だが718のコードだと$lockを上書きしちゃってるからデッドロックは起きない) 同一のファイルを二重に開いて別々にファイルハンドルを保持し別々にflockしたとき 片方だけでもfcloseしたら両方LOCK_UNされることの対策か、とも思ったけど 実際に下記を手元のwin-5.2.0とlinux-5.1.6とlinux-5.6.8で試してみたら、どうも違うようだ $file = './flock.lock'; $fh1 = fopen($file, 'a'); flock($fh1, LOCK_SH); $fh2 = fopen($file, 'a'); flock($fh2, LOCK_SH); fclose($fh1); $fh3 = fopen($file, 'a'); flock($fh3, LOCK_EX); // いずれもここでデッドロックが発生 わからん
726 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 23:46:33.60 ID:vIdecit0.net] >>722 上書きしてるから起こるんだよ、オブジェクトみたいに変数上書きしたら参照が無くなった方が勝手に破棄されるんじゃないから。 でも本質は、一つのハンドルには何度繰り返しロックをしてもスルーされるけど、一つのファイルでも別個の 2つのハンドルを取得しちゃった場合、 その両方にロックを掛けたらそりゃ 2度目の方はブロックされるという点。 意図せずこのバグを引き起こすケースとしてはこんな感じじゃね。 $lock = fopen('lock','a'); flock($lock, LOCK_EX); <なんかの処理、でもうっかり $lock の値を壊してしまう> fclose($lock); // ロックを解放したつもりだけど、$lock が正しいハンドルを示していないから失敗、ハンドルリーク $lock = fopen('lock','a'); flock($lock, LOCK_EX); // 二度目のロック、同じファイルだけどさっきのロック取得済みのハンドルとは別ハンドルになるからロックを取得できない :
727 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 23:50:10.54 ID:vIdecit0.net] >>723 ごめんうそ言った。 ハンドルを上書きしたらクローズされてるみたいね? なので >>723 は忘れて。
728 名前:デフォルトの名無しさん mailto:sage [2016/06/11(土) 23:57:31.23 ID:ZgIjL8Zc.net] >>724 気にすんな しかしこうなると真面目に手動LOCK_UNの意味・有効な場面がわからなくなってくるな というかfclose/flock仕様変更の前後の差異がわからん
729 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 04:10:30.87 ID:p2hTIoUv.net] 懐かしい話を掘り起こしているようで tumblr.tokumaru.org/post/37141017115/
730 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 04:35:52.53 ID:jxNAYoxL.net] オブジェクト指向はアクセス指定子や抽象クラスなどで やってはいけないことや守るべきことをコードの中で示すことができますが フォークすることによって起きる事態に対しては無力だと思います たとえば、プロセスidを入れ込んだファイルパスは、 その都度getmypidを呼んで生成しなければいけない、 というようなことを、コードのシンタックスによって示すことは出来ませんよね コードのどこかでフォークしているということに気付かずに いちいち毎回作り直さずにキャッシュすればいい、と思うことはありそうです いい方法はないでしょうか?
731 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 07:55:29.22 ID:4xmbllsr.net] >>726 参考になった。ありがとう。 でもこれ、system関数のバグなんじゃね? 内部で fork した後、親プロセスから継承したハンドルを閉じてないんじゃ? そこのデッドロックのサンプルだと、デッドロック中はロックファイルの lsof は子プロセス側に 2件ある。 5.3.2 での改修ポイントが間違ってたんじゃないのかなぁ… 少なくとも OS のシステムコールレベルではハンドルを閉じればロックも否応なく外れちゃうし、これは Unix系も Windows も一緒なはずだが。
732 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 08:18:59.24 ID:4xmbllsr.net] 検証した。 やっぱ子プロセスが継承したハンドル持ちっぱなしだよ。 当然マルチプロセスの処理を書く時にはそれを意図的に利用したいことはあるけど、PHP だったら内部で exec系を行う前にはスクリプトで開いたハンドルは全部クローズするべきなんじゃないのかね。 ただ現象が起こる理由は分かったから、それに基づけば明示的なアンロックが無くても影響があるところはほとんど無さそうだと判断するけどな。
733 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 13:06:26.58 ID:0JopogCG.net] そもそもflockシステムコールはもともとマニュアルに書いてあるように flock() によって作られるロックは、 オープンファイル記述 (open file description) (open(2) 参照) と 関連付けられる。 したがって、ファイルディスクリプターの複製 (fork(2) や dup(2) などにより作成 される) は同じロックを参照し、 これらのファイルディスクリプターのどれを使っても このロックを 変更したり解放したりできる。 また、ロックの解放は、 上記の複数のファイルディスクリプターの いずれかに対して 明示的に LOCK_UN 操作を指示した場合か、これらのファイルディスクリプターが すべて 閉じられた場合に行われる というもので、phpのfclose関数の中でわざわざLOCK_UNしてたのは余計なお世話 で本来の動作を阻害していたから5.3.2でやめたって理解でいいんだろうか。
734 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 13:26:47.31 ID:4xmbllsr.net] >>730 うん、よくよく考えると > というもので、phpのfclose関数の中でわざわざLOCK_UNしてたのは余計なお世話 ということが正しいと思う。 元々マルチプロセスなプログラミングで自動で複製されるファイルディスクリプタの扱いはプログラマが意識する必要があって、複製の後始末をせずにロックが残ることがあるのはそもそも設計ミス。 こういうことをフォローするために PHP では fclose でのついでに自動でアンロックが走るようにしていたけど、そうると親子プロセスの一方で不要になったディスクリプタを閉じただけでロックまで外れちゃうという問題を引き起こす。 だったらリソースの管理はやっぱりプログラマに任せるって判断が妥当なんだろう。 互換性の点でも、そもそもディスクリプタの複製が行われるケース(恐らく PHP では fork を伴う何か)と関係無ければ fclose だけでロックは解放されるから問題は無いし、 複製が行われるような処理ではアンロックの必要性についてはプログラマが意識していてしかるべきだから、 結局のところ fclose にアンロックを合わせこむのをやめるのが正解だな。 ただ system をはじめとするシェル系の関数は気軽に使いがちだから、子プロセスのハングアップでロック残りが起こる可能性は身近かもしれないね。 これまでアンロックせず動いてたスクリプトを無理やり改修する必要までは無いけど、これから書くならアンロックは明示しとけってことだな。 久々に勉強になった。
735 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 14:20:54.54 ID:QWuFqOwW.net] >久々に勉強になった。 使う機会あるといいけどな。
736 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 14:39:38.95 ID:Y/PMYUAu.net] 別に子プロがハングしようとLOCK_UNには関係ないんじゃないか execしたphp以外のプロセスがロックしててもphpのロックには関係ないし どんなプロセスでもプロセスが終わればロック解放されるんだから
737 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 15:10:09.70 ID:3j0TR14y.net] >>733 ハングして終了しなければ殺すまでロックしっぱなしだろ
738 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 15:21:03.49 ID:3j0TR14y.net] 説明が足りないか。 PHPでファイルを開きロックをした状態で、例えば system で別プロセスを起動したとする。 このプロセスは、PHP で開いていたファイルディスクリプタの複製を持つ。 ディスクリプタが複製されても取得しているロックはひとつで、このディスクリプタのいずれかでアンロックすればロックは解放される。 誰もアンロックしなかった場合、そのロックに紐付く全てのディスクリプタが閉じられた場合に解放する。 つまりディスクリプタの複製を持った子プロセスがそれを閉じないままハングした場合、親プロセスがディスクリプタを閉じてもロックは解放されず、子プロセスを殺すまでロックされたままになる。 ちなみに子プロセスがPHPかどうかは関係無い。
739 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 15:29:21.61 ID:jxNAYoxL.net] ファイルパスを正規化するにはどうすればいいですか? realpathで出来ると思っていたのですが まだファイルが存在しない時点では結果がfalseになるので駄目でした
740 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 16:09:50.68 ID:hcrF9o1u.net] >>736 標準関数にはない。 Packagistには恐らくあるだろう。
741 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 17:23:27.51 ID:jxNAYoxL.net] >>737 ありがとうございます packagistというところから辿ったらありました https://github.com/perchten/php-truepath/blob/master/src/truepath.php
742 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 17:28:53.54 ID:pWHiM9s7.net] とりあえず話が収束したらまとめとして残してくれる? ここまで議論しといて残さなかったらPHPerとして恥だし
743 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 17:51:52.67 ID:SdG9GRKe.net] 他力本願こそPHPerとして恥だぞ
744 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 18:52:27.13 ID:Y/PMYUAu.net] >>734-735 あるファイルをphpで有効にLOCK_EXしても別プロセスで起動したviには何も影響しないと認識していたが? だからphp以外をexecしてロックが生じてもphpの記述には関係がない=fclose前のLOCK_UNに関係ない ある.php内であるいはexecで呼び出した.phpでファイルロックが起きてもmax_execution_timeの縛りで強制終了すればロックは解ける ゆえに「ロック残り」とやらで掴みっぱなしになることはそうそうない、そう認識していたんだが
745 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 18:52:38.31 ID:QKWa7och.net] で、お前らぴーえいちぱーって読んでんの?
746 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:03:36.38 ID:4xmbllsr.net] >>741 flock によるロックって別のプロセスからのファイルアクセスを禁止するわけじゃないから。 同時にロックを取得できないだけであり、それによって「ロックを取得しようとするプロセス同士」を排他するわけ。 ロックを取得しようとしないプロセスはロックされたファイルであろうとアクセスし放題だよ、例えば vi とかね。 Windows では他のプロセスからのファイルアクセスを禁止することもできるけどな。
747 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:06:30.53 ID:QKWa7och.net] ピーチクパーチク、ピーエイチパーチク ヨー、チェケラッチョー
748 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:15:10.09 ID:Y/PMYUAu.net] >>743 あれviってflock使ってなかったっけ?まあいいや他のなんでもいいんだが 本旨はphpにおける明示的flock($lock,LOCK_UN)の必要性だろう、それが他プロセスとどう関わるんだ 結局どういうときにLOCK_UNしないと「ロック残り」が起こるんだ
749 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:35:01.71 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:43:46.46 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:49:34.59 ID:4xmbllsr.net] >>747 > 親がロックを取得した fd をそのまま親と子で共有するなんてことはめったに無いから、親なり子なりでその fd を閉じる処理を書くことになる。 ちょっと誤解を招くかもしれないから捕捉。 親がロックを取得した fd をそのまま親と子で共有するなんてことはめったに無いから、 その fd はどちらか一方にとっては不要であるから、そちらのプロセスでは最初にその fd を閉じる処理を書く。
752 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 19:58:20.79 ID:p2hTIoUv.net] >>745 プロセスが生きている間においては「ロック残り」が発生するが、どうせ死ぬから問題ないというスタンスだとすれば、 max_execution_timeを0にした場合や、(初期値が0である)CLIの場合は生き続けるよ。
753 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 20:37:09.64 ID:SRdEl8UG.net] HTMLとは ハイパー テキストマークアップ ラングアゲ
754 名前:デフォルトの名無しさん mailto:sage [2016/06/12(日) 21:40:22.72 ID:ETS5lku+.net] ランゲージ
755 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 09:32:27.21 ID:Mgx0zrpD.net] 今phpをステップ実行できるデバッガで便利なのってどのあたり? ステップごとにそれぞれの変数の中身がどうなってるか簡単にわかるとうれしい
756 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 13:49:19.06 ID:XIduanRK.net] array_filterで関数に他の引数も与えたい場合はどうしたらいいですか?
757 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 14:23:37.32 ID:TYgkMCrQ.net] >>753 コールバックにオブジェクトメソッドを指定して、オブジェクトに他のパラメータを持たせるとか?
758 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 14:36:57.48 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 15:15:41.61 ID:XIduanRK.net] >>755 phpもクロージャ出来るようになってたんですね ありがとうございます
760 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 16:04:29.44 ID:poUAr+t+.net] Array→アレイ→アレ?→あれれ? という発想が頭から離れなくて頭が基地外になりそうなんだけどプログラミングは向いてないよね? ちなみに仕事はPG全く関係なくて異業種の作業員
761 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 18:18:38.79 ID:Mj2HqjrQ.net] おでかけですか〜?
762 名前:デフォルトの名無しさん mailto:sage [2016/06/13(月) 18:53:18.04 ID:I48wzFwG.net] おまえら、平和でいいな。
763 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 00:37:10.95 ID:e/1BDrQk.net] >>757 電気屋さんとか電波屋さんと仲良くなれそう
764 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 02:04:02.36 ID:vpCPShaK.net] 配列をオブジェクト指向的に使うための組み込みクラスは何故ないのでしょうか?
765 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 03:26:27.75 ID:E92ohJVI.net] ないんですか?
766 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 03:29:28.98 ID:sdXnBDtj.net] >>761 当初はあまりオブジェクト指向じゃなかったという点と、 現状の array をそのままオブジェクトとして見なす変更をしてしまうと array を関数の引数に取る場合に他のオブジェクトの扱い(array はコピー渡し、オブジェクトは参照渡し)と一貫性が取れなくなるから、今更どうにもできないってところじゃね。 それより、関数が返す array を直接添え字でアクセスできないのをなんとかして欲しい。 ようは explode(',', $str)[1] みたいにやりたいわけだが、この改修ならほとんど問題無くできそうな気がするけどな。
767 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 03:34:56.83 ID:pjhL6UK+.net] list(,$test)=explode(',', 'test1,test2,test3'); こうするのがせいぜいだが、これで妥協するか自分自身が開発に参加して改修するかだな
768 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 03:48:41.99 ID:E92ohJVI.net] できないんですか?
769 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 05:18:59.07 ID:jLlAbvBE.net] ArrayObjectとArrayIteratorならあるぞ
770 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 09:39:15.99 ID:1o9WExv+.net] >>761 実装済みの>>766 に加えて自前クラスでもArrayAccessインターフェイスを実装すれば配列のように扱えるクラスを実装出来る
771 名前:デフォルトの名無しさん mailto:sega [2016/06/14(火) 10:25:21.42 ID:ekIyBZy6.net] PHPStorm を優勝期限切れで使い続けてる人います? バージョンアップできなくてつらくない?
772 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 11:58:51.69 ID:vpCPShaK.net] ありがとうございます ArrayObjectってあったんですね 探し方が足りなかったようです やはり関数言語的な書き方をしようと思うと、生配列だと物足りなくなってきますね ただArrayObjectも、関数言語的なメソッドは実装されてないようです eachやmapやreduceなど 既にそういうの書いてる人はいるでしょうけど、 標準実装してほしいところです
773 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 12:23:57.32 ID:nAMCA7y/.net] >>763 explode(',', $str)[1] については いつまでも古いバージョンのPHPつかってんじゃねーよってことだが。
774 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 17:44:21.80 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 19:05:12.07 ID:4d00OzM8.net] 検証すんのめんどくさいから全部コード乗っけてくれる?ハゲ
776 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 19:26:39.01 ID:E92ohJVI.net] mapに何を渡したんですか?
777 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 21:39:45.32 ID:vpCPShaK.net] 失礼しました あまりの非PHPっぽさに釣られて $a.hoge(); みたいな書き方をしていました
778 名前:デフォルトの名無しさん mailto:sage [2016/06/14(火) 23:57:10.36 ID:sdXnBDtj.net] >>770 あれ本当だ いつの間にこうなった
779 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 00:30:10.47 ID:yBESscco.net] >>775 5.4からだから既に4年以上前
780 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 01:15:30.82 ID:/9sc4puR.net] explodeの戻り値がfalseだったら文字列でもfalseでもない null が返ってくることになるよな、それ noticeも出る
781 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 02:58:03.10 ID:6YnDO2OY.net] そうですね
782 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 09:56:12.92 ID:35n6X8km.net] >>776 ずっとそれ出来ないもんだと思ってた...
783 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 10:18:18.00 ID:HJSiSv4s.net] 猿は勉強しないから知らなくても無理はない。気にすんな。
784 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 11:45:48.59 ID:DNtAqMfa.net] わかった。 もう気にしない。
785 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 12:28:52.64 ID:63gxNX9v.net] マイナーバージョンアップで使えるようになった書き方は互換性の面で正直使いづらいな。 使いやすくなることは喜ばしいが。
786 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 14:10:09.61 ID:i5XubNZf.net] 自分の書いたコードが PHPのどのバージョンから使えるコードなのかを判定する ツール的なものはないのでしょうか?
787 名前:デフォルトの名無しさん mailto:sage [2016/06/15(水) 14:13:56.64 ID:x+vvrMaZ.net] 言い出しっぺが作るのです
788 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 03:33:03.54 ID:F+lw57im.net] readdirでディレクトリエントリを読んでいきながら 便宜ファイルを削除しても問題ないのでしょうか?
789 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 11:12:05.38 ID:F+lw57im.net] stackoverflow.com/questions/13507721/how-to-delete-a-file-from-folder-in-php ここを見ると問題ないようです foreachで元の配列を破壊的に変化させてるようなものだと思うのですが どういうアルゴリズムなのか。 一旦全てエントリを舐めて、一つ一つ取り出してるだけなのでしょうか scandirではなくreaddirを使うのはメモリを節約したいという意識からですが 一度に全部読んで単に取り出しを一つ一つしているだけなら あんまり意味がないですね
790 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 11:51:44.03 ID:OOtzbp5n.net] >>785 問題が出るかは確認してないけど、 問題が出るかもしれないから readdir のループでは対象ファイルのリストアップだけして、改めて処理用のループ回してる。
791 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 15:13:15.23 ID:rO3o63UR.net] 配列の操作について質問です。 MySQLから点数データを取得してwhile文で配列に格納するとともに、 点数の5段階の相対評価を得たいです。 学生(要素数が可変)の点数配列scoresがあるとした場合、点数の高い順に 最初の1/5をA、次の1/5をB、次の1/5をC、次の1/5をD、残りをEに分類するには どういう操作をするのが定石でしょうか?
792 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 15:14:35.80 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 15:20:11.03 ID:lOAG9aOi.net] >>788 ここはphpの下質スレですがご質問はphpに関する質問ですか?
794 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 15:25:56.10 ID:rO3o63UR.net] >>790 はい。 PHPでのアルゴリズムの実装方法やそのためのPHPの関数などを教えて欲しいです。
795 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 15:32:21.65 ID:F+lw57im.net] >>787 それが安心ですね ありがとうございます
796 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 15:40:54.97 ID:lOAG9aOi.net] >>791 まあ…ほんとにphpなら 単純に1次元配列を並び替えるだけならrsort($scores);するかその前にsqlの時点でORDER BYすればいい あとは$scores = array_chunk( $scores, (int)(ceil(count($scores)/5)) );とかすればいい データが二次元だとか細かい処理したいとかならrsort()ではなくusort()も使える
797 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 16:28:58.79 ID:rO3o63UR.net] >>793 ありがとうございます。 配列操作の関数がたくさんあってどれが最適なのか見つけられずにいました。 ORDER BYとご教示頂きましたarray_chunkの関数の組み合わせが最適そうですね。 解決できそうです。ありがとうございました。
798 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 16:49:55.80 ID:BCCkDo9p.net] 学生数が5できっちり割れる時は良いけど そうならない時はどうするのかな?
799 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 17:36:01.49 ID:rO3o63UR.net] >>795 ご注意ありがとうございます。 array_chunk には、次の記述がありますが、仕様上問題ないです。 「最後の部分の要素数は size より小さくなることもあります」 php.net/manual/ja/function.array-chunk.php
800 名前:デフォルトの名無しさん [2016/06/16(木) 21:36:32.86 ID:geCt37Iz.net] 質問させていただきます。 Class内でメンバ関数で定義した変数を別のメンバ関数から参照するにはどうすれば良いのでしょうか?
801 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 22:26:42.88 ID:S7gZdFkC.net] >>797 何がしたいか分からんからやりたいことのコード例
802 名前:デフォルトの名無しさん [2016/06/16(木) 22:30:00.80 ID:geCt37Iz.net] >>798 あ、ごめんなさい class { public function a() { $x = 'hello,world'; } public function b() { print $x; //hello,worldを表示する } } 簡潔にかけばこんな感じです。 aメソッドで定義した変数をbでも使いたいです
803 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 23:17:55.32 ID:S7gZdFkC.net] >>799 クラスのプロパティにしたらあかんのか?
804 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 23:23:33.51 ID:OOtzbp5n.net] クラス内の特定の機能だけでしか使わない変数の扱いについては悩ましいこともあるな。 スコープを厳格にしたいならその機能を別のクラスとして切り出すか、そこまで小分けしたくないなら大人しくプロパティにしてしまうか。 JAVAなんかだとクラス内クラスが簡単に扱えてこういうのに便利なんだけど、PHPってどうなんだっけ。
805 名前:デフォルトの名無しさん [2016/06/16(木) 23:23:34.81 ID:geCt37Iz.net] >>800 まあそれでもいいっちゃいいんですけど ちょっとコードが長くなった時とか、別々にして処理させたいんですよね 皆さんがクラス書くときってどうやってるんでしょうか
806 名前:デフォルトの名無しさん mailto:sage [2016/06/16(木) 23:30:35.19 ID:S7gZdFkC.net] >>802 そもそも担当処理が違うなら別クラスにして委譲するのが適切だとは思う
807 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 00:04:23.57 ID:OWOb/yaE.net] public function a() { static $x = 'hello,world'; } これでは要求を満たさないならばおとなしく関数ではなくclassの変数やclass定数にすべき
808 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 01:04:47.60 ID:bXZXch1T.net] >>804 質問を読んでなんでそんなコードが出てくるのか意味解らん
809 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 01:24:40.23 ID:VvmzJV5D.net] 配列から数をキーとして持つ要素だけを取り出す いい方法はありませんか?
810 名前:デフォルトの名無しさん [2016/06/17(金) 02:24:59.62 ID:Ub5TQFWS.net] PHPの本で分かりやすいのある?
811 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 07:28:42.66 ID:yged7CRH.net] >>807 皆さんはどんなosでどんなツールでphpやっているの? 教えて
812 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 07:38:35.18 ID:kypwTnD/.net] 机の上でノートに鉛筆でコードを書きながら脳内デバッグして脳内リリース。
813 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 07:55:00.51 ID:zTp2v+lf.net] >>809 奇遇ですな。 同じくアイデア段階では、パソコンでやらずに紙です。 すぐにフローやイメージ図を書き留められる。放射状に広げていける。 紙とエンピツがその時だけ本当に便利だよね。
814 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 08:36:09.46 ID:CYdk5Mt/.net] シーケンス図は手書きの方が楽、人に見せるときは格好つけてVisioで整形するがな
815 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 10:05:23.41 ID:izLNj4Mm.net] >>807 山田祥寛(よしひろ)、翔泳社 10日でおぼえる PHP 入門教室、第4版、2012 この本は、Webアプリ作成の流れがわかるけど、 文法の説明は、あまりない
816 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 10:10:12.64 ID:zTp2v+lf.net] >>812 その人の本地雷だろ。 初心者の時にPEARの本買ったら、意味がわからなくなって挫折しかかった。 別の本で救済された。文法云々の前にとにかく、理屈をこねすぎて本質部分全然わかりにくい。
817 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 10:56:59.01 ID:izLNj4Mm.net] 山田祥寛は第一人者。 様々な言語の本を書いている。RoRでも有名 講習会も1日4万円!
818 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 11:50:18.31 ID:1vjuVThu.net] >>806 array_filter() で ARRAY_FILTER_USE_KEY フラグを使ってフィルタリングする。 あるいは、foreach で順に走査して該当するものだけ取得する。
819 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 13:12:30.73 ID:VvmzJV5D.net] >>815 ARRAY_FILTER_USE_KEYというのは初耳でしたが、 借りたVPSに入ってるのは5.4なので、まだ使えませんでした おとなしくforeachします ありがとうございました
820 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 16:07:38.77 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 16:09:49.84 ID:KYjoOhmA.net] >>817 データベースは使わないの?
823 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 16:40:23.10 ID:AeewtahV.net] >>818 アイコン変更履歴を格納するという意味でしょうか?
824 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 16:56:34.53 ID:KYjoOhmA.net] >>819 履歴が必要なら履歴も登録してもいいけど。 例えば、user.iconに画像ファイル名が入ってるなら、 select cese when user.icon is null then 'default.jpg' else user.icon end as user_icon 画像ファイル名じゃなくて、あり/なしでもいいし、フルパスにしてもいいし、 userとは別テーブルにしてもいいし。
825 名前:デフォルトの名無しさん mailto:sage [2016/06/17(金) 16:58:19.35 ID:KYjoOhmA.net] っていうか、 > 以下のようにすると、存在チェックと取得の計2回のリクエストが発生してしまいます。 これほんと? $user->idってインスタンスのプロパティアクセスじゃないの?
826 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 00:14:26.11 ID:SEe9xJ4I.net] >>817 ファイルを保存したことが確定していればそれでいいというのであればそのステータスをローカルのDBなんかに保存する アクセス時点でクライアントに画像が見えることを担保したいのであればクライアントサイドでやるべきではないか
827 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 00:48:21.29 ID:W3J+GEBP.net] >>821 の > これほんと? しかまともなレスがない
828 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 03:06:39.83 ID:zkudPs4r.net] >>823 つかそいつ一人しかレス付けてないじゃん。 >>817 S3 は高性能なストレージで存在チェック程度のアクセスは気にするような話ではないんじゃない? ただアイコンを表示する全ての個所でそのコードを書くのはだるいから、デフォルトアイコンを作ってしまうというのもアリだと思う。 ただそうすると、例えばアイコンを設定してないユーザー 10人を一覧表示する場合、 存在チェック式なら同一の画像URL 10個が並ぶからクライアントは結果的に 1回の画像取得しかしないのに対し、 デフォルトアイコンコピー式では画像は個別の 10 の URL になるからクライアントは 10回画像取得をすることになり、 存在チェックなどの些細な負荷より重い実際の画像アクセスが増えてしまう。
829 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 08:33:50.00 ID:8GpUPXrh.net] >>817 ファイルリストをキャッシュしておいて ファイルが変更された(画像ファイルの追加や削除)タイミングで キャッシュをInvalidateすればいいんでないかい?
830 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 08:42:32.00 ID:saT7WdS7.net] default.jpgくらいは手元(ローカルサーバー)に置いておきたいというのはあるわな その場合はlocal://default.jpgとかs3-icon://xxxx.yyyみたいな独自書式を用意するかな
831 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 13:57:43.89 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 14:07:09.69 ID:a+CHws3P.net] 書き忘れ 顧客情報データ持っててhiddenで渡して次画面行きたいだけなのですが 1.全部$_SESSIONに詰め込んで<a href>を何個も作ってそれぞれに飛ばす 2.一つの<form>にsubmitを入れまくって振り分け用phpにhiddenで飛ばす 3.<form>を複数作って顧客情報をそれぞれhiddenで飛ばす $_SESSIONに何でもかんでも詰め込んで良いものか、 それとも振り分け用phpへのアクセスが増える(現実問題は大した事ないけど作り方として)のを避けた方が良いのか というようなことで迷いました。
833 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 16:03:58.68 ID:ue516XaJ.net] 端的に言うと、どれもやらねぇかな。
834 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 16:51:59.61 ID:OFAUAFhz.net] >>827 目的と手段を考えれば答えがでるんじゃない。 データを持って次画面行きたいだけなら$_SESSIONを使うかな。 むしろPOSTする意味がわからない。
835 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 19:19:52.96 ID:a+CHws3P.net] >>829 どんな方法使うんですか? >>830 取り敢えず$_SESSIONに詰め込む事にします
836 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 20:16:44.01 ID:CHIXqkwm.net] 何を参考にしたのか知らないが、普通はそんなやり方はしない
837 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 20:41:31.45 ID:a+CHws3P.net] 普通はどうするんでしょうか
838 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 20:55:18.11 ID:CHIXqkwm.net] 普通は、一つのformに一つのsubmit 処理内容を分けたいなら、 処理の選択をするエレメントを付けてやる
839 名前:デフォルトの名無しさん mailto:sage [2016/06/18(土) 22:59:24.24 ID:pgLfn0h3.net] >>833 自分がしたい処理に似ている有名なサイトのページを分析してみればいい
840 名前:デフォルトの名無しさん mailto:sage [2016/06/19(日) 18:04:14.78 ID:JfyAxJGc.net] nanoappli.com/blog/archives/5448 こちらのサイトで simpleXMLでXMLを組み立てた後 整形するためにDOMDocumentで出力しなおしていますが 最初からDOMDocumentでXMLを組み立てることは出来ないのでしょうか?
841 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 02:38:27.16 ID:tnqQkYkd.net] $xml = simplexml_load_string($str); json_decode(json_encode($xml), true); で得られる形式の配列から xmlに戻す、いい方法はありせんか?
842 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 06:31:07.37 ID:gb8WC3Pe.net] foreachで頑張る
843 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 07:10:53.68 ID:6mpJGPIZ.net] php同士ならserialize/unserializeでいいだろ xmlとかyamlはまああれだ、趣味
844 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 12:29:12.56 ID:tnqQkYkd.net] RSSを配列化→加工→RSSに戻す ということをしたいのです しかしPHPのXML周りはどうもイケてない気がします 簡単なことをするのも煩瑣で、少し突っ込んだ操作も不可能で・・ foreachで頑張るしかないのでしょうか
845 名前:デフォルトの名無しさん [2016/06/20(月) 13:06:06.35 ID:e7qwC/Xx.net] >>840 Rubyでも使いなさい
846 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 13:56:49.12 ID:CH6czl6r.net] Rubyを使ったところで向こうのコミュニティに迷惑掛けるだけだろう どの言語でも共通のDOMすら理解できてないんだから
847 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 14:30:03.12 ID:ppvG3ddJ.net] Groovy なら、クロージャを使って、簡潔に書ける タグ名.each{ 要素 -> 要素.value = 'abc' }
848 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 15:02:05.88 ID:tnqQkYkd.net] 別にPHPが駄目だといっている訳ではありません 実用主義のPHPなのに XMLと配列との相互変換のための関数が用意されていないのっておかしくね? と言っているのです あと値を設定した時に実体参照に変換してくれないところも気が利いてません
849 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 15:30:57.32 ID:tnqQkYkd.net] >>837 あと良く使われてるこの手法もネームスペース属性がそぎ落とされますし・・ イケてないと言わざるを得ません
850 名前:デフォルトの名無しさん [2016/06/20(月) 15:37:59.20 ID:dCVNOi3X.net] 黙れ!小童!!!!! chattykh.com/wp
851 名前:-content/uploads/2016/03/CZezN7LVIAApejO.jpg [] [ここ壊れてます]
852 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 15:43:22.49 ID:CH6czl6r.net] >>844 ,845 配列に型変換して一体何が楽になると思ってるのか知らんけど DOMが嫌だという人のために配列っぽく扱えるSimpleXMLElementが用意されてるだろ ドキュメントも読まずに自分勝手にarray使っておいて気が利かないとか マとして恥ずかしくないの?
853 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 15:46:32.10 ID:kXAYtV38.net] >>847 少なくとも配列とDOMを相互変換とか言ってる時点で正気じゃない 黙ってNGに突っ込んでおくのがよい
854 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 16:19:51.02 ID:tnqQkYkd.net] >>847-848 じゃあXMLのままフィルタリングやソーティングしてみて下さい
855 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 16:21:39.69 ID:o/Q8QvES.net] 入れ子になってる構造でソートだって?
856 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 16:22:31.78 ID:1gK0q/ls.net] >>844 その辺に関してイケてると思う言語はどれ?
857 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 16:26:10.03 ID:1A5wn0fq.net] >>850 兄弟の順序に意味があるXMLだって?
858 名前:デフォルトの名無しさん [2016/06/20(月) 17:55:01.05 ID:o3UTjcQ6.net] セキュリティ関係が頭に全然入ってこないです どうやって勉強すればいいでしょうか
859 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 18:14:04.86 ID:Iph33/KO.net] >>853 模擬サーバーにハッキングしてみる(実証実験)
860 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 18:43:25.91 ID:6mpJGPIZ.net] 頭に入らないってことは頭の安全性は保障されてるんじゃね、セキュアだな
861 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 19:42:02.13 ID:DtHt205g.net] みんな頭いいね。おれなんて total=total+1の時点で頭がテンパってるわ
862 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 19:51:18.58 ID:7UcrPiUv.net] いまでもよく無限ループやらかします(小声)
863 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 19:56:33.91 ID:Ht1YDCGg.net] >>857 ループ変数を $i にするのを卒業しようとしたら $i++ だけ残ってたり
864 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 21:23:50.71 ID:7KDOMThT.net] イテレートで盛り上がれる純朴さが羨ましい限りだ。
865 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 21:28:32.25 ID:7KDOMThT.net] Too young to die, too drunk to live なのかねぇ…
866 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 23:03:57.10 ID:tnqQkYkd.net] >>851 rssの生成は今回はじめてやってるので知りません 他の言語と比較してイケてないと言っているのではなく 単にイケてないと言っているのです
867 名前:デフォルトの名無しさん mailto:sage [2016/06/20(月) 23:07:57.34 ID:vKqEeD2c.net] >>861 プログラミング言語なんだからイケてるライブラリは作り放題だぞ できたら公開してくれ
868 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 07:36:44.50 ID:F8rFyF6H.net] >>861 XML_RSSってメンテされてないんでしょ、これはあれだ、お前がやれという天啓
869 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 13:10:43.41 ID:ZCseRBtp.net] XMLオワコン JSONだけでいいだろもう
870 名前:デフォルトの名無しさん [2016/06/21(火) 14:03:51.86 ID:ZWokyEcu.net] WEB IDEの PhpStorm ておいくらなの? 会社に購入を申請しようとおもうだけど お値段がどこにものっていない
871 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 14:17:29.46 ID:ZCseRBtp.net] https://www.jetbrains.com/phpstorm/buy/#edition=commercial つうかphpstormでググれば3秒でわかるような質問してる人がプログラマーなのに驚愕
872 名前:デフォルトの名無しさん [2016/06/21(火) 15:02:57.47 ID:ZWokyEcu.net] >>866 高!! 199ドルもするの?? phpstormでググったけどその価格のページにたどりつけんかったんよ
873 名前:デフォルトの名無しさん [2016/06/21(火) 15:07:06.24 ID:ZWokyEcu.net] >>866 とりあえず会社に申請してみます。 ありがとう。
874 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 15:20:20.47 ID:ZCseRBtp.net] ブラウザとか環境によるのかもしれんけど自分の場合こんな感じに出る PhpStorm IDE :: JetBrains PhpStorm https://www.jetbrains.com/phpstorm/ このページを訳す 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ドルね https://www.jetbrains.com/phpstorm/buy/#edition=personal
875 名前:デフォルトの名無しさん [2016/06/21(火) 15:32:11.50 ID:GUPYo8em.net] PEARを使うことによってPHPでの開発は劇的に向上する
876 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 16:01:19.29 ID:GdkMnzSr.net] いまさらですか?
877 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 16:07:25.78 ID:JNUr2v78.net] ネストされた配列を再帰を使わずにパースしていく いい方法はありませんか?
878 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 16:53:13.58 ID:PPdTS3ln.net] $199とか、1日の人件費くらいだろ
879 名前:デフォルトの名無しさん [2016/06/21(火) 16:54:36.54 ID:F8qq0CQB.net] >>871 あんたPEARなんて使ってんの?
880 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 16:56:47.93 ID:GdkMnzSr.net] 安価ミスですか?
881 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 17:10:33.70 ID: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 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 17:30:39.61 ID:GdkMnzSr.net] API仕様知らないけどこれだとまずいの? $deletePhotoPaths = []; foreach ($user->photos()->lists('photos.id') as $value) { $deletePhotoPaths[] = 'photos/' . $value . '.jpg'; } Storage::delete($deletePhotoPaths); という些細なものは置いといても、単数形と複数形のポリシーが適当すぎて気持ち悪い。
883 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 18:18:36.43 ID:E96GoXUh.net] >>876 逆にそれより汚く書くとどうなるんだ?
884 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 18:32:23.09 ID:JNUr2v78.net] 正直ごく普通のコードに見えますが・・。 配列はphotosIdListとかにして配列と示した方が良さそうですね
885 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 18:39:20.94 ID:E96GoXUh.net] ID からパスを求める処理は他でも使うから、メソッドなり関数なりに切り出しておくべきだろうね。 array_walk のコールバックに合わせたインタフェースにするといいかもしれないが、それだと単体の変換向けにはちょっと使いづらくなるから、 そこをどう解決するかにセンスを求められるかもな。
886 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 18:44:08.60 ID:E96GoXUh.net] >>880 array_walk じゃなく array_map にすりゃいいのか。 なんかボケてたわ。
887 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 18:53:30.67 ID:Dmco6gBH.net] >>873 フリーや零細ならそういう考え方でいいが、 ある程度の規模になるとそんな甘っちょろい考え方では済まなくなる。
888 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:06:44.71 ID:E96GoXUh.net] >>872 なんで再帰にしたくないの? パースって具体的にどんな処理? もしかして >>837 の人?
889 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:08:30.54 ID:JNUr2v78.net] >>845 の件ですが ネームスペースだけでなく、属性も消えると判明しました ネームスペースや属性もちゃんと表示するコードをしこしこ手書きしたのに 短い方がいいと思って廃棄してからそのことに気付きました ファックですね?
890 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:10:13.56 ID:JNUr2v78.net] >>883 処理が単一的でないので、再帰だとどうもうまくいかないと思ったのです でも再帰でうまく出来そうです ありがとうございました
891 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:11:19.45 ID:Dmco6gBH.net] >>884 一生言ってろ、dumbass
892 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:17:57.37 ID:JNUr2v78.net] >>886 ハゲは黙ってろ
893 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:36:38.54 ID:oaiM5wE7.net] >>884 gitみたいな分散バージョン管理システムつかいなよ こまめにローカルコミットしとけば 戻りたい地点にすぐ戻れる
894 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:39:12.30 ID:Dmco6gBH.net] サルがVCSか。どのように使うか見ものだな。
895 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 20:48:50.16 ID:E96GoXUh.net] >>884 むしろ XML の使い方を simplexml_load_string で扱える範囲に収める方がいいんじゃない? わざわざ XML を使うなんてのは余所とのデータ交換のためなんじゃないかと思うけど、であればなおさら誰でも読めるフォーマットにした方がいいでしょ。 もう仕様が確定して運用中だったらどうにもならないけど。
896 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 22:24:57.65 ID:JNUr2v78.net] >>884 の件ですが ファイルを別ファイルとして保存 →undoしまくる という方法で復活できました >>888 一応dropboxをバージョン管理に使ってるのですが 今回はちょっとしたテストのつもりでデスクトップで書いていたので・・ ちゃんとした開発ではsubversion使ってます >>890 生成しようとしてるのはpodcast用のRSSなので、 仕様はすでに決まってるのです・・
897 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 22:34:22.85 ID:3K6j4RYc.net] >>891 dropboxでバージョン管理とな?
898 名前:デフォルトの名無しさん mailto:sage [2016/06/21(火) 22:50:17.70 ID:nLutN5Ez.net] ほんのちょこっとした個人用プログラムくらいなら Dropboxでも十分よ
899 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 05:54:22.15 ID:cac9buRO.net] 素直にGitは難しくて使い方わかりませんって言えばいいのに。
900 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 08:16:06.21 ID:b8o1sKk7.net] >>893 俺もプロジェクトごっそり暗号化zipにして日付つけてdropboxに放り込んでるわ そういう簡単なソフト作った windowsなら標準でonedriveにバージョン単位で保存できるみたいだけど
901 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 09:54:21.10 ID:pXRO6eh+.net] GitとGitHubは別物ですか? SQLとMySQLみたいな。
902 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 10:14:00.80 ID:PtXJngN/.net] gitを使おうとしたら全部のディレクトリに勝手に管理用のファイルが 生成されたからなんか嫌で使ってない 本番用の公開サイトでもgitの管理ファイルがあってもいいものなの?
903 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 10:52:05.69 ID:Aw/Pyhhi.net] 以前はFTPでファイルのアップロードを行なっていて いつのころからかrsyncで同期するようになり 今ではhg push
904 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 11:01:25.47 ID:uyRcysT8.net] 気付けば何もかもが面倒になって直接サーバ入ってviで作業 >SQLとMySQLみたいな うまい
905 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 11:27:29.72 ID:A5e06e5G.net] 全然うまくねえよ、ハゲ
906 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 11:52:44.24 ID:WfMLciR4.net] >>897 git はトップディレクトリにしか作らなくね? エクスプローラーがあちこちに Thumbs.db を作ったりするよりはよほどいいと思うよ。 なんにしてもそんなものを公開サーバに上げるのはマヌケ。 それよりも、個人的にはファイルのタイムスタンプが維持されないのが気に食わない。
907 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 12:24:51.88 ID:OlmvlLQ3.net] >>901 ありがと。参考になります。もう一度やってみるよ。
908 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 12:59:23.09 ID:k28/2S7E.net] >>882 > ある程度の規模になるとそんな甘っちょろい考え方では済まなくなる。 ある程度の規模になれば、それこそ$199なんて誤差になってくるだろ MSDNに比べれば、ゴミのような値段
909 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 13:08:25.26 ID:A5e06e5G.net] >>903 流石、平しかなった事のない奴の発言は重みがあるな。 お前はずっとそう思ってればいいよ。
910 名前:デフォルトの名無しさん [2016/06/22(水) 13:10:35.97 ID:BFfjtylb.net] PEARを使うことで格段に作業効率がUPするのにどうしてみんな使わないの?
911 名前:デフォルトの名無しさん [2016/06/22(水) 13:42:08.67 ID:pXRO6eh+.net] オブジェクト指向でクラス化して作っても 結局はあとあと、再利用、改変、再購読する可能性が低ければ クラス化する意味はあまり無いのですか?
912 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 14:07:44.37 ID:WfMLciR4.net] >>906 変数をクラス内に閉じ込めておけるという点だけでもクラス化の恩恵はあると思う。
913 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 14:33:22.24 ID:k28/2S7E.net] >>904 お前のような奴がいると、ちゃんとした統合環境も使えず、GitHubなんかも使えず、 CI環境とか監視ツールとかもできあいのものが使えないんだろうよ かわいそうだわ
914 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 18:17:18.97 ID:s+FJ5KLI.net] 「添字配列」を英語で何と言いますか?
915 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 18:27:32.70 ID:k28/2S7E.net] >>909 indexed array
916 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 18:55:49.97 ID:cac9buRO.net] >>908 どういう論拠でその結論をだしたんだ? サルの考えることは本当によくわからんな…
917 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 18:58:15.96 ID:cac9buRO.net] >>905 どれもこれも古臭くて不便だから。 他に良い方法がなく、それが最善である場合を除いては使う必要ない。
918 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 19:03:43.32 ID:cac9buRO.net] 先日PEAR::Mailを使ってるプロジェクトのメンテしたが、 たかがメール送るのにあんなクソみたいなライブラリを使うヤツの気が知れない。 そんな奴だから、PEAR::Mailをより不便に糞ラップしてあった。 そうだ、これこそがPHPerの恐ろしいところだ。
919 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 19:03:46.51 ID:s+FJ5KLI.net] >>910 ありがとうございます
920 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 19:05:47.43 ID:cac9buRO.net] >>906 それ、前スレだったか、かなり前に同じこと聞いてなかったか?
921 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 19:13:55.80 ID:cac9buRO.net] 俺が今でも使ってるPEARライブラリというと、Net_GeoIPくらいか… 代替手段が無いのかどうかはしらないが、 昔書いたコードで特に不便はないから放置してあるというのが正しいが。
922 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 19:27:13.26 ID:s+FJ5KLI.net] >>906 オブジェクト指向で書かないと分かりにくいくらい複雑になった時点で オブジェクト指向に移行します 再利用しなくても、その方が理解しやすくなるというメリットがあります
923 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 20:22:05.78 ID:s+FJ5KLI.net] SimpleXMLElementオブジェクトから XML宣言を取得したいのですが、それらしいメソッドがありません asXMLメソッドで全体の文字列を取得して 先頭から切り出せば取得できますが、そんな方法しかないのでしょうか?
924 名前:デフォルトの名無しさん [2016/06/22(水) 20:57:41.64 ID:UX1eBnCv.net] 基礎を身につけました 実践的な力を付けたいので これを作るといいという物を教えてくだたもれ
925 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 21:17:09.01 ID:14AwA6D3.net] >>919 お家カタログ
926 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 21:17:59.56 ID:tA72U/sZ.net] >>919 スマホゲーム
927 名前:デフォルトの名無しさん [2016/06/22(水) 21:52:32.27 ID:6WTwmu+N.net] >>897 それバージョンアップで変わったよ。 リリース時はトップレベルの.gitフォルダを削除してあげればおk
928 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 21:56:30.25 ID:14AwA6D3.net] >>919 話し相手
929 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 22:03:00.47 ID:s1zk4i3O.net] >>919 なにを作るべきかついて話し合うサイト
930 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 22:10:54.83 ID:npVvWban.net] >>922 それだけで本番環境に置き換えられるならすごい便利かも 貴重なアドバイスに感謝です
931 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 22:30:22.51 ID:rpiti0Uo.net] 不要なもんは削除したほういいけど、デプロイはリモートリポジトリからプル。ってやるなら.gitは残さないと。公開ディレクトリ外である事前提だけど。
932 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 22:34:17.61 ID:WfMLciR4.net] >>926 そのやり方は便利なんだけど、PULLしてる最中の中途半端な断面が公開されてる状態になるというのがいただけないよな。
933 名前:デフォルトの名無しさん mailto:sage [2016/06/22(水) 23:01:22.76 ID:rpiti0Uo.net] >>927 そうだね。厳密にやるならプル後にシンボリックリンクでディレクトリ毎切り替えとか。まぁツールで楽しろってこったね。
934 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 10:25:07.43 ID:XHBKYGLc.net] >>911 > サルの考えることは本当によくわからんな… お前の考えることの方がわからんわ $199ごときでがたがた言うのに、>>908 みたいなことはないというのか?
935 名前:デフォルトの名無しさん [2016/06/23(木) 11:02:23.22 ID:Ox92qZ2z.net] 「CakePHP3」の登場でPHPはプログラミング言語の上位に返り咲くことが出来ました! 多謝!!!!!
936 名前:デフォルトの名無しさん [2016/06/23(木) 11:22:16.08 ID:w+1ZvzwV.net] PHPスクリプトを用いて、某英辞書サイトから任意の英単語の語義を抽出してPSS形式(=P-Study-System)にしたいのですが、どなたか方法がわかる方がいたら教えていただけないでしょうか? ●ネット上におちていたPHPのコード : massive.tendon.bz/english/crawl.txt (拡張子をphpに変えて、FC2サーバLiteで使用) ●某辞書サイト: eow.alc.co.jp/$word (検索ワード)/UTF-8/ ●出力ファイル→output.csv 成功版: massive.tendon.bz/english/output_success.csv 失敗版: massive.tendon.bz/english/output_fail.csv ●任意の英単語→wordlist.txt : massive.tendon.bz/english/wordlist.txt 上記のコードを使い、一度は語義の抽出ができたのですが、「Fatal error: Maximum execution time of 30 seconds exceeded in /コードを格納してあるアドレス/crawl.php on line 37」と、表示されて以来、任意の英単語のみ(失敗版output.csv)しか吐かなくなりました。 フリーソフト「PSS=P-Study-System」に読み込んで、英単語学習をしたい……と思ったのですが、使い方がつまずいています。 どなたか解決方法がわかる方がいらっしゃるようでしたら、どうかご教授のほど、お願い致します。
937 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 12:23:02.34 ID:g0w8fquD.net] >>931 30秒返事がなかったからエラーにするって書いてあるけど そのサイト、て入力でアクセスして返事すぐ返ってくる? 頻繁にアクセスしすぎて制限かけられたとかじゃないの?
938 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 12:30:52.85 ID:x8Tq2OJc.net] 勘で答えるけど、30秒以上も、色々なサイトを、クロールしていたから、 サーバーエラーになったのだろう エラーの際、プロセスの強制終了により、設定ファイルか何かのリソースに、 途中まで中途半端に書き込まれて、整合性が取れなくなった。 それ以後、そのファイルを読んでも、正しく処理されないとか? まあ、普通の無料アプリで、エラー処理まできっちり書いていることは、まれ。 エラー処理後のテストなども、普通しない 設定ファイルなどをすべて削除して、最初からやり直せば? でも、またサーバーエラーが出れば、同じようになるかも
939 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 12:52:22.88 ID:aUw7JVj6.net] 失敗版しか吐かない問題とは別に、クローラはCLIで動かしましょう
940 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 12:56:23.30 ID:ISrN3FK4.net] >>932 いやそれはクローラーで、初回に実行しておくかバッチで回すものなんじゃないの。 多分。
941 名前:デフォルトの名無しさん [2016/06/23(木) 14:23:39.57 ID:Ox92qZ2z.net] CakePHPとLaravolどっちがいいかな?
942 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 17:11:28.79 ID:WHuxwDdZ.net] ネストされた配列に、キーの配列を使ってアクセスする関数って PHPにないんですか? $array['a']['b']['c']['d'] のような配列に、配列['a','b','c','d']でアクセスできるようなやつです
943 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 17:33:34.71 ID:WHuxwDdZ.net] $a = 'a'; $b = 'b'; echo $a ? $a : $b; こういう処理で、$aを二度書くのが嫌なのですが いい方法ありませんか?
944 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 17:39:57.01 ID:WHuxwDdZ.net] boolとしての判定を配列の先頭から行っていって trueになった時点でその値を返す という関数があればいいのですが、phpにはないのでしょうか?
945 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 18:25:23.33 ID:7w307aVI.net] 総合するとおそらく求められているのは php.net/manual/ja/function.array-search.php#91365 みたいなやつだろ、返す値が不満なら自分で改造しなよ
946 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 18:37:39.57 ID:opomWGEo.net] >>938 エルビス・プレスリーを使う echo $a ?: $b;
947 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 18:44:33.45 ID:znOgoNn/.net] >>929 おサルさん、よく聞きなさい。 仕事の現場で大切なのはお金だけではありません。 俺様が一度でも金について話しましたか? だからあなたは平しかなった事のない野猿だというのですよ。
948 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 18:46:27.39 ID:znOgoNn/.net] > >>908 みたいなことはないというのか? あるわけねぇだろ、ハゲ お前は観点がおかしいんだ 保育園からやり直せ
949 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 18:52:22.06 ID:znOgoNn/.net] >>938 PHP7を使う。
950 名前:デフォルトの名無しさん [2016/06/23(木) 18:58:32.34 ID:pXTHavhi.net] 俺様だってよwww
951 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:10:25.79 ID:znOgoNn/.net] 朕と言った方がよかったか?
952 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:12:54.18 ID:ISrN3FK4.net] >>941 おーすげー はじめて知った、こりゃ便利だな
953 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:37:46.60 ID:aUw7JVj6.net] 「こういう処理」のさらに限定的用法でいいならエルビスでも合体でも使えばよろし
954 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:38:09.84 ID:znOgoNn/.net] $hoge = @$_POST["foo"] ?: "bar"; こういうことしなきゃいけなくなるからダメなんだよ。やっぱ7の ?? じゃねぇと。
955 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:40:29.22 ID:WHuxwDdZ.net] >>940 自分でそういう関数を書くのは簡単ですが 標準の機能を使ってやりたいです >>941 エルビス演算子というのですね こんなものがあったとは ありがとうございました
956 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:45:31.19 ID:aUw7JVj6.net] ?: の代わりに ?? を使えと読めてしまうあたり、 偉そうだけど正しい情報を出してくれるタイプの人というわけでもないようだ。
957 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:54:22.07 ID:WHuxwDdZ.net] PHP7では出来るようになってるんですか でもかなりのメリットがあるなら別ですが yumで普通に入るくらいになってないと使いたくはないですね
958 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 19:58:22.33 ID:znOgoNn/.net] この >>951 馬鹿、何言ってるのかよくわかんねぇから、誰か翻訳してくれ。
959 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:00:11.97 ID:znOgoNn/.net] ああ、>>948 に対して >>949 を言ったと思ったのか。サルだな。 投稿時間をよく見てみろよ、マヌケ
960 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:03:47.46 ID:znOgoNn/.net] ID:aUw7JVj6 ← 今日採れたての猿
961 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:04:19.65 ID:aUw7JVj6.net] >>954 え?そういう話じゃないんだけど
962 名前:デフォルトの名無しさん [2016/06/23(木) 20:05:13.04 ID:pXTHavhi.net] サルサルサルサルさるげっちゅ言うてる奴がサルだったというオチ
963 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:09:48.69 ID:znOgoNn/.net] >>954 じゃあなんでどういう話か言わないんだ?おさるさん。
964 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:10:09.01 ID:znOgoNn/.net] アンカー間違えちゃったよ
965 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:12:18.41 ID:znOgoNn/.net] >>929 とか >>956 はマトモに日本語の会話できんのかな?
966 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:13:28.27 ID:aUw7JVj6.net] >>958 それこそ >>948 で書いた。 限定された状況下でしか等価にならないものを、知ってか知らずかそれを言わずに ?: や ?? を使えばいいというレスは 正しい情報とはいえないだけ。
967 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:19:11.19 ID:znOgoNn/.net] >>961 >>938 になんて書いてあるか読めないハゲってことか? 状況が限られてるんだが、PHP7を奨めることになんか問題あんのか? 脳みそないのにお前がハゲになったのは考えすぎたわけじゃなくて遺伝か?
968 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:19:28.62 ID:aUw7JVj6.net] "?: や" は忘れてくれすまん。
969 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:20:22.45 ID:znOgoNn/.net] あと、 > それこそ >>948 で書いた。 > 限定された状況下でしか等価にならないものを、知ってか知らずかそれを言わずに ?: や ?? を使えばいいというレスは > 正しい情報とはいえないだけ。 このクソみたいな日本語は何だ? 中学生でももう少しマシな説明が書けるぞ。
970 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:20:51.96 ID:aUw7JVj6.net] >>962 確認させて。 >>938 の状況に対して PHP7 を使い、そして ?? を使えばいいというレスをしたってことでいいの?
971 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:22:53.99 ID:znOgoNn/.net] > "?: や" は忘れてくれすまん。 こいつ何言ってんだ? ?: の場合、$aが設定されていなければNotice吐くんだぞ? だから >>949 で説明してやったのに。 ここはサル山動物園か?
972 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:23:42.18 ID:znOgoNn/.net] >>965 他に読めるならどう読むか逆に教えてくれ。
973 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:26:01.78 ID:aUw7JVj6.net] ありがと。 $a = '0'
974 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:27:10.81 ID:znOgoNn/.net] >ありがと。 >$a = '0' それがなんの問題があるんだ? 説明してみろよ。
975 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:28:40.89 ID:aUw7JVj6.net] 試せばわかるでしょ
976 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:28:51.68 ID:znOgoNn/.net] $a = '0' $b = 'hoge' $a = $a ?? $b; この場合に$aに入って欲しい値を何だと思ってるんだ?
977 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:29:24.06 ID:znOgoNn/.net] >>970 その言葉、そのまま返すから、何が入って欲しいか言ってみろよ。
978 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:30:34.66 ID:aUw7JVj6.net] 等価じゃないことは確かだから、一概に ?? を使えとはいえないよね。
979 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:31:03.07 ID:znOgoNn/.net] ほら、話をはぐらかし始めたw
980 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:31:36.67 ID:znOgoNn/.net] ああ、こいつ、どうやらこの前のシングルクオートエスケープ馬鹿じゃねぇか?
981 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:32:11.22 ID:znOgoNn/.net] 早く何が入って欲しいか答えろよ野猿
982 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:36:14.10 ID:/dY0hFq/.net] 最近変なのが多いな, 「PHPにないんですか?」のID:WHuxwDdZ 「サルと戯れる人」のID:znOgoNn/ ついでにめんどくさいこと分かってるのにわざわざ相手にしちゃうID:aUw7JVj6
983 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:37:40.18 ID:znOgoNn/.net] >>973 「私は“何が入って欲しいか答えろ”と言いました。 するとどうでしょう? 彼は何もしゃべらなくなりました。 あなたは自分の答えに自信があったんですよねぇ。 あなたは猿じゃないんですよねぇ。ID:aUw7JVj6さん」 https://www.youtube.com/watch?v=wVFNAAHccqA
984 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:38:47.51 ID:znOgoNn/.net] >>977 この状況で単発で ID:aUw7JVj6 擁護って、随分肝っ玉の大きいこって。
985 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:39:39.42 ID:znOgoNn/.net] >最近変なのが多いな, PHPerって本当に自己紹介が得意だよな。尊敬するわ。
986 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:39:50.55 ID:aUw7JVj6.net] >>978 何が入ってほしいかは質問者しか知らんよ。 で、あなたは挙動の異なる演算子を提示した。 それだけの話。
987 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:41:05.93 ID:znOgoNn/.net] >968 : デフォルトの名無しさん2016/06/23(木) 20:26:01.78 ID:aUw7JVj6 >ありがと。 > >$a = '0' 言った後自分で試してみてびっくり m9(^Д^)プギャーーーッ
988 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:41:49.13 ID:znOgoNn/.net] >>981 ほら、更に話をはぐらかし始めたww
989 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:43:04.83 ID:znOgoNn/.net] これが、これこそがPHPerなのです。皆さん、どうぞ ID:aUw7JVj6 を宜しく。 >ありがと。 >ありがと。 >ありがと。 >ありがと。 >ありがと。 >$a = '0'
990 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:45:15.70 ID:znOgoNn/.net] >何が入ってほしいかは質問者しか知らんよ。 >で、あなたは挙動の異なる演算子を提示した。 望む挙動がお前にはわからないのに、なんで異なるって分かるの? おさるさん >それだけの話。 どれな話なの? ちゃんと説明してくれる?
991 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 20:46:11.95 ID:znOgoNn/.net] >ありがと。 >ありがと。 >ありがと。 >ありがと。 >ありがと。 >$a = '0' アホすぎる! アホがすぎるぞ! ID:aUw7JVj6 👀 Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
992 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 21:03:01.96 ID:8l+T8FXA.net] 次スレ立てます
993 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 21:06:15.49 ID:/dY0hFq/.net] >>987 頼んます 前も言ったけどテンプレ古臭過ぎるので要検討
994 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 21:06:46.23 ID:aUw7JVj6.net] ワッチョイつきが立ってるよ 【PHP】下らねぇ質問はここに書き込みやがれ 5 [無断転載禁止]©2ch.net echo.2ch.net/test/read.cgi/tech/1462971286/
995 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 21:09:32.67 ID:8l+T8FXA.net] 次スレ echo.2ch.net/test/read.cgi/tech/1466683550/
996 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 21:11:23.06 ID:8l+T8FXA.net] 立ててしまった・・・ どちらを使うかはおまかせします
997 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 21:17:37.65 ID:/dY0hFq/.net] あー, 重複スレがあったのか。 すっかり忘れてた, すまんな
998 名前:デフォルトの名無しさん [2016/06/23(木) 21:47:29.07 ID:pXTHavhi.net] こんな過疎スレに一日30回近く書き込みする物好きがいると聞いて見物している
999 名前:デフォルトの名無しさん [2016/06/23(木) 22:09:04.47 ID:pXTHavhi.net] さっさと埋めろや無能ども
1000 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 22:12:48.63 ID:WHuxwDdZ.net] issetを使っているところをエルビス演算子に置き換えてみたのですが @でエラー出力を抑制しても、 エラーハンドラをセットしている時にはしっかり呼び出されてますね・・ エラー出力を抑制しないといけないところに使うのは、 あまり筋のいい書き方ではないですね
1001 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 22:29:59.73 ID:ISrN3FK4.net] ?: は便利な書き方だけど $a を boolean として評価した結果と選択したい方が一致しない場合には使いづらいな。 $a が文字列だとして空の時に特別な表示をしようと echo $a ?: '未設定'; なんてやった場合、$a が '0' だったりすると意図から外れちゃうもんな。 便利な書き方なんだけど惜しい。
1002 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 22:39:41.33 ID:BeTIQhqe.net] ?:は、@$foo にしないとやってられない…
1003 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 22:44:17.42 ID:ISrN3FK4.net] @ もまた使いづらい。 特に変数が配列だったりすると、内部的には配列のコピーが作られてパフォーマンスに影響があるんだよね。 @$_POST['foo'] の場合にこのキーが無ければ、$_POST がコピーされ foo に対応する値が null な配列を作り出し、式としては null を返し、作った配列は捨てちゃうと。 なんでこんな実装になってるんだろ。
1004 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 23:01:44.89 ID:/dY0hFq/.net] そもエラー抑制演算子なんて相当の理由がなければ使うべきじゃないし 楽したいならそういう機能のある新しいバージョン使う方が絶対に正しい 新しいバージョンが使えない, 使いたくないというのであれば, 楽をするのはあきらめて素直にissetで定義済みか確認せねばならん
1005 名前:デフォルトの名無しさん mailto:sage [2016/06/23(木) 23:08:30.51 ID: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円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ premium.2ch.net/ pink-chan-store.myshopify.com/
1008 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています