【PHP】下らねぇ質問はここに書き込みやがれ 12at TECH
【PHP】下らねぇ質問はここに書き込みやがれ 12 - 暇つぶし2ch653:デフォルトの名無しさん
21/08/05 13:47:42.25 jTl1oJKL0.net
>>638
だからさー…あのなぁ…俺は「>>575みたい低レベルな話なら」それで解決するだろ?と言ってる
しかもレンタルサーバでやるような低レベルなもんだろ?
ここは質問スレだ
俺は「その低レベルな質問に対して方法を提示した」だけ
言語仕様が我慢できないなら他の言語を使え 何度も同じ事を言わせるな
つかお前、なんかの病気じゃね?w

654:デフォルトの名無しさん
21/08/05 13:51:30.80 jTl1oJKL0.net
>>640
どこから聞いたんだよそんな話w
例えば640が、robots.txtの記述内容を無視してスクレイピングをしたとする
そのせいでサーバに負荷をかけまくりサーバをダウンさせれば、罪に問われる可能性はあるわな
もしくは著作権で守られているコンテンツを無視して転載しても、罪に問われる可能性はあるわな
でもそれは、robots.txtを守らないと逮捕されるって話とは別の話だよな?
理解できるか?

655:デフォルトの名無しさん
21/08/05 13:59:25.27 QPICGq8w0.net
ID:F8+XC2Dv0
ご大層なゴタクを並べてるのにサーバーはレンタルサーバーなのですね

656:デフォルトの名無しさん
21/08/05 14:04:31.11 xD0lMLd30.net
>>643
www

657:デフォルトの名無しさん
21/08/05 14:06:09.47 IpTlZujB0.net
>>628
> 一応聞くが、headerはbodyの後には出力出来ないってのを知ってるか?
知ってますよ笑
だから、本処理終わるまで何も出力しないように書き換えればと言ってるんです
本処理完了の次の行でheader locationを出力し、リダイレクト先のページにパラメーター渡して表示すればいいです
<?php
sleep(3); // ←本処理の代わり(ここまで何も出力しない)
ignore_user_abort(true);
header('location: hoge.php?a=パラ1');
flush();
sleep(10); // ←後処理の代わり
exit;
?>
不可能かどうか、コピペで実行してみて笑

658:デフォルトの名無しさん
21/08/05 14:22:57.10 F8+XC2Dv0.net
>>592
イマイチ全体像が掴めないのだけど、確かにジョブキューイングは出来るようだ。
ただ見たところLaravelのソースコードはphpのようだし、RedisだSQSだとか言ってるから、これは、
DBに対するPDOのように、キューイング機能のあるRedis/SQS等に対しての共通ラッパを提供したもの
ということでいいのか?
(そもそもRedis/SQS等は初耳なので大幅に勘違いしてるかもだが)
なお、確かに今回の俺の用途ならこれで対応可能だ。
話が大げさになりすぎてる感はあるが、
元々Laravelを知ってて、かつ、使える環境なら、この選択もありだろう。
いちいちキューを自前で作るよりもキューサーバー、なんてのは
あらゆる物をマイクロサービスに分割するWeb系的な発想ではあるが、まあ確かに面白い。
実際、Javaとか無駄にモノリシックになってて開発人月がでかくなりすぎてる感はあるし。

ただこれ、インストールが必要みたいだし、最安(=無料)のレンサバじゃ動かないよな?
インストールが必要/有料での契約なら俺的にはNodeの方がマシで、PHPを選ぶ理由がない。
既に言ったが、PHPで書くのは無料サーバーでも動かす為で、
プログラミングについて何も知らない人がGitHubからクローンしたらもう動く!みたいな
超イージーデプロイじゃないとわざわざPHPで書く意味はない。俺なら書き慣れたJSを選ぶ。
(勿論君らがPHPを選ぶのは自由として)

結果的に、エンタープライズな連中はLaravel等を使うから問題なく、こんな基本的な問題も放置されてるってところか。
巣のPHPを使う連中は基本的に初心者であり、細かいことは気にしてないのだろうし。

659:デフォルトの名無しさん
21/08/05 14:31:39.19 F8+XC2Dv0.net
>>641
> しかもレンタルサーバでやるような低レベルなもんだろ?
これはその通りだ。
お前らのやってるエンタープライズなコードでは許されないような方法でも、許されるのだろうさ。
とはいえ、それをやるかどうかはまた別だろ。
プログラミング初心者が四苦八苦して数百行のやっと動くコードを書いてる状況ではないんだよ。
他言語ではバリバリに書ける奴がPHPだとデタラメやっていい、ってことにもならないだろ。
それは矜持の問題だ。
勿論、お前がデタラメやるのもお前の自由だが、俺的には恥ずかしくてそんなコードは公開出来ないよ。

660:620
21/08/05 14:32:09.85 bqGeTZjz0.net
Ruby on Rails では、redirect_to でリダイレクトする(302・発見)。
lesson/step1 にアクセスすれば、lesson/step2 へ飛ばされる
その時、flash に情報を入れておけば、リダイレクト後に使える。
これで、abc と表示される
def step1
flash[ :notice ] = "abc"
redirect_to action: "step2"
end
def step2
render plain: flash[ :notice ]
end

661:デフォルトの名無しさん
21/08/05 14:36:28.61 F8+XC2Dv0.net
>>645
なるほど、その方法でも出来るのは理解した。
が、それだと2往復するし、やっぱりかなり無駄だろ。
結局お前らは「動けばいい」でしかないからそういうことになる。
それだったら、現実装の方がまだマシだよ。

ただまあ、エンタープライズならLaravel等でキューサーバー、ってのは分かった。
確かにこれで玄人は問題ないのだろうさ。

662:620
21/08/05 14:45:20.58 bqGeTZjz0.net
例えば、Ruby on Rails では、
食べチョクみたいな若い女の子が、1人で始める場合は、Heroku, Bootstrap。
食べチョクは、AWS だけど
AWSなら、くろかわこうへいのサロンにも入る必要がある
KENTA, 2021/3
女性エンジニア&個人開発者のだむはさんにインタビュー
www.youtube.com/watch?v=ieljaqRC98A
Heroku, S3, 決済はStripe, Docker
こういうのでビジネスを初めて、会社の時価総額1億円ぐらいへもっていく。
元々、cloud 9, Heroku でクラウド開発してるし、絶対にLinux
XAMPP, MAMP など、Linux以外を使うことはない。
環境が異なると、テストにならない

663:デフォルトの名無しさん
21/08/05 14:50:29.16 IpTlZujB0.net
>>649
理解いただけてなによりです。
ただ2往復の意味が良く分かりません。
1.本処理+後処理.phpにGet付でアクセス
2.本処理終わったらbody用パラメーターつけてhoge.phpに飛ばす
3.ユーザーにはhoge.phpが表示される
4.サーバー側は後処理が継続される
進行は分岐するけど常に1方向だし、どこにも戻ったりもしてないと思いますが。

664:デフォルトの名無しさん
21/08/05 14:55:48.88 F8+XC2Dv0.net
>>651
リダイレクトは別サイトにもいけるだろ。
だから基本的にはブラウザとは2往復するはず。
結果的に同一サイトにリダイレクトされる場合でも、おそらくブラウザはもう一度接続し直してくるはず。
この辺は試した方が早いかもしれんが。

665:デフォルトの名無しさん
21/08/05 15:07:47.04 cuxOZbzu0.net
無料レンタルサーバを使う上級者様が朝の6時半から32レスという渾身のギャグ

666:デフォルトの名無しさん
21/08/05 15:08:57.20 IpTlZujB0.net
>>652
なるほど、再接続という意味ならそうですね。
では別の案ですが、
1.本処理中に吐き出すHTMLの先頭に、文字列なりHTMLタグなりの目印を検出するJavascriptを仕込む。
2.本処理が終わったタイミングで目印になる文字なりHTMLタグなりを出力(Flush)する。
3.Javascriptで対象の目印を検出したら window.stop() で、ブラウザ側から切断させる。

667:デフォルトの名無しさん
21/08/05 15:17:03.80 F8+XC2Dv0.net
>>651
ああだからな、元々は「処理を速く見せる為」なんだよ。それで、
・接続を明示的に切れれば、往復1回+本処理
・接続を明示的に切れない現状では、往復1回+本処理+後処理
・651方式で転送した場合、往復2回+本処理
というようにユーザーには見えることになる。
結果、ネットワークが速くて後処理時間より短いならこれもありかもしれないけど、ネットワークも地味に重い。
この辺のさじ加減は君らの方が詳しいだろうけど、
現状の後処理は、整理するデータがある場合は400ms程度、無ければ10-40ms程度だ。
整理するデータが存在するのは1/20程度の確率だと想定している。
となると、単純には後処理は平均して29.5-58ms程度の重さになる。
だから、ネットワークがこれ以上重いと赤字になってしまうんだよ。
(XAMPPでの時間計測なんて意味あるかボケ!というのはさておき)

668:デフォルトの名無しさん
21/08/05 15:19:28.77 qHbol2On0.net
ID:F8+XC2Dv0は開発環境がXAMPPで無料レンタルサーバを使う初心者なのだから身の丈にあったことをすればいいのにキチガイ過ぎる

669:デフォルトの名無しさん
21/08/05 15:26:17.55 tyzHpayb0.net
>>642
ID:bqGeTZjz0の人にrubyスレで教わりました

670:デフォルトの名無しさん
21/08/05 15:31:25.87 F8+XC2Dv0.net
>>654
それは君がブラウザの動きを分かってない。
flushで出力されるのはPHP側のバッファだけで、apache/nginxのバッファはflushされない。
だからapache等でgzしている場合には最後まで出力されるかどうかはかなり怪しい。(というか、多分されない)
そしてブラウザはある程度溜まったら勝手に出来るところまでパースする。
そしてパースが完了しないとJS側からはデータにアクセスしようがない。(送信途中のデータは読めない)
よってその方法では出来ない。
接続を明示的に切れれば、apache等は溜まってるデータをflushして接続を切りに行き、
それを受けてブラウザはすぐにパースを開始する。
だから、接続さえ明示的に切れれば、すぐさまパースされるんだよ。その後PHPが動き続けてても関係なく。
これをやろうとしている。
まあ、Laravelでキューサーバー使えというのはその通り。エンタープライズならこれなのだろう。
多分君はDOM(HTMLページ内)のJSが同期的に動くのを見て勘違いしてる。
ajaxで取得したデータは、途中では読めないよ。

671:デフォルトの名無しさん
21/08/05 15:31:32.98 jTl1oJKL0.net
>>657
そいつは有名なキチガイだから相手にしたら駄目よ
今このスレでも ID:bqGeTZjz0 で支離滅裂な事を書いてるけど頭の病気だから

672:デフォルトの名無しさん
21/08/05 15:38:06.77 F8+XC2Dv0.net
>>656
だから最初から言ってるが、
俺はPHPの初心者ではあるけどプログラミングは初心者ではないんだよ。
だから、PHPといえども恥ずかしいコードは書けない。

673:デフォルトの名無しさん
21/08/05 15:54:01.25 qHbol2On0.net
>>660
いやいやご冗談がきつい
どこからどう見ても初心者ですよ?
初心者じゃないならXAMPPや無料レンタルサーバに固執しなくていいですし
PHPに固執しなくてもいいですからね

