[過去ログ] 【PHP】下らねぇ質問はここに書き込みやがれ 14 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(2): (ワッチョイ 0f97-W3aP) 2022/09/20(火)16:46 ID:Sb2Kpzh+0(1) AAS
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
★スレ立て時 ↑ が3行以上になるようコピペ
PHPに関する質問スレです
前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 13
2chスレ:tech
次スレは>>980以降
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
983: (ワッチョイ 197b-QJZg) 10/24(木)22:08 ID:D6fJlQ4l0(3/3) AAS
> すごい解析力に脱帽でした
お世辞乙だがマジレスすると、実は普通に読めて、それがOSSの定義だったりするので、そんなにすごくもない
phpも30年間OSSとしてずっとメンテされており、当たり前だが多くの人が読めるからメンテ出来てる
だから逆に言えば、読めないコードはOSSとしては生き残れないし、30年は淘汰に十分な期間ではある
よって、長寿OSS、つまりphpやGNUやLinuxは、OSSに参戦するレベルの連中ならある程度読めて当然で、
「僕が読めないから汚いコ
ードだ」と寝言ほざいてる奴には「お前の頭がOSSの域に達してないだけだ馬鹿タレ」と返していい
ただ読めると言っても実際に読んでいるわけではなくて、
この仕様ならこういう作りだろうなという予測通りになっているのをなぞっているだけ
だから逆に、初心者や、まだ淘汰されてないOSSのコ
省14
984(1): 947 (ワッチョイ d274-nV0L) 10/25(金)21:53 ID:hP0G6XWW0(1) AAS
> OSSに参戦するレベルの連中ならある程度読めて当然
これが出来るようになることがどれだけすごいことか..
ここでこうやって語って下さるだけでも私含め誰かのためになるめちゃめちゃ
貴重な存在ですよ、いつまでも元気で現役して下さい!
> OSS 淘汰
後で手を入れる人のことまで考えてコーディングされていたんですね
そこまで考えてませんでした、目からうろこです
> 間違いの報告
私はC言語を知らないので間違いの確認作業が出来るか自信がありませんが確認出来たら
報告しに行きますね (ここの回答者様のほうが適任だと思いますのでどなたか余力のある方は是非..)
985: (ワッチョイ 197b-QJZg) 10/26(土)20:57 ID:BX88EvoL0(1) AAS
>>984
> 私はC言語を知らないので
それでソースファイル当たるとは勇者だな。ただ姿勢としては正しい
ソースなんて読める読めないではなく、読む読まないだし、
そもそも読めない奴こそ勉強になるから読めであり、
読める奴(=そのコード構成が自分でも組める奴)が読んでも得る物はあまりない
> 間違いの確認作業が出来るか自信がありませんが確認出来たら
> 報告しに行きますね
Cに関しては俺がフォロー出来るが、それ以前にバグって無さそう(すまんが俺の勘違いっぽい)
よく見ればフラグは optm |= で溜めてて、文法の切り換えは *syntax = なので上書きしてない
省6
986(1): 947 (ワッチョイ 3374-ohr8) 10/27(日)14:13 ID:heVNiBfi0(1) AAS
> そもそも読めない奴こそ勉強になるから読めであり
そうですね、読んでて色々勉強になってます
書けと言われたらさっぱりですが読むほうでは少しだけ進歩したな、とは感じます
> それ以前にバグって無さそう
これは良かったです、正直私には荷が重かったのでw
> モード文字は最後に指定しなければなりません
これは mbstring の作者さんが意図するところがはっきり分からないので悩みます
「最後の文字だけ取り出せば指定されているモードが分かる」という仕様に
することを視野に入れているのかも知れませんし..
一応英語のページも見ましたが日本語と同じ意味で書いているようです
省10
987: (ワッチョイ 497b-vCJ4) 10/28(月)10:05 ID:l7XbYqqi0(1/3) AAS
>>986
言い方が悪かったかもしれないが、php.netの表記は直す必要がない。(直すべきではない)
プログラミング等においては、
ドキュメント記載の動作範囲⊆実際の動作範囲
である事は絶対に必要だが、書いてない範囲は動いても動かなくても問題ないから。
(今回は、最後に書けば確実に動くので問題ない。
記載を変更したら何か変更があったかと勘ぐられ、余計におかしくなる)
だからphp側については今回は何もする必要がない。
> これは mbstring の作者さんが意図するところがはっきり分からないので悩みます
これはちと違ってて、仕様は実装に依存すべきではないし、してはいけない。
省7
988: (ワッチョイ 497b-vCJ4) 10/28(月)10:05 ID:l7XbYqqi0(2/3) AAS
ただ、
○ ドキュメントを読めば使える
◎ ドキュメントを読まなくても使える
なので、今回はグダグダ言わずにpcreと全て揃えるのが理想で、目指す所は
既存のコードを mb_* とするとマルチバイト対応になるだけで、全て動く、ではあるが、
現実的には無理だし、phpの場合は仕様自体がわりとグダグダなので、
多少でも綺麗にしていく為には新規部分は(従来の汚い仕様を無視して)綺麗に作るしかなく、
まあ許容範囲だと思うよ。
見た目、
A, 元々は記載通り「最後に書く必要があった」が、pcreと揃えるよう修正して「いつ書いても動く」ようになった
省12
989: (ワッチョイ 497b-vCJ4) 10/28(月)10:05 ID:l7XbYqqi0(3/3) AAS
> しかし今は php で (*SKIP) を動かすことを目指しているのでその後にやりますね
それで正しい。義務感でやるものではないし、面倒なら放置でいい。
(というかこの位緩くないと続かない。だいたい昨今のSNS疲れとかは義務感から来てるものだし)
だからまあ、「この表は自分も今後とも使うので正確であって欲しい。
とりあえず自分用に更新版作ったから上げとく」位でいい。
そしてそれをpythonにやらせたのなら、それもついでに上げとく、程度で十分だ。
990: (ワッチョイ 7b5f-kvRr) 10/29(火)00:01 ID:R9Dn8Crp0(1) AAS
堂島の龍・・・ って言ったんだ
991: 947 (ワッチョイ 3374-ohr8) 10/29(火)11:56 ID:FIsrbLEd0(1) AAS
> php側については今回は何もする必要がない
了解です、これは分かってましたので大丈夫です
> 原則として、仕様は追加は出来るが削除は出来ない
言われてみれば確かに.. 実装を仕様にしたせいで実際に破綻した経験もあったり(ぉぃ)
> pcreと全て揃えるのが理想
確かにそうですね
> A. B.
なるほど、"仕様が主" ということを考えると納得の推察です
> フラグに突っ込んでしまえ
それでオプションとモードが混ぜてあったんですねw
省7
992(1): (ワッチョイ 7b47-MMV6) 10/29(火)14:57 ID:HnPnA3Oe0(1) AAS
すまんけど参考に問題と結論をまとめてほしい
993: (ワッチョイ 497b-vCJ4) 10/29(火)20:54 ID:zqRlJI/00(1/3) AAS
次スレ
【PHP】下らねぇ質問はここに書き込みやがれ 15
2chスレ:tech
994(1): (ワッチョイ 497b-vCJ4) 10/29(火)22:11 ID:zqRlJI/00(2/3) AAS
>>992
問題: PHPで (*SKIP) が使えない (>>947)
結論: 現在は使えないのが仕様
php8.3.12(最新安定版)ではphp_mbstringが対応していない
oniguruma6.6.9(最新リリースバージョン)にも入ってない(開発したばかりで未リリース状態)
なので通常は>>956,959で公式リリースを待つが、
パフォーマンスの問題、或いは(現在開発中のphpアプリの)リリース時には使えるようになっているという読み等で、
GitHub上のonigurumaソースを自前でコンパイルして接続して使うのは自由
この場合の詳細は247が成功した後に報告してくれるから待てばいい
現在の作戦(981)の内容は以下(マクロは大文字で表記)
省11
995: (ワッチョイ 497b-vCJ4) 10/29(火)22:42 ID:zqRlJI/00(3/3) AAS
真面目に直すなら、αを修正して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のソースは俺が書いてもいいが、報告その他は全部やってくれ
報告の仕方は 外部リンク:www.php.net の通り
省5
996: 947 (ワッチョイ 3374-D2cl) 11/02(土)11:20 ID:grhM95Vo0(1/2) AAS
どうやら正規表現の 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ライブラリ を深く理解する必要があり、
このスレのみなさんにとっても簡単な問題ではないと思います
そのため、ここは一度戦略的に撤退し、次の好機をうかがうことにしました
長々とお付き合い下さりありがとうございました!
997: 947 (ワッチョイ 3374-D2cl) 11/02(土)12:21 ID:grhM95Vo0(2/2) AAS
詳細は以下のスレに書いておきました
agree.5ch.net/test/read.cgi/mango/1715675838/323-325n
C言語をいじるならデバックの仕方を知らないと話にならないようなので
そういうことを覚えるのにかなりの時間がかかりそうです、なのでこの件は一旦保留にさせて下さい
( fprintf を仕込んで ./configure, make, make install ではラチがあかなくなったので)
998: 947 (ワッチョイ 6274-erF6) 11/03(日)21:59 ID:kb0e81X60(1) AAS
補足: onig_init() は oniguruma の古いバージョンが使われたときに備えてのものでした
なので問題ありませんでした
現時点では正規表現に (*FAIL) や (*SKIP) を使うとエラーになる問題は
「PHPのインストール時に (*FAIL) が実装される前の oniguruma が入れられていて
それが使われているのではないか」という仮説を立てています
(*FAIL) が実装される前の oniguruma が使われていたなら「 "FAIL" なんて名前知らない!」と
言われてもおかしくないので..
999: 947 (ワッチョイ 6274-erF6) 11/04(月)01:55 ID:nQYymDx80(1) AAS
↑の仮説は否定されました
oniguruma は最新Master branch版で間違いありませんでした
oniguruma 6.9.9 で Fix されたバグが直っているのを確認しました
また、古いバージョンの oniguruma が入っていないことを確認しました
libonig-dev なども含めて他の oniguruma は1つも入っていませんでした
1000: 947 (ワッチョイ 6274-erF6) 11/05(火)00:51 ID:QtAnl6270(1) AAS
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
1001(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 776日 8時間 5分 26秒
1002(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《UPLIFT会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
4 USD/mon. から匿名でご購入いただけます。
省4
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.273s*