もう一つ質問させてください。
MVCについて学習していて、二つの捉え方がありそうで混乱しています。
@Modelは関数やクラスの定義を記述する。Controllerはその実行場所。
AModelはデータベースへの命令とビジネスロジックの実行場所。Controllerはユーザーと直接アクセスする処理の実行場所。
どちらがより正しい捉え方なのでしょうか?
探検
【PHP】下らねぇ質問はここに書き込みやがれ 14
レス数が1000を超えています。これ以上書き込みはできません。
39デフォルトの名無しさん (ワッチョイ cf97-o1nH)
2022/10/04(火) 02:03:00.45ID:m6zUfl02040デフォルトの名無しさん (ワッチョイ e301-8Lq0)
2022/10/04(火) 14:16:20.93ID:fqSkVIi/0 内部処理だけというのは、
DBから読み込んだ結果を
impodeして新しく、
WHERE IN 文を作ってる場合などです。
元がDBの値なので、ずれたり不正な値はないはずですが、どうなのでしょうか
SQLインジェクションの心配はでるのでしょうか
高速化の意味として使用するのはわかりました。
あくまで素朴な疑問で。
DBから読み込んだ結果を
impodeして新しく、
WHERE IN 文を作ってる場合などです。
元がDBの値なので、ずれたり不正な値はないはずですが、どうなのでしょうか
SQLインジェクションの心配はでるのでしょうか
高速化の意味として使用するのはわかりました。
あくまで素朴な疑問で。
41デフォルトの名無しさん (ワッチョイ cfbb-tfD/)
2022/10/04(火) 14:25:51.27ID:GRVyRRF90 >>40
>>36 でも書いたけど
OK
$sql = "INSERT INTO product(product_id,product_code,product_name,price,category_id) VALUES(21,2000,'三菱えんぴつ',100,1)";
NG
$sql = "INSERT INTO product(product_id,product_code,product_name,price,category_id) VALUES(21,2000,'$val',100,1)";
$val の代入元に外部入力がないかを都度検証しなくてはならないのでプリペアドステートメントを使用するのが無難
ただ、'impodeして新しく、 WHERE IN 文を作ってる場合'ってのがそもそも正規化ができてないケースっぽいね^^;
>>36 でも書いたけど
OK
$sql = "INSERT INTO product(product_id,product_code,product_name,price,category_id) VALUES(21,2000,'三菱えんぴつ',100,1)";
NG
$sql = "INSERT INTO product(product_id,product_code,product_name,price,category_id) VALUES(21,2000,'$val',100,1)";
$val の代入元に外部入力がないかを都度検証しなくてはならないのでプリペアドステートメントを使用するのが無難
ただ、'impodeして新しく、 WHERE IN 文を作ってる場合'ってのがそもそも正規化ができてないケースっぽいね^^;
42デフォルトの名無しさん (ワッチョイ cfbb-tfD/)
2022/10/04(火) 14:33:14.85ID:GRVyRRF90 >>39
フレームワークを使用する前提だと思うけど、今どきのphpだとMVCで分類できないような設計になることが多い
クリーンアーキテクチャとかを調査してみるといい
フレームワークは Laravel だと思うので、「Laravel クリーンアーキテクチャ」あたりでググるとそれっぽい記事に当たれる
ただ、フレームワークの基礎概念がわかっていてもややこしいので、基本的になんちゃってクリーンアーキテクチャを採用することになると思う
フレームワークを使用する前提だと思うけど、今どきのphpだとMVCで分類できないような設計になることが多い
クリーンアーキテクチャとかを調査してみるといい
フレームワークは Laravel だと思うので、「Laravel クリーンアーキテクチャ」あたりでググるとそれっぽい記事に当たれる
ただ、フレームワークの基礎概念がわかっていてもややこしいので、基本的になんちゃってクリーンアーキテクチャを採用することになると思う
43デフォルトの名無しさん (アウアウウー Sa27-o1nH)
2022/10/04(火) 14:50:31.74ID:kffIYV9Ia ありがとうございます。
フレームワーク利用の前提でなく、素?のPHPです。
phpの学習のためにMVCを理解しようとしているので、
実務で構築するものとは、ちょっとズレているかもしれません。
疑問に思うのは、
例えば、入力バリデーションを実行するのは、Controllerなのかもしれませんが、
その関数は、Modelで定義するべきなのか?でもこれはビジネスロジックじゃないし。
とか思いました。
一方でModelは関数ライブラリみたいなものという意見もありました。
実務経験のあり皆様の知見をお借りしたいと思います。
フレームワーク利用の前提でなく、素?のPHPです。
phpの学習のためにMVCを理解しようとしているので、
実務で構築するものとは、ちょっとズレているかもしれません。
疑問に思うのは、
例えば、入力バリデーションを実行するのは、Controllerなのかもしれませんが、
その関数は、Modelで定義するべきなのか?でもこれはビジネスロジックじゃないし。
とか思いました。
一方でModelは関数ライブラリみたいなものという意見もありました。
実務経験のあり皆様の知見をお借りしたいと思います。
44デフォルトの名無しさん (ワッチョイ cfbb-tfD/)
2022/10/04(火) 14:58:12.02ID:GRVyRRF9045デフォルトの名無しさん (ワッチョイ cfbb-tfD/)
2022/10/04(火) 14:58:57.95ID:GRVyRRF90 すまん。ミスw
過ぎわかるけど → すごいわかる
過ぎわかるけど → すごいわかる
46デフォルトの名無しさん (ワッチョイ e301-vqPj)
2022/10/04(火) 15:15:33.37ID:fqSkVIi/0 ありがとうございます。
脱線するけど、
*営業成績テーブル
個人ID,成績
*部門テーブル
部門ID,部門情報
*個人テーブル
個人ID,部門ID,個人情報
こんな感じのテーブルで
A部門所属のデータをとるときにとるときに、
個人テーブルからA部門所属をとってから、
営業成績テーブルにWHERE INしてたんですけど、
どうしたらよかったんですかね。
テーブルがそもそもダメなのかな。
脱線するけど、
*営業成績テーブル
個人ID,成績
*部門テーブル
部門ID,部門情報
*個人テーブル
個人ID,部門ID,個人情報
こんな感じのテーブルで
A部門所属のデータをとるときにとるときに、
個人テーブルからA部門所属をとってから、
営業成績テーブルにWHERE INしてたんですけど、
どうしたらよかったんですかね。
テーブルがそもそもダメなのかな。
47デフォルトの名無しさん (ワッチョイ cf73-OAEy)
2022/10/04(火) 22:07:04.75ID:2XMnl95Q0 素直に結合
何のためのRDBかと
何のためのRDBかと
48デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/04(火) 22:31:47.47ID:lI8qARGk0 test
49デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/04(火) 22:32:03.64ID:lI8qARGk0 php疎い者です。
javascriptでよくある処理ですが、
現在表示しているページの<body>タグにクラス(.current)があるか否かで処理を分岐したいのですが、
これをPHPではどのように書いてよいのかわかりません。
・取得対象の現在のドキュメントのbodyタグの指定の仕方
・正規表現など使わずにgetElementsByTagNameのようなものがhtmlでも使えるのか
など、、
宜しくお願いいたします。
javascriptでよくある処理ですが、
現在表示しているページの<body>タグにクラス(.current)があるか否かで処理を分岐したいのですが、
これをPHPではどのように書いてよいのかわかりません。
・取得対象の現在のドキュメントのbodyタグの指定の仕方
・正規表現など使わずにgetElementsByTagNameのようなものがhtmlでも使えるのか
など、、
宜しくお願いいたします。
50デフォルトの名無しさん (ワッチョイ ff63-pIDl)
2022/10/04(火) 22:35:18.09ID:BwJYUobP0 現在表示しているページは、誰が作っているの?
51デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/04(火) 23:35:33.89ID:lI8qARGk052デフォルトの名無しさん (ワッチョイ ff7c-pIDl)
2022/10/04(火) 23:51:17.05ID:nXyy/Qec0 ん?サーバーで先にHTMLを生成するのだからその段階で判断基準があるでしょ?
それが無くて後から動的ならjavascriptでやるしか無い気がするのだが
それが無くて後から動的ならjavascriptでやるしか無い気がするのだが
53デフォルトの名無しさん (ワッチョイ 632c-kE2G)
2022/10/04(火) 23:52:48.63ID:CNGS9dK70 Ruby なら、Nokogiri, Selenium Webdriver などを使う。
PHP にも、そういうモジュールがあるのでは?
require 'nokogiri'
doc_1 = Nokogiri::HTML(<<EOT)
<html><body class="abc">あ</body></html>
EOT
doc_2 = Nokogiri::HTML(<<EOT)
<html><body class="current">い</body></html>
EOT
element_1 = doc_1.at_css( 'body.current' )
if element_1
puts element_1.content
elsif
p element_1
end
#=> nil
element_2 = doc_2.at_css( 'body.current' )
if element_2
puts element_2.content
elsif
p element_2
end
#=> い
PHP にも、そういうモジュールがあるのでは?
require 'nokogiri'
doc_1 = Nokogiri::HTML(<<EOT)
<html><body class="abc">あ</body></html>
EOT
doc_2 = Nokogiri::HTML(<<EOT)
<html><body class="current">い</body></html>
EOT
element_1 = doc_1.at_css( 'body.current' )
if element_1
puts element_1.content
elsif
p element_1
end
#=> nil
element_2 = doc_2.at_css( 'body.current' )
if element_2
puts element_2.content
elsif
p element_2
end
#=> い
54デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/04(火) 23:55:32.56ID:lI8qARGk0 例えばスマホ/PCなど、表示条件によりbodyタグにphpでクラス付与するケースです。
phpの分岐条件をbodyのクラスで判定する事自体がナンセンスというか方法論として間違っているという事かと思いますが、
もしこのような方法がphpでもできるならば具体的にどのようなソースになるか知っておきたい感じです。
これに限らず、classのあるなしをphpでもできれば便利だなあと、、
とても煩雑で面倒で無意味な事であれば諦めます。。
phpの分岐条件をbodyのクラスで判定する事自体がナンセンスというか方法論として間違っているという事かと思いますが、
もしこのような方法がphpでもできるならば具体的にどのようなソースになるか知っておきたい感じです。
これに限らず、classのあるなしをphpでもできれば便利だなあと、、
とても煩雑で面倒で無意味な事であれば諦めます。。
55デフォルトの名無しさん (ワッチョイ 435f-ruke)
2022/10/04(火) 23:55:56.42ID:L5kRkIm30 生成したサイトにスクレイピングするスクリプト書くとかしか無いんじゃない?
56デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/04(火) 23:57:51.22ID:lI8qARGk0 >>53
ありがとうございます。
恐らく「PHP Simple HTML DOM Parser」などがそれに当たるかと思われますが、
ちょっと1回使いたいだけの場合にライブラリ使わずサクッとできないかと思い、質問しました。
ありがとうございます。
恐らく「PHP Simple HTML DOM Parser」などがそれに当たるかと思われますが、
ちょっと1回使いたいだけの場合にライブラリ使わずサクッとできないかと思い、質問しました。
57デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/04(火) 23:59:21.33ID:lI8qARGk058デフォルトの名無しさん (ワッチョイ 632c-kE2G)
2022/10/05(水) 00:03:03.19ID:W5I+dJQy0 >>39
Ruby on Rails のMVC では、
Model はデータベース・ビジネスロジック、
View はHTML、
Controller はルーティングなど、MV 以外
歴史的には、コントローラーの肥大化を防ぐために、
Skinny Controller, Fat Model を推奨した。
その結果、モデルが肥大化した
そこで今度は、モデルの処理を減らすために、
Form Object, Service Object へ処理を分けた
また表示処理は、Presenter へ分けた。
それで、Form Presenter, Model Presenter が出来た
Ruby on Rails のMVC では、
Model はデータベース・ビジネスロジック、
View はHTML、
Controller はルーティングなど、MV 以外
歴史的には、コントローラーの肥大化を防ぐために、
Skinny Controller, Fat Model を推奨した。
その結果、モデルが肥大化した
そこで今度は、モデルの処理を減らすために、
Form Object, Service Object へ処理を分けた
また表示処理は、Presenter へ分けた。
それで、Form Presenter, Model Presenter が出来た
59デフォルトの名無しさん (ワッチョイ ff63-pIDl)
2022/10/05(水) 00:06:29.81ID:j989iulk0 クライアント側でJavascriptなど使って書き換えしているときはどうするんだろう
60デフォルトの名無しさん (ワッチョイ 435f-/mFx)
2022/10/05(水) 00:10:18.85ID:4fLF3mVy0 >>59
今回は一旦そのケース(jsによる操作)はないという前提でお願います...
今回は一旦そのケース(jsによる操作)はないという前提でお願います...
61デフォルトの名無しさん (ワッチョイ 632c-kE2G)
2022/10/05(水) 00:28:51.30ID:W5I+dJQy0 >>54
Ruby on Rails では、
<html><body></body></html> の部分は、レイアウトファイルと言う。
絵画でいう額縁の部分
body 内では、<%= yield %> で、各テンプレートファイルを読み込むようになっている。
だから、bodyタグを変える場合は、複数のレイアウトファイルを切り替える
<html><body class="abc">
<%= yield %>
</body></html>
<html><body class="xyz">
<%= yield %>
</body></html>
それか、Selenium Webdriver で、JavaScript で書いて、ブラウザに送信できる。
body要素を取得して、class属性を変更する
Ruby on Rails では、
<html><body></body></html> の部分は、レイアウトファイルと言う。
絵画でいう額縁の部分
body 内では、<%= yield %> で、各テンプレートファイルを読み込むようになっている。
だから、bodyタグを変える場合は、複数のレイアウトファイルを切り替える
<html><body class="abc">
<%= yield %>
</body></html>
<html><body class="xyz">
<%= yield %>
</body></html>
それか、Selenium Webdriver で、JavaScript で書いて、ブラウザに送信できる。
body要素を取得して、class属性を変更する
62デフォルトの名無しさん (オッペケ Sr47-i/MD)
2022/10/05(水) 08:10:28.17ID:lxgtpcSQr63デフォルトの名無しさん (ワッチョイ 6fe7-pIDl)
2022/10/05(水) 10:08:08.68ID:EybIMEvA0 >>61
RubyってマジでPHPそっくりなんだな
RubyってマジでPHPそっくりなんだな
64デフォルトの名無しさん (ワッチョイ 632c-kE2G)
2022/10/05(水) 23:07:42.68ID:W5I+dJQy0 すべてのフレームワークは、Ruby on Rails を基本としているから、
初心者はRailsから始めるべき
JavaScript なんかは、Rubyの20年遅れ。
ES6(ES2015)で、ようやく辞書・クラス構文・テンプレート文字列などが出来たなど、Ruby化を進めた
初心者はRailsから始めるべき
JavaScript なんかは、Rubyの20年遅れ。
ES6(ES2015)で、ようやく辞書・クラス構文・テンプレート文字列などが出来たなど、Ruby化を進めた
65デフォルトの名無しさん (ワッチョイ 632c-kE2G)
2022/10/05(水) 23:15:54.32ID:W5I+dJQy0 Ruby は、JavaScript(JS), Python, PHP よりも、バグらない
Rubyの偽は、nil, false の2つだけ
一方、他の言語は、各型に偽がある。
空文字、0, 0.0、空配列など
これのおかげでバグるから、
JS などは、== 緩い等価演算子を使うなと言われて、=== 厳密等価演算子を使えとなった。
さらに、TypeScript も必須になった
Rubyの偽は、nil, false の2つだけ
一方、他の言語は、各型に偽がある。
空文字、0, 0.0、空配列など
これのおかげでバグるから、
JS などは、== 緩い等価演算子を使うなと言われて、=== 厳密等価演算子を使えとなった。
さらに、TypeScript も必須になった
66デフォルトの名無しさん (ワッチョイ ff7c-pIDl)
2022/10/06(木) 12:50:00.65ID:tI414gt60 Rubyガイジは嫌われていることにそろそろ気付けよw
67デフォルトの名無しさん (ワッチョイ a3ac-a5Fx)
2022/10/07(金) 01:00:05.85ID:/3WJyx6k0 こういうのはエゴな正義感でやってるんやろ
自分がRubyを支えてるみたいなw
やらかしてることには自ら目をつぶるタイプ、しょうもない人間
自分がRubyを支えてるみたいなw
やらかしてることには自ら目をつぶるタイプ、しょうもない人間
68デフォルトの名無しさん (ワッチョイ ff05-ehet)
2022/10/08(土) 19:37:21.57ID:juauNmJw0 $comment_info_msg_tag = '<div class="comment-information-messag">'.$comment_info_msg.'</div>'
これって変数$comment_info_msg_tagを呼び出した時
変数$comment_info_msgの中身がクラスcomment-information-messagの<DIV>タグを付けられて出てくるって事で合っていますか?
これって変数$comment_info_msg_tagを呼び出した時
変数$comment_info_msgの中身がクラスcomment-information-messagの<DIV>タグを付けられて出てくるって事で合っていますか?
69デフォルトの名無しさん (ワッチョイ d37b-S1O+)
2022/10/08(土) 19:57:47.78ID:rIAKoGAI070デフォルトの名無しさん (ワッチョイ d37b-S1O+)
2022/10/08(土) 20:14:34.77ID:rIAKoGAI0 てかその記述の意味が分からないのなら、煽り抜きでphp.netを最初から全部読んだ方がいい
基本中の基本中の基本中の基本位のレベルだぞそれ
基本中の基本中の基本中の基本位のレベルだぞそれ
71デフォルトの名無しさん (ワッチョイ d37b-S1O+)
2022/10/08(土) 21:32:53.78ID:rIAKoGAI0 CGIの時にfilter_input(INPUT_SERVER,'REMOTE_ADDR')で値が取れないという仕様バグに遭遇してるのだが、
一般的にこれはどう対処されてるんだ?
詳細は以下で、15年前かららしい。
https://www.php.net/manual/ja/function.filter-input.php#77307
原因は以下で、
https://www.php.net/manual/ja/function.filter-input.php#127415
要はENVとSERVERの値は鯖から渡されるが、
使わない場合は無駄なのでデフォでjitするが、CGIだとこれでは動かないらしい。
上記下側のURLによると auto_globals_jit をdisableにすれば直るらしいが、俺の実行環境(fastCGI)では駄目だった。
開発中はモジュールでやってたので気づかなかった。
本番環境(最安値帯のレンサバ)で動作テストする段階になって発覚。(今)
ターゲットは最安値~中間帯のレンサバなので、CGIを切る事も出来ない。
IDEがうるさいから全部filter_inputにしたのにこれかよ!というところ。
諦めて $_SERVER 直接アクセスにソース書き換えるしかないか、と思ってるが、
それ以外の解決策があればよろしく。
一般的にこれはどう対処されてるんだ?
詳細は以下で、15年前かららしい。
https://www.php.net/manual/ja/function.filter-input.php#77307
原因は以下で、
https://www.php.net/manual/ja/function.filter-input.php#127415
要はENVとSERVERの値は鯖から渡されるが、
使わない場合は無駄なのでデフォでjitするが、CGIだとこれでは動かないらしい。
上記下側のURLによると auto_globals_jit をdisableにすれば直るらしいが、俺の実行環境(fastCGI)では駄目だった。
開発中はモジュールでやってたので気づかなかった。
本番環境(最安値帯のレンサバ)で動作テストする段階になって発覚。(今)
ターゲットは最安値~中間帯のレンサバなので、CGIを切る事も出来ない。
IDEがうるさいから全部filter_inputにしたのにこれかよ!というところ。
諦めて $_SERVER 直接アクセスにソース書き換えるしかないか、と思ってるが、
それ以外の解決策があればよろしく。
72デフォルトの名無しさん (ワッチョイ ca51-Tub1)
2022/10/11(火) 13:51:56.12ID:5Qn6fZG50 if ($sex == 0) {
$hoge = 'ちんこ';
} else if ($sex == 1) {
$hoge = 'まんこ';
}
return $hoge;
C系やJavaとは異なり、
変数hogeが初めて宣言されているのがif文の中なのに、if文から出たあとでその変数が見えてしまうことに戸惑っています。
「こういうもの」で慣れるしかないのですか?
何かありがちな注意点ってありますか?
イテレーターの中でしか使わない変数が残ってしまうことでの不安。
$hoge = 'ちんこ';
} else if ($sex == 1) {
$hoge = 'まんこ';
}
return $hoge;
C系やJavaとは異なり、
変数hogeが初めて宣言されているのがif文の中なのに、if文から出たあとでその変数が見えてしまうことに戸惑っています。
「こういうもの」で慣れるしかないのですか?
何かありがちな注意点ってありますか?
イテレーターの中でしか使わない変数が残ってしまうことでの不安。
73デフォルトの名無しさん (ワッチョイ 6749-lNao)
2022/10/11(火) 14:40:16.45ID:j0iSNFpd0 注意する
サポートするエディタを使う
デバッグする
ちなみに挙げてるコードも$sexが0,1以外ならいわゆる未定義になる可能性があって、
まあいいコードではないよね(すぐreturnするだけなら変数いらへんやん的なとこも)
ちなみに9からだとerrorになるらしい
今のPHPでは通っちゃうだけで、戸惑う感覚はなくさないほうがいいと思うよ
サポートするエディタを使う
デバッグする
ちなみに挙げてるコードも$sexが0,1以外ならいわゆる未定義になる可能性があって、
まあいいコードではないよね(すぐreturnするだけなら変数いらへんやん的なとこも)
ちなみに9からだとerrorになるらしい
今のPHPでは通っちゃうだけで、戸惑う感覚はなくさないほうがいいと思うよ
74デフォルトの名無しさん (ワッチョイ 0a7c-kHT+)
2022/10/11(火) 14:40:56.76ID:a24aUp+M0 気持ちが悪いなら未定義の変数をいきなり使うようなことはしなければ良いだけでは?
普通はそんな事しない訳だし
typoはどうしょうもないが
普通はそんな事しない訳だし
typoはどうしょうもないが
75デフォルトの名無しさん (ワッチョイ 034f-iygP)
2022/10/11(火) 15:20:07.39ID:17+/w9Hg0 Ruby でも、if は、スコープを作らない。
C みたいに、{ } で囲むとスコープを作る言語もあるけど、動的言語では少ないかも
if true
a = 3
else
b = 5
end
p a, b #=> 3, nil
C みたいに、{ } で囲むとスコープを作る言語もあるけど、動的言語では少ないかも
if true
a = 3
else
b = 5
end
p a, b #=> 3, nil
76デフォルトの名無しさん (ワッチョイ 5ebb-Ir1l)
2022/10/11(火) 16:17:43.00ID:S+x+TbIN0 >>71
興味深い
かなり限定的な不具合だけど、結構基本的なとこだしそんなの残ってるんかなぁ...
手が空いたときに試してみたいと思うけど、環境揃えるのがめんどいからとりあえずissueであげてみては?
Symfonyは$_SERVERから取ってるっぽい
https://symfony.com/doc/current/components/http_foundation.html
興味深い
かなり限定的な不具合だけど、結構基本的なとこだしそんなの残ってるんかなぁ...
手が空いたときに試してみたいと思うけど、環境揃えるのがめんどいからとりあえずissueであげてみては?
Symfonyは$_SERVERから取ってるっぽい
https://symfony.com/doc/current/components/http_foundation.html
77デフォルトの名無しさん (ワッチョイ c6e7-kHT+)
2022/10/11(火) 16:18:01.45ID:zQi6fx0u078デフォルトの名無しさん (ワッチョイ 5ebb-Ir1l)
2022/10/11(火) 16:20:55.29ID:S+x+TbIN0 >>72
まずは、マニュアル読めば?
基本的な注意点は書いてある
https://www.php.net/manual/ja/language.variables.scope.php
ただ、phpのマニュアルにしては珍しくちょっとわかりにくいw
まずは、マニュアル読めば?
基本的な注意点は書いてある
https://www.php.net/manual/ja/language.variables.scope.php
ただ、phpのマニュアルにしては珍しくちょっとわかりにくいw
79デフォルトの名無しさん (ワッチョイ d37b-S1O+)
2022/10/11(火) 20:33:48.75ID:Xj3nI9lP0 >>76
15年前から公式に載ってるからissueに上げなくとも存在は知られてるはず。
ただcontributeするような連中はモジュールで使うから直す奴が居ないのだろう。
俺はPHPに詳しくないのでcontributeはしないが、Cは読めるので、
contributeする気ならソースの確認は手伝う。
知らないところも含めて推測するなら、
・元々は$_SERVERがimmutable扱いでコピーしても問題なかった(推測、実際の仕様は知らん)
・jitを導入する際にこれでは駄目になり、修正するときに漏れた(或いは修正されなかった)
・モジュールモードは完全に後付で、$_SERVERはApache内のメモリを直接読んでる(多分)
・直接参照の上記構造だとjitすら必要ないが、$_SERVERはCGIモードのjitでも動作するので、
jitはApacheからcharの塊で貰った物をパースする事を意味している?ならここに接続すればいい
のではないかとなる。
ただ、CGIモードのfilter_inputだけで使えない=filter_input内でコピーを持ってる
という構造は上記推定でもナンセンスではあるが。(駄目ではないが無駄)
この部分をさておくなら、仕様変更に対してソースが変更されずに放置されると現状況は発生する。
よって、見るならfilter_inputと$_SERVERの取り扱いと、CGI/moduleモードを決めてる変数だね。(当たり前だが)
修正は、そのコピーを見てる部分を$_SERVERを直接見るようにすればいいだけではある。
修正し忘れてるだけなら簡単だが、修正しようとしても出来なかったから放置されてる場合は多分無理ゲー。
15年前から公式に載ってるからissueに上げなくとも存在は知られてるはず。
ただcontributeするような連中はモジュールで使うから直す奴が居ないのだろう。
俺はPHPに詳しくないのでcontributeはしないが、Cは読めるので、
contributeする気ならソースの確認は手伝う。
知らないところも含めて推測するなら、
・元々は$_SERVERがimmutable扱いでコピーしても問題なかった(推測、実際の仕様は知らん)
・jitを導入する際にこれでは駄目になり、修正するときに漏れた(或いは修正されなかった)
・モジュールモードは完全に後付で、$_SERVERはApache内のメモリを直接読んでる(多分)
・直接参照の上記構造だとjitすら必要ないが、$_SERVERはCGIモードのjitでも動作するので、
jitはApacheからcharの塊で貰った物をパースする事を意味している?ならここに接続すればいい
のではないかとなる。
ただ、CGIモードのfilter_inputだけで使えない=filter_input内でコピーを持ってる
という構造は上記推定でもナンセンスではあるが。(駄目ではないが無駄)
この部分をさておくなら、仕様変更に対してソースが変更されずに放置されると現状況は発生する。
よって、見るならfilter_inputと$_SERVERの取り扱いと、CGI/moduleモードを決めてる変数だね。(当たり前だが)
修正は、そのコピーを見てる部分を$_SERVERを直接見るようにすればいいだけではある。
修正し忘れてるだけなら簡単だが、修正しようとしても出来なかったから放置されてる場合は多分無理ゲー。
80デフォルトの名無しさん (ワッチョイ 034f-iygP)
2022/10/12(水) 13:23:49.79ID:vHtlGJeU0 Symfony って、かなり古そう
PHP は、Laravel 以外は無理じゃないの?
人気のないフレームワークを選ぶと無理
基本、Ruby on Rails 以外は無理だと思う。
Laravel, Django など
ZOZO はLaravelだけど
PHP は、Laravel 以外は無理じゃないの?
人気のないフレームワークを選ぶと無理
基本、Ruby on Rails 以外は無理だと思う。
Laravel, Django など
ZOZO はLaravelだけど
81デフォルトの名無しさん (ワッチョイ 5ebb-Ir1l)
2022/10/12(水) 13:28:54.79ID:hQuAltVj082デフォルトの名無しさん (ワッチョイ ca51-Tub1)
2022/10/12(水) 14:51:05.57ID:MmvRDuvc0 Symfonyで作られたかなり古いシステムの改修案件に入りそうなんですが、
これを最新のフレームワーク、最新のPHPに置き換えるのはかなり工数かかりますか?
自分は下っ端だし何も決定権無いんですが、後学のために知りたいです。
これを最新のフレームワーク、最新のPHPに置き換えるのはかなり工数かかりますか?
自分は下っ端だし何も決定権無いんですが、後学のために知りたいです。
83デフォルトの名無しさん (ワッチョイ cb01-p76D)
2022/10/12(水) 14:57:37.19ID:zrvaLfr+0 Mなのかもしれないな
84デフォルトの名無しさん (ワッチョイ 5ebb-Ir1l)
2022/10/12(水) 15:50:13.72ID:hQuAltVj085デフォルトの名無しさん (ワッチョイ cbda-kEV8)
2022/10/12(水) 16:20:29.22ID:0CBrymoV0 WEBが絡まない案件でもフレームワーク使ってる?
なんかディレクトリ構成から毎回試行錯誤なんだけど
なんかディレクトリ構成から毎回試行錯誤なんだけど
86デフォルトの名無しさん (ワッチョイ 0a7c-kHT+)
2022/10/12(水) 16:23:30.68ID:vpmJO63Z0 webが絡まない案件ってどんなのだろうか
将来使えるようにという意味で何かの処理をするみたいな話なら
例えばだけどLaravelのCommandで呼べるように作っておけば移行も楽になるとかはあるかも
将来使えるようにという意味で何かの処理をするみたいな話なら
例えばだけどLaravelのCommandで呼べるように作っておけば移行も楽になるとかはあるかも
87デフォルトの名無しさん (ワッチョイ 034f-iygP)
2022/10/13(木) 08:51:46.75ID:Reu2mtSt0 データベースとHTML 画面を使うだけでも、
面倒くさいから、Ruby on Rails を使う
プロジェクト管理ツールのRedmine などがそう。
でも、これはウェブサービスかな?
プロジェクトを他人と共有する場合、
Railsみたいな既製品を使う方が、フォルダ構成も決まっているし、分かりやすい
自作のものは、フォルダ構成も個人でバラバラになるから、共同製作できない
面倒くさいから、Ruby on Rails を使う
プロジェクト管理ツールのRedmine などがそう。
でも、これはウェブサービスかな?
プロジェクトを他人と共有する場合、
Railsみたいな既製品を使う方が、フォルダ構成も決まっているし、分かりやすい
自作のものは、フォルダ構成も個人でバラバラになるから、共同製作できない
88デフォルトの名無しさん (ワッチョイ def8-p76D)
2022/10/13(木) 18:38:24.31ID:2KzUsHD30 いまだにレンタルサーバーでPHP使えても
Ruby使えないとかあるのがネック
なんでレンサバ界隈はPHPなの?
Ruby使えないとかあるのがネック
なんでレンサバ界隈はPHPなの?
89デフォルトの名無しさん (ワッチョイ 5ebb-Ir1l)
2022/10/13(木) 18:43:15.95ID:/DBWGbtl0 WordPressのせい(おかげ)
90デフォルトの名無しさん (ワッチョイ def8-p76D)
2022/10/13(木) 18:55:40.85ID:2KzUsHD30 凄く納得してしまったかも
91デフォルトの名無しさん (ワッチョイ 0a7c-kHT+)
2022/10/13(木) 18:57:04.48ID:BGturN710 Rubyなんてそもそも使っている人相当少ないし使えなくて当たり前
92デフォルトの名無しさん (ワッチョイ 635f-72FX)
2022/10/13(木) 19:08:23.95ID:3jyAjd3F0 WordPressのフロントエンド開発とかいう地獄
93デフォルトの名無しさん (ワッチョイ 2b4f-spri)
2022/10/16(日) 23:15:47.50ID:1lEHOAQp0 Ruby on Rails はプロ・企業用だから、Heroku, AWS, Docker
大きすぎて、レンタルサーバーでは無理
大きすぎて、レンタルサーバーでは無理
94デフォルトの名無しさん (ワッチョイ 6b01-7iBv)
2022/10/17(月) 17:31:09.75ID:5FwYTQU9095デフォルトの名無しさん (ワッチョイ 0f97-ZPbQ)
2022/10/18(火) 18:16:46.46ID:eLrtEQ000 公開サーバーの「ドキュメントルート」の中に、あるディレクトリがありそこにはphpのライブラリファイルが複数あります。
そのディレクトリに対して、直接ブラウザからアクセスできないような設定を行うことができますでしょうか?
ただし、同じドメインサーバーのphpファイルからのアクセスは許可いたします。(ソースをincludeさせます。)
本来ならば、公開サーバーの「ドキュメントルート」の外に「include」ディレクトリを配置して、
そこにアクセスされないようなファイル類を置くことが一般的だと思いますが、さまざまな理由により
「ドキュメントルート」の中にアクセスできないファイル類を置くことになりました。
何かアイデアがありましたらアドバイスください。
そのディレクトリに対して、直接ブラウザからアクセスできないような設定を行うことができますでしょうか?
ただし、同じドメインサーバーのphpファイルからのアクセスは許可いたします。(ソースをincludeさせます。)
本来ならば、公開サーバーの「ドキュメントルート」の外に「include」ディレクトリを配置して、
そこにアクセスされないようなファイル類を置くことが一般的だと思いますが、さまざまな理由により
「ドキュメントルート」の中にアクセスできないファイル類を置くことになりました。
何かアイデアがありましたらアドバイスください。
96デフォルトの名無しさん (ワッチョイ 9f7c-7iBv)
2022/10/18(火) 18:24:17.73ID:eZjQhR3g0 それPHPの質問じゃなく、ウェブサーバーの設定の質問だからなぁw
ドキュメントルートに.htaccessをおいてアクセス制限すればいいだけでは?
詳しくは.htaccessの書き方などを調べてみては?
ドキュメントルートに.htaccessをおいてアクセス制限すればいいだけでは?
詳しくは.htaccessの書き方などを調べてみては?
97デフォルトの名無しさん (ワッチョイ 0fbb-BCAW)
2022/10/18(火) 18:35:06.55ID:oo0O6LY/0 基本方針として >>96 が良いと思うけど、昔のphpでアクセス可能なphpファイルでグローバル変数に適当な値詰め込んで、アクセスできちゃまずいファイルで、それがなければdie()するやつはよく見た気がする
98デフォルトの名無しさん (ワッチョイ 0f97-ZPbQ)
2022/10/19(水) 00:14:08.21ID:yzq3WDoT0 ありがとうございます。
おっしゃるとおり、ウェブサーバーの範囲なのですが。
あちらの世界の人たちが、phpのincludeとか理解いただけるか
不安だったので、ついこっちで質問してしまいました。
一つだけ追加質問させてください。
こういったものは、
パーミッション? chmodなどで設定するものではなくて、
.htaccessでの設定が基本と思っていいですかね。
おっしゃるとおり、ウェブサーバーの範囲なのですが。
あちらの世界の人たちが、phpのincludeとか理解いただけるか
不安だったので、ついこっちで質問してしまいました。
一つだけ追加質問させてください。
こういったものは、
パーミッション? chmodなどで設定するものではなくて、
.htaccessでの設定が基本と思っていいですかね。
99デフォルトの名無しさん (ワッチョイ ab5f-2/eE)
2022/10/19(水) 00:21:40.99ID:jaKz+yV10 httpd.confからドキュメントルートのrequire ip を127.0.0.1にすればいけるのかな?少なくとも外部からのアクセスは弾けるはずだけどさ
100デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2022/10/19(水) 07:16:27.43ID:Js5Cj1j50 >>98
上司に聞け、マジで、そうしないと事故るよ
上司に聞け、マジで、そうしないと事故るよ
101デフォルトの名無しさん (ワッチョイ 0fbb-BCAW)
2022/10/19(水) 07:31:19.51ID:+5kcU5m20 >>99
phpからのファイル読み込みだとWebサーバ通らないから意図したものではない設定になると思うよ
phpからのファイル読み込みだとWebサーバ通らないから意図したものではない設定になると思うよ
102デフォルトの名無しさん (ワッチョイ efe7-7iBv)
2022/10/19(水) 10:40:35.61ID:mOIoNYE1010397 (ワッチョイ 0fbb-BCAW)
2022/10/19(水) 11:21:48.30ID:+5kcU5m20 phpで制限してるやつ思い出したんで書き込んどく
https://github.com/bcit-ci/CodeIgniter
CodeIgniter3系で各ファイルの先頭に
defined('BASEPATH') OR exit('No direct script access allowed');
があってスクリプト以外から読めないようにしてた
フォルダにも空ディレクトリ用にindex.html用意してたりして、昔のインフラ対応を一所懸命にやってた感じ
https://github.com/bcit-ci/CodeIgniter/tree/develop/application/controllers
https://github.com/bcit-ci/CodeIgniter
CodeIgniter3系で各ファイルの先頭に
defined('BASEPATH') OR exit('No direct script access allowed');
があってスクリプト以外から読めないようにしてた
フォルダにも空ディレクトリ用にindex.html用意してたりして、昔のインフラ対応を一所懸命にやってた感じ
https://github.com/bcit-ci/CodeIgniter/tree/develop/application/controllers
104デフォルトの名無しさん (オッペケ Sr0f-yNwf)
2022/10/19(水) 11:26:05.56ID:FPDvrmQDr 下手にWebhttp通そうとしないで、社内とかで相談したほうがいいと思うわ
インフラ関係させたほうが、後々責任とるハメにならないよ
インフラ関係させたほうが、後々責任とるハメにならないよ
105デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2022/10/19(水) 13:52:22.97ID:Js5Cj1j50 >>103
wikiによると2006からあるらしいけど、当時ですらその方式はナンセンスだよね。
上の階層には.htaccess置いてるし、ソフト403でいいのか?だし。
そもそもPHPではサーバーレス的な構成はほぼ無いので、諦めて普通に癒着させた方が綺麗だった気がする。
wikiによると2006からあるらしいけど、当時ですらその方式はナンセンスだよね。
上の階層には.htaccess置いてるし、ソフト403でいいのか?だし。
そもそもPHPではサーバーレス的な構成はほぼ無いので、諦めて普通に癒着させた方が綺麗だった気がする。
106デフォルトの名無しさん (ワッチョイ 0fbb-BCAW)
2022/10/19(水) 14:06:52.57ID:+5kcU5m20 >>105
んなこたぁないと思うよ
あの頃のレンサバの開放ディレクトリってフラットだったから
あと、レンサバ以外でnginxがはやりつつあったからフールプルーフでしょ
まぁ、あんまりきれいでないことは同意w
んなこたぁないと思うよ
あの頃のレンサバの開放ディレクトリってフラットだったから
あと、レンサバ以外でnginxがはやりつつあったからフールプルーフでしょ
まぁ、あんまりきれいでないことは同意w
107デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2022/10/19(水) 15:41:31.30ID:Js5Cj1j50 >>106
当時の仕様は知らんが、今と変わりなければ、
nginxでは.htaccessは使えないし、ディレクトリインデックスはデフォでオフだから、まるで意味無いよ。
> If a request ends with a slash, NGINX treats it as a request for a directory and tries to find an index file in the directory. The index directive defines the index file’s name (the default value is index.html). To continue with the example, if the request URI is /images/some/path/, NGINX delivers the file /www/data/images/some/path/index.html if it exists. If it does not, NGINX returns HTTP code 404 (Not Found) by default. To configure NGINX to return an automatically generated directory listing instead, include the on parameter to the autoindex directive:
> https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/#:~:text=The%20index%20directive%20defines%20the%20index%20file%E2%80%99s%20name,returns%20HTTP%20code%20404%20%28Not%20Found%29%20by%20default.
フールプルーフを目指すなら、Apacheとnginxの両方の設定ファイルもちゃんと用意しておけばいいだけ。
.htaccess置くのなら、Options でディレクトリインデックスも切れるはずだし、グダグダすぎる。
まあ歴史は長いようだから、大抵何らかの理由があるものではあるけど、
見た目、単なる技量不足(鯖を知らないだけ)で、初心者的なコーディングをしてしまったように見える。
そうでなければ、鯖がグダグダ過ぎて設定してもまともに動かなかったのでPHP側で対応した、てなところだろう。
当時の仕様は知らんが、今と変わりなければ、
nginxでは.htaccessは使えないし、ディレクトリインデックスはデフォでオフだから、まるで意味無いよ。
> If a request ends with a slash, NGINX treats it as a request for a directory and tries to find an index file in the directory. The index directive defines the index file’s name (the default value is index.html). To continue with the example, if the request URI is /images/some/path/, NGINX delivers the file /www/data/images/some/path/index.html if it exists. If it does not, NGINX returns HTTP code 404 (Not Found) by default. To configure NGINX to return an automatically generated directory listing instead, include the on parameter to the autoindex directive:
> https://docs.nginx.com/nginx/admin-guide/web-server/serving-static-content/#:~:text=The%20index%20directive%20defines%20the%20index%20file%E2%80%99s%20name,returns%20HTTP%20code%20404%20%28Not%20Found%29%20by%20default.
フールプルーフを目指すなら、Apacheとnginxの両方の設定ファイルもちゃんと用意しておけばいいだけ。
.htaccess置くのなら、Options でディレクトリインデックスも切れるはずだし、グダグダすぎる。
まあ歴史は長いようだから、大抵何らかの理由があるものではあるけど、
見た目、単なる技量不足(鯖を知らないだけ)で、初心者的なコーディングをしてしまったように見える。
そうでなければ、鯖がグダグダ過ぎて設定してもまともに動かなかったのでPHP側で対応した、てなところだろう。
108デフォルトの名無しさん (ワッチョイ 0fbb-BCAW)
2022/10/19(水) 17:33:25.58ID:+5kcU5m20 >>107
基本古いレンサバ仕様で動くように作ってあったのよ
で、その頃ディレクトリの中丸見えじゃん問題ってのがそこそこ話題にされてたんで、index.htmlを用意するってのはそれ対策かと
nginxの設定テンプレートは、そこいらの野良blogとか記憶が確かならnginxの公式でも配布してたと思う
ただ、野良の方はかなり程度が低いのも多かったから、できる範囲で対応をとってたって感じかなぁ(多分w)
exit()がこっちの対策だね
なんせcomposerインストールとかも野良な時代だからねぇ
色々大変だった
ところで、apache/nginx用の設定ファイルを同梱ってありえるの?
.htaccessを突っ込んでるのは見るけど、設定ファイルを配布してるのは見たことないんだけど
基本古いレンサバ仕様で動くように作ってあったのよ
で、その頃ディレクトリの中丸見えじゃん問題ってのがそこそこ話題にされてたんで、index.htmlを用意するってのはそれ対策かと
nginxの設定テンプレートは、そこいらの野良blogとか記憶が確かならnginxの公式でも配布してたと思う
ただ、野良の方はかなり程度が低いのも多かったから、できる範囲で対応をとってたって感じかなぁ(多分w)
exit()がこっちの対策だね
なんせcomposerインストールとかも野良な時代だからねぇ
色々大変だった
ところで、apache/nginx用の設定ファイルを同梱ってありえるの?
.htaccessを突っ込んでるのは見るけど、設定ファイルを配布してるのは見たことないんだけど
109デフォルトの名無しさん (ワッチョイ cb09-w/5w)
2022/10/19(水) 19:27:01.72ID:vYLhahcn0 PHP技術者認定試験って難しい?
110デフォルトの名無しさん (ワッチョイ 0f97-ZPbQ)
2022/10/19(水) 19:35:32.95ID:yzq3WDoT0 ありがとうございます。
まさか盛り上がる案件だとは。
個人で借りたレンタルサーバーの研究サイトなのです。
心配させてスイマセン。
htaccessで整えてみます。
まさか盛り上がる案件だとは。
個人で借りたレンタルサーバーの研究サイトなのです。
心配させてスイマセン。
htaccessで整えてみます。
111デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2022/10/19(水) 20:27:01.24ID:Js5Cj1j50 >>108
> ところで、apache/nginx用の設定ファイルを同梱ってありえるの?
知らん。けど、技術的に出来ない理由はないだろ。
もっとも、nginxのは.htaccessから変換して作るものらしいし、.htaccessがあれば何とかなるんだろう。
(と思って公式のrewriteちょっと見てみたが、手動ならさておき、自動では厳しいなこれは)
レンサバ+PHPにはnginxは向かなかったのかもね。
上げたら見えるほうが分かりやすいし、
大量の静的ファイルを捌くだけの元々の鯖の使い方だとその方がいいし、
apacheのデフォがそうだからnginxレンサバもそうしたら、
鯖単位でしか設定出来ないのだから丸見えになってしまう。
無理にapacheに合わせず、nginx本来の設定で使えばよかっただけだね。
つってもnginxレンサバがapacheに合わせたのは商業的な理由だろうし、
結果、その歪みのしわ寄せがフレームワーク側に残ってる、間抜けだがありがちな状況に見えるよ。
しかし今も更新してるんだから直せばいいのにとも思うが。コントリビュートするならどうぞ。
最上位の階層の.htaccessに一行、
Options -Indexes
と書けばそれ以下のソフト403なindex.htmlは全部削除出来るはず。以下参考
> https://www.javadrive.jp/apache/ini/index24.html
> https://httpd.apache.org/docs/2.4/ja/mod/core.html#options
> ところで、apache/nginx用の設定ファイルを同梱ってありえるの?
知らん。けど、技術的に出来ない理由はないだろ。
もっとも、nginxのは.htaccessから変換して作るものらしいし、.htaccessがあれば何とかなるんだろう。
(と思って公式のrewriteちょっと見てみたが、手動ならさておき、自動では厳しいなこれは)
レンサバ+PHPにはnginxは向かなかったのかもね。
上げたら見えるほうが分かりやすいし、
大量の静的ファイルを捌くだけの元々の鯖の使い方だとその方がいいし、
apacheのデフォがそうだからnginxレンサバもそうしたら、
鯖単位でしか設定出来ないのだから丸見えになってしまう。
無理にapacheに合わせず、nginx本来の設定で使えばよかっただけだね。
つってもnginxレンサバがapacheに合わせたのは商業的な理由だろうし、
結果、その歪みのしわ寄せがフレームワーク側に残ってる、間抜けだがありがちな状況に見えるよ。
しかし今も更新してるんだから直せばいいのにとも思うが。コントリビュートするならどうぞ。
最上位の階層の.htaccessに一行、
Options -Indexes
と書けばそれ以下のソフト403なindex.htmlは全部削除出来るはず。以下参考
> https://www.javadrive.jp/apache/ini/index24.html
> https://httpd.apache.org/docs/2.4/ja/mod/core.html#options
112デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2022/10/19(水) 20:40:24.15ID:Js5Cj1j50 >>110
個人で研究するなら好き勝手にやるべきだが、一応
> 一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、 .htaccess ファイルの使用は極力避けてください。
> 世の中には、例えば、ユーザ認証は常に .htaccess ファイルで 行なわなければならない、という誤解が広まっていますが、
> まったくそんなことは ありません。ユーザ認証の設定はサーバ主設定ファイルに書くことができ、 実際、その方がより良い設定方法です。
> https://httpd.apache.org/docs/2.4/ja/howto/htaccess.html
まあサーバの設定ファイルもほぼ同じ書式なのでhtaccessの書き方を確認するのも悪くはないが、
そもそもhtaccessなんて無くても動くように作るべきだよ。
(それがCodeIgniterでやってる事だと言われればそうなのだが)
個人で研究するなら好き勝手にやるべきだが、一応
> 一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、 .htaccess ファイルの使用は極力避けてください。
> 世の中には、例えば、ユーザ認証は常に .htaccess ファイルで 行なわなければならない、という誤解が広まっていますが、
> まったくそんなことは ありません。ユーザ認証の設定はサーバ主設定ファイルに書くことができ、 実際、その方がより良い設定方法です。
> https://httpd.apache.org/docs/2.4/ja/howto/htaccess.html
まあサーバの設定ファイルもほぼ同じ書式なのでhtaccessの書き方を確認するのも悪くはないが、
そもそもhtaccessなんて無くても動くように作るべきだよ。
(それがCodeIgniterでやってる事だと言われればそうなのだが)
113デフォルトの名無しさん (ワッチョイ 0fbb-BCAW)
2022/10/19(水) 20:49:06.23ID:+5kcU5m20 >>111
> 知らん
まぁそうやんな。俺も知らんw
ちょっと誤解させたかもしれないけど、nginx使ってたのは自前サバとかVPSとかで、レンサバのnginxは無かったと思う
余談だけど、CodeIgniter4だとどうなってるか見てみた。
ちゃんとcomposer install にも対応してて、随分モダンになってたわ(当たりまえだけど)
でも、index.htmlは残っててちょっと笑ったw
久しぶりに週末にでも使ってみようかと思う
> 知らん
まぁそうやんな。俺も知らんw
ちょっと誤解させたかもしれないけど、nginx使ってたのは自前サバとかVPSとかで、レンサバのnginxは無かったと思う
余談だけど、CodeIgniter4だとどうなってるか見てみた。
ちゃんとcomposer install にも対応してて、随分モダンになってたわ(当たりまえだけど)
でも、index.htmlは残っててちょっと笑ったw
久しぶりに週末にでも使ってみようかと思う
114デフォルトの名無しさん (ワッチョイ 0fbb-BCAW)
2022/10/19(水) 21:00:01.66ID:+5kcU5m20115デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2022/10/19(水) 22:21:11.99ID:Js5Cj1j50 >>113
> nginx使ってたのは自前サバとかVPSとかで、レンサバのnginxは無かったと思う
ならセルフ開示じゃないですか~。
それなら、nginx登場の2004はxhrがajaxとして再発見される2005より前なので、
nginxは当初は(wiki読む限り今もらしいが)静的ファイルの高速配信向けで、
おそらくデフォでApacheと同じくディレクトリインデックス有りで、
しかも.htaccessが効かないから事故りまくったのだろう。
んで、動的サイトの増加に伴い、デフォでディレクトリインデックス無しに仕様変更したのではないかと。
>>114
まあ参考にすべきは最近最高に使われてるソースであって、PHPならLaravelなのは確か。
ただ俺はWeb系でもないのでさっぱり知らないし、実際どう配置して使うのかも知らないが、publicには転がってる。
https://github.com/laravel/laravel/blob/9.x/public/.htaccess
robots.txtもあるから、おそらく外から見えるディレクトリなのだろうとは思う。
ただ、PHPの場合、構造的に最低限のrewriteはサーバーにやって貰うしかない。
他言語みたいにURL文字列を引数として関数コールして貰えれば鯖と完全分離出来るが、
そうではないので、諦めて片足突っ込んだ状態で行くのが一番ましだと思うよ。
Laravelは Options -MultiViews -Indexes と rewrite だけだから、最小限に留めてる。これが多分ベスト。
CodeIgniterはこのOptionsの一行をケチった結果index.htmlが大量に必要になってるわけだが、
htaccess見たところアク禁指定だけでrewriteが無いので、rewriteしないつもりなら鯖と完全分離出来る。
が、現実的にrewrite無しの動的鯖って厳しい気が。
とはいえ、ユーザーに直接クエリ文字列を書いてもらえるのなら有りなので、フレームワークとしてはこれでいいのかも?
> nginx使ってたのは自前サバとかVPSとかで、レンサバのnginxは無かったと思う
ならセルフ開示じゃないですか~。
それなら、nginx登場の2004はxhrがajaxとして再発見される2005より前なので、
nginxは当初は(wiki読む限り今もらしいが)静的ファイルの高速配信向けで、
おそらくデフォでApacheと同じくディレクトリインデックス有りで、
しかも.htaccessが効かないから事故りまくったのだろう。
んで、動的サイトの増加に伴い、デフォでディレクトリインデックス無しに仕様変更したのではないかと。
>>114
まあ参考にすべきは最近最高に使われてるソースであって、PHPならLaravelなのは確か。
ただ俺はWeb系でもないのでさっぱり知らないし、実際どう配置して使うのかも知らないが、publicには転がってる。
https://github.com/laravel/laravel/blob/9.x/public/.htaccess
robots.txtもあるから、おそらく外から見えるディレクトリなのだろうとは思う。
ただ、PHPの場合、構造的に最低限のrewriteはサーバーにやって貰うしかない。
他言語みたいにURL文字列を引数として関数コールして貰えれば鯖と完全分離出来るが、
そうではないので、諦めて片足突っ込んだ状態で行くのが一番ましだと思うよ。
Laravelは Options -MultiViews -Indexes と rewrite だけだから、最小限に留めてる。これが多分ベスト。
CodeIgniterはこのOptionsの一行をケチった結果index.htmlが大量に必要になってるわけだが、
htaccess見たところアク禁指定だけでrewriteが無いので、rewriteしないつもりなら鯖と完全分離出来る。
が、現実的にrewrite無しの動的鯖って厳しい気が。
とはいえ、ユーザーに直接クエリ文字列を書いてもらえるのなら有りなので、フレームワークとしてはこれでいいのかも?
116デフォルトの名無しさん (ワッチョイ 9f63-y3r4)
2022/10/19(水) 22:26:04.73ID:o5dUZxuy0 レンサバって、ユーザーにて医今日してくれる場所は、ユーザーのHOMEディレクトリで、
その配下にpublic_htmlがあるんだよね?
その隣にディレクトリ作れば、Webからはアクセス出来ないでしょう
その配下にpublic_htmlがあるんだよね?
その隣にディレクトリ作れば、Webからはアクセス出来ないでしょう
117デフォルトの名無しさん (ワッチョイ 9f63-y3r4)
2022/10/19(水) 22:26:46.26ID:o5dUZxuy0 × て医今日
○ 提供
なんて変換だよ・・・
○ 提供
なんて変換だよ・・・
118デフォルトの名無しさん (ワッチョイ 0f97-ZPbQ)
2022/10/20(木) 00:52:50.25ID:JdSscN+80 >116
おっしゃるとおりです。
ですが、いろいろと理由がありドキュメントルート配下に、
ブラウザからアクセスさせないディレクトリを作りたいと思ったのですが。
それが、こんなにイレギュラーなことかとは思わなかったです。。
ベーシック認証やIP制限などで、htaccessは何度か弄ったことはありますが、
そもそもこのファイルなんぞやとは思っていました。
htaccessとかの学習は、サーバー関連の学習で得られますでしょうか?
Linuxとかの基礎本とか読んでみたのですが、コレジャナイ感がしてます。
「htaccessとは?」という基礎レベルから理解したいのですが。。
おっしゃるとおりです。
ですが、いろいろと理由がありドキュメントルート配下に、
ブラウザからアクセスさせないディレクトリを作りたいと思ったのですが。
それが、こんなにイレギュラーなことかとは思わなかったです。。
ベーシック認証やIP制限などで、htaccessは何度か弄ったことはありますが、
そもそもこのファイルなんぞやとは思っていました。
htaccessとかの学習は、サーバー関連の学習で得られますでしょうか?
Linuxとかの基礎本とか読んでみたのですが、コレジャナイ感がしてます。
「htaccessとは?」という基礎レベルから理解したいのですが。。
119デフォルトの名無しさん (ワッチョイ 9f7c-y3r4)
2022/10/20(木) 01:50:07.83ID:kET4P9rE0 今時レンタルサーバーでPHPを動かすという需要がWPぐらいしか無い気がするんだよね
だからLaravelみたいなのを使う場合はレンタルサーバーなんかで動かせられないし
(データベースなども必要だし)
AWSの無料枠とかでやった方が良いのでは無いかと思うのだけどね
さくらのクラウドとか安いサービスもあるし、選択肢は結構ある筈だけどね
だからLaravelみたいなのを使う場合はレンタルサーバーなんかで動かせられないし
(データベースなども必要だし)
AWSの無料枠とかでやった方が良いのでは無いかと思うのだけどね
さくらのクラウドとか安いサービスもあるし、選択肢は結構ある筈だけどね
120デフォルトの名無しさん (オッペケ Sr0f-s5qW)
2022/10/20(木) 08:21:45.81ID:MwzDpM35r AWSは無料枠にハメられて高額になるからレンサバ使えるならレンサバがコスト的にいい
121デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2022/10/20(木) 08:36:09.51ID:Y6zWMSoX0 >>118
言うほどイレギュラーでもない。
ただ、レンタルサーバーでもドキュメントルートは変更出来るだろうから、ディレクトリ作って下にずらせばいいだけではある。
htaccessは知っておけばいいものでわざわざ学習する物ではない。
とりあえず公式全部読めば何となく分かるだろうし、その程度でいい。1~2日程度。(8~16時間程度)
それでも意味不明ならググれば何とかなる。
https://httpd.apache.org/docs/2.4/ja/
https://httpd.apache.org/docs/2.4/ja/howto/htaccess.html
機能一覧なら以下。
https://httpd.apache.org/docs/2.4/ja/mod/quickreference.html
逆に言えばここに挙げられていることしかできないから、この中にやりたい事がなければhtaccessでは実現出来ない。
見れば分かるがサーバーの設定であり、PHP的に必要な物はほぼ無い。(当たり前だが)
ぶっちゃけ、今の君の理解でも大して問題ないと思う。
ただ、その場合、例えばCodeIgniterみたいに(あれは意図的だと思うけど)、
それhtaccessに書けば一行で済むよ?みたいな事になる可能性があるだけ。とはいえ、それでも問題ないのも事実。
言うほどイレギュラーでもない。
ただ、レンタルサーバーでもドキュメントルートは変更出来るだろうから、ディレクトリ作って下にずらせばいいだけではある。
htaccessは知っておけばいいものでわざわざ学習する物ではない。
とりあえず公式全部読めば何となく分かるだろうし、その程度でいい。1~2日程度。(8~16時間程度)
それでも意味不明ならググれば何とかなる。
https://httpd.apache.org/docs/2.4/ja/
https://httpd.apache.org/docs/2.4/ja/howto/htaccess.html
機能一覧なら以下。
https://httpd.apache.org/docs/2.4/ja/mod/quickreference.html
逆に言えばここに挙げられていることしかできないから、この中にやりたい事がなければhtaccessでは実現出来ない。
見れば分かるがサーバーの設定であり、PHP的に必要な物はほぼ無い。(当たり前だが)
ぶっちゃけ、今の君の理解でも大して問題ないと思う。
ただ、その場合、例えばCodeIgniterみたいに(あれは意図的だと思うけど)、
それhtaccessに書けば一行で済むよ?みたいな事になる可能性があるだけ。とはいえ、それでも問題ないのも事実。
122デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2022/10/20(木) 08:40:25.19ID:Y6zWMSoX0 >>119
今時無料レンタルサーバーでもMySQL使えるよ。
https://www.star.ne.jp/free/functions.php
もっとも、初心者がPHPをわざわざ書く必要は無くなってきてて、最終的にWPかNoCodeになる気はするが。
今時無料レンタルサーバーでもMySQL使えるよ。
https://www.star.ne.jp/free/functions.php
もっとも、初心者がPHPをわざわざ書く必要は無くなってきてて、最終的にWPかNoCodeになる気はするが。
123デフォルトの名無しさん (ワッチョイ 0ff8-NQ2R)
2022/10/20(木) 17:37:46.33ID:CBxQXJka0 laravelインストールできなかったり、
MySQLがwindow関数使えないVerだったり
半端なレンサバのほうが何故か多い印象
なんでMySQLは5止めが多いんだ?
MySQLがwindow関数使えないVerだったり
半端なレンサバのほうが何故か多い印象
なんでMySQLは5止めが多いんだ?
124デフォルトの名無しさん (JP 0H4f-2/eE)
2022/10/20(木) 18:53:20.55ID:zfdkX5sTH レンサバは極端な話WPだけ出来ればいいしって設計が多い
さくらとかも
さくらとかも
125デフォルトの名無しさん (ワッチョイ d193-++Yg)
2022/10/25(火) 13:00:09.47ID:S5n6e8jb0 PHPやりはじめてます。
ソースを修正するたびにサーバーにアップロードしてWebで試しているんですが
アップロードを何回も連続で繰り返してるとプロバイダから何か異常なアクセスしていると思われて
突然使用禁止とかになってしまうこととかはないんでしょうか?
ソースを修正するたびにサーバーにアップロードしてWebで試しているんですが
アップロードを何回も連続で繰り返してるとプロバイダから何か異常なアクセスしていると思われて
突然使用禁止とかになってしまうこととかはないんでしょうか?
126デフォルトの名無しさん (ワッチョイ 6ebb-7TT9)
2022/10/25(火) 13:07:11.70ID:SJXXwtKb0 ないです
127デフォルトの名無しさん (ワッチョイ 0549-yrTQ)
2022/10/25(火) 14:52:36.86ID:7auWfLY00 めっちゃ高速に大量に頻繁にbot並にやるなら思われるかもね
128デフォルトの名無しさん (ワッチョイ 8263-UuoP)
2022/10/25(火) 15:49:08.68ID:Em+AyBVc0 アップロードの時は回線速度超える事はないし
よっぽどアクセス集中していない限り、処理が破綻することはないと思う
使用禁止にするかはサーバーの利用規約と管理者の裁量
よっぽどアクセス集中していない限り、処理が破綻することはないと思う
使用禁止にするかはサーバーの利用規約と管理者の裁量
129デフォルトの名無しさん (ワッチョイ 427c-UuoP)
2022/10/25(火) 20:40:23.57ID:nojkBjJF0 何故ローカルで開発環境を作ってそこで試さないのか・・・
130デフォルトの名無しさん (ワッチョイ 21da-80Lh)
2022/10/26(水) 09:34:23.26ID:coiJgjfP0 サーバの構築はPHPの学習の本質ではないからですね
131デフォルトの名無しさん (ワッチョイ 3901-80Lh)
2022/10/26(水) 09:36:02.91ID:gnI45ZOc0132デフォルトの名無しさん (ワッチョイ 21da-80Lh)
2022/10/26(水) 10:08:24.28ID:coiJgjfP0 >>131
xdebugを使えばリモートでトレースデバッグできるのでお勧めですね
xdebugを使えばリモートでトレースデバッグできるのでお勧めですね
133デフォルトの名無しさん (ワッチョイ 427c-UuoP)
2022/10/26(水) 10:50:27.55ID:s5FmrwgX0 >>130
いやいやwwww
開発環境を作れないような奴は開発する以前の問題
個人でやるだけなら別に好きにやればいいけど
仕事で開発環境も作れませんは流石に無いわw
xamppとかサルでも出来るようなのもあるし、docker等も先に学習しておいた方がいい
いやいやwwww
開発環境を作れないような奴は開発する以前の問題
個人でやるだけなら別に好きにやればいいけど
仕事で開発環境も作れませんは流石に無いわw
xamppとかサルでも出来るようなのもあるし、docker等も先に学習しておいた方がいい
134デフォルトの名無しさん (ワッチョイ 8263-UuoP)
2022/10/26(水) 10:59:19.37ID:b6oRD2LO0 学習するなら、本番と(なるべく)同じ環境でやるのが良いと思う
135デフォルトの名無しさん (ワッチョイ eef8-B2ja)
2022/10/26(水) 15:45:27.26ID:NvEAaUGj0 APIの接続制限してるのだと実験しにくい
レンサバのIPアドレスは登録してるけど、
ローカルサバからAPIが使えなくて
こゆときどうしてる?
相手先にローカルサバにも解放してもらう?
レンサバのIPアドレスは登録してるけど、
ローカルサバからAPIが使えなくて
こゆときどうしてる?
相手先にローカルサバにも解放してもらう?
136デフォルトの名無しさん (ワッチョイ 71ac-yrTQ)
2022/10/27(木) 00:39:49.92ID:vwkoq2WA0 日本語でおけ
137デフォルトの名無しさん (ワッチョイ 427c-UuoP)
2022/10/27(木) 01:29:49.29ID:rsMc68LB0 AというサーバーのAPIを使いたいけど、Bのレンタルサーバーからのアクセスは許可しているが
ローカル(自宅か会社?)のIPからは許可されてないから使えないって事?
どっちにしてもPHP全く関係ないけどw
ローカル(自宅か会社?)のIPからは許可されてないから使えないって事?
どっちにしてもPHP全く関係ないけどw
138デフォルトの名無しさん (ワッチョイ f99a-NpS5)
2022/10/31(月) 19:22:50.72ID:4ZX07akh0 PHPのSQLのサンプルで次のようなデータの登録と読み出しはうまくいきました。
DB書き込み送信側
$stmt=$pdo->query('CREATE TABLE test_table (id text, name text)');
$stmt=$pdo->query("INSERT INTO test_table (id, name) VALUES ('abc', 'def')");
DB読み込み受信側
$stmt=$pdo->query('OPEN test_table (id text, name text)');
$result_rows = $pdo->query('SELECT * FROM test_table');
foreach ( $result_rows as $row ) {
echo "id: {$row['id']}"."<br>";
echo "name: {$row['name']}"."<br>";
}
結果表示:abc def
この項目名idや nameを別の文字にするとうまく機能しなくなります。
idや nameが必須項目なのかと思い、3つ目に独自の名前の項目を追加してもだめでした。
この項目名は決められた名前しか使えないのでしょうか?
独自の名前を追加するにはどうすればいいのでしょうか?
DB書き込み送信側
$stmt=$pdo->query('CREATE TABLE test_table (id text, name text)');
$stmt=$pdo->query("INSERT INTO test_table (id, name) VALUES ('abc', 'def')");
DB読み込み受信側
$stmt=$pdo->query('OPEN test_table (id text, name text)');
$result_rows = $pdo->query('SELECT * FROM test_table');
foreach ( $result_rows as $row ) {
echo "id: {$row['id']}"."<br>";
echo "name: {$row['name']}"."<br>";
}
結果表示:abc def
この項目名idや nameを別の文字にするとうまく機能しなくなります。
idや nameが必須項目なのかと思い、3つ目に独自の名前の項目を追加してもだめでした。
この項目名は決められた名前しか使えないのでしょうか?
独自の名前を追加するにはどうすればいいのでしょうか?
139デフォルトの名無しさん (ワッチョイ 937c-HLP5)
2022/10/31(月) 19:41:02.63ID:CaQ/+DOQ0 PHP以前にSQLを理解しているか?
mysql workbenchなどでSQLを入力してどんな挙動をするかを先に勉強した方が良いのでは?
mysql workbenchなどでSQLを入力してどんな挙動をするかを先に勉強した方が良いのでは?
140デフォルトの名無しさん (ワッチョイ 1361-4kdC)
2022/10/31(月) 21:26:35.07ID:DaaCK8GW0 >>138
同じ名前で再度CREATEしてもテーブル再作成されたりしないのよ?
同じ名前で再度CREATEしてもテーブル再作成されたりしないのよ?
141デフォルトの名無しさん (ワッチョイ f99a-NpS5)
2022/10/31(月) 21:48:21.38ID:4ZX07akh0 そこは書くの省いてますが毎回テーブル消去しての実行になってます
142デフォルトの名無しさん (ワッチョイ 0902-Ha3M)
2022/10/31(月) 21:53:29.34ID:h9jqxmjM0 何で毎回テーブル消すのかが分からん
143デフォルトの名無しさん (ワッチョイ 1302-ee5o)
2022/10/31(月) 23:20:50.12ID:bH7L5hyf0 何をやったのか詳しく書いた方がいいと思う
長くなってもかまわないから
エラーメッセージも
情報が少なすぎて何がなんだかわからない
teratail とかの質問のフォーマットが参考に
なるかもしれない
長くなってもかまわないから
エラーメッセージも
情報が少なすぎて何がなんだかわからない
teratail とかの質問のフォーマットが参考に
なるかもしれない
144デフォルトの名無しさん (ワッチョイ 8bbb-/OGx)
2022/10/31(月) 23:26:53.75ID:KoRc+sfH0 OPENって初めてみたわ
コレってDB何?
コレってDB何?
145デフォルトの名無しさん (ブーイモ MM33-gcVw)
2022/11/01(火) 14:46:59.98ID:CRXHeHIYM >>144
mysqlかpostgresqlだと思う
mysqlかpostgresqlだと思う
146デフォルトの名無しさん (ワッチョイ 1363-HLP5)
2022/11/01(火) 15:42:59.29ID:hGXBrabD0 OPENと言うステートメントはある事はあるが、カーソル操作だな
>>138の記述は変だと思う
>>138の記述は変だと思う
147デフォルトの名無しさん (ワッチョイ f934-NpS5)
2022/11/03(木) 22:09:25.88ID:xQnCuP5H0 質問
Webのurl下のファイルって表面上見えなくてもある方法でダウンロードしようと思えばできますよね?
ということはPHPのソースはまんま見られてしまうのでしょうか?
見られると簡単に解析されていいように弄られてしまう可能性も高いんでしょうか?
Webのurl下のファイルって表面上見えなくてもある方法でダウンロードしようと思えばできますよね?
ということはPHPのソースはまんま見られてしまうのでしょうか?
見られると簡単に解析されていいように弄られてしまう可能性も高いんでしょうか?
148デフォルトの名無しさん (ワッチョイ 3909-DL5s)
2022/11/03(木) 22:29:30.25ID:ROsFLORr0 >>147
できません
できません
149デフォルトの名無しさん (ワッチョイ 8bbb-/OGx)
2022/11/03(木) 22:53:58.13ID:WOBTUDvw0 >>147
Webサーバの設定ミスで見えてしまうケースはあります
また、外部入力の取り扱いが不適切なサイトで意図しないソースをダウンロードしたり表示したりすることが可能となるケースもあります
手法はいくつもありますがディレクトリトラバーサルを使用した攻撃は観測しやすいので調査してみると良いでしょう
ソースを見られると解析は可能ですが、解析されても問題がないようにするためのナレッジも色々あるので調べてみると良いです
Webサーバの設定ミスで見えてしまうケースはあります
また、外部入力の取り扱いが不適切なサイトで意図しないソースをダウンロードしたり表示したりすることが可能となるケースもあります
手法はいくつもありますがディレクトリトラバーサルを使用した攻撃は観測しやすいので調査してみると良いでしょう
ソースを見られると解析は可能ですが、解析されても問題がないようにするためのナレッジも色々あるので調べてみると良いです
150デフォルトの名無しさん (ワッチョイ a95f-eCT5)
2022/11/03(木) 23:17:12.77ID:RxtPrKwp0 Web APIのアクセストークンとかどこに置くのが良いんだろ
151デフォルトの名無しさん (ワッチョイ fbe7-Tk+f)
2022/11/04(金) 10:03:40.02ID:fjW+y4zq0 >>150
index.php と同じところにおいてください
index.php と同じところにおいてください
152デフォルトの名無しさん (ワッチョイ 8bbb-/OGx)
2022/11/04(金) 10:34:34.64ID:7HgZbeW40 >>150
cookieとlocalstorageのどちらか?って議論なら、JWTの議論が参考になると思う
phperなら徳丸さんの日記あたりを漁るとなんかあった気がする
ただ、時期によって推奨が変わってきてるんで、直近の議論じゃなければ新しい議論を探したほうがいい
cookieとlocalstorageのどちらか?って議論なら、JWTの議論が参考になると思う
phperなら徳丸さんの日記あたりを漁るとなんかあった気がする
ただ、時期によって推奨が変わってきてるんで、直近の議論じゃなければ新しい議論を探したほうがいい
153デフォルトの名無しさん (ワッチョイ 1363-HLP5)
2022/11/04(金) 10:39:08.02ID:QCeBmW6M0 議論が変わると言うことは、まだ枯れてないんだろうな
154デフォルトの名無しさん (ワッチョイ 8bbb-/OGx)
2022/11/04(金) 10:53:31.17ID:7HgZbeW40 結論が時期によって変わるのは、ブラウザの進化と各種Webフレームワークのデフォルト状態がその時々で変化しているせいですね
ただ、どの時期でも大きく変わらないのは「実態としてはどちらも大差ない」「XSSがあればどっちも危険」ってとこです
なので、その時々の推奨と言っても僅差ですね
ただ、どの時期でも大きく変わらないのは「実態としてはどちらも大差ない」「XSSがあればどっちも危険」ってとこです
なので、その時々の推奨と言っても僅差ですね
155デフォルトの名無しさん (JP 0H8d-eCT5)
2022/11/04(金) 13:02:42.65ID:1sxu7itbH 適当にまとめちゃうと「どこでも危険なのは変わりないから大して変わらない」で落ち着くのかな
156デフォルトの名無しさん (ワッチョイ 0b97-ofdD)
2022/11/04(金) 18:23:18.46ID:mo/2hjrh0 fopenのモードの語源
r はread
wはwirte
で。。
aは、append? add? どっちですか。
r はread
wはwirte
で。。
aは、append? add? どっちですか。
157デフォルトの名無しさん (ワッチョイ 937c-Tk+f)
2022/11/04(金) 20:43:22.06ID:mATgUcp20 appendかと(追記モードみたいな意味合いだし)
158デフォルトの名無しさん (ワッチョイ 368c-Cw2/)
2022/11/08(火) 07:48:23.75ID:c6RTZORh0 jpegの画像を読み込んで、画面全体を50%の透明度にしてpngで保存するにはどうしたらいいですか?
imagecopymergeで完全に透明な画像を50%で合成しても無理でした。
imagecopymergeで完全に透明な画像を50%で合成しても無理でした。
159デフォルトの名無しさん (ワッチョイ b19f-Ee8s)
2022/11/08(火) 11:12:12.94ID:6dXM39fN0 www.php.net/manual/ja/book.imagick.php
160デフォルトの名無しさん (ワッチョイ 368c-Cw2/)
2022/11/08(火) 17:14:26.31ID:c6ryzee70 自己解決しました
imagecoloratとimagesetpixelで1pxずつコピーすればよし
imagecoloratとimagesetpixelで1pxずつコピーすればよし
161デフォルトの名無しさん (テテンテンテン MM96-8gy9)
2022/11/09(水) 17:37:16.27ID:jregjzg7M PHPて複数の人が同時に同じPHPのアドレスにアクセスするとやっぱり
そのPHPが同時に実行されるんですかね?
同時であっても問題が起こらないように記述しとかないといけないんですかね?ファイルアクセスとか
特に気にしなくても問題になるようなことはほとんどないんでしょうか?
そのPHPが同時に実行されるんですかね?
同時であっても問題が起こらないように記述しとかないといけないんですかね?ファイルアクセスとか
特に気にしなくても問題になるようなことはほとんどないんでしょうか?
162デフォルトの名無しさん (ワッチョイ 9263-zlm6)
2022/11/09(水) 18:12:02.46ID:v9YRsbRp0 問題が起きるかどうかはロジック次第
ネットショップで残りあと1つの商品を
複数の客が取り合ったときどうなるかな
ネットショップで残りあと1つの商品を
複数の客が取り合ったときどうなるかな
163デフォルトの名無しさん (ワッチョイ 9e97-Cw2/)
2022/11/09(水) 22:21:42.93ID:B8ttDfTq0 複数の<input>タグがあり、その<input>要素が何番目か、またその<input>の状態のデータ(flag)を送りたい。
<input>で送れる情報は、name属性が$_POST[]のKeyとなり、データ自体はvalue属性となるが。
これでは、送れる情報は一つだけになってしまう。
inputのtypeはボタンを予定していて、valueの値に対して背景色などの装飾を設定したい。flagの状態はデータベースで管理したいと思っています。
ボタンを押したとき、そのボタンは@何番目の<input>か?そのボタンはAどんなステータスなのか?
を送る一般的な方法ありますか?
<input>で送れる情報は、name属性が$_POST[]のKeyとなり、データ自体はvalue属性となるが。
これでは、送れる情報は一つだけになってしまう。
inputのtypeはボタンを予定していて、valueの値に対して背景色などの装飾を設定したい。flagの状態はデータベースで管理したいと思っています。
ボタンを押したとき、そのボタンは@何番目の<input>か?そのボタンはAどんなステータスなのか?
を送る一般的な方法ありますか?
164デフォルトの名無しさん (ワッチョイ 527c-zlm6)
2022/11/09(水) 23:19:53.18ID:N3jhnMoZ0 ん?別にnameを被らないようにすればいいだけでは?
165デフォルトの名無しさん (ワッチョイ 515f-2wsz)
2022/11/09(水) 23:25:54.31ID:qkSO7igA0 nameって被って良いんだっけ?
166デフォルトの名無しさん (ワッチョイ 9263-zlm6)
2022/11/09(水) 23:26:13.49ID:v9YRsbRp0 ボタンのステータスって押されてるかどうかなの?
複数ボタンがあって、それをマウスで選択し同時に押して、
さらにサブミットする訳かな?
複数ボタンがあって、それをマウスで選択し同時に押して、
さらにサブミットする訳かな?
167デフォルトの名無しさん (ワッチョイ 79ac-pJTy)
2022/11/10(木) 00:03:46.62ID:OiyyiqKZ0 もうJavaScriptでやればいいじゃない
168デフォルトの名無しさん (ワッチョイ 9e97-Cw2/)
2022/11/10(木) 02:59:06.05ID:9rsfrZ3t0169デフォルトの名無しさん (ワッチョイ b161-Rq8s)
2022/11/10(木) 03:12:39.55ID:D1e6h/yW0 phpはname="hoge[]"みたいに[]付けると配列、name="hoge[hage]"みたいにすると連想配列で値取れるよ
170デフォルトの名無しさん (ワッチョイ 9e97-Cw2/)
2022/11/10(木) 03:31:30.79ID:9rsfrZ3t0 ありがとうございます。
いま。環境がないので確かめられないのですが。
POSTで受け取ったときは、こんなかんじで値が取得できますかね。。
明日チャレンジしてみます。
foreach($_POST['hoge'] as $flag){
echo $i;
echo $flag;
$i++;
}
いま。環境がないので確かめられないのですが。
POSTで受け取ったときは、こんなかんじで値が取得できますかね。。
明日チャレンジしてみます。
foreach($_POST['hoge'] as $flag){
echo $i;
echo $flag;
$i++;
}
171デフォルトの名無しさん (ワッチョイ 527c-zlm6)
2022/11/10(木) 15:22:36.26ID:yzcqKQgo0172デフォルトの名無しさん (ワッチョイ 0509-+KET)
2022/11/12(土) 09:26:14.24ID:6XR5KbEP0 >>161
共有メモリのこと?
共有メモリのこと?
173デフォルトの名無しさん (ワッチョイ a5da-gPc0)
2022/11/12(土) 17:51:55.77ID:X6RVlC/X0 >>172
URIのことだと思うよ
URIのことだと思うよ
174デフォルトの名無しさん (ワッチョイ ff97-zuBb)
2022/12/01(木) 15:52:23.45ID:vegZ2o8T0 https://kanda-it-school-kensyu.com/php-intro-contents/pi_ch04/pi_0404/
この処理ってどういうこと。
phpはサーバーで処理してhtmlタグに変換するものだし。
クライアント側は、そりゃブラウザで上からタグを読むので当然なんだが。
この処理ってどういうこと。
phpはサーバーで処理してhtmlタグに変換するものだし。
クライアント側は、そりゃブラウザで上からタグを読むので当然なんだが。
175デフォルトの名無しさん (ワッチョイ bfe7-Z2Iz)
2022/12/01(木) 16:20:11.56ID:d04ep7qN0176デフォルトの名無しさん (ワッチョイ d74f-bR+H)
2022/12/01(木) 20:16:53.86ID:REXaKPyC0 例えば、Ruby のERB では、上から順番に実行される
<p>あ</p> を読み込んで、
Ruby の式、<p><%= RUBY_VERSION %></p> を実行してから、
<p>い</p> を読み込む
require 'erb'
html =<<HTML
<p>あ</p>
<p><%= RUBY_VERSION %></p>
<p>い</p>
HTML
puts ERB.new( html, nil, "<>" ).result( binding )
出力
<p>あ</p>
<p>2.5.7</p>
<p>い</p>
<p>あ</p> を読み込んで、
Ruby の式、<p><%= RUBY_VERSION %></p> を実行してから、
<p>い</p> を読み込む
require 'erb'
html =<<HTML
<p>あ</p>
<p><%= RUBY_VERSION %></p>
<p>い</p>
HTML
puts ERB.new( html, nil, "<>" ).result( binding )
出力
<p>あ</p>
<p>2.5.7</p>
<p>い</p>
177デフォルトの名無しさん (ワッチョイ d75f-pQkX)
2022/12/01(木) 21:58:45.19ID:oIO2xTp30 PHPモード書くとエラー吐くんだな、このサーバー
178デフォルトの名無しさん (ワッチョイ d75f-zuBb)
2022/12/02(金) 17:29:48.09ID:PlsoFJv80 phpって数万行(一行10列程度)のCSV等を出力させるのってバッチ処理でもない限り無理だよね?
179デフォルトの名無しさん (ワッチョイ d75f-zuBb)
2022/12/02(金) 17:33:19.36ID:PlsoFJv80 一応phpのタイムアウト無制限にしたりメモリ上限上げたりとかしてみたけど3万行くらいで落ちる
なんかいい方法あればだれか教えて〜
なんかいい方法あればだれか教えて〜
180デフォルトの名無しさん (ワッチョイ 5701-Z2Iz)
2022/12/02(金) 17:50:40.60ID:Gp+8HXJF0 サーバにファイル作ってダウンロードさせる
他にはHTTPで圧縮かけるとか
他にはHTTPで圧縮かけるとか
181デフォルトの名無しさん (ワッチョイ bfe7-Z2Iz)
2022/12/02(金) 18:36:24.61ID:xWddkTKj0182デフォルトの名無しさん (ワッチョイ 577b-vOxd)
2022/12/02(金) 19:03:21.41ID:gLaIiOiZ0 >>178-179
俺はPHP詳しくないけど、まず何で落ちてるか正確に確認してるか?
タイムアウトは0、メモリは-1の指定で上限無しに出来ることになってるし、
落ちたらそう分かるメッセージが出るはずだが。
ちな、gc_collect_cycles()でGCも出来る。
https://www.php.net/manual/ja/features.gc.performance-considerations.php
ただ、吐き出すだけでメモリを食い尽くすのは余程プログラムの構造がおかしい限りありえない。
とりあえずmemory_get_peak_usageの値でも取ってみ?
https://www.php.net/manual/ja/function.memory-get-peak-usage.php
仮に5万行=50k行=1行100文字なら5MBだろ。メモリ上限はあり得ないと思うが。
これら以外で落ちてるのなら、その対策をしないと。
例えば、レンサバなら、長寿命のプロセスは自動的に切られる。
対策は、専用鯖にすること。
俺はPHP詳しくないけど、まず何で落ちてるか正確に確認してるか?
タイムアウトは0、メモリは-1の指定で上限無しに出来ることになってるし、
落ちたらそう分かるメッセージが出るはずだが。
ちな、gc_collect_cycles()でGCも出来る。
https://www.php.net/manual/ja/features.gc.performance-considerations.php
ただ、吐き出すだけでメモリを食い尽くすのは余程プログラムの構造がおかしい限りありえない。
とりあえずmemory_get_peak_usageの値でも取ってみ?
https://www.php.net/manual/ja/function.memory-get-peak-usage.php
仮に5万行=50k行=1行100文字なら5MBだろ。メモリ上限はあり得ないと思うが。
これら以外で落ちてるのなら、その対策をしないと。
例えば、レンサバなら、長寿命のプロセスは自動的に切られる。
対策は、専用鯖にすること。
183デフォルトの名無しさん (ワッチョイ d74f-bR+H)
2022/12/02(金) 19:05:57.07ID:R6aGvMSq0 CSV ファイルのサイズは、どれぐらい?
テキストファイルなら、zip/gzip などで圧縮できるかも
テキストファイルなら、zip/gzip などで圧縮できるかも
184デフォルトの名無しさん (ワッチョイ 9f7c-RPwI)
2022/12/02(金) 21:35:42.65ID:Ny0E8yV10 数万行ぐらい余裕じゃないかなぁ
100万行ぐらいのダウンロードやインポートとか普通にやってたけど
100万行ぐらいのダウンロードやインポートとか普通にやってたけど
185デフォルトの名無しさん (ワッチョイ ff63-RPwI)
2022/12/02(金) 22:49:13.60ID:V7r+YhBf0 数万行のデータがどの位のサイズになるか分からないが
1GB程度のファイルダウンロード処理などメモリ-使わず出来る
1GB程度のファイルダウンロード処理などメモリ-使わず出来る
186デフォルトの名無しさん (ワッチョイ e75f-Pxbt)
2022/12/03(土) 01:33:06.32ID:PlWN8Jgn0 エクスポートファイルがSJISとかだった場合、5C問題ってどうしてんの?
187デフォルトの名無しさん (ワッチョイ e75f-Pxbt)
2022/12/03(土) 01:33:54.05ID:PlWN8Jgn0 エクスポートしたCSVがSJISでPHPでインポートする場合か
188デフォルトの名無しさん (ワッチョイ 8b10-VVRZ)
2022/12/04(日) 23:02:03.15ID:APQ0RP7C0 事前にUTF-8に変換してから読み込めばいけそう
189デフォルトの名無しさん (ワッチョイ ac8b-BV3Z)
2022/12/07(水) 11:45:23.79ID:1fkWXeae0 同一ファイルへの連続書き込みについて
filewrite();
filewrite();
function filewrite() {
// 'w'の新規モードで同一ファイルへの書き込み
}
こういった感じで連続で書き込んだのですが
テキストファイルの出力結果が1回目が終わった末尾に次の書き込み
それも先頭部分ではない途中からの書き込みが重なってなされてるようでした。
関数は同期処理だと思うので途中で次に行ってるとも思えないですし
間にsleep(1);で1秒間を入れてみたのですが結果は変わらず、よくわからなくなりました。
PHPの設定はアップロードに反映まで時間間隔を入れないに設定しています。
それでも一回目の書き込みがまとめて反映されるまでやや間隔があって
2回目の反映と重なってしまってるのだろうか?と考えてもみました。
これはどうやれば1回ずつの書き込みはそのつど締められて正常に連続書き込みできるようになるのでしょうか?
PHPで同一ファイルに連続して書き込む際の注意点とかありますか?
filewrite();
filewrite();
function filewrite() {
// 'w'の新規モードで同一ファイルへの書き込み
}
こういった感じで連続で書き込んだのですが
テキストファイルの出力結果が1回目が終わった末尾に次の書き込み
それも先頭部分ではない途中からの書き込みが重なってなされてるようでした。
関数は同期処理だと思うので途中で次に行ってるとも思えないですし
間にsleep(1);で1秒間を入れてみたのですが結果は変わらず、よくわからなくなりました。
PHPの設定はアップロードに反映まで時間間隔を入れないに設定しています。
それでも一回目の書き込みがまとめて反映されるまでやや間隔があって
2回目の反映と重なってしまってるのだろうか?と考えてもみました。
これはどうやれば1回ずつの書き込みはそのつど締められて正常に連続書き込みできるようになるのでしょうか?
PHPで同一ファイルに連続して書き込む際の注意点とかありますか?
190デフォルトの名無しさん (ワッチョイ 91da-7kHv)
2022/12/07(水) 12:46:25.55ID:/vDZIDbT0 >>189
プログラムに問題が無いなら、プログラム以外に問題があんだろ
他のプロセスがいるとかな
sleep(30)とか入れて、初回書き込みのあと5秒おきに
テキストの内容および更新時刻を観察するといいよ
プログラムに問題が無いなら、プログラム以外に問題があんだろ
他のプロセスがいるとかな
sleep(30)とか入れて、初回書き込みのあと5秒おきに
テキストの内容および更新時刻を観察するといいよ
191デフォルトの名無しさん (ワッチョイ a27c-7kHv)
2022/12/07(水) 15:19:37.18ID:w780kgYS0 fclose()する前にfsync()でもしておけば同期はされるのでは?
192デフォルトの名無しさん (ワッチョイ ac8b-BV3Z)
2022/12/07(水) 15:31:04.93ID:1fkWXeae0 flock($fp,LOCK_SH); flock($fp,LOCK_UN); fflush($fp);
これらは付けてみました、しかしプログラムの方の問題だったようです
strcmp()===0の3つイコールの徹底化や改行コードの統一で正常に動くようになりました
これらは付けてみました、しかしプログラムの方の問題だったようです
strcmp()===0の3つイコールの徹底化や改行コードの統一で正常に動くようになりました
193デフォルトの名無しさん (ワッチョイ cf5f-vo7k)
2022/12/08(木) 10:49:14.78ID:yEj7mUL70 PHPUnitってデバッグしながら実行できます?
194デフォルトの名無しさん (ワッチョイ b6e7-7kHv)
2022/12/08(木) 11:16:07.17ID:FA1I/9HE0 できますん
195デフォルトの名無しさん (ワッチョイ f601-5e4C)
2022/12/08(木) 19:56:18.82ID:O25d6TKs0 xammpの環境ではexecが動くけど素のphp+apacheで動かないのって
やっぱhttpd.confかphp.iniの設定の違いかな?
phpからexecで自作のプログラム(音源出力、キー有力受付)を呼びたいんだけど、
xammpの環境からは正常に動作するんだけど、apache2.4+php7.4の環境だと
音源出力は動くけどキー入力が受け付けない。
タスクマネージャー上には存在するから呼び出しはされてるけどキー入力を受け付けて
無いみたいなんだよね。
なんか設定で怪しい項目ある?
safe_modeは一応offにしてある。
やっぱhttpd.confかphp.iniの設定の違いかな?
phpからexecで自作のプログラム(音源出力、キー有力受付)を呼びたいんだけど、
xammpの環境からは正常に動作するんだけど、apache2.4+php7.4の環境だと
音源出力は動くけどキー入力が受け付けない。
タスクマネージャー上には存在するから呼び出しはされてるけどキー入力を受け付けて
無いみたいなんだよね。
なんか設定で怪しい項目ある?
safe_modeは一応offにしてある。
196デフォルトの名無しさん (ワッチョイ 1a63-4FAg)
2022/12/08(木) 20:03:31.21ID:9104bOlZ0 何故キー入力が必要になるのか理解できないです
197デフォルトの名無しさん (ワッチョイ f601-5e4C)
2022/12/08(木) 20:15:01.79ID:O25d6TKs0198デフォルトの名無しさん (ワッチョイ f601-5e4C)
2022/12/08(木) 20:17:19.07ID:O25d6TKs0 ちなwin10環境ね
199デフォルトの名無しさん (ワッチョイ a27c-7kHv)
2022/12/08(木) 20:58:43.48ID:wvTxK2BR0 ん?
言っている事が分からんw
サーバー側もwindowsでそこでPHPからexeを動かす(コンソールアプリ?)
その動かしたexeでキー入力?
何の意味があるんだ・・・
もっと分かるように説明してくれ
言っている事が分からんw
サーバー側もwindowsでそこでPHPからexeを動かす(コンソールアプリ?)
その動かしたexeでキー入力?
何の意味があるんだ・・・
もっと分かるように説明してくれ
200デフォルトの名無しさん (ワッチョイ f601-5e4C)
2022/12/08(木) 21:23:04.49ID:O25d6TKs0 装置A(apache,php)にデバイス(キーボードとか)が繋がっている状態。
でユーザーは装置Aから音声ガイダンスが流れるからそれに従って
キー入力を行って、装置Aでどのキーが入力されたのかって
情報が欲しい。
でPHPからexceで自作のexe(C++で作成したもの)を呼び出して装置A上で
音声の再生、キー入力を受けつけたい。装置Aには画面が無い状態ね。
まぁ、普通にCSで作れってのはおいておいてw
何で装置にWebサーバーが入っているのかはhttp通信で外部からその
装置を制御したいから。
例えば俺のマシンから装置Aに対して、音声出してってPOSTすると
装置Aが音声を出すって感じ
でユーザーは装置Aから音声ガイダンスが流れるからそれに従って
キー入力を行って、装置Aでどのキーが入力されたのかって
情報が欲しい。
でPHPからexceで自作のexe(C++で作成したもの)を呼び出して装置A上で
音声の再生、キー入力を受けつけたい。装置Aには画面が無い状態ね。
まぁ、普通にCSで作れってのはおいておいてw
何で装置にWebサーバーが入っているのかはhttp通信で外部からその
装置を制御したいから。
例えば俺のマシンから装置Aに対して、音声出してってPOSTすると
装置Aが音声を出すって感じ
201デフォルトの名無しさん (ワッチョイ f601-5e4C)
2022/12/08(木) 21:31:46.95ID:O25d6TKs0 apache上で動いているPHPにそのマシンからのキー入力情報が
受け取れるなら別にexecで外部プログラムを呼ばなくてもいいけど、
他に方法があるなら教えてくれ。
Node.jsでjavascriptで受け取るってのはだめだったら試す。
受け取れるなら別にexecで外部プログラムを呼ばなくてもいいけど、
他に方法があるなら教えてくれ。
Node.jsでjavascriptで受け取るってのはだめだったら試す。
202デフォルトの名無しさん (ワッチョイ f601-5e4C)
2022/12/08(木) 21:39:10.00ID:O25d6TKs0 サーバー上で標準入力を受け取りたいんだけど
エンターボタンは無いからC++で書いてる。
エンターボタンは無いからC++で書いてる。
203デフォルトの名無しさん (ワッチョイ 8cbb-20rA)
2022/12/08(木) 21:56:41.92ID:yrpHKjJA0 xamppでは動いたんだよね?
だったらxamppでやけば良い気がするけど...
いくつか制限できる方法はあるのですぐ出てきたやつ貼っとく
https://www.php.net/manual/ja/ini.core.php#ini.disable-functions
レンサバなんかだと制限があったりするけど、デフォルトでは特に制限なかったと思うけどなぁ
だったらxamppでやけば良い気がするけど...
いくつか制限できる方法はあるのですぐ出てきたやつ貼っとく
https://www.php.net/manual/ja/ini.core.php#ini.disable-functions
レンサバなんかだと制限があったりするけど、デフォルトでは特に制限なかったと思うけどなぁ
204デフォルトの名無しさん (ワッチョイ f601-5e4C)
2022/12/08(木) 22:02:56.68ID:O25d6TKs0 >>203
ありがと。php.iniはほぼデフォで使ってるから
その辺の設定は特に入れてないはずなんだよな・・・・
タスクマネージャみてるとxampp controllから呼ばれている場合は
動いてるんだよな・・・
2つのexeのうち1つは普通に動いているから権限でもなさそうだし・・・
ありがと。php.iniはほぼデフォで使ってるから
その辺の設定は特に入れてないはずなんだよな・・・・
タスクマネージャみてるとxampp controllから呼ばれている場合は
動いてるんだよな・・・
2つのexeのうち1つは普通に動いているから権限でもなさそうだし・・・
205デフォルトの名無しさん (ワッチョイ 2261-Y5ds)
2022/12/09(金) 00:28:47.75ID:TadN+Pts0 apacheがwindowsサービスで動いてるなら仕様じゃね?
206デフォルトの名無しさん (ワッチョイ acfa-BV3Z)
2022/12/09(金) 20:34:02.72ID:jNmVPDHZ0 文字列は "abc" 囲いでも 'abc' 囲いでもどちらでもいいようになってますが
皆さんはどちらを標準にして囲ってますか?
あるいはこういうケースの時はこっちを使うというような例などがあったら聞かせてください
皆さんはどちらを標準にして囲ってますか?
あるいはこういうケースの時はこっちを使うというような例などがあったら聞かせてください
207デフォルトの名無しさん (ワッチョイ a27c-4FAg)
2022/12/09(金) 23:16:21.56ID:UyKdfg3p0 普段はシングルクォーテーション
変数展開とかするならダブルクォーテーションだな
変数展開とかするならダブルクォーテーションだな
208デフォルトの名無しさん (ワッチョイ 91da-R4o2)
2022/12/09(金) 23:21:07.50ID:WbcD0Rxq0 Cから来たので基本はダブルクォーテーションかな
シングルは 文字列中にダブルクォートが多いときか
オプションみたいな1文字ですって強調したいときに使う
シングルは 文字列中にダブルクォートが多いときか
オプションみたいな1文字ですって強調したいときに使う
209デフォルトの名無しさん (ワッチョイ 27ac-GD9R)
2022/12/10(土) 12:45:51.50ID:y3cK8mxB0 みんなでどっちに揃えましょうとかどっちが多数ですというようなものはないんですかね
210デフォルトの名無しさん (ワッチョイ a7da-FUlb)
2022/12/10(土) 17:00:52.24ID:wlUDu/T/0 どっちにそろえようとかは特にないし
PSR-12なんかでも規定はないね
というか、一貫性が何より大切だから
どっち使ってもいいけど必ず統一しろ
と書いてある
PSR-12なんかでも規定はないね
というか、一貫性が何より大切だから
どっち使ってもいいけど必ず統一しろ
と書いてある
211デフォルトの名無しさん (ワイーワ2 FF9f-Opz5)
2022/12/10(土) 17:28:10.93ID:8BH9hZYzF テンプレートリテラル使うからダブルクォーテーションが多め
Viewとコントローラ一緒のファイルで記述する時はPHP側は基本シングルクォーテーションにしてる
Viewとコントローラ一緒のファイルで記述する時はPHP側は基本シングルクォーテーションにしてる
212デフォルトの名無しさん (ワッチョイ 675f-TX1J)
2022/12/14(水) 10:36:26.00ID:clTPPvgu0 どなたかfuelphpという産廃使ってる方いませんかー!
テスト導入に苦戦してまして…
テスト導入に苦戦してまして…
213デフォルトの名無しさん (ワッチョイ 7fbb-dmwH)
2022/12/14(水) 17:12:07.16ID:EUJoHYXL0 >>212
産廃はお前だよ
産廃はお前だよ
214デフォルトの名無しさん (ワッチョイ a7da-3TNT)
2022/12/14(水) 18:44:26.38ID:1dR4tl0p0 >>212
FuelPHPなら使っているが、産廃などと言うやつには一切の手助けはしない。
FuelPHPなら使っているが、産廃などと言うやつには一切の手助けはしない。
215デフォルトの名無しさん (ワッチョイ 7f63-KKgq)
2022/12/14(水) 19:11:09.38ID:erx97Ujd0 文字列としてSQL扱うときは、外側は " にしてた
216デフォルトの名無しさん (ワッチョイ 675f-TX1J)
2022/12/15(木) 11:47:59.66ID:LeGrOdjQ0217デフォルトの名無しさん (ワッチョイ 7f63-KKgq)
2022/12/15(木) 22:44:28.75ID:2voHnGHc0 上手くいったら報告して
218デフォルトの名無しさん (ワッチョイ df7c-KKgq)
2022/12/15(木) 22:54:29.04ID:lBgSxiuh0219デフォルトの名無しさん (ワッチョイ 679f-NKnn)
2022/12/15(木) 23:22:29.62ID:2B516vAy0 10年前のフレームワークかぁ
220デフォルトの名無しさん (ワッチョイ 7f63-KKgq)
2022/12/15(木) 23:49:29.88ID:2voHnGHc0 歴戦の勇士なら使える
221デフォルトの名無しさん (ワッチョイ 7fbb-dmwH)
2022/12/15(木) 23:59:56.21ID:WOnFczjv0 まともな情報量をもった質問もできない産廃をかまってやるなんてお前ら優しいな
222デフォルトの名無しさん (ワッチョイ 675f-TX1J)
2022/12/16(金) 18:02:33.05ID:sLgaZEhZ0 >>221
産廃をありがたがって使ってるお前が異端なんだよ
産廃をありがたがって使ってるお前が異端なんだよ
223デフォルトの名無しさん (ワッチョイ 675f-TX1J)
2022/12/16(金) 18:04:56.98ID:sLgaZEhZ0 >>218
モックのライブラリ入れるとcomposerさんがちゃんと更新してくれなくてな…記事も少なくてクソだわ
モックのライブラリ入れるとcomposerさんがちゃんと更新してくれなくてな…記事も少なくてクソだわ
224デフォルトの名無しさん (ワッチョイ df7c-KKgq)
2022/12/16(金) 18:25:02.16ID:s8p4pdj90 将来的な事を考えたら多少コストがかかろうがLaravelなどに書き換えた方が良さそうだけどねぇ
多分そんなに予算も無く、修正や機能追加に金は出せないみたいな所から受けていたら悲惨としか・・・
多分そんなに予算も無く、修正や機能追加に金は出せないみたいな所から受けていたら悲惨としか・・・
225デフォルトの名無しさん (ワッチョイ 675f-TX1J)
2022/12/16(金) 18:52:17.38ID:sLgaZEhZ0226デフォルトの名無しさん (ワッチョイ 675f-Opz5)
2022/12/16(金) 20:43:17.62ID:kkMqd6VL0 上司「オーバーヘッドと速度低下おきるからフレームワークは禁止。クラスとMVCは自分で定義してわかりやすくしろ、見本は無い」
227デフォルトの名無しさん (ワッチョイ be95-DiWi)
2022/12/17(土) 10:51:57.18ID:kvss8RMi0 まずその上司のリファクタリングが必要
228デフォルトの名無しさん (ワッチョイ be63-e5AJ)
2022/12/17(土) 11:02:16.79ID:QDDpMmFH0 ネコの会社
229デフォルトの名無しさん (ワッチョイ 535f-tZgX)
2022/12/17(土) 17:05:55.72ID:PuWdgN410 >>227
リファクタリングって動きは変えないから何も変わらんのでは?
リファクタリングって動きは変えないから何も変わらんのでは?
230デフォルトの名無しさん (ワッチョイ 3ebb-fz0m)
2022/12/17(土) 17:11:12.27ID:on9KAdJq0 テストしやすくなるんでしょ
重要w
重要w
231デフォルトの名無しさん (ワッチョイ 0f32-m4BD)
2022/12/18(日) 22:34:02.51ID:Sye5af7x0 下らねえ質問はここに書き込みやがれ
232デフォルトの名無しさん (ワッチョイ 535f-5Liq)
2022/12/18(日) 23:07:20.33ID:HXc3HAGH0 file_gets_contentってマジカル変数みたいなの使わないとうまく行かないことがあるけど何か違いあるのかな?
同じフォルダ階層にいるjsonの内容読み取るだけだから必要無さそうな気がするんだが
同じフォルダ階層にいるjsonの内容読み取るだけだから必要無さそうな気がするんだが
233デフォルトの名無しさん (ワッチョイ ea97-ZR1D)
2022/12/19(月) 08:00:13.41ID:GcFpX62a0 assert()など、デバッグ用のコードって本実装のとき残しているものなのですか?
それとも削除するものなのですか?
それとも削除するものなのですか?
234デフォルトの名無しさん (ワッチョイ 26e7-JDfe)
2022/12/19(月) 09:48:24.14ID:aVzxjlfF0235デフォルトの名無しさん (ワッチョイ 535f-5Liq)
2022/12/19(月) 10:51:17.06ID:+PhZX49Z0 >>234
マジック定数って言うのか!恥ずかしい!!
マジック定数って言うのか!恥ずかしい!!
236デフォルトの名無しさん (ワッチョイ 26e7-JDfe)
2022/12/19(月) 11:00:09.40ID:aVzxjlfF0 >>235
それでもまだ意味がわからないんだけど、第二引数のことを言ってる?
つまり、それは、同じディレクトリを探索させたいのに
インクルードパスの探索を指定(true)していて、かつ
インクルードパスにカレントを指定してないって感じか
そう、君のバグです
それでもまだ意味がわからないんだけど、第二引数のことを言ってる?
つまり、それは、同じディレクトリを探索させたいのに
インクルードパスの探索を指定(true)していて、かつ
インクルードパスにカレントを指定してないって感じか
そう、君のバグです
237デフォルトの名無しさん (ワッチョイ 535f-5Liq)
2022/12/19(月) 11:20:29.71ID:+PhZX49Z0238デフォルトの名無しさん (ワッチョイ 3ebb-fz0m)
2022/12/19(月) 11:30:22.81ID:kpBvGP850239デフォルトの名無しさん (ワッチョイ a301-e5AJ)
2022/12/19(月) 16:21:21.04ID:A864IMiY0240デフォルトの名無しさん (ワッチョイ 6aa9-7pLU)
2022/12/19(月) 20:04:25.66ID:qVdptYk+0 postの判別を検索したら、php入門なるサイトで
if($_SERVER["REQUEST_METHOD"] = "POST"){
というのがあったので、やってみてもダメだったのが
if($_SERVER["REQUEST_METHOD"] == "POST"){
ならokだったのですが、
php4やphp5の頃は問題が無かったのか、そもそもサイトの情報が間違いなのかどっちなのでしょうか?
if($_SERVER["REQUEST_METHOD"] = "POST"){
というのがあったので、やってみてもダメだったのが
if($_SERVER["REQUEST_METHOD"] == "POST"){
ならokだったのですが、
php4やphp5の頃は問題が無かったのか、そもそもサイトの情報が間違いなのかどっちなのでしょうか?
241デフォルトの名無しさん (ワッチョイ aa7c-e5AJ)
2022/12/19(月) 20:41:16.39ID:GWLkdDwg0 そりゃ=は代入だからダメだろw
242デフォルトの名無しさん (ワッチョイ ea97-ZR1D)
2022/12/20(火) 09:14:27.19ID:B/jnFsL10 >>239
ありがとうございます。あと一点質問させてください。
debugならassert()系のメソッド?関数?で事足りるとおもうのですが、
わざわざphpUnitなるライブラリを使う方法もあるそうです。
phpUnitを使うことのメリットがよくわかりません。
どんなことで利点があるかお分かりになれば教えてください。
ありがとうございます。あと一点質問させてください。
debugならassert()系のメソッド?関数?で事足りるとおもうのですが、
わざわざphpUnitなるライブラリを使う方法もあるそうです。
phpUnitを使うことのメリットがよくわかりません。
どんなことで利点があるかお分かりになれば教えてください。
243デフォルトの名無しさん (ワッチョイ 3ebb-fz0m)
2022/12/20(火) 10:07:52.67ID:QTfYNwyf0 >>242
多分根本的に間違って理解してると思う
https://speakerdeck.com/twada/php-conference-2016?slide=68
リンクした章を読んでみるとassertの使い方が分かるんじゃないかなぁ
多分根本的に間違って理解してると思う
https://speakerdeck.com/twada/php-conference-2016?slide=68
リンクした章を読んでみるとassertの使い方が分かるんじゃないかなぁ
244デフォルトの名無しさん (ワッチョイ aa7c-e5AJ)
2022/12/20(火) 12:46:29.70ID:cyGUI4Ab0 デバッグを効率的にやりたいだけの話なら
xdebug入れてブレークポイントなどを使う方が良いんじゃない?
xdebug入れてブレークポイントなどを使う方が良いんじゃない?
245デフォルトの名無しさん (ワッチョイ 3bda-840Q)
2022/12/20(火) 14:33:30.45ID:F+OZA9Ef0 全部デバッグレベルのログで出力してるわ
printfデバッグの上位互換です
本番はログレベル下げるだけだし
printfデバッグの上位互換です
本番はログレベル下げるだけだし
246デフォルトの名無しさん (ワッチョイ 97a9-5fj/)
2022/12/25(日) 08:18:35.97ID:YjenC8+L0 bashからphpも始めた身ですが、
変数を ${hogehoge} の波括弧でも動作しますが、{$hogehoge}のほうがいいですか?
変数を ${hogehoge} の波括弧でも動作しますが、{$hogehoge}のほうがいいですか?
247デフォルトの名無しさん (ワッチョイ 7fbb-EkqE)
2022/12/25(日) 08:33:33.01ID:8c2A2dic0 >>246
バージョンによる
以下、8.2以降に関して
https://www.php.net/manual/ja/migration82.deprecated.php
> "${var}" と "${expr}" 形式の文字列への値の埋め込みは、推奨されなくなりました。 "$var"/"{$var}" や "{${expr}}" 形式をそれぞれ使ってください。
バージョンによる
以下、8.2以降に関して
https://www.php.net/manual/ja/migration82.deprecated.php
> "${var}" と "${expr}" 形式の文字列への値の埋め込みは、推奨されなくなりました。 "$var"/"{$var}" や "{${expr}}" 形式をそれぞれ使ってください。
248デフォルトの名無しさん (ワッチョイ 97a9-5fj/)
2022/12/25(日) 08:44:53.24ID:YjenC8+L0249デフォルトの名無しさん (ワッチョイ 7fbb-EkqE)
2022/12/25(日) 08:49:53.76ID:8c2A2dic0 >>248
教本等での指定がなければ、8.1以降で学習するほうが良いです
https://www.php.net/supported-versions.php
7.4はすでにサポート対象外であり、8.0もアクティブサポートは終わっています
8.0以降で大きく変わった箇所もあるので、教本もできれば8.0以降のものを選ぶのが良いです
教本等での指定がなければ、8.1以降で学習するほうが良いです
https://www.php.net/supported-versions.php
7.4はすでにサポート対象外であり、8.0もアクティブサポートは終わっています
8.0以降で大きく変わった箇所もあるので、教本もできれば8.0以降のものを選ぶのが良いです
250デフォルトの名無しさん (ワッチョイ 97a9-5fj/)
2022/12/25(日) 10:30:36.23ID:YjenC8+L0251デフォルトの名無しさん (アウアウウー Sa1f-XLH4)
2022/12/26(月) 13:14:09.74ID:9taBvybYa vendor配下はpushしない人多いと思いますが、例えば10年後にディスク障害で再インストールが必要になった場合に、composer install でちゃんと元通りになるもんなんでしょうか?
古いバージョンのライブラリなどはアーカイブされててinstallがコケそうな気がするんですが。
ちゃんとバックアップとっておいてそこから戻せって話ですかね?
古いバージョンのライブラリなどはアーカイブされててinstallがコケそうな気がするんですが。
ちゃんとバックアップとっておいてそこから戻せって話ですかね?
252デフォルトの名無しさん (ワッチョイ 7fbb-EkqE)
2022/12/26(月) 13:21:51.28ID:/E6J1+u80 まず10年後までアップデートしないで使うのがNGかと
そもそもphpが全然変わってるはず
そもそもphpが全然変わってるはず
253デフォルトの名無しさん (ワッチョイ 5f95-4Ar3)
2022/12/26(月) 15:04:43.24ID:56qYJgfP0 約10年前のLaravel 4もまだリポジトリにあるし
10年くらいじゃ旧バージョンも含めて管理下にあると思ってよいと思う
バージョンが古すぎてcomposer updateが通らなくなることはあっても
composer installは通るんじゃないかな
10年くらいじゃ旧バージョンも含めて管理下にあると思ってよいと思う
バージョンが古すぎてcomposer updateが通らなくなることはあっても
composer installは通るんじゃないかな
254デフォルトの名無しさん (ワッチョイ 1be7-aH43)
2022/12/26(月) 15:25:46.38ID:6zrBELjK0 ところがどっこい通りません
255デフォルトの名無しさん (アウアウウー Sa1f-XLH4)
2022/12/26(月) 15:53:40.61ID:RVhrOqwEa vendor配下をプッシュしないのは、composer install で復元出来ることと、容量の無駄遣いってことだと思ってましたがデメリットが容量の問題だけならプッシュしておいた方が何も考えなくて良い感じですかね?
256デフォルトの名無しさん (ワッチョイ 9302-s0Sd)
2022/12/28(水) 18:11:15.40ID:iMra0KKw0 配列の要素数だけを繰り返したいのですが。
これまでforeach文を利用していました。
ですが、その配列の要素を参照するだけでなく、
同じ要素数の別の配列を参照したりしています。
ちょっとforeachではないような気がします。
例えば、以下のような要素数を合わせた配列を
要素番号に沿って同時に処理します。
$color_arr
$body_arr
$subcomment_arry
配列の要素数だけを繰り返す。
という意味でもっとも適した繰り返し文は
何でしょうか?
これまでforeach文を利用していました。
ですが、その配列の要素を参照するだけでなく、
同じ要素数の別の配列を参照したりしています。
ちょっとforeachではないような気がします。
例えば、以下のような要素数を合わせた配列を
要素番号に沿って同時に処理します。
$color_arr
$body_arr
$subcomment_arry
配列の要素数だけを繰り返す。
という意味でもっとも適した繰り返し文は
何でしょうか?
257デフォルトの名無しさん (ワッチョイ 7fbb-EkqE)
2022/12/28(水) 18:16:59.77ID:uPVj0Dve0 ちょっと何言ってるかわからない
もう少し具体的なコードなりデータなりで質問すると回答があるかも
あと、配列操作に関しては php は充実しすぎてるんで、以下のリンクも参考に見てみるといい
https://www.php.net/manual/ja/ref.array.php
もう少し具体的なコードなりデータなりで質問すると回答があるかも
あと、配列操作に関しては php は充実しすぎてるんで、以下のリンクも参考に見てみるといい
https://www.php.net/manual/ja/ref.array.php
258デフォルトの名無しさん (ワッチョイ e17b-xQ0t)
2022/12/28(水) 20:12:34.76ID:kuotjsyy0 >>256
foreachだよ。
それは構造がおかしい。
セットで使うものなら、 ["color"=>xxx, "body"=>yyy, "subcomment"=>zzz] として最初から纏めておく。
foreachだよ。
それは構造がおかしい。
セットで使うものなら、 ["color"=>xxx, "body"=>yyy, "subcomment"=>zzz] として最初から纏めておく。
259デフォルトの名無しさん (ワッチョイ 6dda-4Ar3)
2022/12/29(木) 00:02:29.48ID:CeHhEiXD0 参照に使った変数をunsetし忘れると
マジで意味不明な挙動するよね
あれどうにかなんねーのかな
マジで意味不明な挙動するよね
あれどうにかなんねーのかな
260デフォルトの名無しさん (ワッチョイ e17b-xQ0t)
2022/12/29(木) 00:26:52.03ID:Au5DjajA0 >>259
php.netのforeachに警告として載っているケースなら、変だし糞だけど意味不明ではないね。
https://www.php.net/manual/ja/control-structures.foreach.php
foreachでスコープを作らず、変数宣言もない(=最初の使用が宣言扱い)言語なら、こうなる。
正しい解はforeachでスコープを作り、外側の変数を見えるようにすることで、CやJSやその他言語は勿論そうなってる。
言語としてのPHPは相変わらずぶっちぎりで糞なだけだね。
php.netのforeachに警告として載っているケースなら、変だし糞だけど意味不明ではないね。
https://www.php.net/manual/ja/control-structures.foreach.php
foreachでスコープを作らず、変数宣言もない(=最初の使用が宣言扱い)言語なら、こうなる。
正しい解はforeachでスコープを作り、外側の変数を見えるようにすることで、CやJSやその他言語は勿論そうなってる。
言語としてのPHPは相変わらずぶっちぎりで糞なだけだね。
261デフォルトの名無しさん (ワッチョイ bfac-IQOL)
2022/12/29(木) 01:12:32.11ID:ptlutJts0 そんなにforeachで参照してる配列自体の要素を変更する?
読みづらくなるからワイはしないようにしてるけど
読みづらくなるからワイはしないようにしてるけど
262256 (ワッチョイ 9302-s0Sd)
2022/12/29(木) 02:15:09.37ID:KIQEFzci0 色々とアドバイスありがとうございます。
用途としては、次のようにselectクエリの結果セットを1行づつ$rowに格納して
カラムの値をそれぞれ配列に格納しています。
配列の一つである$ImageId_arrをforeach()で利用して、配列分の値をecho
させています。
本来のforeachの使い方ではなくて、気持ち悪いと思います。
while ($row = $result->fetch_assoc()) {
$ImageId_arr[] = $row["image_id"];
$color_arr[] = $row["color"];
$body_arr[] = $row["body"];
$subcommnet_arr[] = $row["subcomment"];
}
foreach($ImageId_array as $key){
echo "<p>".$ImageId_arr[$i]."</p>";
echo "<p>".$color_arr[$i] ."</p>";
echo "<p>".$body_arr[$i]."</p>";
echo "<p>".$subcommnet_arr[$i]."</p>";
$i++;
}
用途としては、次のようにselectクエリの結果セットを1行づつ$rowに格納して
カラムの値をそれぞれ配列に格納しています。
配列の一つである$ImageId_arrをforeach()で利用して、配列分の値をecho
させています。
本来のforeachの使い方ではなくて、気持ち悪いと思います。
while ($row = $result->fetch_assoc()) {
$ImageId_arr[] = $row["image_id"];
$color_arr[] = $row["color"];
$body_arr[] = $row["body"];
$subcommnet_arr[] = $row["subcomment"];
}
foreach($ImageId_array as $key){
echo "<p>".$ImageId_arr[$i]."</p>";
echo "<p>".$color_arr[$i] ."</p>";
echo "<p>".$body_arr[$i]."</p>";
echo "<p>".$subcommnet_arr[$i]."</p>";
$i++;
}
263デフォルトの名無しさん (ワッチョイ 9302-s0Sd)
2022/12/29(木) 02:17:19.06ID:KIQEFzci0 ×
foreach($ImageId_array as $key){
〇
foreach($ImageId_arr as $key){
foreach($ImageId_array as $key){
〇
foreach($ImageId_arr as $key){
264デフォルトの名無しさん (ワッチョイ 7fbb-EkqE)
2022/12/29(木) 04:56:37.27ID:L5ICo1eU0 それなら foreach() でよさげ
$rows = $result->fetch_assoc());
foreach($rows as $row){
echo "<p>".$row["image_id"]."</p>";
・
・
}
$rows = $result->fetch_assoc());
foreach($rows as $row){
echo "<p>".$row["image_id"]."</p>";
・
・
}
265デフォルトの名無しさん (アウアウウー Sa71-MkkF)
2022/12/29(木) 05:46:19.92ID:KLxb2KfBa >>251
Ruby on Rails ではプロは、全てのモジュールを1週間毎に更新する。
もし更新しなかったら、セキュリティーホールから侵入されて、データを抜かれる
例えば、そのサイトのJava のTomcat から、パスワードが抜かれましたとか、
ブラウザから通知が来る
それで、そのサイトがモジュールを更新していない事が分かる
Ruby on Rails ではプロは、全てのモジュールを1週間毎に更新する。
もし更新しなかったら、セキュリティーホールから侵入されて、データを抜かれる
例えば、そのサイトのJava のTomcat から、パスワードが抜かれましたとか、
ブラウザから通知が来る
それで、そのサイトがモジュールを更新していない事が分かる
266デフォルトの名無しさん (アウアウウー Sa71-MkkF)
2022/12/29(木) 05:46:19.99ID:KLxb2KfBa >>251
Ruby on Rails ではプロは、全てのモジュールを1週間毎に更新する。
もし更新しなかったら、セキュリティーホールから侵入されて、データを抜かれる
例えば、そのサイトのJava のTomcat から、パスワードが抜かれましたとか、
ブラウザから通知が来る
それで、そのサイトがモジュールを更新していない事が分かる
Ruby on Rails ではプロは、全てのモジュールを1週間毎に更新する。
もし更新しなかったら、セキュリティーホールから侵入されて、データを抜かれる
例えば、そのサイトのJava のTomcat から、パスワードが抜かれましたとか、
ブラウザから通知が来る
それで、そのサイトがモジュールを更新していない事が分かる
267デフォルトの名無しさん (アウアウウー Sa71-MkkF)
2022/12/29(木) 07:40:46.65ID:KLxb2KfBa Ruby のERB では、<%= 〜 %> で出力される。<% 〜 %> で出力されない。
〜には、Rubyのコード片。
"<p>".$ImageId_arr[$i]."</p>" みたいに、文字列を連結しない
require 'erb'
include ERB::Util
# ERB では、html escape するのに、ERB::Util.h メソッドが必要
html =<<HTML
<% rows.each do |row| %>
<p>aは、<%=h row["a"] %></p>
<p>bは、<%=h row["b"] %></p>
<% end %>
HTML
rows = [ { "a" => "a1", "b" => 1 }, { "a" => "<a2>", "b" => 2 } ]
puts ERB.new( html, nil, "<>" ).result( binding )
出力
<p>aは、a1</p>
<p>bは、1</p>
<p>aは、<a2></p>
<p>bは、2</p>
< が< に、> が> に、エスケープされる
〜には、Rubyのコード片。
"<p>".$ImageId_arr[$i]."</p>" みたいに、文字列を連結しない
require 'erb'
include ERB::Util
# ERB では、html escape するのに、ERB::Util.h メソッドが必要
html =<<HTML
<% rows.each do |row| %>
<p>aは、<%=h row["a"] %></p>
<p>bは、<%=h row["b"] %></p>
<% end %>
HTML
rows = [ { "a" => "a1", "b" => 1 }, { "a" => "<a2>", "b" => 2 } ]
puts ERB.new( html, nil, "<>" ).result( binding )
出力
<p>aは、a1</p>
<p>bは、1</p>
<p>aは、<a2></p>
<p>bは、2</p>
< が< に、> が> に、エスケープされる
268267 (アウアウウー Sa71-MkkF)
2022/12/29(木) 07:45:09.94ID:KLxb2KfBa 出力
<p>aは、a1</p>
<p>bは、1</p>
<p>aは、& lt;a2& gt;</p>
<p>bは、2</p>
< が& lt; に、> が& gt; に、エスケープされる
便宜上、& の後ろに、空白を入れておく
<p>aは、a1</p>
<p>bは、1</p>
<p>aは、& lt;a2& gt;</p>
<p>bは、2</p>
< が& lt; に、> が& gt; に、エスケープされる
便宜上、& の後ろに、空白を入れておく
269デフォルトの名無しさん (ワッチョイ e17b-xQ0t)
2022/12/29(木) 08:29:06.21ID:Au5DjajA0 >>261
しないね。
だから昨今の関数型や再代入禁止とかの"正しい"プログラミング流儀に則ってれば、大して問題にならない。
とはいえPHPでは主力ループがforeachだし、
この仕様変更で動かなくなるプログラムが大量にあるとも思えないし、さっさと修正すべきだね。
まあそれ以前の比較や三項演算子を修正してる段階だから、あと10年くらいかかるか?
どうでもいいが珍しくPHP.netの糞な所を見つけた。
最近のこの手のサイトはURLの#xxxで該当部分にすぐ飛べるように<a>を散りばめているが、PHP.netはやってない。
だから260にも記事ページを頭から全部読め、のURLしか貼れなかった。
各ページを頭から全部読んでも問題ない量に抑えるアナログ的解決も素晴らしいが、<a>はやっておくべきだね。
contributeしたいぞと思ってる人はどうぞ。
しないね。
だから昨今の関数型や再代入禁止とかの"正しい"プログラミング流儀に則ってれば、大して問題にならない。
とはいえPHPでは主力ループがforeachだし、
この仕様変更で動かなくなるプログラムが大量にあるとも思えないし、さっさと修正すべきだね。
まあそれ以前の比較や三項演算子を修正してる段階だから、あと10年くらいかかるか?
どうでもいいが珍しくPHP.netの糞な所を見つけた。
最近のこの手のサイトはURLの#xxxで該当部分にすぐ飛べるように<a>を散りばめているが、PHP.netはやってない。
だから260にも記事ページを頭から全部読め、のURLしか貼れなかった。
各ページを頭から全部読んでも問題ない量に抑えるアナログ的解決も素晴らしいが、<a>はやっておくべきだね。
contributeしたいぞと思ってる人はどうぞ。
270デフォルトの名無しさん (ワッチョイ e17b-xQ0t)
2022/12/29(木) 08:56:07.28ID:Au5DjajA0 >>262
それを気持ち悪いと感じるのは、君が連想配列やジャグ配列に慣れてないだけだよ。
むしろ普通は、元々一体だった$rowをわざわざバラし、
再度くっつけ直すときにforeachガーとか言ってるそのコードが気持ち悪い。
明らかにやらなくて済むことをやってて文句言ってるだけだし、意味無いだろ。
それを気持ち悪いと感じるのは、君が連想配列やジャグ配列に慣れてないだけだよ。
むしろ普通は、元々一体だった$rowをわざわざバラし、
再度くっつけ直すときにforeachガーとか言ってるそのコードが気持ち悪い。
明らかにやらなくて済むことをやってて文句言ってるだけだし、意味無いだろ。
271デフォルトの名無しさん (ワッチョイ 9302-s0Sd)
2022/12/29(木) 12:34:23.96ID:KIQEFzci0 >>264
ありがとうございます。以下のコードですが、
$rows = $result->fetch_assoc();
これだと1レコードのカラムだけをrowsに格納することになります。
それで、
$rows = $result->fetch_all();
にしてみると、全てのレコードを取得できるのですが、
カラムがそのまま連想配列のキーとなりません。
全てのレコードのカラムを連想配列として取得するには
どう記述すればよろしいでしょうか?
ありがとうございます。以下のコードですが、
$rows = $result->fetch_assoc();
これだと1レコードのカラムだけをrowsに格納することになります。
それで、
$rows = $result->fetch_all();
にしてみると、全てのレコードを取得できるのですが、
カラムがそのまま連想配列のキーとなりません。
全てのレコードのカラムを連想配列として取得するには
どう記述すればよろしいでしょうか?
272デフォルトの名無しさん (ワッチョイ 2101-dxp0)
2022/12/29(木) 12:44:04.70ID:aUIDokF60 マニュアル読んだ方が早いよ
273デフォルトの名無しさん (ワッチョイ 8b61-3CYd)
2022/12/29(木) 12:55:39.42ID:b2cknnYm0 >>271
$rows = $result->fetch_all(MYSQLI_ASSOC);
$rows = $result->fetch_all(MYSQLI_ASSOC);
274デフォルトの名無しさん (スッップ Sd57-o2AS)
2022/12/29(木) 13:08:54.14ID:PNv6ubt+d >>262
264と270の言う通り、二次元配列の理解が足りないんだと思う
二次元配列で扱うようにすれば上手くいくよ
$rows = array();
while ($row = $result->fetch_assoc()) {
$rows[] = $row;
}
foreach($rows as $row){
echo "<p>".$row["image_id"]."</p>";
echo "<p>".$row["body"]."</p>";
echo "<p>".$row["body"]."</p>";
echo "<p>".$row["subcomment"]."</p>";
}
264と270の言う通り、二次元配列の理解が足りないんだと思う
二次元配列で扱うようにすれば上手くいくよ
$rows = array();
while ($row = $result->fetch_assoc()) {
$rows[] = $row;
}
foreach($rows as $row){
echo "<p>".$row["image_id"]."</p>";
echo "<p>".$row["body"]."</p>";
echo "<p>".$row["body"]."</p>";
echo "<p>".$row["subcomment"]."</p>";
}
275デフォルトの名無しさん (ワッチョイ 6dda-4Ar3)
2022/12/29(木) 13:58:39.47ID:qAF+l3pr0276デフォルトの名無しさん (ワッチョイ e17b-xQ0t)
2022/12/29(木) 14:24:41.49ID:Au5DjajA0 >>274
× 二次元配列
○ ジャグ配列(配列の中の配列)
な。PHPでは(というよりもほぼ全部の言語では)多次元配列はジャグ配列で構成するので、
ほぼ区別する必要はないが、逆に言えば、ここで引っかかってる時点で256はPHP出身ではない。
今時、連想配列を使えない言語なんてCくらいしかないので、おそらく256はC(かその程度の原始的な言語)出身。
だから添字は数字のみ、と考えてああいうコードになってる。
Cにはforeachも無いので、使い方にも悩むことになる。
で、Cの場合は多次元配列はジャグ配列以外でも実装出来る
(というよりCで多次元配列と言うとジャグ配列じゃない物を指す)ので、
256に対してその言い方だと誤解を招くかもしれないので、
この辺まで見えてたら非PHP用語使ってあげて。
× 二次元配列
○ ジャグ配列(配列の中の配列)
な。PHPでは(というよりもほぼ全部の言語では)多次元配列はジャグ配列で構成するので、
ほぼ区別する必要はないが、逆に言えば、ここで引っかかってる時点で256はPHP出身ではない。
今時、連想配列を使えない言語なんてCくらいしかないので、おそらく256はC(かその程度の原始的な言語)出身。
だから添字は数字のみ、と考えてああいうコードになってる。
Cにはforeachも無いので、使い方にも悩むことになる。
で、Cの場合は多次元配列はジャグ配列以外でも実装出来る
(というよりCで多次元配列と言うとジャグ配列じゃない物を指す)ので、
256に対してその言い方だと誤解を招くかもしれないので、
この辺まで見えてたら非PHP用語使ってあげて。
277デフォルトの名無しさん (ワッチョイ e17b-xQ0t)
2022/12/29(木) 14:57:10.69ID:Au5DjajA0 >>275
結局のところ、スクリプト言語=お手軽に使える言語=大きいのを作るのには無理がある、ってだけだな。
JSはまだマシだが、PHPではかなり無理がある。
変数宣言は、ワンライナーをやる場合は壮絶にウザイが、PHPではこの点は問題ない。
ただ、過去のコードが使えなくなるのは大問題なので、現実的にはTSのようにビルド時の対応しか出来ないだろう。
個人的には、Array. String周りの関数の引数の順や名前や挙動とかマトモに整理してくれよ、と思う。
PHPが主力言語な連中なら全部覚えればいいのだろうが、そうではないので、一々毎回引き直して引っかかって不快感半端ない。
(じゃあLaravel使えではあるが、実際わざわざ導入するほどそれらの関数を使いまくることもないので中途半端で困る)
逆に、スコープ周りとかはポンコツではあるが一貫性はあるので、それほどストレスは感じない。
結局のところ、スクリプト言語=お手軽に使える言語=大きいのを作るのには無理がある、ってだけだな。
JSはまだマシだが、PHPではかなり無理がある。
変数宣言は、ワンライナーをやる場合は壮絶にウザイが、PHPではこの点は問題ない。
ただ、過去のコードが使えなくなるのは大問題なので、現実的にはTSのようにビルド時の対応しか出来ないだろう。
個人的には、Array. String周りの関数の引数の順や名前や挙動とかマトモに整理してくれよ、と思う。
PHPが主力言語な連中なら全部覚えればいいのだろうが、そうではないので、一々毎回引き直して引っかかって不快感半端ない。
(じゃあLaravel使えではあるが、実際わざわざ導入するほどそれらの関数を使いまくることもないので中途半端で困る)
逆に、スコープ周りとかはポンコツではあるが一貫性はあるので、それほどストレスは感じない。
278デフォルトの名無しさん (ワッチョイ 97a9-5fj/)
2022/12/29(木) 18:03:16.58ID:9qmzIgrL0 phpでHTML中に<?php echo $変数名 ?>使わずに表示出来る簡易方法ってどうやるんだっけ?
279デフォルトの名無しさん (ワッチョイ 6dda-eqE1)
2022/12/29(木) 19:04:00.81ID:qAF+l3pr0 >>278
<?= $unko ?>
<?= $unko ?>
280デフォルトの名無しさん (ワッチョイ 6dda-eqE1)
2022/12/29(木) 19:04:47.25ID:qAF+l3pr0 消えた
イコールを使う
イコールを使う
281デフォルトの名無しさん (ワッチョイ 97a9-5fj/)
2022/12/29(木) 19:10:26.77ID:9qmzIgrL0 >>279
ぉぉ、ありがとう
ぉぉ、ありがとう
282デフォルトの名無しさん (アウアウアー Sa83-XvWy)
2022/12/30(金) 06:55:15.99ID:jSAhgQsba ログイン画面の練習をしるけど
pdoでbindParamするなら$_POST["mail_address"]をそのまま使ってprepare, executeしてもSQLインジェクションや他の心配は無いの?
pdoでbindParamするなら$_POST["mail_address"]をそのまま使ってprepare, executeしてもSQLインジェクションや他の心配は無いの?
283デフォルトの名無しさん (ワッチョイ 7fbb-EkqE)
2022/12/30(金) 08:47:22.73ID:PltrrzPa0 SQLインジェクション対策の観点では基本的に安全です
ただし、ごく限定的な場面において問題になります
ごく限られた場面の例はこちら
https://blog.tokumaru.org/2010/07/pdo-shiftjis-sqli.html
今となってはほんとに限定的ですが
ただ、一般的にPOSTされたパラメータをそのまま使用するケースはなくバリデーションして使用します
そのまま使用することでシステムとして不適切なパラメータをDBに保存する可能性があり、最悪システムに脆弱性を潜ませる原因となります
ただし、ごく限定的な場面において問題になります
ごく限られた場面の例はこちら
https://blog.tokumaru.org/2010/07/pdo-shiftjis-sqli.html
今となってはほんとに限定的ですが
ただ、一般的にPOSTされたパラメータをそのまま使用するケースはなくバリデーションして使用します
そのまま使用することでシステムとして不適切なパラメータをDBに保存する可能性があり、最悪システムに脆弱性を潜ませる原因となります
284デフォルトの名無しさん (ワッチョイ 6dda-4Ar3)
2022/12/30(金) 09:51:16.89ID:O9ibooQq0 まあ面倒なのでDBに入れる前に適当に正規化しちゃうよな
285デフォルトの名無しさん (アウアウクー MM23-XvWy)
2022/12/30(金) 09:59:30.47ID:BxxG/FrZM >>283-284
ありがとう、ログインの情報だけなのでDBにはselectしか使わないので
postされたものはhtmlspecialcharsだけ通した変数名を
bindParamに使おうと思ったけど合ってますか?
色々なやり方があってたくさんのコードに心折れそうになるわ
どれも動く例だとは思うけど何がベストに近いか判別する能力が無いのがつらい
ありがとう、ログインの情報だけなのでDBにはselectしか使わないので
postされたものはhtmlspecialcharsだけ通した変数名を
bindParamに使おうと思ったけど合ってますか?
色々なやり方があってたくさんのコードに心折れそうになるわ
どれも動く例だとは思うけど何がベストに近いか判別する能力が無いのがつらい
286デフォルトの名無しさん (ワッチョイ e17b-xQ0t)
2022/12/30(金) 11:47:17.35ID:PzTBwVTC0 >>285
> 何がベストに近いか
そりゃLaravelでしょうよ。
> postされたものはhtmlspecialcharsだけ通した
フレームワークレスでやるにしても、これは違うだろ。
htmlspecialcharsは将来的にHTML(またはXML)で表示する用であって、
ログインアカウントにメアドを使う場合、そのメアドをHTMLで表示することはないので、意味がない。
普通はfilter_inputでバリデーションして、生でDB登録では?
(ただしDBの中身をエスケープ済みで統一するというのも一つの手法ではあるが)
まあ俺はWeb系ではないから、他の人の意見も聞くべきだが、普通に考えれば、
・ベストな手法を使いたい→Laravel使え
・ベストな手法を知りたい→Laravelの中のログイン関連のコードを読む
だと思うよ。
ググって出てくる個人レベルのコードは、Web系の場合はほぼ全部ゴミ(間違いが多すぎ)なので、
むしろ落とし穴でしかないし。少なくとも"俺様の凄いコード"系ではなく、多数派を採用するべきだ。
あと、IDE(かリンター)使えば勝手に怒ってくるから、そこを全部言われたとおりに直すとか。
まあ真面目にPHPで何か作るつもりで練習してるのなら、最初からLaravelも現状況では有りだと思うけど。
> 何がベストに近いか
そりゃLaravelでしょうよ。
> postされたものはhtmlspecialcharsだけ通した
フレームワークレスでやるにしても、これは違うだろ。
htmlspecialcharsは将来的にHTML(またはXML)で表示する用であって、
ログインアカウントにメアドを使う場合、そのメアドをHTMLで表示することはないので、意味がない。
普通はfilter_inputでバリデーションして、生でDB登録では?
(ただしDBの中身をエスケープ済みで統一するというのも一つの手法ではあるが)
まあ俺はWeb系ではないから、他の人の意見も聞くべきだが、普通に考えれば、
・ベストな手法を使いたい→Laravel使え
・ベストな手法を知りたい→Laravelの中のログイン関連のコードを読む
だと思うよ。
ググって出てくる個人レベルのコードは、Web系の場合はほぼ全部ゴミ(間違いが多すぎ)なので、
むしろ落とし穴でしかないし。少なくとも"俺様の凄いコード"系ではなく、多数派を採用するべきだ。
あと、IDE(かリンター)使えば勝手に怒ってくるから、そこを全部言われたとおりに直すとか。
まあ真面目にPHPで何か作るつもりで練習してるのなら、最初からLaravelも現状況では有りだと思うけど。
287デフォルトの名無しさん (ワッチョイ 5dda-dxp0)
2022/12/30(金) 12:45:56.93ID:LKp8uG8e0 うざっ
288デフォルトの名無しさん (ワッチョイ d15f-7k+k)
2022/12/30(金) 14:24:19.84ID:qIyy1X7s0 bindvalueの方が5C問題とか起きにくいんじゃね?(よっぽど無いと思うけど)
289デフォルトの名無しさん (ワッチョイ e17b-xQ0t)
2022/12/30(金) 15:39:02.23ID:PzTBwVTC0 >>287
まあゆとりにはそう思えるのだろうね。
しかし、実際、256にしても285にしても、最初から間違ってるじゃん。
> 色々なやり方があってたくさんのコードに心折れそうになるわ
頑張って勉強してますアピールご苦労様だが、実際の所、
・ログインアカウントにメアドを使います ←分かる
・アカウントはDBにhtmlspecialcharsして登録しておきます ←は?
後者のサンプルコードなんて、俺は見たこと無いけどね。
285は学んでるフリだけしてオレオレ流でやってる、
ある意味まんさん的な「レシピ通りやってるんだけど…」(やってない)そのものだ。
こんな事では上達はしないし正しいコードにもならないから、
最初から全否定してやるのが本人の為だと思うが。
(256も同様。普通にDB内容をechoする例をググれば、ほぼ全部264や274のコードのはず。
だから262のコードは一度もググらずに本人がさらっと書いたコードだと分かる。
それは本人はプログラミング出来てるつもりだから、つまり他言語である程度出来るし自信もあるからだが、
いやお前全然足りてないし話にならないよ、とは言ってやらないと駄目だろ。
さすがにリアルでは無理があるにしてもさ)
というのは「内容が間違ってようが優しい方が正義だ!」なゆとりには通じないのは知ってる。
というわけで、しばらく撤収するわ。精々盛大に空回りするんだね。
この板のレベルがゴミになったのは、この「ゆとり気質」によるものがかなり大きいと思うよ。
個人で頑張ったところでどうにもならないけどさ。
しかしせめて、自覚があるのだから、誰かがやってる手法をなぞれよ、とは思うよ。
何故そこでいきなりオリジナリティぶち込むかね?コピペ駄目!絶対!の行き過ぎか?
まあゆとりにはそう思えるのだろうね。
しかし、実際、256にしても285にしても、最初から間違ってるじゃん。
> 色々なやり方があってたくさんのコードに心折れそうになるわ
頑張って勉強してますアピールご苦労様だが、実際の所、
・ログインアカウントにメアドを使います ←分かる
・アカウントはDBにhtmlspecialcharsして登録しておきます ←は?
後者のサンプルコードなんて、俺は見たこと無いけどね。
285は学んでるフリだけしてオレオレ流でやってる、
ある意味まんさん的な「レシピ通りやってるんだけど…」(やってない)そのものだ。
こんな事では上達はしないし正しいコードにもならないから、
最初から全否定してやるのが本人の為だと思うが。
(256も同様。普通にDB内容をechoする例をググれば、ほぼ全部264や274のコードのはず。
だから262のコードは一度もググらずに本人がさらっと書いたコードだと分かる。
それは本人はプログラミング出来てるつもりだから、つまり他言語である程度出来るし自信もあるからだが、
いやお前全然足りてないし話にならないよ、とは言ってやらないと駄目だろ。
さすがにリアルでは無理があるにしてもさ)
というのは「内容が間違ってようが優しい方が正義だ!」なゆとりには通じないのは知ってる。
というわけで、しばらく撤収するわ。精々盛大に空回りするんだね。
この板のレベルがゴミになったのは、この「ゆとり気質」によるものがかなり大きいと思うよ。
個人で頑張ったところでどうにもならないけどさ。
しかしせめて、自覚があるのだから、誰かがやってる手法をなぞれよ、とは思うよ。
何故そこでいきなりオリジナリティぶち込むかね?コピペ駄目!絶対!の行き過ぎか?
290デフォルトの名無しさん (ワッチョイ d507-dxp0)
2022/12/30(金) 18:20:28.92ID:P3987fug0 キチガイワロタw
291デフォルトの名無しさん (アウアウクー MM23-XvWy)
2022/12/30(金) 19:12:38.17ID:BxxG/FrZM292デフォルトの名無しさん (ワッチョイ e17b-xQ0t)
2022/12/30(金) 19:19:39.32ID:PzTBwVTC0 >>290
ぼくといけんがことなるひとはぜんいんきちがい!
というのは、典型的ゆとりムーブだな。
ただそんなんだから、お前らゆとりはゆとりだけで安住出来る場所を維持出来ないんだよ。
そもそもお前らが老害と蔑む連中が大量にいるここに出張ってくることしか出来なくなってるのが間違ってる。
世代的にはもうゆとりにも熟練者が大量にいるはずだし、掲示板のコード自体は簡単だから、
ゆとりが作ってゆとりが運営するゆとり掲示板でプログラミング情報の交換は適正に行えるはずで、
それが素晴らしく機能し、
俺らがそこに出張っていったら「老害来んな!」と追い払われるのが本来あるべき展開だよ。
そうならないのは、ゆとり全体に老害ならぬ「ゆとり害」が蔓延ってるからだ。
お前らは自覚出来てないのだろうが、287や290のような典型的ゆとりムーブがコミュニティを破壊する。
ただ、256も285も酷いが。ググって出てきたコード通りにやったらその結論にはならんだろ、でしかない。
お前ら質問を装っているだけで、正しい答えを知りたがっているわけではないだろ。
そういうのはコミュニティを疲弊させる。
Qiitaが掲示板みたいな機能付けたけど収拾付かなくなって削除したんじゃなかったっけ?
お前ら見てるとまあ納得だよ。
ただ本来は、Qiitaの掲示板がバリバリに機能して、俺らが押し掛ける側になるべきだった。
そうならなかったのは、お前らゆとり全体に問題があるからだよ。
ぼくといけんがことなるひとはぜんいんきちがい!
というのは、典型的ゆとりムーブだな。
ただそんなんだから、お前らゆとりはゆとりだけで安住出来る場所を維持出来ないんだよ。
そもそもお前らが老害と蔑む連中が大量にいるここに出張ってくることしか出来なくなってるのが間違ってる。
世代的にはもうゆとりにも熟練者が大量にいるはずだし、掲示板のコード自体は簡単だから、
ゆとりが作ってゆとりが運営するゆとり掲示板でプログラミング情報の交換は適正に行えるはずで、
それが素晴らしく機能し、
俺らがそこに出張っていったら「老害来んな!」と追い払われるのが本来あるべき展開だよ。
そうならないのは、ゆとり全体に老害ならぬ「ゆとり害」が蔓延ってるからだ。
お前らは自覚出来てないのだろうが、287や290のような典型的ゆとりムーブがコミュニティを破壊する。
ただ、256も285も酷いが。ググって出てきたコード通りにやったらその結論にはならんだろ、でしかない。
お前ら質問を装っているだけで、正しい答えを知りたがっているわけではないだろ。
そういうのはコミュニティを疲弊させる。
Qiitaが掲示板みたいな機能付けたけど収拾付かなくなって削除したんじゃなかったっけ?
お前ら見てるとまあ納得だよ。
ただ本来は、Qiitaの掲示板がバリバリに機能して、俺らが押し掛ける側になるべきだった。
そうならなかったのは、お前らゆとり全体に問題があるからだよ。
293デフォルトの名無しさん (スッップ Sd57-o2AS)
2022/12/30(金) 20:55:14.08ID:kXS4eEBid 「変数の内容を正規化」というのが、ユーザーの入力データを勝手に修正することなら
悪手のような気がするけどね
要件を満たさないならエラーにするべきでしょ
悪手のような気がするけどね
要件を満たさないならエラーにするべきでしょ
294デフォルトの名無しさん (ワッチョイ 8d01-dxp0)
2022/12/30(金) 22:16:56.61ID:KyAw5omf0 キチガイ激おこw
295デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2022/12/31(土) 00:35:38.12ID:X7WB85940 まあ5chに居るゆとりは全員寄生虫根性のキチガイだから
何度言っても全く聞く耳持たれないのも分かるんだけどさ。
少しでもマトモならもっと若いSNS(≒自分達の世代が主力の場所)を盛り上げようと努力する。
ググったらQiitaでは何度か炎上騒ぎもあったみたいで、
順当に考えてそっちに参戦してるのがマトモなゆとりで、
上の世代が大量にいると知ってて5chに来て、
悪態をつきながらも出て行きもせず、改善の努力もしない、ここにいるゆとりは、
寄生虫韓国人と同様、死ねでしかないよ。
とはいえ、クズゆとりをこちらに切り離した状態でも成立しないのだから、
まじでゆとり世代はかなりヤベーと思うけどな。
何度言っても全く聞く耳持たれないのも分かるんだけどさ。
少しでもマトモならもっと若いSNS(≒自分達の世代が主力の場所)を盛り上げようと努力する。
ググったらQiitaでは何度か炎上騒ぎもあったみたいで、
順当に考えてそっちに参戦してるのがマトモなゆとりで、
上の世代が大量にいると知ってて5chに来て、
悪態をつきながらも出て行きもせず、改善の努力もしない、ここにいるゆとりは、
寄生虫韓国人と同様、死ねでしかないよ。
とはいえ、クズゆとりをこちらに切り離した状態でも成立しないのだから、
まじでゆとり世代はかなりヤベーと思うけどな。
296デフォルトの名無しさん (ワッチョイ 63da-/EFQ)
2022/12/31(土) 01:12:41.10ID:JNZhSZTU0297デフォルトの名無しさん (ワッチョイ 6301-9yt5)
2022/12/31(土) 02:53:48.51ID:TeLjBPNY0 じゃあ江戸時代の電話番号が来たらどうするんだよ?
298デフォルトの名無しさん (ワッチョイ 1aad-0ejh)
2022/12/31(土) 06:30:53.75ID:FohLv0kz0 なにもかもがうろ覚えなので申し訳ないのですが、
テレグラムのような密告用、告発用のツールだかソフトウェアだかを作り
その後、強姦かなにかをやってフランスかどこかで逮捕された
プログラマーのことを思い出せません
彼の名前と作成したツールの名前を教えて欲しいです
ちなみに彼は白人です
テレグラムのような密告用、告発用のツールだかソフトウェアだかを作り
その後、強姦かなにかをやってフランスかどこかで逮捕された
プログラマーのことを思い出せません
彼の名前と作成したツールの名前を教えて欲しいです
ちなみに彼は白人です
299デフォルトの名無しさん (ワッチョイ 97ee-TwI4)
2022/12/31(土) 09:54:11.95ID:uLO3zrOn0 キチガイワロタw
300デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2022/12/31(土) 09:58:50.74ID:X7WB85940 ついで。
結局のところ、ググッったところで
・元々一つの連想配列だったものをわざわざバラしてforeachで再結合させるコード(262)
・ログインアカウント名をhtmlspecialcharsしてDBに登録するコード(285)
は出てこないと思うんだよね。
だからこいつらは色々見聞きしたものを何の理解もせずデタラメに再構成してて、
ググッた通りにやろうとはしてない。
こいつらが欲しかったのは正解ではなく共感/同情で、まさに例のコピペ「バッテリー女」と同じ。
このコピペはゆとり以前からあるので、これ自体はゆとりの問題ではない。
ただ、プログラミングがカジュアル化していくなかで、
全くエンジニア適性がない「バッテリー女」タイプがプログラミングもするようになってきた、ということ。
そういえばQiitaも元は完全にプログラミングコミュニティだったのが、
エンジニアに、さらに非エンジニアにも対象を広げて行ってるんじゃなかったっけ?
となると当然「バッテリー女」タイプも徐々に増え、質疑応答を適正に行うのも難しくなってくる。
そしてさらにゆとりで、まあ無理だよな、ではある。
(ネット上のゆとりは俺らから見ると許容範囲が異常に狭過ぎる。
ただこれはゆとりの問題と言うよりは、俺らがガバガバ過ぎるんだが)
ちなみに共感/同情して欲しいだけならプログラ『マ』板=雑談板がそれ用だ。
ここはプログラ『ム』板=技術板であって、本来は技術的内容に特化した板だ。
ただ最近はム板から逃げ出した連中がマ板でよろしくやってて、マ板の方がマシになってる、とも聞くが。
だから262や285はマ板なら幸せになれるかもしれんよ。
ただそれ以前に、お前ら「バッテリー女」タイプは適性がないからプログラミング止めた方がいいと思うが。
(まあこれは「プログラミングは誰にでも出来ます」と言い続けてきた俺ら世代にもかなり問題があって、
実際は、何であれ適性はあるし、そもそも馬鹿にはプログラミング出来ない
《エンジニア領域で有能と無能の差がここまで明確になる分野は他にない》
と言うべきだったわけだが)
結局のところ、ググッったところで
・元々一つの連想配列だったものをわざわざバラしてforeachで再結合させるコード(262)
・ログインアカウント名をhtmlspecialcharsしてDBに登録するコード(285)
は出てこないと思うんだよね。
だからこいつらは色々見聞きしたものを何の理解もせずデタラメに再構成してて、
ググッた通りにやろうとはしてない。
こいつらが欲しかったのは正解ではなく共感/同情で、まさに例のコピペ「バッテリー女」と同じ。
このコピペはゆとり以前からあるので、これ自体はゆとりの問題ではない。
ただ、プログラミングがカジュアル化していくなかで、
全くエンジニア適性がない「バッテリー女」タイプがプログラミングもするようになってきた、ということ。
そういえばQiitaも元は完全にプログラミングコミュニティだったのが、
エンジニアに、さらに非エンジニアにも対象を広げて行ってるんじゃなかったっけ?
となると当然「バッテリー女」タイプも徐々に増え、質疑応答を適正に行うのも難しくなってくる。
そしてさらにゆとりで、まあ無理だよな、ではある。
(ネット上のゆとりは俺らから見ると許容範囲が異常に狭過ぎる。
ただこれはゆとりの問題と言うよりは、俺らがガバガバ過ぎるんだが)
ちなみに共感/同情して欲しいだけならプログラ『マ』板=雑談板がそれ用だ。
ここはプログラ『ム』板=技術板であって、本来は技術的内容に特化した板だ。
ただ最近はム板から逃げ出した連中がマ板でよろしくやってて、マ板の方がマシになってる、とも聞くが。
だから262や285はマ板なら幸せになれるかもしれんよ。
ただそれ以前に、お前ら「バッテリー女」タイプは適性がないからプログラミング止めた方がいいと思うが。
(まあこれは「プログラミングは誰にでも出来ます」と言い続けてきた俺ら世代にもかなり問題があって、
実際は、何であれ適性はあるし、そもそも馬鹿にはプログラミング出来ない
《エンジニア領域で有能と無能の差がここまで明確になる分野は他にない》
と言うべきだったわけだが)
301デフォルトの名無しさん (ワッチョイ f6da-HsCz)
2022/12/31(土) 10:03:19.35ID:ny8D6qkt0 >>300
「俺ら」じゃねーよ、「お前だけ」だよキチガイw
「俺ら」じゃねーよ、「お前だけ」だよキチガイw
302デフォルトの名無しさん (ワッチョイ cebb-rE+U)
2022/12/31(土) 10:12:14.53ID:KIi0dIp+0 上のコメントは読む気にならないので読んでないけど、目立った箇所に気になる情報があったのでコメントしとく
> ・ログインアカウント名をhtmlspecialcharsしてDBに登録するコード(285)
これは元凶となる教本があって某QAサイトの初学者のコードではよく見かける
その教本にはセットで副読本が配布されていて、そちらまで読むと間違いって分かるんだけど、読まない人が引っかかってるっぽい
被害者は多数いる模様
まぁ普通の初学者は教本が堂々と間違ったこと書くとか思わないから、被害を受けた方を責めるのは死体蹴りだよ
> ・ログインアカウント名をhtmlspecialcharsしてDBに登録するコード(285)
これは元凶となる教本があって某QAサイトの初学者のコードではよく見かける
その教本にはセットで副読本が配布されていて、そちらまで読むと間違いって分かるんだけど、読まない人が引っかかってるっぽい
被害者は多数いる模様
まぁ普通の初学者は教本が堂々と間違ったこと書くとか思わないから、被害を受けた方を責めるのは死体蹴りだよ
303デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2022/12/31(土) 11:26:53.14ID:X7WB85940 >>302
> これは元凶となる教本があって
おい!ここは匿名掲示板なんだし、そもそも誹謗中傷でもないので伏せる意味無いだろ。
ゴミだと思うのならならゴミだと堂々と書くべきだよ。それが正しい議論だ。
(というかね、そもそも匿名ですら堂々と言えないようなことはネットにでも書くべきではないんだよ)
が、まあ、それが事実なら、
・ちゃんと副読本まで全部読め
・そもそも本なんてその程度なのだから全部捨てて、php.netを全部頭から読み直せ
が解となるのだろう。俺は後者を推すが。
> 被害を受けた方を責めるのは死体蹴りだよ
ここが違うんだよ。価値観が同情>正解だろ。これがゆとりの世界。
だけどさ、コードは誰がどういう経緯でどう書こうが、不適切なコードは不適切な動作しかしないから、言い訳にはならないんだよ。
(僕には不適切な本が与えられたから不適切なコードになってます、だから漏洩しました、僕のせいじゃないです!とは言い訳出来ないだろ。
《いや、割とまじでゆとりなら言いそうで困るが》)
まあとにかく、書いたとおりにしか動かないコードの世界は、
コード学習の「経緯」ではなく、出来上がったコードの「結果」だけが価値を持つ世界だ。
不適切なのを自覚出来てないのなら、自覚させる為に、堂々と死体蹴りしてやるべきなんだよ。
そして「なんで俺って死んでんだ?ああ、あの本が悪かったのか!」と気づけば再学習して復活するだけの話だ。
そこで「僕は変な本で学んだから変なコードになってますが、僕を責めないで!!!」となるのがゆとりだが、それでは何も改善しないだろ。
さっさと学習し直せボケ!でしかない。
> これは元凶となる教本があって
おい!ここは匿名掲示板なんだし、そもそも誹謗中傷でもないので伏せる意味無いだろ。
ゴミだと思うのならならゴミだと堂々と書くべきだよ。それが正しい議論だ。
(というかね、そもそも匿名ですら堂々と言えないようなことはネットにでも書くべきではないんだよ)
が、まあ、それが事実なら、
・ちゃんと副読本まで全部読め
・そもそも本なんてその程度なのだから全部捨てて、php.netを全部頭から読み直せ
が解となるのだろう。俺は後者を推すが。
> 被害を受けた方を責めるのは死体蹴りだよ
ここが違うんだよ。価値観が同情>正解だろ。これがゆとりの世界。
だけどさ、コードは誰がどういう経緯でどう書こうが、不適切なコードは不適切な動作しかしないから、言い訳にはならないんだよ。
(僕には不適切な本が与えられたから不適切なコードになってます、だから漏洩しました、僕のせいじゃないです!とは言い訳出来ないだろ。
《いや、割とまじでゆとりなら言いそうで困るが》)
まあとにかく、書いたとおりにしか動かないコードの世界は、
コード学習の「経緯」ではなく、出来上がったコードの「結果」だけが価値を持つ世界だ。
不適切なのを自覚出来てないのなら、自覚させる為に、堂々と死体蹴りしてやるべきなんだよ。
そして「なんで俺って死んでんだ?ああ、あの本が悪かったのか!」と気づけば再学習して復活するだけの話だ。
そこで「僕は変な本で学んだから変なコードになってますが、僕を責めないで!!!」となるのがゆとりだが、それでは何も改善しないだろ。
さっさと学習し直せボケ!でしかない。
304デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2022/12/31(土) 11:27:13.37ID:X7WB85940 (逆に言えば学習し直して適切なコードを書けるようになれば無罪放免でしかない。
ここら辺がゆとりも議論慣れしてない所で、お前の人格があるいはゆとりが、ではなく、お前のコードはおかしい、と言ってるだけなんだよ。
ゆとりは議論教育を受けているから一見俺ら世代より議論が出来るようになってるように見えるのだけど、
実際は「議論モード」では意識的に感情的にならないように装ってるだけであって、本質の「意見と人格の分離」が出来てない。
お前の学習経緯なんて知ったこっちゃ無い。コードがおかしいからおかしいと言ってる、さっさと再学習しろ、それだけだ。
そこで、「僕が悪いんじゃない!」となるのは意見(コード)の否定を人格否定と捉えてるからだよ。
そもそも、「お前が悪い」とは言ってない。「お前の『コードは』おかしい」と言ってるわけでね。それ以上でもそれ以下でもない)
ただまあ、この辺の初学者向けには色々難があるのは事実だよ。ありがちなのは、
1. まず何も気にしてない、生で出し入れするだけのコード
2. 実は1にはセキュリティ上の問題がかなりあるので、色々改善したコード
と構成する手法だが、おそらく1しかやらない(或いは1をコピペして使う)馬鹿が続出したので、
最低限1でもhtmlspecialcharsしておこう、となったのだと思うが。
しかし同情されたところで漏洩の言い訳にはならないよ。
(いや、ゆとり的価値観なら言い訳として成立するのかもしれないし、ここら辺が根本的に違うのかもしれんが)
ここら辺がゆとりも議論慣れしてない所で、お前の人格があるいはゆとりが、ではなく、お前のコードはおかしい、と言ってるだけなんだよ。
ゆとりは議論教育を受けているから一見俺ら世代より議論が出来るようになってるように見えるのだけど、
実際は「議論モード」では意識的に感情的にならないように装ってるだけであって、本質の「意見と人格の分離」が出来てない。
お前の学習経緯なんて知ったこっちゃ無い。コードがおかしいからおかしいと言ってる、さっさと再学習しろ、それだけだ。
そこで、「僕が悪いんじゃない!」となるのは意見(コード)の否定を人格否定と捉えてるからだよ。
そもそも、「お前が悪い」とは言ってない。「お前の『コードは』おかしい」と言ってるわけでね。それ以上でもそれ以下でもない)
ただまあ、この辺の初学者向けには色々難があるのは事実だよ。ありがちなのは、
1. まず何も気にしてない、生で出し入れするだけのコード
2. 実は1にはセキュリティ上の問題がかなりあるので、色々改善したコード
と構成する手法だが、おそらく1しかやらない(或いは1をコピペして使う)馬鹿が続出したので、
最低限1でもhtmlspecialcharsしておこう、となったのだと思うが。
しかし同情されたところで漏洩の言い訳にはならないよ。
(いや、ゆとり的価値観なら言い訳として成立するのかもしれないし、ここら辺が根本的に違うのかもしれんが)
305デフォルトの名無しさん (ワッチョイ 33a7-TwI4)
2022/12/31(土) 13:40:00.71ID:bqLVyI/z0 自作自演キチガイw
306デフォルトの名無しさん (オイコラミネオ MMe3-ChaJ)
2022/12/31(土) 18:08:34.69ID:jUZbhNPLM ゆとりでもそこまでひどいのはごく少数派じゃねーの?
307デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2022/12/31(土) 18:47:55.80ID:X7WB85940 >>305
何でも自演に見え始めたらもう病気だよ。
まあついでに言ってやるとな、そりゃお前の心が弱いからだ。
自演するような奴は、自分が多数派だ!ということにして安心したいからであって、
俺みたいに、議論慣れしてて自身の意見を堂々と言うタイプは、自演なんてしないんだよ。
多数派か少数派かなんかに価値を認めてないから、する意味がないんだ。
だからまあ、この時点で自演ガーというのだから、
少なくとも君にとっては俺が思ったより叩かれてないのだろう。
というわけで287=290=294=299=305(=301)で、
俺に粘着してるのは高い確率で1人、多くて2人、ということになる。
だから焦って自演ガーと言いだす。
ただこれは俺もちょっと予想外で、もっと噛みつかれると思ってた。
少なくとも、半年~1年前ならもっと酷い展開になってたはず。
思った以上に世代交代が早いのかもしれん。
何でも自演に見え始めたらもう病気だよ。
まあついでに言ってやるとな、そりゃお前の心が弱いからだ。
自演するような奴は、自分が多数派だ!ということにして安心したいからであって、
俺みたいに、議論慣れしてて自身の意見を堂々と言うタイプは、自演なんてしないんだよ。
多数派か少数派かなんかに価値を認めてないから、する意味がないんだ。
だからまあ、この時点で自演ガーというのだから、
少なくとも君にとっては俺が思ったより叩かれてないのだろう。
というわけで287=290=294=299=305(=301)で、
俺に粘着してるのは高い確率で1人、多くて2人、ということになる。
だから焦って自演ガーと言いだす。
ただこれは俺もちょっと予想外で、もっと噛みつかれると思ってた。
少なくとも、半年~1年前ならもっと酷い展開になってたはず。
思った以上に世代交代が早いのかもしれん。
308デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2022/12/31(土) 18:48:19.72ID:X7WB85940 俺が思うに、世代は
ネット第1世代(俺ら):ネットに何も無かった頃からネットを使っている。
だから場所を作るし、場所がないことで困ったことを経験しているので、場所を壊すことはしない。
質問の回答は人間がしてると理解してる。(5ch)
ネット第2世代(ゆとり):ネットに一通り揃った頃からネットを使っている。
だからネット上には全てあるものだという価値観で、
場所は探すが作ることはしないし、既にある場所も気に入らなければ壊すし、やりたい放題。
ネット上には無限のリソースがあり、質問したら自動的に答えが返ってくる、程度の認識。(teratail)
というわけで大体の争いの原因はこの世代間の価値観の違い、
ネット第1世代から見ると「そこまでやるか?」をネット第2世代は軽々と踏み越えていくところにある。
典型的なのは「返事しろやボケ!」で、第1世代なら回答貰えば返事はする。
誰かがわざわざ回答してくれてると認識してるから。
ここら辺のベースの価値観からして違うから、第2世代とは合わない。
そして、
ネット第3世代(脱ゆとり/さとり):ネット上の炎上騒ぎを「経験」ではなく「歴史」として学んでいる。
スルースキルが高いかどうかは不明だが、
少なくとも「ネットにはスルースキルが必要だ」と理解してからネットを使っている点が
第1,2世代とは明らかに異なる。
の流入はもう始まっており、俺の読みでは現段階(2022-23)が5chで第2世代が一番多い時期で、
2030頃に第3世代が主流派になる。
だから今後数年間かけて世代交代がおき、5chの雰囲気も第3世代寄りに変わると見てる。
今現在ゆとりがやりたい放題なのが改善することを期待している。が、正直どうなるのかは分からない。
ただ、世代交代はほぼ確実に発生する。
そして、結局のところ、第3世代と第2世代は価値観が違うから、
ゆとりにとって居心地のいい場所は、ゆとり自身が作るしかない。
第1世代(5ch)に寄生しても、第3世代がこれから作る何かに寄生しても、第2世代の価値観では居心地悪いんだ。
順当に考えるなら、Qiitaかteratailか、頑張って盛り上げろ、だと思うが。
ネット第1世代(俺ら):ネットに何も無かった頃からネットを使っている。
だから場所を作るし、場所がないことで困ったことを経験しているので、場所を壊すことはしない。
質問の回答は人間がしてると理解してる。(5ch)
ネット第2世代(ゆとり):ネットに一通り揃った頃からネットを使っている。
だからネット上には全てあるものだという価値観で、
場所は探すが作ることはしないし、既にある場所も気に入らなければ壊すし、やりたい放題。
ネット上には無限のリソースがあり、質問したら自動的に答えが返ってくる、程度の認識。(teratail)
というわけで大体の争いの原因はこの世代間の価値観の違い、
ネット第1世代から見ると「そこまでやるか?」をネット第2世代は軽々と踏み越えていくところにある。
典型的なのは「返事しろやボケ!」で、第1世代なら回答貰えば返事はする。
誰かがわざわざ回答してくれてると認識してるから。
ここら辺のベースの価値観からして違うから、第2世代とは合わない。
そして、
ネット第3世代(脱ゆとり/さとり):ネット上の炎上騒ぎを「経験」ではなく「歴史」として学んでいる。
スルースキルが高いかどうかは不明だが、
少なくとも「ネットにはスルースキルが必要だ」と理解してからネットを使っている点が
第1,2世代とは明らかに異なる。
の流入はもう始まっており、俺の読みでは現段階(2022-23)が5chで第2世代が一番多い時期で、
2030頃に第3世代が主流派になる。
だから今後数年間かけて世代交代がおき、5chの雰囲気も第3世代寄りに変わると見てる。
今現在ゆとりがやりたい放題なのが改善することを期待している。が、正直どうなるのかは分からない。
ただ、世代交代はほぼ確実に発生する。
そして、結局のところ、第3世代と第2世代は価値観が違うから、
ゆとりにとって居心地のいい場所は、ゆとり自身が作るしかない。
第1世代(5ch)に寄生しても、第3世代がこれから作る何かに寄生しても、第2世代の価値観では居心地悪いんだ。
順当に考えるなら、Qiitaかteratailか、頑張って盛り上げろ、だと思うが。
309デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2022/12/31(土) 18:48:44.33ID:X7WB85940 なお第3世代、場所に関しては、一周回って俺らと価値観が似てくるのではないかと見てる。
第1世代:リアルしかなく、『質問したくても出来なかった』のを経験してるから、
ネット上に質問場所を作ったし、そこを大切にしてる。
第2世代:ネット上に最初から質問場所があったから、
ただで回答もらえて便利という認識でしかなく、デタラメを繰り返し、破壊する。
第3世代:第2世代が質問場所をほぼ破壊し尽くした段階(=現在)で、
『質問したくてもろくな場所がない』事を今経験してる。(から、おそらく場所を大切にする価値観になる)
というわけで、おそらく第2世代が第3世代に寄生しようとしても普通に追い返されるはずだ。
第3世代が新たに場所を整備しなければならない理由は、第2世代がぶっ壊したからだからだ。
典型的なのはJS、今現在5chにろくなスレがないだろ。
そして第1世代にとっては第3世代は『場所』に対しての価値観が似ているから、
ネット上のコミュニティとしては第1世代と第3世代は親和性が高く、
5chは第3世代の流入によって徐々に回復する、と俺は勝手に期待している。(が、まあ、わからないけど)
第1世代:リアルしかなく、『質問したくても出来なかった』のを経験してるから、
ネット上に質問場所を作ったし、そこを大切にしてる。
第2世代:ネット上に最初から質問場所があったから、
ただで回答もらえて便利という認識でしかなく、デタラメを繰り返し、破壊する。
第3世代:第2世代が質問場所をほぼ破壊し尽くした段階(=現在)で、
『質問したくてもろくな場所がない』事を今経験してる。(から、おそらく場所を大切にする価値観になる)
というわけで、おそらく第2世代が第3世代に寄生しようとしても普通に追い返されるはずだ。
第3世代が新たに場所を整備しなければならない理由は、第2世代がぶっ壊したからだからだ。
典型的なのはJS、今現在5chにろくなスレがないだろ。
そして第1世代にとっては第3世代は『場所』に対しての価値観が似ているから、
ネット上のコミュニティとしては第1世代と第3世代は親和性が高く、
5chは第3世代の流入によって徐々に回復する、と俺は勝手に期待している。(が、まあ、わからないけど)
310デフォルトの名無しさん (ワッチョイ 830b-TwI4)
2022/12/31(土) 21:24:53.80ID:OG1LzTlR0 キチガイ必死w
311デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2022/12/31(土) 23:15:23.95ID:X7WB85940 >>306
ゆとり舐めちゃいかんぜよ。
だいたいteratailなんて、当初は「ググる前に質問しろ!」と言ってたからな。
理由は、質問がないと回答もつかない(付きようもない)のでサイトが盛り上がらない、
だからググッた結果、自己解決して、質問がteratailに投稿されないのは機会損失であり問題だから。
とマジで真顔で堂々と言ってた連中だぞ。
は?なんだそりゃ?だろ。お前ら回答してる連中をなんだと思ってるんだ?と感じて、
俺はteratailには一切協力しないことをその瞬間決めたが、実際、5chでもゆとりは、
「俺様が質問してやってるから、お前が回答出来て、お前の承認欲求なり、教えたがりな性格を満足させてやってる。
だから質問者である俺様に感謝しろ」とかマジで言ってた奴も結構いた。
ギャグとしか思えないかもしれないが、マジだぞ。しかも1人や2人じゃない。
で、当然あほくさくなってあらゆる質問スレが崩壊した結果が今だ。
ゆとりは「上から目線ガー」とか超絶うるさいのに、態度は上から目線なんてレベルを完全に通り越してて、
何だこの矛盾は?なのだが、連中にとってはこれで問題ないらしい。
で、考えてみた結果が308に書いたとおりだ。連中はAIが自動回答してる程度の認識なんだよ。
だから、AIが回答するサイトを立ち上げるのも、第2世代的には解になるのだろうよ。
最近、他スレでGPTChatを宣伝しまくってる奴いたろ。
JSとか、何度目だこの質問?が多いから、実際機能するだろうよ。
PHPは、ぼくのこーどのばぐをなおしてください、が多いからまだまだ無理だろうが。
とにかくまあ、ゆとりの価値観に俺らの常識を当てはめてはいけない。
ゆとり舐めちゃいかんぜよ。
だいたいteratailなんて、当初は「ググる前に質問しろ!」と言ってたからな。
理由は、質問がないと回答もつかない(付きようもない)のでサイトが盛り上がらない、
だからググッた結果、自己解決して、質問がteratailに投稿されないのは機会損失であり問題だから。
とマジで真顔で堂々と言ってた連中だぞ。
は?なんだそりゃ?だろ。お前ら回答してる連中をなんだと思ってるんだ?と感じて、
俺はteratailには一切協力しないことをその瞬間決めたが、実際、5chでもゆとりは、
「俺様が質問してやってるから、お前が回答出来て、お前の承認欲求なり、教えたがりな性格を満足させてやってる。
だから質問者である俺様に感謝しろ」とかマジで言ってた奴も結構いた。
ギャグとしか思えないかもしれないが、マジだぞ。しかも1人や2人じゃない。
で、当然あほくさくなってあらゆる質問スレが崩壊した結果が今だ。
ゆとりは「上から目線ガー」とか超絶うるさいのに、態度は上から目線なんてレベルを完全に通り越してて、
何だこの矛盾は?なのだが、連中にとってはこれで問題ないらしい。
で、考えてみた結果が308に書いたとおりだ。連中はAIが自動回答してる程度の認識なんだよ。
だから、AIが回答するサイトを立ち上げるのも、第2世代的には解になるのだろうよ。
最近、他スレでGPTChatを宣伝しまくってる奴いたろ。
JSとか、何度目だこの質問?が多いから、実際機能するだろうよ。
PHPは、ぼくのこーどのばぐをなおしてください、が多いからまだまだ無理だろうが。
とにかくまあ、ゆとりの価値観に俺らの常識を当てはめてはいけない。
312デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2022/12/31(土) 23:15:41.32ID:X7WB85940 302:そうなる状況があるのだから情状酌量しろ
俺:そんなの言い訳にならねえよ。今すぐ勉強し直せ
302は俺よりはゆとり寄りで、あまりにも叩きが酷いから見るに見かねて、だと思うが、
そもそもこんなの叩きのうちに入らないし、
既知の問題ならそれを共有するサイトを立ち上げるなり、Qiitaに書いておくべきだよ。
被害者多数なら、それを救済すべくお前は動いたのか?って話でね。
ただ、Qiitaはアカウント制だから、「この本には問題があります!」とは書きにくいのは分かる。
だけどここは匿名掲示板なんだから、302に書くのなら、「問題を共有する」という意味で、
どの本のどこに問題があるか、分かるように書かないといけない。
それを変なところで及び腰、訴えられたら困るとでも思ってるんだろうが、線引きがおかしい。
それは共有するべき、有益な情報だろうがよ、という話でね。
何を共有すべきか、何をホウレンソウすべきか、分かってないんだよ。だからサイトが成立しない。
結局302は俺に対する文句以上の意味を持ててないんだ。
それを少なくとも、現物を持ってる人だけでも確実に分かるように書けば、(例えば「有名な表紙が○○な本」とか)
情報価値としては全然違うわけでさ。
てなところが地味に効いてるとは思うんだよね。
「お前が書きたいこと」ではなく、「読んだ奴にとって意味があること」を書かないといけないのに、それが出来ない。
逆にここら辺厳密にやってるのがStackOverflow(英語版)で、実際大したもんだよね、世界で一人勝ち状態だし。
俺:そんなの言い訳にならねえよ。今すぐ勉強し直せ
302は俺よりはゆとり寄りで、あまりにも叩きが酷いから見るに見かねて、だと思うが、
そもそもこんなの叩きのうちに入らないし、
既知の問題ならそれを共有するサイトを立ち上げるなり、Qiitaに書いておくべきだよ。
被害者多数なら、それを救済すべくお前は動いたのか?って話でね。
ただ、Qiitaはアカウント制だから、「この本には問題があります!」とは書きにくいのは分かる。
だけどここは匿名掲示板なんだから、302に書くのなら、「問題を共有する」という意味で、
どの本のどこに問題があるか、分かるように書かないといけない。
それを変なところで及び腰、訴えられたら困るとでも思ってるんだろうが、線引きがおかしい。
それは共有するべき、有益な情報だろうがよ、という話でね。
何を共有すべきか、何をホウレンソウすべきか、分かってないんだよ。だからサイトが成立しない。
結局302は俺に対する文句以上の意味を持ててないんだ。
それを少なくとも、現物を持ってる人だけでも確実に分かるように書けば、(例えば「有名な表紙が○○な本」とか)
情報価値としては全然違うわけでさ。
てなところが地味に効いてるとは思うんだよね。
「お前が書きたいこと」ではなく、「読んだ奴にとって意味があること」を書かないといけないのに、それが出来ない。
逆にここら辺厳密にやってるのがStackOverflow(英語版)で、実際大したもんだよね、世界で一人勝ち状態だし。
313デフォルトの名無しさん (ワッチョイ 4e63-TwI4)
2022/12/31(土) 23:24:15.01ID:MHXjh7iF0 冬休み現象かな
314デフォルトの名無しさん (ワッチョイ 1aad-0ejh)
2023/01/01(日) 00:03:41.50ID:9MSmyB9U0 <処女なのが完全証明された女性芸能人一覧>
菊川怜(27歳/女優、キャスター) ⇒「恋するハニカミ」でカムアウト
水野裕子(23歳/タレント) ⇒「恋するハニカミ」でカムアウト
長澤まさみ(17歳/女優) ⇒セカチュウのストーリーブックで告白
綾瀬はるか(20歳/女優) ⇒ラジオで告白
原沙知絵(27歳/女優)⇒「恋愛マスター」で共演者に処女なのを暴かれる
木村カエラ(20歳/歌手、モデル) ⇒「99のANN」でカムアウト
滝川クリステル(27歳/キャスター)⇒敬虔なクリスチャン、婚前交渉しない
仲間由紀恵(26歳/女優)⇒「ダウンタウンDX」でカムアウト
小林麻央(22歳/女優、キャスター)⇒「恋のから騒ぎ」「めざまし土曜日」でカムアウト
ソニン(22歳/歌手、タレント) ⇒テレビで告白。
高橋マリ子(20歳/女優、モデル)⇒雑誌で告白
上野樹里(18歳/女優)⇒たびたび広言
佐藤寛子(20歳/アイドル)⇒TVに出るたびに処女なことをアピール
浜口順子(20歳/タレント)⇒処女じゃボケッ!と絶叫するギャグで大ブレイク
ベッキー(20歳/タレント)⇒男性恐怖症、触れられるのもイヤらしい
松下奈緒(20歳/女優、モデル)⇒某ファッション誌でカムアウト
山崎真実(19歳/グラ樽ドル)⇒ヤンマガ授賞式にて。『彼氏は居た事無いですぅぅ〜(関西弁)』
若槻千夏(20歳/タレント)⇒ラジオでカムアウト、井崎周五郎に処女なのを馬鹿にされる
平原綾香(21歳 /歌手)⇒あらゆる媒体にて交際経験がないとカムアウト
栗山千明(20歳/女優)⇒映画の舞台挨拶で他出演者に男性経験がないことを馬鹿にされる
菊川怜(27歳/女優、キャスター) ⇒「恋するハニカミ」でカムアウト
水野裕子(23歳/タレント) ⇒「恋するハニカミ」でカムアウト
長澤まさみ(17歳/女優) ⇒セカチュウのストーリーブックで告白
綾瀬はるか(20歳/女優) ⇒ラジオで告白
原沙知絵(27歳/女優)⇒「恋愛マスター」で共演者に処女なのを暴かれる
木村カエラ(20歳/歌手、モデル) ⇒「99のANN」でカムアウト
滝川クリステル(27歳/キャスター)⇒敬虔なクリスチャン、婚前交渉しない
仲間由紀恵(26歳/女優)⇒「ダウンタウンDX」でカムアウト
小林麻央(22歳/女優、キャスター)⇒「恋のから騒ぎ」「めざまし土曜日」でカムアウト
ソニン(22歳/歌手、タレント) ⇒テレビで告白。
高橋マリ子(20歳/女優、モデル)⇒雑誌で告白
上野樹里(18歳/女優)⇒たびたび広言
佐藤寛子(20歳/アイドル)⇒TVに出るたびに処女なことをアピール
浜口順子(20歳/タレント)⇒処女じゃボケッ!と絶叫するギャグで大ブレイク
ベッキー(20歳/タレント)⇒男性恐怖症、触れられるのもイヤらしい
松下奈緒(20歳/女優、モデル)⇒某ファッション誌でカムアウト
山崎真実(19歳/グラ樽ドル)⇒ヤンマガ授賞式にて。『彼氏は居た事無いですぅぅ〜(関西弁)』
若槻千夏(20歳/タレント)⇒ラジオでカムアウト、井崎周五郎に処女なのを馬鹿にされる
平原綾香(21歳 /歌手)⇒あらゆる媒体にて交際経験がないとカムアウト
栗山千明(20歳/女優)⇒映画の舞台挨拶で他出演者に男性経験がないことを馬鹿にされる
315デフォルトの名無しさん (ワッチョイ 830b-TwI4)
2023/01/01(日) 01:21:01.10ID:GQzEQR6h0 キチガイあけおめ!
316デフォルトの名無しさん (ワッチョイ 4e63-TwI4)
2023/01/01(日) 01:29:53.88ID:7ryMvv5R0 ストーキングしてそう
317デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/01(日) 09:39:38.47ID:Rw1NLd/d0 さらについでに言うとな、285->291も典型的なゆとりムーブ、
・都合の悪い情報は耳に入れない
なんだよ。実際285がその本で学んだかどうかは不明だが、仮にそうだとして、
・一つの(教科書)コードを信じ切るのはそもそも危険、可能であれば複数の(教科書)コードを---(A)
・ググッても同様のコードが出てこないので何か変だと気づける
・真面目にセキュリティについて勉強する気があればそこでhtmlspecialcharsは違うと気づける
・htmlspecialcharsの意味を確認すれば何か違うと気づける
・俺(286)がまんまそれを指摘してるのに無視
なので、普通に勉強する気なら自分で修正可能な範囲だし、
実際そうだからそれが大問題にはならないのだと思うぜ。全く言い訳にならない。
だから、つまり
285:何も勉強する気もありませんし、ググるのも面倒なのでやりませんが、
○○だけやればセキュリティは完璧!なのを教えてください。
DB書くときにhtmlspecialcharsしてbindParamでいいですか?
286(俺):それはLaravel
なわけだが当然これも無視なわけだ。
しかし291に仮に回答が付いたとしても、それは285が望んでいた完璧セキュリティにはならないし、
技術的には意味がない。
結局このゆとりは、自分に都合が良い回答が出てくるまで質問を繰り返すだけ。
しかし根本からズレてるんだから無理ではある。
ただまあ、302ゆとり的「僕が悪いんじゃない!教科書が悪いんだ!」なのだとしたら、
(A)に対してはリアル同様の教科書検定を導入すれば第2世代的には満足なのかもしれんよ。
教科書は上質な方がいいに決まってるし、それが出来れば社会にも還元出来る。
・都合の悪い情報は耳に入れない
なんだよ。実際285がその本で学んだかどうかは不明だが、仮にそうだとして、
・一つの(教科書)コードを信じ切るのはそもそも危険、可能であれば複数の(教科書)コードを---(A)
・ググッても同様のコードが出てこないので何か変だと気づける
・真面目にセキュリティについて勉強する気があればそこでhtmlspecialcharsは違うと気づける
・htmlspecialcharsの意味を確認すれば何か違うと気づける
・俺(286)がまんまそれを指摘してるのに無視
なので、普通に勉強する気なら自分で修正可能な範囲だし、
実際そうだからそれが大問題にはならないのだと思うぜ。全く言い訳にならない。
だから、つまり
285:何も勉強する気もありませんし、ググるのも面倒なのでやりませんが、
○○だけやればセキュリティは完璧!なのを教えてください。
DB書くときにhtmlspecialcharsしてbindParamでいいですか?
286(俺):それはLaravel
なわけだが当然これも無視なわけだ。
しかし291に仮に回答が付いたとしても、それは285が望んでいた完璧セキュリティにはならないし、
技術的には意味がない。
結局このゆとりは、自分に都合が良い回答が出てくるまで質問を繰り返すだけ。
しかし根本からズレてるんだから無理ではある。
ただまあ、302ゆとり的「僕が悪いんじゃない!教科書が悪いんだ!」なのだとしたら、
(A)に対してはリアル同様の教科書検定を導入すれば第2世代的には満足なのかもしれんよ。
教科書は上質な方がいいに決まってるし、それが出来れば社会にも還元出来る。
318デフォルトの名無しさん (ワッチョイ 83b6-uhAF)
2023/01/01(日) 10:18:29.02ID:Bcq4uelc0 キチガイパワー落ちてんぞ
319デフォルトの名無しさん (ワッチョイ 9a02-9yt5)
2023/01/01(日) 19:33:54.52ID:FyL/Sa+90320デフォルトの名無しさん (ワッチョイ 9a02-9yt5)
2023/01/01(日) 20:20:12.16ID:FyL/Sa+90 毎週、河川敷で軟式の草野球やってるのですが、
無名の元プロ(ジャイアンツ)というかたがやってきて、
頼みもしないコーチをかってくるんです。
へたっぴなプレーでもすると、
「真剣にやれっ」ってす怒鳴り叱るし、
「それではプロになれん。」とか言い出す。
さすがにウザくなって丁重に断ると、
「プロの助言をありがたく聞かないなんて、最近の若者は、、」
って返すてまた翌週もコロッと忘れてやってくる。
そんなことを思い出しました。
無名の元プロ(ジャイアンツ)というかたがやってきて、
頼みもしないコーチをかってくるんです。
へたっぴなプレーでもすると、
「真剣にやれっ」ってす怒鳴り叱るし、
「それではプロになれん。」とか言い出す。
さすがにウザくなって丁重に断ると、
「プロの助言をありがたく聞かないなんて、最近の若者は、、」
って返すてまた翌週もコロッと忘れてやってくる。
そんなことを思い出しました。
321デフォルトの名無しさん (ワッチョイ bb5f-Dmn7)
2023/01/01(日) 20:27:02.42ID:swN+ZY6c0 Alma LinuxのPHP8.2だと動的プロパティの警告が出てプログラムが動かず、Ubuntu(WSL2)のPHP8.2だと警告が出ないでプログラムが普通に動く
何か違いあるのかな?
何か違いあるのかな?
322デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/01(日) 20:47:29.92ID:Rw1NLd/d0 >>318
そりゃキチガイしかいないゆとり世代には勝てませんよ。
つかゆとりは自覚出来てないだろうが、311に書いたteratailやゆとりの言い分、
普通の人から見たら完全にキチガイだからな。
Webから搾取することしか考えてないのだから、
実は裏で誰かが苦労してるサイト(典型的には質問サイト)は第2世代だけでは回らない。
けどまあ、「裏で誰かが苦労する」のが本来の姿か、と言われれば微妙なのも事実で、
初心者の質問なんざ確かにAIでいいから、ChatGPTは良い線突いているのかもしれん。
AIならもっと気軽に質問出来るし、それで上達速度が増すのなら正解ではある。
つかChatGPT宣伝してる奴、こんな所で宣伝するのではなく、
VSCodeのプラグイン作ってしまった方がいいんじゃねえかな?
そりゃキチガイしかいないゆとり世代には勝てませんよ。
つかゆとりは自覚出来てないだろうが、311に書いたteratailやゆとりの言い分、
普通の人から見たら完全にキチガイだからな。
Webから搾取することしか考えてないのだから、
実は裏で誰かが苦労してるサイト(典型的には質問サイト)は第2世代だけでは回らない。
けどまあ、「裏で誰かが苦労する」のが本来の姿か、と言われれば微妙なのも事実で、
初心者の質問なんざ確かにAIでいいから、ChatGPTは良い線突いているのかもしれん。
AIならもっと気軽に質問出来るし、それで上達速度が増すのなら正解ではある。
つかChatGPT宣伝してる奴、こんな所で宣伝するのではなく、
VSCodeのプラグイン作ってしまった方がいいんじゃねえかな?
323デフォルトの名無しさん (ワッチョイ 5b61-EPoM)
2023/01/01(日) 20:59:00.08ID:LRKdGnkL0 >>321
php.iniのerror_reportingの設定違うんじゃないの?
php.iniのerror_reportingの設定違うんじゃないの?
324デフォルトの名無しさん (ワッチョイ bb5f-Dmn7)
2023/01/01(日) 21:09:36.49ID:swN+ZY6c0 >>323
調べてみます、リポジトリ違えば既定値違う可能性はあるもんね
調べてみます、リポジトリ違えば既定値違う可能性はあるもんね
325デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/01(日) 23:10:34.48ID:Rw1NLd/d0 さらについでに言っておくと、>>320も典型的ゆとりムーブな。
何をやっても「僕は絶対に悪くない!」のがゆとり。だからアピる。
言ってしまえば302も同種だ。
ただな、ここは質問スレであって、質問してきたのは256自身だ。
それを勝手に教えてくるはた迷惑な奴と区別する知能がゆとり256にはないので、このアピールというわけだ。
ここで、ゆとり=全員知的障害者、と割り切って諦めてる奴はいいんだが、
ゆとり耐性がない奴は無駄にブチ切れることになる。
257が対応出来なかったから、俺が258でエスパーして、しかもビンゴだ。
最初に正解付けてるし、しかもお前が質問してきたんだし、320とか完全にキチガイでしかない。
が、まあ、ゆとり的にはこれは俺が悪いんだよな。
感情>>>正解だから、最初に正解を付けたことは評価対象外で、
優しく言ってくれさえすれば正義なんだ。(回答が間違っててもね)
ただ、コードは、間違ってるコードは間違ってるようにしか動かない、結果だけが評価対象の世界だ。
感情/経緯を結果より重視するゆとりは、本質的にプログラミングに向いてない。
やっは俺は、256も285も、プログラミング止めた方が幸せになれると思うぞ。
あと、ゆとりが望むように、優しく言って欲しいだけなら、
teratailとか、ID付いてる場所の方がいいよ。
やっぱおまえら第2世代の価値観で第1世代のここ5chを使うのが間違ってる。
そんな筋の通らないアピールをせずにはいられないのなら特に。
何をやっても「僕は絶対に悪くない!」のがゆとり。だからアピる。
言ってしまえば302も同種だ。
ただな、ここは質問スレであって、質問してきたのは256自身だ。
それを勝手に教えてくるはた迷惑な奴と区別する知能がゆとり256にはないので、このアピールというわけだ。
ここで、ゆとり=全員知的障害者、と割り切って諦めてる奴はいいんだが、
ゆとり耐性がない奴は無駄にブチ切れることになる。
257が対応出来なかったから、俺が258でエスパーして、しかもビンゴだ。
最初に正解付けてるし、しかもお前が質問してきたんだし、320とか完全にキチガイでしかない。
が、まあ、ゆとり的にはこれは俺が悪いんだよな。
感情>>>正解だから、最初に正解を付けたことは評価対象外で、
優しく言ってくれさえすれば正義なんだ。(回答が間違っててもね)
ただ、コードは、間違ってるコードは間違ってるようにしか動かない、結果だけが評価対象の世界だ。
感情/経緯を結果より重視するゆとりは、本質的にプログラミングに向いてない。
やっは俺は、256も285も、プログラミング止めた方が幸せになれると思うぞ。
あと、ゆとりが望むように、優しく言って欲しいだけなら、
teratailとか、ID付いてる場所の方がいいよ。
やっぱおまえら第2世代の価値観で第1世代のここ5chを使うのが間違ってる。
そんな筋の通らないアピールをせずにはいられないのなら特に。
326デフォルトの名無しさん (ワッチョイ bb5f-Dmn7)
2023/01/02(月) 00:11:54.10ID:yvIgyT2J0327デフォルトの名無しさん (ワッチョイ 9a02-9yt5)
2023/01/02(月) 05:40:28.22ID:tr9j/iHK0328デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/02(月) 06:56:57.56ID:SusgnS6W0329デフォルトの名無しさん (ワッチョイ 9a02-9yt5)
2023/01/02(月) 07:59:18.76ID:tr9j/iHK0 いや。しっかりと反応してるし。説教も長い。
気に食わない質問ならほっとけばいい。
それができなきゃ、コテつけてください。
無視しますので。
気に食わない質問ならほっとけばいい。
それができなきゃ、コテつけてください。
無視しますので。
330デフォルトの名無しさん (ワッチョイ cebb-rE+U)
2023/01/02(月) 09:33:00.59ID:Vydzc7ZW0 >>285
バリデーションとエスケープ処理をごっちゃにして考えてませんか?
バリデーションは、例えば「mailアドレスとして正しい」とか「パスワードは英数記号のみ」とかそういったシステムとして正しい入力を受け取っているかどうかの判断することを指します
エスケープ処理は文字列の解釈が異なるルールを持つシステム間で意味を変えずに引き渡すために使用します
エスケープ処理に言及すると、今回はphpとDB間の文字リテラルの引き渡しなので、一重引用符 ( ' ) (まれに二重引用符 ( " ) )をエスケープする必要がありますが、PDO::prepareではクオートで囲む処理とエスケープ処理を自動で実行するので使用者は意識する必要がありません(likeを使用する際に部分的に必要ですがそこは紹介する記事を参考にしてください)
フレームワークを使用するようになるとDBへの直接処理は意識しなくて良くなりますが、基本事項なので一度は整理しておいたほうが良いです
データベース絡みはphp.netだけだと理解できない箇所も多いので、古いですがこの辺の記事を読むと良いです
https://qiita.com/mpyw/items/b00b72c5c95aac573b71
セキュリティを気にしているようですが、セキュリティに関しては別途体系的な学習が必要と思います
こういった場で都度指摘を受けても根底が理解できないでしょうし、phpだけではなくミドルウェアやレイヤを跨いだ学習になるので間違いなく漏れが発生します
バリデーションとエスケープ処理をごっちゃにして考えてませんか?
バリデーションは、例えば「mailアドレスとして正しい」とか「パスワードは英数記号のみ」とかそういったシステムとして正しい入力を受け取っているかどうかの判断することを指します
エスケープ処理は文字列の解釈が異なるルールを持つシステム間で意味を変えずに引き渡すために使用します
エスケープ処理に言及すると、今回はphpとDB間の文字リテラルの引き渡しなので、一重引用符 ( ' ) (まれに二重引用符 ( " ) )をエスケープする必要がありますが、PDO::prepareではクオートで囲む処理とエスケープ処理を自動で実行するので使用者は意識する必要がありません(likeを使用する際に部分的に必要ですがそこは紹介する記事を参考にしてください)
フレームワークを使用するようになるとDBへの直接処理は意識しなくて良くなりますが、基本事項なので一度は整理しておいたほうが良いです
データベース絡みはphp.netだけだと理解できない箇所も多いので、古いですがこの辺の記事を読むと良いです
https://qiita.com/mpyw/items/b00b72c5c95aac573b71
セキュリティを気にしているようですが、セキュリティに関しては別途体系的な学習が必要と思います
こういった場で都度指摘を受けても根底が理解できないでしょうし、phpだけではなくミドルウェアやレイヤを跨いだ学習になるので間違いなく漏れが発生します
331デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/02(月) 09:49:12.45ID:SusgnS6W0 >>329
ならお前がまずコテ付けろ糞ゆとり。
つか、何度も繰り返してるが、ゆとり的やりとりだけで済ませたいのなら、
ゆとりが運営してゆとりしかいない場所、例えばQiitaやteratailに行くべきなんだよ。
匿名掲示板の鯖を用意するのは簡単だし、回答出来る奴はゆとり世代だけでも人数的には十分だ。
しかしお前らがわざわざここに来るのは、つまりQiitaやteratailにそういう場所が作れないのは、
ゆとりだけではそういう場所を維持出来ず、崩壊してしまうからなんだよ。
(少なくともQiitaは実際にそうなった)
それはお前らゆとりが気づいていない、ゆとりの人格的/技術的問題がかなりあるから。
だから俺はそれを逐一挙げて、お前らゆとりだけで何とかなるように仕向けてる。
俺の現状の結論は、第1世代と第2世代は棲み分けしかない、だからな。
お前ら自分らだけでは何とも出来ないのに、
上の年代が大量にいるここに出張ってきて、しかも老害ガーと喚き散らすだろ。
そりゃ完全にキチガイだし、ゆとり害だよ。
つかね、お前が先に反応しなくなる、という解にはならないのがゆとりだよね。
「絶対に僕は悪くない!」と本当に信じ切ってないとそうはならない。
そこら辺だよ、お前らの根本的問題は。
あとちなみに、このスレはワッチョイ有りだぞ。
ならお前がまずコテ付けろ糞ゆとり。
つか、何度も繰り返してるが、ゆとり的やりとりだけで済ませたいのなら、
ゆとりが運営してゆとりしかいない場所、例えばQiitaやteratailに行くべきなんだよ。
匿名掲示板の鯖を用意するのは簡単だし、回答出来る奴はゆとり世代だけでも人数的には十分だ。
しかしお前らがわざわざここに来るのは、つまりQiitaやteratailにそういう場所が作れないのは、
ゆとりだけではそういう場所を維持出来ず、崩壊してしまうからなんだよ。
(少なくともQiitaは実際にそうなった)
それはお前らゆとりが気づいていない、ゆとりの人格的/技術的問題がかなりあるから。
だから俺はそれを逐一挙げて、お前らゆとりだけで何とかなるように仕向けてる。
俺の現状の結論は、第1世代と第2世代は棲み分けしかない、だからな。
お前ら自分らだけでは何とも出来ないのに、
上の年代が大量にいるここに出張ってきて、しかも老害ガーと喚き散らすだろ。
そりゃ完全にキチガイだし、ゆとり害だよ。
つかね、お前が先に反応しなくなる、という解にはならないのがゆとりだよね。
「絶対に僕は悪くない!」と本当に信じ切ってないとそうはならない。
そこら辺だよ、お前らの根本的問題は。
あとちなみに、このスレはワッチョイ有りだぞ。
332デフォルトの名無しさん (ワッチョイ cebb-rE+U)
2023/01/02(月) 11:11:51.86ID:Vydzc7ZW0 >>285
エスケープに関してタイミングのよい記事がありました
https://qiita.com/tadsan/items/50070788f4ef0dd8e8b5
記事はXSS対策に関するものですが、「用語についての確認」がちょうどエスケープの良い説明になっています
ついでにコメントにあったhtmlspecialchars()の正しい使用箇所も説明があるのでぜひ読んでみてください
エスケープに関してタイミングのよい記事がありました
https://qiita.com/tadsan/items/50070788f4ef0dd8e8b5
記事はXSS対策に関するものですが、「用語についての確認」がちょうどエスケープの良い説明になっています
ついでにコメントにあったhtmlspecialchars()の正しい使用箇所も説明があるのでぜひ読んでみてください
333デフォルトの名無しさん (ワッチョイ 979f-uhAF)
2023/01/02(月) 11:35:53.86ID:gO6EI1Vh0 キチガイワロタw
334デフォルトの名無しさん (ワッチョイ 63da-TwI4)
2023/01/02(月) 14:15:01.28ID:m1DMLzIS0 >>331 みたいな自分本位のアホはいったいなんなんだろうな
こんなのばっかりだと思われるのはPHPスレとしては大迷惑
こんなのばっかりだと思われるのはPHPスレとしては大迷惑
335デフォルトの名無しさん (ワッチョイ 9a02-9yt5)
2023/01/02(月) 15:28:19.49ID:tr9j/iHK0 >俺の現状の結論は、第1世代と第2世代は棲み分けしかない、だからな。
ここの管理人か何かですか?
ご自身で第一世代用の質問スレでも作って、そこにずっといたらいいんじゃないすか。
ここの管理人か何かですか?
ご自身で第一世代用の質問スレでも作って、そこにずっといたらいいんじゃないすか。
336デフォルトの名無しさん (アウアウウー Sac7-ChaJ)
2023/01/02(月) 16:29:20.48ID:pCUfk6Gea 活気づいてええやんw
普段答えないような質問にも答えてるやろ
普段答えないような質問にも答えてるやろ
337デフォルトの名無しさん (ワッチョイ cebb-rE+U)
2023/01/02(月) 16:59:24.89ID:Vydzc7ZW0 >>326
これ、もう少し情報を出せます?
ubuntuだからPPAなんだろうけどどんな手順を踏んだかが知りたい
テストしたコードと実行したのがcliかwebかも併せて知りたいです
情報不足で断言はできないけど、確認した環境のVerUPが適切にできていないんじゃないかと思う
これ、もう少し情報を出せます?
ubuntuだからPPAなんだろうけどどんな手順を踏んだかが知りたい
テストしたコードと実行したのがcliかwebかも併せて知りたいです
情報不足で断言はできないけど、確認した環境のVerUPが適切にできていないんじゃないかと思う
338デフォルトの名無しさん (ワッチョイ bb5f-Dmn7)
2023/01/02(月) 17:23:19.59ID:yvIgyT2J0 >>337
コードはWordPressのDuplicatorってプラグインなのでWebでやってます
ubuntuはお察しの通りPPA(ondrej)、Almaの方はremiリポです
バージョンは両方とも8.2.0
Ubuntuの方は8.0~8.2までインストール、Almaの方は8.2だけをインストールしてます
コードはWordPressのDuplicatorってプラグインなのでWebでやってます
ubuntuはお察しの通りPPA(ondrej)、Almaの方はremiリポです
バージョンは両方とも8.2.0
Ubuntuの方は8.0~8.2までインストール、Almaの方は8.2だけをインストールしてます
339デフォルトの名無しさん (ワッチョイ 5b61-uhAF)
2023/01/02(月) 18:41:23.01ID:io46l6nO0340デフォルトの名無しさん (ワッチョイ 6301-uhAF)
2023/01/02(月) 20:03:46.09ID:kczGrESp0 WordPressもPHPもオワコン。
そしてプログラミングの初学者には難しすぎる
初心者はRubyから学習を始めるべき。
そしてRuby on Railsを習得すればPHPは不要
こっちのスレで質問すれば親切な達人プログラマーがどんな質問にも懇切丁寧に答えてくれる。
↓
Ruby 初心者スレッド Part 67
https://mevius.5ch.net/test/read.cgi/tech/1608837867/
そしてプログラミングの初学者には難しすぎる
初心者はRubyから学習を始めるべき。
そしてRuby on Railsを習得すればPHPは不要
こっちのスレで質問すれば親切な達人プログラマーがどんな質問にも懇切丁寧に答えてくれる。
↓
Ruby 初心者スレッド Part 67
https://mevius.5ch.net/test/read.cgi/tech/1608837867/
341デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/02(月) 21:11:29.60ID:SusgnS6W0 >>334-335
逆にお前らは何様のつもりなんだ?
(まあその辺も第2世代の問題ではあるんだが)
この辺は第1世代には暗黙の序列があって、
第1世代:回答者>質問者(=傍観者)
なんだよ。これ以外では秩序を維持出来ないと『全員が』理解してるから、明文化されることはないけど。
(単純には、汗かく奴が偉い!なんだが、実際は、何も考えてなく、
中高時代に先生に殴られて、先生=偉い、というすり込みが効いてるだけかもしれんが)
ところが、
第2世代:俺様>>>>同世代(=ゆとり)様>>>>他世代は全員老害
だろ。だから回答すらしてないお前らが俺に文句を言いまくることになる。
第1世代なら、最低限、回答してから文句を言うのが筋、なわけだが、
この辺ゆとりには通じないから(第1世代の秩序で構成されている)場所が崩壊していく。
お前ら基本的に王様目線、
・俺様以外の奴は俺様に奉仕する存在であり、黙って俺が望むとおりにしていればいいんだ
と根っこの所で思っちゃってる。さすがにこれは間違いだよ。
逆にお前らは何様のつもりなんだ?
(まあその辺も第2世代の問題ではあるんだが)
この辺は第1世代には暗黙の序列があって、
第1世代:回答者>質問者(=傍観者)
なんだよ。これ以外では秩序を維持出来ないと『全員が』理解してるから、明文化されることはないけど。
(単純には、汗かく奴が偉い!なんだが、実際は、何も考えてなく、
中高時代に先生に殴られて、先生=偉い、というすり込みが効いてるだけかもしれんが)
ところが、
第2世代:俺様>>>>同世代(=ゆとり)様>>>>他世代は全員老害
だろ。だから回答すらしてないお前らが俺に文句を言いまくることになる。
第1世代なら、最低限、回答してから文句を言うのが筋、なわけだが、
この辺ゆとりには通じないから(第1世代の秩序で構成されている)場所が崩壊していく。
お前ら基本的に王様目線、
・俺様以外の奴は俺様に奉仕する存在であり、黙って俺が望むとおりにしていればいいんだ
と根っこの所で思っちゃってる。さすがにこれは間違いだよ。
342デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/02(月) 21:11:52.84ID:SusgnS6W0 そしてな、結局のところ、現状ではお前らが望むものは5chでは得られないんだ。
そしてそれだと5chも崩壊するから(まあ既にそうなってるが)止めろと言っている。
お前らが望んでいるのは、
・ぼくがどんなまぬけなしつもんをしても、ばかにされず、やさしくこたえてもらえる、やさしいせかい---(A)
なわけだが、これは現実的に無理なんだ。
低レベルな質問にせっせと回答を付けてると、
他で回答もらえなかった「ゴミ質問者」がどんどん集まって来て、どんどんレベルが低くなり、
見るのも回答するのも嫌気が差し、みんないなくなる、という、別の方向に崩壊する。
だから、出入り自由の場所でやる限り、
どうやっても「ゴミ質問者」の押しつけ合戦に参戦させられる(巻き込まれる)ことになるんだよ。
これに対する現実解が「低レベルな質問者は追い返す」しかない。---(B)
そしてこの手段が5chでは、「馬鹿にする」「嫌がらせをする」「無視する」「叩く」であって、
5chの酷さの象徴である「ウンコ投げ合戦」が5chの秩序の維持の要でもあるという、
皮肉な状況になっちゃってるわけ。必要悪というか。
結果、お前らは、お前らが嫌がってる第1世代からの嫌みや文句に「ただ乗り」してるだけなんだよ。
だからお前らはQiitaで匿名掲示板での質問コーナーを維持出来ない。
お前らが望んでるのは、雰囲気は上記の通りの「やさしいせかい」、
システムは「匿名」で、人員は俺ら「上世代がいないこと」だ。
これを手っ取り早く実現するのは、
お前らが今躍起になってる「5chを乗っ取ること」ではなくて、
「Qiitaやteratail内に匿名掲示板を作ること」なのはさすがにゆとりでも分かるはず。
ただこれには上記のとおり、「ゴミ質問者」の問題があって、
お前らが望む「やさしいぼくたちしかいない、だれもひどいことをいわない、やさしいせかい」では
「ただのゴミ質問者集合場所」(=ゴミ箱)になってしまうんだよ。
結局、今のところ、全員を受け入れる=どんどんレベルが低くなる、でしかなく、
最近Qiitaのレベルガー、ってなってるのも結局はこれのはず。
そしてそれだと5chも崩壊するから(まあ既にそうなってるが)止めろと言っている。
お前らが望んでいるのは、
・ぼくがどんなまぬけなしつもんをしても、ばかにされず、やさしくこたえてもらえる、やさしいせかい---(A)
なわけだが、これは現実的に無理なんだ。
低レベルな質問にせっせと回答を付けてると、
他で回答もらえなかった「ゴミ質問者」がどんどん集まって来て、どんどんレベルが低くなり、
見るのも回答するのも嫌気が差し、みんないなくなる、という、別の方向に崩壊する。
だから、出入り自由の場所でやる限り、
どうやっても「ゴミ質問者」の押しつけ合戦に参戦させられる(巻き込まれる)ことになるんだよ。
これに対する現実解が「低レベルな質問者は追い返す」しかない。---(B)
そしてこの手段が5chでは、「馬鹿にする」「嫌がらせをする」「無視する」「叩く」であって、
5chの酷さの象徴である「ウンコ投げ合戦」が5chの秩序の維持の要でもあるという、
皮肉な状況になっちゃってるわけ。必要悪というか。
結果、お前らは、お前らが嫌がってる第1世代からの嫌みや文句に「ただ乗り」してるだけなんだよ。
だからお前らはQiitaで匿名掲示板での質問コーナーを維持出来ない。
お前らが望んでるのは、雰囲気は上記の通りの「やさしいせかい」、
システムは「匿名」で、人員は俺ら「上世代がいないこと」だ。
これを手っ取り早く実現するのは、
お前らが今躍起になってる「5chを乗っ取ること」ではなくて、
「Qiitaやteratail内に匿名掲示板を作ること」なのはさすがにゆとりでも分かるはず。
ただこれには上記のとおり、「ゴミ質問者」の問題があって、
お前らが望む「やさしいぼくたちしかいない、だれもひどいことをいわない、やさしいせかい」では
「ただのゴミ質問者集合場所」(=ゴミ箱)になってしまうんだよ。
結局、今のところ、全員を受け入れる=どんどんレベルが低くなる、でしかなく、
最近Qiitaのレベルガー、ってなってるのも結局はこれのはず。
343デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/02(月) 21:12:11.26ID:SusgnS6W0 だから仮に、お前らの思惑が成功し、
5chの俺ら第1世代を全員追い出して、ゆとりだけで占拠出来たとしても、
そこはゴミ箱にしかなりようがないわけ。ゴミ箱化対策が何もないのだから。
それは5chも破壊して、お前らゆとりが欲しい場所も得られることもない。
つまり、お互い失うだけだけだから、止めろと散々言っている。
これに対しての古(いにしえ)の教えが、「郷に入れば郷に従え」なんだよ。
喜々としてウンコ投げ合戦に参戦するのもどうかと思うが、
「ぼくのすごいかいけつほうほう!」では駄目なんだ。大体そういうのってハズレだから。
毛沢東:「雀は米を食う。なら、雀を絶滅させれば、米の収量が増える!」
と同じ事をお前らはやってる。
生態系を理解してからでないと、正しい対策は打てない。
お前らは努力してるつもりかもしれんが、実際は破壊しているだけ。
(まあ大体破壊され尽くした状況が今なわけだが)
だから、お前らがやるべき事は、
A: どんなまぬけなひどいしつもんにも、やさしくこたえてもらえる
B: 低レベルな質問者をどうにかして防ぐ
を両立させる方法を考えつくことであって、これが出来れば、世界でもトップ狙える。
で、それを、Qiitaに実装すれば、5chはクソ過ぎって事になり、
お前らは全員Qiitaで質問出来、幸せになれる。
だからここを目指すべきなんだよ。
5chを占拠しても、「ゴミ質問者」対策を持ってないお前らでは、崩壊するだけ。そこに未来はない。
そして、5ch使うなら、何故「ウンコ投げ合戦」ばかりやってる5chがそれでも他よりマシなのか、
よくよく理解して、お前らも「ゴミ質問者」対策にちゃんと参戦しろ、でしかない。
ただ乗りばかりするのではなくてね。
5chの俺ら第1世代を全員追い出して、ゆとりだけで占拠出来たとしても、
そこはゴミ箱にしかなりようがないわけ。ゴミ箱化対策が何もないのだから。
それは5chも破壊して、お前らゆとりが欲しい場所も得られることもない。
つまり、お互い失うだけだけだから、止めろと散々言っている。
これに対しての古(いにしえ)の教えが、「郷に入れば郷に従え」なんだよ。
喜々としてウンコ投げ合戦に参戦するのもどうかと思うが、
「ぼくのすごいかいけつほうほう!」では駄目なんだ。大体そういうのってハズレだから。
毛沢東:「雀は米を食う。なら、雀を絶滅させれば、米の収量が増える!」
と同じ事をお前らはやってる。
生態系を理解してからでないと、正しい対策は打てない。
お前らは努力してるつもりかもしれんが、実際は破壊しているだけ。
(まあ大体破壊され尽くした状況が今なわけだが)
だから、お前らがやるべき事は、
A: どんなまぬけなひどいしつもんにも、やさしくこたえてもらえる
B: 低レベルな質問者をどうにかして防ぐ
を両立させる方法を考えつくことであって、これが出来れば、世界でもトップ狙える。
で、それを、Qiitaに実装すれば、5chはクソ過ぎって事になり、
お前らは全員Qiitaで質問出来、幸せになれる。
だからここを目指すべきなんだよ。
5chを占拠しても、「ゴミ質問者」対策を持ってないお前らでは、崩壊するだけ。そこに未来はない。
そして、5ch使うなら、何故「ウンコ投げ合戦」ばかりやってる5chがそれでも他よりマシなのか、
よくよく理解して、お前らも「ゴミ質問者」対策にちゃんと参戦しろ、でしかない。
ただ乗りばかりするのではなくてね。
344デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/02(月) 21:12:39.05ID:SusgnS6W0 5chに限らず、どこであれ、それなりの秩序を維持する何か(ソフトウェア)があるんだよ。
5chの場合は管理者不在でも秩序を維持する為に「叩き」が行われたりする事で成り立ってる。
それをゆとりは「ぼくはぜったいにわるくない!ぼくをたたくなんてゆるせない!」で、
5chのシステム(ハードウェア)「管理者不在で匿名」だけしか見ないから駄目なんだ。
ハードとソフトはセットなんだよ、この場合。
5chの場合は管理者不在でも秩序を維持する為に「叩き」が行われたりする事で成り立ってる。
それをゆとりは「ぼくはぜったいにわるくない!ぼくをたたくなんてゆるせない!」で、
5chのシステム(ハードウェア)「管理者不在で匿名」だけしか見ないから駄目なんだ。
ハードとソフトはセットなんだよ、この場合。
345デフォルトの名無しさん (ワッチョイ 1aad-uhAF)
2023/01/02(月) 22:13:46.80ID:+k1kHL7W0 データベースとHTML 画面を使うだけでも、
面倒くさいから、Ruby on Rails を使う
プロジェクト管理ツールのRedmine などがそう。
でも、これはウェブサービスかな?
プロジェクトを他人と共有する場合、
Railsみたいな既製品を使う方が、フォルダ構成も決まっているし、分かりやすい
自作のものは、フォルダ構成も個人でバラバラになるから、共同製作できない
面倒くさいから、Ruby on Rails を使う
プロジェクト管理ツールのRedmine などがそう。
でも、これはウェブサービスかな?
プロジェクトを他人と共有する場合、
Railsみたいな既製品を使う方が、フォルダ構成も決まっているし、分かりやすい
自作のものは、フォルダ構成も個人でバラバラになるから、共同製作できない
346デフォルトの名無しさん (ワッチョイ bb5f-Dmn7)
2023/01/02(月) 22:19:13.26ID:yvIgyT2J0347デフォルトの名無しさん (ワッチョイ 9a02-9yt5)
2023/01/03(火) 00:11:04.23ID:J0NzfLNY0 >>343
大丈夫?病院とかちゃんと行ってるの?
大丈夫?病院とかちゃんと行ってるの?
348デフォルトの名無しさん (ワッチョイ 4e63-TwI4)
2023/01/03(火) 00:43:44.11ID:imUAxnyu0 ここは心療内科の外来
349デフォルトの名無しさん (アウアウウー Sac7-9j0N)
2023/01/03(火) 02:22:20.54ID:rl9z/FNTa 例えば、WSL2, VSCode の拡張機能・code-runner では、
数十言語のコード片を右クリックメニューから実行できるけど、
設定ファイルのexecutorMap では、各言語の起動オプションが異なる。
例えば、python では、-u が付いている
"code-runner.executorMap": {
"php": "php",
"python": "python -u",
"ruby": "ruby",
ディス鳥によって、起動オプションが異なるのかも。
すべての環境変数・起動オプションなどを出力して比べてみれば?
数十言語のコード片を右クリックメニューから実行できるけど、
設定ファイルのexecutorMap では、各言語の起動オプションが異なる。
例えば、python では、-u が付いている
"code-runner.executorMap": {
"php": "php",
"python": "python -u",
"ruby": "ruby",
ディス鳥によって、起動オプションが異なるのかも。
すべての環境変数・起動オプションなどを出力して比べてみれば?
350デフォルトの名無しさん (アウアウウー Sac7-9j0N)
2023/01/03(火) 02:43:05.72ID:rl9z/FNTa >アカウントは、DBにhtmlspecialcharsして登録する
漏れは、色々なRuby on Rails の本を読んだが、これは見たことない
同じ500時間使うなら、Railsに使え。
Laravel もあるけど、YouTube で有名な雑食系エンジニア・KENTA が、
PHP, Scala をオワコン認定した事は、日本では非常に重い決定
普通は「ruby on rails email validation」で、誰かが作ったモジュールを探す。
どの文字が使えるかとか、email文字列の法則・定義を調べるのは大変
こういうのを自作したら、何年も掛かる。
規格が変わるたびに、作り直しも必要だし
基本、自作してはいけない。
その機能が探せない・自作するのは、自分が間違っている証拠
必要なものは、絶対に誰かが作っているはず!
漏れは、色々なRuby on Rails の本を読んだが、これは見たことない
同じ500時間使うなら、Railsに使え。
Laravel もあるけど、YouTube で有名な雑食系エンジニア・KENTA が、
PHP, Scala をオワコン認定した事は、日本では非常に重い決定
普通は「ruby on rails email validation」で、誰かが作ったモジュールを探す。
どの文字が使えるかとか、email文字列の法則・定義を調べるのは大変
こういうのを自作したら、何年も掛かる。
規格が変わるたびに、作り直しも必要だし
基本、自作してはいけない。
その機能が探せない・自作するのは、自分が間違っている証拠
必要なものは、絶対に誰かが作っているはず!
351デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/03(火) 09:04:15.78ID:WPlFxjJX0 ああだからな、ゆとりにも分かるように言い直すと、
ゴミ質問者に有益な情報を与えることは、
短期的にはゆとりの望む「やさしいせかい」を実現出来るが、
長期的には場を破壊しているだけなんだよ。
ここにゆとりは気づけてない。
だから何度やっても最終的に崩壊するし、Qiita上に質問場所を維持出来ない。
それがこのスレで出来たとしても、それは「虎の威を借る狐」ならぬ、
「5chの悪名を借るゆとり」であって、
しばき倒し、ゴミ質問者が最初から5chに来るのを諦めるように仕向けてる、
他スレ他板の成果?(と呼べるのか?)に頼ってるのであって、お前らの成果ではないんだ。
お前ら単独だと全く成立しないのだからね。
だから、本当に5ch全体が「やさしいせかい」になると崩壊するし、
最初から「やさしいせかい」なQiita上には存在出来ない。
まあPHPスレはだいぶ甘いけどね。
他言語スレではまず見かけない「ぼくのばぐをなおしてください」系が普通に投稿されるのも、
結局はそういうのに回答してきた結果だから。
第1世代は、低レベルな奴を追い返す、という方法しか思いつけなかった。
第2世代(=ゆとり)は、この生態系を理解する知能すらなかった。
これを読んだ第3世代が、何か思い付いてくれることを期待したい。
(俺は俺で仕掛けるが)
ゴミ質問者に有益な情報を与えることは、
短期的にはゆとりの望む「やさしいせかい」を実現出来るが、
長期的には場を破壊しているだけなんだよ。
ここにゆとりは気づけてない。
だから何度やっても最終的に崩壊するし、Qiita上に質問場所を維持出来ない。
それがこのスレで出来たとしても、それは「虎の威を借る狐」ならぬ、
「5chの悪名を借るゆとり」であって、
しばき倒し、ゴミ質問者が最初から5chに来るのを諦めるように仕向けてる、
他スレ他板の成果?(と呼べるのか?)に頼ってるのであって、お前らの成果ではないんだ。
お前ら単独だと全く成立しないのだからね。
だから、本当に5ch全体が「やさしいせかい」になると崩壊するし、
最初から「やさしいせかい」なQiita上には存在出来ない。
まあPHPスレはだいぶ甘いけどね。
他言語スレではまず見かけない「ぼくのばぐをなおしてください」系が普通に投稿されるのも、
結局はそういうのに回答してきた結果だから。
第1世代は、低レベルな奴を追い返す、という方法しか思いつけなかった。
第2世代(=ゆとり)は、この生態系を理解する知能すらなかった。
これを読んだ第3世代が、何か思い付いてくれることを期待したい。
(俺は俺で仕掛けるが)
352デフォルトの名無しさん (ワッチョイ 63da-/EFQ)
2023/01/03(火) 10:30:56.47ID:nwR3Pti/0 >>351
今日も元気ですね
今日も元気ですね
353デフォルトの名無しさん (ワッチョイ 9335-uhAF)
2023/01/03(火) 14:37:56.71ID:XJboAgei0 元気なキチガイw
354デフォルトの名無しさん (オッペケ Srbb-CxZV)
2023/01/03(火) 16:34:54.86ID:Hbwu0iAgr 書きたいことを全部書いちゃうのってアスペっぽい
読まれなくなるのにな
読まれなくなるのにな
355デフォルトの名無しさん (ワッチョイ 4e63-TwI4)
2023/01/03(火) 16:38:21.18ID:imUAxnyu0 読まなくても分かるからな
356デフォルトの名無しさん (ワッチョイ da7c-TwI4)
2023/01/03(火) 17:19:14.71ID:CE0E+RiF0 Rubyガイジってホント頭悪いよねw
357デフォルトの名無しさん (ワッチョイ 9a02-9yt5)
2023/01/03(火) 20:15:56.53ID:J0NzfLNY0 この御仁殿は、以前からいましたっけ?
1年ぐらいからこのスレみてるけど、ここまできつい方は
いなかったと思うのですが。
ruby厨は前からいたのわかるけど。
1年ぐらいからこのスレみてるけど、ここまできつい方は
いなかったと思うのですが。
ruby厨は前からいたのわかるけど。
358デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/03(火) 20:48:29.33ID:WPlFxjJX0 1年以上やっててforeachも理解出来ないのか…
359デフォルトの名無しさん (ワッチョイ 9a02-9yt5)
2023/01/03(火) 20:55:05.07ID:J0NzfLNY0 まあ。そうですね。
360デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/03(火) 21:08:12.78ID:WPlFxjJX0 まずID見る癖付けろよゆとり…
361デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/03(火) 21:45:18.25ID:WPlFxjJX0 >>359
つかマジでそれはプログラミング止めて、他分野探した方がいい。
for文を使える奴がforeachを理解するには、煽り抜きで3分位しかかからない。
for文だとこのようにウザイのが、foreachだとすっきり書けます、でしかないからな。
それだと後輩に馬鹿にされるでは済まず、人間扱いされないぞ。
人生が詰まらなくなる道をわざわざ選ぶ必要はない。
プログラマを目指してるわけでないにしても、
その程度の理解力だと絶対事故るから、プログラミング部分は全面外注した方がいい。
自分で書いちゃ駄目だ。
お前はプログラミングしちゃいけないレベルの人間だよ。
ただ、プログラミングなんてしなくても生きていけるし、実際大半の人はそうなんだから、
お前も違う道を目指した方がいい。
つかマジでそれはプログラミング止めて、他分野探した方がいい。
for文を使える奴がforeachを理解するには、煽り抜きで3分位しかかからない。
for文だとこのようにウザイのが、foreachだとすっきり書けます、でしかないからな。
それだと後輩に馬鹿にされるでは済まず、人間扱いされないぞ。
人生が詰まらなくなる道をわざわざ選ぶ必要はない。
プログラマを目指してるわけでないにしても、
その程度の理解力だと絶対事故るから、プログラミング部分は全面外注した方がいい。
自分で書いちゃ駄目だ。
お前はプログラミングしちゃいけないレベルの人間だよ。
ただ、プログラミングなんてしなくても生きていけるし、実際大半の人はそうなんだから、
お前も違う道を目指した方がいい。
362デフォルトの名無しさん (ワッチョイ bb36-uhAF)
2023/01/03(火) 22:17:06.73ID:NrNBtd/p0 for c in ["キ", "チ", "ガ", "イ"]
print(c)
end
print(c)
end
363デフォルトの名無しさん (オイコラミネオ MMe3-ymMV)
2023/01/03(火) 23:47:30.07ID:Vgj3aWhrM コイツ程度できついとかキチガイとか笑うわ
364デフォルトの名無しさん (ワッチョイ 9a02-9yt5)
2023/01/03(火) 23:57:15.96ID:J0NzfLNY0 病院からもらったお薬をちゃんと飲んで、
安静にされた方がいいですよ。
いい年なんでしょ。
毎日こんな檄文書いてたら相当血圧も上がりますよ。
安静にされた方がいいですよ。
いい年なんでしょ。
毎日こんな檄文書いてたら相当血圧も上がりますよ。
365デフォルトの名無しさん (ワッチョイ 9aa9-T7dL)
2023/01/04(水) 00:07:39.10ID:TUG2o5G80366デフォルトの名無しさん (ワッチョイ cebb-rE+U)
2023/01/04(水) 07:06:11.89ID:K8jqZV520 >>361
> for文を使える奴がforeachを理解するには、煽り抜きで3分位しかかからない。
キミ、本当にforとforeachを理解してる?
双方にはループ処理の主体の差や扱えるものの差があって、理解するにはかなり時間がかかるはずなんだけど...
もしかして使える=理解したって人なの?
技術的な内容がないから流し読みしかしてないけど、いろいろ間違ってる自説を撒き散らすなよ
> for文を使える奴がforeachを理解するには、煽り抜きで3分位しかかからない。
キミ、本当にforとforeachを理解してる?
双方にはループ処理の主体の差や扱えるものの差があって、理解するにはかなり時間がかかるはずなんだけど...
もしかして使える=理解したって人なの?
技術的な内容がないから流し読みしかしてないけど、いろいろ間違ってる自説を撒き散らすなよ
367デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/04(水) 10:23:22.90ID:i8Y9+Y4H0 >>366
> 双方にはループ処理の主体の差や扱えるものの差があって、理解するにはかなり時間がかかるはずなんだけど...
そりゃお前も全く向いてねえんだよ。
一般化能力が皆無だからそう思えるだけ。別物と思って全部暗記してるだろ?
ネット以前は、元々向いてる奴しかプログラミングしてなかった。
結果的には理系のごく一部、つまり普通に数学や物理が出来て、(=一般化能力の比較的高い連中)
さらにその中で性格の合う奴しかやってなかったんだ。
だからお前や256=320=357みたいなタイプは、プログラミングをする事は一生無かった。
ネット登場後、プログラマが大量に必要になり、文系をSIerにしたりしたけど、いい話は全く聞かない。
最近ではプログラミングを必修教育にしてみてもいるけど、これも完全に失敗すると俺は見てる。
性格的/能力的に、向いてない奴は全くどうしようもない分野なんだよ、プログラミングは。
そしてそれはお前もそう。3分で理解出来るのはあおり抜きで事実だ。
お前がこれを認めないのも自由だが、
お前の後輩の中には3分で理解出来た奴も相当数いて、当然内心では馬鹿にされてるはず。
(と思ったが、この反応だと、PHPerは俺が思ってるよりも相当酷く、
さらにゆとりで拍車がかかっており、みんな馬鹿同士で仲良くやってるのか?とも思えてきたが)
まあ馬鹿にされなくても、出来る人は3分で理解出来るところを何十時間もかけて一生懸命やってるようでは、
太刀打ち出来ないよ。今のうちに別方面探した方がいい。
機能的にはforeachはforの部分集合なんだよ。だからforeachで書けることはforでも書ける。
だからforで問題なく書けてたのなら、既に出来てたことの一部の書き方を変えれば多少すっきりするだけだから、
マジで3分で理解出来る。
お前ら文系馬鹿にも分かるように言えばな、新しい「漢字」を使う程度なんだよ。
新しい「言葉(単語)」を修得するのは、新しい概念の修得に時間がかかるが、
既に意味も理解し単語も使ってて、単に面倒だからカタカナでバラと書いてたのを薔薇と書け!と言われた場合、
そう書くだけだろ。その程度。
Matzに言わせると、「[i]とか[i]とか[i]とか[i]とか、やってられねえよ!」であり、それだけ。
> 双方にはループ処理の主体の差や扱えるものの差があって、理解するにはかなり時間がかかるはずなんだけど...
そりゃお前も全く向いてねえんだよ。
一般化能力が皆無だからそう思えるだけ。別物と思って全部暗記してるだろ?
ネット以前は、元々向いてる奴しかプログラミングしてなかった。
結果的には理系のごく一部、つまり普通に数学や物理が出来て、(=一般化能力の比較的高い連中)
さらにその中で性格の合う奴しかやってなかったんだ。
だからお前や256=320=357みたいなタイプは、プログラミングをする事は一生無かった。
ネット登場後、プログラマが大量に必要になり、文系をSIerにしたりしたけど、いい話は全く聞かない。
最近ではプログラミングを必修教育にしてみてもいるけど、これも完全に失敗すると俺は見てる。
性格的/能力的に、向いてない奴は全くどうしようもない分野なんだよ、プログラミングは。
そしてそれはお前もそう。3分で理解出来るのはあおり抜きで事実だ。
お前がこれを認めないのも自由だが、
お前の後輩の中には3分で理解出来た奴も相当数いて、当然内心では馬鹿にされてるはず。
(と思ったが、この反応だと、PHPerは俺が思ってるよりも相当酷く、
さらにゆとりで拍車がかかっており、みんな馬鹿同士で仲良くやってるのか?とも思えてきたが)
まあ馬鹿にされなくても、出来る人は3分で理解出来るところを何十時間もかけて一生懸命やってるようでは、
太刀打ち出来ないよ。今のうちに別方面探した方がいい。
機能的にはforeachはforの部分集合なんだよ。だからforeachで書けることはforでも書ける。
だからforで問題なく書けてたのなら、既に出来てたことの一部の書き方を変えれば多少すっきりするだけだから、
マジで3分で理解出来る。
お前ら文系馬鹿にも分かるように言えばな、新しい「漢字」を使う程度なんだよ。
新しい「言葉(単語)」を修得するのは、新しい概念の修得に時間がかかるが、
既に意味も理解し単語も使ってて、単に面倒だからカタカナでバラと書いてたのを薔薇と書け!と言われた場合、
そう書くだけだろ。その程度。
Matzに言わせると、「[i]とか[i]とか[i]とか[i]とか、やってられねえよ!」であり、それだけ。
368デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/04(水) 10:24:34.34ID:i8Y9+Y4H0 >>366
と思ったが、お前か!ならついでに付け加えとくと、
斜め読みで構わないが、
お前みたいなイイ子ちゃんタイプが頑張るだけでは「出入り自由の場所」では上手く回らない
んだよ。それをしつこく述べているわけでさ。
良いことしてるつもりが実は色々ぶっ壊してるだけだから、ちゃんと自覚しとけと。
酷い話、5chでは「死ねクズ」と平気で言える奴の方があってるし、
そういう奴もいないと上手く回らないのも事実なんだよ。
お前は多分、有料で回答をする場所でもやっていける。だからそっちで頑張った方がいい。
(とはいえ、今現在そういう場所は手軽には無さそうなので、
なら俺がそういう場所《の礎》を作ってやるよ、ってのを今俺は仕掛けようとしてる。
が、まあ、まだまだだし、俺が作るのは「礎」であって、もう一段必要なのだけどね)
と思ったが、お前か!ならついでに付け加えとくと、
斜め読みで構わないが、
お前みたいなイイ子ちゃんタイプが頑張るだけでは「出入り自由の場所」では上手く回らない
んだよ。それをしつこく述べているわけでさ。
良いことしてるつもりが実は色々ぶっ壊してるだけだから、ちゃんと自覚しとけと。
酷い話、5chでは「死ねクズ」と平気で言える奴の方があってるし、
そういう奴もいないと上手く回らないのも事実なんだよ。
お前は多分、有料で回答をする場所でもやっていける。だからそっちで頑張った方がいい。
(とはいえ、今現在そういう場所は手軽には無さそうなので、
なら俺がそういう場所《の礎》を作ってやるよ、ってのを今俺は仕掛けようとしてる。
が、まあ、まだまだだし、俺が作るのは「礎」であって、もう一段必要なのだけどね)
369デフォルトの名無しさん (ワッチョイ 4e63-TwI4)
2023/01/04(水) 10:55:59.37ID:169GBKXC0 次スレ立てるときIP表示にしてください
370デフォルトの名無しさん (ワッチョイ 9a02-9yt5)
2023/01/04(水) 11:49:43.36ID:jNmuxM610 >機能的にはforeachはforの部分集合なんだよ。だからforeachで書けることはforでも書ける。
そりゃ単にくり返し処理してるという意味なら同じだし
書き換えられるのは当然だろ。
で、それがなに?
そりゃ単にくり返し処理してるという意味なら同じだし
書き換えられるのは当然だろ。
で、それがなに?
371デフォルトの名無しさん (ワッチョイ 3a9d-GRDc)
2023/01/04(水) 12:30:54.20ID:4mXh9rne0 strpos文ってなんて読むんですか?
372デフォルトの名無しさん (ワッチョイ 365c-uhAF)
2023/01/04(水) 12:39:27.70ID:aSQ/Fj/+0 ストリッパーオッサン
373デフォルトの名無しさん (ワッチョイ 3a9d-GRDc)
2023/01/04(水) 12:52:03.46ID:4mXh9rne0 return strpos($CI->agent->referrer(), base_url()) === 0;
の意味がわからん
の意味がわからん
374デフォルトの名無しさん (ワッチョイ cebb-rE+U)
2023/01/04(水) 13:06:49.63ID:K8jqZV520 >>368
普段からこんな細かい事指摘してるわけ無いだろw
初心者スレでわけのわからんこと喚いてるから、間違い指摘したら素直に聞くのか確認するために書いたんだよ
結果、ひどかったんで笑った
そもそもこの質問者が知らなければならなかったのは「結果セットから配列で取り出せる」事で、foreachがメインじゃない
whileを使ったサンプルは昔よく見た気がするからコレも教材の問題かなぁ
そこから理解できてないでしょ?
質問者はヒントこそもらったけど、自力で結果セットから配列で取り出す方法があることにたどり着いてる
十分素養はあると思うよ
あと、
> 機能的にはforeachはforの部分集合なんだよ。だからforeachで書けることはforでも書ける。
ってあるけど、forだとkeyが取れないんじゃないかなぁ...
古いphpならeachで出来たけど、最近のだと無理だと思う
取れるならちょっと書いてみて
普段からこんな細かい事指摘してるわけ無いだろw
初心者スレでわけのわからんこと喚いてるから、間違い指摘したら素直に聞くのか確認するために書いたんだよ
結果、ひどかったんで笑った
そもそもこの質問者が知らなければならなかったのは「結果セットから配列で取り出せる」事で、foreachがメインじゃない
whileを使ったサンプルは昔よく見た気がするからコレも教材の問題かなぁ
そこから理解できてないでしょ?
質問者はヒントこそもらったけど、自力で結果セットから配列で取り出す方法があることにたどり着いてる
十分素養はあると思うよ
あと、
> 機能的にはforeachはforの部分集合なんだよ。だからforeachで書けることはforでも書ける。
ってあるけど、forだとkeyが取れないんじゃないかなぁ...
古いphpならeachで出来たけど、最近のだと無理だと思う
取れるならちょっと書いてみて
375デフォルトの名無しさん (ワッチョイ cebb-rE+U)
2023/01/04(水) 13:09:17.80ID:K8jqZV520376デフォルトの名無しさん (ワッチョイ 3a9d-GRDc)
2023/01/04(水) 17:29:02.03ID:4mXh9rne0 vscodeの単語の強調定義ができません。
サクラエディタや秀丸のような単語の強調定義をするには
どうしたらいいですか?
サクラエディタや秀丸のような単語の強調定義をするには
どうしたらいいですか?
377デフォルトの名無しさん (ワッチョイ 9a02-9yt5)
2023/01/04(水) 20:47:50.44ID:jNmuxM610 >>374
>> 機能的にはforeachはforの部分集合なんだよ。だからforeachで書けることはforでも書ける。
>ってあるけど、forだとkeyが取れないんじゃないかなぁ...
あ。連想配列だとforで回せないということか。ありがとうございます。
>> 機能的にはforeachはforの部分集合なんだよ。だからforeachで書けることはforでも書ける。
>ってあるけど、forだとkeyが取れないんじゃないかなぁ...
あ。連想配列だとforで回せないということか。ありがとうございます。
378デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/04(水) 20:52:53.92ID:i8Y9+Y4H0 >>374
> そこから理解できてないでしょ?
いや、お前と256以外は全員理解出来てるぞ。そもそも258=270=俺だぞ。
> 十分素養はあると思うよ
それはお前が同レベルの馬鹿だから、異常を感じれないだけ。
さすがにforeachで1年以上も引っかかってるのは馬鹿にするを通り越して引くよ。
もし本当に自信があるのなら、周りの人に
「foreachを理解するのに何年かかった?」って聞いて回ってみるといい。
ただ、これを聞くこと自体がお前の立場を危うくするとも思うが。
まあ引っかけ問題?でうれション漏らしてるみたいだから、
馬鹿同士お幸せに、だね。
とはいえ触れないでおくと再度うれションされて迷惑なので、最低限触れておくと、
> 古いphpならeachで出来たけど、最近のだと無理だと思う
お前がそう思うんなら(ry
俺は既に289の通り撤退モードで、新規については全スルーしてるし、
351のとおり、「この情報を与えるべきか」を考えて情報を調整してる。
367内のforeachの下り以降は、256に対しては与えるべきではないので削ろうかとも思ったが、
366は熱心に御回答されてるゆとり様かよ!ならまあ多少は、と思って残したんだ。
お前が何をどう勘違いしているかも分かるが、そこは新規なので教えてやらない。
> そこから理解できてないでしょ?
いや、お前と256以外は全員理解出来てるぞ。そもそも258=270=俺だぞ。
> 十分素養はあると思うよ
それはお前が同レベルの馬鹿だから、異常を感じれないだけ。
さすがにforeachで1年以上も引っかかってるのは馬鹿にするを通り越して引くよ。
もし本当に自信があるのなら、周りの人に
「foreachを理解するのに何年かかった?」って聞いて回ってみるといい。
ただ、これを聞くこと自体がお前の立場を危うくするとも思うが。
まあ引っかけ問題?でうれション漏らしてるみたいだから、
馬鹿同士お幸せに、だね。
とはいえ触れないでおくと再度うれションされて迷惑なので、最低限触れておくと、
> 古いphpならeachで出来たけど、最近のだと無理だと思う
お前がそう思うんなら(ry
俺は既に289の通り撤退モードで、新規については全スルーしてるし、
351のとおり、「この情報を与えるべきか」を考えて情報を調整してる。
367内のforeachの下り以降は、256に対しては与えるべきではないので削ろうかとも思ったが、
366は熱心に御回答されてるゆとり様かよ!ならまあ多少は、と思って残したんだ。
お前が何をどう勘違いしているかも分かるが、そこは新規なので教えてやらない。
379デフォルトの名無しさん (ワッチョイ ab7b-5aF9)
2023/01/04(水) 20:53:16.57ID:i8Y9+Y4H0 >>374
ただ、お前はそれ以前に、
ここ5chはお前が思ってるように綺麗に回る場所ではない事を認識すべきなんだよ。
考えてもみろ。
ここでの質問に答えられる奴なんて、世の中には数万人いるはずで、
5chを日常的に使ってる奴がその1%でも、数百人は確保出来る。
そいつらが通りすがりで回答するだけでも余裕で回るはずなのに、そうならないのは何故なのか?ってね。
だからまあ、逆に言えば、ポテンシャルは十分あって、
お互いストレスのない場所を整備出来れば、完全に綺麗に回るようになるはずではあるんだよ。
「ウンコ合戦」よりこの整備にエネルギー回した方が生産性があるので俺はそっちを試す。
既にグダグダ書いたように、ゆとりが大量に混ざってるとここではどうあがいても無理だと分かってるしね。
ただ、お前はそれ以前に、
ここ5chはお前が思ってるように綺麗に回る場所ではない事を認識すべきなんだよ。
考えてもみろ。
ここでの質問に答えられる奴なんて、世の中には数万人いるはずで、
5chを日常的に使ってる奴がその1%でも、数百人は確保出来る。
そいつらが通りすがりで回答するだけでも余裕で回るはずなのに、そうならないのは何故なのか?ってね。
だからまあ、逆に言えば、ポテンシャルは十分あって、
お互いストレスのない場所を整備出来れば、完全に綺麗に回るようになるはずではあるんだよ。
「ウンコ合戦」よりこの整備にエネルギー回した方が生産性があるので俺はそっちを試す。
既にグダグダ書いたように、ゆとりが大量に混ざってるとここではどうあがいても無理だと分かってるしね。
380デフォルトの名無しさん (ワッチョイ 4e69-uhAF)
2023/01/04(水) 21:24:15.72ID:avwrLPWy0 キチガイワロタw
381デフォルトの名無しさん (ワッチョイ cebb-rE+U)
2023/01/04(水) 23:24:55.39ID:K8jqZV520 >>377
連想配列でもforで回せるよ
*each使わんでもkey取れたわ
$arr=[
'A' => 'a',
'B' => 'b',
'C' => 'c',
'D' => 'd',
'E' => 'e',
];
for($val = reset($arr), $key = key($arr) ; key($arr) !== null ; $val = next($arr), $key = key($arr)){
echo $key . $val;
}
Generatorとかも似たような形でforで回すことができる
連想配列でもforで回せるよ
*each使わんでもkey取れたわ
$arr=[
'A' => 'a',
'B' => 'b',
'C' => 'c',
'D' => 'd',
'E' => 'e',
];
for($val = reset($arr), $key = key($arr) ; key($arr) !== null ; $val = next($arr), $key = key($arr)){
echo $key . $val;
}
Generatorとかも似たような形でforで回すことができる
382デフォルトの名無しさん (ワッチョイ cebb-rE+U)
2023/01/04(水) 23:38:11.83ID:K8jqZV520383デフォルトの名無しさん (ワッチョイ cebb-rE+U)
2023/01/04(水) 23:45:43.54ID:K8jqZV520384デフォルトの名無しさん (ワッチョイ cb02-p29/)
2023/01/06(金) 15:16:21.93ID:k11HaMpj0 phpでデバッグするときってどうすればいいんでしょ?
変数の内容知ろうとechoしても何も表示されない…
変数の内容知ろうとechoしても何も表示されない…
385デフォルトの名無しさん (スッップ Sdba-Dmn7)
2023/01/06(金) 16:01:50.16ID:d8Hgh1LAd 漢はだまってvar_dump
386デフォルトの名無しさん (ワッチョイ 63da-TwI4)
2023/01/06(金) 16:02:25.63ID:JwcR8odK0387デフォルトの名無しさん (ワッチョイ 137c-Or7w)
2023/01/07(土) 01:42:40.85ID:YilgzCe20 xdebugでええやんw
平行してログなんかも出しているケースが多いけど
tailなどでログを監視するとかも場合によってはアリだけど
var_dump()とかは流石に殆ど使わんわw
平行してログなんかも出しているケースが多いけど
tailなどでログを監視するとかも場合によってはアリだけど
var_dump()とかは流石に殆ど使わんわw
388デフォルトの名無しさん (ワッチョイ 01da-Or7w)
2023/01/07(土) 11:18:51.95ID:QEVxFelA0 >>385
print_rなら変数に出力できるので便利ですよ
print_rなら変数に出力できるので便利ですよ
389デフォルトの名無しさん (ワッチョイ a109-RnaJ)
2023/01/07(土) 11:20:59.88ID:gHVKhoPG0 >>384
デバッガを使うべし
デバッガを使うべし
390デフォルトの名無しさん (ワッチョイ 2b63-Or7w)
2023/01/07(土) 11:36:25.28ID:+xj7TcwR0 ログファイルを出力させると、動作止めずに確認できる
391デフォルトの名無しさん (ワッチョイ 11ce-jGTX)
2023/01/07(土) 12:50:57.66ID:o6fEs9vo0 フレームワークの深い部分とかスパゲティな既存コードまで追わないといけなくなったときにログ埋め込むのがつらい
var_dumpが1000個とかになってしまう
var_dumpが1000個とかになってしまう
392デフォルトの名無しさん (ワッチョイ 2b63-Or7w)
2023/01/07(土) 12:53:40.94ID:+xj7TcwR0 プログラマは肉体労働だ
頑張れ!
頑張れ!
393デフォルトの名無しさん (ワッチョイ 9302-tb1I)
2023/01/07(土) 15:13:42.24ID:3SpIXf060 phpUnitとかつかわんの。
394384 (ワッチョイ 3102-SBZa)
2023/01/07(土) 19:38:10.92ID:wpvA+uCX0 xdomainのphp鯖とhtml鯖使っててhtmlから〜.php?〜=1とかやって呼び出しててhtmlに応答させてるのでデバッガと言われても分からんし
syslogが何処にあるのかも分からんしvar_dumpしようがechoしようがprint_rしようが画面に出てこないしerror_logしても何も出力されてないしホント疲れ果てました
syslogが何処にあるのかも分からんしvar_dumpしようがechoしようがprint_rしようが画面に出てこないしerror_logしても何も出力されてないしホント疲れ果てました
395デフォルトの名無しさん (ワッチョイ 137c-Or7w)
2023/01/07(土) 21:31:12.88ID:YilgzCe20 ローカルで開発環境すら作ってないのか?
396デフォルトの名無しさん (ワッチョイ 3102-SBZa)
2023/01/07(土) 22:06:46.77ID:wpvA+uCX0 error_logちゃんと動いてた…(^^;
で
ob_start();
print_r($var)."\n";
$buffer = ob_get_contents();
ob_end_clean();
error_log("[".date('Y-m-d H:i:s')."]"."\n".$buffer."\n",3,"log.txt");
でやっと変数の中身が分かった
で
ob_start();
print_r($var)."\n";
$buffer = ob_get_contents();
ob_end_clean();
error_log("[".date('Y-m-d H:i:s')."]"."\n".$buffer."\n",3,"log.txt");
でやっと変数の中身が分かった
397デフォルトの名無しさん (ワッチョイ 2bbb-Jp3v)
2023/01/12(木) 15:50:20.41ID:Wxkvsa6w0 PHP マニュアル → 言語リファレンス → 関数
https://www.php.net/manual/ja/functions.user-defined.php
の
例2 条件つきの関数
とか
例3 関数の中の関数
って、どんなときに使用するの?
https://www.php.net/manual/ja/functions.user-defined.php
の
例2 条件つきの関数
とか
例3 関数の中の関数
って、どんなときに使用するの?
398デフォルトの名無しさん (ワッチョイ dbe7-DWwd)
2023/01/13(金) 10:43:36.33ID:uhe6l7V30399デフォルトの名無しさん (オッペケ Sr4d-RC+e)
2023/01/13(金) 12:58:11.16ID:xC8ANj/Hr なるほど有用ですね
400デフォルトの名無しさん (スッップ Sdb3-Bn7I)
2023/01/13(金) 13:44:47.33ID:v3PGKsRXd ネットワークの通信ができてるかどうかのチェックで使うイメージだけど、PHPみたいなバックエンドだとそんなに使うのかな?
401デフォルトの名無しさん (ワッチョイ 2bbb-Jp3v)
2023/01/13(金) 14:53:26.37ID:QZjdOIAl0402デフォルトの名無しさん (スップ Sdca-4lE2)
2023/01/14(土) 14:30:25.12ID:Jyz+KL40d403デフォルトの名無しさん (ブーイモ MMea-O8oa)
2023/01/14(土) 19:50:48.74ID:P3hr+e0sM IPアドレス許可制のAPI使ってる場合、
ローカル環境だと動かないんだけど、
vardumpデバッグしか無理ですか?
よい方法あるでしょうか
ローカル環境だと動かないんだけど、
vardumpデバッグしか無理ですか?
よい方法あるでしょうか
404デフォルトの名無しさん (ワッチョイ fdac-kID6)
2023/01/15(日) 09:00:10.89ID:hSLDNDVd0 開発環境の(外部)IPも登録するやろ普通
無理って言うならテストはAPIは投げないか、テストデータでも返すサーバ立てれば
無理って言うならテストはAPIは投げないか、テストデータでも返すサーバ立てれば
405デフォルトの名無しさん (ワッチョイ 86f8-O8oa)
2023/01/15(日) 14:37:40.80ID:AWxSAqC40 >>404
りょ
りょ
406デフォルトの名無しさん (ワッチョイ ca02-sAzJ)
2023/01/16(月) 19:19:15.29ID:5P5oBxU40 データベースへクエリを送る場合その都度、データベース接続してクエリ実行が完了したらデータベースへの接続を閉じる必要がありますか。
それとも、サービス中(ログイン中)、ログアウトまでデータベースの接続を開けっ放しでよいのでしょうか?
これらは、PDO接続と、mysqli接続とで変わったりしますでしょうか?
それとも、サービス中(ログイン中)、ログアウトまでデータベースの接続を開けっ放しでよいのでしょうか?
これらは、PDO接続と、mysqli接続とで変わったりしますでしょうか?
407デフォルトの名無しさん (ワッチョイ 8a7c-f6s+)
2023/01/16(月) 19:31:29.63ID:J/kqHiDI0408デフォルトの名無しさん (ワッチョイ ca02-sAzJ)
2023/01/16(月) 19:57:20.24ID:5P5oBxU40 ありがとうございます。何度か読んで理解するようにします。
409デフォルトの名無しさん (ワッチョイ ca02-sAzJ)
2023/01/16(月) 23:21:46.53ID:5P5oBxU40 うーん。よくわからない。
mysqli接続は別にして、PDOはインスタンスが生まれるのだから、
どっかでインスタンスを消してあげる必要はありますよねえ。
mysqli接続は別にして、PDOはインスタンスが生まれるのだから、
どっかでインスタンスを消してあげる必要はありますよねえ。
410デフォルトの名無しさん (ワッチョイ b55f-O9A/)
2023/01/16(月) 23:28:49.90ID:sBJhzrYC0 データベースへの接続に成功すると、PDO クラスのインスタンスが スクリプトに返されます。
この PDO オブジェクトが存在する間、 接続がアクティブであり続けます。
接続を閉じるには、他から 参照されていないことを保障することでオブジェクトを破棄する 必要があります。
それには、オブジェクトを保持している変数に対して null を代入します。
明示的にこれを行わなかった場合は、スクリプトの終了時に自動的に 接続が閉じられます。
https://www.php.net/manual/ja/pdo.connections.php
サーバーサイドのリファレンスは良く出来てるから気になったらPHPのマニュアル見るべし
この PDO オブジェクトが存在する間、 接続がアクティブであり続けます。
接続を閉じるには、他から 参照されていないことを保障することでオブジェクトを破棄する 必要があります。
それには、オブジェクトを保持している変数に対して null を代入します。
明示的にこれを行わなかった場合は、スクリプトの終了時に自動的に 接続が閉じられます。
https://www.php.net/manual/ja/pdo.connections.php
サーバーサイドのリファレンスは良く出来てるから気になったらPHPのマニュアル見るべし
411デフォルトの名無しさん (ワッチョイ b55f-O9A/)
2023/01/16(月) 23:29:52.72ID:sBJhzrYC0 注意:
この PDO インスタンスへの参照 (PDOStatement インスタンスからの参照や、同じ PDO インスタンスを参照する別の変数からの参照など) が他にも残っているなら、それらもあわせて削除する必要があります (PDOStatement を参照する変数に null を代入するなど)
この PDO インスタンスへの参照 (PDOStatement インスタンスからの参照や、同じ PDO インスタンスを参照する別の変数からの参照など) が他にも残っているなら、それらもあわせて削除する必要があります (PDOStatement を参照する変数に null を代入するなど)
412デフォルトの名無しさん (ワッチョイ 8663-f6s+)
2023/01/16(月) 23:34:10.32ID:LRLUHTpW0 カーソルはちゃんと破棄しないと行けなかったと思う
413デフォルトの名無しさん (ワッチョイ 4a02-7DGa)
2023/01/16(月) 23:56:32.16ID:WBihDz4f0 プログラム上で何度もsql使うのであれば
つなぎっぱなしの方が処理が早くなる
つなぐだけでもCPUを使うからね
ただつなぎっぱなしにするとセキュリティ面で
ちょっと不安がある
つなぎっぱなしの方が処理が早くなる
つなぐだけでもCPUを使うからね
ただつなぎっぱなしにするとセキュリティ面で
ちょっと不安がある
414デフォルトの名無しさん (ワッチョイ fdac-kID6)
2023/01/17(火) 00:47:20.33ID:wX7hemkt0 その加減はDB側の(詳細的な)ログでプロジェクト毎に判断すると思ってるわ
415デフォルトの名無しさん (ワッチョイ ca02-sAzJ)
2023/01/17(火) 04:54:14.80ID:6I3RRF7Q0 よく考えたら、PDOもそうなんだけど、インスタンス産んだら削除しないとなあ。
ブラウザが立ち上がっている間だけのJavaScriptと違って
ずっとサーバー動かしてんだから、野良インスタンスが永遠に残るのかなあ。
ガページコレクションでなんとかしてくれるのかな。
ブラウザが立ち上がっている間だけのJavaScriptと違って
ずっとサーバー動かしてんだから、野良インスタンスが永遠に残るのかなあ。
ガページコレクションでなんとかしてくれるのかな。
416デフォルトの名無しさん (ワッチョイ 4149-kID6)
2023/01/17(火) 09:36:19.84ID:FlIYwx2Q0 負荷テストの話になるの?
417デフォルトの名無しさん (ワッチョイ edda-f6s+)
2023/01/17(火) 12:58:15.74ID:jvyk9KUQ0418デフォルトの名無しさん (ワッチョイ eaa7-qfBe)
2023/01/20(金) 12:25:28.31ID:vM/PeHqd0 普通Singletonパターンでやらね?
419デフォルトの名無しさん (ブーイモ MMde-kl6v)
2023/01/20(金) 13:28:58.95ID:i5w7+2oLM 普通Singletonパターンでやらねぇ。
420デフォルトの名無しさん (ワッチョイ 637d-fO7d)
2023/01/22(日) 15:42:02.21ID:T5vd63r+0 Symfony2ってもうインストールできないんでしょうか?
421デフォルトの名無しさん (ワッチョイ 6f5f-Jpma)
2023/01/22(日) 20:51:29.62ID:sQRPxjho0 >>420
当時の環境を用意すれば問題なくできますよ
当時の環境を用意すれば問題なくできますよ
422デフォルトの名無しさん (ワッチョイ fa8b-+rQD)
2023/01/28(土) 23:30:37.96ID:Jwday6Ts0 PHPって文字列を '' シングルクォーテーションでくくるのがどうもキモチワルイ
423デフォルトの名無しさん (ワッチョイ b65f-2biX)
2023/01/28(土) 23:37:54.90ID:IgBexFfv0424デフォルトの名無しさん (ワッチョイ fa8b-+rQD)
2023/01/28(土) 23:47:57.92ID:Jwday6Ts0425デフォルトの名無しさん (ワッチョイ b75c-+rQD)
2023/01/28(土) 23:53:22.12ID:kdhfDMp00426デフォルトの名無しさん (ワッチョイ 4e95-2biX)
2023/01/29(日) 09:17:31.73ID:fK++OG3R0 変数展開やエスケープされるのがいやなので、シングルクォーテーション使ってる人多いと思うんだが
427デフォルトの名無しさん (ワッチョイ 3b5f-JCKB)
2023/01/29(日) 09:40:31.75ID:eUvMCdrW0 ダブルクォーテーション使うのはテンプレートリテラル使うときくらいかなあ、HTMLはダブルクォーテーションで書くから差別化出来る
428デフォルトの名無しさん (ワッチョイ fa8b-+rQD)
2023/01/29(日) 15:55:23.90ID:TRowOWXz0 Eclipseのリモートデスクトップみたくサーバに直結して
コードを編集できるIDEでおすすめを教えてください。
コードを編集できるIDEでおすすめを教えてください。
429デフォルトの名無しさん (ワッチョイ faa7-ozkd)
2023/01/29(日) 18:14:12.88ID:g6N0uCCo0 最近はじめたやつでないならまずシングル使ってるだろうな
散々話し尽くされたもの その辺
散々話し尽くされたもの その辺
430デフォルトの名無しさん (ワッチョイ 876e-/m9h)
2023/01/29(日) 22:35:03.92ID:k6oKhiJQ0 >>428
vscode
vscode
431デフォルトの名無しさん (ワッチョイ fa8b-+rQD)
2023/01/30(月) 10:49:41.56ID:vlKZGS9W0 >>430
使ってみます
使ってみます
432デフォルトの名無しさん (ワッチョイ fa8b-+rQD)
2023/01/31(火) 22:36:29.52ID:FCkZQF5b0 >>430
vs code はAjaxのリモートデバッグもできますか?
vs code はAjaxのリモートデバッグもできますか?
433デフォルトの名無しさん (ワッチョイ da7c-+rQD)
2023/02/01(水) 23:24:11.85ID:aDyRNPMT0 サーバーサイドならajaxだろうが何だろうが一緒だし
クライアントサイドのjavascriptのデバッグって意味ならchromeでやれ
クライアントサイドのjavascriptのデバッグって意味ならchromeでやれ
434デフォルトの名無しさん (ワッチョイ 4f5f-d2tl)
2023/02/04(土) 01:18:45.04ID:Lh4Wlvuq0 mb_send_mailを開発環境(VboxのAlma9)で実装するために必要なことってある?
435デフォルトの名無しさん (ブーイモ MM73-W0ws)
2023/02/04(土) 14:39:04.47ID:6T/TTLk6M436デフォルトの名無しさん (ワッチョイ 4f5f-d2tl)
2023/02/04(土) 15:10:53.12ID:Lh4Wlvuq0 >>435
メール送信するかわりに成功したらファイルに書き出すとかやるんですね、なるほどなあ
メール送信するかわりに成功したらファイルに書き出すとかやるんですね、なるほどなあ
437デフォルトの名無しさん (ワッチョイ 7ff2-zLlH)
2023/02/05(日) 13:41:33.74ID:xP8aJhtt0 セッションを使った名前とパスワードの保存とログイン時に
その名前とパスでしか通過できないような感じのサンプルが欲しいです
簡易的なので大丈夫ですのでどなたかおねがいします。
その名前とパスでしか通過できないような感じのサンプルが欲しいです
簡易的なので大丈夫ですのでどなたかおねがいします。
438デフォルトの名無しさん (アウアウウー Sa93-qdck)
2023/02/06(月) 11:31:01.16ID:t0SsOUx4a Ruby on Rails で最初に学ぶのが、ログイン機能
Devise, Sorcery などを使う
Devise, Sorcery などを使う
439デフォルトの名無しさん (ワッチョイ 7f10-G/zc)
2023/02/07(火) 10:24:59.58ID:pb+AWCd70 レンタルサーバでPHPが使える場合、5~8.1まで幅広く対応していますが、
古いPHPを使っても甚大な被害は起きないと考えて良いのでしょうか?
(もちろん、ソースに問題がないという前提で)
確か、JavaやPythonだとセキュリティに問題があるバージョンは切っていたと思います。
古いPHPを使っても甚大な被害は起きないと考えて良いのでしょうか?
(もちろん、ソースに問題がないという前提で)
確か、JavaやPythonだとセキュリティに問題があるバージョンは切っていたと思います。
440デフォルトの名無しさん (ワッチョイ 7fbb-p19T)
2023/02/07(火) 10:48:04.68ID:Akm2sd/s0 古いphpを使っていても適切な書き方で実装されていれば問題は発生しません
ただ、無理だと思いますよ
ただ、無理だと思いますよ
441デフォルトの名無しさん (ワッチョイ 4f5f-d2tl)
2023/02/07(火) 18:14:42.48ID:nvwGCUTc0 ソースが問題ないなら8.0使いたい
8.2は9.0に向けた仕様変更で使いにくくなってる感がある
8.2は9.0に向けた仕様変更で使いにくくなってる感がある
442デフォルトの名無しさん (ワッチョイ 3f7c-4osW)
2023/02/07(火) 18:19:37.21ID:fu1nz0OP0 大体はPHP5ぐらいの古いプロジェクトのソースを最新のPHPで動くようにみたいなのがあるけど
何気に結構大変なんだよなぁ
何気に結構大変なんだよなぁ
443デフォルトの名無しさん (ワッチョイ 3fa9-+iHA)
2023/02/07(火) 18:48:47.51ID:COtCIMLi0 php8って未定義の変数使った時点でcriticalで止まるとかだったっけ?
ifとか配列とか何十回も起きるし、俺もうphp書けない・・・
ifとか配列とか何十回も起きるし、俺もうphp書けない・・・
444デフォルトの名無しさん (ワッチョイ 4f61-BvVY)
2023/02/07(火) 18:51:13.17ID:SlNXBAXu0 サポ切れバージョンがいつまで提供されるかなんて鯖屋さん次第だし
今から古いのをわざわざ使うのはあまりお勧めしない
今から古いのをわざわざ使うのはあまりお勧めしない
445デフォルトの名無しさん (ワッチョイ 3fad-ISlp)
2023/02/07(火) 20:54:28.61ID:QImcmWPd0 PHPMyAdminにアクセスすると画像のようにフォルダが表示されるだけになってしまうのですが、
何が考えられますでしょうか。
localhost/phpinfo.phpは表示されるので、PHPの設定はできているのではないかと思うのですが・・・。
https://i.imgur.com/0X3XoLU.png
よろしくお願いいたします。
何が考えられますでしょうか。
localhost/phpinfo.phpは表示されるので、PHPの設定はできているのではないかと思うのですが・・・。
https://i.imgur.com/0X3XoLU.png
よろしくお願いいたします。
446デフォルトの名無しさん (ワッチョイ 7f63-4osW)
2023/02/07(火) 21:01:51.10ID:oBLl+Yrl0 DirectoryIndex
447デフォルトの名無しさん (ワッチョイ 4f5f-d2tl)
2023/02/08(水) 00:33:01.13ID:SpIBc7Av0448デフォルトの名無しさん (オッペケ Sr63-BbrQ)
2023/02/08(水) 05:27:41.07ID:IePtKEIOr 20年くらい前にみたことある
449デフォルトの名無しさん (ワッチョイ 3f8b-4osW)
2023/02/09(木) 13:29:04.27ID:Ij8K/FB60 $str = "https://www.youtube.com/watch?v=fNapOJYpz18";
preg_match('/v=(\w+)', $str, $match);
var_dump($match);
Youtubeの「fNapOJYpz18」を抽出したいのですが
正規表現の書き方どこが間違っているのでしょうか?
preg_match('/v=(\w+)', $str, $match);
var_dump($match);
Youtubeの「fNapOJYpz18」を抽出したいのですが
正規表現の書き方どこが間違っているのでしょうか?
450デフォルトの名無しさん (ワッチョイ 4f61-BvVY)
2023/02/09(木) 13:32:17.64ID:8spDrzND0 >>449
'/v=(\w+)/'
'/v=(\w+)/'
451デフォルトの名無しさん (ワッチョイ 7fbb-p19T)
2023/02/09(木) 13:38:54.85ID:aelylg1C0 正規表現なんて使わないのが正解
452デフォルトの名無しさん (ワッチョイ 3f8b-4osW)
2023/02/09(木) 14:02:08.03ID:Ij8K/FB60453デフォルトの名無しさん (ワッチョイ 3f8b-4osW)
2023/02/09(木) 14:06:15.26ID:Ij8K/FB60 / / で囲むのはルールみたいですね^^
454デフォルトの名無しさん (ワッチョイ 3fa7-S9vL)
2023/02/09(木) 23:44:53.39ID:n57XqqLF0455デフォルトの名無しさん (ワッチョイ 3f8b-4osW)
2023/02/10(金) 01:18:19.20ID:FzQIxJJi0456デフォルトの名無しさん (ワッチョイ 3f8b-4osW)
2023/02/10(金) 10:25:38.51ID:FzQIxJJi0 正規表現面白いな。
これマスターしたらゴリ押しのコーディングで文字列処理する必要なくなるじゃん
これマスターしたらゴリ押しのコーディングで文字列処理する必要なくなるじゃん
457デフォルトの名無しさん (ワッチョイ 3f7c-4osW)
2023/02/10(金) 14:34:17.06ID:ZVb4m7DN0 だからと言ってなんでもかんでも使うのは良くないけどな
10,20,30みたいな数字とカンマ区切りが確定しているようなものには使わんし
10,20,30みたいな数字とカンマ区切りが確定しているようなものには使わんし
458デフォルトの名無しさん (ワッチョイ 7f63-4osW)
2023/02/10(金) 15:05:12.91ID:ECKlR5jZ0 好きなやり方でやれば良いよ
望む通りになれば良いんだし
望む通りになれば良いんだし
459デフォルトの名無しさん (ワッチョイ ffe7-4osW)
2023/02/10(金) 15:50:26.87ID:ue64guLk0 第一候補にしなければ良いよ
「この方法がうまくいかなくても まー正規表現でなんとかなんだろ」
的なプランBとして考えとくと良いね
「この方法がうまくいかなくても まー正規表現でなんとかなんだろ」
的なプランBとして考えとくと良いね
460デフォルトの名無しさん (ワッチョイ 8a02-AGaU)
2023/02/11(土) 17:48:19.67ID:uHiybqGX0 ふと疑問におもったのですが、
PHPがWEBページを生成する過程で生まれた、普通の変数や配列もろもろのオブジェクトは
生成が完了したら自動的に削除されるものですか?
たとえば、ブラウザがそのPHPが生成したページから遷移したとしても、
それらのオブジェクトが残っていても役に経たないですよね。
一方で、セッション管理のためのセッション変数っていうものは、サーバーの中で消えてなくならないオブジェクト
という理解であってますでしょうか?
PHPがWEBページを生成する過程で生まれた、普通の変数や配列もろもろのオブジェクトは
生成が完了したら自動的に削除されるものですか?
たとえば、ブラウザがそのPHPが生成したページから遷移したとしても、
それらのオブジェクトが残っていても役に経たないですよね。
一方で、セッション管理のためのセッション変数っていうものは、サーバーの中で消えてなくならないオブジェクト
という理解であってますでしょうか?
461デフォルトの名無しさん (ワッチョイ 9ebb-sQVB)
2023/02/11(土) 18:05:39.49ID:hVG8U9QK0 全部消えます
セッションは外部に(標準ではファイル)に吐き出されています
セッションは外部に(標準ではファイル)に吐き出されています
462デフォルトの名無しさん (ワッチョイ 8a02-AGaU)
2023/02/11(土) 19:00:55.67ID:uHiybqGX0 ありがとうございます。
セッション変数、$_SESSION[]も実体が削除されファイルに吐き出されるということは、
session_start()の実行ごとに、ファイルの情報をもとに消えた$_SESSION[]がインスタンス化?
されるということでしょうか?
セッション変数、$_SESSION[]も実体が削除されファイルに吐き出されるということは、
session_start()の実行ごとに、ファイルの情報をもとに消えた$_SESSION[]がインスタンス化?
されるということでしょうか?
463デフォルトの名無しさん (ワッチョイ 9ebb-sQVB)
2023/02/11(土) 19:08:46.97ID:hVG8U9QK0 マニュアルのセッション関連の項を読んだ上で実際のファイルを覗いてみるといい
https://www.php.net/manual/ja/refs.basic.session.php
/tmp配下に吐き出されるはずだけど、session.save_path で変更して観察しやすくするのが良いかも
フレームワークを使用しだすと状況はまた変わるので注意が必要
https://www.php.net/manual/ja/refs.basic.session.php
/tmp配下に吐き出されるはずだけど、session.save_path で変更して観察しやすくするのが良いかも
フレームワークを使用しだすと状況はまた変わるので注意が必要
464デフォルトの名無しさん (ワッチョイ 8a02-AGaU)
2023/02/11(土) 19:23:05.41ID:uHiybqGX0 ありがとうございます。参考になります。
465デフォルトの名無しさん (ワッチョイ 9ebb-sQVB)
2023/02/11(土) 19:25:48.80ID:hVG8U9QK0 シリアライズ方法が通常のインスタンスと違うからちょっと注意
https://www.php.net/manual/ja/function.session-encode.php
https://www.php.net/manual/ja/function.session-encode.php
466デフォルトの名無しさん (ワッチョイ 8a02-AGaU)
2023/02/11(土) 20:06:17.69ID:uHiybqGX0 む。
お話変わりますが。
実行後に全て消えるということは、
$pdo = new PDO($dsn, $username, $password, $driver_options);
のハンドラ$pdoも削除されますね。
$pdo = null;
も不要ですか?
お話変わりますが。
実行後に全て消えるということは、
$pdo = new PDO($dsn, $username, $password, $driver_options);
のハンドラ$pdoも削除されますね。
$pdo = null;
も不要ですか?
467デフォルトの名無しさん (ワッチョイ 465f-8lmq)
2023/02/11(土) 22:26:33.03ID:v8sAV+Uv0468デフォルトの名無しさん (ワッチョイ 9f5c-D0vN)
2023/02/11(土) 22:59:28.99ID:VU40DDuL0469デフォルトの名無しさん (ワッチョイ 2bf0-D0vN)
2023/02/12(日) 00:20:56.68ID:kdLrjrT/0 >>467
知ったかぶりする悪癖は治そうなw
知ったかぶりする悪癖は治そうなw
470デフォルトの名無しさん (ワッチョイ 835f-zGNv)
2023/02/12(日) 01:29:41.79ID:Jy8zTObO0 たまにClose cursorしないといけない時があるよね
471デフォルトの名無しさん (ワッチョイ 1e95-8lmq)
2023/02/12(日) 10:52:00.85ID:d/88ECv40 HTTPはステートレス
472デフォルトの名無しさん (アウアウウー Sa4f-vQqS)
2023/02/12(日) 13:40:33.70ID:2oU17ty6a >>449
Ruby では、URL を扱うモジュールがあるので、正規表現などは使わない
require 'uri'
url = "そのyoutube のURL"
p ary = URI.split( url )
#=> ["https", nil, "www.youtube.com", nil, nil, "/watch", nil, "v=fNapOJYpz18", nil]
uri = URI( url )
p uri.query #=> "v=fNapOJYpz18"
含む項目
scheme
userinfo
host
port
registry
path
opaque
query
fragment
Ruby では、URL を扱うモジュールがあるので、正規表現などは使わない
require 'uri'
url = "そのyoutube のURL"
p ary = URI.split( url )
#=> ["https", nil, "www.youtube.com", nil, nil, "/watch", nil, "v=fNapOJYpz18", nil]
uri = URI( url )
p uri.query #=> "v=fNapOJYpz18"
含む項目
scheme
userinfo
host
port
registry
path
opaque
query
fragment
474デフォルトの名無しさん (ワッチョイ ea8b-D0vN)
2023/02/12(日) 17:51:22.67ID:disuH4ke0 aタグのクリックで指定フォームのpostをしようとしています。
以下コードを記述したところどうやら文字列の「-」がJavaScriptにて
認識されていない様です。
「-」はJSで認識されないのでしょうか?
もしくは私の書き方がどこか間違っていますか?
<コード>
<a href="javascript:name_form_delete_kNjQxl-K7.submit()">Remove</a>
<form class="" name="name_form_delete_kNjQxl-K7" method="post" action="addhoge.php">
<input type="hidden" name="name_t1" value="1">
<input type="hidden" name="name_t2" value="2">
</form>
<エラー>
Uncaught ReferenceError: name_form_delete_kNjQxl is not defined
以下コードを記述したところどうやら文字列の「-」がJavaScriptにて
認識されていない様です。
「-」はJSで認識されないのでしょうか?
もしくは私の書き方がどこか間違っていますか?
<コード>
<a href="javascript:name_form_delete_kNjQxl-K7.submit()">Remove</a>
<form class="" name="name_form_delete_kNjQxl-K7" method="post" action="addhoge.php">
<input type="hidden" name="name_t1" value="1">
<input type="hidden" name="name_t2" value="2">
</form>
<エラー>
Uncaught ReferenceError: name_form_delete_kNjQxl is not defined
475デフォルトの名無しさん (ワッチョイ 835f-zGNv)
2023/02/12(日) 18:08:34.40ID:Jy8zTObO0 kNjQxl-K7がなんかで生成してる文字列なら変数に入れてテンプレートリテラル使うとか
476デフォルトの名無しさん (ワッチョイ d301-sPc2)
2023/02/12(日) 18:23:53.22ID:19IYgGC60477デフォルトの名無しさん (ワッチョイ 2361-mcE4)
2023/02/12(日) 18:29:58.02ID:n7060JSN0 >>474
document.forms['name_form_delete_kNjQxl-K7'].submit()
idやnameがwindowインターフェイスに自動生成されるショートハンドは元からある名前と被った時に困るから使わない方がいいよ
document.forms['name_form_delete_kNjQxl-K7'].submit()
idやnameがwindowインターフェイスに自動生成されるショートハンドは元からある名前と被った時に困るから使わない方がいいよ
478デフォルトの名無しさん (ワッチョイ ca7c-D0vN)
2023/02/12(日) 20:31:31.32ID:bFc1YPr30 aタグでもonclickで書けば良くね?
Vueで書くときはhrefすら書いてないわ
Vueで書くときはhrefすら書いてないわ
479デフォルトの名無しさん (ワッチョイ 8a02-AGaU)
2023/02/12(日) 21:35:07.83ID:fJXtAG7P0 これはフロントエンドの話ですか。。
<a>タグのhref属性は、リンク先を記述するのであって
イベントのターゲットを記述するのではないです。
javaScriptでイベント駆動を記述するのであれば、
addEventListener()で、イベントオブジェクトを利用するのが
一般です。
JavaScriptスレに訊いた方が良い回答があると思います。
<a>タグのhref属性は、リンク先を記述するのであって
イベントのターゲットを記述するのではないです。
javaScriptでイベント駆動を記述するのであれば、
addEventListener()で、イベントオブジェクトを利用するのが
一般です。
JavaScriptスレに訊いた方が良い回答があると思います。
480デフォルトの名無しさん (ワッチョイ ea8b-D0vN)
2023/02/12(日) 22:36:32.24ID:disuH4ke0481デフォルトの名無しさん (ワッチョイ 465f-D0vN)
2023/02/13(月) 15:51:52.79ID:PTUH+xs80 unko() or die("chinko");
という書き方はよくあると思いますが、die()の代わりにreturnを使いたいです。
でもreturnは使えません!
そこで、returnの代わりになる関数ってなんかないですか?
という書き方はよくあると思いますが、die()の代わりにreturnを使いたいです。
でもreturnは使えません!
そこで、returnの代わりになる関数ってなんかないですか?
482デフォルトの名無しさん (ワッチョイ eaa7-lJcr)
2023/02/13(月) 16:14:41.21ID:SJQ1XhAi0 ない
483デフォルトの名無しさん (スッップ Sdaa-gsgJ)
2023/02/13(月) 16:36:48.27ID:3Y+V2LMTd throwでも使っとけ
というかいまどきor dieなんて使ってるソースはクソゴミだから脱出を検討しろ
というかいまどきor dieなんて使ってるソースはクソゴミだから脱出を検討しろ
484デフォルトの名無しさん (ワッチョイ ea8b-D0vN)
2023/02/13(月) 23:44:40.57ID:UX0KmCtq0 Eclipse⇒VS Codeに乗り換え中
使い辛いなー
使い辛いなー
485デフォルトの名無しさん (ワッチョイ ca7c-D0vN)
2023/02/13(月) 23:48:06.11ID:v/vixYv70 それならnetbeansにしてみたら?
俺はPHPはnetbeansでやってる
俺はPHPはnetbeansでやってる
486デフォルトの名無しさん (ワッチョイ ea8b-D0vN)
2023/02/14(火) 00:22:03.18ID:F+rfJu9X0487デフォルトの名無しさん (ワッチョイ 465f-D0vN)
2023/02/14(火) 01:56:02.60ID:DAv1op2d0 PhpStormが一番良いと思います
488デフォルトの名無しさん (ワッチョイ ea8b-D0vN)
2023/02/14(火) 03:06:09.76ID:F+rfJu9X0 VS codeでサーバに接続しようとしています。
すると「リモートを開いています」のまま
フリーズします。
VS Codeに設定したユーザ名、パスワードは正しいです。
WinSCPからだと同じ情報で接続できます。
何の設定が間違っているのでしょうか?
すると「リモートを開いています」のまま
フリーズします。
VS Codeに設定したユーザ名、パスワードは正しいです。
WinSCPからだと同じ情報で接続できます。
何の設定が間違っているのでしょうか?
489デフォルトの名無しさん (ワッチョイ 9ebb-sQVB)
2023/02/14(火) 04:09:47.12ID:+hscb0Qf0 そうでしょうね
490デフォルトの名無しさん (ワッチョイ ea8b-D0vN)
2023/02/14(火) 12:02:50.23ID:F+rfJu9X0 VS CodeでRmote Developmentをインストールし
接続情報を設定しました。
そして、パスワードを入力しEnterを押したところ
「リモートを開いています...」と画面左下に表示されています。
しかし、
エクスプローラー
開いているフォルダーがありません
リモートに接続しました。
フォルダーを開く
という表示です。リモート接続は出来ている様なのですがサーバ上の
ファイル一覧が表示されません。。。
共有サーバだと出来ないのでしょうか?
接続情報を設定しました。
そして、パスワードを入力しEnterを押したところ
「リモートを開いています...」と画面左下に表示されています。
しかし、
エクスプローラー
開いているフォルダーがありません
リモートに接続しました。
フォルダーを開く
という表示です。リモート接続は出来ている様なのですがサーバ上の
ファイル一覧が表示されません。。。
共有サーバだと出来ないのでしょうか?
491デフォルトの名無しさん (ワッチョイ ea8b-D0vN)
2023/02/14(火) 13:43:42.54ID:F+rfJu9X0 Eclipseの方がよっぽど使い易いじゃねーかよ。
VS Code進めてたヤツはアホか?
VS Code進めてたヤツはアホか?
492デフォルトの名無しさん (スップ Sd4a-zGNv)
2023/02/14(火) 18:19:18.79ID:9fQYo556d なれの問題を人のせいにするのは愚かだよ
493デフォルトの名無しさん (ワッチョイ ea8b-D0vN)
2023/02/14(火) 18:59:35.83ID:F+rfJu9X0 VS Codeで出来る事ほぼすべてEclipseで使えるじゃねーか。
いちいち拡張機能を入れてF1⇒実行
糞面倒臭い。
いちいち拡張機能を入れてF1⇒実行
糞面倒臭い。
494デフォルトの名無しさん (ワッチョイ 9bac-4RKc)
2023/02/14(火) 19:23:03.28ID:JNIzMgrA0 EclipseってVScodeより軽いの?
495デフォルトの名無しさん (ワッチョイ ea8b-D0vN)
2023/02/15(水) 10:31:40.86ID:WfU34a1O0 軽い
496デフォルトの名無しさん (ワッチョイ 477c-7Kef)
2023/02/15(水) 15:54:51.90ID:ficf9YEj0 pycharm
vscodeより、かるい
vscodeより、かるい
497デフォルトの名無しさん (ワッチョイ 1ef8-RZO9)
2023/02/15(水) 19:54:45.75ID:4xfiC8CV0 vscodeよりさらに
本家?visualstudioなんてマゾいし、
vscodeとvsで全然ショートカットも違うから笑えてくる
本家?visualstudioなんてマゾいし、
vscodeとvsで全然ショートカットも違うから笑えてくる
498デフォルトの名無しさん (ワッチョイ 477c-7Kef)
2023/02/15(水) 22:24:26.83ID:ficf9YEj0 php
javascript,css,html,データベース
いろいろ、絡んでくるから、初心者には、ほんと難しいとおもう
webプログラミング、がね
javascript,css,html,データベース
いろいろ、絡んでくるから、初心者には、ほんと難しいとおもう
webプログラミング、がね
499デフォルトの名無しさん (ワッチョイ 8a02-AGaU)
2023/02/16(木) 13:41:24.91ID:U29SVQBb0 phpMyAdminで使える、定数のCURRENT_DATE
をbindValue()を通して送りたい野だけど失敗します。
データベースの定数をクエリ文に埋め込みPHPで送信することは難しいでしょうか?
-----------
$name ="cola";
$update_date = CURRENT_DATE;
$insert =
"INSERT INTO
item(name,update_date)
VALUES
(:name,:update_date);";
}
$statement = $db->prepare($insert);
$statement->bindValue(':name', $name);
$statement->bindValue(':update_date', $update_date, PDO::PARAM_STR_NATL);
うまくいかない!!
---------
↓理想の変形
INSERT INTO
item(name,update_date)
VALUES
("cola",CURRENT_DATE);
をbindValue()を通して送りたい野だけど失敗します。
データベースの定数をクエリ文に埋め込みPHPで送信することは難しいでしょうか?
-----------
$name ="cola";
$update_date = CURRENT_DATE;
$insert =
"INSERT INTO
item(name,update_date)
VALUES
(:name,:update_date);";
}
$statement = $db->prepare($insert);
$statement->bindValue(':name', $name);
$statement->bindValue(':update_date', $update_date, PDO::PARAM_STR_NATL);
うまくいかない!!
---------
↓理想の変形
INSERT INTO
item(name,update_date)
VALUES
("cola",CURRENT_DATE);
500デフォルトの名無しさん (ワッチョイ 2361-mcE4)
2023/02/16(木) 14:34:50.94ID:wXxzWMIn0 >>499
CURRENT_DATEはphp側ではなくsql側の日付関数なのでbindできない
INSERT INTO item(name,update_date) VALUES(:name,CURRENT_DATE);
CURRENT_DATEはphp側ではなくsql側の日付関数なのでbindできない
INSERT INTO item(name,update_date) VALUES(:name,CURRENT_DATE);
501デフォルトの名無しさん (ワッチョイ ea8b-D0vN)
2023/02/16(木) 16:20:52.89ID:ZhDpu7bI0 IDEはEclipseで十分
502デフォルトの名無しさん (ワッチョイ 8a02-AGaU)
2023/02/16(木) 17:17:33.60ID:U29SVQBb0 >>500
ありがとうございます。
ありがとうございます。
503デフォルトの名無しさん (ワッチョイ 23a7-R6kM)
2023/02/17(金) 00:53:37.37ID:VY6wNZlY0 PHPのシンタックスハイライトぐらいしか出来ないエディタで
5MBほどの社内用プログラムをかきあげたことがあるぞ(゚A゚;)
5MBほどの社内用プログラムをかきあげたことがあるぞ(゚A゚;)
504デフォルトの名無しさん (ワッチョイ 9bac-4RKc)
2023/02/17(金) 01:00:09.42ID:O/H37gNs0 メモ帳野郎が湧くぞ
505デフォルトの名無しさん (ワッチョイ e38b-BTrK)
2023/02/18(土) 16:21:45.50ID:wTUF9m4P0 cd ~/.ssh
の ~ ってどういう意味なのでしょうか?
cd .ssh だと確かにこのディレクトリに入れません。決まり文句と覚えておけばよいでしょうか?
の ~ ってどういう意味なのでしょうか?
cd .ssh だと確かにこのディレクトリに入れません。決まり文句と覚えておけばよいでしょうか?
506デフォルトの名無しさん (ワッチョイ cbbb-u8a6)
2023/02/18(土) 17:00:32.72ID:zhx+QJQI0 >>505
スレチ
スレチ
507デフォルトの名無しさん (ワッチョイ 6ea6-fgbX)
2023/02/25(土) 19:20:55.02ID:L/ecqLAZ0 >>501
ホームディレクトリの略だよ
ホームディレクトリの略だよ
508デフォルトの名無しさん (アウアウウー Sa39-bTTE)
2023/02/26(日) 23:08:14.21ID:yz/O0wFra requireとextendsはどう違うの?
requireはclassだけ呼ぶのかと思ったらプロパティも呼ぶし混乱する
この2つ重なってない?
requireはclassだけ呼ぶのかと思ったらプロパティも呼ぶし混乱する
この2つ重なってない?
509デフォルトの名無しさん (ワッチョイ ae5f-W5vA)
2023/02/27(月) 00:20:33.97ID:sow/rINj0 includeとrequireを混同するのは微笑ましいあるあるだけど
extendsは初めて見るパターンで困惑する
extendsは初めて見るパターンで困惑する
510デフォルトの名無しさん (アウアウウー Sa39-bTTE)
2023/02/27(月) 01:15:02.38ID:BPjGYXVma 無能なんだな俺
でも分かった
requireは親のクラスを使ってインスタンスが作れる。だから呼び出し元でclass Hoge { しなくていい
requireは更に親のphpファイルで作った変数が使える
requireは更に親のphpファイルで作ったコンストラクタを使える
つまりclass内が使える
一方のextendsはclass Hoge { の外にあるメソッドとかを継承する
↑この理解はどうかな?
でも分かった
requireは親のクラスを使ってインスタンスが作れる。だから呼び出し元でclass Hoge { しなくていい
requireは更に親のphpファイルで作った変数が使える
requireは更に親のphpファイルで作ったコンストラクタを使える
つまりclass内が使える
一方のextendsはclass Hoge { の外にあるメソッドとかを継承する
↑この理解はどうかな?
511デフォルトの名無しさん (アウアウウー Sa39-bTTE)
2023/02/27(月) 01:24:44.70ID:BPjGYXVma メソッドもclass Hoge {の中にあるのか。やっぱ被ってるように思うけど
512デフォルトの名無しさん (ワッチョイ 7da7-c/TO)
2023/02/27(月) 04:20:55.93ID:ocW3Jac80 requireはあくまでも外部のPHPファイルを読み込んでるだけ
そこに記載されたクラスを継承して新たにクラスを作ることとは何の関連もない
ポリモーフィズムの概念やらオブジェクト指向がなんたるかを勉強してきたほうがいい
そこに記載されたクラスを継承して新たにクラスを作ることとは何の関連もない
ポリモーフィズムの概念やらオブジェクト指向がなんたるかを勉強してきたほうがいい
513デフォルトの名無しさん (ワッチョイ 7da7-c/TO)
2023/02/27(月) 04:22:36.00ID:ocW3Jac80 ちなみにネコがワンと鳴くみたいな説明してるとこは見ない方がいい
514デフォルトの名無しさん (ワッチョイ fa8b-W5vA)
2023/02/27(月) 04:37:15.50ID:iRiTYulC0 俺はPHPだけじゃなくて、Windowsアプリ開発もできる
515デフォルトの名無しさん (アウアウウー Sa39-TMU/)
2023/02/27(月) 08:40:23.44ID:TElJ4lxXa >>512
You Tubeいくつか見てみるよ
You Tubeいくつか見てみるよ
516デフォルトの名無しさん (ワッチョイ daa9-sAZr)
2023/02/27(月) 13:52:10.05ID:OQAydld20 初心者なんだけど他人のコード見てたら
if(true){
・・・
}
if(false){
・・・
}
とかあるんだが、これはどういう条件式なの?
ifの中に変数名が入っていたりしたら入ってるかどうかぐらいなのはわかるんだけど、
不思議な書き方なのでよくわからんです
if(true){
・・・
}
if(false){
・・・
}
とかあるんだが、これはどういう条件式なの?
ifの中に変数名が入っていたりしたら入ってるかどうかぐらいなのはわかるんだけど、
不思議な書き方なのでよくわからんです
517デフォルトの名無しさん (ワッチョイ ae5f-W5vA)
2023/02/27(月) 13:59:57.21ID:sow/rINj0518デフォルトの名無しさん (アウアウウー Sa39-bTTE)
2023/02/28(火) 01:30:55.97ID:YvnM6/8va やっぱrequireよく分からんな
とあるwebページ作ってて、管理しやすくするためにphpファイルをiedex.php、data.php、hoge.php、hogehoge.phpみたいに分ける
data.phpにインスタンスまとめる。この場合data.phpは各クラスをrequireする
index.phpはHTMLとして表示される。この場合ここはdata.phpをrequireする
hoge.phpとhogehoge.phpはclassだけど、他のクラスから継承しないならrequireしたりしない
extendsは分かったかも
とあるクラスからインスタンスを作る。このインスタンスをタイプは同じだけど性質によって分けたいならextendsする
例
アニマルクラスを作る。プロパティは
種族
年齢
吠える
そのクラスから犬クラスと猫クラスに分けてからインスタンス作りたい場合、extendsでアニマルクラスを継承する(プロパティは共通だから)
これでどうかな。requireせずにextendsだけする事あるのだろうか?必ずrequireやincludeとかのファイル読み込みをセットで使う?
それと皆は本当にハッキリとrequireするかしないか分かるの?
とあるwebページ作ってて、管理しやすくするためにphpファイルをiedex.php、data.php、hoge.php、hogehoge.phpみたいに分ける
data.phpにインスタンスまとめる。この場合data.phpは各クラスをrequireする
index.phpはHTMLとして表示される。この場合ここはdata.phpをrequireする
hoge.phpとhogehoge.phpはclassだけど、他のクラスから継承しないならrequireしたりしない
extendsは分かったかも
とあるクラスからインスタンスを作る。このインスタンスをタイプは同じだけど性質によって分けたいならextendsする
例
アニマルクラスを作る。プロパティは
種族
年齢
吠える
そのクラスから犬クラスと猫クラスに分けてからインスタンス作りたい場合、extendsでアニマルクラスを継承する(プロパティは共通だから)
これでどうかな。requireせずにextendsだけする事あるのだろうか?必ずrequireやincludeとかのファイル読み込みをセットで使う?
それと皆は本当にハッキリとrequireするかしないか分かるの?
519デフォルトの名無しさん (アウアウウー Sa39-bTTE)
2023/02/28(火) 01:34:20.21ID:YvnM6/8va それと、クラスメソッドやクラスプロパティ使う時も皆は明白に判断つくの?
インスタンス作成回数とかid作成はクラスメソッドとかみたいのは分かるけど俺はハッキリと判断つかないな
インスタンス作成回数とかid作成はクラスメソッドとかみたいのは分かるけど俺はハッキリと判断つかないな
520デフォルトの名無しさん (アウアウウー Sa39-bTTE)
2023/02/28(火) 01:50:28.85ID:YvnM6/8va HTMLに変換されるindex.php上で他のphpファイル上で定義されたメソッドを実行する場合、requireしなくてもいいのはなぜ?
requireはインスタンス作成時にのみ行うのかと思わせて他のケースもあるみたいで分からなくなる
requireはインスタンス作成時にのみ行うのかと思わせて他のケースもあるみたいで分からなくなる
521デフォルトの名無しさん (ワッチョイ 7da7-c/TO)
2023/02/28(火) 02:32:15.26ID:RiJyC4pT0 requireで読み込むファイルはクラスや関数が書かれたライブラリだったり
定数や共通の設定事項を記載したファイルだったり
単にhtmlを出力してるだけのファイルならその内容が読み込んだ側で出力されるし用途は様々
C言語で書かれたPHPコアライブラリに含まれてる関数群やPDOなんかのクラスは
使用するにあたってrequireなんて書いたりしないけど
PHPで作られてるものはrequireしないと使えない
インスタンスだの継承だのそんな次元の話じゃない
定数や共通の設定事項を記載したファイルだったり
単にhtmlを出力してるだけのファイルならその内容が読み込んだ側で出力されるし用途は様々
C言語で書かれたPHPコアライブラリに含まれてる関数群やPDOなんかのクラスは
使用するにあたってrequireなんて書いたりしないけど
PHPで作られてるものはrequireしないと使えない
インスタンスだの継承だのそんな次元の話じゃない
522デフォルトの名無しさん (ワッチョイ f6bb-Arif)
2023/02/28(火) 07:09:43.47ID:3WmX3+jc0 基礎的なところからすれ違ってんだから体系的に学習できる本でも読めよ
phpは基礎が学べればあとはマニュアルでなんとかなるくらいマニュアルが優秀だけど、そもそもの基礎がズレてたらマニュアルも読めん
phpは基礎が学べればあとはマニュアルでなんとかなるくらいマニュアルが優秀だけど、そもそもの基礎がズレてたらマニュアルも読めん
523デフォルトの名無しさん (アウアウウー Sa39-TMU/)
2023/02/28(火) 08:28:11.46ID:xmhsjsFza 基礎がおかしいか。Progateで勉強したけどrequireするしないの差が曖昧だった
何で勉強しようと思ったかというと、今使ってるブログサービスで不具合あって、そこがWordPressだから直せないかなと思った
である程度勉強してブログ設定見たらユーザーが触れる部分はHTMLで勉強の意味無かった
意味無かったけど途中までやったから全部終わらせた
PHPかなり難しかったよ。でもCやってたら楽々なんだろうな
何で勉強しようと思ったかというと、今使ってるブログサービスで不具合あって、そこがWordPressだから直せないかなと思った
である程度勉強してブログ設定見たらユーザーが触れる部分はHTMLで勉強の意味無かった
意味無かったけど途中までやったから全部終わらせた
PHPかなり難しかったよ。でもCやってたら楽々なんだろうな
524デフォルトの名無しさん (ワッチョイ f6bb-Arif)
2023/02/28(火) 09:06:04.41ID:3WmX3+jc0 WordPressはphpとはまた別物
多分、両方エキスパートって人はいないと思う
そもそも一般的なphp開発だと、requireとかほぼ使わなくなってる
composerのautoloadがメジャーだよ
WordPressがやりたいんだったら、一般的なphpじゃなくてそれ用の本読んだほうがいいかなぁ
多分、両方エキスパートって人はいないと思う
そもそも一般的なphp開発だと、requireとかほぼ使わなくなってる
composerのautoloadがメジャーだよ
WordPressがやりたいんだったら、一般的なphpじゃなくてそれ用の本読んだほうがいいかなぁ
525デフォルトの名無しさん (ワッチョイ fab7-okFi)
2023/02/28(火) 09:19:48.98ID:95tx/KzW0 >>518
まず言語仕様として1ファイル1クラスじゃなくてもいい。1ファイルに複数クラス定義を書いてもいい。
(ただし作法としては1ファイル1クラスにするのが望ましい)
そしてrequireは別のファイルからコードを挿入してくるだけの機能
例えばecho文が書かれたPHPファイルをrequireしたらその時に実行される。
まず言語仕様として1ファイル1クラスじゃなくてもいい。1ファイルに複数クラス定義を書いてもいい。
(ただし作法としては1ファイル1クラスにするのが望ましい)
そしてrequireは別のファイルからコードを挿入してくるだけの機能
例えばecho文が書かれたPHPファイルをrequireしたらその時に実行される。
526デフォルトの名無しさん (ワイーワ2 FF42-pseD)
2023/02/28(火) 12:09:34.54ID:K5lzl+NyF ファイルには関数やクラスの定義だけしておくパターンが多いかな
527デフォルトの名無しさん (ワッチョイ ee89-9dkJ)
2023/02/28(火) 16:54:00.06ID:E6p/DZkf0 そんなに違いが気になるなら、Ruby の逆引き本を読んだ方が早い
Ruby on Rails が良い
Ruby on Rails が良い
528デフォルトの名無しさん (オッペケ Sr75-tD1/)
2023/02/28(火) 18:14:11.17ID:qVVLPrT9r Rubyって読みづらくね?
波括弧ないしif~endとかダサい
波括弧ないしif~endとかダサい
529デフォルトの名無しさん (ワッチョイ ae5f-W5vA)
2023/03/01(水) 01:33:59.12ID:UTDLtYqT0 >>528
そういうのをかっこいいと思ってる人たちが使っているんです
そういうのをかっこいいと思ってる人たちが使っているんです
530デフォルトの名無しさん (ワッチョイ 9d5f-pseD)
2023/03/01(水) 03:49:41.82ID:QN9phVrM0 file_put_contentsでjsonにデータを書き込みたいんだけど、jsonに
[ ]
を予め用意しておいて その中にデータ書き込むって出来ないかなあ?
[ ]
を予め用意しておいて その中にデータ書き込むって出来ないかなあ?
531デフォルトの名無しさん (ワッチョイ ae5f-W5vA)
2023/03/01(水) 08:43:06.85ID:UTDLtYqT0532デフォルトの名無しさん (ワッチョイ 9d5f-pseD)
2023/03/01(水) 10:36:45.89ID:QN9phVrM0533デフォルトの名無しさん (ワッチョイ 9d5f-pseD)
2023/03/01(水) 10:37:24.79ID:QN9phVrM0 ちがうか、先に違うオブジェクトにしておくのか
534デフォルトの名無しさん (ワッチョイ 9a7c-W5vA)
2023/03/01(水) 11:19:20.74ID:90jK5EfG0 何で出来ない奴はこうも説明が下手なんだ・・・
何を言っているか分からんよw
何を言っているか分からんよw
535デフォルトの名無しさん (ワッチョイ fab7-okFi)
2023/03/01(水) 17:28:10.18ID:XGVF9QRc0 >>530
動的に書き込みたい部分以外はJSONのテンプレートとして事前に用意しておきたいってことだろうか
そう仮定すると考えるのはこの3通りくらい
1) テンプレートを一度jsonオブジェクトとして読み込んで、目的の階層にデータを代入して、まとめて書き出す
2) テンプレート側にデータとして存在しえない文字列を用意しておいて、文字列として読み込んだjsonから文字列置換する
3) JSONを読み取る側を改修して、固定部分と動的部分を別ファイルから読み取るようにする
動的に書き込みたい部分以外はJSONのテンプレートとして事前に用意しておきたいってことだろうか
そう仮定すると考えるのはこの3通りくらい
1) テンプレートを一度jsonオブジェクトとして読み込んで、目的の階層にデータを代入して、まとめて書き出す
2) テンプレート側にデータとして存在しえない文字列を用意しておいて、文字列として読み込んだjsonから文字列置換する
3) JSONを読み取る側を改修して、固定部分と動的部分を別ファイルから読み取るようにする
536デフォルトの名無しさん (ワッチョイ 9d5f-pseD)
2023/03/01(水) 20:41:59.79ID:QN9phVrM0 >>535
ああ、一旦オブジェクトなり配列にして、未登録のデータだった時にオブジェクト一個追加してJSON全部上書きしちゃうのは自分でもできそう
データの数も3桁行かない程度だし、データ読み出して書くのもそんな重くならないか
後は動的にデータおる部分の見直しですね
ああ、一旦オブジェクトなり配列にして、未登録のデータだった時にオブジェクト一個追加してJSON全部上書きしちゃうのは自分でもできそう
データの数も3桁行かない程度だし、データ読み出して書くのもそんな重くならないか
後は動的にデータおる部分の見直しですね
537デフォルトの名無しさん (ワッチョイ 1302-QeO8)
2023/03/05(日) 11:24:39.77ID:QdgOL0Oo0 どちらが適正ですか?
try {
//ファイルを保存先ディレクトリに移動させる
if (move_uploaded_file($_FILES['upload_image']['tmp_name'], $save)) {
echo 'アップロード成功しました。';
} else {
echo 'アップロード失敗しました。';
}
} catch (Exception $e) {
echo 'アップロードエラー: ' . $e->getMessage();
}
try {
//ファイルを保存先ディレクトリに移動させる
move_uploaded_file($_FILES['upload_image']['tmp_name'], $save);
} catch (Exception $e) {
echo 'アップロードエラー: ' . $e->getMessage();
}
try {
//ファイルを保存先ディレクトリに移動させる
if (move_uploaded_file($_FILES['upload_image']['tmp_name'], $save)) {
echo 'アップロード成功しました。';
} else {
echo 'アップロード失敗しました。';
}
} catch (Exception $e) {
echo 'アップロードエラー: ' . $e->getMessage();
}
try {
//ファイルを保存先ディレクトリに移動させる
move_uploaded_file($_FILES['upload_image']['tmp_name'], $save);
} catch (Exception $e) {
echo 'アップロードエラー: ' . $e->getMessage();
}
538デフォルトの名無しさん (ワッチョイ 1361-y7Dr)
2023/03/05(日) 12:02:39.82ID:A2ppgH2U0 >>537
上
上
539デフォルトの名無しさん (ワッチョイ 1302-QeO8)
2023/03/05(日) 13:31:58.17ID:QdgOL0Oo0 >>538ありがとうございます。
540デフォルトの名無しさん (ワッチョイ 1302-QeO8)
2023/03/05(日) 15:15:03.70ID:QdgOL0Oo0 phpの実行を3つに区分したとして、
「データベースのmysqli接続」
「POST送信データバリデーションチェック」
「クエリ実行」
try-catch文、トランザクション処理を記述する場所
って以下であっていますか?
try{
//データベース接続処理
...
//入力バリデーションチェック
...
//トランザクション開始
$mysqli->begin_transaction();
//クエリ実行
...
// トランザクション処理
if (!$mysqli->commit()) {
throw new Exception("トランザクションが失敗しました。");
}
}catch (Exception $e) {
echo $e->getMessage();
$mysqli->rollback();
}
「データベースのmysqli接続」
「POST送信データバリデーションチェック」
「クエリ実行」
try-catch文、トランザクション処理を記述する場所
って以下であっていますか?
try{
//データベース接続処理
...
//入力バリデーションチェック
...
//トランザクション開始
$mysqli->begin_transaction();
//クエリ実行
...
// トランザクション処理
if (!$mysqli->commit()) {
throw new Exception("トランザクションが失敗しました。");
}
}catch (Exception $e) {
echo $e->getMessage();
$mysqli->rollback();
}
541デフォルトの名無しさん (アウアウアー Sa8b-Gptz)
2023/03/05(日) 17:02:00.95ID:pluyAGbia commit部分のthrowは要らないのでは?
542デフォルトの名無しさん (ワッチョイ 8b63-Qpn1)
2023/03/05(日) 17:44:49.95ID:M62PQQGq0 commitしようとしたら、ファイルが壊れました、とか
543デフォルトの名無しさん (アウアウアー Sa8b-Gptz)
2023/03/05(日) 18:28:19.70ID:pluyAGbia DB壊れたらシステム止まって別のトランザクションも動かないだろうから
全てのトランザクションに書かなくて良いと思う
全てのトランザクションに書かなくて良いと思う
544デフォルトの名無しさん (ワッチョイ e9a7-8P30)
2023/03/05(日) 21:45:08.47ID:GipSGO790 PDOで例外投げるよう設定して
catchすべきなのはPDOExceptionじゃね
catchすべきなのはPDOExceptionじゃね
545デフォルトの名無しさん (ブーイモ MMcb-5TsK)
2023/03/06(月) 10:18:27.62ID:8oxT6MrcM こういうのもchatgptさんに
PHPでDB接続する例文書いて。例外おきたときの対処もよろ。
と言うだけでだいたい書いてくれる。
でもさ、
もしも全員がchatgptさんだけ使って
ブログ記事などが一切なくなった場合は
どこからサンプルソース解析してくるんだろう?
公式リファレンスしか存在しなくても
たくさんサンプルあみだせるんかな?
PHPでDB接続する例文書いて。例外おきたときの対処もよろ。
と言うだけでだいたい書いてくれる。
でもさ、
もしも全員がchatgptさんだけ使って
ブログ記事などが一切なくなった場合は
どこからサンプルソース解析してくるんだろう?
公式リファレンスしか存在しなくても
たくさんサンプルあみだせるんかな?
546デフォルトの名無しさん (オッペケ Sr45-+tQF)
2023/03/06(月) 13:06:49.25ID:UVP5G7/Er chatgptかなりいい加減だぞ
こっちが詳しく聞いてもありえないコードと解説もよくするし
こっちが詳しく聞いてもありえないコードと解説もよくするし
547デフォルトの名無しさん (ワッチョイ d6a7-Cjjx)
2023/03/12(日) 10:28:41.64ID:/WQQIT0F0 PDOStatement::columnCountって
PDOStatement::fetchができる回数を示しているものであってますか?
int(0)を想定したクエリ出しても
どんなクエリでも常にint(n)になってしまってお手上げです
PDOStatement::rowCountはSQLiteのため常に0を返すとのことで使えません
ものすごい古いNAS上に構築された環境なのでそれの影響もあるかもしれませんが
ループ上でfetchがbool返すまでやるしかないでしょうか?
PDOStatement::fetchができる回数を示しているものであってますか?
int(0)を想定したクエリ出しても
どんなクエリでも常にint(n)になってしまってお手上げです
PDOStatement::rowCountはSQLiteのため常に0を返すとのことで使えません
ものすごい古いNAS上に構築された環境なのでそれの影響もあるかもしれませんが
ループ上でfetchがbool返すまでやるしかないでしょうか?
548547 (ワッチョイ d6a7-Cjjx)
2023/03/12(日) 10:29:40.64ID:/WQQIT0F0 どんなクエリでも常にint(n)になってしまってお手上げです
↓
どんなクエリでも常にint(n)になってしまってお手上げです (n>0)
です
↓
どんなクエリでも常にint(n)になってしまってお手上げです (n>0)
です
549デフォルトの名無しさん (ワッチョイ 56bb-EKUa)
2023/03/12(日) 10:33:06.48ID:yWzg52lT0 > PDOStatement::fetchができる回数を示しているものであってますか?
間違ってます。
間違ってます。
550デフォルトの名無しさん (ワッチョイ d6a7-Cjjx)
2023/03/12(日) 11:14:32.05ID:/WQQIT0F0 そうですねすみません
よく読んだら全然違った
久々にPHPいじってるのでこんなこともわからなくなってるとは・・・
*が最大数で1以上になるのは当たり前ですね
よく読んだら全然違った
久々にPHPいじってるのでこんなこともわからなくなってるとは・・・
*が最大数で1以上になるのは当たり前ですね
551デフォルトの名無しさん (ワッチョイ 6610-3g29)
2023/04/24(月) 10:58:21.24ID:JH1evJvp0 みなさんはIF地獄になったときどうしてますか?
最適化するまで試行錯誤しますか?
それとも「できる・動く」を優先して進めますか?
最適化するまで試行錯誤しますか?
それとも「できる・動く」を優先して進めますか?
552デフォルトの名無しさん (ワッチョイ 6663-RykB)
2023/04/24(月) 11:03:45.16ID:CIhFKz1G0 動けば良いってものじゃない
553デフォルトの名無しさん (ワッチョイ 9ee7-RykB)
2023/04/24(月) 11:05:33.74ID:xRkzUvA90 >>551
メソッドか関数にして追い出しておく
あとでリファクタする際にその関数だけでテストできるように下準備だけしておく
未来の自分・他人がやりやすいようにして今は目をつぶる、がコーディングの鉄則
最適化は最初の仕事かつ最後の仕事だが、途中でやるのだけはNG
メソッドか関数にして追い出しておく
あとでリファクタする際にその関数だけでテストできるように下準備だけしておく
未来の自分・他人がやりやすいようにして今は目をつぶる、がコーディングの鉄則
最適化は最初の仕事かつ最後の仕事だが、途中でやるのだけはNG
554デフォルトの名無しさん (ワッチョイ 6610-3g29)
2023/04/24(月) 16:04:38.35ID:JH1evJvp0 >>553
メソッドに追い出してもIFが続きますね。
どちらにしろ「Aがある場合~Aがない場合~」みたいな処理が必要ですし。
綺麗なコードとわかりやすいコードって違うと思うんですよね。
1ファイルにダラーっとコードが記述されると汚いですが、
上から下まで読めば何がしたいかは大体わかります。
しかし、クラスなりメソッドなりに分けると、複数ファイルにまたがって複雑です。
適切な名前を付けてファイルを参照しやすくすれば手間は軽減されますが、
今度は適切な名前を考えるのに時間を消費し、開発に遅れが生じてしまいます。
メソッドに追い出してもIFが続きますね。
どちらにしろ「Aがある場合~Aがない場合~」みたいな処理が必要ですし。
綺麗なコードとわかりやすいコードって違うと思うんですよね。
1ファイルにダラーっとコードが記述されると汚いですが、
上から下まで読めば何がしたいかは大体わかります。
しかし、クラスなりメソッドなりに分けると、複数ファイルにまたがって複雑です。
適切な名前を付けてファイルを参照しやすくすれば手間は軽減されますが、
今度は適切な名前を考えるのに時間を消費し、開発に遅れが生じてしまいます。
555デフォルトの名無しさん (ワッチョイ c5e6-ASru)
2023/04/24(月) 19:55:07.81ID:CirHdNf40 綺麗でもわかりにくいコードはあるが、汚いのにわかりやすいコードというのは無いな
556デフォルトの名無しさん (ワッチョイ e6bb-lTfL)
2023/04/25(火) 07:41:04.47ID:ubLXos3L0 >>554
一度適当なフレームワークでシステム作ってみるといいよ
感想がぜんぜん変わるから
> 今度は適切な名前を考えるのに時間を消費し、開発に遅れが生じてしまいます。
copilotさんとか使うといい
一度適当なフレームワークでシステム作ってみるといいよ
感想がぜんぜん変わるから
> 今度は適切な名前を考えるのに時間を消費し、開発に遅れが生じてしまいます。
copilotさんとか使うといい
557デフォルトの名無しさん (ワッチョイ 6610-3g29)
2023/04/25(火) 08:12:37.51ID:CC33Xm/N0558デフォルトの名無しさん (ワッチョイ e6bb-lTfL)
2023/04/25(火) 13:06:17.18ID:ubLXos3L0 >>557
フレームワーク使用したことがあるのに「クラスなりメソッドなりに分けると、複数ファイルにまたがって複雑です。」とか言っちゃうのはかなりまずい気がするけど、複雑な要件の実装時に十分に責任分解できてないんじゃないかなぁ…
https://github.com/alexeymezenin/laravel-best-practices/blob/master/japanese.md#%E5%8D%98%E4%B8%80%E8%B2%AC%E4%BB%BB%E3%81%AE%E5%8E%9F%E5%89%87
これのGoodがGoodに感じられないってことだよね?
フレームワーク使用したことがあるのに「クラスなりメソッドなりに分けると、複数ファイルにまたがって複雑です。」とか言っちゃうのはかなりまずい気がするけど、複雑な要件の実装時に十分に責任分解できてないんじゃないかなぁ…
https://github.com/alexeymezenin/laravel-best-practices/blob/master/japanese.md#%E5%8D%98%E4%B8%80%E8%B2%AC%E4%BB%BB%E3%81%AE%E5%8E%9F%E5%89%87
これのGoodがGoodに感じられないってことだよね?
559デフォルトの名無しさん (アウアウウー Sa21-PXVT)
2023/04/25(火) 13:27:47.02ID:gJ92KJGfa コミュニティーの議論や歴史を調べること
Ruby on Rails では、コントローラーの肥大化を防ぐために、
Skinny Controller, Fat Model を推奨した。
その結果、モデルが肥大化した
そこで今度は、モデルの処理を減らすために、
Form Object, Service Object へ処理を分けた
また表示処理は、Presenter へ分けた。
それで、Form Presenter, Model Presenter が出来た
Ruby on Rails では、コントローラーの肥大化を防ぐために、
Skinny Controller, Fat Model を推奨した。
その結果、モデルが肥大化した
そこで今度は、モデルの処理を減らすために、
Form Object, Service Object へ処理を分けた
また表示処理は、Presenter へ分けた。
それで、Form Presenter, Model Presenter が出来た
560デフォルトの名無しさん (ワッチョイ e6bb-5x1U)
2023/04/25(火) 13:27:53.51ID:A07qb0io0 こういうのは2つ実際に書いてみて、両者を見比べて良い方を採用する
理屈よりも、自分の目で見て判断するのが良い
理屈よりも、自分の目で見て判断するのが良い
561デフォルトの名無しさん (ワッチョイ 6610-3g29)
2023/04/25(火) 15:25:51.23ID:CC33Xm/N0562デフォルトの名無しさん (ワッチョイ 5e5f-RykB)
2023/04/25(火) 15:27:54.01ID:dvdIAVRA0 古いPHPのシステムを保守するならDockerにぶち込むのが一番?
563デフォルトの名無しさん (スッップ Sd0a-T9f9)
2023/04/26(水) 13:32:18.14ID:oPAFNUffd 結局ifは減らないんだよね
ファイルを分けても分けなくても、オブジェクト指向でもそうでなくとも
Strategy/StateパターンとTemplateパターンの併用にして
スイッチっぽく分岐をわかりやすするのが一番かな
ファイルを分けても分けなくても、オブジェクト指向でもそうでなくとも
Strategy/StateパターンとTemplateパターンの併用にして
スイッチっぽく分岐をわかりやすするのが一番かな
564デフォルトの名無しさん (ワッチョイ aa7c-RykB)
2023/04/26(水) 13:45:21.48ID:DHcVafSS0 ifを無理に減らす必要は無いのでは?
必要なら書かなきゃいけないし
ただ処理が集約出来るとかなら外に追い出したらいいし
パターンが多い場合はswitch()の方が良い場合も確かにあるし
ケースバイケースかと
elseifが並ぶのは個人的に嫌いだがw
必要なら書かなきゃいけないし
ただ処理が集約出来るとかなら外に追い出したらいいし
パターンが多い場合はswitch()の方が良い場合も確かにあるし
ケースバイケースかと
elseifが並ぶのは個人的に嫌いだがw
565デフォルトの名無しさん (スップ Sdea-rwG/)
2023/04/26(水) 13:47:42.93ID:poJ+ClSWd elseif嫌いわかる
elseの中にif書きたい
パターン3つ以上になるならswitchにするな
elseの中にif書きたい
パターン3つ以上になるならswitchにするな
566デフォルトの名無しさん (ワッチョイ 5e5f-RykB)
2023/04/26(水) 13:57:33.29ID:w+qfVGMw0 else if は嫌いというか、あとで取捨選択が面倒なので
if文単独で成り立つようにしておくことが多いな
if文単独で成り立つようにしておくことが多いな
567デフォルトの名無しさん (ワッチョイ 1149-RykB)
2023/04/28(金) 14:22:47.60ID:woDvEBlt0 訊きたいことありましたが自決しました
568デフォルトの名無しさん (ブーイモ MMc9-EW+4)
2023/04/28(金) 14:52:55.46ID:L2hGySASM おお死んでしまうとはなにごとだ
569デフォルトの名無しさん (ワッチョイ 7502-rwG/)
2023/04/28(金) 15:31:57.97ID:4N/b4mKa0 盆には帰ってこいよ
570デフォルトの名無しさん (ワッチョイ b77c-6bRy)
2023/04/30(日) 00:40:31.69ID:z7x3mWoF0 PHP7.2.24をインストールしました。Composerもインストールしました。
次のようなExtensionも使えるようにしたいのですが、つまっています。
ext-bcmath,ext-ctype,ext-curl,・・・
ネット上でみたところ、PHPの用語でモジュールとExtension、ライブラリとあるようですが、
それぞれ違うものなのですか?
次のようなExtensionも使えるようにしたいのですが、つまっています。
ext-bcmath,ext-ctype,ext-curl,・・・
ネット上でみたところ、PHPの用語でモジュールとExtension、ライブラリとあるようですが、
それぞれ違うものなのですか?
571デフォルトの名無しさん (ワッチョイ 9f7c-fitb)
2023/04/30(日) 01:15:52.37ID:vhG6z0vz0 PHPの拡張ならそれを入れないと使えないのでは・・・
composerはあくまで自分の作るプログラムで使うライブラリを導入するもの
composerはあくまで自分の作るプログラムで使うライブラリを導入するもの
572デフォルトの名無しさん (ワッチョイ efae-KeI6)
2023/05/12(金) 22:24:38.02ID:sJueD97p0 サーバーのバックエンドの*.phpはpost送信などで任意で呼び出して実行されますが
このバックエンドの*.phpで自発的に一定時間ごとにプログラムを駆動させることはできますか?
例えば1時間おきとか1日おきとかに規定プログラムを実行なんていうのは
このバックエンドの*.phpで自発的に一定時間ごとにプログラムを駆動させることはできますか?
例えば1時間おきとか1日おきとかに規定プログラムを実行なんていうのは
573デフォルトの名無しさん (ワッチョイ 527c-KeI6)
2023/05/12(金) 22:30:23.15ID:+3Auf0UC0 cronに登録すればいいだけでは?
PHPをデーモンとして常駐させてその中で定期的に動かす方法もあるだろうけど
PHPをデーモンとして常駐させてその中で定期的に動かす方法もあるだろうけど
574デフォルトの名無しさん (ワッチョイ efa7-vOwS)
2023/05/12(金) 23:50:55.10ID:A3+wmcch0 無限ループとsleep使ったスクリプトを起動させときゃいいけど
自分でコントロール出来ないサーバだと勝手にkillされるかもな
自分でコントロール出来ないサーバだと勝手にkillされるかもな
575デフォルトの名無しさん (ワッチョイ 1349-ELkX)
2023/05/13(土) 09:35:12.10ID:vNstIXFZ0 例えばWindowsならコマンドプロンプトで
「php.exe <そのファイル>」
と打てば実行できる(環境変数に入ってる前提で)
そういうことじゃないの?
あとはWindowsならタスクスケジューラとかLinuxならcronとかで、同じように実行すればいい
「php.exe <そのファイル>」
と打てば実行できる(環境変数に入ってる前提で)
そういうことじゃないの?
あとはWindowsならタスクスケジューラとかLinuxならcronとかで、同じように実行すればいい
576デフォルトの名無しさん (ワッチョイ 835f-+6/9)
2023/05/18(木) 11:36:31.84ID:cerdIEN00 フロントエンドはJS、バックエンドはPHPってできるだけ切り離したい
バックエンドとしてDBからデータ受け取るためだけにPHP使うってありなのかな?
あと現状スクラッチ開発しかしたことがないからバックエンド向けのフレームワークも試してみたい
バックエンドとしてDBからデータ受け取るためだけにPHP使うってありなのかな?
あと現状スクラッチ開発しかしたことがないからバックエンド向けのフレームワークも試してみたい
577デフォルトの名無しさん (ワッチョイ cfbb-ScEU)
2023/05/18(木) 11:39:20.88ID:yxJWp9Lm0 すればいいじゃん
がんばれ
がんばれ
578デフォルトの名無しさん (オッペケ Sr87-9+eW)
2023/05/18(木) 12:33:14.63ID:l6GHSnlrr 言語はなんでもいいならphpなんて選ばない
普通はrubyかJavaかpythonだぞ
phpはやめとけ
普通はrubyかJavaかpythonだぞ
phpはやめとけ
579デフォルトの名無しさん (ワッチョイ 63f9-ZkZz)
2023/05/18(木) 12:43:42.00ID:4rcvRPf10 Pythonは完全に対応しているサーバーが少ないみたい
Pythonとdjangoでバックエンド書く方法が自分にはまだわからない
Pythonとdjangoでバックエンド書く方法が自分にはまだわからない
580デフォルトの名無しさん (ワッチョイ 6fe7-ZkZz)
2023/05/18(木) 15:55:36.70ID:nTE2uard0581デフォルトの名無しさん (ワッチョイ ff7c-ZkZz)
2023/05/18(木) 16:38:05.22ID:BkqgSu2K0582デフォルトの名無しさん (オッペケ Sr87-ELkX)
2023/05/18(木) 16:43:12.95ID:psogGPWLr まあラクなのはphpやろなあ
ケースによって最適は異なるから、便利な言葉「場合による」
ケースによって最適は異なるから、便利な言葉「場合による」
583デフォルトの名無しさん (ワッチョイ cff8-8XTM)
2023/05/18(木) 17:32:55.73ID:7XjO1SKk0 なんでも使える自社サーバーなのか、
レンタルサーバーのつもりかで選択肢かわるもんな
phpはだいたい使えるから仕方ない
レンタルサーバーのつもりかで選択肢かわるもんな
phpはだいたい使えるから仕方ない
584デフォルトの名無しさん (ワッチョイ ff5c-ZkZz)
2023/05/18(木) 19:26:52.18ID:iyBRbBgp0 VPSなら何だって使える
585デフォルトの名無しさん (ワッチョイ 835f-+6/9)
2023/05/19(金) 01:52:10.66ID:TiXR4GEz0 >>583
会社のサーバーがさくらのレンサバだから何でもかんでもPHPなんだよね
ごく小規模だからスクラッチ開発が基本だし
レベル低くて仕事で精一杯だしで何か独学するって余裕もないから、まずPHPの手軽さからわざと離れてJSでDOM操作は分けてみようかなぁと
会社のサーバーがさくらのレンサバだから何でもかんでもPHPなんだよね
ごく小規模だからスクラッチ開発が基本だし
レベル低くて仕事で精一杯だしで何か独学するって余裕もないから、まずPHPの手軽さからわざと離れてJSでDOM操作は分けてみようかなぁと
586デフォルトの名無しさん (ワッチョイ 1ba7-cUXk)
2023/05/22(月) 01:29:49.15ID:6n6FPMUf0587デフォルトの名無しさん (ワッチョイ d1a7-Cr01)
2023/06/10(土) 20:37:19.56ID:TSaFGI4o0 WSL2(ubuntu)にLaravelインスコしてみたけど
メモリ8G程度だときっついですね
docker desktopとかwindowsターミナル入れろとかこの辺は
aptでdocker入れたりubuntu直接起動したりすればおkな感じですか?
とりあえずやってみてその方法でもいけたはいけたんですが(メモリも1Gぐらい減った)
ビルドしてるときの表示がバグったりちょっと不安要素がありました
メモリ8G程度だときっついですね
docker desktopとかwindowsターミナル入れろとかこの辺は
aptでdocker入れたりubuntu直接起動したりすればおkな感じですか?
とりあえずやってみてその方法でもいけたはいけたんですが(メモリも1Gぐらい減った)
ビルドしてるときの表示がバグったりちょっと不安要素がありました
588デフォルトの名無しさん (ワッチョイ 8bbb-hEWj)
2023/06/11(日) 08:50:59.31ID:nugYPewD0 メモリも問題だけど、たぶん最大の問題はファイルを配置した場所だと思うよ
・ソースコードをWSL2ディストリビューション領域内に配置する
で大幅に改善すると思う
・ソースコードをWSL2ディストリビューション領域内に配置する
で大幅に改善すると思う
589デフォルトの名無しさん (テテンテンテン MMeb-+QT+)
2023/06/12(月) 08:08:55.93ID:VNkMF7gVM httpリクエストで動的なサイトからデータ取得するのってやっぱり無理なんですかね?javascriptでhtmlが生成されるよなページんんだけど
590デフォルトの名無しさん (ワッチョイ 7930-2rqm)
2023/06/12(月) 10:00:10.61ID:AjUdrP5R0 無理ではない
curlやDOM操作のライブラリ自体は揃ってるんだから、後はあなたが頑張ってそのJavaScriptの動作を真似るだけ
curlやDOM操作のライブラリ自体は揃ってるんだから、後はあなたが頑張ってそのJavaScriptの動作を真似るだけ
591デフォルトの名無しさん (ワッチョイ 7b5f-2rqm)
2023/06/12(月) 10:25:34.03ID:mHRjcInk0 おれなら生成はブラウザにやらせるかな
出来た頃合いを見計らってデータを盗む
出来た頃合いを見計らってデータを盗む
592デフォルトの名無しさん (テテンテンテン MMeb-+QT+)
2023/06/12(月) 10:27:10.81ID:wQ6JiRj1M 例を示していただけませんか
593デフォルトの名無しさん (テテンテンテン MMeb-+QT+)
2023/06/12(月) 10:29:59.61ID:wQ6JiRj1M javascriptは通常ブラウザが実行します。しかしhttpリクエストではブラウザを介さないためjavascript は実行されません。ヘッドレスブラウザなどを使えば動的なコンテンツを取得できますが、わたしの課題はhttpリクエストで動的ページからデータを取得することです
594デフォルトの名無しさん (テテンテンテン MMeb-+QT+)
2023/06/12(月) 10:34:38.95ID:wQ6JiRj1M レスポンスを取得してからjavascriptを一回実行すればいいのかな?そんなことできるのかな
595デフォルトの名無しさん (ワッチョイ 7b5f-2rqm)
2023/06/12(月) 10:41:43.85ID:mHRjcInk0 大変だね
ブラウザ禁止縛りプレイならまあ自分で頑張るしかないね
ていうかphantomjsって開発停止してんだな 知らんかった
ブラウザ禁止縛りプレイならまあ自分で頑張るしかないね
ていうかphantomjsって開発停止してんだな 知らんかった
596デフォルトの名無しさん (テテンテンテン MMeb-+QT+)
2023/06/12(月) 21:30:39.08ID:DY0b1d5xM httpリクエストで動的なサイトからデータ取得するのってやっぱり無理なんですかね?javascriptでhtmlが生成されるよなページんんだけど
597デフォルトの名無しさん (ワッチョイ 8bbb-hEWj)
2023/06/12(月) 21:39:47.58ID:sQEwwMG40 おまえLaravelスレのアラシだろ
うざいよ
うざいよ
598デフォルトの名無しさん (ワッチョイ 7b5f-2rqm)
2023/06/12(月) 22:12:16.13ID:mHRjcInk0 >>596
puppeteerがいいんじゃない?
おれは使ったことないけど、phantomjsのメンテナが
「puppeteerあるならもうphantomjsなんかいらんわ」
って言いだして開発終了したらしいし、確かみてみろ
puppeteerがいいんじゃない?
おれは使ったことないけど、phantomjsのメンテナが
「puppeteerあるならもうphantomjsなんかいらんわ」
って言いだして開発終了したらしいし、確かみてみろ
599デフォルトの名無しさん (テテンテンテン MMeb-+QT+)
2023/06/12(月) 22:24:27.56ID:kqdcKHtBM puppetterというものはヘッドレスブラウザを使えるようにしたライブラリであり、わたしはスクレイピングをしたいわけではありません。わたしの課題はhttpリクエストで動的なサイトからデータを取得することであり、ヘッドレスブラウザを使用してスクレイピングをしたいわけではありません
600デフォルトの名無しさん (テテンテンテン MMeb-+QT+)
2023/06/12(月) 22:37:29.16ID:kqdcKHtBM わたしがヘッドレスブラウザを使わない理由はデータの取得時間がかかるからです。またわたしはデータベースを使用しないことを前提としているので、取得したデータを保持することはありません。つまり度々データを取得することになる場合に都度ヘッドレスブラウザーを走らせる設計は現実的ではありません
601デフォルトの名無しさん (ワッチョイ fbe7-2rqm)
2023/06/13(火) 11:41:46.36ID:zJMyBjWC0 >>600
これが各行ごとに良くわからないな
>データの取得時間がかかるからです
何が原因で取得時間がかかるようになるのか
実測してそんなに差異が出たってコト?
>データベースを使用しないことを前提としているので
DBなんか使わなきゃいいんじゃない?
>度々データを取得することになる
同一データを扱うならキャッシュすればいいんじゃない?
PHPでだってアホに作れば度々データ取得しに行っちゃうと思うよ
>現実的でありません
面倒くささ的にも自前でDOM構築する方が非現実的だよね
これが各行ごとに良くわからないな
>データの取得時間がかかるからです
何が原因で取得時間がかかるようになるのか
実測してそんなに差異が出たってコト?
>データベースを使用しないことを前提としているので
DBなんか使わなきゃいいんじゃない?
>度々データを取得することになる
同一データを扱うならキャッシュすればいいんじゃない?
PHPでだってアホに作れば度々データ取得しに行っちゃうと思うよ
>現実的でありません
面倒くささ的にも自前でDOM構築する方が非現実的だよね
602デフォルトの名無しさん (アウアウアー Sa8b-Seme)
2023/06/13(火) 16:08:55.26ID:Oj3crCHea async awaitとfetch使ってデータ取得すれば良いじゃん
603デフォルトの名無しさん (テテンテンテン MMeb-+QT+)
2023/06/13(火) 18:49:37.74ID:r31gUBK2M httpリクエストとスクレイピングでデータ取得の速度を比較する場合一般的にはhttpリクエストのほうが高速です。またわたしの想定では同一データではなく毎回違うクエリでリクエストすることが予想されます。
604デフォルトの名無しさん (テテンテンテン MMeb-+QT+)
2023/06/13(火) 18:50:18.43ID:r31gUBK2M >>602
具体的にはどのような手順でそれらを使用しますか?
具体的にはどのような手順でそれらを使用しますか?
605デフォルトの名無しさん (テテンテンテン MMeb-+QT+)
2023/06/13(火) 22:21:10.72ID:LrQ+wv81M 単純で簡単なjavascriptでレンダリングされているならいけたかもしれませんがフレームワークを使われていたら解析が困難ですね。やはり無理か
606デフォルトの名無しさん (テテンテンテン MMeb-+QT+)
2023/06/13(火) 22:21:52.68ID:LrQ+wv81M そしてnodejsが使えないのでヘッドレスブラウザも無理と。
607デフォルトの名無しさん (アウアウアー Sa8b-Seme)
2023/06/13(火) 23:39:40.44ID:Oj3crCHea >>604
取得したいサイトのURLとその出力htmlの欲しい部分教えて
取得したいサイトのURLとその出力htmlの欲しい部分教えて
608デフォルトの名無しさん (テテンテンテン MMeb-mVGR)
2023/06/14(水) 02:57:47.74ID:sJAdEXJGM >>607
取得したいサイトは複数ありますがECナビになります。
https://ecnavi.jp/search/?word=%E6%88%91%E3%81%8C%E5%A4%A9%E4%B8%8B
htmlの欲しい部分は表示される案件の部分です。
しかしフレームワークがhtmlをレンダリングされている可能性があり、おそらく解析は困難です。
ajaxからデータを取得するサイトもありましたがcros制限がかかっているため不可です。
ヘッドレスブラウザは環境が構築できないので選択肢には含みません。
わたしはhttpリクエストで動的なサイトのデータを取得するのは無理と判断しました。
取得したいサイトは複数ありますがECナビになります。
https://ecnavi.jp/search/?word=%E6%88%91%E3%81%8C%E5%A4%A9%E4%B8%8B
htmlの欲しい部分は表示される案件の部分です。
しかしフレームワークがhtmlをレンダリングされている可能性があり、おそらく解析は困難です。
ajaxからデータを取得するサイトもありましたがcros制限がかかっているため不可です。
ヘッドレスブラウザは環境が構築できないので選択肢には含みません。
わたしはhttpリクエストで動的なサイトのデータを取得するのは無理と判断しました。
609デフォルトの名無しさん (ワッチョイ 8bbb-hEWj)
2023/06/14(水) 04:20:42.50ID:Jx0dk3g+0 普通に利用規約違反じゃねぇかw
610デフォルトの名無しさん (アウアウウー Sadd-APG/)
2023/06/14(水) 05:35:16.83ID:VFw5jfyla >>587
WSL2, Ubuntu 20/22, VSCode, Windows Terminal, Docker Desktop
VSCodeの拡張機能・Remote Development に、
3つの拡張機能・Remote Container/WSL/SSH が含まれている
日本人が作った、多言語バージョンマネージャーのanyenv。
同様のツールに、asdf もある
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
漏れは、Ruby on Rails をやっているけど、メモリは32〜64GB ほしい
WSL2, Ubuntu 20/22, VSCode, Windows Terminal, Docker Desktop
VSCodeの拡張機能・Remote Development に、
3つの拡張機能・Remote Container/WSL/SSH が含まれている
日本人が作った、多言語バージョンマネージャーのanyenv。
同様のツールに、asdf もある
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
漏れは、Ruby on Rails をやっているけど、メモリは32〜64GB ほしい
611デフォルトの名無しさん (アウアウアー Sa8b-Seme)
2023/06/14(水) 06:54:43.13ID:4pmBicBja >>608
案件って「ポイントアップチャレンジ」の部分?
案件って「ポイントアップチャレンジ」の部分?
612デフォルトの名無しさん (テテンテンテン MMeb-+QT+)
2023/06/14(水) 07:38:40.54ID:dOe183t+M >>611
案件の部分はPCで閲覧していると表示されません。ゲームアプリ案件の場合はユーザーエージェントがモバイルOSである必要があります。
案件の部分はPCで閲覧していると表示されません。ゲームアプリ案件の場合はユーザーエージェントがモバイルOSである必要があります。
613デフォルトの名無しさん (ワッチョイ d1a7-Cr01)
2023/06/15(木) 15:12:03.05ID:pNWnTG3Z0 たかだかバックエンドのWeb開発するだけなのに
メモリ32GBとか要求される異常な時代w
メモリ32GBとか要求される異常な時代w
614デフォルトの名無しさん (スッップ Sd33-wNjT)
2023/06/15(木) 17:34:34.40ID:oe0OZOrwd WSL2で2GB
Chromeで2GB
その他諸々で10GB
Chromeで2GB
その他諸々で10GB
615デフォルトの名無しさん (ワッチョイ 8b63-2rqm)
2023/06/15(木) 17:37:28.87ID:KtHE2I/00 脳みそのメモリーが書き込み不可のエラーになってますし
616デフォルトの名無しさん (ワッチョイ d1a7-Cr01)
2023/06/15(木) 17:51:10.48ID:pNWnTG3Z0 各々アプリが肥大化しすぎてしまって…
minimal構成のも用意してくれればいいんだけどね
XPとか32bitOSが主流だった時代は4GBで十分足りただろうに
まあ今メモリ32GBで1万円ぐらいだから文句いうことでもないんだけど
minimal構成のも用意してくれればいいんだけどね
XPとか32bitOSが主流だった時代は4GBで十分足りただろうに
まあ今メモリ32GBで1万円ぐらいだから文句いうことでもないんだけど
617デフォルトの名無しさん (ワッチョイ 135c-2rqm)
2023/06/15(木) 18:17:52.09ID:jjmsD4tb0 32Gも要求されるって何開発してんの?
618デフォルトの名無しさん (ワッチョイ 8bbb-hEWj)
2023/06/15(木) 18:28:28.13ID:W3FATu2P0 616 じゃないけど、docker とブラウザ立ち上げてたら 16 GBをちょいちょい超えるから 32 GBに増設した
快適だぞ
快適だぞ
619デフォルトの名無しさん (ワッチョイ 135c-2rqm)
2023/06/15(木) 20:46:52.21ID:jjmsD4tb0 快適な環境作りに必要って訳ね
620610 (アウアウウー Sadd-APG/)
2023/06/16(金) 00:02:25.90ID:0+O5qEwBa Windows/Linux(WSL2), ブラウザ、VSCode, Docker
さらに、Ruby on Rails では、複数データベースで並列テストもできるし
さらに、Ruby on Rails では、複数データベースで並列テストもできるし
621デフォルトの名無しさん (ワッチョイ 8b63-2rqm)
2023/06/16(金) 00:06:26.73ID:siRuxcGs0 Ruby厨は呼んでない、巣に帰れ
622デフォルトの名無しさん (ワッチョイ 8b10-JQtP)
2023/06/16(金) 13:32:48.84ID:Y1bNR4pi0 TwitterOAuthに詳しい人がいたら教えてください。
DeveloperPortalでアプリ作成済み、
composer require abraham/twitteroauth
でインストール済みとします。
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
$content = $connection->get("account/verify_credentials");
ではTwitterアカウントの情報が取得できるのですが、
(※app_keyの部分は省いています)
Twitter API v2に対応するために
$connection->setApiVersion('2');
を追加すると取得できません。$contentがNULLになります。
これってTwitterアプリが v2に対応していないからでしょうか?
DeveloperPortalでアプリ作成済み、
composer require abraham/twitteroauth
でインストール済みとします。
$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
$content = $connection->get("account/verify_credentials");
ではTwitterアカウントの情報が取得できるのですが、
(※app_keyの部分は省いています)
Twitter API v2に対応するために
$connection->setApiVersion('2');
を追加すると取得できません。$contentがNULLになります。
これってTwitterアプリが v2に対応していないからでしょうか?
623デフォルトの名無しさん (ワッチョイ 8bbb-hEWj)
2023/06/16(金) 17:45:17.56ID:TyNt7O690624デフォルトの名無しさん (テテンテンテン MM96-DFMs)
2023/06/17(土) 09:44:22.27ID:C4ey1Sw3M addactionがfunctions.phpでは動作するのにカスタムテンプレートでは動作しない理由はなんですか?
625デフォルトの名無しさん (ワッチョイ 5e10-l8k0)
2023/06/18(日) 18:12:02.78ID:h4u0ciKA0 >>623
$content = $connection->get("account/verify_credentials");
ここの指定に問題があるということが掴めました。
ご指摘ありがとうございました。
$content = $connection->get("account/verify_credentials");
ここの指定に問題があるということが掴めました。
ご指摘ありがとうございました。
626デフォルトの名無しさん (ワッチョイ 23a9-gN4b)
2023/06/25(日) 18:20:15.50ID:gM/PAKCH0 php初めてみたもののメンターとか先輩とかいないぼっちなんで無償版のchatGPT使うと
pdoを使ったDBの接続を含めたコードとか、SQLインジェクションの対応とか一瞬で出してくれてありがたい限り
有償版のGPT4ならコード生成は何かGPT3.5と変わるの?
pdoを使ったDBの接続を含めたコードとか、SQLインジェクションの対応とか一瞬で出してくれてありがたい限り
有償版のGPT4ならコード生成は何かGPT3.5と変わるの?
627デフォルトの名無しさん (ワッチョイ 4b63-F8yx)
2023/06/25(日) 18:24:11.05ID:PAO3/SeJ0 寝ている間に君の仕事やってくれる
628デフォルトの名無しさん (ワッチョイ 23a9-gN4b)
2023/06/25(日) 18:40:58.90ID:gM/PAKCH0 それが本当なら指示のプロンプトがすごいことになりそう
実際のところ、ファイルを分けたCRUDなんて1回のプロンプトで生成とかできるんだろうか
どこまでならできるとか、ここはさすがにできないとか情報があるサイトがあれば教えていただければ嬉しいです
実際のところ、ファイルを分けたCRUDなんて1回のプロンプトで生成とかできるんだろうか
どこまでならできるとか、ここはさすがにできないとか情報があるサイトがあれば教えていただければ嬉しいです
629デフォルトの名無しさん (ワッチョイ 955f-WUpn)
2023/06/25(日) 19:17:12.98ID:XgY7oRFd0 次のコードをクラスみたいに書いて?
→コンストラクタとメソッドに書き換えてくれる
ありがてぇ、関数群も提示するとそれに合わせてチューニングしてくれる
→コンストラクタとメソッドに書き換えてくれる
ありがてぇ、関数群も提示するとそれに合わせてチューニングしてくれる
630デフォルトの名無しさん (ワッチョイ 4bf8-cPIU)
2023/06/25(日) 19:21:55.03ID:i7rMe9Iv0 知ってるコードで書いて
これをphpに移植したいというだけでほぼできる
これをphpに移植したいというだけでほぼできる
631デフォルトの名無しさん (ワッチョイ 4bbb-wJdI)
2023/06/25(日) 22:54:48.63ID:lataiSU20 君は今非常に危険なところにいます
phpのpdoは非常に厄介なんですが、それを理解してません
「SQLインジェクションの対応とか一瞬で」と言ってるけど、それは本当?
たとえば、
$pdo = new PDO('mysql:dbname=test;host=localhost');
なんて提示されて採用した場合、脆弱な箇所ができる可能性があるの理解してる?
ChatGPTの提示するコードは自分の理解できている範囲以外は危険だと思って検証しないと危ないよ
phpのpdoは非常に厄介なんですが、それを理解してません
「SQLインジェクションの対応とか一瞬で」と言ってるけど、それは本当?
たとえば、
$pdo = new PDO('mysql:dbname=test;host=localhost');
なんて提示されて採用した場合、脆弱な箇所ができる可能性があるの理解してる?
ChatGPTの提示するコードは自分の理解できている範囲以外は危険だと思って検証しないと危ないよ
632デフォルトの名無しさん (ワッチョイ 23a9-gN4b)
2023/06/26(月) 02:27:13.68ID:0+rAUtlj0 >>631
$pdo = new PDO('mysql:dbname=test;host=localhost');
クエリではなく、この時点で見た感じとしては正直わからんです
chatGPTは
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_username, $db_password);
binValueなども使ったものを提示していて、実際に動作しているのね。
pdoの引数に各変数があるぐらいで何かしらセキュリティに問題があるとは思わなかったんだけど、この例ではまずい点はあるの?
$pdo = new PDO('mysql:dbname=test;host=localhost');
クエリではなく、この時点で見た感じとしては正直わからんです
chatGPTは
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_username, $db_password);
binValueなども使ったものを提示していて、実際に動作しているのね。
pdoの引数に各変数があるぐらいで何かしらセキュリティに問題があるとは思わなかったんだけど、この例ではまずい点はあるの?
633デフォルトの名無しさん (ワッチョイ 4bbb-wJdI)
2023/06/26(月) 05:54:16.49ID:xls0AJJa0 PDO を使用する際、アプリケーションとしての文字コードを指定できる箇所は new PDO() 内のみです
ここで正しくアプリケーションの文字列を指定していない場合、アプリケーションとDBの間で文字コードに差異が出る可能性が高く、それ起因の脆弱性が発生する可能性があります
よく知られた例としては 5c 問題があり、例えば上記と "SET NAMES sjis"、動的プレースホルダのセットで、プレースホルダをすり抜ける脆弱性が発生します
ここで正しくアプリケーションの文字列を指定していない場合、アプリケーションとDBの間で文字コードに差異が出る可能性が高く、それ起因の脆弱性が発生する可能性があります
よく知られた例としては 5c 問題があり、例えば上記と "SET NAMES sjis"、動的プレースホルダのセットで、プレースホルダをすり抜ける脆弱性が発生します
634デフォルトの名無しさん (ワッチョイ 23a9-gN4b)
2023/06/26(月) 06:12:00.13ID:0+rAUtlj0 >>633
ありがとう、そういうことがあるのね。
自分がchatGPTに依頼した10回に1回ぐらいの割合で
$dsn = "mysql:host=$host;dbname=$db;charset=utf8mb4";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
];
try {
$pdo = new PDO($dsn, $user, $password, $options);
があったので、これからはcharsetを明示するか意識しておきます。
知らないことを伝えられて動いたら全面的に信頼してしまうのも良く無いので、完全では無いことを意識しておきます
ありがとう、そういうことがあるのね。
自分がchatGPTに依頼した10回に1回ぐらいの割合で
$dsn = "mysql:host=$host;dbname=$db;charset=utf8mb4";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
];
try {
$pdo = new PDO($dsn, $user, $password, $options);
があったので、これからはcharsetを明示するか意識しておきます。
知らないことを伝えられて動いたら全面的に信頼してしまうのも良く無いので、完全では無いことを意識しておきます
635デフォルトの名無しさん (ワッチョイ b502-1El8)
2023/06/26(月) 10:06:12.93ID:kBW+dErx0 どうしてそんなにChatGPTにこだわるんだ
636デフォルトの名無しさん (ワッチョイ 1be7-F8yx)
2023/06/26(月) 14:10:10.33ID:RpzhtkjJ0 流行りだからね
637デフォルトの名無しさん (ワッチョイ 955f-WUpn)
2023/06/27(火) 01:40:25.23ID:BUGmgo620 RHELの件でこのスレ的に問題になりそうなことはありますか?
https://www.redhat.com/en/blog/furthering-evolution-centos-stream?sc_cid=701f2000000tyBjAAI
> CentOS Stream will now be the sole repository for public RHEL-related source code releases.
https://www.redhat.com/en/blog/furthering-evolution-centos-stream?sc_cid=701f2000000tyBjAAI
> CentOS Stream will now be the sole repository for public RHEL-related source code releases.
638デフォルトの名無しさん (ワッチョイ 8da7-0Dh1)
2023/06/29(木) 01:16:30.55ID:IOgTB2mJ0 コミュニティ無視したことやって分裂すると
その系譜はもう長らくは信用されないので
CentOSが死んだ時点で大方はUbuntuに移ったのでは
このスレ的に必要なのは長期サポートだしね
その系譜はもう長らくは信用されないので
CentOSが死んだ時点で大方はUbuntuに移ったのでは
このスレ的に必要なのは長期サポートだしね
639デフォルトの名無しさん (ワッチョイ d3db-fXPZ)
2023/07/01(土) 23:56:45.93ID:qg8w7WVg0 PHPを始めたばかりのものなのですが
640デフォルトの名無しさん (ワッチョイ d3db-fXPZ)
2023/07/01(土) 23:58:14.54ID:qg8w7WVg0 間違えて書ききる前に投稿してしまいました
PHPが無料サービスの範疇で動かせれるレンタルサーバーってあるのでしょうか?
HTMLは過去に使った事があったレベルでHTML自体久しぶりなので今どういうサービスがよいものかもわかっていません
PHPが無料サービスの範疇で動かせれるレンタルサーバーってあるのでしょうか?
HTMLは過去に使った事があったレベルでHTML自体久しぶりなので今どういうサービスがよいものかもわかっていません
641デフォルトの名無しさん (ワッチョイ 06f8-1X2b)
2023/07/02(日) 19:31:28.47ID:gdoAp3Jw0 むしろ殆どphp動くだろ
rubyならともかく
rubyならともかく
642デフォルトの名無しさん (ワッチョイ 4f5f-+5O0)
2023/07/02(日) 20:33:28.61ID:QFPeETi70 レンタルサーバーは基本的にMySQLとPHP動かせるようにしてるから
WordPress入れられるように
WordPress入れられるように
643デフォルトの名無しさん (ブーイモ MM8e-D/Rs)
2023/07/05(水) 12:23:56.04ID:BSe/7cdeM644デフォルトの名無しさん (ワッチョイ 86bb-p0MK)
2023/07/05(水) 17:36:49.07ID:FFK7TFKZ0 >>643
調べりゃわかるけど、バグじゃない
charsetの設定が効かなかったバージョンがあるからそれはバグとみなしても良いかもしれないけど、PHP5.3.7以下とか随分前の話
文字列の連結使って SQL 文作っちゃダメとかと同じ知ってないとダメなセキュリティ知識だよ
調べりゃわかるけど、バグじゃない
charsetの設定が効かなかったバージョンがあるからそれはバグとみなしても良いかもしれないけど、PHP5.3.7以下とか随分前の話
文字列の連結使って SQL 文作っちゃダメとかと同じ知ってないとダメなセキュリティ知識だよ
645デフォルトの名無しさん (ブーイモ MM5b-D/Rs)
2023/07/05(水) 18:51:56.66ID:VuPZbF0BM >>644
デフォルトでなんちゃってprepared statementが使われる時点でセキュリティ的にはバグなんだよね
PDO特有の問題を一般的なセキュリティ知識と同列に語ったらダメだよ
文字列連結だって適切にエスケープ出来れば問題はないわけだけどデフォルトでそんな脆弱な処理をするライブラリがあったら頭おかしいと思うでしょ
デフォルトでなんちゃってprepared statementが使われる時点でセキュリティ的にはバグなんだよね
PDO特有の問題を一般的なセキュリティ知識と同列に語ったらダメだよ
文字列連結だって適切にエスケープ出来れば問題はないわけだけどデフォルトでそんな脆弱な処理をするライブラリがあったら頭おかしいと思うでしょ
646デフォルトの名無しさん (ワッチョイ 86bb-p0MK)
2023/07/05(水) 19:39:41.44ID:FFK7TFKZ0 >>645
なんか、無茶苦茶だねぇ
まず、
> 15年近く脆弱性関連のバグが放置されてるのは凄いね
これが全く認識違いだったってことは理解できた?
現在のphpではcharsetをPDOコンストラクタ内のDSNで設定してあげることで、アプリとDBの間の文字コードにずれが発生することがなくなり、意図した通りの動作をさせることができる
> デフォルトでなんちゃってprepared statementが使われる時点でセキュリティ的にはバグなんだよね
全然話が変わってるけど、なんでこんな話が出てきたの?
動的プレースホルダをデフォルトとして採用することをバグと呼ぶ人は見たこと無いけど、たしかにセキュリティ屋から見ると好ましくはない
ただ、ネットワークレイテンシを考えると非常に合理的なので、それほど悪い選択ではないと思う
顕在化した脆弱性があるわけでもないし現在においてはアプリとDBをutf-8で統一することも容易なので、正しくアプリケーションの性格に合わせて選択すればよいだけの話だよ
なんか、無茶苦茶だねぇ
まず、
> 15年近く脆弱性関連のバグが放置されてるのは凄いね
これが全く認識違いだったってことは理解できた?
現在のphpではcharsetをPDOコンストラクタ内のDSNで設定してあげることで、アプリとDBの間の文字コードにずれが発生することがなくなり、意図した通りの動作をさせることができる
> デフォルトでなんちゃってprepared statementが使われる時点でセキュリティ的にはバグなんだよね
全然話が変わってるけど、なんでこんな話が出てきたの?
動的プレースホルダをデフォルトとして採用することをバグと呼ぶ人は見たこと無いけど、たしかにセキュリティ屋から見ると好ましくはない
ただ、ネットワークレイテンシを考えると非常に合理的なので、それほど悪い選択ではないと思う
顕在化した脆弱性があるわけでもないし現在においてはアプリとDBをutf-8で統一することも容易なので、正しくアプリケーションの性格に合わせて選択すればよいだけの話だよ
647デフォルトの名無しさん (ワッチョイ 0ee7-hRAP)
2023/07/06(木) 11:41:34.33ID:us421T2z0 面倒な人が絡んできてるね・・・
仕様バグだろうとバグはバグよ
仕様バグだろうとバグはバグよ
648デフォルトの名無しさん (ワッチョイ 0663-hRAP)
2023/07/06(木) 11:46:42.56ID:5cWvOTk60 脆弱性は、設計上のバグ
知ってないとダメというのは、バグ回避のテクニック
知ってないとダメというのは、バグ回避のテクニック
649デフォルトの名無しさん (ワッチョイ 86bb-p0MK)
2023/07/06(木) 12:43:03.10ID:KqeQuq1k0650デフォルトの名無しさん (スップ Sd22-+5O0)
2023/07/06(木) 18:00:41.52ID:hqQEAg+3d 個人的にはメール送信関係でヘッダー7ビット文字に変えるのがなんかもやもやする
昔のソフトだと7ビットじゃないとダメってのはわかるんだけどUTF-8でもいいじゃねーかってなる
昔のソフトだと7ビットじゃないとダメってのはわかるんだけどUTF-8でもいいじゃねーかってなる
651デフォルトの名無しさん (ワッチョイ 7f7b-gGH9)
2023/07/06(木) 22:27:39.58ID:CUYn8xPf0 >>647
勘違いしているのはお前で、一般的にはそれはバグとは言わない。
同様の件なら踏切や横断歩道もバグになる。勿論高架や歩道橋にするべきではあるが。
昨年の観光バス横転事故(フェード現象らしい)もバグではなくブレーキの仕様だ。仕様バグでもない。
ホームドアもそれなりに普及して、
あらゆる物がある程度デタラメな操作(=ホームの端を歩く)しても安全になっては来ているが、
素人がどんなデタラメをやっても安全とはなってないし、ならない。
プログラミングに関しては今後とも「正しい操作をした場合に正しく動く」でしかないだろうよ。
不親切なのはその通りだし、改善はしていくだろうけども。
>>650
公式見る限りPHPからは気にする必要なさそうだが違うのか?
なおutf-8も8bit使ってるから駄目だと思うぞ。
今更8bitが通らない環境なんてないし、有ったとしてもそんなところにメール出してないのも事実だが。
IPv6みたいに誰かが音頭取って更新を促さない限り無理だが、今のところ聞いたこと無いね。
勘違いしているのはお前で、一般的にはそれはバグとは言わない。
同様の件なら踏切や横断歩道もバグになる。勿論高架や歩道橋にするべきではあるが。
昨年の観光バス横転事故(フェード現象らしい)もバグではなくブレーキの仕様だ。仕様バグでもない。
ホームドアもそれなりに普及して、
あらゆる物がある程度デタラメな操作(=ホームの端を歩く)しても安全になっては来ているが、
素人がどんなデタラメをやっても安全とはなってないし、ならない。
プログラミングに関しては今後とも「正しい操作をした場合に正しく動く」でしかないだろうよ。
不親切なのはその通りだし、改善はしていくだろうけども。
>>650
公式見る限りPHPからは気にする必要なさそうだが違うのか?
なおutf-8も8bit使ってるから駄目だと思うぞ。
今更8bitが通らない環境なんてないし、有ったとしてもそんなところにメール出してないのも事実だが。
IPv6みたいに誰かが音頭取って更新を促さない限り無理だが、今のところ聞いたこと無いね。
652デフォルトの名無しさん (ワッチョイ 0663-hRAP)
2023/07/06(木) 22:53:42.84ID:5cWvOTk60 素人が脆弱性を突いてくる説
653デフォルトの名無しさん (アウアウウー Sabb-JtsX)
2023/07/07(金) 02:29:15.80ID:u6t7w3p4a Java は、ログ機能にセキュリティーホールがあって、
Edge から、パスワードを抜かれますと報告が来た
セキュリティー更新せず、ほったらかしのサイトが山ほどある
Edge から、パスワードを抜かれますと報告が来た
セキュリティー更新せず、ほったらかしのサイトが山ほどある
654デフォルトの名無しさん (ワッチョイ 86bb-p0MK)
2023/07/07(金) 07:55:50.16ID:84NzU0uw0655デフォルトの名無しさん (ワッチョイ 86bb-p0MK)
2023/07/07(金) 23:44:08.79ID:84NzU0uw0 >>650
なんかちょっと勘違いしてる気がする
昔のブックマークから拾い上げてみたんで読んでみて
https://blog.tmtms.net/entry/2014/12/06/postfix-8bit
なんかちょっと勘違いしてる気がする
昔のブックマークから拾い上げてみたんで読んでみて
https://blog.tmtms.net/entry/2014/12/06/postfix-8bit
656デフォルトの名無しさん (ワッチョイ ce8b-/jfo)
2023/07/17(月) 13:54:48.52ID:pZjB1XDE0 テスト
657デフォルトの名無しさん (ワッチョイ 9b5f-5LlG)
2023/07/18(火) 14:26:46.55ID:2j+5uZca0 ネットで見つけた掲示板のサンプルがクソでした
更新ボタン押すと同じ書き込みが繰り返されてしまうのです
どうすれば解決しますか?
ほんとプログラミングはクソ記事多くて困りますね
え?クソはおまえだ?
ごもっとも
更新ボタン押すと同じ書き込みが繰り返されてしまうのです
どうすれば解決しますか?
ほんとプログラミングはクソ記事多くて困りますね
え?クソはおまえだ?
ごもっとも
658デフォルトの名無しさん (アウアウウー Sab5-5LlG)
2023/07/19(水) 05:05:41.80ID:mXhymdyPa jQuery なら、
<button id="btn_1">
<span class="show-when-enabled">送信</span>
<span class="show-when-disabled">送信中...</span>
</button>
<button id="btn_2">送信ボタンをenable にする</button>
<style>
button .show-when-enabled { display: initial; }
button[disabled] .show-when-enabled { display: none; }
button .show-when-disabled { display: none; }
button[disabled] .show-when-disabled { display: initial; }
</style>
<scr@ipt>
$( function ( ) {
$( '#btn_1' ).on( 'click', function ( event ) {
$( this ).prop( 'disabled', true ); // disable にする
} );
$( '#btn_2' ).on( 'click', function ( event ) {
$( '#btn_1' ).prop( 'disabled', false ); // enable にする
} );
} );
</scr@ipt>
<button id="btn_1">
<span class="show-when-enabled">送信</span>
<span class="show-when-disabled">送信中...</span>
</button>
<button id="btn_2">送信ボタンをenable にする</button>
<style>
button .show-when-enabled { display: initial; }
button[disabled] .show-when-enabled { display: none; }
button .show-when-disabled { display: none; }
button[disabled] .show-when-disabled { display: initial; }
</style>
<scr@ipt>
$( function ( ) {
$( '#btn_1' ).on( 'click', function ( event ) {
$( this ).prop( 'disabled', true ); // disable にする
} );
$( '#btn_2' ).on( 'click', function ( event ) {
$( '#btn_1' ).prop( 'disabled', false ); // enable にする
} );
} );
</scr@ipt>
659デフォルトの名無しさん (オッペケ Sr39-4jI1)
2023/07/19(水) 08:14:40.70ID:sz/H8H6wr Ruby病(その割に技術は中の下レベル)の人は
jquery推しでもあるのか
Railsとvueやreactを同時に使う例は幾つかあるな
phpだとlaravelはvueとの相性抜群だがreactは今一つ
CakePHPだとどっちも簡単ではないか
CakePHPはJquery使った例が多いなあ
Pythonのdjangoはvueもreactも実装例豊富
Javaのtomcatはvueは何とかなるがreactだとやることも限られてる?というレポートがある
Goは何と相性いいかな
jquery推しでもあるのか
Railsとvueやreactを同時に使う例は幾つかあるな
phpだとlaravelはvueとの相性抜群だがreactは今一つ
CakePHPだとどっちも簡単ではないか
CakePHPはJquery使った例が多いなあ
Pythonのdjangoはvueもreactも実装例豊富
Javaのtomcatはvueは何とかなるがreactだとやることも限られてる?というレポートがある
Goは何と相性いいかな
660デフォルトの名無しさん (ワッチョイ 9b5f-5LlG)
2023/07/20(木) 13:07:15.80ID:qnO4Vavr0 printとechoの違いがわかりません
ぐぐっても説明が下手な文章ばかりで理解できません
理数系の人間は文章の書き方も少しは勉強したほうがいいのではないでしょうか?
え?勉強しろはおまえだ?
ごもっとも
ぐぐっても説明が下手な文章ばかりで理解できません
理数系の人間は文章の書き方も少しは勉強したほうがいいのではないでしょうか?
え?勉強しろはおまえだ?
ごもっとも
661デフォルトの名無しさん (ワッチョイ b6e7-/jfo)
2023/07/20(木) 15:39:21.26ID:x9stnx4l0662デフォルトの名無しさん (ワッチョイ 7349-9/0y)
2023/07/20(木) 16:19:17.66ID:hZ7hjedN0 もちろん、お手伝いします!
PHPにおける`print`と`echo`の違いについて要約して説明しますね。
- `print`: `print`は関数ではなく、言語構造です。値を出力するために使用されます。
値を出力した後、1を返します。また、引数を一つしか受け付けないという制約があります。例:`print "Hello, world!";`
- `echo`: `echo`は言語構造または関数として使用できます。値を出力するためにも使用されますが、`print`とは異なり、返り値を持ちません。
カンマを使って複数の引数を受け取ることができます。例:`echo "Hello", " ", "world!";`
どちらも基本的には同じように動作しますが、`echo`がやや効率的で多くの引数を出力する場合にわずかに速い場合があります。
理解に役立てば幸いです!もし他に質問があればどうぞお知らせください。
PHPにおける`print`と`echo`の違いについて要約して説明しますね。
- `print`: `print`は関数ではなく、言語構造です。値を出力するために使用されます。
値を出力した後、1を返します。また、引数を一つしか受け付けないという制約があります。例:`print "Hello, world!";`
- `echo`: `echo`は言語構造または関数として使用できます。値を出力するためにも使用されますが、`print`とは異なり、返り値を持ちません。
カンマを使って複数の引数を受け取ることができます。例:`echo "Hello", " ", "world!";`
どちらも基本的には同じように動作しますが、`echo`がやや効率的で多くの引数を出力する場合にわずかに速い場合があります。
理解に役立てば幸いです!もし他に質問があればどうぞお知らせください。
663デフォルトの名無しさん (ワッチョイ 30a9-hELD)
2023/07/20(木) 16:56:18.77ID:gjufsyfM0 横だがGPT-4に小学生にでもわかるよう聞いてみた
---
それらの違いを小学生にも分かるように説明すると、
「printとechoは友達と話す方法だと考えてみてください。
print君は一度に一つのことしか話せないけど、その後に自分がちゃんと話したかどうか(つまり1という値)を教えてくれます。
一方、echo君は一度にたくさんのことを話すことができますが、自分がちゃんと話したかどうかは教えてくれません。
だから、それぞれの友達(つまり命令)は自分が何をしたいかによって選ぶといいです。」
---
それらの違いを小学生にも分かるように説明すると、
「printとechoは友達と話す方法だと考えてみてください。
print君は一度に一つのことしか話せないけど、その後に自分がちゃんと話したかどうか(つまり1という値)を教えてくれます。
一方、echo君は一度にたくさんのことを話すことができますが、自分がちゃんと話したかどうかは教えてくれません。
だから、それぞれの友達(つまり命令)は自分が何をしたいかによって選ぶといいです。」
664printとechoの違い (ワッチョイ 9b5f-5LlG)
2023/07/20(木) 18:33:40.90ID:qnO4Vavr0 なるほどよくわかりました
サイト記事書く人は専門用語ばかり使って、初心者につたわらない文章しか書けないので
ここの解説はとてもわかりやすいです
ググって検索に出てくる邪魔な解説は消えてなくなれですね
え?おまえが消えてなくなれって?
ごもっとも
サイト記事書く人は専門用語ばかり使って、初心者につたわらない文章しか書けないので
ここの解説はとてもわかりやすいです
ググって検索に出てくる邪魔な解説は消えてなくなれですね
え?おまえが消えてなくなれって?
ごもっとも
665デフォルトの名無しさん (スップ Sd94-5Rmv)
2023/07/20(木) 21:59:07.70ID:WRqu6H4qd printが1を返してくれるとしても、それが役立つ場面がわからない
どんな場面で役立つのだろうか
どんな場面で役立つのだろうか
666デフォルトの名無しさん (ワッチョイ e75f-Nw73)
2023/07/20(木) 23:11:22.17ID:zS5YoEfg0 >>660
アホみたいな文章書いてる暇あったら公式リファレンス読んどけ、多分一番しっかり書かれてるから
アホみたいな文章書いてる暇あったら公式リファレンス読んどけ、多分一番しっかり書かれてるから
667デフォルトの名無しさん (ワッチョイ 9b5f-5LlG)
2023/07/21(金) 23:03:50.96ID:hNucA2BH0668デフォルトの名無しさん (ワッチョイ 6cac-tCaK)
2023/07/21(金) 23:58:06.25ID:GYeyeRXL0 専門のことしてるのに専門用語を理解しようとしないのはどうかと思うぞ
噛み砕いて教えるのは、相手が専門外のお客様(生徒含む)のときくらいだろ
噛み砕いて教えるのは、相手が専門外のお客様(生徒含む)のときくらいだろ
669デフォルトの名無しさん (ワッチョイ a77b-XNrL)
2023/07/22(土) 00:30:59.57ID:HIe68VRv0670デフォルトの名無しさん (アウアウウー Sa2b-/4N/)
2023/07/22(土) 01:45:53.25ID:fDI/VGosa print は言語構造だとか、こんな訳の分からない言語をやっても無駄。
特に初心者は、情弱ビジネスに引っ掛かった。
素人に、PHPを勧める香具師が一杯いる
YouTube で有名な雑食系エンジニア・KENTA は、
PHP, Scala をオワコン認定して、
初心者のキャリアパスは、Rails → Go だけと言ってる
ガーシーのサロンで使っていたMastodon は、
PHPから、Ruby on Rails 6 に変わった
米国年収でもRubyは、Go/Rust/Elixir の3大言語を超えた。
PHP, Dart は生活保護レベル
Ruby, Elixir : 9.3 万ドル
Go : 8.9
Rust : 8.7
多くの言語 : 6.5〜7
PHP : 5
Dart : 4.4
100人の言う事よりも、KENTAの言う事の方が、間違いなく正しい!
なぜかというと、100人よりも研究しているから
特に初心者は、情弱ビジネスに引っ掛かった。
素人に、PHPを勧める香具師が一杯いる
YouTube で有名な雑食系エンジニア・KENTA は、
PHP, Scala をオワコン認定して、
初心者のキャリアパスは、Rails → Go だけと言ってる
ガーシーのサロンで使っていたMastodon は、
PHPから、Ruby on Rails 6 に変わった
米国年収でもRubyは、Go/Rust/Elixir の3大言語を超えた。
PHP, Dart は生活保護レベル
Ruby, Elixir : 9.3 万ドル
Go : 8.9
Rust : 8.7
多くの言語 : 6.5〜7
PHP : 5
Dart : 4.4
100人の言う事よりも、KENTAの言う事の方が、間違いなく正しい!
なぜかというと、100人よりも研究しているから
671デフォルトの名無しさん (ワッチョイ e7a7-rRCM)
2023/07/22(土) 02:11:03.31ID:tE4RMivO0 Rubyistが金持ちだかなんだか知らないけど
こんなとこでキチガイみたいなレス続けてるお前の年収なんかたかがしれてんだから
人の心配なんてしないで自分の心配しとけな
こんなとこでキチガイみたいなレス続けてるお前の年収なんかたかがしれてんだから
人の心配なんてしないで自分の心配しとけな
672デフォルトの名無しさん (ワッチョイ bf5f-onGn)
2023/07/22(土) 15:06:33.58ID:UxG3EoFv0 >>667
本当に「読んだ」のか? お前はただ「見た」「眺めた」だけじゃあないのか?
わからないならわかるまで読め。 わからない単語はすべて検索しろ。 100回読め
中学高校で嫌になるほど勉強の仕方を勉強してきてるんだから、そのくらいはやれ
本当に「読んだ」のか? お前はただ「見た」「眺めた」だけじゃあないのか?
わからないならわかるまで読め。 わからない単語はすべて検索しろ。 100回読め
中学高校で嫌になるほど勉強の仕方を勉強してきてるんだから、そのくらいはやれ
673デフォルトの名無しさん (スップ Sd8a-VFKZ)
2023/08/03(木) 13:33:47.77ID:7OoRnNP6d 格納するDBのカラムの型がintの場合に、POSTデータの初期化処理は
次のどちらが良いのでしょうか?
$value = isset($_POST['value']) ? $_POST['value'] : '';//空文字
$value = isset($_POST['value']) ? $_POST['value'] : 0;//整数0
前者は、ポストデータは文字列なので空文字で初期化しています
後者は、DBのカラムがintなので整数0で初期化しています
どちらもその後にデータチェック及びサニタイズはします
次のどちらが良いのでしょうか?
$value = isset($_POST['value']) ? $_POST['value'] : '';//空文字
$value = isset($_POST['value']) ? $_POST['value'] : 0;//整数0
前者は、ポストデータは文字列なので空文字で初期化しています
後者は、DBのカラムがintなので整数0で初期化しています
どちらもその後にデータチェック及びサニタイズはします
674デフォルトの名無しさん (スップ Sd8a-VFKZ)
2023/08/03(木) 13:55:32.28ID:7OoRnNP6d 補足です
$_POST['value']には、整数が入力されることを想定しています
よろしくお願いします
$_POST['value']には、整数が入力されることを想定しています
よろしくお願いします
675デフォルトの名無しさん (ワッチョイ 0ba7-IjPS)
2023/08/03(木) 15:48:42.48ID:zTGCMZ+m0 格納するDBのカラムにデフォルト値がセットされていればデフォルト値に合わせるか何も入れない
セットされていないなら入力がmustってことなので
とりあえず格納が可能になるよう0にしてしまうとかいう発想がおかしいので入力しろとエラーを返すべき
セットされていないなら入力がmustってことなので
とりあえず格納が可能になるよう0にしてしまうとかいう発想がおかしいので入力しろとエラーを返すべき
676デフォルトの名無しさん (ワッチョイ 0ba7-IjPS)
2023/08/03(木) 15:50:08.52ID:zTGCMZ+m0 not null制約かどうかは書いてなかったね
まあそのカラムの性質によるとしか
まあそのカラムの性質によるとしか
677デフォルトの名無しさん (スップ Sd8a-VFKZ)
2023/08/03(木) 16:23:03.22ID:7OoRnNP6d >>675
ありがとうございます
>>デフォルト値に合わせるか「何も入れない」
>>格納が可能になるよう0にしてしまうとかいう発想がおかしいので「入力しろとエラーを返すべき」
この2点を考慮すると、空文字で初期化するのが正しいようですね
POSTデータが空なのだから、空文字で初期化して、データチェックで
空の場合をエラーとして弾くのが正解な気がしてきました
ありがとうございます
>>デフォルト値に合わせるか「何も入れない」
>>格納が可能になるよう0にしてしまうとかいう発想がおかしいので「入力しろとエラーを返すべき」
この2点を考慮すると、空文字で初期化するのが正しいようですね
POSTデータが空なのだから、空文字で初期化して、データチェックで
空の場合をエラーとして弾くのが正解な気がしてきました
678デフォルトの名無しさん (スップ Sd8a-kJnY)
2023/08/03(木) 19:00:43.99ID:boco8q6Md POSTの必須チェックはemptyで十分(暴論)
679デフォルトの名無しさん (スップ Sd8a-VFKZ)
2023/08/03(木) 20:11:24.13ID:7OoRnNP6d $value = $_POST['value'];
これだと値がセットされていない場合にNoticeエラーが出るんですよね
それで、emptyやissetが使わていたように思います
もっとも最近では、filter_inputが推奨されているようで
すでにfilter_inputが主流になっているのでしょうか
これだと値がセットされていない場合にNoticeエラーが出るんですよね
それで、emptyやissetが使わていたように思います
もっとも最近では、filter_inputが推奨されているようで
すでにfilter_inputが主流になっているのでしょうか
680デフォルトの名無しさん (ワッチョイ be63-1j9t)
2023/08/03(木) 20:29:00.58ID:K+C7K/360 どうやるかは色々流儀があると思うけれど
何故そうするのかを知っておくことは大事だと思う
何故そうするのかを知っておくことは大事だと思う
681デフォルトの名無しさん (ワッチョイ 2a01-58Wo)
2023/08/03(木) 21:42:47.27ID:NRjs0yDQ0 フォームの項目が動的に変化するタイプとかで
そもそもクライアントから送信されてない項目を参照しようとしてるんじゃないの?
そもそもクライアントから送信されてない項目を参照しようとしてるんじゃないの?
682デフォルトの名無しさん (ワッチョイ aba7-SCbl)
2023/08/07(月) 17:05:23.27ID:g4YHb1dg0 >すでにfilter_inputが主流になっているのでしょうか
PHP5.3あたりではまだissetが当たり前だったけど
PHP5.4あたりからfilter_inputの記事が多くなった気がしたな
PHP7になってからはnull合体演算子(??)もissetの代替であげられるけど
filter_inputがよく使われてる気がする
高精度ではないけどそれでいいなら用意されてるフィルタである程度バリデーションできるし
なんならコールバックのユーザ定義関数でもフィルタリングできるし
あまりごちゃごちゃ書かないですむメリットもある
PHP5.3あたりではまだissetが当たり前だったけど
PHP5.4あたりからfilter_inputの記事が多くなった気がしたな
PHP7になってからはnull合体演算子(??)もissetの代替であげられるけど
filter_inputがよく使われてる気がする
高精度ではないけどそれでいいなら用意されてるフィルタである程度バリデーションできるし
なんならコールバックのユーザ定義関数でもフィルタリングできるし
あまりごちゃごちゃ書かないですむメリットもある
683デフォルトの名無しさん (ワッチョイ df10-D1BR)
2023/08/08(火) 16:45:09.01ID:P3IKMInR0 でも、AIに質問するとissetの例を出してくるよ
684デフォルトの名無しさん (スップ Sdd7-a4kh)
2023/08/08(火) 21:06:35.11ID:InM7lKihd >>682
ありがとうございます。とても参考になりました
公式サイトをしっかり読めばいいのだけど、個々の文法の解説がメインで
流れのあるチュートリアルとしては弱いんだよね
もちろん公式サイトの充実ぶりにはとても感謝しています
PHP8に準拠したお手本となるようなPHP本が出るといいなぁ
ありがとうございます。とても参考になりました
公式サイトをしっかり読めばいいのだけど、個々の文法の解説がメインで
流れのあるチュートリアルとしては弱いんだよね
もちろん公式サイトの充実ぶりにはとても感謝しています
PHP8に準拠したお手本となるようなPHP本が出るといいなぁ
685デフォルトの名無しさん (ワッチョイ 915f-OkRc)
2023/08/10(木) 16:13:43.00ID:+eZjCzx+0 それぞれのメリットを教えてくれ
AI:
filter_inputとissetを使用したバリデーションには、それぞれ異なる目的とメリットがあります。以下にそれぞれの関数の特徴とメリットを挙げてみます。
1. filter_input:
目的:
filter_inputは、入力データ(例:POSTやGETからのデータ)をバリデーションおよびサニタイズするための関数です。
メリット:
サニタイズ: さまざまなフィルタを使って、データをクリーンにすることができます。例えば、文字列としてのメールアドレスを取得することができます。
バリデーション: 予期しないデータや危険なデータを防ぐための具体的なルールを適用することができます。
セキュリティ: filter_inputは、セキュリティ上の理由から直接的なスーパーグローバル変数($_POSTや$_GET)へのアクセスを回避します。
2. isset:
目的:
issetは、変数がセットされているかどうかをチェックするための関数です。変数がセットされており、NULLでない場合にTRUEを返します。
メリット:
シンプル: コードの意図が明確で、変数が存在するかどうかを簡単にチェックできます。
パフォーマンス: issetは非常に高速で、ほとんどの場面でのオーバーヘッドがありません。
NULLチェック: 変数がNULLかどうかも同時にチェックします。
結論:
issetは変数の存在をチェックする場面で主に使用され、filter_inputは変数の値を検証・サニタイズする場面で使用されます。
セキュリティや入力のバリデーションが関わる場面では、filter_inputの使用が推奨されます。一方、単純に変数の存在を確認したい場合や、パフォーマンスが重要な場面では、issetの使用が適しています。
状況やニーズに応じて、適切な関数や方法を選択することが大切です。
AI:
filter_inputとissetを使用したバリデーションには、それぞれ異なる目的とメリットがあります。以下にそれぞれの関数の特徴とメリットを挙げてみます。
1. filter_input:
目的:
filter_inputは、入力データ(例:POSTやGETからのデータ)をバリデーションおよびサニタイズするための関数です。
メリット:
サニタイズ: さまざまなフィルタを使って、データをクリーンにすることができます。例えば、文字列としてのメールアドレスを取得することができます。
バリデーション: 予期しないデータや危険なデータを防ぐための具体的なルールを適用することができます。
セキュリティ: filter_inputは、セキュリティ上の理由から直接的なスーパーグローバル変数($_POSTや$_GET)へのアクセスを回避します。
2. isset:
目的:
issetは、変数がセットされているかどうかをチェックするための関数です。変数がセットされており、NULLでない場合にTRUEを返します。
メリット:
シンプル: コードの意図が明確で、変数が存在するかどうかを簡単にチェックできます。
パフォーマンス: issetは非常に高速で、ほとんどの場面でのオーバーヘッドがありません。
NULLチェック: 変数がNULLかどうかも同時にチェックします。
結論:
issetは変数の存在をチェックする場面で主に使用され、filter_inputは変数の値を検証・サニタイズする場面で使用されます。
セキュリティや入力のバリデーションが関わる場面では、filter_inputの使用が推奨されます。一方、単純に変数の存在を確認したい場合や、パフォーマンスが重要な場面では、issetの使用が適しています。
状況やニーズに応じて、適切な関数や方法を選択することが大切です。
686デフォルトの名無しさん (ワッチョイ 9aa9-i0IF)
2023/08/18(金) 05:27:16.73ID:+mar7LqR0 チェックボックスでレコードに関するフラグをmariadbに登録する時は
php内ではtrue, falseと、1,0で条件分岐どっちがいい?
mariadbはtrue, falseのboolで保存できないので、結局取り出すときは1と0の文字列になるけど
どういう管理というかルールにしたら良いか迷ってます
php内ではtrue, falseと、1,0で条件分岐どっちがいい?
mariadbはtrue, falseのboolで保存できないので、結局取り出すときは1と0の文字列になるけど
どういう管理というかルールにしたら良いか迷ってます
687デフォルトの名無しさん (ワッチョイ 76e7-eQmn)
2023/08/18(金) 11:22:44.15ID:MbvK7wD/0688デフォルトの名無しさん (スップ Sdba-ORuG)
2023/08/18(金) 19:35:38.53ID:2Xzv42cCd >>686
0か1の整数型だね
INSERTをする前に値をintvalする
SELECTをした後に値をintvalする
PHPの内部ではint型として扱い、厳密な比較をする
ただしPOSTされた時点では文字列なので、バリデーションは文字列として扱う
もっともチェックボックスだとチェックがないと、たぶん値が何も来ない
0か1の整数型だね
INSERTをする前に値をintvalする
SELECTをした後に値をintvalする
PHPの内部ではint型として扱い、厳密な比較をする
ただしPOSTされた時点では文字列なので、バリデーションは文字列として扱う
もっともチェックボックスだとチェックがないと、たぶん値が何も来ない
689デフォルトの名無しさん (ワッチョイ 93a9-6Nwt)
2023/08/19(土) 20:10:29.17ID:28+RhaxH0 >>687-688
ありがとうございます。
初学者なのでtrueとかfalseとか憧れてそれで作っていましたが、db周りの出し入れをしているうちに
キャストに統一性が無い感じがモヤモヤしていました。
フラグのチェックボックスは
filter_input(INPUT_POST, 'hoge', FILTER_VALIDATE_BOOLEAN)
を使っていました。
チェックボックスにチェックが無い場合はデータベースに入れる前に三項演算子で
isset($_SESSION['hoge']) ? 1 : 0;
isset($_SESSION['hoge']) ? 1 : 0;
フラグのありなしをつけてinsert, updateしていますが、確かに整数に揃えたほうが良かったですね。
ありがとうございます。
初学者なのでtrueとかfalseとか憧れてそれで作っていましたが、db周りの出し入れをしているうちに
キャストに統一性が無い感じがモヤモヤしていました。
フラグのチェックボックスは
filter_input(INPUT_POST, 'hoge', FILTER_VALIDATE_BOOLEAN)
を使っていました。
チェックボックスにチェックが無い場合はデータベースに入れる前に三項演算子で
isset($_SESSION['hoge']) ? 1 : 0;
isset($_SESSION['hoge']) ? 1 : 0;
フラグのありなしをつけてinsert, updateしていますが、確かに整数に揃えたほうが良かったですね。
690デフォルトの名無しさん (ワッチョイ 317b-vj3y)
2023/08/19(土) 23:28:02.55ID:2LFpxJcr0 >>689
おい、一応言っておくが、>>687-688は間違ってるぞ。
PHP内はtrue/falseで作るのが正しい。
つかちょっと考えれば分かるだろ。
お前はDBを変更した際に、そのDBがtrue/false使えたら全部書き直すつもりなのか?
DB依存事項はDB側に押し込むのが基本。mariaはPDOには無いようだが、
理想的にはそういったDBアクセスラッパに押し込んでしまって、
PHP側はDB依存無し、つまりtrue/falseで書いてしまうのが正しい。
それでラッパ内で自動的にtrueを"1"、falseを"0"に変換させる。
逆に読み出しの場合、"1"をtrueに、"0"をfalseにするわけだが、
型あり言語の場合はこの辺、文字列の"1~"0"とは型で区別出来るが、
PHPの場合に実際どうするのかはよく知らん。
が、ともかく、DBアクセスラッパ内で逆変換してしまうのが正しい。
というかそうしないとDB変えただけで全部書き換えが必要になるだろ。
てなことは今のお前でも考えれば分かるはず。お前らは考えなさすぎ。
つっても俺の意見はプログラミングの一般論であって、
PHPなりのなんか変なノウハウがあって数字の方がいいのかどうかは分からん。
おい、一応言っておくが、>>687-688は間違ってるぞ。
PHP内はtrue/falseで作るのが正しい。
つかちょっと考えれば分かるだろ。
お前はDBを変更した際に、そのDBがtrue/false使えたら全部書き直すつもりなのか?
DB依存事項はDB側に押し込むのが基本。mariaはPDOには無いようだが、
理想的にはそういったDBアクセスラッパに押し込んでしまって、
PHP側はDB依存無し、つまりtrue/falseで書いてしまうのが正しい。
それでラッパ内で自動的にtrueを"1"、falseを"0"に変換させる。
逆に読み出しの場合、"1"をtrueに、"0"をfalseにするわけだが、
型あり言語の場合はこの辺、文字列の"1~"0"とは型で区別出来るが、
PHPの場合に実際どうするのかはよく知らん。
が、ともかく、DBアクセスラッパ内で逆変換してしまうのが正しい。
というかそうしないとDB変えただけで全部書き換えが必要になるだろ。
てなことは今のお前でも考えれば分かるはず。お前らは考えなさすぎ。
つっても俺の意見はプログラミングの一般論であって、
PHPなりのなんか変なノウハウがあって数字の方がいいのかどうかは分からん。
691デフォルトの名無しさん (ブーイモ MM4b-Wgo7)
2023/08/20(日) 04:33:24.24ID:fG8Y/bhcM ワイ独学自称中級者
一連のやりとりを見て自信を無くして震える
(((( ;゚Д゚)))ガクガクブルブル
一連のやりとりを見て自信を無くして震える
(((( ;゚Д゚)))ガクガクブルブル
692デフォルトの名無しさん (ワッチョイ 5b5f-hPrW)
2023/08/20(日) 12:55:06.37ID:4PrSYObq0 >>690
>そのDBがtrue/false使えたら全部書き直すつもりなのか?
そういうDB依存、言語依存をしないために、そもそもDBに1,0をかきこむんじゃ
true/falseなんて多言語で一番共通の無い概念じゃけえの
>そのDBがtrue/false使えたら全部書き直すつもりなのか?
そういうDB依存、言語依存をしないために、そもそもDBに1,0をかきこむんじゃ
true/falseなんて多言語で一番共通の無い概念じゃけえの
693デフォルトの名無しさん (ワッチョイ 317b-vj3y)
2023/08/20(日) 13:35:51.35ID:Vn08TQPe0 >>692
> 言語依存
> 多言語で
いや今はPHPでどうするかの話だろ。
そしてmariaは知らんが686の通りなら文字型しかないDBなんだろ。
そういうDBが有ってもおかしくない。DBではないがJSのlocalStorageとかそうだし。
> 言語依存
> 多言語で
いや今はPHPでどうするかの話だろ。
そしてmariaは知らんが686の通りなら文字型しかないDBなんだろ。
そういうDBが有ってもおかしくない。DBではないがJSのlocalStorageとかそうだし。
694デフォルトの名無しさん (ワッチョイ 317b-vj3y)
2023/08/20(日) 13:59:49.50ID:Vn08TQPe0695デフォルトの名無しさん (ワッチョイ 1301-/Wom)
2023/08/20(日) 14:18:19.62ID:HzS5SUnX0 Synonym for TINYINT(1)と書いてあるだろう
696デフォルトの名無しさん (スップ Sdb3-qQSq)
2023/08/20(日) 15:08:55.86ID:6IMFV5dJd フラグとして変数を定義するとき、ブーリアン型を用いることがほとんどである。
ブーリアン型は「真」(フラグが立っている)および「偽」(フラグが立っていない)のみを値として受けつけ、
都合が良いからである。
https://ja.wikipedia.org/wiki/フラグ_(コンピュータ)
「1|0」でなく「true|false」を使うことに有用性はありますか?
https://teratail.com/questions/307035
ブーリアン型は「真」(フラグが立っている)および「偽」(フラグが立っていない)のみを値として受けつけ、
都合が良いからである。
https://ja.wikipedia.org/wiki/フラグ_(コンピュータ)
「1|0」でなく「true|false」を使うことに有用性はありますか?
https://teratail.com/questions/307035
697デフォルトの名無しさん (ワッチョイ 2b63-/QKx)
2023/08/20(日) 15:10:00.51ID:GxzweHHZ0 TINYINTには、0と1以外の値も入る
698デフォルトの名無しさん (スップ Sdf3-CvT1)
2023/08/20(日) 16:20:48.91ID:ssGBE3vxd MySQLのtinyint(1)って1ビットってことだから0か1になるんじゃ?
登録するまでに型変換だのなんだのするの個人的には嫌だからtrue falseで良いと思うけど
登録するまでに型変換だのなんだのするの個人的には嫌だからtrue falseで良いと思うけど
699686 (ワッチョイ 93a9-6Nwt)
2023/08/20(日) 17:51:30.99ID:fCXPEraA0 すいません、間違えていました
>mariadbはtrue, falseのboolで保存できないので、結局取り出すときは
誤:1と0の文字列になるけど
正:結局取り出すときは1と0の数値になるけど
です。tinyint(1)なので数字の1と0です。
最悪なところ書き間違えていました・・・
phpしか使わないので
チェックボックスのvalue=1をintvalにしてdbに入れる
確認画面とかで評価するときは===1で厳密に評価するのが初学者向きなのかな?
mariadbに入れるまではtrue,falseがdbに入れられないことに気付かなかったです。
>mariadbはtrue, falseのboolで保存できないので、結局取り出すときは
誤:1と0の文字列になるけど
正:結局取り出すときは1と0の数値になるけど
です。tinyint(1)なので数字の1と0です。
最悪なところ書き間違えていました・・・
phpしか使わないので
チェックボックスのvalue=1をintvalにしてdbに入れる
確認画面とかで評価するときは===1で厳密に評価するのが初学者向きなのかな?
mariadbに入れるまではtrue,falseがdbに入れられないことに気付かなかったです。
700デフォルトの名無しさん (ワッチョイ 1301-/Wom)
2023/08/20(日) 18:02:22.04ID:HzS5SUnX0701デフォルトの名無しさん (ブーイモ MMb3-wGig)
2023/08/20(日) 18:07:23.77ID:5gYLv8ZUM >>700
pdo使え
pdo使え
702デフォルトの名無しさん (ワッチョイ 93a9-6Nwt)
2023/08/20(日) 18:14:41.61ID:fCXPEraA0 >>700
exucuteからforeachで$hoge = intval(row['is_hoge']);
のように取り出そうと思います、間違っていたらごめんなさい。
pdoとプレースホルダを使っています。
exucuteからforeachで$hoge = intval(row['is_hoge']);
のように取り出そうと思います、間違っていたらごめんなさい。
pdoとプレースホルダを使っています。
703デフォルトの名無しさん (オッペケ Sr0d-eja4)
2023/08/20(日) 21:21:03.15ID:7sa3oVfBr これだからphpは欠陥言語なんだよな
他の言語じゃ起こり得ないことがphpでは当たり前のように起こる
他の言語じゃ起こり得ないことがphpでは当たり前のように起こる
704デフォルトの名無しさん (スップ Sdb3-qQSq)
2023/08/20(日) 21:37:23.85ID:6IMFV5dJd phpMyAdminだとBOOLEANは、NUMERICのカテゴリで数値扱い
上にもある通りtinyint(1)とされる
型をBOOLEANに設定してデフォルト値をtrueにしても、結局は1と表示される
上にもある通りtinyint(1)とされる
型をBOOLEANに設定してデフォルト値をtrueにしても、結局は1と表示される
705デフォルトの名無しさん (スップ Sdb3-qQSq)
2023/08/20(日) 21:50:07.54ID:6IMFV5dJd >>686
正統なやり方はこうするのかもね
trueかfalseの論理型として扱う
INSERTをする前に値をboolvalする
SELECTをした後に値をboolvalする
PHPの内部ではbool型として扱い、厳密な比較をする
正統なやり方はこうするのかもね
trueかfalseの論理型として扱う
INSERTをする前に値をboolvalする
SELECTをした後に値をboolvalする
PHPの内部ではbool型として扱い、厳密な比較をする
706デフォルトの名無しさん (ワッチョイ 317b-vj3y)
2023/08/20(日) 22:44:11.23ID:Vn08TQPe0 >>703
PHPがってわけではなく、型無し言語なのが問題なのだが、
PHPerが上達してない原因はこの辺なのか、とは思ったね。
型あり言語だと悩む必要もなく、コードも必要なく、true/falseが使える状況だからね。
PHPがってわけではなく、型無し言語なのが問題なのだが、
PHPerが上達してない原因はこの辺なのか、とは思ったね。
型あり言語だと悩む必要もなく、コードも必要なく、true/falseが使える状況だからね。
707デフォルトの名無しさん (ワッチョイ 1301-/Wom)
2023/08/20(日) 22:47:18.44ID:HzS5SUnX0708デフォルトの名無しさん (ワッチョイ 93a9-6Nwt)
2023/08/21(月) 00:15:50.88ID:lueNEGoD0 え?pdoってデータベースのカラムを取ったとき、そのカラムの型じゃないの?
てっきり入っている型のまま変数に入ってると思ってた
てっきり入っている型のまま変数に入ってると思ってた
709デフォルトの名無しさん (ワッチョイ 2b63-/QKx)
2023/08/21(月) 00:21:37.41ID:EVtKvg8p0 データーベースサーバーとのやり取りは文字列の方がやりやすくないか?
710デフォルトの名無しさん (オッペケ Sr0d-Uf20)
2023/08/21(月) 08:08:10.49ID:dxSskb/Zr データベースを意識しない場所ならtrue/falseにするね
そういう風に出来るから
そういう風に出来るから
711デフォルトの名無しさん (ワッチョイ 59a7-0WDc)
2023/08/21(月) 14:47:43.04ID:tiKxyOXL0712デフォルトの名無しさん (スップ Sdb3-CvT1)
2023/08/21(月) 16:06:41.44ID:YnwB8X1pd プログラム言語の歴史としてなぜ型なしが流行っちゃったの?
713デフォルトの名無しさん (ワッチョイ 7101-QMpP)
2023/08/22(火) 14:21:40.44ID:TUFRZPBf0 型なしは流行るし、
voidで自動型宣言なるし、
楽になったのか、間違いを増やしたのか
わからんなー
voidで自動型宣言なるし、
楽になったのか、間違いを増やしたのか
わからんなー
714デフォルトの名無しさん (ワッチョイ 2b63-/QKx)
2023/08/22(火) 14:56:09.51ID:pwoAZKv30 C++だと any なんて型というかクラスがあるんだよな
715デフォルトの名無しさん (ワッチョイ d95f-lN7b)
2023/08/29(火) 11:57:24.32ID:MQh5oOBF0 オブジェクト指向ってサブルーチンみたいなものでつか?
716デフォルトの名無しさん (テテンテンテン MMde-QSEj)
2023/08/29(火) 13:22:07.40ID:vhEPFWr5M 全然違います
車に例えた例で学んでください
車に例えた例で学んでください
717デフォルトの名無しさん (アウアウウー Sa11-VnR5)
2023/08/29(火) 13:29:22.50ID:ud/hz0aHa 本気で言ってるとは思わないが
「型無し言語」と言われているものはホントに型が無い訳じゃないからな
「型無し言語」と言われているものはホントに型が無い訳じゃないからな
718デフォルトの名無しさん (ワッチョイ a9a7-vHpx)
2023/08/30(水) 00:27:17.06ID:HAfLNzeH0 オブジェクトの持つ振る舞い=メソッドを記述するのにサブルーチン(PHPの場合関数という)を使うが
それイコールオブジェクト指向みたいな単純な話じゃないから
ここで説明するのは難しい話だし到底理解出来ないと思うから勉強してくれとしか言いようがないね
それイコールオブジェクト指向みたいな単純な話じゃないから
ここで説明するのは難しい話だし到底理解出来ないと思うから勉強してくれとしか言いようがないね
719デフォルトの名無しさん (スップ Sdea-KdZ8)
2023/08/30(水) 22:39:46.76ID:6rYffRE+d オブジェクト指向の習得ならJavaの基礎やってから
デザインパターンの学習がおすすめ
回り道だけどPHPにも役立つ
デザインパターンの学習がおすすめ
回り道だけどPHPにも役立つ
720デフォルトの名無しさん (アウアウウー Sa11-FmU/)
2023/08/31(木) 06:13:11.51ID:3AELC/LBa オブジェクト指向は、Ruby
さらに、メソッドチェーンで関数型っぽく書ける
さらに、メソッドチェーンで関数型っぽく書ける
721デフォルトの名無しさん (ワッチョイ caa9-1lN6)
2023/08/31(木) 06:52:40.61ID:iJCUhZwo0 クラスがまだ理解できないわ
ユーザ関数をまとめた塊が分身の術を使う感じ?
お問い合わせフォームみたいな小さなプログラムでも
クラスを使って作ることができるのかな
ユーザ関数をまとめた塊が分身の術を使う感じ?
お問い合わせフォームみたいな小さなプログラムでも
クラスを使って作ることができるのかな
722デフォルトの名無しさん (ワッチョイ 4abd-QSEj)
2023/08/31(木) 09:48:57.13ID:FDRwTnoH0 無理して使わなくても良い
単純なお問い合わせフォームなら不要だね
単純なお問い合わせフォームなら不要だね
723デフォルトの名無しさん (スフッ Sdea-v2/v)
2023/08/31(木) 09:57:25.50ID:dkvwQp2/d PHPは出生が貧しい
724デフォルトの名無しさん (ワッチョイ c149-mWiY)
2023/08/31(木) 10:22:39.01ID:ByL0JcT30 Laravelのサンプルでも見てチュートリアルとかこなしてなんか作ってれば、
そのうち分かってるよ
そのうち分かってるよ
725デフォルトの名無しさん (ワッチョイ 355f-oH/7)
2023/08/31(木) 12:57:53.71ID:b45Q9Hkb0 管理や使いまわしがしやすいように作るひな形だからね
オブジェクトの変数と関数を定義したひな形
オブジェクトの変数と関数を定義したひな形
726デフォルトの名無しさん (ワッチョイ 8663-JwXX)
2023/08/31(木) 22:18:55.37ID:WloaiZHG0 javascript のlocation.href やlocation.replace をPHPで書きたいのですがうkpまく検索できないのでググるときのキーワードだけでも教えて欲しいです
727デフォルトの名無しさん (ワッチョイ d67c-9TAE)
2023/08/31(木) 22:24:38.53ID:tdunP8yV0 header関数
728デフォルトの名無しさん (ワッチョイ 8663-JwXX)
2023/08/31(木) 22:30:55.24ID:WloaiZHG0 ありがとうございます😭
出てきました。ちなsmartyだとこうですよね
{php} header ('Location: somepage.php'); {/php}
出てきました。ちなsmartyだとこうですよね
{php} header ('Location: somepage.php'); {/php}
729デフォルトの名無しさん (ワッチョイ fe5f-TDjq)
2023/08/31(木) 22:32:04.49ID:FVCzIIes0 smartyってまだ使われてるんだね
これからも頑張って
これからも頑張って
730デフォルトの名無しさん (ワッチョイ 8663-JwXX)
2023/08/31(木) 22:53:46.94ID:WloaiZHG0 ありがとうございます😊
731デフォルトの名無しさん (ワッチョイ 9d90-NK/z)
2023/09/01(金) 12:50:01.84ID:CI/feD+E0 ごめんなさい、知恵をお貸しください。php xamppa(v3.3.0)です。
$sql = 'select * from table where ty=1';
foreach ($stmn as $row) {
$ir = $row['ir']; $gt = $row['gt'];
if ( ($ir == $ro) && ( $st == 0) ) { $gtx = $gt; $st = 1; }
}
$res = setcookie($gtx , $gtx , time()+10000 ,'/');
抜粋なのでご了承ください。
DBのtableに tyで選別したデータgt(a1,a2,a4,a8があるとします)から
ir(1,2,3,4)があるとします。
$ro(3とします)と一致するデータ 、この場合a4が取れてgtxにはa4が残り
a4:a4というクッキーが1つ出来るはずですが、a1、a4という2つのクッキーができてしまいます。
かならずDB最初の値でクッキーが出来るのです
setcookieはループもせず、前後にecho をつけても1回分しかecho表示せず
でも2種類のクッキーが作成されるということは、ループの外でもループ内を2回は動いているのでしょうか。
それともおま環でしょうか。
なにか解決策があるならご教授お願いしたく思います。
よろしくお願いします。
$sql = 'select * from table where ty=1';
foreach ($stmn as $row) {
$ir = $row['ir']; $gt = $row['gt'];
if ( ($ir == $ro) && ( $st == 0) ) { $gtx = $gt; $st = 1; }
}
$res = setcookie($gtx , $gtx , time()+10000 ,'/');
抜粋なのでご了承ください。
DBのtableに tyで選別したデータgt(a1,a2,a4,a8があるとします)から
ir(1,2,3,4)があるとします。
$ro(3とします)と一致するデータ 、この場合a4が取れてgtxにはa4が残り
a4:a4というクッキーが1つ出来るはずですが、a1、a4という2つのクッキーができてしまいます。
かならずDB最初の値でクッキーが出来るのです
setcookieはループもせず、前後にecho をつけても1回分しかecho表示せず
でも2種類のクッキーが作成されるということは、ループの外でもループ内を2回は動いているのでしょうか。
それともおま環でしょうか。
なにか解決策があるならご教授お願いしたく思います。
よろしくお願いします。
732デフォルトの名無しさん (ワッチョイ c149-TDjq)
2023/09/01(金) 14:02:31.58ID:1IEXqOVA0733デフォルトの名無しさん (ワッチョイ 4abd-QSEj)
2023/09/01(金) 14:11:47.16ID:BMZCfruh0 答える前に日本語の解読が大変
734デフォルトの名無しさん (ワッチョイ 9d90-NK/z)
2023/09/01(金) 14:19:15.56ID:CI/feD+E0735デフォルトの名無しさん (ワッチョイ c149-TDjq)
2023/09/01(金) 15:06:01.85ID:1IEXqOVA0 しらんけど書いてないところがおかしいんやろ
こっちはお前と違って各変数の略称や意味もよくわからん
stmnってなに?ステートメント?なんでそこからrow?
irってなに?gtってなに?greater than?じゃあgtxってなに?
stってなに?stmnの一部か何か?
選別って何?selectのことwhereのこと?じゃあgtはカラム?なんでわざわざ別の変数に代入するの
こっちはプログラム全部も見れないのに考えてられっかって感じ
こういうのは試しに、一行ずつ超細かい数行のメソッドに分割してテストすれば整理されて分かったりするから
後で戻すにせよ、ひとつずつ丁寧に見てけよ
それか自分でChatGPTなりにコード全部はって聞いてけ
てかリーダブルコード読め
こっちはお前と違って各変数の略称や意味もよくわからん
stmnってなに?ステートメント?なんでそこからrow?
irってなに?gtってなに?greater than?じゃあgtxってなに?
stってなに?stmnの一部か何か?
選別って何?selectのことwhereのこと?じゃあgtはカラム?なんでわざわざ別の変数に代入するの
こっちはプログラム全部も見れないのに考えてられっかって感じ
こういうのは試しに、一行ずつ超細かい数行のメソッドに分割してテストすれば整理されて分かったりするから
後で戻すにせよ、ひとつずつ丁寧に見てけよ
それか自分でChatGPTなりにコード全部はって聞いてけ
てかリーダブルコード読め
736デフォルトの名無しさん (ワッチョイ 9d90-NK/z)
2023/09/01(金) 16:08:01.02ID:CI/feD+E0 >>735
ありがとう。
そうですね、全体で見ないと判らないところもありますものね。
その言葉で全体を見直したら、解決しました。
jquary でした。
使わなくなった <script jquary……> が残っていたので、これを削除することで
クッキーのダブりは解消されました。
助かりました、ありがとうございました。
ありがとう。
そうですね、全体で見ないと判らないところもありますものね。
その言葉で全体を見直したら、解決しました。
jquary でした。
使わなくなった <script jquary……> が残っていたので、これを削除することで
クッキーのダブりは解消されました。
助かりました、ありがとうございました。
737デフォルトの名無しさん (ワッチョイ b3ad-+GqY)
2023/09/02(土) 12:33:53.90ID:ww4K2aY50 お疲れ様です
PHPで
trueの場合だけの処理ってやっぱりありませんかね?
PHPで
trueの場合だけの処理ってやっぱりありませんかね?
738デフォルトの名無しさん (ワッチョイ b3ad-+GqY)
2023/09/02(土) 12:34:18.26ID:ww4K2aY50 ifなしで三項演算子とかで
739デフォルトの名無しさん (ブーイモ MMe7-fPXT)
2023/09/02(土) 14:43:30.09ID:vtSM1xnBM740デフォルトの名無しさん (ワッチョイ ffa9-djYJ)
2023/09/02(土) 17:09:18.51ID:py0xcZf30 三項演算子を初めて知ったとき、1行で終わるスマートさに感動したわ
741デフォルトの名無しさん (ワッチョイ cf63-0HOd)
2023/09/02(土) 22:08:20.07ID:9i23krRm0 三浦恵理子
742デフォルトの名無しさん (ワッチョイ 035f-5p+d)
2023/09/03(日) 12:09:52.12ID:3hgdrBDA0 >>740
直感的でわかりやすいしあれはいいもんだ
直感的でわかりやすいしあれはいいもんだ
743デフォルトの名無しさん (アウアウウー Sae7-fXI3)
2023/09/03(日) 13:21:40.48ID:jFAGdbdCa >>741
webクロールか
webクロールか
744デフォルトの名無しさん (ワッチョイ 6f5f-ATpV)
2023/09/03(日) 17:13:18.35ID:RZsz0MwY0 PHPでもif修飾子が使いたいでゴワス
745デフォルトの名無しさん (ワッチョイ 7301-+GqY)
2023/09/08(金) 01:30:30.68ID:EHbxHCsV0 フリーランスエンジニアになってからの年収推移を公開【現在年収1000万】
【実体験】仕事ができない新卒エンジニアでも月収70万フリーランスになれる理由
フリーランスエンジニアは年収900万円までは余裕!現役フリーランスエンジニアが徹底解説
フリーエンジニアの平均年収!未経験が年収1000万円を超える方法とは?
月額150万円以上も可能?ITフリーランスで高単価を獲得できる理由
在宅で年収1000万稼ぐフリーランスエンジニアの稼ぎ方【再現できる】
フリーランスのエンジニアやるなら45歳までに貯金5000万円作れないと死ぬ説
【実体験】仕事ができない新卒エンジニアでも月収70万フリーランスになれる理由
フリーランスエンジニアは年収900万円までは余裕!現役フリーランスエンジニアが徹底解説
フリーエンジニアの平均年収!未経験が年収1000万円を超える方法とは?
月額150万円以上も可能?ITフリーランスで高単価を獲得できる理由
在宅で年収1000万稼ぐフリーランスエンジニアの稼ぎ方【再現できる】
フリーランスのエンジニアやるなら45歳までに貯金5000万円作れないと死ぬ説
746デフォルトの名無しさん (ワッチョイ e7ad-6jLp)
2023/09/14(木) 16:24:24.43ID:YnYbg3/U0747デフォルトの名無しさん (ワッチョイ ffe1-r5J7)
2023/09/22(金) 03:31:40.72ID:DUfDR45n0 テストに動かしてみたコードとか要らなくなったコードってきちんとした削除手順とかあるの?
普通にゴミ箱ぶっこんでええの?なんか蓄積してたり残ったりする?
普通にゴミ箱ぶっこんでええの?なんか蓄積してたり残ったりする?
748デフォルトの名無しさん (ワッチョイ ff5f-YZsW)
2023/09/22(金) 20:43:58.56ID:Il2p6KDs0749デフォルトの名無しさん (ワッチョイ 8e7c-u/s5)
2023/09/23(土) 13:44:37.26ID:/3FF//Rt0 >>748
ありがとうございます!
ありがとうございます!
750デフォルトの名無しさん (ワッチョイ 0abd-em0E)
2023/09/29(金) 05:54:25.82ID:JB7cBWOL0 この流れはさすがにネタだよね?
751デフォルトの名無しさん (ワッチョイ c92e-ZDOV)
2023/10/14(土) 18:52:32.66ID:FXKPsXcG0 >>721
>クラスがまだ理解できないわ
>ユーザ関数をまとめた塊が分身の術を使う感じ?
>
>お問い合わせフォームみたいな小さなプログラムでも
>クラスを使って作ることができるのかな
全く同じ。ユーザー定義関数との違いが理解出来ていない自分。
よくクラスを、自動車に例えたり会社に例えてる書籍読むけど分からんのよね。うーん
>クラスがまだ理解できないわ
>ユーザ関数をまとめた塊が分身の術を使う感じ?
>
>お問い合わせフォームみたいな小さなプログラムでも
>クラスを使って作ることができるのかな
全く同じ。ユーザー定義関数との違いが理解出来ていない自分。
よくクラスを、自動車に例えたり会社に例えてる書籍読むけど分からんのよね。うーん
752sage (ワッチョイ c963-e7li)
2023/10/14(土) 23:13:33.20ID:uhuB6VoQ0 >>751
既に回答されてる通りだよ。
ただの整理術だから、無くても困らないのなら問題ないし、規模が大きくなれば嫌でも実感出来る。
そして(生の)PHPで学ぶのははっきり言って間違い。
Arrayとか、他言語ならarr.indexOf等、最初からクラスになってるので自然と使えるようになる。
最初からlaravel使った場合も同様。
生のPHPで初心者の規模(3000行以下程度)なら自然と学べる事はなく、無理に使おうとしても余計に混乱するだけ。
本が3冊しかないのに本棚買っても整理も糞もない。本立てで十分だし、そのほうが使い勝手もいい。
初心者の規模で学びたければ、他言語(JS/Go/C#/Java/Python/Rubyのどれでもいい)をやるべき。
どうしてもPHPでやりたければ、laravel使うか大型化させるしかない。
既に回答されてる通りだよ。
ただの整理術だから、無くても困らないのなら問題ないし、規模が大きくなれば嫌でも実感出来る。
そして(生の)PHPで学ぶのははっきり言って間違い。
Arrayとか、他言語ならarr.indexOf等、最初からクラスになってるので自然と使えるようになる。
最初からlaravel使った場合も同様。
生のPHPで初心者の規模(3000行以下程度)なら自然と学べる事はなく、無理に使おうとしても余計に混乱するだけ。
本が3冊しかないのに本棚買っても整理も糞もない。本立てで十分だし、そのほうが使い勝手もいい。
初心者の規模で学びたければ、他言語(JS/Go/C#/Java/Python/Rubyのどれでもいい)をやるべき。
どうしてもPHPでやりたければ、laravel使うか大型化させるしかない。
753デフォルトの名無しさん (ワッチョイ c963-e7li)
2023/10/14(土) 23:15:35.87ID:uhuB6VoQ0 > ユーザー定義関数との違いが理解出来ていない自分。
そもそも違いなんて無い。Goの場合は相互に運用出来るし、
C++やC#の場合はコンパイラが暗黙的に指定してくれるだけ。
一般的には「どう考えても対象を指定するしかないだろ」の場合、インスタンスメソッドにする。
例えば、
$key = array_search('green', $array); // $key = 2;
array_searchは「配列の中から探す」のであって「配列」を指定しないと話にならない。なら最初から、
$key = $array->search('green');
と書かせろや糞言語ガー、
しかもsearchでは返り値の型が分かりにくい、インデックスが返ってくるのなら、
$key = $array->indexOf('green');
と書かせろや糞言語ガー、他言語は全部こうやで、というだけ。
array_searchとかいう糞長い名前が必要なのは、名前のスコープが広すぎるからであって、
各メソッドにしてクラス毎の小さなスコープにすれば短い名前でも衝突しない。
これが便利なので使われてる。つまり、便利だ、というだけ。
そもそも違いなんて無い。Goの場合は相互に運用出来るし、
C++やC#の場合はコンパイラが暗黙的に指定してくれるだけ。
一般的には「どう考えても対象を指定するしかないだろ」の場合、インスタンスメソッドにする。
例えば、
$key = array_search('green', $array); // $key = 2;
array_searchは「配列の中から探す」のであって「配列」を指定しないと話にならない。なら最初から、
$key = $array->search('green');
と書かせろや糞言語ガー、
しかもsearchでは返り値の型が分かりにくい、インデックスが返ってくるのなら、
$key = $array->indexOf('green');
と書かせろや糞言語ガー、他言語は全部こうやで、というだけ。
array_searchとかいう糞長い名前が必要なのは、名前のスコープが広すぎるからであって、
各メソッドにしてクラス毎の小さなスコープにすれば短い名前でも衝突しない。
これが便利なので使われてる。つまり、便利だ、というだけ。
754デフォルトの名無しさん (ワッチョイ c963-e7li)
2023/10/14(土) 23:16:34.58ID:uhuB6VoQ0 ただしPHPのも「静的メソッド」として実装する方式では合ってるし、
実際にC++の場合は(仮想関数でない場合は)静的メソッドをコンパイラ支援で呼び出してるから、バイナリ的にも同じ。
同様にC#の場合は上記静的メソッドarray_searchを拡張メソッドとして$array->search形式で
見た目簡単に書けるようにしただけで、C++と同様に同じバイナリを呼び出す。
Goの場合はインスタンスメソッドを静的メソッドとして呼びだしたら(逆だったかも?)
第一引数がthis扱いになるだけ、という、C++やC#がコンパイラにやらせてるのをユーザーも書けるようにしただけ。
要するに、普通の関数(静的メソッド)と(仮想関数でない)インスタンスメソッドには違いはない。楽に書けるだけ。
PHPの場合は(今数分見ただけだが)全部仮想関数(virtual、ただしPHPでは別の意味で使われてるが)っぽいので、
array_searchのような静的メソッドの方が呼び出しがデリファレンス1回分速いという違いはあるが、
PHPの実行速度で気にする話でもない。
そしてオーバーライドしなければ上記の(仮想関数ガー)は全部無視していい。
まあ意味不明だろうが、書き方以外の違いはないという事。
ただ再度言うが、小規模の生PHPをやってる限り、この辺が分かるようにはならないよ。
実際にC++の場合は(仮想関数でない場合は)静的メソッドをコンパイラ支援で呼び出してるから、バイナリ的にも同じ。
同様にC#の場合は上記静的メソッドarray_searchを拡張メソッドとして$array->search形式で
見た目簡単に書けるようにしただけで、C++と同様に同じバイナリを呼び出す。
Goの場合はインスタンスメソッドを静的メソッドとして呼びだしたら(逆だったかも?)
第一引数がthis扱いになるだけ、という、C++やC#がコンパイラにやらせてるのをユーザーも書けるようにしただけ。
要するに、普通の関数(静的メソッド)と(仮想関数でない)インスタンスメソッドには違いはない。楽に書けるだけ。
PHPの場合は(今数分見ただけだが)全部仮想関数(virtual、ただしPHPでは別の意味で使われてるが)っぽいので、
array_searchのような静的メソッドの方が呼び出しがデリファレンス1回分速いという違いはあるが、
PHPの実行速度で気にする話でもない。
そしてオーバーライドしなければ上記の(仮想関数ガー)は全部無視していい。
まあ意味不明だろうが、書き方以外の違いはないという事。
ただ再度言うが、小規模の生PHPをやってる限り、この辺が分かるようにはならないよ。
755デフォルトの名無しさん (アウアウアー Sa8b-3tBr)
2023/10/15(日) 09:04:25.58ID:6aIYZQkKa プログラムをクラスとかメソッドに分ける時の考え方の一つに「自動テストの書きやすさ」もあるよ。
作ったプログラムを今後も手を入れて改修して行くなら、一般的に改修箇所以外が正常動作するか回帰テストする。
プログラムを作る時に自動テストも作っておくと改修時の回帰テストが楽になる。
自動テストが無いと手動で全機能動作確認になって改修時に改修箇所以外の不具合が出やすくなる。
手動で全機能動作確認は手間がかかり過ぎて大変だから回帰テスト不足で「改修前に使えてた機能が使えなくなった」となりやすい。
今後改修しないその場限りのプログラムなら自動テストは気にしなくて良いと思う
作ったプログラムを今後も手を入れて改修して行くなら、一般的に改修箇所以外が正常動作するか回帰テストする。
プログラムを作る時に自動テストも作っておくと改修時の回帰テストが楽になる。
自動テストが無いと手動で全機能動作確認になって改修時に改修箇所以外の不具合が出やすくなる。
手動で全機能動作確認は手間がかかり過ぎて大変だから回帰テスト不足で「改修前に使えてた機能が使えなくなった」となりやすい。
今後改修しないその場限りのプログラムなら自動テストは気にしなくて良いと思う
756デフォルトの名無しさん (ワッチョイ c92e-ZDOV)
2023/10/15(日) 12:35:11.36ID:XVcuYs9l0 >>752 エスパーか?ってくらい自分の状況透かされてて驚きました。まさに生のPHPしか触った事なくて1ファイルMAXでも3000行くらいしか書かないです。本棚の例えも恐ろしくわかりやすいです。
現状、会員制のサイトを生で書いたPHPで運用してるけどユーザー定義関数は使っていて、それに対してクラスの概念やユーザー定義関数との違いが理解出来ていない学習度です。
ユーザー定義関数群を取りまとめたファイルを都度includeで読み込んで各ページで使ってます。これで事足りていてこの方式とクラスの違いが理解出来ていないという。
おっしゃる通り、このまま生のPHPで学習していてもクラスの概念分からないだろうなと痛感しています。
GitHubで他人のコード見てクラスの書き方見てみたりWordPressもコード見たりするけど、やっぱり理解できず。
Laravelとかフレームワーク使って簡単に何か作ってみるのが良いんだろうなぁ…頑張らねば
現状、会員制のサイトを生で書いたPHPで運用してるけどユーザー定義関数は使っていて、それに対してクラスの概念やユーザー定義関数との違いが理解出来ていない学習度です。
ユーザー定義関数群を取りまとめたファイルを都度includeで読み込んで各ページで使ってます。これで事足りていてこの方式とクラスの違いが理解出来ていないという。
おっしゃる通り、このまま生のPHPで学習していてもクラスの概念分からないだろうなと痛感しています。
GitHubで他人のコード見てクラスの書き方見てみたりWordPressもコード見たりするけど、やっぱり理解できず。
Laravelとかフレームワーク使って簡単に何か作ってみるのが良いんだろうなぁ…頑張らねば
757デフォルトの名無しさん (ワッチョイ c92e-ZDOV)
2023/10/15(日) 12:47:11.76ID:XVcuYs9l0 >>755さんは別の方かな?レス有難うございます😊
こちらもおっしゃる通りで、機能を追加していく際に「メンテナンスが大変になってきたな…」と思う事がチョコチョコ出てきました。
ユーザー定義関数群をまとめたファイルをメンテナンスする事で自分の中ではある程度改修しやすくしているつもりなんですが、今後大規模な機能追加を考えた時に『クラスを使う使わない以前にクラスの概念を理解出来ていない事そのものがメンテナンスや拡張性を考慮する選択肢や手段の範囲・幅を狭めているのでは?』と考えるようになりました。
個人事業主で頑張ってる(ユーザー定義関数だけで頑張ってる)けどこのままだと株式会社を立ち上げて規模を大きくする事が出来ない(クラスを使って大規模開発出来ない)気がしています。
変な例えで恐縮ですし例えの中の個人事業主⇆会社のどちらが良い悪いというか意味ではありません。
ただ、自分が今如実に感じている感覚を言語化するなら先述のような感覚です。
こちらもおっしゃる通りで、機能を追加していく際に「メンテナンスが大変になってきたな…」と思う事がチョコチョコ出てきました。
ユーザー定義関数群をまとめたファイルをメンテナンスする事で自分の中ではある程度改修しやすくしているつもりなんですが、今後大規模な機能追加を考えた時に『クラスを使う使わない以前にクラスの概念を理解出来ていない事そのものがメンテナンスや拡張性を考慮する選択肢や手段の範囲・幅を狭めているのでは?』と考えるようになりました。
個人事業主で頑張ってる(ユーザー定義関数だけで頑張ってる)けどこのままだと株式会社を立ち上げて規模を大きくする事が出来ない(クラスを使って大規模開発出来ない)気がしています。
変な例えで恐縮ですし例えの中の個人事業主⇆会社のどちらが良い悪いというか意味ではありません。
ただ、自分が今如実に感じている感覚を言語化するなら先述のような感覚です。
758デフォルトの名無しさん (ワッチョイ c963-e7li)
2023/10/15(日) 16:52:25.37ID:BnU34f5b0 >>756
> ユーザー定義関数群を取りまとめたファイルを都度includeで読み込んで各ページで使ってます。これで事足りていてこの方式とクラスの違いが理解出来ていないという。
その方法でも間違いではないし、問題ない。
ただ(勘違いしてる馬鹿が多いが実は)クラスベースのオブジェクト指向と
それ以前の(つまり今751がやってる)手法は連続的に繋がっていて、
そのまま進んでいけば自然とクラスベースのオブジェクト指向に辿り着くものなんだよ。
だから(本来は)わざわざ別に学ぶものでもない。
今現在の「クラス」はC++が定義したものであり、
C++の目的は「Cの糞コードを出来るだけ改変せずに何とかする」事だったから、当然なのだが。
そして
> ユーザー定義関数群を取りまとめたファイルを都度includeで読み込んで
が実はCの手法そのまんまで、大規模になるとこれが問題となったので「クラス」を導入しただけ。
「クラス」の意味を初心者が理解出来ないのは、使用方法が多岐に渡る為だ。
だから実態を掴みにくい。
だから逆に、単純に入ればいい。
大規模化したCで問題になったのは、「階層」がないこと。だからクラスで「階層」を付加した。
PHPの場合でも同様で、includeした関数はどこからでも呼べてしまい、階層がない。
それで、複数のincludeファイルで同じ名前の関数を定義してしまった場合、バグる。
これに対するアナログ的解決が、「接頭辞を付ける」で、実際PHPだとarray_xxxxとなっている。
ただしこれでも種類が増えると接頭辞内にも"_"を使いたくなってくる。
そしてxxxx_yyyy_zzzzでみたいな関数名になると、接頭辞がxxxxなのかxxxx_yyyyまでなのか見た目分からない。
だから接頭辞内に"_"を使うのは絶対禁止というアナログ解決も可能だが、
ここで明示的に階層を宣言し、"::"で区切る、つまり、array_xxxx は全部 array::xxxxにする、
というのが「クラス」を「階層」とした使い方。
これは751でも「次の一手」として理解出来るだろ。
> ユーザー定義関数群を取りまとめたファイルを都度includeで読み込んで各ページで使ってます。これで事足りていてこの方式とクラスの違いが理解出来ていないという。
その方法でも間違いではないし、問題ない。
ただ(勘違いしてる馬鹿が多いが実は)クラスベースのオブジェクト指向と
それ以前の(つまり今751がやってる)手法は連続的に繋がっていて、
そのまま進んでいけば自然とクラスベースのオブジェクト指向に辿り着くものなんだよ。
だから(本来は)わざわざ別に学ぶものでもない。
今現在の「クラス」はC++が定義したものであり、
C++の目的は「Cの糞コードを出来るだけ改変せずに何とかする」事だったから、当然なのだが。
そして
> ユーザー定義関数群を取りまとめたファイルを都度includeで読み込んで
が実はCの手法そのまんまで、大規模になるとこれが問題となったので「クラス」を導入しただけ。
「クラス」の意味を初心者が理解出来ないのは、使用方法が多岐に渡る為だ。
だから実態を掴みにくい。
だから逆に、単純に入ればいい。
大規模化したCで問題になったのは、「階層」がないこと。だからクラスで「階層」を付加した。
PHPの場合でも同様で、includeした関数はどこからでも呼べてしまい、階層がない。
それで、複数のincludeファイルで同じ名前の関数を定義してしまった場合、バグる。
これに対するアナログ的解決が、「接頭辞を付ける」で、実際PHPだとarray_xxxxとなっている。
ただしこれでも種類が増えると接頭辞内にも"_"を使いたくなってくる。
そしてxxxx_yyyy_zzzzでみたいな関数名になると、接頭辞がxxxxなのかxxxx_yyyyまでなのか見た目分からない。
だから接頭辞内に"_"を使うのは絶対禁止というアナログ解決も可能だが、
ここで明示的に階層を宣言し、"::"で区切る、つまり、array_xxxx は全部 array::xxxxにする、
というのが「クラス」を「階層」とした使い方。
これは751でも「次の一手」として理解出来るだろ。
759デフォルトの名無しさん (ワッチョイ c963-e7li)
2023/10/15(日) 16:53:05.15ID:BnU34f5b0 なんだ、接頭辞を付けて、接頭辞内では"_"禁止、或いは接頭辞を台帳で管理すれば、
つまり、きちんと管理すればアナログで解決出来るではないか、というのは事実で、当たり前なのだ。
既にそうやってアナログ管理されて動いているCの糞コードを、そろそろなんとかするのがC++の目的だし、
それで導入されたのが「クラス」なのだから、元々そういう物なんだよ。
だから
array_search を
array::search と書き直すだけ、階層をアナログで"_"で区切ってたのを"::"にしただけ、
それだけで名前被りの管理の手間が大幅に削減出来ますね、というだけ。
この「次の一手」を同様に繰り返して行けばクラスベースのオブジェクト指向に自然となる。
753の
$key = array_search('green', $array);
を
$key = $array->search('green');
と書かせろというのも、$arrayは絶対に必要だし、逆にこれがないと何も始まらないのだから、
$arrayの一部としてsearchという関数を定義してしまえば、
$arrayとセットでないと呼び出せなくなるし、
$key = array_search($array,'green'); // error
みたいに引数順序を間違えてバグる心配もないね、というだけ。
そんなのちゃんと管理すればアナログで回避出来るよね、というのは、上記の通り「クラス」の仕様だ。
だから何であれ「クラス」は無くても出来るが使った方が楽、というだけの話。
つまり、きちんと管理すればアナログで解決出来るではないか、というのは事実で、当たり前なのだ。
既にそうやってアナログ管理されて動いているCの糞コードを、そろそろなんとかするのがC++の目的だし、
それで導入されたのが「クラス」なのだから、元々そういう物なんだよ。
だから
array_search を
array::search と書き直すだけ、階層をアナログで"_"で区切ってたのを"::"にしただけ、
それだけで名前被りの管理の手間が大幅に削減出来ますね、というだけ。
この「次の一手」を同様に繰り返して行けばクラスベースのオブジェクト指向に自然となる。
753の
$key = array_search('green', $array);
を
$key = $array->search('green');
と書かせろというのも、$arrayは絶対に必要だし、逆にこれがないと何も始まらないのだから、
$arrayの一部としてsearchという関数を定義してしまえば、
$arrayとセットでないと呼び出せなくなるし、
$key = array_search($array,'green'); // error
みたいに引数順序を間違えてバグる心配もないね、というだけ。
そんなのちゃんと管理すればアナログで回避出来るよね、というのは、上記の通り「クラス」の仕様だ。
だから何であれ「クラス」は無くても出来るが使った方が楽、というだけの話。
760デフォルトの名無しさん (ワッチョイ c963-e7li)
2023/10/15(日) 16:55:02.15ID:BnU34f5b0 > Laravelとかフレームワーク使って簡単に何か作ってみるのが良いんだろうなぁ…
これは本末転倒だから止めとけ。学ぶ気なら他言語、例えばC#が断然よくて、
C#で簡単なもの作った方が数段まし。
これはPHPの立ち位置がやや微妙だからだ。
既に動いている問題ないコードを破棄しなければならない場合は、
・アドレス空間の枯渇
・速度が絶望的に足りない
の2つで、前者は64bit化で解決済みだから今現在問題になるのは後者。
PHPは絶望的に速度が遅いし、larabelで表面的に誤魔化せてるとしても相変わらず糞なのは事実で、
.NET等、MSがガチでオブジェクト指向で整備したフレームワークと比べたら所詮はゴミ。(larabelもMSではあるが)
larabelはPHPのコード資産が段々と大きくなってきたときに導入するものであって、
最初からlarabel使って大規模なコードをPHPで組むくらいなら、
普通の連中はJSやTSやGoやRust等、他言語使ってるだろ。
実行速度が速い=可読性の高い簡単なコードで済む、という事であって、
動作速度が速いだけで七難隠すんだよ。
だから大規模システムをわざわざPHPで最初から組む馬鹿は誰もいない。
結果的に大規模化した物にlarabel適用してるだけで。
(大規模化=大半をプログラムで処理する=言語がいい方が断然楽)
PHPの場合は実行速度を
・物理で殴って誤魔化す
事が出来るから生き延びてるが、これが出来ないCakeとかは完全に死んでるだろ。
PHPはあくまで小回りが利く規模までで、フレームワークを導入してまで使う規模には適してない。
結果的にそうなったのなら致し方ないが、わざわざ導入してまでやるもんじゃない。
どうしてもWebに拘りたいのなら、この機会にJSかTSを試した方がいい。
少なくともPHPでクラスを学ぶよりは断然ましだし、今後の役にも立つだろうよ。
これは本末転倒だから止めとけ。学ぶ気なら他言語、例えばC#が断然よくて、
C#で簡単なもの作った方が数段まし。
これはPHPの立ち位置がやや微妙だからだ。
既に動いている問題ないコードを破棄しなければならない場合は、
・アドレス空間の枯渇
・速度が絶望的に足りない
の2つで、前者は64bit化で解決済みだから今現在問題になるのは後者。
PHPは絶望的に速度が遅いし、larabelで表面的に誤魔化せてるとしても相変わらず糞なのは事実で、
.NET等、MSがガチでオブジェクト指向で整備したフレームワークと比べたら所詮はゴミ。(larabelもMSではあるが)
larabelはPHPのコード資産が段々と大きくなってきたときに導入するものであって、
最初からlarabel使って大規模なコードをPHPで組むくらいなら、
普通の連中はJSやTSやGoやRust等、他言語使ってるだろ。
実行速度が速い=可読性の高い簡単なコードで済む、という事であって、
動作速度が速いだけで七難隠すんだよ。
だから大規模システムをわざわざPHPで最初から組む馬鹿は誰もいない。
結果的に大規模化した物にlarabel適用してるだけで。
(大規模化=大半をプログラムで処理する=言語がいい方が断然楽)
PHPの場合は実行速度を
・物理で殴って誤魔化す
事が出来るから生き延びてるが、これが出来ないCakeとかは完全に死んでるだろ。
PHPはあくまで小回りが利く規模までで、フレームワークを導入してまで使う規模には適してない。
結果的にそうなったのなら致し方ないが、わざわざ導入してまでやるもんじゃない。
どうしてもWebに拘りたいのなら、この機会にJSかTSを試した方がいい。
少なくともPHPでクラスを学ぶよりは断然ましだし、今後の役にも立つだろうよ。
761デフォルトの名無しさん (ワッチョイ 13a9-olVp)
2023/10/15(日) 20:49:40.47ID:64Sv/OQW0 >>721書いた者だけど、mc963-e7li氏の言葉はなんとなくわかったような感じ
リレーショナル使わないDBのCRUDするぐらいなら無理にクラスは使わなくて良い、ということね。
php初学時にlaravelの本を読んだ時に呪文みたいなものがたくさんあって
php無理だわと思ったけど、laravel無しでなんとかログイン付のCRUDぐらいなら作れるようになった。
・ある程度コードが書けるようになったらlaravelを検討するのか
・まったくの初学者がlaravelから始めてブラックボックスになっている所は気にするな、というなら
phpしか選択肢が無いなら熟練者はどっちを勧めるんだろう
リレーショナル使わないDBのCRUDするぐらいなら無理にクラスは使わなくて良い、ということね。
php初学時にlaravelの本を読んだ時に呪文みたいなものがたくさんあって
php無理だわと思ったけど、laravel無しでなんとかログイン付のCRUDぐらいなら作れるようになった。
・ある程度コードが書けるようになったらlaravelを検討するのか
・まったくの初学者がlaravelから始めてブラックボックスになっている所は気にするな、というなら
phpしか選択肢が無いなら熟練者はどっちを勧めるんだろう
762デフォルトの名無しさん (ワッチョイ 7321-Y0aP)
2023/10/15(日) 21:00:20.67ID:BAs39Kb+0 個人開発にフレームワークいらないんじゃない?
昔居た会社はLaravelでいうブレードに全部の動作直書きしてたよ
昔居た会社はLaravelでいうブレードに全部の動作直書きしてたよ
763デフォルトの名無しさん (ワッチョイ c962-ZDOV)
2023/10/16(月) 11:26:15.00ID:oWsG313D0764デフォルトの名無しさん (ワッチョイ c17e-UrH0)
2023/10/16(月) 11:45:53.44ID:Cp7DR01g0 Ruby の米国年収は、Go/Rust/Elixir の3大言語を超えた!
一方、PHP は情報学部へ行ってない高卒とか
Ruby, Elixir : 9.3 万ドル
Go : 8.9
Rust : 8.7
多くの言語 : 6.5〜7
PHP : 5
Dart : 4.4
Ruby on Rails, AWS Solution Architect は13万ドルとか!
YouTube で有名な雑食系エンジニア・KENTA は、
初心者のキャリアパスは、Rails → Go だけと言ってる
一方、Scala, PHPをオワコン認定した。
使っているのは、Twitter, Facebook ぐらい。
日本はZOZO とか、PHPを使う老人が多い。
たぶん、Web系じゃなくてSIer だろうから、Java に近い。
Railsを使う、モダンなスタートアップとは企業文化が異なる
ガーシーのサロンで使っていたMastodon も、
PHPから、Rails 6 へ変わった
筑波大学でも使っている、Rails チュートリアル日本語版の古いRails 5 なら、
無料で読めるから、まずこれを読むのが最短
一方、PHP は情報学部へ行ってない高卒とか
Ruby, Elixir : 9.3 万ドル
Go : 8.9
Rust : 8.7
多くの言語 : 6.5〜7
PHP : 5
Dart : 4.4
Ruby on Rails, AWS Solution Architect は13万ドルとか!
YouTube で有名な雑食系エンジニア・KENTA は、
初心者のキャリアパスは、Rails → Go だけと言ってる
一方、Scala, PHPをオワコン認定した。
使っているのは、Twitter, Facebook ぐらい。
日本はZOZO とか、PHPを使う老人が多い。
たぶん、Web系じゃなくてSIer だろうから、Java に近い。
Railsを使う、モダンなスタートアップとは企業文化が異なる
ガーシーのサロンで使っていたMastodon も、
PHPから、Rails 6 へ変わった
筑波大学でも使っている、Rails チュートリアル日本語版の古いRails 5 なら、
無料で読めるから、まずこれを読むのが最短
765デフォルトの名無しさん (ワッチョイ c963-e7li)
2023/10/17(火) 01:20:58.48ID:R59hQw8C0 >>761
小規模なら無理にクラスを使う必要はないが、
クラスを使った方が楽だし綺麗に整理出来るので、知ってれば普通は使う。
> php初学時にlaravelの本を読んだ時に呪文みたいなものがたくさんあって
クラス周りの用語、具体的にはクラス/コンストラクタ/プロパティ/メソッド/継承/仮想関数、
等が理解出来ないのはさすがに不味い。
C++が再定義したオブジェクト指向は超便利だったので、C以外の全てのメジャー言語には実装された。
実際、あらゆるドキュメントが大体この形式で書かれてるだろ。
言語関係なく共通だし、知らないでは済まされない。脳味噌へのインストールは必須。
理解はしたが、使う意味/意義が分からないというのは初心者〜中級者がよく陥る状態で、
大体は規模が小さすぎて恩恵がほぼ無いから分からないだけ。(アナログ管理で全く困ってないだけ)
どうしても実感したければ単純には規模を大きくすればいい。
Cみたいに階層がない状況では、一人のプログラマが取り扱えるコード規模は10,000行程度とされていた。
だから10,000行を超えて頭に入りきらない状況になれば、
「この部分はブラックボックスとして切り出し、動くものとして使いたい」という欲求が出てくる。
API/モジュール/クラス等、切り出し方は色々あるが、
お手軽に同一コード内で切り出すのならクラスが便利なのでみんなそうしてるだけ。
ただPHPならRESTにして鯖を細切れにする事も簡単なので、
こちらを選択して各APIを3,000行程度に抑えれば、オブジェクト指向を一生理解せず無視する事も可能だろう。
小規模なら無理にクラスを使う必要はないが、
クラスを使った方が楽だし綺麗に整理出来るので、知ってれば普通は使う。
> php初学時にlaravelの本を読んだ時に呪文みたいなものがたくさんあって
クラス周りの用語、具体的にはクラス/コンストラクタ/プロパティ/メソッド/継承/仮想関数、
等が理解出来ないのはさすがに不味い。
C++が再定義したオブジェクト指向は超便利だったので、C以外の全てのメジャー言語には実装された。
実際、あらゆるドキュメントが大体この形式で書かれてるだろ。
言語関係なく共通だし、知らないでは済まされない。脳味噌へのインストールは必須。
理解はしたが、使う意味/意義が分からないというのは初心者〜中級者がよく陥る状態で、
大体は規模が小さすぎて恩恵がほぼ無いから分からないだけ。(アナログ管理で全く困ってないだけ)
どうしても実感したければ単純には規模を大きくすればいい。
Cみたいに階層がない状況では、一人のプログラマが取り扱えるコード規模は10,000行程度とされていた。
だから10,000行を超えて頭に入りきらない状況になれば、
「この部分はブラックボックスとして切り出し、動くものとして使いたい」という欲求が出てくる。
API/モジュール/クラス等、切り出し方は色々あるが、
お手軽に同一コード内で切り出すのならクラスが便利なのでみんなそうしてるだけ。
ただPHPならRESTにして鯖を細切れにする事も簡単なので、
こちらを選択して各APIを3,000行程度に抑えれば、オブジェクト指向を一生理解せず無視する事も可能だろう。
766デフォルトの名無しさん (ワッチョイ c963-e7li)
2023/10/17(火) 01:21:42.72ID:R59hQw8C0 ただまあそれ以前にPHPはオブジェクト指向には向いてない。
継承の旨味を引き出すには抽象クラスのメソッドで記述する必要があるのだが、
Web周りはオブジェクト指向前提で整備されてないのでだいたいこれが不可能だ。
ここら辺が最初から全てオブジェクト指向前提で設計されてる.NETとかとは違う。
次にPHPの場合は状態保存が出来ない。
オブジェクト指向は各インスタンスに「状態を分散して配置する」ことになるため、
これらを最終的にDBに書き戻すには余分なコードが必要となってしまう。
ここら辺がサーバーが永続的なJS/Go/Rustとは違ってくる。
だからPHPの場合はDBから読み出してこねくり回して吐き出すだけ、
何かあったらDBを更新するだけ、という非常に単純な構造にしかならないわけだが、
実際はこの方がいいので、この点はPHPのショボさが功を奏してる。
Javaの開発工数とか、同様のWebサービスと比べて10倍以上はかかってるだろ。
あれはそもそもオブジェクト指向の「状態を分散して配置する」事自体が間違いな事に気づいてないんだよ。
Javaの連中はJavaこそが大正義であって他はまるで知らない浦島太郎だからあんな事になる。
継承の旨味を引き出すには抽象クラスのメソッドで記述する必要があるのだが、
Web周りはオブジェクト指向前提で整備されてないのでだいたいこれが不可能だ。
ここら辺が最初から全てオブジェクト指向前提で設計されてる.NETとかとは違う。
次にPHPの場合は状態保存が出来ない。
オブジェクト指向は各インスタンスに「状態を分散して配置する」ことになるため、
これらを最終的にDBに書き戻すには余分なコードが必要となってしまう。
ここら辺がサーバーが永続的なJS/Go/Rustとは違ってくる。
だからPHPの場合はDBから読み出してこねくり回して吐き出すだけ、
何かあったらDBを更新するだけ、という非常に単純な構造にしかならないわけだが、
実際はこの方がいいので、この点はPHPのショボさが功を奏してる。
Javaの開発工数とか、同様のWebサービスと比べて10倍以上はかかってるだろ。
あれはそもそもオブジェクト指向の「状態を分散して配置する」事自体が間違いな事に気づいてないんだよ。
Javaの連中はJavaこそが大正義であって他はまるで知らない浦島太郎だからあんな事になる。
767デフォルトの名無しさん (ワッチョイ c963-e7li)
2023/10/17(火) 01:23:34.74ID:R59hQw8C0 > ・ある程度コードが書けるようになったらlaravelを検討するのか
> ・まったくの初学者がlaravelから始めてブラックボックスになっている所は気にするな、というなら
どっちもありだと思うが、そもそも前提が間違ってる。
フレームワークはステップアップではなく、単純に「楽をする為」に導入するものだ。
よく言われてる、「フレームワークを使わなくても、
フレームワーク内に存在するコードとほぼ同じ物を書くハメになるだけだから、さっさと使え」というのは当たってる。
だからフレームワークのドキュメントをさらっと見て、
自分が使いたい機能が有れば使えばいいし、無ければ使わなければいいだけ。
初心者だから止めとけとか、そういう類の話ではない。
実際、C#やJavaではフレームワークを使わない選択肢はなく、
ハロワで既にフレームワークを使ってるはずだが、特に問題にもなってない。
そして使う場合は基本的にブラックボックス扱いだ。
内部まで確認してたらキリがないので、問題なければ内部コードなんて確認しない。
それは気持ち悪い、というのなら、フレームワーク使わずに自分で組め、でしかない。
(自分で組むよりはフレームワークを内部コード精査後にホワイトボックスとして使うなり、
フレームワーク内のコードを基本パクって改変してオレオレ仕様にしたりする方がバグはないだろうが、
一般的にはこの方式の所はあまり無いのではないかと。
フレームワークのバグを心配するなら、アナログに「枯れた機能だけを使う」で対処した方がいい)
> ・まったくの初学者がlaravelから始めてブラックボックスになっている所は気にするな、というなら
どっちもありだと思うが、そもそも前提が間違ってる。
フレームワークはステップアップではなく、単純に「楽をする為」に導入するものだ。
よく言われてる、「フレームワークを使わなくても、
フレームワーク内に存在するコードとほぼ同じ物を書くハメになるだけだから、さっさと使え」というのは当たってる。
だからフレームワークのドキュメントをさらっと見て、
自分が使いたい機能が有れば使えばいいし、無ければ使わなければいいだけ。
初心者だから止めとけとか、そういう類の話ではない。
実際、C#やJavaではフレームワークを使わない選択肢はなく、
ハロワで既にフレームワークを使ってるはずだが、特に問題にもなってない。
そして使う場合は基本的にブラックボックス扱いだ。
内部まで確認してたらキリがないので、問題なければ内部コードなんて確認しない。
それは気持ち悪い、というのなら、フレームワーク使わずに自分で組め、でしかない。
(自分で組むよりはフレームワークを内部コード精査後にホワイトボックスとして使うなり、
フレームワーク内のコードを基本パクって改変してオレオレ仕様にしたりする方がバグはないだろうが、
一般的にはこの方式の所はあまり無いのではないかと。
フレームワークのバグを心配するなら、アナログに「枯れた機能だけを使う」で対処した方がいい)
768デフォルトの名無しさん (ワッチョイ c963-e7li)
2023/10/17(火) 01:24:30.33ID:R59hQw8C0 この辺はPHP界隈でたまにいる「DBでなく、ファイルでやりたいんですけど…」が分かりやすいだろう。
この場合本人は既にプログラミングはそこそこ出来て、
欲しい物は今現在の自分で十分実装可能だと分かってる。
そしてDBの知識が十分でなく、勉強するのが面倒か、慣れてない物を使うのは危険だと判断してる。
だから自前でファイルから変数を切り出すルーチンを書くわけだ。その方が自信が持てるから。
ただ当たり前だが、同様のコードはDB内には既に存在してて、そいつが書くよりも100倍品質もいい。
そして何だかんだで仕様は肥大化し、
その都度そいつのオレオレファイルDBモドキにもコードが書き加えられていくわけだが、
最終的に、「で?お前はこれに延べ何時間費やしたわけ?それで出来上がったのがこのウンコなDBモドキ?
なら最初からSQL勉強してDB使った方が堅牢で拡張性もあって速度も速いし、工数もかからなかったよね」にしかならない。
(そもそもDB内のコードなんてPHPerは誰も読んでないしブラックボックスだが気にしてないだろ)
だから考えるべきは「今」ではなく「最終状態」であって、
仮にお前の思惑通り事が運んだとして、最終的にどこまでやるつもりなのか?なんだよ。
最終的にも数行読めれば十分ならファイルで構わないが、
最終的にはDBが必要になるのなら、最初からDBで組んだ方がいい。
同様に、最終的にフレームワークが必要となるなら、最初からフレームワークを使うべき。
よく言われてるのは「セッション管理を自前でやるとだいたいバグるからフレームワーク使え」で、
逆に言えばセッション管理を厳密にやる必要がなく、特に欲しい機能もなければ、フレームワークを使う必要がない。
繰り返すがこれは「今」ではない。
つまり、「『今は』初心者だから」「『今は』フレームワークに慣れてないから」
「『今は』DBを知らないから」「『今は』クラスの理解が足りてないから」ではなく、
今、知識/技術が有ろうが無かろうが、最終的に必要なら使って慣れるしかないんだよ。
この場合本人は既にプログラミングはそこそこ出来て、
欲しい物は今現在の自分で十分実装可能だと分かってる。
そしてDBの知識が十分でなく、勉強するのが面倒か、慣れてない物を使うのは危険だと判断してる。
だから自前でファイルから変数を切り出すルーチンを書くわけだ。その方が自信が持てるから。
ただ当たり前だが、同様のコードはDB内には既に存在してて、そいつが書くよりも100倍品質もいい。
そして何だかんだで仕様は肥大化し、
その都度そいつのオレオレファイルDBモドキにもコードが書き加えられていくわけだが、
最終的に、「で?お前はこれに延べ何時間費やしたわけ?それで出来上がったのがこのウンコなDBモドキ?
なら最初からSQL勉強してDB使った方が堅牢で拡張性もあって速度も速いし、工数もかからなかったよね」にしかならない。
(そもそもDB内のコードなんてPHPerは誰も読んでないしブラックボックスだが気にしてないだろ)
だから考えるべきは「今」ではなく「最終状態」であって、
仮にお前の思惑通り事が運んだとして、最終的にどこまでやるつもりなのか?なんだよ。
最終的にも数行読めれば十分ならファイルで構わないが、
最終的にはDBが必要になるのなら、最初からDBで組んだ方がいい。
同様に、最終的にフレームワークが必要となるなら、最初からフレームワークを使うべき。
よく言われてるのは「セッション管理を自前でやるとだいたいバグるからフレームワーク使え」で、
逆に言えばセッション管理を厳密にやる必要がなく、特に欲しい機能もなければ、フレームワークを使う必要がない。
繰り返すがこれは「今」ではない。
つまり、「『今は』初心者だから」「『今は』フレームワークに慣れてないから」
「『今は』DBを知らないから」「『今は』クラスの理解が足りてないから」ではなく、
今、知識/技術が有ろうが無かろうが、最終的に必要なら使って慣れるしかないんだよ。
769デフォルトの名無しさん (ワッチョイ c963-e7li)
2023/10/17(火) 01:26:52.67ID:R59hQw8C0 多分721も751も以下分類では中級者になる。
初心者:欲しい機能の実装にも手こずる。(プログラミング経験0〜3000時間)
中級者:欲しい機能は一通り実装出来る。(プログラミング経験3000〜5000時間≒社畜歴2年)
上級者:仕様から複数の実装を検討し、初手から最適解を目指せる。(プログラミング経験5000時間以上)
状況について詳しく言うなら、
・動けばいいのなら何であれ実装出来るから今現在の技術/知識で何ら困ってない。
・果たして自分のコードが美しいのか汚いのかはよく分からんが、
少なくとも自分のコードは読めるので取り立てて困ってない。
・世の中には他の方法もあるらしいが、勉強する価値があるのかもよく分からん。まあ一応読んではみたが…。
てな所だろう。これは順当な上達過程で、誰しも通る道だ。
そこで道は分かれるわけだが、90年代の場合、
Java(1995):C++が導入したクラススゲー。全部クラスで、ポインタ廃止したら完璧じゃね?
Ruby(1995):C++が導入したクラススゲー。全部オブジェクトでいけるんじゃね?
C#(2000):C++が導入したクラススゲー。でもC++はちょっと…
C++(1983):馬鹿はJava、軟派はC#使ってろ。漢は黙ってC++。
C(1972):いやCで特に不満無いし…。
PHP(1995):クラス?そんなもの無くても出来るでしょ。
同時期以降の別言語が全てクラスを採用する中、ラスマス・ラードフは無視しやがったのがPHPの不幸なところだ。
PHPがArray::xxxやString::yyyとなってれば、「クラスがよく分からない」なんて事になりようもなかった。
が、まあ、これを言っても始まらない。上達の為の次の順当な方策は、JSをやる事だ。
https://プログラマが知るべき97のこと.com/エッセイ/プログラミング言語は複数習得すべき/
初心者:欲しい機能の実装にも手こずる。(プログラミング経験0〜3000時間)
中級者:欲しい機能は一通り実装出来る。(プログラミング経験3000〜5000時間≒社畜歴2年)
上級者:仕様から複数の実装を検討し、初手から最適解を目指せる。(プログラミング経験5000時間以上)
状況について詳しく言うなら、
・動けばいいのなら何であれ実装出来るから今現在の技術/知識で何ら困ってない。
・果たして自分のコードが美しいのか汚いのかはよく分からんが、
少なくとも自分のコードは読めるので取り立てて困ってない。
・世の中には他の方法もあるらしいが、勉強する価値があるのかもよく分からん。まあ一応読んではみたが…。
てな所だろう。これは順当な上達過程で、誰しも通る道だ。
そこで道は分かれるわけだが、90年代の場合、
Java(1995):C++が導入したクラススゲー。全部クラスで、ポインタ廃止したら完璧じゃね?
Ruby(1995):C++が導入したクラススゲー。全部オブジェクトでいけるんじゃね?
C#(2000):C++が導入したクラススゲー。でもC++はちょっと…
C++(1983):馬鹿はJava、軟派はC#使ってろ。漢は黙ってC++。
C(1972):いやCで特に不満無いし…。
PHP(1995):クラス?そんなもの無くても出来るでしょ。
同時期以降の別言語が全てクラスを採用する中、ラスマス・ラードフは無視しやがったのがPHPの不幸なところだ。
PHPがArray::xxxやString::yyyとなってれば、「クラスがよく分からない」なんて事になりようもなかった。
が、まあ、これを言っても始まらない。上達の為の次の順当な方策は、JSをやる事だ。
https://プログラマが知るべき97のこと.com/エッセイ/プログラミング言語は複数習得すべき/
770デフォルトの名無しさん (ワッチョイ c963-e7li)
2023/10/17(火) 01:28:15.91ID:R59hQw8C0 フルスタック(キリッ、の通り、クライアントサイドで何がどこまで出来るかを把握しておく事は全体最適化には必須。
達人である必要はないが、どれくらい手間なのか分からないのは不味い。
クラスは難しいものではなく、使ってないから分からないだけ。
強制的に使うのなら標準がクラスで構成されてる言語がいい。(今のメジャー言語は全部該当するが)
PHPの次はJSだろうよ。
なおPHPの場合は節操なく取り込んでるので結果的に「全部入り」に近く、
PHPだけで学ぶのも理論的には可能だが、そもそも知らない奴が正しい方向性を見切るのは無理なので、現実的に無理だ。
PHPでは今まで通りのコードを書きつつ、JSで色々試し、
クラスに慣れたらPHPでもクラスを使って書いていく、というのが多分妥当な道筋。
達人である必要はないが、どれくらい手間なのか分からないのは不味い。
クラスは難しいものではなく、使ってないから分からないだけ。
強制的に使うのなら標準がクラスで構成されてる言語がいい。(今のメジャー言語は全部該当するが)
PHPの次はJSだろうよ。
なおPHPの場合は節操なく取り込んでるので結果的に「全部入り」に近く、
PHPだけで学ぶのも理論的には可能だが、そもそも知らない奴が正しい方向性を見切るのは無理なので、現実的に無理だ。
PHPでは今まで通りのコードを書きつつ、JSで色々試し、
クラスに慣れたらPHPでもクラスを使って書いていく、というのが多分妥当な道筋。
771デフォルトの名無しさん (スッップ Sd33-Y0aP)
2023/10/17(火) 11:52:24.20ID:nEN1t9hTd Laravelでコーディングする時、コーディングする順序は
1、SQL等のDB周り
2、バックエンド動かすコントローラー(api.phpの方)
3、フロント用のコントローラー(web.phpの方)
4、view
って順序でイメージあってる?
1、SQL等のDB周り
2、バックエンド動かすコントローラー(api.phpの方)
3、フロント用のコントローラー(web.phpの方)
4、view
って順序でイメージあってる?
772デフォルトの名無しさん (ワッチョイ 0149-HvQf)
2023/10/17(火) 16:33:35.10ID:wBPhMFC20 好きなとこからやれ
決まってるところからやれ
仕事なら会社の言う通りにしろ
決まってるところからやれ
仕事なら会社の言う通りにしろ
773デフォルトの名無しさん (ワッチョイ fabd-Tb+e)
2023/10/21(土) 01:03:11.56ID:dh9vzKli0 PHPが遅いってのは分かるが、絶望的に遅いか?って言われたらそうは思わんな
スーパーに買い物に行くのにスポーツカーは必要ないし、むしろ使いにくい
小回りのきく軽自動車で十分って状況も多々ある
スーパーに買い物に行くのにスポーツカーは必要ないし、むしろ使いにくい
小回りのきく軽自動車で十分って状況も多々ある
774デフォルトの名無しさん (ワッチョイ 8d36-g91V)
2023/10/21(土) 09:18:37.85ID:yXW/Zb3m0 既に運用中のサイトにおいてPHP7系から8に移行する際、皆さんどんな苦労されました?
自分は前任者が書いたサイトを引き継ぎしたんだけど、内容はPHP5時代に書かれたコードを扱わなきゃいけなくて…
レンタルサーバーが強制的にPHP8に移行するにあたって500ファイルほど目視チェック、動かない原因になる箇所を直していったのが大変だった
countとimplodeとかその辺りの関数がFatal error出すのでシコシコ直していったよ
自分は前任者が書いたサイトを引き継ぎしたんだけど、内容はPHP5時代に書かれたコードを扱わなきゃいけなくて…
レンタルサーバーが強制的にPHP8に移行するにあたって500ファイルほど目視チェック、動かない原因になる箇所を直していったのが大変だった
countとimplodeとかその辺りの関数がFatal error出すのでシコシコ直していったよ
775デフォルトの名無しさん (ワッチョイ 1ade-cYzw)
2023/10/22(日) 15:40:10.82ID:lOEqj3QG0 ゼロから作り直したほうが早い
776デフォルトの名無しさん (ワッチョイ 8e5f-ANn9)
2023/10/22(日) 18:07:33.50ID:xV2fKCwr0777デフォルトの名無しさん (ワッチョイ 19f7-NW8N)
2023/10/27(金) 15:17:52.24ID:O5trZ+em0 なるほど、その手があったか
エラー無視つけてたわ
エラー無視つけてたわ
778デフォルトの名無しさん (ワッチョイ fe06-j+tp)
2023/11/19(日) 11:56:48.15ID:vcL8dlfS0 >>774
前任者どころか、自分で書いたコードですら修正するの大変だわ
よほどのセキュリティホールでも無い限り、古いまま運用してもいいと思うよ
Javaで古いバージョンが乗っ取りとかってあったけど、
PHPはそういうのないし、ページ毎のセキュリティ対策してたら大丈夫でしょ
(違うなら誰か事例を出して指摘してください
前任者どころか、自分で書いたコードですら修正するの大変だわ
よほどのセキュリティホールでも無い限り、古いまま運用してもいいと思うよ
Javaで古いバージョンが乗っ取りとかってあったけど、
PHPはそういうのないし、ページ毎のセキュリティ対策してたら大丈夫でしょ
(違うなら誰か事例を出して指摘してください
779デフォルトの名無しさん (ワッチョイ 72e1-N5Jg)
2023/11/22(水) 14:01:49.19ID:gEe16+Fw0 初心者なので初歩的な質問になりますm(_ _)m
phpのフレームワークlaravelについての質問なんですが
Illminate/Foundation/Application.phpのApplicationクラスのbootstrapWithというメソッドの中に$this['events'] -> dispatch( 〜
という記述があるのですがこの$thisはApplicationクラスのインスタンスだと思うのですが
なぜ$this['events']のように$thisの後にブラケットが続いてるのでしょうか?
dd($this)とやって調べて見ましたがやはり配列ではなくApplicationのインスタンスで
dd($this['events'])で調べたらDispatcherというオブジェクトでした
なぜブラケット構文でインスタンスにアクセスできるのか分かりません
この$thisはなんですか?
phpのフレームワークlaravelについての質問なんですが
Illminate/Foundation/Application.phpのApplicationクラスのbootstrapWithというメソッドの中に$this['events'] -> dispatch( 〜
という記述があるのですがこの$thisはApplicationクラスのインスタンスだと思うのですが
なぜ$this['events']のように$thisの後にブラケットが続いてるのでしょうか?
dd($this)とやって調べて見ましたがやはり配列ではなくApplicationのインスタンスで
dd($this['events'])で調べたらDispatcherというオブジェクトでした
なぜブラケット構文でインスタンスにアクセスできるのか分かりません
この$thisはなんですか?
780デフォルトの名無しさん (ワッチョイ 465f-jMfl)
2023/11/23(木) 00:07:02.72ID:RFVqy5fX0781デフォルトの名無しさん (ワッチョイ 7901-YT2O)
2023/11/23(木) 00:43:06.46ID:AzseZZHe0 最近はそれくらいの難度なら
GPTさんに質問する人が増えたから
あまり書き込みにこないんだろうな
GPTさんに質問する人が増えたから
あまり書き込みにこないんだろうな
782デフォルトの名無しさん (ワッチョイ 72a2-N5Jg)
2023/11/23(木) 00:46:28.93ID:op2UpQwL0 >>780
オブジェクトを作って試しましたがオブジェクトは配列として使用できないとエラーが出ます
どのようにそれを可能にしているのかを教えていただけませんか?
初歩的な質問で申し訳ありませんがググっても出てこないので
オブジェクトを作って試しましたがオブジェクトは配列として使用できないとエラーが出ます
どのようにそれを可能にしているのかを教えていただけませんか?
初歩的な質問で申し訳ありませんがググっても出てこないので
783デフォルトの名無しさん (ワッチョイ e93b-8MWH)
2023/11/23(木) 01:01:05.45ID:pAGXWPD10 オブジェクトに対して配列風にアクセスするといえばこれか
https://www.php.net/manual/ja/class.arrayaccess.php
https://www.php.net/manual/ja/class.arrayaccess.php
784デフォルトの名無しさん (ワッチョイ 72a2-N5Jg)
2023/11/23(木) 07:25:04.23ID:op2UpQwL0785デフォルトの名無しさん (ワッチョイ bf5f-HI/Z)
2023/12/09(土) 23:46:53.06ID:fGdJSgyw0 学習コストが低めのフレームワークでおすすめある?
Laravel,CakePHP以外で
Laravel,CakePHP以外で
786デフォルトの名無しさん (ワッチョイ 7716-pmcO)
2023/12/10(日) 10:42:24.34ID:PVGCDu/Y0 オレオレフレームワーク
787デフォルトの名無しさん (ワッチョイ 7f3f-opNu)
2023/12/14(木) 16:59:59.82ID:t1zoVVGt0 WordPressってPHP7.4以上が推奨環境なんだけど、
PHP8.0までセキュリティサポートが切れてる
なんで7.4以上なんだろ?
PHP8.0までセキュリティサポートが切れてる
なんで7.4以上なんだろ?
788デフォルトの名無しさん (ワッチョイ 575f-6RB4)
2023/12/14(木) 21:46:47.06ID:SDKVvk710 プラグインの対応を考えると7.4まで戻さないといけないんじゃないかな?
8.1まではあまり影響なかったけど8.2からひどかった記憶、最後に仕事して一年以上経ってるから状況変わってるだろうけど
8.1まではあまり影響なかったけど8.2からひどかった記憶、最後に仕事して一年以上経ってるから状況変わってるだろうけど
789デフォルトの名無しさん (スップ Sdbf-6RB4)
2023/12/15(金) 15:26:36.63ID:UGjdTC/zd このフレームワークはプログラム技術板的にPHPなの?Goなの?
米Laravelは、Go言語で書かれたPHPアプリケーションサーバであるFrankenPHPの最新バージョンとなる「FrankenPHP 1.0」を、12月11日(現地時間)にリリースした。
FrankenPHP 1.0には、Symphony、Laravel、WordPressなどのネイティブサポートが含まれるほか、Caddyを搭載したプロダクショングレードのPHPサーバであり、PHPアプリのスタンドアロンで実行可能なバイナリとしてのパッケージ化が可能となっている。
さらに、PHP-FPMとNgnixを個別に実行する必要がなく、1つのサービスのみでPHPサーバを提供できるようになるとともに、PHP 8.2以降のほとんどのPHP機能拡張、およびすべてのCaddyモジュールと互換性がある。
ほかにも、アプリケーション起動してメモリに保持するワーカーモード、JavaScriptイベントとしてWebブラウザへ送信されるリアルタイムイベント、ZstandardおよびGzip圧縮、構造化されたログ、Prometheusメトリクスを使用したCaddyの監視、HTTPS・HTTP/2・HTTP/3のネイティブサポート、HTTPS証明書の自動生成や更新、ダウンタイムなしでのアプリのデプロイといった、充実した機能を搭載している。
米Laravelは、Go言語で書かれたPHPアプリケーションサーバであるFrankenPHPの最新バージョンとなる「FrankenPHP 1.0」を、12月11日(現地時間)にリリースした。
FrankenPHP 1.0には、Symphony、Laravel、WordPressなどのネイティブサポートが含まれるほか、Caddyを搭載したプロダクショングレードのPHPサーバであり、PHPアプリのスタンドアロンで実行可能なバイナリとしてのパッケージ化が可能となっている。
さらに、PHP-FPMとNgnixを個別に実行する必要がなく、1つのサービスのみでPHPサーバを提供できるようになるとともに、PHP 8.2以降のほとんどのPHP機能拡張、およびすべてのCaddyモジュールと互換性がある。
ほかにも、アプリケーション起動してメモリに保持するワーカーモード、JavaScriptイベントとしてWebブラウザへ送信されるリアルタイムイベント、ZstandardおよびGzip圧縮、構造化されたログ、Prometheusメトリクスを使用したCaddyの監視、HTTPS・HTTP/2・HTTP/3のネイティブサポート、HTTPS証明書の自動生成や更新、ダウンタイムなしでのアプリのデプロイといった、充実した機能を搭載している。
790デフォルトの名無しさん (ワッチョイ 7ff7-OWs5)
2023/12/15(金) 17:16:53.14ID:Or7pgbin0 フレームワークじゃなくてアプリケーションサーバ
Goで書いてる内部実装の話じゃなければPHP
Goで書いてる内部実装の話じゃなければPHP
791デフォルトの名無しさん (ワッチョイ a795-+vxZ)
2023/12/17(日) 12:50:33.31ID:Ejq9svn00 やっぱRubyとは違うな
792デフォルトの名無しさん (ワッチョイ 16a7-Lmmi)
2023/12/18(月) 10:08:31.91ID:/4mKYZLK0 導入部がどんどんコテコテになっていくな
もう新規は洋梨か
もう新規は洋梨か
793デフォルトの名無しさん (ワッチョイ 338a-pDLy)
2023/12/28(木) 04:23:04.89ID:NBXduxv20 フラグ管理の効率的な方法を教えて下さい。
作成中の社内向け事務アプリなんですが、判定要素が多くなりすぎて毎回読む度に悩みます。
ユーザーに割り当てられた権限や日時による分岐がめっちゃ多いです。
例えば、シンプルなやつだと下記みたいな感じです。
※権限には、種類とランクがあります。
・権限Aを持っているユーザーB〜Eが、日時F〜Gの間に許可した時だけ、
ユーザーH・Iが日時J〜Kの間だけ権限L・Mを付与されて、
その権限を行使して処理NまたはOを合計2回行った時に、その権限を付与したユーザー(B〜E)の権限PをQ〜Rの期間降格する。
作成中の社内向け事務アプリなんですが、判定要素が多くなりすぎて毎回読む度に悩みます。
ユーザーに割り当てられた権限や日時による分岐がめっちゃ多いです。
例えば、シンプルなやつだと下記みたいな感じです。
※権限には、種類とランクがあります。
・権限Aを持っているユーザーB〜Eが、日時F〜Gの間に許可した時だけ、
ユーザーH・Iが日時J〜Kの間だけ権限L・Mを付与されて、
その権限を行使して処理NまたはOを合計2回行った時に、その権限を付与したユーザー(B〜E)の権限PをQ〜Rの期間降格する。
794デフォルトの名無しさん (ワッチョイ 338a-pDLy)
2023/12/28(木) 04:23:58.49ID:NBXduxv20 すみません。
スレ立てるまでもない〜スレに行きます。
スレ立てるまでもない〜スレに行きます。
795デフォルトの名無しさん (ワッチョイ df6f-tnpw)
2024/01/10(水) 16:15:07.69ID:PTL/6ftd0 PHPのクラスを理解できていない 及び 運用・実装したことない
ユーザー定義関数なら扱えるレベル
CakephpやLaravel等のフレームワーク扱った事がない
実務は約5年
これで中途採用の場合、月収幾らくらいが妥当ですか🥹
ユーザー定義関数なら扱えるレベル
CakephpやLaravel等のフレームワーク扱った事がない
実務は約5年
これで中途採用の場合、月収幾らくらいが妥当ですか🥹
796デフォルトの名無しさん (ワッチョイ 7fa9-W2R0)
2024/01/10(水) 16:53:39.33ID:dVV8o+q90797デフォルトの名無しさん (ワッチョイ 7f9a-lSjW)
2024/01/10(水) 20:04:25.62ID:zlHvcH430 コピペプログラムでも30はいけるからな
798デフォルトの名無しさん (ワッチョイ df0e-tnpw)
2024/01/10(水) 20:16:50.25ID:PTL/6ftd0 >796 >797
ええええー!マジですか😭…羨ましい!!
メールフォームはもちろん、サーバー関連もLinux一通りは触れて、データベースも GUIではなくてLinux上から操作出来るくらいのレベル感ではあるんだよね…
求職する時、文字だけだと自分のレベル感と会社が求めてるレベル感が分からなくていつも「クラス実装出来ないし概念理解してないけど大丈夫かな」とか「フレームワーク扱った事ないし…docker?何それ美味しいの?」って感じで二の足踏んでしまうんだよね
ええええー!マジですか😭…羨ましい!!
メールフォームはもちろん、サーバー関連もLinux一通りは触れて、データベースも GUIではなくてLinux上から操作出来るくらいのレベル感ではあるんだよね…
求職する時、文字だけだと自分のレベル感と会社が求めてるレベル感が分からなくていつも「クラス実装出来ないし概念理解してないけど大丈夫かな」とか「フレームワーク扱った事ないし…docker?何それ美味しいの?」って感じで二の足踏んでしまうんだよね
799デフォルトの名無しさん (ワッチョイ ff5f-03E5)
2024/01/12(金) 00:03:02.51ID:twL7njza0 フレームワークを扱えばいいし、dockerも勉強すればいいよ
そもそもフレームワークなしでやれてたんなら 何でも独学できるだろ
体系的な学習はとにもかくにもいじり倒した後からだ
そもそもフレームワークなしでやれてたんなら 何でも独学できるだろ
体系的な学習はとにもかくにもいじり倒した後からだ
800デフォルトの名無しさん (ワッチョイ ffb6-tnpw)
2024/01/13(土) 14:07:59.64ID:3NziHgVl0 >>796
ちなみにSES?
ちなみにSES?
801デフォルトの名無しさん (オッペケ Srbd-Ti6e)
2024/01/30(火) 04:09:24.38ID:geI1NBE8r PHP初級取ろうと思ってますが、取りやすいのはどっちですか?
簡単な方を教えてください。
簡単な方を教えてください。
802デフォルトの名無しさん (オッペケ Srbd-Ti6e)
2024/01/30(火) 04:10:11.35ID:geI1NBE8r PHP7 vs PHP8 の比較です
803デフォルトの名無しさん (ワッチョイ 3599-m8Y1)
2024/01/30(火) 07:13:24.16ID:xc6jeStg0 上司から取ってこいと言われたのでなければ止めとけとしか
俺はPHPerではないけども
俺はPHPerではないけども
804デフォルトの名無しさん (オッペケ Srbd-Ti6e)
2024/01/31(水) 13:32:55.85ID:k++D0k1Yr >>803
俺はデザイナーなので仕事上ではなくてもいい資格なんだが、取りやすそうで見栄えも良さそう資格って事でこれとろうかなと、webクリエイターの資格もってるがゴミ資格なんでゴミ資格でもないやつ取りたい。
俺はデザイナーなので仕事上ではなくてもいい資格なんだが、取りやすそうで見栄えも良さそう資格って事でこれとろうかなと、webクリエイターの資格もってるがゴミ資格なんでゴミ資格でもないやつ取りたい。
805デフォルトの名無しさん (ワッチョイ b6d0-9w1M)
2024/01/31(水) 14:50:49.67ID:GiaFK7PQ0 >804
少しでもプログラムを書く予定があるなら PHP8が良いよ
なぜかと言うと、7→8のアップデートで仕様が大幅に変わったから
7の細かいルールを覚えてしまってから8を触ったら「あれ?動かない…」となる可能性あるので
少しでもプログラムを書く予定があるなら PHP8が良いよ
なぜかと言うと、7→8のアップデートで仕様が大幅に変わったから
7の細かいルールを覚えてしまってから8を触ったら「あれ?動かない…」となる可能性あるので
806デフォルトの名無しさん (ワッチョイ 1149-Y1Fy)
2024/01/31(水) 15:02:37.76ID:KXDkvASJ0 資格で語れる業界に行きたいんなら良いんじゃね
ITは基本、実績や書き物で語ることが多いと思うけどね
ITは基本、実績や書き物で語ることが多いと思うけどね
807デフォルトの名無しさん (ワッチョイ 8a8b-7cac)
2024/01/31(水) 15:18:08.36ID:Cu19VVGy0 逆にIT系の資格一杯持ってるやつのほうが実務で使えねー
808デフォルトの名無しさん (ワッチョイ 9ee7-TUA6)
2024/01/31(水) 17:23:01.53ID:grzeycve0809デフォルトの名無しさん (ワッチョイ 8a8b-7cac)
2024/01/31(水) 17:28:55.09ID:Cu19VVGy0810デフォルトの名無しさん (ワッチョイ 1163-on57)
2024/01/31(水) 17:29:39.20ID:jcvgDSDi0 銃が使えるからって戦場で役に立つとはならないぞ
811デフォルトの名無しさん (ワッチョイ eaa9-+O6P)
2024/01/31(水) 17:30:21.84ID:OojRe9/Q0 ワイphp7とphp8の違いがわからずに簡単なコード書いてるし運転免許以外資格も持ってなくても35万給料もらえていることに感謝
812デフォルトの名無しさん (ワッチョイ 9601-JLAu)
2024/01/31(水) 17:31:41.54ID:3ULZXNFO0 属してる組織の技術レベルによるんだよね
上に行けば行くほどIT資格一杯持ってるやつのほうが使えねーってなる
下に行けば行くほどIT資格一杯持ってるやつのほうが使えるーってなる
上に行けば行くほどIT資格一杯持ってるやつのほうが使えねーってなる
下に行けば行くほどIT資格一杯持ってるやつのほうが使えるーってなる
813デフォルトの名無しさん (ワッチョイ b6d0-9w1M)
2024/01/31(水) 17:40:24.48ID:GiaFK7PQ0 >811
SIerとSESどっちかな?
ついでに額面か手取りかも教えてくださいw
SIerとSESどっちかな?
ついでに額面か手取りかも教えてくださいw
814デフォルトの名無しさん (ワッチョイ eaa9-+O6P)
2024/01/31(水) 17:57:51.74ID:OojRe9/Q0 >>813
ごめん単語が何言ってるかわからない・・・
ごめん単語が何言ってるかわからない・・・
815デフォルトの名無しさん (ワッチョイ b6d0-9w1M)
2024/01/31(水) 20:57:41.85ID:GiaFK7PQ0 >814
ざっくり言うと、
「自社開発していて自社出勤の正社員」=SIer
「委託や請負で客先常駐の社員。派遣では無いが実質派遣ぽい動きしてる」=SES
↑かなり乱暴な言い方だけどw
https://levtech.jp/partner/guide/article/detail/163/
ざっくり言うと、
「自社開発していて自社出勤の正社員」=SIer
「委託や請負で客先常駐の社員。派遣では無いが実質派遣ぽい動きしてる」=SES
↑かなり乱暴な言い方だけどw
https://levtech.jp/partner/guide/article/detail/163/
816デフォルトの名無しさん (ワッチョイ 7501-8Us2)
2024/01/31(水) 23:14:06.95ID:j8r5fr530 >>815
突っ込みどころ満載すぎ
SIerは企業の種類でSESはサービスの種類
SIerの正社員がSESで客先常駐というのも普通にある
自社開発という言葉は自社向けのシステムを開発することを指していて
SIerが受託開発等で客先に常駐せず自社に出勤して開発することではない
請負の客先常駐はSESとは呼ばない
SESは基本的に準委任契約
突っ込みどころ満載すぎ
SIerは企業の種類でSESはサービスの種類
SIerの正社員がSESで客先常駐というのも普通にある
自社開発という言葉は自社向けのシステムを開発することを指していて
SIerが受託開発等で客先に常駐せず自社に出勤して開発することではない
請負の客先常駐はSESとは呼ばない
SESは基本的に準委任契約
817デフォルトの名無しさん (ワッチョイ 62f4-UXSU)
2024/02/17(土) 15:04:47.81ID:RQ5FiJGb0 1、クライアント(C++で作ったアプリ)がLaravelで作ったAPIにアクセス
2、APIにアクセスされたらクライアントにファイルダウンロード
3、ダウンロード完了したらサーバー上のデータをbackupディレクトリに移動
ダウンロードの完了をLaravel側(PHP)が知る方法ってないよね?
2、APIにアクセスされたらクライアントにファイルダウンロード
3、ダウンロード完了したらサーバー上のデータをbackupディレクトリに移動
ダウンロードの完了をLaravel側(PHP)が知る方法ってないよね?
818デフォルトの名無しさん (ワッチョイ cb01-M+5H)
2024/02/17(土) 15:53:22.94ID:+ZrZNmrG0 クライアントから完了通知を送る
完了通知がないとクライアントがすべて正常に受け取ったかどうかはわからない
サーバー側だけでわかるのはデータをネットワークI/Oのレスポンスとして全部書き出したかどうか
完了通知がないとクライアントがすべて正常に受け取ったかどうかはわからない
サーバー側だけでわかるのはデータをネットワークI/Oのレスポンスとして全部書き出したかどうか
819デフォルトの名無しさん (ワッチョイ 62f4-UXSU)
2024/02/17(土) 16:09:44.18ID:RQ5FiJGb0 ダウンロード用のスレッド(タスク)終わったらダウンロード完了通知するスレッド始めりゃ良いのか
ありがとう
ありがとう
820デフォルトの名無しさん (ワッチョイ 7271-XyAm)
2024/02/17(土) 19:05:09.44ID:4U2VM1d40 ファイル送る前に、MD5とかのファイルハッシュを送っておいて、受信完了レスポンスはクライアント側のMD5を送ってもらって、合致したら処理完了
とするとより安全だわな
とするとより安全だわな
821デフォルトの名無しさん (ワッチョイ cb63-hHXc)
2024/02/17(土) 20:18:28.04ID:HHGIbwMU0 今の通信品質ってそんなに悪いのか?
822デフォルトの名無しさん (ワッチョイ 7271-XyAm)
2024/02/17(土) 23:35:32.81ID:4U2VM1d40 あ、いやさ、バックアップディレクトリに移動ってあったから、何らかのトラブルがあった時に、多分手作業で戻さなくちゃならんくなるじゃん
保険と思って実装しておくのが安心かなとね、俺は低品質回線の国とかとのやりとりがあるから、敏感になってるのもあるけどね
だからかUDPよりTCPかつチェックサムなど入れてる
保険と思って実装しておくのが安心かなとね、俺は低品質回線の国とかとのやりとりがあるから、敏感になってるのもあるけどね
だからかUDPよりTCPかつチェックサムなど入れてる
823デフォルトの名無しさん (ワッチョイ e3eb-IyhQ)
2024/02/19(月) 10:13:37.18ID:sL/5dHSK0 MD5が技術と時間的に厳しかったからダウンロードしたファイル名(秒単位までの時間)を送信して対応することにしました
ありがとうございました
ありがとうございました
824デフォルトの名無しさん (ワッチョイ c61c-CNfw)
2024/03/10(日) 12:02:36.25ID:L6LWs13j0 環境ってフレームワークや言語ごとにvmwareでわけたらいいのか、それともdockerがよいのか、
先輩方教えてください
先輩方教えてください
825デフォルトの名無しさん (ワッチョイ 82a9-dft5)
2024/03/12(火) 01:50:45.53ID:TnUWR0Du0 動作しているコードでVSCodeで赤く表示されるところを直そうと思い
$row[\"id\"]}
とエスケープしようとするとエラーと出ます。
赤く表示されるのはvscodeが何か勘違いしているということでしょうか?
https://i.imgur.com/RdSJ8HS.png
$row[\"id\"]}
とエスケープしようとするとエラーと出ます。
赤く表示されるのはvscodeが何か勘違いしているということでしょうか?
https://i.imgur.com/RdSJ8HS.png
826デフォルトの名無しさん (ワッチョイ f28d-kuGp)
2024/03/12(火) 02:57:29.14ID:oTlhluwZ0 {$row['id']}にしてみ
827デフォルトの名無しさん (ワッチョイ 2930-n0E3)
2024/03/12(火) 10:50:36.47ID:meXeXcdC0 >825
>826のように波括弧で括るか、ダブルクォーテーションをシングルクオーテーションにしてみ
>826のように波括弧で括るか、ダブルクォーテーションをシングルクオーテーションにしてみ
828デフォルトの名無しさん (ワッチョイ 82a9-dft5)
2024/03/12(火) 17:55:50.35ID:TnUWR0Du0829デフォルトの名無しさん (ワッチョイ 2930-n0E3)
2024/03/13(水) 01:02:40.75ID:GqTsKoAX0 >828
実際の開発現場ではコーディングのルール決まってるからシングルクオーテーションやダブルクオーテーションを混ぜて使ったりしては駄目だから気を付けてねー
実際の開発現場ではコーディングのルール決まってるからシングルクオーテーションやダブルクオーテーションを混ぜて使ったりしては駄目だから気を付けてねー
830デフォルトの名無しさん (ワッチョイ 5dbb-B4RS)
2024/04/01(月) 23:48:30.99ID:VotzuRBw0 postするデータってなんでもかんだもCSRF検証するものですか?
831デフォルトの名無しさん (ワッチョイ 5dbb-B4RS)
2024/04/01(月) 23:53:33.26ID:VotzuRBw0 SPA作ったんですがCSRF検証してません
ポストするデータはゲームのステージデータです
仮にCSRF攻撃されたとしてもステージデータが増えるだけなんですがこういうケースでもCSRF検証はすべきでしょうか?
ポストするデータはゲームのステージデータです
仮にCSRF攻撃されたとしてもステージデータが増えるだけなんですがこういうケースでもCSRF検証はすべきでしょうか?
832デフォルトの名無しさん (ワッチョイ 1b3f-T8CQ)
2024/04/02(火) 00:37:08.09ID:Y1y4I8En0 本人の意図しないところでステージデータがポコポコ増えたら困るでしょ?
833デフォルトの名無しさん (ワッチョイ 4530-Cim3)
2024/04/02(火) 09:20:13.00ID:MCcZjXUK0 このケースでは検証すべき、こっちではしなくて良い、とかやってるとそのうちその振り分けでやらかしそうだから
如何なる場合でもPOSTデータは検証すべき
如何なる場合でもPOSTデータは検証すべき
834デフォルトの名無しさん (ワッチョイ 5dbb-B4RS)
2024/04/02(火) 16:50:28.30ID:4sW3pgf50 そうですか
ありがとうございました
ありがとうございました
835デフォルトの名無しさん (ワッチョイ 5dbb-B4RS)
2024/04/03(水) 03:58:04.60ID:EpnIAvlv0 CSRFの実装しました
難しいかと思ったら割と簡単でした
案ずるより産むが易しキヨシってやつですね
難しいかと思ったら割と簡単でした
案ずるより産むが易しキヨシってやつですね
836デフォルトの名無しさん (ワッチョイ 43f8-0lsv)
2024/04/03(水) 16:08:59.39ID:sHoarvhc0 nonceもCSRF対策の一種?
837デフォルトの名無しさん (ワッチョイ 0d68-1o5N)
2024/04/05(金) 11:14:06.54ID:ZTISEuLN0 管理画面や、限定的にしか見れないページ(社内のみとか)はサボる時あるけどねw
理由は、そもそも管理画面自体に入られたらパスワードが漏洩しているという意味で全て終わりだから。
サボるのはpostするデータをバリデーションするか、とかサニタイズするか、とか。
性善説に基づいて作るとめちゃくちゃ楽よ( ;´Д`)
理由は、そもそも管理画面自体に入られたらパスワードが漏洩しているという意味で全て終わりだから。
サボるのはpostするデータをバリデーションするか、とかサニタイズするか、とか。
性善説に基づいて作るとめちゃくちゃ楽よ( ;´Д`)
838デフォルトの名無しさん (ワッチョイ 1b91-T8CQ)
2024/04/05(金) 17:24:40.42ID:ed+JNEgF0 >>837
管理画面にログイン済みのユーザーにPOSTするリンクをクリックさせて管理者にしかできない操作をさせるみたいなのがCSRFだと思うんだが・・・
CookieをSame Siteにすれば防げるケースが大半だろうけど多段防御しといた方が安牌だと思う
管理画面にログイン済みのユーザーにPOSTするリンクをクリックさせて管理者にしかできない操作をさせるみたいなのがCSRFだと思うんだが・・・
CookieをSame Siteにすれば防げるケースが大半だろうけど多段防御しといた方が安牌だと思う
839デフォルトの名無しさん (ワッチョイ 0d68-1o5N)
2024/04/06(土) 00:42:24.17ID:4xUg8EFL0 >838
vpn接続して使用してる管理画面だから、誰か入ってくる事は無いし、そもそも誰か入って来た時点で即、死を意味してるのでプログラム云々というよりネットワークのセキュリティの話になってくる、というね。
話逸れたけど、個人的にはこれくらい内々で使うサービスなら良いけど、逆に言えばそれ以外はPOSTデータの取り扱いは100%対策しないとダメだよ、って話
vpn接続して使用してる管理画面だから、誰か入ってくる事は無いし、そもそも誰か入って来た時点で即、死を意味してるのでプログラム云々というよりネットワークのセキュリティの話になってくる、というね。
話逸れたけど、個人的にはこれくらい内々で使うサービスなら良いけど、逆に言えばそれ以外はPOSTデータの取り扱いは100%対策しないとダメだよ、って話
840デフォルトの名無しさん (ワッチョイ d576-VD0S)
2024/04/06(土) 02:02:19.01ID:0VY5CEth0 100%
841デフォルトの名無しさん (ワッチョイ 6b01-KWHl)
2024/04/06(土) 02:12:00.29ID:Jz+yuHp90842デフォルトの名無しさん (ワッチョイ e2c6-O+v9)
2024/04/08(月) 16:50:29.21ID:wyxCOIbr0 intval(080)が0になるのはなんで?
843デフォルトの名無しさん (ワッチョイ 0ee7-lyNC)
2024/04/08(月) 19:16:57.61ID:0Leau+zw0 >>842
不正な8進数だからだろ
不正な8進数だからだろ
844デフォルトの名無しさん (ワッチョイ fb2b-Vs+L)
2024/04/10(水) 11:28:55.93ID:NX4cvx9u0 Closure::bindやbindToがnullを返すのはどんな場合ですか?
公式ページには"失敗するとnullを返す"としか説明がなく
具体的な失敗パターンが知りたいです
公式ページには"失敗するとnullを返す"としか説明がなく
具体的な失敗パターンが知りたいです
845デフォルトの名無しさん (ワッチョイ bf5f-/8Es)
2024/04/14(日) 23:11:55.65ID:zqSEJi8N0847デフォルトの名無しさん (ワッチョイ 77bb-A/o5)
2024/04/16(火) 01:54:25.90ID:J00dMuyV0 PHPってなんでこんなに速いんですか?
他のインタプリタ言語よりかなり速いですよね
他のインタプリタ言語よりかなり速いですよね
848デフォルトの名無しさん (ワッチョイ 1757-zYl3)
2024/04/16(火) 04:36:49.17ID:j7JGuKK50 利用者が多いと高速化モジュールを作ってくれる人がそのうち出て来る
でもphpよりperlの方が速いって言う人もいる
でもphpよりperlの方が速いって言う人もいる
849デフォルトの名無しさん (ワッチョイ 775d-pARb)
2024/04/16(火) 10:35:03.69ID:6qmOkfsb0 今やpythonのほうが高速だから残念ながらphpのアドバンテージは下がってしまった
850デフォルトの名無しさん (ワッチョイ 1fad-Qy+G)
2024/04/16(火) 11:14:04.07ID:kYFjszay0 fastAPIってどのくらい速いんかね?
851デフォルトの名無しさん (ワッチョイ 7763-hJEz)
2024/04/16(火) 11:23:09.48ID:MMZJeoHC0 メンテしやすい方が楽で良い
852デフォルトの名無しさん (ワッチョイ 975b-aai9)
2024/04/16(火) 20:06:50.70ID:uAswjotn0 Laravelとかも最近のopcache使ったときやたら速くて感心したな
853デフォルトの名無しさん (ワッチョイ b7f8-pARb)
2024/04/16(火) 23:44:05.47ID:dnnaoba60 いくらphpが速くてもpythonはcかc++並になってしまったからもう追いつけない
追いつけないかどうかはやろうとする処理次第
Eコマースで商品一覧をDBから取得し画面に出力するとなれば
処理の大部分はDBの処理時間
Eコマースで商品一覧をDBから取得し画面に出力するとなれば
処理の大部分はDBの処理時間
855デフォルトの名無しさん (ワッチョイ b7f8-pARb)
2024/04/17(水) 01:28:51.06ID:c72vfF8y0 誰もDBの話はしとらんが?
856デフォルトの名無しさん (ワッチョイ 77ff-Ugv1)
2024/04/17(水) 01:34:48.91ID:ze0TvR6C0 >854 そりゃそうだろw今はそんな話はしてないし、自分の土俵に持っていく為に話題のすり替えになってるぞ
857デフォルトの名無しさん (ワッチョイ 7f3a-/8Es)
2024/04/17(水) 07:51:37.15ID:xZLw0gTi0 なでしこ3はPythonより6.5倍速い
858デフォルトの名無しさん (ワッチョイ d72f-eVbY)
2024/04/17(水) 09:34:48.22ID:CzOcQm8R0 PythonよりPHPやRubyのほうが速い
ざっくり3〜5倍
さらにPHPやRubyよりJavaScriptのほうが速い
それもざっくり3〜5倍
PerlはPythonと似たり寄ったり
PythonだけJITがないから置いてきぼり
今年のQ4に出る3.13で導入予定らしいけど最適化に時間がかかるから今のレベルに追いつけるのは5年くらい先
Pythonで性能を出したければシェルスクリプトと同じようにできるだけPython内でループを回さずC/C++で書かれたライブラリに一括で処理を委譲する
Webアプリだとなかなかそうもいかないけど
ざっくり3〜5倍
さらにPHPやRubyよりJavaScriptのほうが速い
それもざっくり3〜5倍
PerlはPythonと似たり寄ったり
PythonだけJITがないから置いてきぼり
今年のQ4に出る3.13で導入予定らしいけど最適化に時間がかかるから今のレベルに追いつけるのは5年くらい先
Pythonで性能を出したければシェルスクリプトと同じようにできるだけPython内でループを回さずC/C++で書かれたライブラリに一括で処理を委譲する
Webアプリだとなかなかそうもいかないけど
859デフォルトの名無しさん (ワッチョイ 1fd4-Qy+G)
2024/04/17(水) 11:15:26.47ID:hNUrcL2F0 フルスタックとしてPHP8.2は速いよね
バックエンドだと言語による差は無いか
バックエンドだと言語による差は無いか
php8でJITが導入されていてそれを利用することで現状だと単純な計算速度ではphpの方がpythonより速いと思う
ただpythonもJIT導入予定と聞いている
ただpythonもJIT導入予定と聞いている
861デフォルトの名無しさん (ワッチョイ bf5f-b946)
2024/05/03(金) 19:58:28.18ID:+USmG/sP0 node.jsってそんなに速いの? 知らなかった
862デフォルトの名無しさん (ワッチョイ 277b-z+LQ)
2024/05/03(金) 20:16:52.06ID:+XAyZCIw0 >>861
Rustと比較対象にされるくらいは速いよ
https://deepu.tech/concurrency-in-modern-languages-final/
というかね、PHP/Python/Rubyが論外に遅すぎて、これらの言語使った時点で速度は度外視前提だから、
これらについては速度比較すらまともにされて無いでしょ
Rustと比較対象にされるくらいは速いよ
https://deepu.tech/concurrency-in-modern-languages-final/
というかね、PHP/Python/Rubyが論外に遅すぎて、これらの言語使った時点で速度は度外視前提だから、
これらについては速度比較すらまともにされて無いでしょ
863デフォルトの名無しさん (ワッチョイ 277b-z+LQ)
2024/05/03(金) 20:57:10.70ID:+XAyZCIw0864デフォルトの名無しさん (ワッチョイ 7f63-Ufki)
2024/05/03(金) 20:59:44.77ID:9ebiuCIb0 この人はどんな利益を得ているんだろう
865デフォルトの名無しさん (ワッチョイ c7bb-x43a)
2024/05/04(土) 00:40:36.66ID:TbdOZmgm0 個人でPHPとJS(ブラウザ)とPythonの速度比較したら
JS, PHP, Pythonの順で早かった
JSはGoogleのエンジニアがV8組んでるだけあってインタプリタの中じゃ最速だな
JS, PHP, Pythonの順で早かった
JSはGoogleのエンジニアがV8組んでるだけあってインタプリタの中じゃ最速だな
866デフォルトの名無しさん (ワッチョイ a744-u6uN)
2024/05/04(土) 09:25:16.85ID:hhjXOeVD0 ゆうてサーバ側でjs使うのはawait promise地獄になりがちで見た目がね
867デフォルトの名無しさん (ワッチョイ 277b-z+LQ)
2024/05/04(土) 11:46:29.84ID:7p9CFEdI0868デフォルトの名無しさん (ワッチョイ e7dd-OY7+)
2024/05/04(土) 12:25:25.54ID:qT6RngEw0 でもあと数年でC = python > js >>>> phpになる
869デフォルトの名無しさん (ワッチョイ 7f63-Ufki)
2024/05/04(土) 14:20:07.47ID:0cPYdG0t0 数年も経ったら、全く新しい別の何かになってる
870デフォルトの名無しさん (ワッチョイ df37-b946)
2024/05/04(土) 14:54:41.55ID:ur5HC8pk0 昔から「PHPは遅くて使い物にならなくなる:と言われてたが
結局シェア見ると落ちないしなぁ
PHP5時代と比べてPHP8の早いこと
結局シェア見ると落ちないしなぁ
PHP5時代と比べてPHP8の早いこと
871デフォルトの名無しさん (ワッチョイ a744-u6uN)
2024/05/04(土) 21:20:04.52ID:hhjXOeVD0872デフォルトの名無しさん (ワッチョイ 437b-GrxP)
2024/05/05(日) 00:06:00.25ID:VpuIuth60 >>871
いやawaitが付いてるだけで同じだぞ
JSは全部の関数にクロージャ付きだから変数も同様にアクセスできる点がphpとは違う
まあここはphpのスレなのでもういいが、気になるなら以下見てみ
> async function sequentialStart() {
> console.log("==SEQUENTIAL START==");
>
> // 1. これは即時実行される
> const slow = await resolveAfter2Seconds();
> console.log(slow); // 2. これは 1. の 2 秒後に実行される
>
> const fast = await resolveAfter1Second();
> console.log(fast); // 3. これは 1. の 3 秒後に実行される
> }
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/async_function
いやawaitが付いてるだけで同じだぞ
JSは全部の関数にクロージャ付きだから変数も同様にアクセスできる点がphpとは違う
まあここはphpのスレなのでもういいが、気になるなら以下見てみ
> async function sequentialStart() {
> console.log("==SEQUENTIAL START==");
>
> // 1. これは即時実行される
> const slow = await resolveAfter2Seconds();
> console.log(slow); // 2. これは 1. の 2 秒後に実行される
>
> const fast = await resolveAfter1Second();
> console.log(fast); // 3. これは 1. の 3 秒後に実行される
> }
> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/async_function
873デフォルトの名無しさん (ワッチョイ 437b-GrxP)
2024/05/05(日) 00:22:56.43ID:VpuIuth60 と思ったが、もしかしてJSって子関数はnew Promiseしないと駄目な感じか?
俺はてっきりC#のと同じと思ってたから勘違いしてたかも?
まあこの辺はこちらで確認する。
ちなみにcallback地獄はJSの連中が馬鹿だらけだから正当化してるだけで、
実はちゃんと抽象化して組めばcallback地獄にはならない。
そしてサポートの関係もあり、俺はasync/await使ってきて無いから勘違いしてるかもしれん。
さらに言うとPromiseもゴミだと思ってるよ。あれは不要な仕様だ。JSの連中はこれも正当化してるが。
というわけで、JSも色々ゴミだが、全体見るならphpの方がゴミだと思うぜ。
俺はてっきりC#のと同じと思ってたから勘違いしてたかも?
まあこの辺はこちらで確認する。
ちなみにcallback地獄はJSの連中が馬鹿だらけだから正当化してるだけで、
実はちゃんと抽象化して組めばcallback地獄にはならない。
そしてサポートの関係もあり、俺はasync/await使ってきて無いから勘違いしてるかもしれん。
さらに言うとPromiseもゴミだと思ってるよ。あれは不要な仕様だ。JSの連中はこれも正当化してるが。
というわけで、JSも色々ゴミだが、全体見るならphpの方がゴミだと思うぜ。
874デフォルトの名無しさん (ワッチョイ 665f-0+0w)
2024/05/08(水) 01:04:50.50ID:Aq7zVlUM0 そんなPHPもpythonに比べたら10倍マシなわけで
世の中ままならないもんだよな
世の中ままならないもんだよな
875デフォルトの名無しさん (ワッチョイ 6fe7-M17B)
2024/06/13(木) 08:47:33.24ID:8kjXK8h10 POSIXメッセージキューをサポートしてる拡張モジュール でおすすめをおしえて
876デフォルトの名無しさん (ワッチョイ 1301-CmyF)
2024/06/15(土) 06:05:03.56ID:jdN7cEyp0 ニコニコ動画のランサムウェアって、phpの最近のやつと関係あるのかな
ttps://innovatopia.jp/cyber-security/cyber-security-news/31048/
ttps://innovatopia.jp/cyber-security/cyber-security-news/31048/
877デフォルトの名無しさん (ワッチョイ e330-/mLI)
2024/06/15(土) 09:17:52.21ID:nM9V99Q80 ハイパーバイザーの管理権限まで盗られたって話だから
個々のランサムウェアがどれなのかなんて些末な問題だろうな
個々のランサムウェアがどれなのかなんて些末な問題だろうな
878デフォルトの名無しさん (ワッチョイ 76e7-kvsZ)
2024/06/19(水) 19:07:59.04ID:rcHRA2+h0 FuelPHPの代替ってどんなのがあるの?
879デフォルトの名無しさん (ワッチョイ 339c-FBvh)
2024/06/20(木) 02:13:33.44ID:GIlSg4MN0 Laravel一択
880デフォルトの名無しさん (ワッチョイ cfbb-muU0)
2024/06/23(日) 00:56:02.55ID:/fMztCCi0 なんかわけあって形態素解析ライブラリを作ろうかと思うんだけど辞書はMecabの辞書を使うとしてどうやって解析しようかな
最長一致で比較してマッチしたら抜き出すって方法を考えてるけど皆ならどう作る?
最長一致で比較してマッチしたら抜き出すって方法を考えてるけど皆ならどう作る?
881デフォルトの名無しさん (ワッチョイ 3f4d-tL4z)
2024/06/23(日) 11:04:07.30ID:BYEVr0N80 作らない
断る
断る
882デフォルトの名無しさん (ワッチョイ 7f63-uW6V)
2024/06/23(日) 11:07:53.98ID:8Dr+KSC80 宿題か?自分でやる方が良いぞ
883デフォルトの名無しさん (ワッチョイ 7901-vp4l)
2024/08/31(土) 14:07:37.82ID:o+gAgvj50 >>878
flight
flight
884デフォルトの名無しさん (ワッチョイ 5fad-vm2V)
2024/09/06(金) 14:19:31.11ID:J9Dx+vkX0 PHP v8.0.30で
$LDC=0;
$LDC=ldap_connect($ldhost)
ldap_set_option($LDC,'LDAP_OPT_PROTOCOL_VERSION', 3);
のldap_set_option()行でmust be of type int,string given in~のエラーが出たんだけど3がint値として読めないって言われてるのかな
$LDC=0;
$LDC=ldap_connect($ldhost)
ldap_set_option($LDC,'LDAP_OPT_PROTOCOL_VERSION', 3);
のldap_set_option()行でmust be of type int,string given in~のエラーが出たんだけど3がint値として読めないって言われてるのかな
885デフォルトの名無しさん (ワッチョイ 5f87-F2Kr)
2024/09/06(金) 16:44:39.99ID:QtgCCsYf0 引数の、どれかだろ
886デフォルトの名無しさん (ワッチョイ 5f61-CMA8)
2024/09/06(金) 16:50:09.62ID:xfC3DfZt0 LDAP_OPT_PROTOCOL_VERSIONは定数なんだからクォートで囲っちゃだめでしょ
887デフォルトの名無しさん (ワッチョイ b6a2-LJWL)
2024/09/09(月) 18:23:38.31ID:8AzXAdmE0888デフォルトの名無しさん (ワッチョイ 77cb-7haC)
2024/09/23(月) 08:24:39.70ID:TOpTpz460 連想配列のarray_merge全然うまくいかんやん
ほんとなんなのこの言語、まじイラつく
ほんとなんなのこの言語、まじイラつく
889デフォルトの名無しさん (ワッチョイ 77cb-7haC)
2024/09/23(月) 08:30:38.84ID:TOpTpz460 できてるけどvar_dumpで表示されてないだけか?
要素数23ってなってるのに15しか表示されん
まじでよーわからん
要素数23ってなってるのに15しか表示されん
まじでよーわからん
890デフォルトの名無しさん (ワッチョイ c77b-dQvS)
2024/09/23(月) 09:07:14.03ID:dfCQ5A4R0 まず再現コード貼れよ、話はそれからだ
891デフォルトの名無しさん (ワッチョイ dee7-rNKn)
2024/09/23(月) 09:28:56.66ID:h2Aoyerx0 再現コード貼れ しか言わない奴は大抵は
十分に与えられた情報を見ても解決できない
無能隠しの時間稼ぎなんだよね
十分に与えられた情報を見ても解決できない
無能隠しの時間稼ぎなんだよね
892デフォルトの名無しさん (ワッチョイ c77b-dQvS)
2024/09/23(月) 09:40:34.39ID:dfCQ5A4R0 >>891は超絶無能だとは断定出来るね
891がスーパーエスパーなら891の時点で答えを貼るべき
自分では出来ない癖に他人をやたら貶すのは超絶無能な奴の特徴
そもそも本件は、再現コードも数行で済み、それがあれば誰でも回答出来るレベルなので、
本件で「無能隠し」とか言い出す時点で、何が簡単で難しいか判断すら出来ない大馬鹿
891がスーパーエスパーなら891の時点で答えを貼るべき
自分では出来ない癖に他人をやたら貶すのは超絶無能な奴の特徴
そもそも本件は、再現コードも数行で済み、それがあれば誰でも回答出来るレベルなので、
本件で「無能隠し」とか言い出す時点で、何が簡単で難しいか判断すら出来ない大馬鹿
893デフォルトの名無しさん (ワッチョイ 1663-7cnK)
2024/09/23(月) 10:16:17.79ID:nGCd//e20 十分に与えられているとは思わないけどな
エスパーならできるかもしれんが、普通の人には無理
エスパーならできるかもしれんが、普通の人には無理
894デフォルトの名無しさん (ワッチョイ 7758-M+A0)
2024/09/23(月) 11:44:05.43ID:kXVPwjR50 まあそうこうしてる間に本人は解決してるだろうよ、こんくらいなら
コードなきゃ>>889もイミフだしな
コードなきゃ>>889もイミフだしな
895デフォルトの名無しさん (ササクッテロル Sp47-1cT1)
2024/09/26(木) 20:00:35.39ID:hH68uGfdp >888-889
エスパーだから答えてあげる。恐らく下のうちのいずれかが原因。つまりPHPは間違えてなくて君が間違えている
1、null値が要素の中に入ってる。nullが入ってる場合は対象の要素を詰めてマージされるよ
2、配列のキーが文字列で指定されていて、配列Aと配列Bで同様の文字列キーを使用している。配列の文字列キーが同じ内容だと後列の文字列キーの配列要素で上書きされるよ。以下は例
$arr1 = ['key' => 'value1'];
$arr2 = ['key' => 'value2'];
$result = array_merge($arr1, $arr2);
// 結果: ['key' => 'value2']
3、配列ではない値を引数に入れてる。array_merge()に配列以外の引数を渡すと警告が発生して予期しない結果になる可能性があるよ。
1と2の合わせ技の可能性もあるな。なんにしてもドキュメント読む癖付けた方がいいぞ。
エスパーだから答えてあげる。恐らく下のうちのいずれかが原因。つまりPHPは間違えてなくて君が間違えている
1、null値が要素の中に入ってる。nullが入ってる場合は対象の要素を詰めてマージされるよ
2、配列のキーが文字列で指定されていて、配列Aと配列Bで同様の文字列キーを使用している。配列の文字列キーが同じ内容だと後列の文字列キーの配列要素で上書きされるよ。以下は例
$arr1 = ['key' => 'value1'];
$arr2 = ['key' => 'value2'];
$result = array_merge($arr1, $arr2);
// 結果: ['key' => 'value2']
3、配列ではない値を引数に入れてる。array_merge()に配列以外の引数を渡すと警告が発生して予期しない結果になる可能性があるよ。
1と2の合わせ技の可能性もあるな。なんにしてもドキュメント読む癖付けた方がいいぞ。
896デフォルトの名無しさん (ワッチョイ c77b-dQvS)
2024/09/26(木) 20:33:58.69ID:RCBNwTlp0 >>895
いやエスパーすべきは、
> var_dumpで
> 要素数23ってなってるのに15しか表示されん
の部分だと思うが。
そして俺がエスパーするなら、多分初心者用 『教材』 としてどこかの馬鹿が作った、
実用性皆無だが、PHPなりの型変換等で見た目奇妙な動作をする何かを与えられ、
動きを理解しなさい、或いはどうしてそうなるかを説明しなさい、みたいな 『練習問題』 をやらされてるのではないかと。
正直この手の 『クソ課題』 は無視でいいよ、他言語である程度組める実力があるのなら尚更。
array_mergeなんて普通に使ってる分には名前通りの直感的な仕様だし、ハマる所ではない。
PHPはクソだが、クソ糞言うのなら他言語使えばいい話であって、
PHP使うと決めた/決まっているのならクソであろうが使うしかないし、糞な所ばかり気にしてても始まらない。
そしてPHPが糞だと思うのはプログラミング言語と捉えるからであって、Web専用シェルと考えればすごく有用だと気づく。
いやエスパーすべきは、
> var_dumpで
> 要素数23ってなってるのに15しか表示されん
の部分だと思うが。
そして俺がエスパーするなら、多分初心者用 『教材』 としてどこかの馬鹿が作った、
実用性皆無だが、PHPなりの型変換等で見た目奇妙な動作をする何かを与えられ、
動きを理解しなさい、或いはどうしてそうなるかを説明しなさい、みたいな 『練習問題』 をやらされてるのではないかと。
正直この手の 『クソ課題』 は無視でいいよ、他言語である程度組める実力があるのなら尚更。
array_mergeなんて普通に使ってる分には名前通りの直感的な仕様だし、ハマる所ではない。
PHPはクソだが、クソ糞言うのなら他言語使えばいい話であって、
PHP使うと決めた/決まっているのならクソであろうが使うしかないし、糞な所ばかり気にしてても始まらない。
そしてPHPが糞だと思うのはプログラミング言語と捉えるからであって、Web専用シェルと考えればすごく有用だと気づく。
897デフォルトの名無しさん (ワッチョイ de01-1cT1)
2024/09/26(木) 22:38:14.36ID:y4Her8JE0 >896へ
>895の私がエスパーなりの解釈させてもらうw
>できてるけどvar_dumpで表示されてないだけか?
>要素数23ってなってるのに15しか表示されん
「できてるけど」=array_mergeは機能してるけど、
「var_dumpで表示されてないだけか?」=var_dumpして23あった要素が15に減ってるのは表示されてないだけか?
「要素数23ってなってるのに」=あ、ごめん主語無かったねぐへへへwつまり配列を直接var_dumpでデバッグした時は要素数23ってなってるのに
「15しか表示されん」=array_merge の結果をvar_dumpすると15しか表示されん
繋げると
array_mergeは機能してるけど、var_dumpして23あった要素が15に減ってるのは表示されてないだけか?あ、ごめん主語無かったねぐへへへwつまり配列を直接var_dumpでデバッグした時は要素数23ってなってるのにarray_merge の結果をvar_dumpすると15しか表示されん
いずれにしても>888-889のように話し言葉と書き言葉を一緒くたにしてしまう人や、脳みそと口または手が直結してしまって伝える内容を並び替えできない人とは本気で仕事したくないw
>895の私がエスパーなりの解釈させてもらうw
>できてるけどvar_dumpで表示されてないだけか?
>要素数23ってなってるのに15しか表示されん
「できてるけど」=array_mergeは機能してるけど、
「var_dumpで表示されてないだけか?」=var_dumpして23あった要素が15に減ってるのは表示されてないだけか?
「要素数23ってなってるのに」=あ、ごめん主語無かったねぐへへへwつまり配列を直接var_dumpでデバッグした時は要素数23ってなってるのに
「15しか表示されん」=array_merge の結果をvar_dumpすると15しか表示されん
繋げると
array_mergeは機能してるけど、var_dumpして23あった要素が15に減ってるのは表示されてないだけか?あ、ごめん主語無かったねぐへへへwつまり配列を直接var_dumpでデバッグした時は要素数23ってなってるのにarray_merge の結果をvar_dumpすると15しか表示されん
いずれにしても>888-889のように話し言葉と書き言葉を一緒くたにしてしまう人や、脳みそと口または手が直結してしまって伝える内容を並び替えできない人とは本気で仕事したくないw
898デフォルトの名無しさん (ワッチョイ 77cc-M+A0)
2024/09/27(金) 00:37:53.28ID:793m8l+c0 こんなことに数分でも時間つかうのがもったいないw
899デフォルトの名無しさん (ワッチョイ 1663-7cnK)
2024/09/27(金) 01:03:15.09ID:xb00usC10 そのコメント書くのに何分かかった?
900デフォルトの名無しさん (ワッチョイ 1e28-DO7g)
2024/09/27(金) 10:54:14.55ID:+POBWt7L0 エスパーしてる連中がキモすぎる
901デフォルトの名無しさん (ワッチョイ dee7-rNKn)
2024/09/27(金) 16:27:53.83ID:wGbKsk4o0 $a = ["a"=>0, "b"=>1];
$b = ["b"=>1, "c"=>2];
$c = array_merge($a,$b);
var_dump($c);
俺が>>889ならまず最初にこれを疑うかな
$b = ["b"=>1, "c"=>2];
$c = array_merge($a,$b);
var_dump($c);
俺が>>889ならまず最初にこれを疑うかな
902デフォルトの名無しさん (ワッチョイ 6f68-2Kaa)
2024/10/03(木) 19:40:44.30ID:/z7xIJX+0 netbeans使ってるんですが、こいつが出す警告(モジュールは20行以内にしろ、$_POST使うなとか、クラスは1ファイル1クラスにして名前を揃えろとか)には従っておくほうがいいんでしょうか?
$_POSTなんて入門サイトとか入門書だと未だに主流だし、今の相場がどんなものか知りたいです
$_POSTなんて入門サイトとか入門書だと未だに主流だし、今の相場がどんなものか知りたいです
903デフォルトの名無しさん (ワッチョイ 830b-gq2J)
2024/10/03(木) 20:14:27.24ID:+g5yChSt0 netbeansってのは使った事ないから分からないけど「$_POST使うな」は無茶だと思うけどね
あとモジュールも20行以上になる事なんか当たり前にあるよ
実際にソース貼って、その上でどんな警告出てるかも貼った方がより正確に回答出来る気がする
コードの文脈を考えた時に必要無い処理である可能性もあって警告出してくれてるかもしれんからね(知らんけど)
あとモジュールも20行以上になる事なんか当たり前にあるよ
実際にソース貼って、その上でどんな警告出てるかも貼った方がより正確に回答出来る気がする
コードの文脈を考えた時に必要無い処理である可能性もあって警告出してくれてるかもしれんからね(知らんけど)
904デフォルトの名無しさん (ワッチョイ cf63-3hiK)
2024/10/03(木) 20:35:40.28ID:SHWJQkyV0 この辺ではなかろうか
「スーパーグローバル$_POST配列に直接アクセスしないでください」
「スーパーグローバル$_POST配列に直接アクセスしないでください」
905902 (ワッチョイ 6f68-2Kaa)
2024/10/03(木) 20:53:20.38ID:/z7xIJX+0906デフォルトの名無しさん (ワッチョイ 037b-jS/a)
2024/10/03(木) 20:59:42.10ID:tAJvCxJt0 >>904
netbeans使ってるけどそれだぞ
ちなみに表示は、以下
================================
スーパーグローバル$_POST配列に直接アクセスしないでください。
かわりにフィルタリング関数(例: filter_input()、is_*()関数を使用した条件など)を使用してください。
----
([Alt]+[Enter]キーを押すとヒントが表示されます)
================================
>>902
分からないのなら従うのが常道(=自分で自信持って不要と判断出来ないのなら従え)
入門サイトとか入門書がゴミなだけ、マジで参考にするのは全部php,netとlaravelにしろ
掲示板なんて簡単ですよ!とか言いつつgetで書き込みとか、死ねな入門サイトはいくらでもある
Qiitaの方がまだだいぶマシ、あいつらは自分でやった事を書いてるだけなので
> モジュールは20行以内にしろ
普通に経験があれば自分で判断出来る、出来ないのなら従え
> $_POST使うな
上記の通り、filter_input使え馬鹿、と出るはず
> クラスは1ファイル1クラスにして
Javaの文化で、つまり慣れの問題
> 名前を揃えろとか
意味不明(必要ないのではなく、何が言いたいのか分からんので判断付かない)
netbeans使ってるけどそれだぞ
ちなみに表示は、以下
================================
スーパーグローバル$_POST配列に直接アクセスしないでください。
かわりにフィルタリング関数(例: filter_input()、is_*()関数を使用した条件など)を使用してください。
----
([Alt]+[Enter]キーを押すとヒントが表示されます)
================================
>>902
分からないのなら従うのが常道(=自分で自信持って不要と判断出来ないのなら従え)
入門サイトとか入門書がゴミなだけ、マジで参考にするのは全部php,netとlaravelにしろ
掲示板なんて簡単ですよ!とか言いつつgetで書き込みとか、死ねな入門サイトはいくらでもある
Qiitaの方がまだだいぶマシ、あいつらは自分でやった事を書いてるだけなので
> モジュールは20行以内にしろ
普通に経験があれば自分で判断出来る、出来ないのなら従え
> $_POST使うな
上記の通り、filter_input使え馬鹿、と出るはず
> クラスは1ファイル1クラスにして
Javaの文化で、つまり慣れの問題
> 名前を揃えろとか
意味不明(必要ないのではなく、何が言いたいのか分からんので判断付かない)
907デフォルトの名無しさん (ワッチョイ 830b-gq2J)
2024/10/04(金) 08:58:20.60ID:/JNwl4gJ0 >906
俺は>903だが$_POSTに関して、配列に直接アクセスしてゴニョゴニョすんなよってことね、理解した
>902
ちなみにfilter_inputをバリデーションとかサニタイズで使おうとすると期待してた動作通りに行かないこともままあるから気を付けてね。例としてhtmlタグ取り除きたい時とかは正規表現使って自分で関数作った方が良かったりする。いずれにしてもphpの組み込み関数使う時は必ずphpの公式リファレンス読むようにした方が良いよ
俺は>903だが$_POSTに関して、配列に直接アクセスしてゴニョゴニョすんなよってことね、理解した
>902
ちなみにfilter_inputをバリデーションとかサニタイズで使おうとすると期待してた動作通りに行かないこともままあるから気を付けてね。例としてhtmlタグ取り除きたい時とかは正規表現使って自分で関数作った方が良かったりする。いずれにしてもphpの組み込み関数使う時は必ずphpの公式リファレンス読むようにした方が良いよ
908デフォルトの名無しさん (ワッチョイ 037b-jS/a)
2024/10/04(金) 10:07:59.19ID:5cV2iGMA0 >>907
> 例としてhtmlタグ取り除きたい時とかは正規表現使って自分で関数作った方が良かったりする。
気持ちは分かるが特定のタグを除去したいときは公式DOM使った方がよいかと
単純な末端ノードならいいが、階層作られたらだいたい無理なので
なおボロカス言われてるDOMだが、俺はJSでもjQuery不要派なのでさほど不満はなかった
> 例としてhtmlタグ取り除きたい時とかは正規表現使って自分で関数作った方が良かったりする。
気持ちは分かるが特定のタグを除去したいときは公式DOM使った方がよいかと
単純な末端ノードならいいが、階層作られたらだいたい無理なので
なおボロカス言われてるDOMだが、俺はJSでもjQuery不要派なのでさほど不満はなかった
909デフォルトの名無しさん (ワッチョイ 830b-gq2J)
2024/10/04(金) 11:52:16.55ID:/JNwl4gJ0 >908
フロント側でタグを取っちゃうって認識で合ってるかな?自分が基本バックエンドの人間なのでフロント殆ど触らんのよね…w でも提案有難う
フロント側でタグを取っちゃうって認識で合ってるかな?自分が基本バックエンドの人間なのでフロント殆ど触らんのよね…w でも提案有難う
910デフォルトの名無しさん (ワッチョイ cf63-3hiK)
2024/10/04(金) 12:00:04.09ID:b7vgemF30 ちゃんとしたものを作ろうとすると、本格的ブラウザ作る並に大変笑
911デフォルトの名無しさん (ワッチョイ 3f72-Ligk)
2024/10/04(金) 12:14:58.84ID:M8Xyx2No0 phpの話なのにフロントでタグ取り除くとかバックエンドで正規表現使ってタグ取り除くとか意味わからん
フロントでやるならJSの仕事だしバックエンドのPHPなら自分でhtml組み立ててるんだから正規表現使ってhtmlタグを取り除く必要とかそもそもない
フロントでやるならJSの仕事だしバックエンドのPHPなら自分でhtml組み立ててるんだから正規表現使ってhtmlタグを取り除く必要とかそもそもない
912デフォルトの名無しさん (ワッチョイ 037b-jS/a)
2024/10/04(金) 12:48:49.83ID:5cV2iGMA0 >>909
htmlタグを取り除く=PHPでスクレイプ、或いは掲示板等で許可してないタグを投稿されたときに、PHPでタグを除去する場合を考えている
PHPのDOMはゴミ扱いされてるが、ほぼ生JSと同じなので個人的には問題なかった
正規表現は階層/入れ子を考慮されてないので、正規表現でhtmlをパースするのは死ねるし変な物を食わされたらだいたいバグる
とはいえDOM構築はそれなりに遅くなるので、スクレイプ先のhtml構造が単純かつ固定的なときは正規表現で除去するのもあり
フロント側に不要タグ含めて垂れ流すのもありだが、DBやネットワークの帯域を無駄に消費するだけなので、
可能であれば上流=PHP側で除去した方がいいのは事実
htmlタグを取り除く=PHPでスクレイプ、或いは掲示板等で許可してないタグを投稿されたときに、PHPでタグを除去する場合を考えている
PHPのDOMはゴミ扱いされてるが、ほぼ生JSと同じなので個人的には問題なかった
正規表現は階層/入れ子を考慮されてないので、正規表現でhtmlをパースするのは死ねるし変な物を食わされたらだいたいバグる
とはいえDOM構築はそれなりに遅くなるので、スクレイプ先のhtml構造が単純かつ固定的なときは正規表現で除去するのもあり
フロント側に不要タグ含めて垂れ流すのもありだが、DBやネットワークの帯域を無駄に消費するだけなので、
可能であれば上流=PHP側で除去した方がいいのは事実
913デフォルトの名無しさん (ワッチョイ 6f5f-D2eP)
2024/10/04(金) 13:33:27.23ID:swUgCMz+0 filter_input使え って警告、PhpStormでは見たことないな
運良く推奨されるパターンでも踏んでるのかな
運良く推奨されるパターンでも踏んでるのかな
914デフォルトの名無しさん (ワッチョイ 037b-jS/a)
2024/10/04(金) 14:14:38.35ID:5cV2iGMA0915デフォルトの名無しさん (ワッチョイ 3f72-Ligk)
2024/10/04(金) 16:00:15.82ID:M8Xyx2No0 >>912
PHPでスクレイプ時に特定のhtmlタグを取り除くってレアリティ高いな
そっちはいいとしてユーザー入力に許可されてないタグがあるならエラー返した方がいいと思うが除去するにしてもstrip_tagsやHTMLPurifierみたいな出来上がったものを使った方がいいのでは?
あとフロントでタグ除去するのはユーザーアクションに応じてhtmlを変更するためで不要タグを垂れ流してるわけではない
PHPでスクレイプ時に特定のhtmlタグを取り除くってレアリティ高いな
そっちはいいとしてユーザー入力に許可されてないタグがあるならエラー返した方がいいと思うが除去するにしてもstrip_tagsやHTMLPurifierみたいな出来上がったものを使った方がいいのでは?
あとフロントでタグ除去するのはユーザーアクションに応じてhtmlを変更するためで不要タグを垂れ流してるわけではない
916デフォルトの名無しさん (ワッチョイ 037b-jS/a)
2024/10/04(金) 19:01:50.57ID:5cV2iGMA0 >>915
> strip_tagsやHTMLPurifierみたいな出来上がったものを使った方がいいのでは?
これらはいいね
言及出来なかったのは俺が単に知らなかったからで、タグ単位の除去にはこれらを使うべきだろう
> レアリティ高いな
そうでもないから上記の関数/ライブラリが整備されてるわけだ
ただPHPはこの手の、あると便利だが的な関数が無駄に多く、把握しきれてなかったのは上記の通り
> ユーザー入力に許可されてないタグがあるならエラー返した方がいいと思うが
相手がまともな人間の場合はそうだが、
攻撃目的で掲示板にタグを書き込んでくる場合、晒しの意味でも黙って落としてそのまま表示させるのもあり
瞬時にエラーを返してしまうと、何がどこまで駄目なのかすぐばれてしまう
何だかんだで無駄に時間をかけさせるのは地味に有効
> あとフロントでタグ除去するのはユーザーアクションに応じてhtmlを変更するためで不要タグを垂れ流してるわけではない
それは俺に言わせれば、(使う可能性のあるタグなので)仕様上サーバー側では落とせない、となる
サーバー側で落としておくべきなのは、どうやっても不要なタグ、具体的に言うとscriptとか、
或いは公式strip_tagsの警告に書かれてるとおり、onXXXX属性
ただstyle属性まで落とすと、タグを許可した意味が無くなってくるので、判断は難しいところ
opacityとかだけは許可しない等、属性も精査する気だと、結局DOM使う事になるとは思うが…HTMLPurifierでも出来るらしい
まあこの辺は要調査だな
> strip_tagsやHTMLPurifierみたいな出来上がったものを使った方がいいのでは?
これらはいいね
言及出来なかったのは俺が単に知らなかったからで、タグ単位の除去にはこれらを使うべきだろう
> レアリティ高いな
そうでもないから上記の関数/ライブラリが整備されてるわけだ
ただPHPはこの手の、あると便利だが的な関数が無駄に多く、把握しきれてなかったのは上記の通り
> ユーザー入力に許可されてないタグがあるならエラー返した方がいいと思うが
相手がまともな人間の場合はそうだが、
攻撃目的で掲示板にタグを書き込んでくる場合、晒しの意味でも黙って落としてそのまま表示させるのもあり
瞬時にエラーを返してしまうと、何がどこまで駄目なのかすぐばれてしまう
何だかんだで無駄に時間をかけさせるのは地味に有効
> あとフロントでタグ除去するのはユーザーアクションに応じてhtmlを変更するためで不要タグを垂れ流してるわけではない
それは俺に言わせれば、(使う可能性のあるタグなので)仕様上サーバー側では落とせない、となる
サーバー側で落としておくべきなのは、どうやっても不要なタグ、具体的に言うとscriptとか、
或いは公式strip_tagsの警告に書かれてるとおり、onXXXX属性
ただstyle属性まで落とすと、タグを許可した意味が無くなってくるので、判断は難しいところ
opacityとかだけは許可しない等、属性も精査する気だと、結局DOM使う事になるとは思うが…HTMLPurifierでも出来るらしい
まあこの辺は要調査だな
917デフォルトの名無しさん (ワッチョイ b39e-gq2J)
2024/10/04(金) 19:47:14.07ID:eshA0leg0 >911
どう言うこと?w
PHPでデータベース扱ってる現場ならバックエンドにデータ飛んでくる前にタグ取り除くでしょ
俺の場合はPHPのユーザー定義関数で正規表現使ってタグ取り除く関数を作ったらhtmlのフォーム内でバリデーションとサニタイズ行なってるけど
>自分でhtml組み立てるんだから
分業してる現場なのでJSはフロントの子がやってるのよ
だからフロントは殆ど触らないし関数作ったらフロントの子に渡してる
どう言うこと?w
PHPでデータベース扱ってる現場ならバックエンドにデータ飛んでくる前にタグ取り除くでしょ
俺の場合はPHPのユーザー定義関数で正規表現使ってタグ取り除く関数を作ったらhtmlのフォーム内でバリデーションとサニタイズ行なってるけど
>自分でhtml組み立てるんだから
分業してる現場なのでJSはフロントの子がやってるのよ
だからフロントは殆ど触らないし関数作ったらフロントの子に渡してる
918デフォルトの名無しさん (ワッチョイ b39e-gq2J)
2024/10/04(金) 19:48:47.53ID:eshA0leg0 >917
× htmlのフォーム内でバリデーションとサニタイズ行なってるけど
⚪︎ htmlのフォーム内に適宜関数を挿してバリデーションとサニタイズ行なってるけど
× htmlのフォーム内でバリデーションとサニタイズ行なってるけど
⚪︎ htmlのフォーム内に適宜関数を挿してバリデーションとサニタイズ行なってるけど
919デフォルトの名無しさん (ワッチョイ 037b-jS/a)
2024/10/04(金) 20:30:24.85ID:5cV2iGMA0 >>917
俺宛ではないが、>>911の使い方はまあ普通、というか9割以上の局面ではそうなる
> バックエンドにデータ飛んでくる前にタグ取り除く
そもそもDBへのアップデータでタグを許可してない/する必要ないのがほぼ全部
例えばここ5ch、安価は最終的に<a>として表示されるが、ユーザーの投稿段階ではただのテキスト
それをDB登録段階で<a>にしてしまうか、JSで<a>にするかは実装によるが、PHPでタグ除去なんてする必要がない
> PHPのユーザー定義関数で正規表現使ってタグ取り除く関数を作ったら
> htmlのフォーム内に適宜関数を挿してバリデーションとサニタイズ行なってる
> だからフロントは殆ど触らないし関数作ったらフロントの子に渡してる
もしかしてEmscriptenかWebAssenbly使ってPHPのコードをクライアントサイドで動かしてる?
それはすさまじくレアだと思うのだけども
俺宛ではないが、>>911の使い方はまあ普通、というか9割以上の局面ではそうなる
> バックエンドにデータ飛んでくる前にタグ取り除く
そもそもDBへのアップデータでタグを許可してない/する必要ないのがほぼ全部
例えばここ5ch、安価は最終的に<a>として表示されるが、ユーザーの投稿段階ではただのテキスト
それをDB登録段階で<a>にしてしまうか、JSで<a>にするかは実装によるが、PHPでタグ除去なんてする必要がない
> PHPのユーザー定義関数で正規表現使ってタグ取り除く関数を作ったら
> htmlのフォーム内に適宜関数を挿してバリデーションとサニタイズ行なってる
> だからフロントは殆ど触らないし関数作ったらフロントの子に渡してる
もしかしてEmscriptenかWebAssenbly使ってPHPのコードをクライアントサイドで動かしてる?
それはすさまじくレアだと思うのだけども
920デフォルトの名無しさん (ワッチョイ b39e-gq2J)
2024/10/04(金) 21:11:39.79ID:eshA0leg0 >919
>PHPでタグ除去なんてする必要がない
これは自分の言葉足らずでしたわ。謝ります
ユーザーからのhtmlタグの投稿を一切許可していない現場なのよ、だからタグはDB到達前に全部サニタイズしてる
>もしかしてEmscriptenかWebAssenbly使ってPHPのコードをクライアントサイドで動かしてる?
いや、素のPHP(Laravelとかのフレームワーク使わず)でコード書いてて、ライブラリ含めて全てフルスクラッチで作成してる現場だよ
>PHPでタグ除去なんてする必要がない
これは自分の言葉足らずでしたわ。謝ります
ユーザーからのhtmlタグの投稿を一切許可していない現場なのよ、だからタグはDB到達前に全部サニタイズしてる
>もしかしてEmscriptenかWebAssenbly使ってPHPのコードをクライアントサイドで動かしてる?
いや、素のPHP(Laravelとかのフレームワーク使わず)でコード書いてて、ライブラリ含めて全てフルスクラッチで作成してる現場だよ
921デフォルトの名無しさん (スップ Sdbf-qfF2)
2024/10/16(水) 16:44:48.13ID:tW0ztwU3d 先生!PHP独学したいのですが
独習PHP 第4版 山田 祥寛 (著)
これでいいですか?
C#
Java
VBA
JavaScript
経験者です
独習PHP 第4版 山田 祥寛 (著)
これでいいですか?
C#
Java
VBA
JavaScript
経験者です
922デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/16(水) 22:44:42.10ID:XSPkOsBG0923デフォルトの名無しさん (ワッチョイ ef5f-nmm0)
2024/10/17(木) 00:25:58.27ID:exPg1AY+0 >>922
本物のワルなのでセッション使っちゃうぜ
本物のワルなのでセッション使っちゃうぜ
924デフォルトの名無しさん (スップ Sdbf-qfF2)
2024/10/17(木) 00:33:42.25ID:13fsix/Td925デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/17(木) 08:25:20.34ID:aXgLojE+0 >>923
ユーザーまたげねえだろ
というか普通のサーバーのように、全体の変数を保持する事が出来ない
だから毎回初期値やデータを一からロードし直す必要があってウザかったが、
JSもクローム拡張V3では同様になってるから、サーバーとしては適切な構造なのだろうよ
PHPの場合、これにより毎回最初から行うのを強制され、結果的に毎回同じ動作となり、デバッグしやすくなってるのも事実
糞言語だが、何だかんだで結果的によく出来てるから使い続けられてる
でもやはりウザイのも事実で、Node他ならもうちょっとすっきり書けるのに、というのは多々ある
ちょっとした配列を保持出来てれば済むのに、一々DBにtry-catchになるから
>>924
持ってないから知らん
ユーザーまたげねえだろ
というか普通のサーバーのように、全体の変数を保持する事が出来ない
だから毎回初期値やデータを一からロードし直す必要があってウザかったが、
JSもクローム拡張V3では同様になってるから、サーバーとしては適切な構造なのだろうよ
PHPの場合、これにより毎回最初から行うのを強制され、結果的に毎回同じ動作となり、デバッグしやすくなってるのも事実
糞言語だが、何だかんだで結果的によく出来てるから使い続けられてる
でもやはりウザイのも事実で、Node他ならもうちょっとすっきり書けるのに、というのは多々ある
ちょっとした配列を保持出来てれば済むのに、一々DBにtry-catchになるから
>>924
持ってないから知らん
926デフォルトの名無しさん (ワッチョイ efe7-nmm0)
2024/10/17(木) 08:51:18.77ID:Q0zeibWJ0 >>925
セッションIDを知っていればユーザーを跨げるので、本物のワルはこれを悪用しちゃうぜ
セッションIDを知っていればユーザーを跨げるので、本物のワルはこれを悪用しちゃうぜ
927デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/17(木) 09:15:02.73ID:aXgLojE+0 >>926
いやそれはアウトだろ
ただ、「絶対に誰にも使われないセッションID」を作れれば便利な倉庫に出来るのかな?
まあ俺はそこまでPHP知らんので止めとくが
しかしPHPは色々糞ったれなことが多い
今目に付いてるのはアップロードされたファイルが $_FILES["pictures"]["tmp_name"][$index] に入る点
逆じゃボケ!!!$_FILES["pictures"][$index]["tmp_name"] に入れろや!!!ってね
この辺一々糞コード化を余儀なくされてストレスが溜まる
まあlaravel導入すれば解決するんだろうけどさ
いやそれはアウトだろ
ただ、「絶対に誰にも使われないセッションID」を作れれば便利な倉庫に出来るのかな?
まあ俺はそこまでPHP知らんので止めとくが
しかしPHPは色々糞ったれなことが多い
今目に付いてるのはアップロードされたファイルが $_FILES["pictures"]["tmp_name"][$index] に入る点
逆じゃボケ!!!$_FILES["pictures"][$index]["tmp_name"] に入れろや!!!ってね
この辺一々糞コード化を余儀なくされてストレスが溜まる
まあlaravel導入すれば解決するんだろうけどさ
928デフォルトの名無しさん (ワッチョイ db85-xAPd)
2024/10/17(木) 23:09:44.41ID:goFejqio0 >921
私見で恐縮だけど、それだけ他言語を学習済みなら(経験年数にもよるけど)基礎的な事は理解してるはずだから書籍はあんまり意味を為さないと思うなー
@他の人も言ってるようにリファレンス読み込むのがいいと思う。どのページに何が書いてあるか理解把握するのが大事かな、と。あくまで重要なのはリファレンスの内容を覚えるんじゃなくて、必要な時に直ぐに取り出せるように「何処に何が書いてあるか」を理解把握すると良いと思うよ。例えばphp7系とphp8系で大幅に仕様変更があったんだけどその差異を見るにはどのページ見れば良いかとか、もっとシンプルに言うと関数のリファレンスは何処に纏まってるか、とか。
@の手順が終わったら、プログラム経験者でphp手っ取り早く学びたいならLaravelの環境を構築するかまたはWordPress作って弄り倒すのが良いと思う。
前者の理由は、ここ数年のphp開発現場はLaravelを基本としてるから。
後者の理由は、WordPressはphpで構成されているのでソースレベルで弄り倒せるようになれればclassや一通りの組み込み関数も理解出来ていると判断できるから(俺社比)
若干話変わって個人的に興味があるのは、何故phpを学習したいと思ったのかを知りたいな
聞きたい理由としては、phpって言語としても旬は過ぎたし、もしWordPressが使われなくなったらレガシーな環境を除けばphpを選択する意味が無くなってきてると個人的に感じてるのよね。(俺自身はphp好きだけどw)
例えば最近ならNode.js+TypeScript+.vueとかの方が需要高いから何故phpを学ぼうと思ったかその機会を知りたいと思いました。長文スマンでした
私見で恐縮だけど、それだけ他言語を学習済みなら(経験年数にもよるけど)基礎的な事は理解してるはずだから書籍はあんまり意味を為さないと思うなー
@他の人も言ってるようにリファレンス読み込むのがいいと思う。どのページに何が書いてあるか理解把握するのが大事かな、と。あくまで重要なのはリファレンスの内容を覚えるんじゃなくて、必要な時に直ぐに取り出せるように「何処に何が書いてあるか」を理解把握すると良いと思うよ。例えばphp7系とphp8系で大幅に仕様変更があったんだけどその差異を見るにはどのページ見れば良いかとか、もっとシンプルに言うと関数のリファレンスは何処に纏まってるか、とか。
@の手順が終わったら、プログラム経験者でphp手っ取り早く学びたいならLaravelの環境を構築するかまたはWordPress作って弄り倒すのが良いと思う。
前者の理由は、ここ数年のphp開発現場はLaravelを基本としてるから。
後者の理由は、WordPressはphpで構成されているのでソースレベルで弄り倒せるようになれればclassや一通りの組み込み関数も理解出来ていると判断できるから(俺社比)
若干話変わって個人的に興味があるのは、何故phpを学習したいと思ったのかを知りたいな
聞きたい理由としては、phpって言語としても旬は過ぎたし、もしWordPressが使われなくなったらレガシーな環境を除けばphpを選択する意味が無くなってきてると個人的に感じてるのよね。(俺自身はphp好きだけどw)
例えば最近ならNode.js+TypeScript+.vueとかの方が需要高いから何故phpを学ぼうと思ったかその機会を知りたいと思いました。長文スマンでした
929デフォルトの名無しさん (ワッチョイ db85-xAPd)
2024/10/17(木) 23:37:25.31ID:goFejqio0 横レスおじさんだけどごめんね❤
>923 については、確かにセッション使えば自身の変数は保持できる
>925 に対しては、おっしゃる通りユーザ跨げない。後述(※参照)するけど、ユーザー跨ごうとすると変則的な運用のみ使えると思う(という知見しか自分には無い)から結論非常にオススメしない。
>926 マジでオススメしない。理由はセッションIDを対象ユーザー以外で使うのは大事故に繋がるから。
(※)一応例外も挙げておくけど、【そのサービスを1人しか利用しない】という前提ならもしかしたらありかな?とは思う。逆を言えばそれくらいのレベル感じゃ無いとセッションIDの使い回しは超御法度。
つまり非常に限定的で、ローカル環境で構築したサービスや外部非公開の環境というのが前提で、もし外部に公開するサービスならセッションIDは絶対に使い回しちゃダメよ、って事。
>923 については、確かにセッション使えば自身の変数は保持できる
>925 に対しては、おっしゃる通りユーザ跨げない。後述(※参照)するけど、ユーザー跨ごうとすると変則的な運用のみ使えると思う(という知見しか自分には無い)から結論非常にオススメしない。
>926 マジでオススメしない。理由はセッションIDを対象ユーザー以外で使うのは大事故に繋がるから。
(※)一応例外も挙げておくけど、【そのサービスを1人しか利用しない】という前提ならもしかしたらありかな?とは思う。逆を言えばそれくらいのレベル感じゃ無いとセッションIDの使い回しは超御法度。
つまり非常に限定的で、ローカル環境で構築したサービスや外部非公開の環境というのが前提で、もし外部に公開するサービスならセッションIDは絶対に使い回しちゃダメよ、って事。
930デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 07:32:13.18ID:IRpwug8I0 >>928
> レガシーな環境を除けばphpを選択する意味が無くなってきてる
商用ならその通り
ただしレンタルサーバーのような小口だと、プロセス2秒でぶった切る運用が出来るPHPの方が相性がいい
だからブログにはPHP+WPの方が相性がよく、
今のところ他言語では…そういえばHugoとかあったがあれどうなったんだろ?
ちなみにphp.net、読み物としては非常に優秀だが、リファレンスとして逆引きするにはイマイチだと分かった
だから一通り知って、しばらく使わずに忘れて、再確認したいときに
> 何処に何が書いてあるか
を覚えておかないと辿り着けない
(逆に他言語は逆引きするように書いているから、頭から読む読み物としてはイマイチ)
> レガシーな環境を除けばphpを選択する意味が無くなってきてる
商用ならその通り
ただしレンタルサーバーのような小口だと、プロセス2秒でぶった切る運用が出来るPHPの方が相性がいい
だからブログにはPHP+WPの方が相性がよく、
今のところ他言語では…そういえばHugoとかあったがあれどうなったんだろ?
ちなみにphp.net、読み物としては非常に優秀だが、リファレンスとして逆引きするにはイマイチだと分かった
だから一通り知って、しばらく使わずに忘れて、再確認したいときに
> 何処に何が書いてあるか
を覚えておかないと辿り着けない
(逆に他言語は逆引きするように書いているから、頭から読む読み物としてはイマイチ)
931デフォルトの名無しさん (ワッチョイ ef29-xAPd)
2024/10/18(金) 08:54:50.32ID:WQ7AgxmX0 >930
うんうん、小口の場合は確かにphpですね。個人からの依頼や企業でも小規模なWEBページの依頼はphpが未だに多い印象。
php.netはそうなのよ、読み物としては立派なんだよね。phpの設定関連は読み込むと理解把握しやすい。一方で「この機能を実現する組み込み関数ってあるかな」と逆引きしたい時や、「ソース書いてて躓いた時、詰まった時」はあんまり役に立たない印象。
そこで次はどうするかというとネット記事(個人ブログ含)に行き着くんだけど、php関連のネット記事って有象無象入り混じってて特殊なアプローチ(裏技的な内容)やセキュリティガバガバのソース提示されてるから初学者はネット記事参考にしない方が良い、というね。
やっぱり実際の業務で学ぶか、WordPress作って理解するか、GitHubで学ぶとかがいいかなーと思う
うんうん、小口の場合は確かにphpですね。個人からの依頼や企業でも小規模なWEBページの依頼はphpが未だに多い印象。
php.netはそうなのよ、読み物としては立派なんだよね。phpの設定関連は読み込むと理解把握しやすい。一方で「この機能を実現する組み込み関数ってあるかな」と逆引きしたい時や、「ソース書いてて躓いた時、詰まった時」はあんまり役に立たない印象。
そこで次はどうするかというとネット記事(個人ブログ含)に行き着くんだけど、php関連のネット記事って有象無象入り混じってて特殊なアプローチ(裏技的な内容)やセキュリティガバガバのソース提示されてるから初学者はネット記事参考にしない方が良い、というね。
やっぱり実際の業務で学ぶか、WordPress作って理解するか、GitHubで学ぶとかがいいかなーと思う
932デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:05:17.56ID:IRpwug8I0 >>931
内容については全文同意でいいが、>>924に戻ると、
php.netは読み物としてはMDN/MSDN/Oracleと比べて段違いにいいので、
紙好きであっても初手として通読する事を進める(他言語のリファレンスを想定しているのなら特に)
どうしてもというなら全文印刷して読め、それくらい良質だ
一方で
> php関連のネット記事って有象無象入り混じってて特殊なアプローチ(裏技的な内容)やセキュリティガバガバのソース提示されてるから初学者はネット記事参考にしない方が良い
これは本当にその通りで、理由はPHPが糞言語でろくなコードが書けないというのも多々あるが、(927参考)
JSも相当に酷いので、「主戦場がWebなので(技術的/気分的に)『初心者にも』情報発信しやすい」のが主な理由だろう
Web系は馬鹿しかいないというのも通説ではあるが、
実際の所Cなんて仕事化されない限り(例えば大学の準教授で講義内容を公開するとか)上級者でもWeb記事なんて書かないから、
記事書いてる時点で大半は教える事が仕事として成立する程度のフィルタがかかってるので全然違う
(すまんがNGワード規制に引っかかるようなのでバラバラに落とす)
内容については全文同意でいいが、>>924に戻ると、
php.netは読み物としてはMDN/MSDN/Oracleと比べて段違いにいいので、
紙好きであっても初手として通読する事を進める(他言語のリファレンスを想定しているのなら特に)
どうしてもというなら全文印刷して読め、それくらい良質だ
一方で
> php関連のネット記事って有象無象入り混じってて特殊なアプローチ(裏技的な内容)やセキュリティガバガバのソース提示されてるから初学者はネット記事参考にしない方が良い
これは本当にその通りで、理由はPHPが糞言語でろくなコードが書けないというのも多々あるが、(927参考)
JSも相当に酷いので、「主戦場がWebなので(技術的/気分的に)『初心者にも』情報発信しやすい」のが主な理由だろう
Web系は馬鹿しかいないというのも通説ではあるが、
実際の所Cなんて仕事化されない限り(例えば大学の準教授で講義内容を公開するとか)上級者でもWeb記事なんて書かないから、
記事書いてる時点で大半は教える事が仕事として成立する程度のフィルタがかかってるので全然違う
(すまんがNGワード規制に引っかかるようなのでバラバラに落とす)
933デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:06:19.93ID:IRpwug8I0 ではどうすればいいかといえば、俺は「レビュー済み」のコードを参考にする事を勧める
934デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:07:10.73ID:IRpwug8I0 俺は上記の通り、JSではMDNのコードしか信用しない事にしてるが、それは「MDNは多数に見られてる」からだ(=酷いコードは修正済み)
StackOverflowが良質なのも、各回答がレビューされて上位順に並ぶからだ
StackOverflowが良質なのも、各回答がレビューされて上位順に並ぶからだ
935デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:07:41.36ID:IRpwug8I0 この点、php.netは同様に、各ページの下にコードがずらずらと『上位順』に並び、
結果的に各ページにStackOverflow並の上質なコードが付随する事になってる
結果的に各ページにStackOverflow並の上質なコードが付随する事になってる
936デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:08:32.58ID:IRpwug8I0 初学者であれを全部読むのは辛いだろうが、あのコードも読む価値があるので余裕があれば読むべき
937デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:09:03.23ID:IRpwug8I0 大体において各ページの機能のハマりポイントをコードで解説してある
938デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:09:27.64ID:IRpwug8I0 面倒なら、ハマったときにはググると同時にphp.netのその機能のコードも読む事だ
939デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:10:14.73ID:IRpwug8I0 ちなみに引っかかったらだいたいググるとQiitaで何とかなる事が多いはず
Qiitaも勿論いいサイトではあるが、結局「上位順」ではないので、StackOverflowに成れなかった、というより成り損ねた感がある
これは10年ほど昔にJS界隈でKenOkabe、通称「毛の壁」が、
細かい間違いを修正するよう突っ込みまくってウザがられて荒らし扱いされ、結局コメント機能が削除された、という経緯があるらしいが
結果的に「よりよいコード、より正しい情報を発信する」(StackOverflow的価値観)より、
「僕が気持ちよく情報発信する」(ゆとり世代的価値観)を優先したので、そうなってる
まあ創始者がゆとり世代だし、この判断が間違ってるかどうかも微妙で、例えば商業的意味なら「成功」となるのだが、
とにかく現状ではQiitaは玉石混淆、というよりゴミの方が多いので要注意
それでもないよりは100万倍いいので、素晴らしいサイトではあるけども
Qiitaも勿論いいサイトではあるが、結局「上位順」ではないので、StackOverflowに成れなかった、というより成り損ねた感がある
これは10年ほど昔にJS界隈でKenOkabe、通称「毛の壁」が、
細かい間違いを修正するよう突っ込みまくってウザがられて荒らし扱いされ、結局コメント機能が削除された、という経緯があるらしいが
結果的に「よりよいコード、より正しい情報を発信する」(StackOverflow的価値観)より、
「僕が気持ちよく情報発信する」(ゆとり世代的価値観)を優先したので、そうなってる
まあ創始者がゆとり世代だし、この判断が間違ってるかどうかも微妙で、例えば商業的意味なら「成功」となるのだが、
とにかく現状ではQiitaは玉石混淆、というよりゴミの方が多いので要注意
それでもないよりは100万倍いいので、素晴らしいサイトではあるけども
940デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:11:06.01ID:IRpwug8I0 これはQiitaのユーザーの問題というよりは、やはりレビューされてない事によるものだと思ってる
同様にGitHubでも個人レベルで公開してるのは、公開の場所が違うだけで、同様に糞コードの地雷原でしかない
同様にGitHubでも個人レベルで公開してるのは、公開の場所が違うだけで、同様に糞コードの地雷原でしかない
941デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:11:36.87ID:IRpwug8I0 ただ世界的に超有名なOSS(勿論GitHub上)でも超絶糞コードな事に遭遇した事があるので、(なおC言語)
OSSで多数に見られてればコードの質が上がる、ということでもないらしい
OSSで多数に見られてればコードの質が上がる、ということでもないらしい
942デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:11:54.86ID:IRpwug8I0 結局はレビュワーによるのだが、OSSでレビューで落としたら関係がそれなりに悪くなるらしいので、
長期戦略を考えたら糞コードもなかなかに落としづらいというのはあるのかもしれない
長期戦略を考えたら糞コードもなかなかに落としづらいというのはあるのかもしれない
943デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:12:12.67ID:IRpwug8I0 この点、PHP自体もOSSの産物だから、はっきり言って機能がデタラメで統一感もなく、
大手がガッツリ整備してる他言語(C#/Java等)と比べたら色々チグハグだが、
これもそういうものだと認識して諦めるしかない
文句があるならお前が直せ、のOSS文化そのままだ
とはいえPHP8には表面的には機能が揃ってる感はあるが
大手がガッツリ整備してる他言語(C#/Java等)と比べたら色々チグハグだが、
これもそういうものだと認識して諦めるしかない
文句があるならお前が直せ、のOSS文化そのままだ
とはいえPHP8には表面的には機能が揃ってる感はあるが
944デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 14:14:03.60ID:IRpwug8I0 …多分「コード」がNGワードっぽい
945デフォルトの名無しさん (ワッチョイ 6b4a-yGIB)
2024/10/18(金) 18:47:58.42ID:9d2rbs7t0 ここは毛の壁の落書き帳です
946デフォルトの名無しさん (ワッチョイ eb7b-1jHB)
2024/10/18(金) 20:59:29.50ID:IRpwug8I0 実際の所俺は、毛の壁が超えた、ゆとり世代的レッドラインがどの程度なのかは知りたいんだけどね
Qiita上では綺麗さっぱり消されてるので確認出来ないし
まあ言いたい事は、
つべこべ言わずpnp.netを読め、そして各ページのコードも読め、だ
他言語の常識でpnp.netを忌避するのは、勿体なさ過ぎる
Qiita上では綺麗さっぱり消されてるので確認出来ないし
まあ言いたい事は、
つべこべ言わずpnp.netを読め、そして各ページのコードも読め、だ
他言語の常識でpnp.netを忌避するのは、勿体なさ過ぎる
947デフォルトの名無しさん (ワッチョイ d274-nV0L)
2024/10/21(月) 10:50:17.35ID:hAiZn1ip0 環境: PHP 8.3.6, ubuntu24.04 LTS, oniguruma 6.9.9
mb_ereg_replace() に使う正規表現の中で (*FAIL) が使えません
PHP側で (*hoge) の形の正規表現パーツを無効化しているようですが
もし使えるようにする方法があれば教えて下さい
最近 oniguruma に (*SKIP) が実装されたので正規表現の高速化のために使いたいです
mb_ereg_replace()
https://www.php.net/manual/ja/function.mb-ereg-replace.php
mb_ereg_replace() に使う正規表現の中で (*FAIL) が使えません
PHP側で (*hoge) の形の正規表現パーツを無効化しているようですが
もし使えるようにする方法があれば教えて下さい
最近 oniguruma に (*SKIP) が実装されたので正規表現の高速化のために使いたいです
mb_ereg_replace()
https://www.php.net/manual/ja/function.mb-ereg-replace.php
948デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/21(月) 11:21:53.55ID:9J9C943n0 知らんが常識的にはdllを差し替えるだけでは?
949947 (ワッチョイ d274-nV0L)
2024/10/21(月) 12:10:55.14ID:hAiZn1ip0 >>948
ありがとうございます、PHPで使われている正規表現ライブラリは最新のものでした
$ php -i | grep "onig"
Multibyte regex (oniguruma) version => 6.9.9
PHP側が古い可能性もあるので一応 PHP 8.4.0 RC2 を試してみます
ありがとうございます、PHPで使われている正規表現ライブラリは最新のものでした
$ php -i | grep "onig"
Multibyte regex (oniguruma) version => 6.9.9
PHP側が古い可能性もあるので一応 PHP 8.4.0 RC2 を試してみます
950デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/21(月) 12:46:44.10ID:9J9C943n0 >>949
6.9.9が最新ならお前は多分勘違いをしてるぞ
> Master branch
> Update Unicode version 16.0
> Add new operator (*SKIP)
>
> Version 6.9.9
> 以下略
> https://github.com/kkos/oniguruma
この書き方なら、『開発中の』Master branch(=6.9.10としてリリースされるであろう物)には入ってるが、まだリリースされてない
つまりどのPHPバージョンにも普通は入ってない
だから自分でonigurumaをコンパイルして差し替える必要がある
6.9.9が最新ならお前は多分勘違いをしてるぞ
> Master branch
> Update Unicode version 16.0
> Add new operator (*SKIP)
>
> Version 6.9.9
> 以下略
> https://github.com/kkos/oniguruma
この書き方なら、『開発中の』Master branch(=6.9.10としてリリースされるであろう物)には入ってるが、まだリリースされてない
つまりどのPHPバージョンにも普通は入ってない
だから自分でonigurumaをコンパイルして差し替える必要がある
951947 (ワッチョイ d274-nV0L)
2024/10/21(月) 13:48:46.27ID:hAiZn1ip0 >>950
onigurumaの差し替えはやる予定でした、そこに気付かれるとは..すごい
しかし (*FAIL) すら使えないのでonigurumaの差し替えをしても意味が無いんです
恐らくPHP側で無効にしていると思われるのですが有効にする方法をどなたか..
onigurumaの差し替えはやる予定でした、そこに気付かれるとは..すごい
しかし (*FAIL) すら使えないのでonigurumaの差し替えをしても意味が無いんです
恐らくPHP側で無効にしていると思われるのですが有効にする方法をどなたか..
952デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/21(月) 14:34:37.43ID:9J9C943n0 >>951
> やる予定
それは実際に試して言ってる?
一般的にdllは呼ぶだけで、その前の段階で前処理なんてしない
というかそれやったら、PHP側のコードをonigurumaのバージョン毎に変えないといけなくなるだろ
無駄に依存性が増えるだけになってしまう
他ライブラリなんていつどう更新されるかも分からないのに
だから普通は差し替えれば動くだけ
動かないのであり、かつその原因がそちらの予想通りPHP側にoniguruma特定バージョン用のパッチが当ててある場合は、
php.iniにそれを切る為の設定が(一般的には)あるはず
でも繰り返すけど、普通はそうはせず、差し替えたら動くだけ、差し替えなければ動かないだけ、だと思うよ
動かないなら、そちらの設定間違いで、うまくdllを掴めてない可能性の方が高い
実際その(*FAIL)がどういう機能か知らんが、 (* 自体は対応してないとエラーになるでしょ
普通はそのエラー自体もライブラリ、つまりonigurumaやpeclに判定させて、throwさせるものだから
> やる予定
それは実際に試して言ってる?
一般的にdllは呼ぶだけで、その前の段階で前処理なんてしない
というかそれやったら、PHP側のコードをonigurumaのバージョン毎に変えないといけなくなるだろ
無駄に依存性が増えるだけになってしまう
他ライブラリなんていつどう更新されるかも分からないのに
だから普通は差し替えれば動くだけ
動かないのであり、かつその原因がそちらの予想通りPHP側にoniguruma特定バージョン用のパッチが当ててある場合は、
php.iniにそれを切る為の設定が(一般的には)あるはず
でも繰り返すけど、普通はそうはせず、差し替えたら動くだけ、差し替えなければ動かないだけ、だと思うよ
動かないなら、そちらの設定間違いで、うまくdllを掴めてない可能性の方が高い
実際その(*FAIL)がどういう機能か知らんが、 (* 自体は対応してないとエラーになるでしょ
普通はそのエラー自体もライブラリ、つまりonigurumaやpeclに判定させて、throwさせるものだから
953デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/21(月) 15:05:17.60ID:9J9C943n0954947 (ワッチョイ d274-nV0L)
2024/10/21(月) 15:21:24.44ID:hAiZn1ip0 >>952
>それは実際に試して言ってる?
実は最初から最新の Master branch (3237 commits) しか入れていません
つまり oniguruma 6.9.9 のリリース版を使っていません
このことを忘れてました、リリース版でも確認してみます、すみません..
そういうものですか、なるほど
php.ini と oniguruma 側の確認もしてみます
お時間取らせてしまって申し訳ないです、ありがとうございました
>それは実際に試して言ってる?
実は最初から最新の Master branch (3237 commits) しか入れていません
つまり oniguruma 6.9.9 のリリース版を使っていません
このことを忘れてました、リリース版でも確認してみます、すみません..
そういうものですか、なるほど
php.ini と oniguruma 側の確認もしてみます
お時間取らせてしまって申し訳ないです、ありがとうございました
955デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/21(月) 15:30:29.11ID:9J9C943n0956デフォルトの名無しさん (ワッチョイ f2fc-opEg)
2024/10/21(月) 20:10:27.85ID:QKrgL0if0 >947
preg_replaceで代替どうぞ
$pattern = '/foo(*SKIP)(*FAIL)|bar/u';
$replacement = 'baz';
$subject = 'foobár';
$result = preg_replace($pattern, $replacement, $subject);
echo $result; // foobaz
preg_replaceで代替どうぞ
$pattern = '/foo(*SKIP)(*FAIL)|bar/u';
$replacement = 'baz';
$subject = 'foobár';
$result = preg_replace($pattern, $replacement, $subject);
echo $result; // foobaz
957947 (ワッチョイ d274-nV0L)
2024/10/21(月) 20:30:30.28ID:hAiZn1ip0 >>955
リリース版でも試しましたが結果は変わりませんでした、 (*FAIL) は使えませんでした
リリース版でも Master branch の最新版でも oniguruma 単体では (*FAIL) を使えます
php.ini にも (*FAIL) などを無効化するような設定は見当たりませんでした
PHPをコンパイルする前のソースも見てみたのですが該当しそうな場所を見つけられていません
しかしまだまだ調査不足なのでもっと調べてみます
もしかしたら思いもよらない場所にある古い oniguruma ライブラリを参照している可能性もあります
何か分かりましたらまた来ます、今日は色々教えて頂きありがとうございました!
リリース版でも試しましたが結果は変わりませんでした、 (*FAIL) は使えませんでした
リリース版でも Master branch の最新版でも oniguruma 単体では (*FAIL) を使えます
php.ini にも (*FAIL) などを無効化するような設定は見当たりませんでした
PHPをコンパイルする前のソースも見てみたのですが該当しそうな場所を見つけられていません
しかしまだまだ調査不足なのでもっと調べてみます
もしかしたら思いもよらない場所にある古い oniguruma ライブラリを参照している可能性もあります
何か分かりましたらまた来ます、今日は色々教えて頂きありがとうございました!
958947 (ワッチョイ d274-nV0L)
2024/10/21(月) 21:31:17.66ID:hAiZn1ip0 >>956
すいません!レスに気付いてませんでした!
頂いたコードで (*SKIP)(*FAIL) が正しく動作しているのを確認出来ました
しかし私は mb_ereg のほうを使わなければなりません、正規表現で UTF-8 以外の
エンコードを使うためです、せっかく作って頂いたのに申し訳ない..
> á
おお、 /u はこんな挙動するんですね、勉強になります
すいません!レスに気付いてませんでした!
頂いたコードで (*SKIP)(*FAIL) が正しく動作しているのを確認出来ました
しかし私は mb_ereg のほうを使わなければなりません、正規表現で UTF-8 以外の
エンコードを使うためです、せっかく作って頂いたのに申し訳ない..
> á
おお、 /u はこんな挙動するんですね、勉強になります
959デフォルトの名無しさん (ワッチョイ 0601-opEg)
2024/10/22(火) 07:31:12.59ID:frvkcjlG0 >958
なるほどね理解しました。根本的な解決に向けての助力は他の方が回答してくれてるので、俺は一時的な回避策(w)を提示するよ。その場凌ぎなので悪しからず
$original_encoding = 'SJIS'; // 例: Shift-JIS など
// 文字列を一時的に UTF-8 に変換
$subject = mb_convert_encoding($subject, 'UTF-8', $original_encoding);
// preg_replace を利用して (*SKIP)(*FAIL) を使った正規表現を適用
$pattern = '/foo(*SKIP)(*FAIL)|bar/u';
$replacement = 'baz';
$result = preg_replace($pattern, $replacement, $subject);
// 結果を元のエンコーディングに戻す
$result = mb_convert_encoding($result, $original_encoding, 'UTF-8');
echo $result;
なるほどね理解しました。根本的な解決に向けての助力は他の方が回答してくれてるので、俺は一時的な回避策(w)を提示するよ。その場凌ぎなので悪しからず
$original_encoding = 'SJIS'; // 例: Shift-JIS など
// 文字列を一時的に UTF-8 に変換
$subject = mb_convert_encoding($subject, 'UTF-8', $original_encoding);
// preg_replace を利用して (*SKIP)(*FAIL) を使った正規表現を適用
$pattern = '/foo(*SKIP)(*FAIL)|bar/u';
$replacement = 'baz';
$result = preg_replace($pattern, $replacement, $subject);
// 結果を元のエンコーディングに戻す
$result = mb_convert_encoding($result, $original_encoding, 'UTF-8');
echo $result;
960デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/22(火) 08:51:20.86ID:OD5ng7w50 >>957
それだと、用意したdllは使われておらず、どこかにある古いonigurumaを掴んでいるように見えるな
なら、今掴まれているdllを特定して、そのファイルと差し替えるのが一番早いかと
windowsなら実行中の各プロセスがどのdllファイルを掴んでいるかはprocessExplororで簡単に分かるが、
Unixだと聞いたことない(…が、あるんだろうけど)
ググるとlddで静的解析は出来るらしい(使ったこと無いが)
ただこれは自分でコマンドとして起動する場合用だから、
apache/nginxを起動してるユーザーで実行すれば命中するが、ただのユーザーではいまいちだな
https://stackoverflow.com/questions/50159/how-to-show-all-shared-libraries-used-by-executables-in-linux
https://linux.die.net/man/1/ldd
(実際色々変わってるらしいので何ともだが、昔と同様の起動形態だと、
rc*.dを改変してapache起動直前にlddすれば確定する《はず》)
あと、xampp環境だと php_mbstring.dll というものがある
これがonigurumaかどうかは分からないが、そうだった場合、php_*となっているのは通常、
「そのものではなく、php側が用意したラッパをつけた状態でdllにした」ことを意味するので、
oniguruma単体ではなく、ラッパつけて再コンパイルする必要があるかも
それだと、用意したdllは使われておらず、どこかにある古いonigurumaを掴んでいるように見えるな
なら、今掴まれているdllを特定して、そのファイルと差し替えるのが一番早いかと
windowsなら実行中の各プロセスがどのdllファイルを掴んでいるかはprocessExplororで簡単に分かるが、
Unixだと聞いたことない(…が、あるんだろうけど)
ググるとlddで静的解析は出来るらしい(使ったこと無いが)
ただこれは自分でコマンドとして起動する場合用だから、
apache/nginxを起動してるユーザーで実行すれば命中するが、ただのユーザーではいまいちだな
https://stackoverflow.com/questions/50159/how-to-show-all-shared-libraries-used-by-executables-in-linux
https://linux.die.net/man/1/ldd
(実際色々変わってるらしいので何ともだが、昔と同様の起動形態だと、
rc*.dを改変してapache起動直前にlddすれば確定する《はず》)
あと、xampp環境だと php_mbstring.dll というものがある
これがonigurumaかどうかは分からないが、そうだった場合、php_*となっているのは通常、
「そのものではなく、php側が用意したラッパをつけた状態でdllにした」ことを意味するので、
oniguruma単体ではなく、ラッパつけて再コンパイルする必要があるかも
961947 (ワッチョイ d274-nV0L)
2024/10/22(火) 21:24:40.11ID:u1LoTuab0 書き込み規制が出たので簡素化して書きます
mb_ereg_replace() で (*FAIL) が動かない原因は oniguruma のライブラリの
バージョンが古いという問題ではありませんでした
oniguruma 6.6.0 で追加された (?W) が使えない一方で 6.9.5 で追加された
\x{HHHH HHHH} が使えるなどバージョンの違いでは説明出来ない動作がたくさん確認出来ました
この問題は恐らく解決が困難だと思うので諦めます
お二方、お付き合い頂きありがとうございました、勉強になりました、感謝です
mb_ereg_replace() で (*FAIL) が動かない原因は oniguruma のライブラリの
バージョンが古いという問題ではありませんでした
oniguruma 6.6.0 で追加された (?W) が使えない一方で 6.9.5 で追加された
\x{HHHH HHHH} が使えるなどバージョンの違いでは説明出来ない動作がたくさん確認出来ました
この問題は恐らく解決が困難だと思うので諦めます
お二方、お付き合い頂きありがとうございました、勉強になりました、感謝です
962デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/22(火) 22:48:01.75ID:OD5ng7w50963デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 06:42:46.86ID:/9Lix2oc0 >>961
そういえば書き込み規制の件、
もしまだ原稿が手元に残ってるなら、
多少読みにくくてもいいから、バラバラにするなり、他板のテストスレに落とすなりしてもらえないだろうか
情報が有るのと無いのでは全然違うので、俺は読むから
コピペ規制なら、例えばmango板は規制チェックの為の板なので、落とせるし
agree.5ch.net/test/read.cgi/mango/1715675838/
そういえば書き込み規制の件、
もしまだ原稿が手元に残ってるなら、
多少読みにくくてもいいから、バラバラにするなり、他板のテストスレに落とすなりしてもらえないだろうか
情報が有るのと無いのでは全然違うので、俺は読むから
コピペ規制なら、例えばmango板は規制チェックの為の板なので、落とせるし
agree.5ch.net/test/read.cgi/mango/1715675838/
964947 (ワッチョイ d274-nV0L)
2024/10/23(水) 14:05:07.85ID:ETlmKTT60 現時点では php-mbstring の問題だと思っています
これはPHPに後から追加するPHPの拡張モジュールです、このモジュールが oniguruma の
ライブラリのファイルを参照します
oniguruma は各正規表現パーツごとに有効、無効を切り替えられる仕様になって
いるのですが、oniguruma を呼び出す php-mbstring 側で (?W) や (*FAIL) が
有効にされていない可能性が高いと考えています
以下のページは oniguruma の各パーツごとのオプション名を説明するページです
s://github.com/kkos/oniguruma/blob/master/doc/SYNTAX.md
このページを "Set in:" でページ内検索すると各パーツがどのプログラム言語用の
正規表現ルールに適用されるかが分かります
(?W) は 30番目の ONIG_SYN_OP2_OPTION_ONIGURUMA というオプションを
有効にすると使えるのですが、これが適用されるルールは 「Set in: Oniguruma」と
書いてあるので正規表現ルールを "Oniguruma" と指定しないと使えません
しかし php-mbstring のソースを見てみると選べる正規表現ルールの中に "Oniguruma" は
ありませんでした、つまり正規表現ルールを "Oniguruma" に変更出来れば (*FAIL) なども
使えるようになる可能性があります(そう簡単に上手くいくとも思えませんが)
これはPHPに後から追加するPHPの拡張モジュールです、このモジュールが oniguruma の
ライブラリのファイルを参照します
oniguruma は各正規表現パーツごとに有効、無効を切り替えられる仕様になって
いるのですが、oniguruma を呼び出す php-mbstring 側で (?W) や (*FAIL) が
有効にされていない可能性が高いと考えています
以下のページは oniguruma の各パーツごとのオプション名を説明するページです
s://github.com/kkos/oniguruma/blob/master/doc/SYNTAX.md
このページを "Set in:" でページ内検索すると各パーツがどのプログラム言語用の
正規表現ルールに適用されるかが分かります
(?W) は 30番目の ONIG_SYN_OP2_OPTION_ONIGURUMA というオプションを
有効にすると使えるのですが、これが適用されるルールは 「Set in: Oniguruma」と
書いてあるので正規表現ルールを "Oniguruma" と指定しないと使えません
しかし php-mbstring のソースを見てみると選べる正規表現ルールの中に "Oniguruma" は
ありませんでした、つまり正規表現ルールを "Oniguruma" に変更出来れば (*FAIL) なども
使えるようになる可能性があります(そう簡単に上手くいくとも思えませんが)
965デフォルトの名無しさん (ワッチョイ f281-XFgw)
2024/10/23(水) 14:05:25.05ID:uHtllYPK0 その辺まで行くとissue読み漁らないとたどり着かない領域かもね
966947 (ワッチョイ d274-nV0L)
2024/10/23(水) 14:43:46.47ID:ETlmKTT60 あと、話を簡素化するために嘘を書いてしまったので訂正します
php-mbstring ライブラリが参照している oniguruma ライブラリを教えて頂いた
ldd コマンドで調べたところ、以下のように別ファイルを参照していました
php-mbstring が参照していたパス
/usr/lib/x86_64-linux-gnu/libonig.so.5.4.0
私が入れた oniguruma ライブラリのパス
/usr/local/lib/libonig.so.5.4.0
php-mbstring が参照していたライブラリのファイルサイズは私が入れたライブラリの
半分ほどだったので恐らく古いライブラリだったのだと思います
そこで php-mbstring が参照しているライブラリを最新の Master branch のライブラリに
置き換えて (*FAIL) が使えるかを試してみましたが結果は変わらず、使えないままでした
>>948 でご指摘して頂いたことは的を射ていたということになります
お詫びして訂正致します、すみませんでした
php-mbstring ライブラリが参照している oniguruma ライブラリを教えて頂いた
ldd コマンドで調べたところ、以下のように別ファイルを参照していました
php-mbstring が参照していたパス
/usr/lib/x86_64-linux-gnu/libonig.so.5.4.0
私が入れた oniguruma ライブラリのパス
/usr/local/lib/libonig.so.5.4.0
php-mbstring が参照していたライブラリのファイルサイズは私が入れたライブラリの
半分ほどだったので恐らく古いライブラリだったのだと思います
そこで php-mbstring が参照しているライブラリを最新の Master branch のライブラリに
置き換えて (*FAIL) が使えるかを試してみましたが結果は変わらず、使えないままでした
>>948 でご指摘して頂いたことは的を射ていたということになります
お詫びして訂正致します、すみませんでした
967デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 22:17:15.79ID:/9Lix2oc0 >>966
いや全く謝る必要はない
その辺まで行ってる時点で大したもんだし、よく言われてる「報告」についても、君はよく出来てるよ
> oniguruma は各正規表現パーツごとに有効、無効を切り替えられる仕様になって
> いるのですが、oniguruma を呼び出す php-mbstring 側で (?W) や (*FAIL) が
> 有効にされていない可能性が高いと考えています
なるほど、これを知ってたから最初から無効化を疑ってたわけね
俺は知らなかったから、一般論で答えてしまったが
正規表現の場合は互換性が問題になるから一々細かくやらないと駄目なのかもね
> 正規表現ルールを "Oniguruma" と指定しないと使えません
これは微妙にちと違っていて、あの書き方だとただ単にフラグだから、C的にありがちなのは、以下α
(最近使ってないなら文法間違ってるかもだが)
多少行儀のいい場合:α
#define ONIG_SYN_OP2_OPTION_ONIGURUMA 0x04000000 // oniguruma内
onigSyntaxType.op2 |= ONIG_SYN_OP2_OPTION_ONIGURUMA; // php_mgstring内
あるいはドベタに:β
onigSyntaxType.op2 |= 0x40000000; // php_mbstring内
"Oniguruma"指定の場合は、多分:γ
OrigSyntaxType Oniguruma = {0xfff7d556, 0x47eb7bd2, 0x87a00bdb}; // oniguruma内
OrigSyntaxType origSyntaxType = Oniguruma; // php_mbstring内
要するにビットを立ててるだけなので、op2の[30]を立ててしまえば使えるようになる
Oniguruma指定は一番手抜きが出来て楽だが、
php_mbstringの機能追加タイミングがOnigurumaのバージョンアップと同期してしまう
だから互換性を重視しつつ、必要なタイミングで上位機能を取り込みたい場合は、普通はαにする
そして結果的にOniguruma指定と同じになる事を(長期的に)目指す
いや全く謝る必要はない
その辺まで行ってる時点で大したもんだし、よく言われてる「報告」についても、君はよく出来てるよ
> oniguruma は各正規表現パーツごとに有効、無効を切り替えられる仕様になって
> いるのですが、oniguruma を呼び出す php-mbstring 側で (?W) や (*FAIL) が
> 有効にされていない可能性が高いと考えています
なるほど、これを知ってたから最初から無効化を疑ってたわけね
俺は知らなかったから、一般論で答えてしまったが
正規表現の場合は互換性が問題になるから一々細かくやらないと駄目なのかもね
> 正規表現ルールを "Oniguruma" と指定しないと使えません
これは微妙にちと違っていて、あの書き方だとただ単にフラグだから、C的にありがちなのは、以下α
(最近使ってないなら文法間違ってるかもだが)
多少行儀のいい場合:α
#define ONIG_SYN_OP2_OPTION_ONIGURUMA 0x04000000 // oniguruma内
onigSyntaxType.op2 |= ONIG_SYN_OP2_OPTION_ONIGURUMA; // php_mgstring内
あるいはドベタに:β
onigSyntaxType.op2 |= 0x40000000; // php_mbstring内
"Oniguruma"指定の場合は、多分:γ
OrigSyntaxType Oniguruma = {0xfff7d556, 0x47eb7bd2, 0x87a00bdb}; // oniguruma内
OrigSyntaxType origSyntaxType = Oniguruma; // php_mbstring内
要するにビットを立ててるだけなので、op2の[30]を立ててしまえば使えるようになる
Oniguruma指定は一番手抜きが出来て楽だが、
php_mbstringの機能追加タイミングがOnigurumaのバージョンアップと同期してしまう
だから互換性を重視しつつ、必要なタイミングで上位機能を取り込みたい場合は、普通はαにする
そして結果的にOniguruma指定と同じになる事を(長期的に)目指す
968デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 22:18:06.80ID:/9Lix2oc0 なので検索する場合は、Onigurumaが無ければ、
ONIG_SYN_OP2_OPTION_ONIGURUMA を探し、それもなければ
0x を探す(一応0Xでもいいらしいのでそれも)
とまあ、ここまで書いてると、「そこまで言うならお前が見ろや!」なので見てみる
最新版とか知らんのでpnp.netのdownloadページの8.3.12をDLした(CurrentStable)
ああ俺は、他人のコードを読み足りない、と認識してるから、こういう機会があれば読む事にしているだけだ
今風に言えば、べっ別に、あんたの為に読んだ訳じゃないんだからね!!!(だが男だ)
さて上記検索試すが、空振る。そして後付ではあるが
php-8.3.12>grep -n -r -i OnigSyntaxType *
ext/mbstring/php_mbregex.c:62: OnigSyntaxType *regex_default_syntax;
ext/mbstring/php_mbregex.c:455:static php_mb_regex_t *php_mbregex_compile_pattern(const char *pattern, size_t patlen, OnigOptionType
options, OnigSyntaxType *syntax)
ext/mbstring/php_mbregex.c:489:static size_t _php_mb_regex_get_option_string(char *str, size_t len, OnigOptionType option,
OnigSyntaxType *syntax)
ext/mbstring/php_mbregex.c:595: OnigSyntaxType **syntax)
ext/mbstring/php_mbregex.c:997: OnigSyntaxType *syntax;
ext/mbstring/php_mbregex.c:1268: OnigSyntaxType *syntax;
ext/mbstring/php_mbregex.c:1332: OnigSyntaxType *syntax;
ext/mbstring/php_mbregex.c:1463: OnigSyntaxType *syntax = NULL;
ext/mbstring/php_mbregex.c:1591:static void _php_mb_regex_set_options(OnigOptionType options, OnigSyntaxType *syntax, OnigOptionType
*prev_options, OnigSyntaxType **prev_syntax)
ext/mbstring/php_mbregex.c:1608: OnigSyntaxType *syntax, *prev_syntax;
当たり前だが、変化する値側ではなく、固定的な型名で検索するべきだった
ONIG_SYN_OP2_OPTION_ONIGURUMA を探し、それもなければ
0x を探す(一応0Xでもいいらしいのでそれも)
とまあ、ここまで書いてると、「そこまで言うならお前が見ろや!」なので見てみる
最新版とか知らんのでpnp.netのdownloadページの8.3.12をDLした(CurrentStable)
ああ俺は、他人のコードを読み足りない、と認識してるから、こういう機会があれば読む事にしているだけだ
今風に言えば、べっ別に、あんたの為に読んだ訳じゃないんだからね!!!(だが男だ)
さて上記検索試すが、空振る。そして後付ではあるが
php-8.3.12>grep -n -r -i OnigSyntaxType *
ext/mbstring/php_mbregex.c:62: OnigSyntaxType *regex_default_syntax;
ext/mbstring/php_mbregex.c:455:static php_mb_regex_t *php_mbregex_compile_pattern(const char *pattern, size_t patlen, OnigOptionType
options, OnigSyntaxType *syntax)
ext/mbstring/php_mbregex.c:489:static size_t _php_mb_regex_get_option_string(char *str, size_t len, OnigOptionType option,
OnigSyntaxType *syntax)
ext/mbstring/php_mbregex.c:595: OnigSyntaxType **syntax)
ext/mbstring/php_mbregex.c:997: OnigSyntaxType *syntax;
ext/mbstring/php_mbregex.c:1268: OnigSyntaxType *syntax;
ext/mbstring/php_mbregex.c:1332: OnigSyntaxType *syntax;
ext/mbstring/php_mbregex.c:1463: OnigSyntaxType *syntax = NULL;
ext/mbstring/php_mbregex.c:1591:static void _php_mb_regex_set_options(OnigOptionType options, OnigSyntaxType *syntax, OnigOptionType
*prev_options, OnigSyntaxType **prev_syntax)
ext/mbstring/php_mbregex.c:1608: OnigSyntaxType *syntax, *prev_syntax;
当たり前だが、変化する値側ではなく、固定的な型名で検索するべきだった
969デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 22:19:18.35ID:/9Lix2oc0 そして順当なら php_mbregex.c:1591:static void _php_mb_regex_set_options なので見てみる
prevをデフォに戻して新しい値をセットするだけのようだ
そもそもprevが何故いるのか?はかなり疑問だが、まあいい
とにかくビットを立ててしまいたいだけなら、ここを改造して、上記βしてしまえば、ここを通る限り常にビット30が立つようになる
コンパイル通るかどうか知らんが、例えば具体的には、
MBREX(regex_default_options) = options;
MBREX(regex_default_syntax) = syntax;
(*syntax)->op2 |= 0x40000000; // これを最後に追加
MBREXはマクロ
#define MBREX(g) (MBSTRG(mb_regex_globals)->g)
MBSTRGもマクロ
mbstring.h:118:#define MBSTRG(v) ZEND_MODULE_GLOBALS_ACCESSOR(mbstring, v)
ZEND_MODULE_GLOBALS_ACCESSORもマクロ
Zend/zend_API.h:255:#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) ZEND_TSRMG(module_name##_globals_id,
zend_##module_name##_globals *, v)
Zend/zend_API.h:270:#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
2つ出るのは#ifdefと相場が決まっており、今回も#ifdef ZTS らしいが、ZTSってなんだっけ?
まあとにかくこの辺はここまででいい、とにかく更新してるだけっぽいし
prevをデフォに戻して新しい値をセットするだけのようだ
そもそもprevが何故いるのか?はかなり疑問だが、まあいい
とにかくビットを立ててしまいたいだけなら、ここを改造して、上記βしてしまえば、ここを通る限り常にビット30が立つようになる
コンパイル通るかどうか知らんが、例えば具体的には、
MBREX(regex_default_options) = options;
MBREX(regex_default_syntax) = syntax;
(*syntax)->op2 |= 0x40000000; // これを最後に追加
MBREXはマクロ
#define MBREX(g) (MBSTRG(mb_regex_globals)->g)
MBSTRGもマクロ
mbstring.h:118:#define MBSTRG(v) ZEND_MODULE_GLOBALS_ACCESSOR(mbstring, v)
ZEND_MODULE_GLOBALS_ACCESSORもマクロ
Zend/zend_API.h:255:#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) ZEND_TSRMG(module_name##_globals_id,
zend_##module_name##_globals *, v)
Zend/zend_API.h:270:#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v) (module_name##_globals.v)
2つ出るのは#ifdefと相場が決まっており、今回も#ifdef ZTS らしいが、ZTSってなんだっけ?
まあとにかくこの辺はここまででいい、とにかく更新してるだけっぽいし
970デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 22:21:26.39ID:/9Lix2oc0 その他、
ext/mbstring/php_mbregex.c:489:static size_t _php_mb_regex_get_option_string
ext/mbstring/php_mbregex.c:594:static bool _php_mb_regex_init_options
とか、いかにもなので君には分かるだろう
真面目に直すのならこの辺だね
ちなみに regex_default_syntax を修正してもいけるはず。これは
ext/mbstring/php_mbregex.c:84:pglobals->regex_default_syntax = ONIG_SYNTAX_RUBY;
とモロクソに書いてある
君の読み通りなら、そこを
pglobals->regex_default_syntax = ONIG_SYNTAX_ONIGURUMA; // RUBYからONIGURUMAに変更
ついでに
ext/mbstring/php_mbregex.c:601:*syntax = ONIG_SYNTAX_ONIGURMUA; // RUBYからONIGURUMAに変更
なのだろうね
grep -n -r ONIG_SYNTAX *
でONIG_SYNTAX_RUBYが引っかからないから、おそらくONIG_SYNTAX_RUBYはoniguruma側で定義されてる
だからoniguruma側で同様にgrepして ONIG_SYNTAX_ONIGURUMA が定義されてればいけるかも
てかこれ見る限り、毎回initしてるのか?(まあdllならそうかもだが)
そして _php_mb_regex_init_options内case '*' の部分をphp.iniかどこかで設定出来るようにしてるはずではあるが
ただ普通に考えて、prev_syntaxって何ぞ?ではある
regexで「今回の」文法を切り替えるのは分かるが、「前回の」は明らかに要らないので、
それがある=何か無理矢理切り替えて動かしてる感あり、なので、単純にビット立てるだけでは駄目かもよ
ダラダラ書いたけどこんな感じ
とはいえ、君はほぼ辿り着いてるよね
php_mbstringのコンパイル環境の立ち上げがすんなり行くかはやってみないと分からないが
ext/mbstring/php_mbregex.c:489:static size_t _php_mb_regex_get_option_string
ext/mbstring/php_mbregex.c:594:static bool _php_mb_regex_init_options
とか、いかにもなので君には分かるだろう
真面目に直すのならこの辺だね
ちなみに regex_default_syntax を修正してもいけるはず。これは
ext/mbstring/php_mbregex.c:84:pglobals->regex_default_syntax = ONIG_SYNTAX_RUBY;
とモロクソに書いてある
君の読み通りなら、そこを
pglobals->regex_default_syntax = ONIG_SYNTAX_ONIGURUMA; // RUBYからONIGURUMAに変更
ついでに
ext/mbstring/php_mbregex.c:601:*syntax = ONIG_SYNTAX_ONIGURMUA; // RUBYからONIGURUMAに変更
なのだろうね
grep -n -r ONIG_SYNTAX *
でONIG_SYNTAX_RUBYが引っかからないから、おそらくONIG_SYNTAX_RUBYはoniguruma側で定義されてる
だからoniguruma側で同様にgrepして ONIG_SYNTAX_ONIGURUMA が定義されてればいけるかも
てかこれ見る限り、毎回initしてるのか?(まあdllならそうかもだが)
そして _php_mb_regex_init_options内case '*' の部分をphp.iniかどこかで設定出来るようにしてるはずではあるが
ただ普通に考えて、prev_syntaxって何ぞ?ではある
regexで「今回の」文法を切り替えるのは分かるが、「前回の」は明らかに要らないので、
それがある=何か無理矢理切り替えて動かしてる感あり、なので、単純にビット立てるだけでは駄目かもよ
ダラダラ書いたけどこんな感じ
とはいえ、君はほぼ辿り着いてるよね
php_mbstringのコンパイル環境の立ち上げがすんなり行くかはやってみないと分からないが
971デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 22:21:59.96ID:/9Lix2oc0 あとついでに言うと、推定だが、順当には、
当初:php->onigurumaを直接呼び出し
おそらくonigurumagaの更新でAPIが変わって、
現在:php->php_mbstring->oniguruma と呼び出し、
php->php_mbstring間のAPIは固定、
php_mbstring->onigurumaでonigurumaのAPI変更に対応、
つまりonigurumaが変更されてもphp_mbstringの変更のみで対応し、php 本体は一行も変更無しでいけるように分離した、
だと思うので、君の予想する「oniguruma用に何かしてるコード」はphp_mbstring側に全部突っ込まれてるはず
まあこれも一般論だが
当初:php->onigurumaを直接呼び出し
おそらくonigurumagaの更新でAPIが変わって、
現在:php->php_mbstring->oniguruma と呼び出し、
php->php_mbstring間のAPIは固定、
php_mbstring->onigurumaでonigurumaのAPI変更に対応、
つまりonigurumaが変更されてもphp_mbstringの変更のみで対応し、php 本体は一行も変更無しでいけるように分離した、
だと思うので、君の予想する「oniguruma用に何かしてるコード」はphp_mbstring側に全部突っ込まれてるはず
まあこれも一般論だが
972デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 22:31:46.47ID:/9Lix2oc0973デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 22:52:29.22ID:/9Lix2oc0 さらについで
ONIG_SYNTAXは仕様としては任意のビットを立てたり落としたり出来るはずだが、
実際はこの手の奴は大体テストが甘くて、組み合わせによっては動作しなかったりする
ではどうするか?と言えば、テスト済みであろう組み合わせに出来るだけ近い物を使う
今回ならRUBYかONIGURUMAに一番近いものだが、まあ、両方とも似たり寄ったりだな
しかしよく見ると、RUBY 指定なら ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME は立ってるではないか
php_mbstringのソースだけ見るとデフォはRUBY指定だから動くはず
となると何らかの理由で _php_mb_regex_init_options で他指定に切り替えられてるのか?
ならば手抜きで直すなら、
ext/mbstring/php_mbregex.c:607-656を全部コメントアウトして case 文を無視、
何をどう指定されても ONIG_SYNTAX_RUBY(あるいはONIG_SYNTAX_ONIGURUMA) になるようにしてしまうとか、かな
ONIG_SYNTAXは仕様としては任意のビットを立てたり落としたり出来るはずだが、
実際はこの手の奴は大体テストが甘くて、組み合わせによっては動作しなかったりする
ではどうするか?と言えば、テスト済みであろう組み合わせに出来るだけ近い物を使う
今回ならRUBYかONIGURUMAに一番近いものだが、まあ、両方とも似たり寄ったりだな
しかしよく見ると、RUBY 指定なら ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME は立ってるではないか
php_mbstringのソースだけ見るとデフォはRUBY指定だから動くはず
となると何らかの理由で _php_mb_regex_init_options で他指定に切り替えられてるのか?
ならば手抜きで直すなら、
ext/mbstring/php_mbregex.c:607-656を全部コメントアウトして case 文を無視、
何をどう指定されても ONIG_SYNTAX_RUBY(あるいはONIG_SYNTAX_ONIGURUMA) になるようにしてしまうとか、かな
974デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 23:37:30.51ID:/9Lix2oc0 >>964
てゆうかすいません、モロクソに書いてましたわ
dllだけ差し替えて'r'指定で行けるはずですわ
もうちょっと眺めて投稿すべきだった(これもかもだが)
(すまぬが引っかかるのでバラバラに落とす)
てゆうかすいません、モロクソに書いてましたわ
dllだけ差し替えて'r'指定で行けるはずですわ
もうちょっと眺めて投稿すべきだった(これもかもだが)
(すまぬが引っかかるのでバラバラに落とす)
975デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 23:40:00.93ID:/9Lix2oc0 _php_mb_regex_init_options は各関数で毎回呼ばれてる
(_php_mb_regex_ereg_replace_execからも)
(_php_mb_regex_ereg_replace_execからも)
976デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 23:41:25.78ID:/9Lix2oc0 そしてこれをPHPから呼ぶのが mb_regex_set_options で、
977デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 23:42:52.32ID:/9Lix2oc0 > Regex 構文モード(ひとつだけ設定可能です)
978デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 23:43:08.35ID:/9Lix2oc0 > https://www.php.net/manual/ja/function.mb-regex-set-options.php
とモロクソ書いてますな
そして何故かそのphp.netページにはデフォが何か書いてないが、
'r'指定すればRUBY指定(=ONIG_SYN_OP2_ASTERISK_CALLOUT_NAMEがON)になる
'p'指定でもいけるかも?
そしてこのフラグは mb_ereg_replace でも使えるらしい。つまり、
mb_ereg_replace(
string $pattern,
string $replacement,
string $string,
?string $options = null <- ここに指定、例えば 'r' or 'p'
): string|false|null
これで使えるなら、dllだけ差し替えればC側の修正は不要(そして多分これで上手く行く)
とモロクソ書いてますな
そして何故かそのphp.netページにはデフォが何か書いてないが、
'r'指定すればRUBY指定(=ONIG_SYN_OP2_ASTERISK_CALLOUT_NAMEがON)になる
'p'指定でもいけるかも?
そしてこのフラグは mb_ereg_replace でも使えるらしい。つまり、
mb_ereg_replace(
string $pattern,
string $replacement,
string $string,
?string $options = null <- ここに指定、例えば 'r' or 'p'
): string|false|null
これで使えるなら、dllだけ差し替えればC側の修正は不要(そして多分これで上手く行く)
979デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/23(水) 23:43:51.89ID:/9Lix2oc0 それでも駄目、或いはRUBY指定やPERL指定では使えない機能も使いたいなら、
_php_mb_regex_init_optionsに
case 'o':
*syntax = ONIG_SYNTAX_ONIGURUMA
break;
を追加して、'o'指定してやるとかすればいけるはず
敗因は、oniguruma側で細かくregexを切り替えられる事を知らない人にとっては
> Regex 構文モード(ひとつだけ設定可能です)
とか意味不明だからだな
最初にそこを言ってくれてれば、ピンと来た人がいたかも?
_php_mb_regex_init_optionsに
case 'o':
*syntax = ONIG_SYNTAX_ONIGURUMA
break;
を追加して、'o'指定してやるとかすればいけるはず
敗因は、oniguruma側で細かくregexを切り替えられる事を知らない人にとっては
> Regex 構文モード(ひとつだけ設定可能です)
とか意味不明だからだな
最初にそこを言ってくれてれば、ピンと来た人がいたかも?
980デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/24(木) 01:07:24.54ID:D6fJlQ4l0 >>978
訂正、perlなので' p と思ってしまってたが z だった orz
× 'p'指定でもいけるかも?
○ 'z'指定でもいけるかも?
× 例えば 'r' or 'p'
○ 例えば 'r' or 'z'
あと var_dump(mb_regex_set_options(null)); でデフォを確認出来る
多分 "r" と出るはず
あと
>>973
> しかしよく見ると、RUBY 指定なら ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME は立ってるではないか
> php_mbstringのソースだけ見るとデフォはRUBY指定だから動くはず
の部分も一部訂正だが、これは俺だけが悪いのではなく、GitHubのSYNTAXページも間違ってるな
上側の説明部分では
> 28. ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS (enable (?{...}))
> Set in: Oniguruma, Perl, Perl_NG
> 29. ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME (enable (*name))
> Set in: Oniguruma, Perl, Perl_NG
となってて、Onigurumaならフル機能のように書かれてるが、下の表だと 28,29はOnigurumaでは付いてない
まあどっちが正しいのかは謎だが、意味不明な挙動するのはこの辺の問題もあるかもよ
これでは結局の所、RUBYやONIGURMUA指定で欲しい機能(29と30か?)が動くかどうかがよく分からんし
(まあ自前で立ててやればいいんですけどね)
訂正、perlなので' p と思ってしまってたが z だった orz
× 'p'指定でもいけるかも?
○ 'z'指定でもいけるかも?
× 例えば 'r' or 'p'
○ 例えば 'r' or 'z'
あと var_dump(mb_regex_set_options(null)); でデフォを確認出来る
多分 "r" と出るはず
あと
>>973
> しかしよく見ると、RUBY 指定なら ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME は立ってるではないか
> php_mbstringのソースだけ見るとデフォはRUBY指定だから動くはず
の部分も一部訂正だが、これは俺だけが悪いのではなく、GitHubのSYNTAXページも間違ってるな
上側の説明部分では
> 28. ONIG_SYN_OP2_QMARK_BRACE_CALLOUT_CONTENTS (enable (?{...}))
> Set in: Oniguruma, Perl, Perl_NG
> 29. ONIG_SYN_OP2_ASTERISK_CALLOUT_NAME (enable (*name))
> Set in: Oniguruma, Perl, Perl_NG
となってて、Onigurumaならフル機能のように書かれてるが、下の表だと 28,29はOnigurumaでは付いてない
まあどっちが正しいのかは謎だが、意味不明な挙動するのはこの辺の問題もあるかもよ
これでは結局の所、RUBYやONIGURMUA指定で欲しい機能(29と30か?)が動くかどうかがよく分からんし
(まあ自前で立ててやればいいんですけどね)
981947 (ワッチョイ d274-nV0L)
2024/10/24(木) 12:35:15.79ID:CfDH66X40 ありがとうございます、おかげ様でゴールが見えてきた感じです
すごい解析力に脱帽でした、読みながら「すごいな〜」を連発してしまいました
ちょっと昔に DAN KOGAI さんを見たときも衝撃を受けましたがそんな感じでした
本当は (*FAIL) が動くのを確認してからレスしたかったのですが
何かにハマっているらしくまだ成功していません
しかしもう PHP の問題というより oniguruma の問題ですので
ここから先は自力でなんとかなりそうです
> 28. 29.
これは表が間違ってます、以下は ONIG_SYNTAX_RUBY のオプション指定です
https://github.com/kkos/oniguruma/blob/43a8c3f3daf263091f3a74019d4b32ebb6417093/src/regparse.c#L122-L162
#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby)
https://github.com/kkos/oniguruma/blob/43a8c3f3daf263091f3a74019d4b32ebb6417093/src/oniguruma.h#L444
今は (*FAIL) が使えるようになるかの手っ取り早い確認のために oniguruma ライブラリ側をいじり、
上記の ruby のオプション指定に oniguruma のものをコピペして動くかどうかを試していますが
今のところ結果が変わりません (ライブラリの置き換えに失敗している?)
ちょっと日数がかかるかも知れませんが成功したらご報告に伺います、ありがとうございました!
すごい解析力に脱帽でした、読みながら「すごいな〜」を連発してしまいました
ちょっと昔に DAN KOGAI さんを見たときも衝撃を受けましたがそんな感じでした
本当は (*FAIL) が動くのを確認してからレスしたかったのですが
何かにハマっているらしくまだ成功していません
しかしもう PHP の問題というより oniguruma の問題ですので
ここから先は自力でなんとかなりそうです
> 28. 29.
これは表が間違ってます、以下は ONIG_SYNTAX_RUBY のオプション指定です
https://github.com/kkos/oniguruma/blob/43a8c3f3daf263091f3a74019d4b32ebb6417093/src/regparse.c#L122-L162
#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby)
https://github.com/kkos/oniguruma/blob/43a8c3f3daf263091f3a74019d4b32ebb6417093/src/oniguruma.h#L444
今は (*FAIL) が使えるようになるかの手っ取り早い確認のために oniguruma ライブラリ側をいじり、
上記の ruby のオプション指定に oniguruma のものをコピペして動くかどうかを試していますが
今のところ結果が変わりません (ライブラリの置き換えに失敗している?)
ちょっと日数がかかるかも知れませんが成功したらご報告に伺います、ありがとうございました!
982デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/24(木) 22:06:48.35ID:D6fJlQ4l0 >>981
> これは表が間違ってます
確認した。md打つときに列が一個ずれて、onigがyesになるべき所がRubyの列に入ってるんだな
誰か余裕があったら指摘してあげて
> 上記の ruby のオプション指定に oniguruma のものをコピペして動くかどうかを試していますが
いいね。この方が早そうだ
> ちょっと日数がかかるかも知れませんが成功したらご報告に伺います、ありがとうございました!
はいまあ頑張って
ちなみに1つバグ、というか不一致を発見した
php_mbregex.c内、_php_mb_regex_init_options関数で、単純にRubyの r 指定等すると上書きしている為、
『最初に』指定しないと正しく動作しない(それ以前に指定したフラグが全部キャンセルされる)
しかしphp.netには『最後に』と明記してある
> モードを設定する際には、モード文字は最後に指定しなければなりません。
> https://www.php.net/manual/ja/function.mb-regex-set-options.php
これも誰か余裕有ったら指摘してあげて。勿論報告者の手柄にしていい
本来はPCRE側、つまりpreg_replaceと同様にすべき
となると多分フラグの順は問わないので、
2パスにして1周目でRegex構文モードを、2周目で各フラグを設定するようにCを修正するのが正しい
ドキュメント修正で済ませる場合は上記の通り、『最後に』と修正すれば終了
(Cの修正案が要るなら俺が書いてもいい、が、手続きとか知らんし面倒だから誰かやってくれ、勿論報告者が発見した事にしていい)
だからまあ、挙動不審なのはもしかするとフラグの指定順がまずいのかも
> これは表が間違ってます
確認した。md打つときに列が一個ずれて、onigがyesになるべき所がRubyの列に入ってるんだな
誰か余裕があったら指摘してあげて
> 上記の ruby のオプション指定に oniguruma のものをコピペして動くかどうかを試していますが
いいね。この方が早そうだ
> ちょっと日数がかかるかも知れませんが成功したらご報告に伺います、ありがとうございました!
はいまあ頑張って
ちなみに1つバグ、というか不一致を発見した
php_mbregex.c内、_php_mb_regex_init_options関数で、単純にRubyの r 指定等すると上書きしている為、
『最初に』指定しないと正しく動作しない(それ以前に指定したフラグが全部キャンセルされる)
しかしphp.netには『最後に』と明記してある
> モードを設定する際には、モード文字は最後に指定しなければなりません。
> https://www.php.net/manual/ja/function.mb-regex-set-options.php
これも誰か余裕有ったら指摘してあげて。勿論報告者の手柄にしていい
本来はPCRE側、つまりpreg_replaceと同様にすべき
となると多分フラグの順は問わないので、
2パスにして1周目でRegex構文モードを、2周目で各フラグを設定するようにCを修正するのが正しい
ドキュメント修正で済ませる場合は上記の通り、『最後に』と修正すれば終了
(Cの修正案が要るなら俺が書いてもいい、が、手続きとか知らんし面倒だから誰かやってくれ、勿論報告者が発見した事にしていい)
だからまあ、挙動不審なのはもしかするとフラグの指定順がまずいのかも
983デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/24(木) 22:08:58.49ID:D6fJlQ4l0 > すごい解析力に脱帽でした
お世辞乙だがマジレスすると、実は普通に読めて、それがOSSの定義だったりするので、そんなにすごくもない
phpも30年間OSSとしてずっとメンテされており、当たり前だが多くの人が読めるからメンテ出来てる
だから逆に言えば、読めないコードはOSSとしては生き残れないし、30年は淘汰に十分な期間ではある
よって、長寿OSS、つまりphpやGNUやLinuxは、OSSに参戦するレベルの連中ならある程度読めて当然で、
「僕が読めないから汚いコ
ードだ」と寝言ほざいてる奴には「お前の頭がOSSの域に達してないだけだ馬鹿タレ」と返していい
ただ読めると言っても実際に読んでいるわけではなくて、
この仕様ならこういう作りだろうなという予測通りになっているのをなぞっているだけ
だから逆に、初心者や、まだ淘汰されてないOSSのコ
ードとかは、普通に読めない
(読む価値無いから無視でいいのだが)
だから今回は
> 以下のページは oniguruma の各パーツごとのオプション名を説明するページです
これが大きかった
そしてこれがpnp.net上のRegex構文モードと対になってるのが分かると、なるほどね、となった
まあ結局、一通り出来るようになって、書くのには苦労しなくなると、あとは仕様の理解度で差が出る、ということ
php_mbregexのコ
ードは悪いコ
ードではないね
愚直にやってるだけのドベタなコ
ードで、すごくもないが、でもこういうコ
ードがOSSとしては長生きするのだろうよ
(変な改行はNGワード逃れ)
お世辞乙だがマジレスすると、実は普通に読めて、それがOSSの定義だったりするので、そんなにすごくもない
phpも30年間OSSとしてずっとメンテされており、当たり前だが多くの人が読めるからメンテ出来てる
だから逆に言えば、読めないコードはOSSとしては生き残れないし、30年は淘汰に十分な期間ではある
よって、長寿OSS、つまりphpやGNUやLinuxは、OSSに参戦するレベルの連中ならある程度読めて当然で、
「僕が読めないから汚いコ
ードだ」と寝言ほざいてる奴には「お前の頭がOSSの域に達してないだけだ馬鹿タレ」と返していい
ただ読めると言っても実際に読んでいるわけではなくて、
この仕様ならこういう作りだろうなという予測通りになっているのをなぞっているだけ
だから逆に、初心者や、まだ淘汰されてないOSSのコ
ードとかは、普通に読めない
(読む価値無いから無視でいいのだが)
だから今回は
> 以下のページは oniguruma の各パーツごとのオプション名を説明するページです
これが大きかった
そしてこれがpnp.net上のRegex構文モードと対になってるのが分かると、なるほどね、となった
まあ結局、一通り出来るようになって、書くのには苦労しなくなると、あとは仕様の理解度で差が出る、ということ
php_mbregexのコ
ードは悪いコ
ードではないね
愚直にやってるだけのドベタなコ
ードで、すごくもないが、でもこういうコ
ードがOSSとしては長生きするのだろうよ
(変な改行はNGワード逃れ)
984947 (ワッチョイ d274-nV0L)
2024/10/25(金) 21:53:01.03ID:hP0G6XWW0 > OSSに参戦するレベルの連中ならある程度読めて当然
これが出来るようになることがどれだけすごいことか..
ここでこうやって語って下さるだけでも私含め誰かのためになるめちゃめちゃ
貴重な存在ですよ、いつまでも元気で現役して下さい!
> OSS 淘汰
後で手を入れる人のことまで考えてコーディングされていたんですね
そこまで考えてませんでした、目からうろこです
> 間違いの報告
私はC言語を知らないので間違いの確認作業が出来るか自信がありませんが確認出来たら
報告しに行きますね (ここの回答者様のほうが適任だと思いますのでどなたか余力のある方は是非..)
これが出来るようになることがどれだけすごいことか..
ここでこうやって語って下さるだけでも私含め誰かのためになるめちゃめちゃ
貴重な存在ですよ、いつまでも元気で現役して下さい!
> OSS 淘汰
後で手を入れる人のことまで考えてコーディングされていたんですね
そこまで考えてませんでした、目からうろこです
> 間違いの報告
私はC言語を知らないので間違いの確認作業が出来るか自信がありませんが確認出来たら
報告しに行きますね (ここの回答者様のほうが適任だと思いますのでどなたか余力のある方は是非..)
985デフォルトの名無しさん (ワッチョイ 197b-QJZg)
2024/10/26(土) 20:57:24.64ID:BX88EvoL0 >>984
> 私はC言語を知らないので
それでソースファイル当たるとは勇者だな。ただ姿勢としては正しい
ソースなんて読める読めないではなく、読む読まないだし、
そもそも読めない奴こそ勉強になるから読めであり、
読める奴(=そのコード構成が自分でも組める奴)が読んでも得る物はあまりない
> 間違いの確認作業が出来るか自信がありませんが確認出来たら
> 報告しに行きますね
Cに関しては俺がフォロー出来るが、それ以前にバグって無さそう(すまんが俺の勘違いっぽい)
よく見ればフラグは optm |= で溜めてて、文法の切り換えは *syntax = なので上書きしてない
だから正確には、
× モード文字は最後に指定しなければなりません。 (現在の表記)
○ 最後に指定したモード文字が有効になります。
ではあるが、現在の表記でも問題はないはず
なおonigurumaの表の間違いはGitHubのissuesに凸すれば多分本人(kkos)がすぐ直してくれる
そちらはonigurumaをよく知ってるみたいなので、こちらはやってみてどうぞ
> 私はC言語を知らないので
それでソースファイル当たるとは勇者だな。ただ姿勢としては正しい
ソースなんて読める読めないではなく、読む読まないだし、
そもそも読めない奴こそ勉強になるから読めであり、
読める奴(=そのコード構成が自分でも組める奴)が読んでも得る物はあまりない
> 間違いの確認作業が出来るか自信がありませんが確認出来たら
> 報告しに行きますね
Cに関しては俺がフォロー出来るが、それ以前にバグって無さそう(すまんが俺の勘違いっぽい)
よく見ればフラグは optm |= で溜めてて、文法の切り換えは *syntax = なので上書きしてない
だから正確には、
× モード文字は最後に指定しなければなりません。 (現在の表記)
○ 最後に指定したモード文字が有効になります。
ではあるが、現在の表記でも問題はないはず
なおonigurumaの表の間違いはGitHubのissuesに凸すれば多分本人(kkos)がすぐ直してくれる
そちらはonigurumaをよく知ってるみたいなので、こちらはやってみてどうぞ
986947 (ワッチョイ 3374-ohr8)
2024/10/27(日) 14:13:33.60ID:heVNiBfi0 > そもそも読めない奴こそ勉強になるから読めであり
そうですね、読んでて色々勉強になってます
書けと言われたらさっぱりですが読むほうでは少しだけ進歩したな、とは感じます
> それ以前にバグって無さそう
これは良かったです、正直私には荷が重かったのでw
> モード文字は最後に指定しなければなりません
これは mbstring の作者さんが意図するところがはっきり分からないので悩みます
「最後の文字だけ取り出せば指定されているモードが分かる」という仕様に
することを視野に入れているのかも知れませんし..
一応英語のページも見ましたが日本語と同じ意味で書いているようです
https://www.php.net/manual/en/function.mb-regex-set-options.php
> oniguruma の表
この SYNTAX.md は oniguruma 作者さんが作ったページではなく第三者が作ったものを
マージしたものらしく、ページが作られてから1年弱で更新が止まってます
https://github.com/kkos/oniguruma/commits/master/doc/SYNTAX.md
最後の更新から5年近く経っていて情報も古くなっています
私がやるならこのページを oniguruma 6.9.9 のものに更新します
しかし今は php で (*SKIP) を動かすことを目指しているのでその後にやりますね
oniguruma で指定されている option を読み込んであの表を出力するプログラムが
あったら便利そうです、いつか作るかも知れません
そうですね、読んでて色々勉強になってます
書けと言われたらさっぱりですが読むほうでは少しだけ進歩したな、とは感じます
> それ以前にバグって無さそう
これは良かったです、正直私には荷が重かったのでw
> モード文字は最後に指定しなければなりません
これは mbstring の作者さんが意図するところがはっきり分からないので悩みます
「最後の文字だけ取り出せば指定されているモードが分かる」という仕様に
することを視野に入れているのかも知れませんし..
一応英語のページも見ましたが日本語と同じ意味で書いているようです
https://www.php.net/manual/en/function.mb-regex-set-options.php
> oniguruma の表
この SYNTAX.md は oniguruma 作者さんが作ったページではなく第三者が作ったものを
マージしたものらしく、ページが作られてから1年弱で更新が止まってます
https://github.com/kkos/oniguruma/commits/master/doc/SYNTAX.md
最後の更新から5年近く経っていて情報も古くなっています
私がやるならこのページを oniguruma 6.9.9 のものに更新します
しかし今は php で (*SKIP) を動かすことを目指しているのでその後にやりますね
oniguruma で指定されている option を読み込んであの表を出力するプログラムが
あったら便利そうです、いつか作るかも知れません
987デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2024/10/28(月) 10:05:20.25ID:l7XbYqqi0 >>986
言い方が悪かったかもしれないが、php.netの表記は直す必要がない。(直すべきではない)
プログラミング等においては、
ドキュメント記載の動作範囲⊆実際の動作範囲
である事は絶対に必要だが、書いてない範囲は動いても動かなくても問題ないから。
(今回は、最後に書けば確実に動くので問題ない。
記載を変更したら何か変更があったかと勘ぐられ、余計におかしくなる)
だからphp側については今回は何もする必要がない。
> これは mbstring の作者さんが意図するところがはっきり分からないので悩みます
これはちと違ってて、仕様は実装に依存すべきではないし、してはいけない。
というか、仕様を変更するとこれまで動いてたコートが動かなくなる(=互換性が無くなる)可能性が出てくるので、
原則として、仕様は追加は出来るが削除は出来ない。
逆に実装は変わるものだし、(互換性を保たれている限り)変わってもいいものだ。
だから仕様が実装に依存した場合、初期実装は楽だが、わりと早々に破綻する。
よって、本来は、最初の最初に仕様を未来永劫変更せずに済むレベルまで練るべきだし、
多少実装が困難な仕様でも、それが良い仕様なら、頑張って実装するしかない。
(主従関係でいえば、仕様が主で実装が従)
言い方が悪かったかもしれないが、php.netの表記は直す必要がない。(直すべきではない)
プログラミング等においては、
ドキュメント記載の動作範囲⊆実際の動作範囲
である事は絶対に必要だが、書いてない範囲は動いても動かなくても問題ないから。
(今回は、最後に書けば確実に動くので問題ない。
記載を変更したら何か変更があったかと勘ぐられ、余計におかしくなる)
だからphp側については今回は何もする必要がない。
> これは mbstring の作者さんが意図するところがはっきり分からないので悩みます
これはちと違ってて、仕様は実装に依存すべきではないし、してはいけない。
というか、仕様を変更するとこれまで動いてたコートが動かなくなる(=互換性が無くなる)可能性が出てくるので、
原則として、仕様は追加は出来るが削除は出来ない。
逆に実装は変わるものだし、(互換性を保たれている限り)変わってもいいものだ。
だから仕様が実装に依存した場合、初期実装は楽だが、わりと早々に破綻する。
よって、本来は、最初の最初に仕様を未来永劫変更せずに済むレベルまで練るべきだし、
多少実装が困難な仕様でも、それが良い仕様なら、頑張って実装するしかない。
(主従関係でいえば、仕様が主で実装が従)
988デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2024/10/28(月) 10:05:40.31ID:l7XbYqqi0 ただ、
○ ドキュメントを読めば使える
◎ ドキュメントを読まなくても使える
なので、今回はグダグダ言わずにpcreと全て揃えるのが理想で、目指す所は
既存のコードを mb_* とするとマルチバイト対応になるだけで、全て動く、ではあるが、
現実的には無理だし、phpの場合は仕様自体がわりとグダグダなので、
多少でも綺麗にしていく為には新規部分は(従来の汚い仕様を無視して)綺麗に作るしかなく、
まあ許容範囲だと思うよ。
見た目、
A, 元々は記載通り「最後に書く必要があった」が、pcreと揃えるよう修正して「いつ書いても動く」ようになった
B. 元々何も記載無かったが、複数書いた場合等の動作が曖昧になるので、
「確実に動く条件」を記載するように求められ、書いた
ように見える。
なお仕様を自由に決めて良いなら、
そもそも「モード」を「フラグ」に突っ込むべきなのか?という話で、
(php.netでは纏めて「オプション」「パターン修飾子」と呼称されてるので曖昧になってる)
例えばJSなら
String.replace(/regular expression/flags, replacement, mode); // modeでRubyやonigurumaモードを切り替える
で終わってた気がするし、
これなら「ひとつしか指定出来ません」「最後に指定しなければなりません」はそもそも必要なくなる。
しかし使いもしない引数を無駄に増やすのもよろしくないし、フラグに突っ込んでしまえ、の判断もありだろう。
(pcreもそうなってるし)
○ ドキュメントを読めば使える
◎ ドキュメントを読まなくても使える
なので、今回はグダグダ言わずにpcreと全て揃えるのが理想で、目指す所は
既存のコードを mb_* とするとマルチバイト対応になるだけで、全て動く、ではあるが、
現実的には無理だし、phpの場合は仕様自体がわりとグダグダなので、
多少でも綺麗にしていく為には新規部分は(従来の汚い仕様を無視して)綺麗に作るしかなく、
まあ許容範囲だと思うよ。
見た目、
A, 元々は記載通り「最後に書く必要があった」が、pcreと揃えるよう修正して「いつ書いても動く」ようになった
B. 元々何も記載無かったが、複数書いた場合等の動作が曖昧になるので、
「確実に動く条件」を記載するように求められ、書いた
ように見える。
なお仕様を自由に決めて良いなら、
そもそも「モード」を「フラグ」に突っ込むべきなのか?という話で、
(php.netでは纏めて「オプション」「パターン修飾子」と呼称されてるので曖昧になってる)
例えばJSなら
String.replace(/regular expression/flags, replacement, mode); // modeでRubyやonigurumaモードを切り替える
で終わってた気がするし、
これなら「ひとつしか指定出来ません」「最後に指定しなければなりません」はそもそも必要なくなる。
しかし使いもしない引数を無駄に増やすのもよろしくないし、フラグに突っ込んでしまえ、の判断もありだろう。
(pcreもそうなってるし)
989デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2024/10/28(月) 10:05:57.25ID:l7XbYqqi0 > しかし今は php で (*SKIP) を動かすことを目指しているのでその後にやりますね
それで正しい。義務感でやるものではないし、面倒なら放置でいい。
(というかこの位緩くないと続かない。だいたい昨今のSNS疲れとかは義務感から来てるものだし)
だからまあ、「この表は自分も今後とも使うので正確であって欲しい。
とりあえず自分用に更新版作ったから上げとく」位でいい。
そしてそれをpythonにやらせたのなら、それもついでに上げとく、程度で十分だ。
それで正しい。義務感でやるものではないし、面倒なら放置でいい。
(というかこの位緩くないと続かない。だいたい昨今のSNS疲れとかは義務感から来てるものだし)
だからまあ、「この表は自分も今後とも使うので正確であって欲しい。
とりあえず自分用に更新版作ったから上げとく」位でいい。
そしてそれをpythonにやらせたのなら、それもついでに上げとく、程度で十分だ。
990デフォルトの名無しさん (ワッチョイ 7b5f-kvRr)
2024/10/29(火) 00:01:17.52ID:R9Dn8Crp0 堂島の龍・・・ って言ったんだ
991947 (ワッチョイ 3374-ohr8)
2024/10/29(火) 11:56:37.23ID:FIsrbLEd0 > php側については今回は何もする必要がない
了解です、これは分かってましたので大丈夫です
> 原則として、仕様は追加は出来るが削除は出来ない
言われてみれば確かに.. 実装を仕様にしたせいで実際に破綻した経験もあったり(ぉぃ)
> pcreと全て揃えるのが理想
確かにそうですね
> A. B.
なるほど、"仕様が主" ということを考えると納得の推察です
> フラグに突っ込んでしまえ
それでオプションとモードが混ぜてあったんですねw
> 義務感でやるものではない
そうですね、でも SYNTAX.md の更新は私がやりたいと思ってるのでやると思います
ミスが出ないように少しづつ進めるつもりです、なので完成は来年になるかも知れません
ただ、私にはオプションの説明文は書けないのでソースのコメントをコピペするだけの
手抜きになると思います ( "説明文 == 仕様" なので )
PHP で (*SKIP) を使えるようにする件もあと少しでなんとかなりそうです
使えるように出来たら修正箇所を書きにまた来ます、ありがとうございました!
了解です、これは分かってましたので大丈夫です
> 原則として、仕様は追加は出来るが削除は出来ない
言われてみれば確かに.. 実装を仕様にしたせいで実際に破綻した経験もあったり(ぉぃ)
> pcreと全て揃えるのが理想
確かにそうですね
> A. B.
なるほど、"仕様が主" ということを考えると納得の推察です
> フラグに突っ込んでしまえ
それでオプションとモードが混ぜてあったんですねw
> 義務感でやるものではない
そうですね、でも SYNTAX.md の更新は私がやりたいと思ってるのでやると思います
ミスが出ないように少しづつ進めるつもりです、なので完成は来年になるかも知れません
ただ、私にはオプションの説明文は書けないのでソースのコメントをコピペするだけの
手抜きになると思います ( "説明文 == 仕様" なので )
PHP で (*SKIP) を使えるようにする件もあと少しでなんとかなりそうです
使えるように出来たら修正箇所を書きにまた来ます、ありがとうございました!
992デフォルトの名無しさん (ワッチョイ 7b47-MMV6)
2024/10/29(火) 14:57:45.06ID:HnPnA3Oe0 すまんけど参考に問題と結論をまとめてほしい
993デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2024/10/29(火) 20:54:54.00ID:zqRlJI/00994デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2024/10/29(火) 22:11:10.45ID:zqRlJI/00 >>992
問題: PHPで (*SKIP) が使えない (>>947)
結論: 現在は使えないのが仕様
php8.3.12(最新安定版)ではphp_mbstringが対応していない
oniguruma6.6.9(最新リリースバージョン)にも入ってない(開発したばかりで未リリース状態)
なので通常は>>956,959で公式リリースを待つが、
パフォーマンスの問題、或いは(現在開発中のphpアプリの)リリース時には使えるようになっているという読み等で、
GitHub上のonigurumaソースを自前でコンパイルして接続して使うのは自由
この場合の詳細は247が成功した後に報告してくれるから待てばいい
現在の作戦(981)の内容は以下(マクロは大文字で表記)
onigurumaは設定を自由に変更出来る
いくつかあるプリセットの内、ONIGURUMAを指定すれば(*SKIP)が使えるが、RUBYを指定しても使えない
現在のphpではデフォでRUBY指定であり、ONIGURUMA指定は出来ない --- (α)
なので、oniguruma側のRUBY設定値をONIGURUMA設定値で上書きし、
php側でRUBY指定しててもONIGURUMA指定での機能が使えるようにする
これだとonigurumaの再コンパイルだけで済むはず(=php_mbstringは変更無く使える)
この場合の問題は、ruby指定とoniguruma指定で完全な互換性がなかった場合に、(なお実際どうなのかは知らん)
他ソフト(laravel)等と組み合せると一部誤動作する可能性が出てくる事だが、
この場合はRUBYではなくEMACS等、
どう考えても誰も使ってないであろうマクロを潰せばいいだけなので、大した問題ではない
(とはいえ商用用途ではこれも許されないだろうが)
問題: PHPで (*SKIP) が使えない (>>947)
結論: 現在は使えないのが仕様
php8.3.12(最新安定版)ではphp_mbstringが対応していない
oniguruma6.6.9(最新リリースバージョン)にも入ってない(開発したばかりで未リリース状態)
なので通常は>>956,959で公式リリースを待つが、
パフォーマンスの問題、或いは(現在開発中のphpアプリの)リリース時には使えるようになっているという読み等で、
GitHub上のonigurumaソースを自前でコンパイルして接続して使うのは自由
この場合の詳細は247が成功した後に報告してくれるから待てばいい
現在の作戦(981)の内容は以下(マクロは大文字で表記)
onigurumaは設定を自由に変更出来る
いくつかあるプリセットの内、ONIGURUMAを指定すれば(*SKIP)が使えるが、RUBYを指定しても使えない
現在のphpではデフォでRUBY指定であり、ONIGURUMA指定は出来ない --- (α)
なので、oniguruma側のRUBY設定値をONIGURUMA設定値で上書きし、
php側でRUBY指定しててもONIGURUMA指定での機能が使えるようにする
これだとonigurumaの再コンパイルだけで済むはず(=php_mbstringは変更無く使える)
この場合の問題は、ruby指定とoniguruma指定で完全な互換性がなかった場合に、(なお実際どうなのかは知らん)
他ソフト(laravel)等と組み合せると一部誤動作する可能性が出てくる事だが、
この場合はRUBYではなくEMACS等、
どう考えても誰も使ってないであろうマクロを潰せばいいだけなので、大した問題ではない
(とはいえ商用用途ではこれも許されないだろうが)
995デフォルトの名無しさん (ワッチョイ 497b-vCJ4)
2024/10/29(火) 22:42:58.65ID:zqRlJI/00 真面目に直すなら、αを修正してphp側からONIGURUMA指定出来るようにすればいい
これは970に書いたとおり、
php_mbregex.c:489:static size_t _php_mb_regex_get_option_string
php_mbregex.c:594:static bool _php_mb_regex_init_options
の2関数を修正すればよく、下側は979に書いたとおり以下3行追加、上側はその逆を追加するだけ(多分)
case 'o':
*syntax = ONIG_SYNTAX_ONIGURUMA
break;
この辺やる気有るのならCのソースは俺が書いてもいいが、報告その他は全部やってくれ
報告の仕方は https://www.php.net/get-involved の通り
ただしバグ修正ではなく仕様追加なので、メンテナの判断により(ソースコードが妥当でも)却下される可
能性はある(改行は規制回避)
>>994 すまぬ一部修正、規制に引っかかったついでに最後の段落書き足したら大文字にするのを忘れた
× ruby指定とoniguruma指定で
○ RUBY指定とONIGURUMA指定で
これは970に書いたとおり、
php_mbregex.c:489:static size_t _php_mb_regex_get_option_string
php_mbregex.c:594:static bool _php_mb_regex_init_options
の2関数を修正すればよく、下側は979に書いたとおり以下3行追加、上側はその逆を追加するだけ(多分)
case 'o':
*syntax = ONIG_SYNTAX_ONIGURUMA
break;
この辺やる気有るのならCのソースは俺が書いてもいいが、報告その他は全部やってくれ
報告の仕方は https://www.php.net/get-involved の通り
ただしバグ修正ではなく仕様追加なので、メンテナの判断により(ソースコードが妥当でも)却下される可
能性はある(改行は規制回避)
>>994 すまぬ一部修正、規制に引っかかったついでに最後の段落書き足したら大文字にするのを忘れた
× ruby指定とoniguruma指定で
○ RUBY指定とONIGURUMA指定で
996947 (ワッチョイ 3374-D2cl)
2024/11/02(土) 11:20:08.91ID:grhM95Vo0 どうやら正規表現の syntax を RUBY から ONIGURUMA に変えるだけではダメそうです
この変更で (?W) が使えるようになったので syntax の切り替えは出来ているのですが、
正規表現に (*FAIL) や (*SKIP) を使うとエラーになります
php_mbregex.c の 473行目のエラー処理が実行されます
github.com/php/php-src/blob/2b10cd1bebde7b9844ebb6e3e60127dfe7b195c5/ext/mbstring/php_mbregex.c#L473
これを解決するには php_mbregex.c と onigurumaライブラリ を深く理解する必要があり、
このスレのみなさんにとっても簡単な問題ではないと思います
そのため、ここは一度戦略的に撤退し、次の好機をうかがうことにしました
長々とお付き合い下さりありがとうございました!
この変更で (?W) が使えるようになったので syntax の切り替えは出来ているのですが、
正規表現に (*FAIL) や (*SKIP) を使うとエラーになります
php_mbregex.c の 473行目のエラー処理が実行されます
github.com/php/php-src/blob/2b10cd1bebde7b9844ebb6e3e60127dfe7b195c5/ext/mbstring/php_mbregex.c#L473
これを解決するには php_mbregex.c と onigurumaライブラリ を深く理解する必要があり、
このスレのみなさんにとっても簡単な問題ではないと思います
そのため、ここは一度戦略的に撤退し、次の好機をうかがうことにしました
長々とお付き合い下さりありがとうございました!
997947 (ワッチョイ 3374-D2cl)
2024/11/02(土) 12:21:06.68ID:grhM95Vo0 詳細は以下のスレに書いておきました
agree.5ch.net/test/read.cgi/mango/1715675838/323-325n
C言語をいじるならデバックの仕方を知らないと話にならないようなので
そういうことを覚えるのにかなりの時間がかかりそうです、なのでこの件は一旦保留にさせて下さい
( fprintf を仕込んで ./configure, make, make install ではラチがあかなくなったので)
agree.5ch.net/test/read.cgi/mango/1715675838/323-325n
C言語をいじるならデバックの仕方を知らないと話にならないようなので
そういうことを覚えるのにかなりの時間がかかりそうです、なのでこの件は一旦保留にさせて下さい
( fprintf を仕込んで ./configure, make, make install ではラチがあかなくなったので)
998947 (ワッチョイ 6274-erF6)
2024/11/03(日) 21:59:48.17ID:kb0e81X60 補足: onig_init() は oniguruma の古いバージョンが使われたときに備えてのものでした
なので問題ありませんでした
現時点では正規表現に (*FAIL) や (*SKIP) を使うとエラーになる問題は
「PHPのインストール時に (*FAIL) が実装される前の oniguruma が入れられていて
それが使われているのではないか」という仮説を立てています
(*FAIL) が実装される前の oniguruma が使われていたなら「 "FAIL" なんて名前知らない!」と
言われてもおかしくないので..
なので問題ありませんでした
現時点では正規表現に (*FAIL) や (*SKIP) を使うとエラーになる問題は
「PHPのインストール時に (*FAIL) が実装される前の oniguruma が入れられていて
それが使われているのではないか」という仮説を立てています
(*FAIL) が実装される前の oniguruma が使われていたなら「 "FAIL" なんて名前知らない!」と
言われてもおかしくないので..
999947 (ワッチョイ 6274-erF6)
2024/11/04(月) 01:55:48.60ID:nQYymDx80 ↑の仮説は否定されました
oniguruma は最新Master branch版で間違いありませんでした
oniguruma 6.9.9 で Fix されたバグが直っているのを確認しました
また、古いバージョンの oniguruma が入っていないことを確認しました
libonig-dev なども含めて他の oniguruma は1つも入っていませんでした
oniguruma は最新Master branch版で間違いありませんでした
oniguruma 6.9.9 で Fix されたバグが直っているのを確認しました
また、古いバージョンの oniguruma が入っていないことを確認しました
libonig-dev なども含めて他の oniguruma は1つも入っていませんでした
1000947 (ワッチョイ 6274-erF6)
2024/11/05(火) 00:51:48.35ID:QtAnl6270 oniguruma 付属のテストファイル /sample/callout.c では (*FAIL) や (*SKIP) が動くので、このテストファイルのコ-ドを php_mbregex.c に移植して動かしてみました (コンパイルエラーを回避するための最低限の変更のみしました) そしてPHPを動かしてみたところ、問題のエラーと同じエラーが出ました
oniguruma 側でのエラーコード: -229
github.com/kkos/oniguruma/blob/f6723fd940b993b39b1535f71c8695867a5e92d1/src/oniguruma.h#L640
これにより、問題の原因がPHP側にあることが確定しました
しかし php_mbregex.c を読んでもこの問題を起こしそうな箇所は見当たりません
原因はコ-ドではなくPHPの環境にあるのかも知れま1000
oniguruma 側でのエラーコード: -229
github.com/kkos/oniguruma/blob/f6723fd940b993b39b1535f71c8695867a5e92d1/src/oniguruma.h#L640
これにより、問題の原因がPHP側にあることが確定しました
しかし php_mbregex.c を読んでもこの問題を起こしそうな箇所は見当たりません
原因はコ-ドではなくPHPの環境にあるのかも知れま1000
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 776日 8時間 5分 26秒
新しいスレッドを立ててください。
life time: 776日 8時間 5分 26秒
10021002
Over 1000Thread 5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/
▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 「水道水で食中毒」14人が下痢や腹痛などの症状を訴え 「カンピロバクター」を検出 群馬・神流町 [少考さん★]
- 【ラジオ】永野芽郁、田中圭との不倫疑惑後初の『ANNX』で謝罪「誤解を招くような行動…反省」「本当にごめんなさい」★9 [Ailuropoda melanoleuca★]
- 【Switch2】争奪過熱の任天堂スイッチ2、行き渡るのは1年以上先か 応募条件厳しく予約権プラチナ化 [煮卵★]
- 【アイドル】『≠ME』、暴行行為でイベント中止の状況判明… 20数人に優先入場券を数百枚強奪される トラブル同時多発発生 [冬月記者★]
- 昭和の少女漫画ランキングTOP5発表 40代~70代女性が 夢中で読んだ名作1位は「もう流通していない名作」 [muffin★]
- 米中「チキンゲーム」で旗色悪いトランプ氏 中国、第1次政権での教訓踏まえ足元見透かす [蚤の市★]
- コテ粘粘が発狂してコテ粘連呼するお🏡
- 財務省解体デモ、規模が大きくなりすぎて不穏な感じになり始める [606757419]
- __石破、ベトナムの脱炭素に2.9兆円投資「ベトナムの声に誠実に耳を傾けていく」 [827565401]
- 風呂で死ぬ現象なんだっけ [118990258]
- 平手友梨奈(23)「ライブやる。チケットは0円。終わった後でそっちで値段決めて払ってくれ」
- 【画像】万博のイギリス飯、たった2週間で変わり果てた姿になる [834922174]