674:デフォルトの名無しさん
21/08/05 15:57:19.11 F8+XC2Dv0.net
ちなみにお前ら、PHPにコントリビュートしてみたい奴はいるか?
居るなら手伝うが。
Web開発ってのは、「こんなポンコツを使わされるくらいなら俺が直してやるからソースコードよこせ!」の繰り返しではある。
今の俺がそれだ。
write_closeは基本的な関数であり、存在しないのがおかしい。
実装は、exitで行っているであろうクローズ処理を前倒しすればいいだけ。具体的には、
1. exitのソースコードを「接続を閉じる部分」と「それ以外」に分け、
2. 「接続を閉じる部分」が write_close() で呼ばれるようにし、閉じたかどうかをフラグで保存、
3. exit ではそのフラグを見て、閉じてない場合は呼んでから、「それ以外」を呼んで終了とする。
とまあ、要は exit のソースコードを2分割すれば済む話ではある。
dieとか、他に止める方法もあるから既に分割されてる可能性もある。
この場合は、単純に関数エントリを一つ追加するだけで終わる。
ソースコードは既にダウンロードしてmain.cとか見てるが、肝心のexit/dieのコードがどこにあるのか分からないんだな�


675:B 知っている奴がいればよろしく。 なお、俺一人だとコントリビュートはしない。 俺はPHPの初心者であり仕様を知らなさすぎて、俺一人だとバグを埋め込んでしまうから。



676:620
21/08/05 15:59:24.92 bqGeTZjz0.net
レンタルサーバーの速さを言っても、仕方ない。
他人と共有しているから、他人がリソースを使うと、待たされる
安いのだから、低品質も仕方ない。
そういうものと割り切るしかない
KENTA は完全に割り切ってる。
PHP は一生使わないでよいと言ってる
金にならないから。
低品質で安い仕事

677:デフォルトの名無しさん
21/08/05 16:09:21.48 IpTlZujB0.net
>>658
あなたこそ、理屈はともかく現実がわかってないかと。
以下をtest.phpにコピペしてブラウザからアクセスしてみてください。
(Chrome、FireFox、Edgeのどれでも)
hello world が表示されて、接続が切断され、"これは表示されない"は受信されません。
----------
<html><head>
</head>
<body>hello world
<SCRIPT language="JavaScript">
window.stop();
</SCRIPT>
<?
echo str_pad(" ",4096);
flush();
sleep(10);
echo "これは表示されない";
?>
</body>
</html>
----------

678:620
21/08/05 16:10:32.06 bqGeTZjz0.net
Ruby on Rails では、
XAMPP, MAMP など、Linux以外を使うことはない
Linux コマンド・シェルスクリプト、Docker, Heroku, AWS も、
KENTA のサロンの初心者用コースに入っているから
それに皆、AWS のくろかわこうへいのサロンにも入る
Windows 10, WSL2, Linux, Docker, VSCode でも出来る
XAMPP, MAMP とか、訳の分からない環境を使うことはない。
動きが本番環境と異なるから

679:デフォルトの名無しさん
21/08/05 16:13:52.63 cuxOZbzu0.net
id:F8+XC2Dv0ってPHPがApacheのモジュールとして動作する時の理屈すら理解してなさそうw

680:デフォルトの名無しさん
21/08/05 17:59:10.16 F8+XC2Dv0.net
>>664
まあわざわざコード書いてよこしたのだから、こちらでも試したよ。
ファイルは200Bytes, ダウンロードサイズは 4.4KBと表示されてる。
確かにそちらの意図どおり、ハロワだけ先に表示されるよ。(パースされてる)
4KBパディングすれば、通常ならバッファをキック出来るから、確かにパーサもキック出来るはずだし、実際そうなってる。
ただな、時間を既に書いたが、それでは間に合わないんだよ。
ネットワークってのは地味に遅くて、例えばここからPHP.netへのpingは264msかかってる。
後処理は平均29.5-58ms程度だと予想されてるので、window.stopがサーバーに間に合わない。
結果、パケットは送信済みで、受け取られたパケットが捨てられるだけだよ。
ただし確かにパースはされてる。(=その方法でもユーザーの体感速度は上がる可能性がある)
ただ、それはページのhtmlだからであって、ajaxではその方法は使えない。
ページのhtmlはブラウザの速度競争のおかげで出来るだけ早くパースするように出来てるからだ。
xmlを送る場合、閉じタグ以降に何かあったらエラーだったので、パディングで押し込みは無理だ。
jsonについては後ろにパディングしてもエラーは出ないようなので、押し込み自体は出来るが、
そもそもAPIが途中のパース結果を見せるように出来てないから、普通に実装されてれば全部揃ってからパースだよ。
世の中の大部分のサイトがこの「押し込み」で高速化してる、というのならブラウザも対応するはずだけど、聞いたこと無いでしょ。

681:デフォルトの名無しさん
21/08/05 17:59:23.81 X/tiD49H0.net
記録37レスか
殿堂入りだな

682:デフォルトの名無しさん
21/08/05 18:01:07.93 X/tiD49H0.net
と思っ�


683:スらまだ記録更新するつもりか



684:デフォルトの名無しさん
21/08/05 18:23:53.35 IpTlZujB0.net
>>667
間に合わないの意味がわかりませんです。
本処理終了の時点でブラウザ表示に必要な情報と、その次の行にwindow.stopまでを一気に吐き出すんだから、そのあとにサーバーから何か来て破棄されようが、どうでもいいんじゃないかしら?
要は十分な情報を受け取った段階でブラウザ側から切断してるんですよ。
本処理の後の後処理を待たせてる時間をなんとかしたいのが目的なのに、4KBでぐだぐだ言われてもねぇ。
後処理を待たせてる時間と比較したら明らかに早い段階で通信終了してるはずですよ。なんとかしたいレベルってことは人間が認識できるレベルの待ち時間は発生してるんですよね。それと比較して4KBは人間にわからないレベルの時間ですよ。
xmlが~とかは、htmlでラップするなり、頭良いんでしょうから工夫してくださいな。

685:デフォルトの名無しさん
21/08/05 18:32:12.95 xWv0yV5l0.net
接続の切断が目的なら、
<?
echo str_pad(" ",4096);
flush();
sleep(10);
これは、いらない。

686:デフォルトの名無しさん
21/08/05 18:37:28.54 IpTlZujB0.net
>>671
あら、そうなんですか?
後学のためにどうやるのか教えて下さい

687:デフォルトの名無しさん
21/08/05 19:02:41.47 Sb1zsMiv0.net
>>654
コレ、面白いね

688:デフォルトの名無しさん
21/08/05 19:56:24.99 uMZDvd8qa.net
無職のアスペルガーであるコミュ症プログラマーはエネルギーが違うね
そのエネルギーをもっと違うところに使おうか

689:デフォルトの名無しさん
21/08/05 20:15:50.49 F8+XC2Dv0.net
>>670
「間に合わない」はこちらの勘違いだった。その後送信データはないので関係ない。
とはいえ、君の案を採用することはないから安心しろ。
それはexecより酷すぎる。
実際のところ、ajaxでhtmlを取っても途中でパースするとは思えないので、iframeに突っ込んでそこから取るしかないが、
そんなコードを見せられたら、ハア?ってなるだろ。
それよりはまだexecの方がマシ。環境依存コードは散らかされたら終わるが、俺がやるのでそれはないし、
とりあえず今回については linux.php と windows.php に纏めておけば、そんなに悲惨なことにならない。
纏めると、よい順に、
1. write_close()を呼ぶ。が、無いのでどうしようもない。
 他言語では普通にあるこれがないのでPHPはクソ、
 そしてこれが必要なことを理解出来ないのでPHPerもクソ。
 (なおコントリビュートする気がある奴が居たら手伝うのでよろしく。
 ちなみにexitとdieは同じらしいので今は分離はしてないね、多分。そしてこの辺の基本的な仕様すら抑えてないから俺だけでは無理だ)
2. 現実装。多分平均 29.5-58ms程度待たされることになる。
 が、そもそもajaxはほぼ自動アップデータだし、実際のサイトではどれくらいの速度なのか不明だし、
 これがもっさり感につながるかは分からない。
3. exec。待たされることはないが、環境依存コードになるので開発とデプロイの手間が増える。
 とはいえ、今のところのPHP的な正解はこれのようだ。
4. htmlタグでラップしてiframeに突っ込んでパースさせる。
 ただ、上から下のdomは触れた気がするが、下から上には触れなかった気がするので、実際はchannelで通信か?
 まあやれば出来るが、コード見たら呆れられるだろ。
 execは精々数行で済むのに対し、こちらは一手間二手までは済まないし、execよりも遅いし。
やるのが目的ならそれで良いが、一応execという解があるのだから、それよりもマシでないと意味がない。
今のところ、現実装のままで本番環境まで持っていき、実際の使用感を確かめて、必要ならexecか、というところ。

690:デフォルトの名無しさん
21/08/05 20:22:29.50 F8+XC2Dv0.net
>>670
> なんとかしたいレベルってことは人間が認識できるレベルの待ち時間は発生してるんですよね。
ちなみにこれはない。まだ部品を動かしている段階。
ただそもそもC出身なので基本的にノーコストで速くなるのならそれを選択する。
そして普通の環境では有る close が無いので面食らっているわけだ。
俺が見落としてるだけだと思っていたが、本当にないのだから驚きだ。

691:デフォルトの名無しさん
21/08/05 20:32:09.79 Sb1zsMiv0.net
まー設計レベルでミスってるから write_close みたいなこと言い出してんだけど、2年ぐらい Web に関われば、自力で解決できるかもね
がんばれw

692:デフォルトの名無しさん
21/08/05 20:54:11.00 xr/U2THc0.net
アスペおじさんに50の質問しようぜ
>>675
・PHPはクソクソという癖してPHPにしがみついてるのはなんで?
・なんで無料レンタルサーバーなの?無職だからお金ないの?
・任意でcloseできてウェブと親和性が高い言語って例えば何?あるならそれ使えば?
・例えばNodeならできるが?Nodeでやればいいのに何でやらないの?
・Nodeが使えるサーバーってVPSで500円ぐらいで用意できるけど500円も払えないの?それとも自分じゃサーバーを作れないの?
・何度かproc_openって出てるみたいだけどそれを無視してるのはなんで?
・そもそも働いてるの?
・そんなコミュ能力で仕事できるの?

693:デフォルトの名無しさん
21/08/05 21:04:38.27 tYvxU5+Zr.net
無料レンサバ案件受けるか普通
イキっててキメぇわ

694:デフォルトの名無しさん
21/08/05 21:05:44.43 IpTlZujB0.net
>>675
あーいえは、こーいうで、なかなか楽しかったです
あなたが不可能と断定したものを、あたしは2つも実現してみせたんですから、少しは敬意を表しなさいよ笑
断定したことをひっくり返されても、上からの態度とか、かっこわるいわよ
そんなんじゃ、いつまで経っても童貞卒業できませんよ

695:デフォルトの名無しさん
21/08/05 21:19:16.52 xWv0yV5l0.net
>>672
場合分けしました。
とは言え、ググって原因は予想したけど。
昔、「システム業界では、滅多に不可能と答えてはダメ」というようなことを言われたことがあります。

696:デフォルトの名無しさん
21/08/05 21:22:27.97 F8+XC2Dv0.net
>>678
proc_openはexecと変わらんだろ。
それで環境依存無しのコードが書けるわけでも無し。
PHPについては何度も言ってるように無料レンタルサーバーで動かす為で、
それは俺が使う用ではないからだよ。
PCのことなんて分からない連中でも動かせるようにして、しかも無料なら試しにやってみようかともなるだろ。
この辺については俺がどういうアプリ戦略を採るかだから、意見言われてもああそうですか、でしかない。
そしてここで色々ひけらかして後々粘着されてもウザイだけだから、特定出来るほど詳しく言うつもりもない。
なおNodeの無料鯖が日本に出現したら間違いなくそれに向けて作る。
今それがあるのならPHPは捨てるし、多分今後は書くこともない。
既に言ったが俺的にベストなのはサーバレスで、実際はレンタルサーバーよりもサーバレスが断然いい。
だからherokuの鯖が日本に出来るのがベストだが、無いのだから仕方ない。
PHPは糞だが、そもそも俺のアプリはそんなに大きいものではなく、
むしろSQLiteのラッパでしかないので、今はphp.netを睨みながらやってるような状況だが、それでも何とか進めてる。
ただまあ、俺が考えてることは今のWebからすると奇妙な事だから、君達と話が噛み合わないのは仕方ない。
それで君らが頭に来てるのも分からんでもない。
ただ先述の通り、詳しく言うと後々の憂いになるから、お互いに技術的なこと以外には踏み込まないようにした方がいい。
Webってのはそれくらいの距離感が丁度いいのだと俺は思ってる。

697:デフォルトの名無しさん
21/08/05 21:23:55.06 xWv0yV5l0.net
場合分けしました。 →場合分けして検証しました。
たいした仕事ではなかったんだけど、
ある公式を忘れても、基本の基本から証明できるので、
基本の基本が用意されてれば、(システム業界では)不可能と答えてはダメなんです。

698:デフォルトの名無しさん
21/08/05 21:24:45.00 tYvxU5+Zr.net
しかもSQLiteって笑うところだな

699:デフォルトの名無しさん
21/08/05 21:25:17.35 F8+XC2Dv0.net
>>680
つかまともな解じゃねえし。それでドヤられても困る。
動くっつうのと、やっていいかと、やるべきかは、別の問題だよ。
ただまあ、アイデアは面白いよ。それは他の人も言ってるとおり。

700:デフォルトの名無しさん
21/08/05 21:30:22.62 F8+XC2Dv0.net
>>684
エンタープライズ用途ならスケールアウト出来ないSQLiteは論外なのだろうけど、
ぶっちゃけ俺の用途ではSQLiteで十分だし、それは既にチェック済み。
というかね、単体では十分速いよSQLite。
まあ、他は使ったこと無いんだけどね。
SQLとか知らんし、とりあえず一番簡単な奴から、ってことで試して、十分だったのでそれまで。

701:デフォルトの名無しさん
21/08/05 21:40:09.08 tHJjXwU70.net
>>682
execとproc_openが同じなんだw
もうこの一言で満足したわ

702:デフォルトの名無しさん
21/08/05 21:44:25.28 tHJjXwU70.net
ちなみに解決法の例
URLリンク(github.com)
あー面白かった
満足したわ

703:デフォルトの名無しさん
21/08/05 21:48:51.81 cTOwQa60H.net
上のレン鯖の人は、
・無料で使える
・日本国内に鯖がある
・好きなミドルウェアや言語をセットアップできる
という条件を満たす環境があるなら、PHPに拘らないという主旨の発言をしているようにみえるが、その認識であってる?

704:デフォルトの名無しさん
21/08/05 21:58:56.90 IpTlZujB0.net
>>681
場合分けとは?
具体的にどういうコードにすればいいのか教えてもらえるとありがたいです。
「いらない」とは、単純に指摘箇所をコードから削除するだけですか?

705:デフォルトの名無しさん
21/08/05 22:05:04.22 vJjfvU2/0.net
php嫌いなのは分かるし俺も別に好きじゃないが、じゃあなんで使うんだよ、使わざるを得ないなら従え、以外に帰着しねーんでは。
お得意のnode様でも他言語からしたらディスられるだろうし不毛だわ

706:デフォルトの名無しさん
21/08/05 22:08:47.31 F8+XC2Dv0.net
>>689
まあyes。正確には
> ・無料で使える
> ・日本国内に鯖がある
ここまではその通りで、
> ・好きなミドルウェアや言語をセットアップできる
この必要はない。好きでもないPHPを使ってるのがその証拠。
一番いいのはNode。
ただ、動的言語でないと無理なのではないかと予想してるので、(が、何故そうなのかは言えない、これはすまん)
GoとRustは駄目だ。というかGoはPHP以上に糞だし、Rustは今のところ様子見してる。
それで、無料鯖で使える動的言語=PHP/Python/Rubyで、どれも知識ゼロだから、
とりあえずメジャーなPHPから試すか、で、まあ、言語と界隈が糞な所以外は問題ないから我慢して使ってる。(というほど使ってないけど)
まあぶっちゃけ、PHPが糞だ糞だと言われつつものさばってるのは、確かに便利なんだよ。これは認める。
そしてPHP.netの出来はマジで素晴らしい。PHP.netと比べるとPythonやRubyのサイトはゴミだね。
この辺も、また、ググッて回答が出てくるかも含めて、知識ゼロならPHPから試すのが妥当だし、そうしただけ。

もしかして他の選択肢がある?
ご指摘の通り、PHPは手段であって、目的ではない。

707:デフォルトの名無しさん
21/08/05 22:18:22.41 cTOwQa60H.net
>>692
あるよ。俺はoracleが提供しているプラットフォームを無料で使ってる。メモリ1GBのインスタンス2つとoracleの自律型DB2台。東京と大阪リージョンがある。
あとGCPのGAEなら東京リージョンで使える無料枠がある。

708:デフォルトの名無しさん
21/08/05 22:20:09.19 F8+XC2Dv0.net
>>691
Nodeは、俺がJS好きなだけで、PHPerからすると糞なのは認める。
というかね、DBと非同期が壮絶に相性が悪くて、Nodeだと結構トンデモなコードになる。
それに慣れてる俺は良いが、慣れてない奴からしたら糞以外の何者でもない。
ただしasyncが導入されたから今書いたらだいぶマシなのかもしれんが。
とはいえ、PHPは真偽判定テーブルとか見るだけでマジで糞で、糞なのを知っててもどハマりするから俺的には無理なんだ。
直近だと三項演算子、勿論結合がおかしいのは知ってるが、癖としてやってしまうんだよ。
そして見た目、バグに見えないから嵌る。
だからまあ、PHPを主力に使ってる人にとっては問題ないのだろうけど、
他言語を普段使ってて、偶にPHPとかだと、本当に無駄に嵌って、あ~、ってのが多すぎて悲しいんだよ。

709:デフォルトの名無しさん
21/08/05 22:22:30.05 cTOwQa60H.net
>>693
DB必須ならGCPだと無料のGCEにDBセットアップすれば良いけど国外リージョンになるので、実質oracle一択かな。

710:デフォルトの名無しさん
21/08/05 22:25:46.31 F8+XC2Dv0.net
>>693
Oracleなんてガチ枠だから完全にノーマークでしたわ。
とはいえ、SQLとはまた違うとは聞いてるし、そもそもそれってあんまりど素人向けじゃないから不味い気が。
逆に無料レンタルサーバーなんて完全にど素人向けでしょ。
向こうもど素人が使う前提だし、やっぱりど素人にはレンサバがお似合いだと思うのだけど。
お互いトラブらないという意味で。

711:デフォルトの名無しさん
21/08/05 22:28:07.44 xWv0yV5l0.net
>>690
勉強不足では困るので、
「ハードウェア」も「予想してから知識を呼び出す」のも必要です。
単純なプログラムを作ってから、魂を足し算します。

712:デフォルトの名無しさん
21/08/05 22:29:03.23 cTOwQa60H.net
>>694
jsの真偽判定テーブルも他言語からみたらPHP8と50歩100歩だと思う。7や5はもう過去だから知らない。

713:デフォルトの名無しさん
21/08/05 22:35:41.93 cTOwQa60H.net
>>696
補足しておくと、インスタンス2台無料だから、oracleのDB使いたくない場合は、インスタンス1台に好きなDBインストールする方法もあるよ。ど素人にどこまでのオペレーションを任せるかはわからんけど。

714:デフォルトの名無しさん
21/08/05 22:36:53.61 IpTlZujB0.net
>>697
えっと、すいません、なにかの宗教ですか?

715:デフォルトの名無しさん
21/08/05 22:44:02.23 F8+XC2Dv0.net
>>698
JSのもそれなりに糞だが、
型を意識してれば実際問題としてそこに命中することはないんだよ。
だから一般のプログラミングをしてる奴にとっては問題ない。
PHP7のはなあ、なんだったか忘れたが、
JS的には問題ないものでもおかしなのがあって、しかもそれに普通に命中するから嵌るんだよ。
とはいえ最早PHP8を使うべきなのかな?三項演算子は解決されてるし。
今確認したが、無料鯖はまだ7のようなのだけど、
現実的に俺が今書いてるのを公開するのはどうやっても半年後とかでしかないから、
その頃に一般的に使えれば全く問題ないし、
駄目でもいつかはPHP8に移行するのだろうから、待ってれば済む話ではあるし。
今7を使ってるのは、実は4年前に味見だけしてて、その時に7だったからなんだよね。
まあ、PHP8は検討しとくわ。

716:デフォルトの名無しさん
21/08/05 22:48:59.24 cTOwQa60H.net
>>701
10月に8.1出るし、今から開発するのに7.4はどうかと思う。アクティブサポートは今年の11月末で切れるし。

717:デフォルトの名無しさん
21/08/05 22:53:13.39 F8+XC2Dv0.net
>>699
OracleやAWSとかは、基本的に「将来有料のお客様になるかも」な人向けだろ。
だから、その気がない人がずっと使うのは不味いと思ってるんだよ。
勿論技術的な問題もあるけど。
無料レンサバはその点、広告を貼りますよ!だから、
永久に無料で使われてもいいですよ、な点が違う。
だからまあ、ガチ向けなものは基本ノーマークなんだわ。
ただ、技術的にはだんだん敷居が下がってて、サーバレスなんてその最たる物だろ。
たぶん、本当になんにも知らないど素人が、それが鯖であることを認識もせず鯖を運用する時代が来つつあるんだよ。
俺はそれに向けてちょっと仕掛けようとしてる。(まあ高確率でポシャるが、それは致し方ない)

718:デフォルトの名無しさん
21/08/05 22:55:44.39 F8+XC2Dv0.net
>>702
了解です。
現実的に古いバージョンを使う理由もないからね。
まあ問題は環境の再構築だが、これもやるしかないね。

719:デフォルトの名無しさん
21/08/05 22:57:56.82 xWv0yV5l0.net
>>700
コマンドラインだけのプログラムでは、
ユーザーが使いやすいものではないので。

720:620
21/08/06 05:53:40.73 13Hyhr+y0.net
無料サーバーは低品質だから、まともに動かない。
他のアプリがリソースを使うと、5秒ぐらいの動画広告でも、1時間動かない事もある
素人向けだから、PHP・SQLite でも良いと思う。
KENTA がPHPを一生やらなくても良いというのは、お金にならないから
未経験者の転職では、Ruby on Rails, Heroku, AWS だけ。
Node.js, Django も使われていない
プログラミングの話というよりは、安い・低品質の仕事の話。
すごく限定されたことしか出来ない、世界の話

721:デフォルトの名無しさん
21/08/06 06:20:19.81 4ndH842K0.net
>>706
実稼働12時間程度で100万円超えの案件もあるぞ
言語やフレームワークだけで語ってる奴には一生回ってこないだろうなw

722:デフォルトの名無しさん
21/08/06 06:29:46.94 UjnAn9a5a.net
>>707
もう令和になっているのにこのネタにマジレスしちゃうの?

723:デフォルトの名無しさん
21/08/06 14:33:32.85 Pmsm9i010.net
どういうネタならマジレスしていいの?

724:デフォルトの名無しさん
21/08/06 18:17:48.03 sAaum+q/0.net
そもそも後処理とやらを軽くすればいい話ではないのかね
DBの設計とSQLの書き方次第で速度がかなり違うよ
そこを見直すのがいいんじゃないかな
それとnode.jsはwebサーバーと一体だから切断があるがphpはwebサーバーからリクエストされるものであって接続の管理はできないのでは無いんでないのかね

725:デフォルトの名無しさん
21/08/06 18:35:46.02 sAaum+q/0.net
そもそもphp上で接続するのではなくブラウザに終了を認識させればいいので
ob_startとob_get_lengthなどを使い
headerでContent-LengthとConnection: closeを出力する方法がマッチしているのではないかな
適当にググってみたけど下のサイトがわかりやすかったかな
URLリンク(pisuke-code.com)

726:デフォルトの名無しさん
21/08/06 20:51:49.77 lgptz/Bq0.net
> Content-Length
おお正解出てきたか。実はこちらもそこに気づいて試して(昼間に)確認済みだった。
んで、いちいち文句言われるからとりあえず夜まで待ってたところだった。
つかマジで、お前らだいぶ酷いわ。改めてPHPerは糞だと再認識した。
小学生同士の小手先テクニック大会は楽しいのだろうけど、そんなんだから上達しないんだと思うぞ。

>>710-711
こちらはheaderだけで問題なくなった。
とりあえずサイト読んでみたが、こちらの結果からすると、ob_xxxもconnection:closeも要らんね。
(というか多分 connection: close は問題になるからやらない方がいい)
> そもそも後処理とやらを軽くすればいい話ではないのかね
> DBの設計とSQLの書き方次第で速度がかなり違うよ
> そこを見直すのがいいんじゃないかな
勿論分かってるが、今でも十分軽いし、これ以上どうしようもないので。
> 接続の管理はできないのでは無いんでないのかね
これは違う。接続の管理を「しなくてもいい」のであって、「出来てもよい」んだよ。
単純には機能が足りてないだけ。
近いのはGUIのイベント、onXXXだが、
あれも最初は addEventListenerとかは不要(onXXXだけで問題ない)と思われてたんだよ。
でも、有るのと無いのとでは大違いで、今は全面的に採用されてるだろ。
といってもお前らは若すぎてこの話が意味不明なら、イベントバブルでもいい。
あれもHTMLは最初から搭載していたようだが、おまえらPHPerなら特に、バブルなんて無くても設計出来ると思ってるだろ?
しかしこれも同様に有るのと無いのでは設計のしやすさの次元が違ってくるので、全面採用になりつつある。
機能が足りてないときでも、足りてないと気づけない人の方が多い。
ネットが無くても不自由しなかったし、その前は携帯が無くても不自由しなかった。
無ければ無いなりにやってしまうものなのだけど、これが有ればどんなに良いか!と思いつける人はほぼ居ないんだよ。
(一応言っておくが、俺も思いついたわけではなく、他言語で知ってたから不便を感じられただけ)
例えば、asyncとか、技術的には最初からあっても不思議ではなかったけど、誰も思いつけなかったろ。あれと同じ。

727:デフォルトの名無しさん
21/08/06 21:13:42.19 lgptz/Bq0.net
>>711
> 適当にググってみたけど
ちなみにどうググッたか教えてもらえないか?
こちらも昼間ググリまくったが、このサイトは見てない。多分ヒットしてない。使ったのはBingだ。
んで、今google/duckduckgo/yandexで"Content-Length header"で試したが、ヒットしない。
ヒットしない(しにくい)理由は簡単で、多分仕様じゃないからだ。
ブラウザが勝手にそう動くだけで、動かなくても問題ないし、動くべきだともされてない物を、
Content-Lengthの紹介で書くことが出来ないからだ。
ただこちらは、前から意味不明なヘッダだなと思ってたので、今日改めて目にした時にピンと来た。
が、ググッてもそうは書いてないし、まあ試しにやってみるか、で、ビンゴだった。
(と書けば簡単そうに見えるが、実際はちゃんと動いているか確認するまでに結構手間取ってる)
だからここみたいに個人レベルのTips集やQiitaとかじゃないと駄目なのだが、
そもそもこちらの検索結果にはそのサイトが出てこない。
どういうキーワードでどこで検索したか教えてもらえないか?

728:デフォルトの名無しさん
21/08/06 22:05:32.07 sAaum+q/0.net
php 後処理 でgoogleで検索して最初に出てきたやつ
接続を切ることができないのはwebサーバーへの接続だから
node.jsはwebサーバーを内包しているから出来ることでphpはwebサーバーを内包していない
Content-Lengthは何バイト応答があったらコンテンツの終わりかブラウザが認知するのでそれを利用したテクニック

729:デフォルトの名無しさん
21/08/06 22:08:02.71 lgptz/Bq0.net
>>711
すまん、713取り下げ。
Bingで「PHP 後処理」でググったら一番上に出た。
俺は仕様を確認しようとしていたのだが、やり方をググれば出るのか。
なまじ自分で出来るものだから「やり方」なんてググろうとも思わなかったのが問題だな。
PHPについては初心者だということを再認識して、「やり方」もググるべきだった。

730:デフォルトの名無しさん
21/08/06 22:36:18.90 lgptz/Bq0.net
>>714
すまん、前後した。手間をかけて本当にすまん。
> node.jsはwebサーバーを内包しているから出来ることでphpはwebサーバーを内包していない
これはその通りだが、PHPから出力をクローズしたら当然apacheにも伝わりクローズされる。
そしてこれはnodeでも同じだ。
実際は(Nodeでも)closeしてもhttpコネクションを切っているわけではない。
それだと再送要求が来た時に対応出来ないだろ。
だから、実際の低レベルの接続はNodeでもPHPでも同様に隠蔽されてる。
(勿論ApacheはHTTP/1.1だとgzipしてるし、別にバッファも持ってる)
よって、PHPでもNodeと同様に『プログラミングモデルとしては』接続を切ることが出来る。
だからやっぱり機能が足りてないんだよ。
パイプで説明した方が分かりやすいかな?
php | apache > /dev/eth0 な状況で、php が stdout(出力パイプ) をクローズすることは出来るだろ。それだけ。
その後も apache は必要なら動き続けるし、終了すれば終わる。
この構造はNodeも内部的に持ってないと話にならないから同様の筈だよ。
ただしそもそも論として「Content-Lengthは常に付けとけボケ!」なノリのようだ。
この手のTipsとしてはStackoverflowが秀逸で、
URLリンク(stackoverflow.com)
の回答の中に以下仕様書へのリンクとかがあるが、
URLリンク(www.w3.org)
読む限りContent-LengthはもしかしてHTTP/1.0時代には必須だったのかな?
今現在、 echo json_encode(...); でjsonを語れ流してるから、これアウトかよ、、、、ってちょっと萎えてる。
メモリを無駄に食わない素晴らしいコードだと思ってたんだがなあ、、、。

731:デフォルトの名無しさん
21/08/06 23:28:26.68 RLLkP2Do0.net
>>716
最初に"TCP接続を明示的に切りたい"とあったので機能はないと回答した
そのあたりは認識してほしい
環境依存にはなるがwebサーバーに通知つする仕組みはある
fastcgi_finish_request
URLリンク(www.php.net)
FastCGI用の物なのでapacheのmod_phpでは不可
また、Content-Lengthは後処理不要ならば付けなくても問題なし
json出すならContent-Type: application/jsonは付けたほうがいいと思う

732:デフォルトの名無しさん
21/08/06 23:30:33.96 RLLkP2Do0.net
楽に使うならクラス作って継承して使えばエレガントに書けると思う

733:デフォルトの名無しさん
21/08/07 00:43:48.11 f2WMK3C10.net
androidにPHPアプリとかあるけど役に立つ?

734:デフォルトの名無しさん
21/08/07 00:55:00.18 dDF85n970.net
>>717
> 最初に"TCP接続を明示的に切りたい"とあったので機能はないと回答した
責める気はないが、これはさすがに屁理屈だろ。
572は確かに俺の書き方が悪い。
ただ、「初心者」が間違った「やり方」を選んでトンチンカンな方向に行くことはよくある話で、
これを防ぐ為には「最終的に何を目指してるか」を言わなければならないが、
俺は575の時点で、
・俺が初心者であり、
・後処理してる最中でもブラウザにパースさせてUXを改善したいから、
・TCP接続を切りたい
と全部揃えているのだから、本当に分かってる奴が居たら、この時点で
「それはやり方を間違ってる。ヘッダにContent-Lengthを付ければそれで済む」の回答が出てきて然りなんだよ。
それがおかしな小手先テクニック合戦になったり、
或いは上記のように全部正しく揃えているのにそれを理解せず「コミュ障」呼ばわりしてくるから、
PHPerは糞だと言ってるんだよ。
これは君も含めてね。何を相手に伝えるべきか分かってないんだよ。
まあコミュ障だからこそ、(=つまり何を伝えれば通じるかが分かってない)
相手がコミョ障かどうか(=つまり必要事項が全部含まれているか)を見分けることが出来ないという、
至極当然の話で、よくあるから慣れてはいるけども。
なんかNodeを勘違いしているっぽいが、プログラミングモデルのレイヤーはPHPと同じだよ。
PHPは上手く抽象化されてる(584)というのなら、そりゃNodeでもその他でも同じだよ。
実際書けば(文法が違うだけで)ほぼ同じコードになる。
下位のTCP接続を直接切りに行けるのはCで相当野蛮に書かれたものだけだが、そんな物存在してないでしょ。
だからこれはエスパーではなく常識で読み替えられる範囲だよ。

735:デフォルトの名無しさん
21/08/07 00:55:28.53 dDF85n970.net
>>717
ただまあ、これはさておき、
そもそも環境依存コードを導入する気はないが、無料鯖は大体CGIモードだから行けるのか。
とはいえ少し金かけたらモジュールも選べて、
その際にいちいち「動かなくなりました」とか言われるのが面倒だから止めとくが。
ただ、これだとやっぱり昔は必要だと認識されてたって事だよ。
正直、Content-Lengthよりも直接的で分かりやすい解決策だから、俺も606で言ってるように、
最初に整備されるAPIであり、普通のプログラマにとっては第一選択肢の筈なんだよ。
ただこれだと、モジュール化した際に不要だと見なされて落とされたってことになる。これは何でだろう?
実装自体は至極簡単だし、基本的な物だから、「問題を多発させた」とかない限り落とす判断にはならないはずだけど。
> また、Content-Lengthは後処理不要ならば付けなくても問題なし
MDNは「付いている時も、付いてない時もあります」と言い、
W3Cは「出来る限り付けろ。ストリーミング以外は付けられるだろ」と言い、
実際の他サイトは確かに「付いている」ので、ちと迷ってる。
> json出すならContent-Type: application/jsonは付けたほうがいいと思う
これは勿論付けてる。てか、そうじゃないとブラウザで正しく読めないので。
> 楽に使うならクラス作って継承して使えばエレガントに書けると思う
問題はそこではなく、メモリを出来るだけ食わない方法でやろうとしてた。
jsonはDBの読み出し結果から直接生成する(長さを予期出来ない)ので、Content-Lengthを付けるにはob_xxxxを使うしかないが、
これだと単純に倍のメモリを食ってしまうので。
まあ君らは「でも物理で殴る方が速いんでしょ?」なノリで、実際これも事実ではあるが、俺としては以下と同様、
正しく使えばポンコツでも速いぜ!を目指したいんだよ。
URLリンク(qiita.com)
JSがそうなんだけど、おそらくPHPも同様で、糞コードばかり食わされて正当な評価を得ておらず、
それなりに洗練されたコードだったら意外と速いんだろうとは思うよ。
Webでは「速いよりも早い方が重要」だからある程度致し方ないのだとしても。

736:デフォルトの名無しさん
21/08/07 08:23:51.18 xdlB1E9b0.net
phpでもやるかなって思ったけど、大勢で同じセッションみるとかできる?

737:デフォルトの名無しさん
21/08/07 09:24:23.62 dDF85n970.net
>>717
一応こちらの現時点の結論を言っておくと、
Content-Lengthはストリーミング以外は全部つけないと駄目だな。RFCでもSHOULDだし、
URLリンク(datatracker.ietf.org)
動きを見る限り、apacheもこれをスヌープしてる。
よって、「仕様準拠」なら flush() だけで何も問題ないから、
fastcgi_finish_requestはモジュール化した際に廃止された、と見える。
だから711内のページ筆者もだいぶ間違ってて、
まずConnection: closeをTCP接続終了(いわゆるFIN/FINACK/ACK)と勘違いしてるが、
実際はこれは同じコネクションを再利用するかの話だから関係ないし、
HTTP/1.1だとデフォでkeep-aliveなので無駄にcloseにするとバグに当たる可能性があるから悪手だ。
URLリンク(en.wikipedia.org)
そしてContent-Lengthを付けたら上手く行くよ!ではなく、付けないと話にならなくて、
仕様準拠=付けてれば最初からこんな事にはならずに済んでる。
だからこいつも俺も『仕様を知っている者から見れば』ただのマッチポンプでしかない。
ここで711内ページ筆者、俺、或いは君らも含めての問題は、レイヤーを間違ってることだ。
PHPは生のヘッダを普通に扱えるレイヤーでのプログラミングにな


738:るから、ヘッダについての仕様を(本来は)熟知してないといけない。 だから575に対してはいきなり「Content-Lengthヘッダ付けろ馬鹿タレ」とぶった切れないといけない。 とはいえ昨今の状況であらゆる階層の仕様を熟知しろなんてどだい無理な話ではあるが。 だからやっぱりもう一つレイヤーを上げるべきなんだ。 ヘッダの知識がない状態で具だけ書きたいのなら、ヘッダ周りを自動的によしなにやってくれるフレークワークを使うべきだろう。 そしてLaravelは見たところそんな感じだ。 なるほど、「セッション周りとかはフレームワークに任せてLaravelだけ使ってろ」というのは当たってる。 (俺も含めて)素人ほどフレームワークを使うべきだろう。 とはいえ、俺はデプロイ先が無料サーバなのでいちいち仕様確認して素PHPレイヤでのプログラミングをするしかないのだが。



739:デフォルトの名無しさん
21/08/08 13:58:58.59 e9M5NaPRa.net
ぶつくさ文句ノイズ垂れ流すの鬱陶しいからNGするためにコテつけてくれよ
「PHPerは糞」とかどうだ

740:デフォルトの名無しさん
21/08/08 14:23:41.94 sHQOKZVt0.net
chmateだと最初から荒らしってなって表示されないよ!

741:デフォルトの名無しさん
21/08/09 02:00:02.31 gYL5uhjB0.net
それにしてもThe老害を絵に書いたような奴だな
加齢臭が半端ない
そんな奴が無料レンタルサーバーでできるPHP案件にしがみ付いてるのがまた笑うところ

742:デフォルトの名無しさん
21/08/09 07:34:41.94 nmP8QoA6a.net
無職の人はたくさんレス書く時間あって良いよね

743:デフォルトの名無しさん
21/08/09 13:13:55.63 78aLRiJY0.net
YouTube で有名な、雑食系エンジニア・KENTA は、
PHP は、一生やらなくてよいと言ってる
価格低下圧力がひどいでしょ。
客もプログラマーも、PHPを見下しているから、大金を出さない
だから勉強しても、まず食えない
それでサロンは、Ruby on Rails だけにしている。
マコなりとか普通、学校でも80万円コース
今はYouTube で、200万円の学校をぼったくりと言ったから、訴えられているけどw
KENTAは日本一だから、学校も訴えて知名度を上げようとしてくる
KENTAは、Railsを使っている会社は、モダンな会社とも言ってるし。
他の会社とは、明らかに異なる

744:デフォルトの名無しさん
21/08/09 21:41:07.25 Qit5eEqI0.net
一YouTuberの言うことを真に受けなくてもいい

745:デフォルトの名無しさん
21/08/09 22:11:02.95 pjjWaghZa.net
1つ聞きたいんですが、SCSSを導入する際メンテナンスが面倒なら嫌だなと思ってます
dart sassにサポートが切り替わった際にその前のruby-sassやnode-sassのコードをわざわざ書き換えないといけないんでしょうか?

746:デフォルトの名無しさん
21/08/10 03:02:08.79 0jLh5m3Ra.net
結局Javaもphpと同じで自分で考えて構築しないとダメなんですね…
人のコードを映しても環境の違いからエラーが出ると
SASSを使うためにとんでもない時間掛かってます…

747:728
21/08/10 11:29:36.31 9wi/dlAk0.net
ruby-sass は、かなり前に終了している
Ruby on Rails 6 では最初から、Node.js, Webpack, Babel。
当然、SCSS でBootstrap を使うことも多い
autoprefixer, browserslist とか、ミニファイなど、すべて全自動
会社では毎週、各ライブラリを更新してテストする。
この環境構築運用部門がないと、ずっと環境が古いままで直せないので、
ウイルス攻撃などを受ける
こまめに更新・テストするのは常識。
貯めてはいけない
だから、Rails入門者にも、CircleCI も必須。
最近は、AWS Fargate, Terraform なども必須で、
皆、AWSのくろかわこうへいのサロンにも入る
KENTA のサロンの初心者向け勉強のコースは、
基本情報技術者資格、Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース

748:デフォルトの名無しさん
21/08/10 14:40:11.44 zAxh9PBJ0.net
JavaとJavaScriptの区別がついてない奴がいるらしいぞ。

749:デフォルトの名無しさん
21/08/11 13:59:27.76 fZr8mTrx0.net
こんな紛らわしい名前を付けた犯人は誰?

750:PHPerは糞
21/08/11 21:04:34.54 C/NScrzP0.net
PHPでの参照渡しの「ノリ」が分からないのだが、どの辺が相場なのだ?
なお、 URLリンク(tanakahisateru.hatenablog.jp) は読んだ。これはいい記事だ。
そしてとりあえずコーディングルールを探してみたが、無い。
PSR/WordPress/Zend/Cakeのはさらっと見たが、文法だけで、動作については記述がないようだ。
だから、動作周りも含めての推奨コーディングルールがあればそれを教えてくれると助かる。

DBから読み出してフォーマットしてjsonで出力する場合、一番単純には、
$resultArr = fetch_from_DB();
format_for_API($resultArr); // 参照渡しで自己書き換え
echo json_encode($resultArr);
function &format_for_API(&$arr){
// ここで何かフォーマット
return $arr; // 直上のコードでは必要ないが、直積み(以下)用にreturnしている。
}
となる。ただしこのコードは以下の様な直積み
echo json_encode(format_for_API(fetch_from_DB()));
だと、
Notice: Only variables should be passed by reference
が出る。(ただし動く)

751:PHPerは糞
21/08/11 21:04:54.72 C/NScrzP0.net
ここで、直積みコードを動かす為には format_for_API を「参照渡し」から「値渡し値返し」に変更する必要が有り、
コードは、
$resultArr = fetch_from_DB();
$resultArr = format_for_API($resultArr); // 再代入
echo json_encode($resultArr);
となる。これだと結果としては速度/メモリ共に変化無い。ただし最近の『再代入禁止』には反するので、
$resultArr = fetch_from_DB();
$resultArr_formatted = format_for_API($resultArr); // 別名
echo json_encode($resultArr_formatted);
と別名にすると、(今回の俺の場合、速度は大して変わらないが)使用メモリは増えてしまう。
これらから言えるのは、
A. format_for_APIは「参照渡し(参照返し)」が正しいはずだが、何故かNoticeが出されてしまう。
 仕様としては、参照渡しに未初期化の変数が渡されたらそこでnull初期化される、ということだから、
 直積みでも動くのは正しく、Noticeが過剰なように見える。(ただし以下7とは矛盾)
 (PHPの構造上 is_ref が変数上にしか持てないのが問題なのだろうが、
 そこはボックス化みたく変数化すればいいだけで、このような右辺値を流し込んでいる状況なら危険性はないはず。
 実際動いているし。だから何でNoticeなの?となる)
B. 同名の変数に再代入する場合は(破棄されることが見えているから)最適化がかかり、問題はない。
C. 別名の変数に保存した場合、元の変数($resultArr)がそれ以降使われない場合でも、破棄されず、最適化がかからない。
 結果、メモリを余分に消費する。
これについて、冒頭の記事では「そういう特殊な高級言語だ」と表現されているが、これは当たっている。
クダグダ考えずに「値渡し値返し」でひたすら全部組み上げてもそれなりに動くからだ。
そして昨今の『インミュータブル』で『再代入禁止』なのは下位での変更が上位のコードから見えないからであって、
PHPの場合は「値渡し」でガッツリ保護されているから、
『再代入禁止』『参照透過』何それ美味しいの?でも確かにそれなりに問題ないはず。

752:PHPerは糞
21/08/11 21:05:17.28 C/NScrzP0.net
俺の現環境ではBしか選択肢がないが、ここら辺はPHP界隈ではどうなってるのだ?具体的には、
1. 理想的にはAでNoticeが削除されるべきだが、既にそうなってる/これから削除予定か?
2. (知らんが、)実はPHPって一つのコードで出来てて、「おま環」ってのがあまり無く、
 俺の環境でBが最適化されてれば、どの環境に持って行っても最適化されてて問題なく動くのか?
 (これについてJSが悲惨なのはご存じの通り)
3. まさか、notice切ればいいだけだろ、とか言うノリか?(個別に切れるのならこれも有りだが)
4. 最適化を期待して、参照渡しの使用自体を禁止/抑止する方向か?
 (真に必要な場合以外は使うな等。今回なら上記のように同名の変数に代入すればいいだけだよね、みたいな。)
5. この辺も含めての、文法(見た目)以外のコーディングルールで有名なのが有れば教えてくれ。
6. このPHP流の参照仕様、使い道無いよな?実は冒頭の記事を読んだ当初、
> PHPの参照はいちど変数が参照になってしまうと、二度ともとに戻ることができないので、扱いにくくてやっぱりダメです。
 とあるので、参照は変数側に固定で、参照変数を値渡しの関数の引数にしても常に参照渡し、なら、
 スゲーカッケー!!!と思って試したが、全くそうじゃなかった。
 しかも参照渡しの関数の戻り値を普通に値変数として確保出来るし、「二度ともとに戻ることができない」というのが意味不明。
 Cみたいに呼ぶたびに自由に切り替えられることを想定しているのなら、それは過剰で、
 (そもそも元々出来たようだがPHP4.1.3で廃止された、というのを見た覚えがあるが、再確認出来ない)
 実際はRustみたいに「mutableな変数は最初から決まっているので宣言時に固定する」で問題ない。
 だからコピーオンライト(これってPHP.netでは書いてないだろ!今日初めて知ったわ!)で
 全部見た目は値渡し値返し、なら、凄く先進的ではあったのだが。
 (なお参照の取り扱いは他言語も苦労してて、C++でも失敗してる)

753:PHPerは糞
21/08/11 21:05:44.32 C/NScrzP0.net
7.
> リファレンス渡しが想定されているところに、値渡しを行うとエラーになります。
> URLリンク(www.php.net)
 ってあるのだが、今回ってこれか?なら動いてはいるがやっぱりアウトなのか?
 ちなみに直積みになってるのは、元はfetch_from_DBの出力側で format_for_APIしてたのを、
 json_encodeの入力側でやるように移動して、結果的に <?= => の間にブッ込まれてるからだ。

まあ色々文句有るんだろうが、それでも答えてやってもいいぞ、って人はよろしく。
一応724の要求どおりにこのスレ内ではコテにしておく。

754:デフォルトの名無しさん
21/08/11 21:40:15.37 PueOOWfrM.net
参照返しも値返しもメモリ使用量差は今日日のメモリ容量から見たらわずかな違いだから気にしなくて良い。
参照返し、値返しを考慮したメモリ省使用量化はクセのあるコードになる。
書いた本人以外が今後保守する場合は、その人にもわかりやすく、ミスさせないためにそういうコードを書かないほうが良い。

755:PHPerは糞
21/08/11 22:21:08.32 C/NScrzP0.net
>>739
その記事とかからすると、どうも過度にやってる奴が居るようだが、今回の件は全くそうではないだろ。
むしろ、「値渡しで自己に再代入って、こいつ参照渡し知らない馬鹿だろ!」って、お前らなら突っ込んでくるところだろ。
がまあ、PHP鯖はPCでしかないので大富豪プログラミングでおk、なのは確かにその通りかもな。

756:デフォルトの名無しさん
21/08/12 00:47:16.96 xG1RPqdX0.net
スクレイピングは逮捕される危険があるって聞いたんだけどマジ?

757:デフォルトの名無しさん
21/08/12 01:38:59.56 wrwwe/e30.net
威力業務妨害の可能性はあるだろう

758:デフォルトの名無しさん
21/08/12 02:19:59.04 ZBXe4sG30.net
被害を受けた事を証明しないとならないぞ

759:デフォルトの名無しさん
21/08/12 11:23:42.11 s+UN3BdM0.net
スクレイピングでは、そのサイトのrobots.txt を遵守する必要がある
初心者がスクレイピングすると、プログラムのバグで無限ループしたりして、
そのサイトを落としてしまう事があるので、超危険!
だから、必ずテスト中は、ローカルPC に対して行うこと!
絶対に、本番サーバーに対して、テストしてはいけない
Udemy の山浦清透、2021/6 の動画を参照。
PHP で、マイナビ転職をスクレイピングしてる
【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI

760:デフォルトの名無しさん
21/08/12 11:52:11.82 ZBXe4sG30.net
仮に無限ループしたとしても落ちるのはサーバー側に不具合があるからだろ

761:デフォルトの名無しさん
21/08/12 12:16:26.88 s+UN3BdM0.net
>>735
Ruby on Rails では、
format.html
format.json
と書いておけば、
/books/1 にアクセスすれば、HTML を、
/books/1.json にアクセスすれば、JSON を返す
jbuilder モジュールでも、JSONを簡単に書ける

762:デフォルトの名無しさん
21/08/12 14:40:12.42 B1L5o8hM0.net
>>741
>>642
こんな事も人に聞かないと分からんない奴が居るんだな

763:デフォルトの名無しさん
21/08/12 14:43:21.86 B1L5o8hM0.net
>>745がサーバ構築した事がない人間なのは分かった

764:デフォルトの名無しさん
21/08/12 14:52:03.99 B1L5o8hM0.net
>>746
お前も PHPerは糞 おじさんを見習って
名前欄に RUBYガイジ って入れてくんない?
PHPerは糞おじさん、2021年にもなって参照渡しでメモリがーとか言ってるはクソ笑う
さすが加齢臭おじさんやね

765:デフォルトの名無しさん
21/08/12 14:59:04.04 sye04Gqu0.net
<input type="text" name="text1" value="aaa" readonly>
ユーザー側がvalue="aaa"を書き換えてpostする事ってできますか?
出来るのだったらhtmlのソースに載るものをsqlに入れる時は全部プレースホルダにしないといけないですよね

766:デフォルトの名無しさん
21/08/12 15:14:15.05 s+UN3BdM0.net
クライアントから送られてくるものは、絶対に信用してはならない。
place holder を使うのが基本
ドラクエ10 では、0.2% ほど、おかしなデータが送られてくると言ってる
伝送エラーでも、パリティーを再計算して、
正しいデータのように見せかけて伝送する、ルーターがある。
そういうルーターを、世界中から排除できない

767:デフォルトの名無しさん
21/08/12 15:29:27.65 ZBXe4sG30.net
>>748
例の図書館サーバーは三菱がメンテナンスしてたんだよな
それは知ってる

768:デフォルトの名無しさん
21/08/12 15:30:13.40 39FD7TF90.net
>>750
いくらでも出来るよ
そういう値をめんどくさいからと言って送ったりしない事
サーバー側に保存しておけ

769:デフォルトの名無しさん
21/08/12 15:50:17.28 ZBXe4sG30.net
>>748
あの図書館サーバーは普通のアクセスが集中しただけで落ちるんだぞ
DBのカーソルを使ったあと開放してなかったんだそうだ
こんなの初心者しかやらないコーディングだろう?

770:デフォルトの名無しさん
21/08/12 15:51:38.16 sye04Gqu0.net
>>751
>>753
有難うございます。
セレクトボックスの値や、javascriptで書き換えるreadonlyのテキストボックスの値を
sql文に入れるかどうか迷ってました。
全部プレースホルダにします。

771:デフォルトの名無しさん
21/08/12 15:58:48.50 jvdC9oQ40.net
>>754
それがナンナンダヨ
岡崎図書館事件は、お前の言うようなシステムだったとしても逮捕されて起訴猶予がくだされたって話だぞ
あと三菱じゃなくてMDISな
子会社ってのは別会社なんだよ
お前社会経験無いだろ

772:デフォルトの名無しさん
21/08/12 16:03:27.95 ZBXe4sG30.net
最近も偽造で有名になった、あの三菱
ホント、三菱の名前って有名になったよな

773:デフォルトの名無しさん
21/08/12 16:08:04.61 ZBXe4sG30.net
>>756
不具合がある事は以前からは悪していたが、顧客には伝えていなかった
定期メンテナンスの度に、コッソリ修正を加えていたが、
岡崎図書館だけはチャンスがなかった
通常の利用者がアクセスするだけで落ちるサーバー
毎朝再起動するのが日課だったそうだ
そうしないとダウンするサーバー
隠蔽体質は独特だよな

774:デフォルトの名無しさん
21/08/12 16:12:07.54 ZBXe4sG30.net
岡崎図書館だけでなく、システム導入した全国の図書館で不具合は起きていた
各図書館は定期メンテナンスがあった際に修正版を導入していたが、
岡崎図書館だけは、必要ないとメンテナンスを断られていた
不具合があると、本当のことを伝えてさえいれば修正できたのにな

775:デフォルトの名無しさん
21/08/12 16:14:36.36 jvdC9oQ40.net
>>759
おまえ、気持ち悪いやつだな

776:デフォルトの名無しさん
21/08/12 17:00:02.35 s+UN3BdM0.net
確か、毎秒アクセスしてたのだろ。一日で何万回も。
それで落ちた。
普通のアクセスでは落ちない
それで自白に追い込まれた。
自白しないと、一生家族を追い込むぞと脅されて、自白させられた
日本の裁判は、行政・司法の事前打ち合わせで有罪が決まる。
法廷では裁判しない
だから、拷問捜査でも自白すると、絶対にくつがえらない。
自白したのが嘘でしたと言っても、裁判官がそんな事はあり得ないと、絶対に認めない
それで、ボクサーが自白して、今も死刑囚のままの事件がある。
DNA 判定でも別人なのに、裁判官が嘘で自白する事はあり得ないと、言い続けている
でも、無罪が国民にばれているから、有罪のまま釈放してる
ボクサーはパンチドランカーで、知的障害になりやすい。
そういう奴を探してきて、拷問して自白させる。
知的障害は、すぐに自白するから
そうやって犯人に仕立て上げる
自白を優先させる国は、世界中でも日本だけ
有罪率も他国では、50% だけど、日本だけ100%。
だから半分は、自白による冤罪

777:デフォルトの名無しさん
21/08/12 17:13:39.26 ZBXe4sG30.net
岡崎図書館システム作った企業は、サーバ構築した事がないんだろう
あろうことか、システムの全ソースファイルがネットから丸見えだった
当時大勢がソース閲覧してレビュー大会始めてたな
隠しきれなくなった企業は、最期に全面謝罪していた

778:デフォルトの名無しさん
21/08/12 17:21:59.60 ZBXe4sG30.net
>今年5月に発覚した岡崎市立中央図書館ウェブサイト「サイバー攻撃」事件は悪意のない一利用者の
>プログラムによる DoS 攻撃とみられており当初「偽計業務妨害の疑いで」の逮捕も妥当かと思われて
>いたのですが、不起訴(起訴猶予)処分が発表された後で図書館のプログラムを入手した朝日新聞が
>セキュリティ専門家らに調査を依頼したところ、実は図書館プログラムのバグだったことが判明。
> このコードの場合、DB接続はアクセス元のブラウザ専用として確保(ASPセッションに紐付け)され、
>ASPセッションがタイムアウトするまでの間(7月の時点で岡崎市立中央図書館では実測で620秒くらい
>だった)、閉じられることなく(使いもしないのに)占有されてしまう。その間に新しい閲覧者(ブラウザが)
>接続してくると、次々新しいDB接続が確保され、その最大数に達すると、それ以上のアクセスを受付け
>なくなってしまう。
>しかも酷いことに新聞報道に基づいたコメントによると、ソフトウェア開発業者の三菱電機インフォメーショ
>ンシステムズ(MDIS)は2006年にこのバグを修正していたが、それ以前に導入した顧客には「ホームペー
>ジが閲覧しにくくなるのは、コンピューターの性能が低いからだ」と説明、「新しいサーバーを導入して金を
>出させるために、わざと情報を秘密にしていたようですね」。
URLリンク(ameblo.jp)

779:761
21/08/12 18:07:20.17 s+UN3BdM0.net
日本では自白をしたら、絶対にくつがえせない
裁判で、無理やり拷問捜査で自白させられたと言っても、
裁判官がそんな事はあり得ないと、絶対に認めない
自白して、100% 有罪に出来るから、立件されなかっただけ
日本の裁判は、行政・司法の事前打ち合わせで有罪が決まる。
法廷では裁判しないから、有罪と同じ
青汁王子みたいに、検察庁の拷問取り調べを発信したら、起訴されて有罪になった。
一方、徳井みたいに脱税を認めたら、不起訴になった
だから、青汁王子は検察改革として、選挙に立候補するかも知れない
日本の裁判の半分は、自白のみで証拠がない。
だから、本当は無罪だと国民にばれないように、マスコミを使って印象操作する
毎日ひっきりなしに、事件の捜査進行をマスコミにリークして、犯人だとでっち上げる。
それで実質的に、裁判所では裁判をしない
西村と同じ。
自公は何も立法せず、銀行へ要請して、酒屋に資金提供しないように締め上げる
これは要請で強制力がないから、自公は責任を負わない。
単に、銀行が加害者になるだけw

780:デフォルトの名無しさん
21/08/12 18:07:42.18 HkfEGEyR0.net
プログラミング言語を作るヒントのために
メモリがー
参照がー
という流れでもないな

781:デフォルトの名無しさん
21/08/12 18:50:40.99 fLUL3BRXM.net
>>760
例のコテハンおじさんだぞ

782:デフォルトの名無しさん
21/08/12 18:56:05.94 ZBXe4sG30.net
>三菱電機の不祥事が止まりません。労務問題に品質不正などが相次ぎ、6月29日には
>鉄道車両向け空調装置において、35年以上にわたる不正検査の問題が発覚しました。
>7月2日に記者会見した三菱電機の杉山武史社長は組織的な不正行為と認め、引責辞
>任を表明する事態となりました。外部の弁護士を起用した調査委員会を発足し、原因究
>明や再発防止策の策定に乗り出しました。
体質として、どこかおかしい

783:PHPerは糞
21/08/12 20:24:45.08 M/4woqjc0.net
>>749
それだけ言ってNGし切れないとか超ダセエ。ゆとり臭すぎ。

>>765
それは俺に言ってるのか?
なら俺はいいが、場所は移るべきだ。ここの連中は興味もないだろうし。
PHPを中心に考えるのなら、候補としてはWebプログラミング板かな?
592を額面どおり受け取って移動でいい。
他に希望があれば指定してくれ。
(なおPHPを中心に考える必要は全くないので、他言語スレでも問題なし)
一般的にはプログラミング言語開発者は複数の言語を使いこなしていて、
それらで駄目な点を自身の言語で改善するものだから、
創始者のプログラミング観どおりにやればどフィットするものだが、
ラスマスはああいう感じで他の連中とは違うし、
実際、PHPの参照の仕様は、使い道なさそうに見える。
(ただし俺は仕様を完全に理解しているわけではない)
PHP.netには、コピーオンライトと書いておくべきだろう。
ほぼ完璧に見えるPHP.netだが、これを落としているのは痛い。
(ただし他言語はもっとズボズボだから、PHP.netだからこその要求水準ではあるが)

784:デフォルトの名無しさん
21/08/13 01:24:24.59 uAR6k+KCa.net
DBのコネクションプーリングとかWEBアプリならLaravelにおまかせで良いじゃん

785:デフォルトの名無しさん
21/08/13 01:52:40.74 kzYHP2KN0.net
じゃあrobots.txtを遵守していればスクレイピングしてもOKなんですね?

786:デフォルトの名無しさん
21/08/13 02:00:55.03 mbVVcoUY0.net
robots.txt遵守は一種の紳士協定のようなもので、法的な強制力は無い
OKかどうかの判断は結構難しいと思う。
たとえ手順が正当だとしても、相手サーバーを落とす目的で
実行していると見なされれば業務妨害罪は成立する
これは妨害する意図でしつこく電話を掛け、
対応に追われる状態になれば、妨害罪が成立するのと同じ
大量のアクセスになる場合は、事前に相手に了解を取るか、
リクエスト内のエージェント情報の中に、連絡先を書いておくとかする

787:デフォルトの名無しさん
21/08/13 02:13:34.16 K6cyKUrLa.net
>>734
当時最先端のJavaのように使えるブラウザなんだぜぇーと宣伝タレ
虎の威を借る狐
旧京都造形芸術大から名称変更した私立「京都芸術大」のようなヤカラたち

788:デフォルトの名無しさん
21/08/13 02:35:57.29 oRQ6/bVP0.net
>>770
してもいいがアク禁にされたり大量アクセスして訴えられても知らないが

789:デフォルトの名無しさん
21/08/13 03:32:07.80 IEEGs8930.net
teratail見るとアホほどスクレイピングしたがるのが分かる

790:デフォルトの名無しさん
21/08/13 09:43:07.07 5/dvlHjt0.net
>>748に対して ID:ZBXe4sG30 が発狂しててワロタw
サーバが落ちる落ちないの問題ではないんだよなぁ
そして748はやはりサーバ構築経験が無いんだなと

791:デフォルトの名無しさん
21/08/13 09:45:20.56 5/dvlHjt0.net
>>770
>>642読めよ
メクラか?

792:デフォルトの名無しさん
21/08/13 09:50:20.10 5/dvlHjt0.net
PHPerは糞 おじさん相変わらず元気に加齢臭撒き散らしてて草w
無駄な長文は無能の証拠
まぁこいつはコテハン付けてるだけマシだけどな

793:744
21/08/13 12:16:30.97 S8120IP70.net
基本、スクレイピングじゃなくて、
サイトと契約して、サイトのAPI を使う
YouTube API, Google Maps API など
5ch も、そう。
契約して、APIを使う。
勝手にスクレイピングすると、どうなるか知りませんよと、脅し文句が書いてある
スクレイピングする所は、APIを提供していないサイトで、
robots.txt を遵守する
とにかくスクレイピングは、初心者向けじゃない。
初心者のコードには、バグが多く、
無限ループでアクセスしたりするから、超危険!
だから、そういう依頼があっても、受けてはいけない。
スクレイピングの本にも、スクレイピングしないように書いてある。
書いていないと、スクレイピングを推奨した人も、共犯者になるから
>>744
のUdemy の山浦清透、動画を参照。
PHP で、マイナビ転職をスクレイピングしてる

794:デフォルトの名無しさん
21/08/13 17:39:58.89 cfxShLTH0.net
グローバルスコープに定義した関数は、クラスの中のメソッド内でそのまま使えるのですか?
使えるのが奇妙な気がするのですが。。。
グローバルな変数は、クラス内では、そのままでは使えないですよね。

795:デフォルトの名無しさん
21/08/13 19:26:14.32 NFq4Eq4J0.net
そのままでなく、
var で宣言して $this->num
昔はインスタンスの呼び出し無く使えたけど、
開発陣営に割り込んで圧かけて、
「難しくなければなりません」
と言って無茶苦茶にした人がいるんだよ。

796:デフォルトの名無しさん
21/08/13 20:10:05.70 5/dvlHjt0.net
>>779
クラス内で global $hoge; とすれば使えるけど?
逆に聞くが、クラス内でグローバルスコープに定義した関数を使う際には、どういう風に使えたら奇妙じゃないとお前は思うんだ?

797:デフォルトの名無しさん
21/08/13 20:11:24.31 5/dvlHjt0.net
>>780
お前質問の意味分かってないだろ

798:デフォルトの名無しさん
21/08/13 20:14:02.70 5/dvlHjt0.net
>>779は namespace を理解してない可能性もあるか…

799:デフォルトの名無しさん
21/08/13 20:24:47.97 9sqfFN6A0.net
>>781
>>どういう風に使えたら
グローバルな関数を、いわば閉じてるクラスのメソッド内で使えること自体が奇妙に思えたのです。
オブジェクト指向のカプセル化に反するせいかもしれません。
たまたま、今日、グローバル関数をクラスメソッド内で使ってみたら使えてしまい困惑したので、
気になり尋ねてみた次第です。
global $hoge; みたいに宣言してから使うなら、なるほど納得できるのですけど、
宣言なしで、いきなり使えてしまい、戸惑ってしまいました。
便利ではあるけど、使うのはちょっと怖い感じもします。

800:デフォルトの名無しさん
21/08/13 20:38:23.23 NFq4Eq4J0.net
PHP言語を開発した私が話についていけないなんて!
いやぁぁぁーーー!!!

まあいいや。
頑張ってね。

801:デフォルトの名無しさん
21/08/13 21:14:52.64 9sqfFN6A0.net
global $hoge;//グローバル変数の宣言
global $hoge();//グローバル関数の宣言(不要)
考えてみたら、両者とも宣言が必要な方が直感的でわかりやすいですよね。

802:デフォルトの名無しさん
21/08/13 21:22:26.06 9sqfFN6A0.net
global hoge();//グローバル関数の宣言(不要)
$マークはいらなかったですね

803:デフォルトの名無しさん
21/08/13 21:22:29.93 G+odjofr0.net
>>786
そんな仕様の言語は見たことないな
組み込み関数はどうやって使うの?

804:デフォルトの名無しさん
21/08/13 21:33:50.60 9sqfFN6A0.net
>>788
なるほど、たしかに組み込み関数は、クラスのメソッド内で自由に使えますね。
ユーザー定義関数もそれと同じと考えれば、そこで使えるのは当然なのか。
目から鱗、モヤモヤ感が解消しました。ありがとうございました。

805:デフォルトの名無しさん
21/08/13 21:55:41.81 hsOq5UIAM.net
先週から勉強を始めた学生なんですが、
初心者向けの入門書の例文どおり入力してるはずなのにエラーが出たり正しく動作しなかったりで、
間違ってると思われる箇所を何度見直してもダメだったのに、
本の付録のサンプルコードでその部分を上書きすると動くようになることがあるんですが、何が悪いんですかね?
知識を習得する前に、間違い探しで日が暮れて還暦になっちゃいそうです~_| ̄|○
機嫌で動いたり動かなかったりすることあります?

806:蟻人間
21/08/13 21:58:11.89 ZbJ7zOZVd.net
全角と半角の区別、大文字と小文字の区別とかわかる?
全角スペースって知ってる? 日本語プログラミングには落とし穴が多いんだよ。

807:デフォルトの名無しさん
21/08/13 22:06:11.14 5/dvlHjt0.net
>>790
エラー文が読めないってこと?
何行目にどんなエラーがあるかきちんと出してくれるよね?

808:デフォルトの名無しさん
21/08/13 22:14:27.56 5/dvlHjt0.net
>>790
とりあえず自分の書くコード先頭に
error_reporting(E_ALL);
ini_set('display_errors', 1);
を書いて出力されるエラー文を読もうな
エラー文が読めない人はいくらやっても時間の無駄
毎回この2行を書くのは面倒くさいからこれを読むといい
URLリンク(qiita.com)

809:790
21/08/13 22:17:16.92 hsOq5UIAM.net
>>791
はい、ちゃんと書き分けてる筈なのにい~(>ε<)
>>792
いえ、エラーの出た行(その行より前のこともありますが)あたりを目を皿にして見直して、それでも分からないからサンプルコードで怪しい行を上書きしたら動いた、ということが何度かありまして:
やだな~、お盆だから何か来てるのかな?

810:790
21/08/13 22:20:01.01 hsOq5UIAM.net
>>793
ありがとうございます、参考にします

811:蟻人間
21/08/13 22:22:36.30 ZbJ7zOZVd.net
日本語では使わない記号というのも落とし穴だね。
'と`の違い分かる? :と;の違いわかる?

812:デフォルトの名無しさん
21/08/13 22:23:25.12 5/dvlHjt0.net
>>794
今度エラー出た時にそのコードをここに転載してみ
たぶん俺や他のPHPerなら見た瞬間にどこが間違いか分かるから

813:デフォルトの名無しさん
21/08/13 22:26:39.58 5/dvlHjt0.net
>>794 あーあとフォントを見直した方がいいかもね プログラミング用のエディタで使うフォントってわりと重要



815:790
21/08/13 23:25:02.14 hsOq5UIAM.net
>>796
(;´‘Д’:)
>>797
そうですね、またお世話になるかも知れませんが、宜しくお願いします。
フォントはMSゴシックなんですが、まずかったでしょうか

816:デフォルトの名無しさん
21/08/13 23:26:01.95 BmcFsWFm0.net
Source Han Code JP が好き

817:デフォルトの名無しさん
21/08/14 10:21:32.10 SEP94OUU0.net
>>790
動くコードと動かないコードをWinMerge等で比較したら違う箇所がわかるからそこを確認する

818:790
21/08/14 17:30:53.66 sRDJs50VM.net
悪さする幽霊の正体が1つ分かりました!
同じプログラムを違うエディタで開いた際に文字化けしてて、
「これ、違うやん」と弄くり回しているうちに内容がおかしくなっていたようです。
>>801
早速試しましたが凄い、お手本との比較が一目でできて、自習には神ツールですね!
今のうちに入手できてよかったです、ありがとうございます!

819:デフォルトの名無しさん
21/08/15 06:24:01.27 hVIBIqQR0.net
最初はPHPで 、だんだんHTMLになってる。
Pythonじゃないんだが、これ、どうすればいいんだろう?

820:デフォルトの名無しさん
21/08/15 14:39:37.75 e6OApvsn0.net
なぞなぞかな?

821:デフォルトの名無しさん
21/08/15 14:45:36.38 zqaX1A8p0.net
笑う

822:デフォルトの名無しさん
21/08/15 20:32:37.16 Ok6ktu6f0.net
<?php
//最初はPHPで、
?>
<html><head><title>だんだんHTMLになってる。</title></head></html>
Pythonじゃ(こんなことは)ないんだが、これ、どうすればいいんだろう?
…なんてPython使いが聞くわけないよな

823:デフォルトの名無しさん
21/08/15 21:46:02.20 +BFmSrWm0.net
表示が先で処理が後なの?Pythonは。

824:デフォルトの名無しさん
21/08/16 10:11:26.44 tf0dssH60.net
phpとPHP、どっちが正解なんだろ

825:デフォルトの名無しさん
21/08/16 19:37:01.98 nywPnT8p0.net
PHP8にしてみたらバグが結構でて焦る
0 == ""
これがtrueからfalseになったのが痛い
こういうキャストの理解でいいですよね
PHP7 0 == 0 true
PHP8 "0" == "" false
URLリンク(www.php.net)

826:デフォルトの名無しさん
21/08/16 19:38:04.81 MmXvFMHy0.net
結局$_session[ほにゃらら]はユーザーからいじることは不可能でいいの?埒があかないまま使ってて不安だわ

827:デフォルトの名無しさん
21/08/17 10:42:22.98 vbnMp9Az0.net
流れ読んでないけど、
セッションに登録された変数の内容をいじらせるということであれば、
$_SESSION[] = $_POST[] みたいなコードを書けば可能だし、
セッションファイルを、こちらの意図とは別にユーザが直接編集できるか?
と聞いてるなら、OSやサーバの設定が不適切だったり、バックドアが仕掛けられてれば可能。
今時大丈夫だとは思うが、共用サーバなら念の為、
セッションファイルを管理するフォルダが適切かどうか確認したほうがいい。

828:デフォルトの名無しさん
21/08/17 12:57:21.03 JCmgNVsVa.net
>>808
personal home page processor

829:デフォルトの名無しさん
21/08/18 23:23:38.83 JGF6Grsc0.net
ubuntu16.04(32bit)にPHP8系ってインストールできる?

830:デフォルトの名無しさん
21/08/19 09:42:32.90 ULgkoJec0.net
むしろできないと思う理由を知りたい

831:デフォルトの名無しさん
21/08/19 11:13:19.07 0gOCjcmh0.net
CPUはATOMで主メモリが2GBだったりする?

832:デフォルトの名無しさん
21/08/19 12:03:31.93 ZJMNNM340.net
PHPでゲーム作れますか?

833:デフォルトの名無しさん
21/08/19 12:05:57.21 5v0iaVCE0.net
むしろできないと思う理由を知りたい

834:デフォルトの名無しさん
21/08/19 13:00:26.79 XQ1nrb4AM.net
じゃPHPの勉強はボケ防止やハゲ防止になりますか?

835:デフォルトの名無しさん
21/08/19 13:02:09.18 0gOCjcmh0.net
ここでそんなこと聞いている所からみると、既に手遅れ感がハンパない

836:デフォルトの名無しさん
21/08/19 13:02:57.57 5dKQF2Eb0.net
人によっては効果が見られるが、
このようなアホな質問をする奴に効果は無い

837:デフォルトの名無しさん
21/08/19 18:08:41.25 Dhm320Jo0.net
>>814
インストールしたら7.0が入ったからどうすっか悩んでる。Laravelインストールできなくて詰んだ
パソコンが32bitのCPUだから16.04より新しいのがインストール出来ない
ググっても16.04にPHP8をインストールしようとしている人を罵るコメントしか見つからない
海外の掲示板も英語を翻訳してがんばって読んでみたんだけど英語で罵ってるだけで結果は同じだった
パソコン買い換え以外で何か解決策ないですか?

838:デフォルトの名無しさん
21/08/19 19:02:00.79 ZyaFoemW0.net
>>821
7.0が入るのはOS標準のリポジトリからインストールしてるからであって、リポジトリを追加すればインストールできるよ
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt install php8

839:デフォルトの名無しさん
21/08/19 19:03:37.15 ZyaFoemW0.net
>>821
罵ってるのが気になるからその掲示板とやらを教えて

840:デフォルトの名無しさん
21/08/20 03:00:41.03 VAxC0d3G0.net
phpspreadsheet詳しい人おる?
laravelでExcelファイルダウンロード機能作ってるんだけど関数が入ってるとうまく動かないのかな…

841:デフォルトの名無しさん
21/08/20 13:00:34.30 sg5lHnRB0.net
>>824
PhpSpreadsheetはエクセルファイルの読み書きようのライブラリ
Excelファイルをダウンロードするのは、PhpSpreadsheetとはまた別の話になるが?
とりあえず問題がどこにあるのか、その切り分けすらできてない気がする

842:デフォルトの名無しさん
21/08/20 13:04:01.25 sg5lHnRB0.net
>>821
apt でインストールするのではなく、
ソースコードをコンパイルしてインストールってやった事はないのかな?
>>822が書いてる通りリポジトリを変更してaptでやっても良いけど、ソースコードからインストールする方法も(やれないよりは)できた方がいいよ

843:デフォルトの名無しさん
21/08/20 13:13:52.15 sg5lHnRB0.net
>>810
その「ユーザー」というのが、810の作ったウェブアプリを利用する一般ユーザーって意味なら、
セッション変数をユーザー入力(GETやPOSTのことね)で直接上書きする設計になっていたら、ユーザーがいじる事はできるわな
だから、ユーザー入力は常に汚染されていると考えしっかりチェックしようって話になる
その「ユーザー」というのが、810の作ったウェブアプリが入っているサーバの別ユーザーって意味なら、
PHPが生成するセッションファイルは、Linux系OSのデフォでは /tmp 以下に sess_xxxxx ってファイルでPHPからの読み書き権限が与えられた状態で保存されてる
※デフォでどこに保存されるかは phpinfo() で確認しよう
だから、もし別ユーザーからもそのファイルを読み書きできる状態なら、やりたい放題になる
その場合、セッションファイルを保存する場所を変えるとか、ファイルベースではなくDBベースに変更するとかして対策する

844:デフォルトの名無しさん
21/08/20 13:17:12.75 sg5lHnRB0.net
>>809
書いてる内容は合ってる
そもそも == なんか使うのがいけない
=== を使えって話
PHP8の方が、人間には直感的に分かりやすい挙動だけど
型キャストなんて特別な理由がない限りはやってはいけない
WordPressなんか型キャストだらけだけど、あれは後方互換を重視しすぎたせいで設計がクソなだけ

845:デフォルトの名無しさん
21/08/20 13:18:22.81 sg5lHnRB0.net
>>808
PHP
>>807
んなわけないw
出力をバッファすればどうにでもできるが、それはPHPでも一緒

846:デフォルトの名無しさん
21/08/22 02:19:19.06 0Cz6ueFz0.net
Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
URLリンク(nim-lang.github.io)

Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます

847:デフォルトの名無しさん
21/08/22 13:16:28.80 0Cz6ueFz0.net
Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています
Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます
Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ
なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?
Nimの実験的特徴 バージョン1.5.1
URLリンク(nim-lang.github.io)
第二プログラミング言語として Rust はオススメしません Nim をやるのです
URLリンク(wolfbash.hateblo.jp)

Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる
「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます

848:デフォルトの名無しさん
21/08/22 13:49:26.13 4wvmP6CHr.net
htmlのクラス付けについて通常はclass javascriptはidだと教わったんですが
phpのクラス付けでdiv idとdiv classのように分ける基準はどこでしょうか?

849:デフォルトの名無しさん
21/08/22 14:16:11.38 pT2aRmOya.net
ん?CSSの話?

850:PHPerは糞
21/08/22 14:34:11.78 6lnERGc60.net
>>832
> htmlのクラス付けについて通常はclass javascriptはidだと教わったんですが
これも間違い(勘違い)だと思うが
> phpのクラス付けでdiv idとdiv classのように分ける基準はどこでしょうか?
これも間違い。phpで生成したクラスをjavascriptで使うのだから、基準が違ったら困るでしょ。
同じだよ。同じ論理でCSSともね。

851:デフォルトの名無しさん
21/08/22 15:41:36.20 14oodIJ3a.net
>>834
すいません答えを理解できないんですが
classとidをつける時はどう使い分けるんでしょうか?
idの方が優先順位が高くなってCSSの要素が強くなるんですが

852:PHPerは糞
21/08/22 15:52:30.20 6lnERGc60.net
>>835
ググって出てくる奴を3つほど斜め読みしたけど、全部同じこと言ってる。
ここでグダグダ字だけで説明するより断然いいから、そっちを読め。
その上で、俺は違う意見だ!とか、ここが意味不明だ、というところを質問するんだよ。
お前はネットの使い方を間違ってる。

853:デフォルトの名無しさん
21/08/22 16:05:09.90 9b2q+Yuv0.net
そもそもphpの質問ですらないし

854:PHPerは糞
21/08/22 16:13:29.48 6lnERGc60.net
>>837
日本語が若干不自由だけど、そのまま読むなら、
当初はphp/javascript/cssでクラス/id使い分けの基準が違うと思ってたんでしょ。
なら、ここで聞くのも止む無しかと。

855:sage
21/08/22 16:27:20.42 EL9Udqfja.net
>>835
スタイルシートの class と id の違いと使い分け
URLリンク(allabout.co.jp)
HTMLにスタイルシート(CSS)を適用する方法には、class属性を使う方法と、id属性を使う方法があります。
この「class」と「id」は明確に役割が異なります。
class属性とid属性の役割の違い
「class」と「id」の役割と、使用上の違いを簡単に言うと、次の通りです。
■class:
「種別名を割り当てる」
→ 同じclass名を、1ページ中に何度でも使える。
■id:
「固有の名前を割り当てる」
→ 同じid名は、1ページ中に1度しか使えない。


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