狠狠撸

狠狠撸Share a Scribd company logo
笔贬笔の「歴史的な理由」ってなんだ!?
自己绍介
所属
株式会社TechBowl
住んでるところ
東京
何やってる?
「TechTrain」というサービスで反復横跳びし続けている
何でも屋さん(Laravel, Next.js, AWS, etc...)
趣味
お酒(よく溺れる)
サウナ
読書
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
TechTrain
エンジニア教育+Directスカウトのサービス。
Coding Stoicをテーマに「うるせえコードかけ!」と言
いがちなメンターが多めのエンジニアを育てるための
サービスです。
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
なぜ発表しようと思ったのか?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
PHPの言語自体にディープダイブしていきたい
歴史を遡っていけば、いいんじゃないか
言語の経緯を知った方がより良いコードが書けるのではないか
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
さて!
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
笔贬笔の「歴史的な理由」ってなんだ!?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
今回初めてCFPを出させてもらったわけですが、、、
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
過去の発表がすでにあった???
確認してから応募しろ???
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
ここで解説されているものは何か?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
現在のphp.netにおける「歴史的な理由」の数は?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
5つ!
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
過去の発表と被ってないものは実質1つだけ!?(ユー
ザー定義関数)
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
他にないのか???!?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
GitHubで再度「英語で」検索をしてみました
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
ん?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
日本語ドキュメントの検索では引っかからないやつ!
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
一安心ということで、次の2つを遡っていきます!
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
1. ユーザー定義関数
2. snmpwalkoid
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
どうやって歴史を追うのか?について
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
歴史を追うのに利用する情報源
1. PHPのRFCの履歴(PHP5.3~有効)を読む
2. php-srcのGitHubのソースコードのcommitを遡って見る(PHP4.0~有効)
3. PHP Internals(PHP3.0~から有効)
4. museum.php.netでphp-srcのソースコードをダウンロードして見る(PHP1~)
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
それでは早速追っていきましょう。
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
1. 内部(ビルトイン)関数
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
Historically, the reason for this discrepancy is that internal functions have
supported a concept of scalar types (bool, int, float, string) long before they were
introduced for user-defined functions in PHP 7.0, and the existing implementation
silently accepted null values. For the new scalar type declarations introduced in
PHP 7.0 an explicit choice was made to not accept null values to non-nullable
arguments, but changing the existing behavior of internal functions would have
been too disruptive at the time.
PHP RFC: Deprecate passing null to non-nullable arguments of internal functions
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
歴史的に見ると、この不一致の原因は、内部関数がPHP 7.0 でユーザー定義関数
に導入されるずっと前からスカラー型(bool, int, float, string) の概念をサポートし
ており、既存の実装ではnull 値を黙って受け取っていたからです。PHP 7.0 で導
入された新しいスカラー型の宣言では、null 値を受け取らないようにすることが
明示的に選択されましたが、内部関数の既存の振る舞いを変更することは、その
時点ではあまりに破壊的でした。このRFC では、PHP 8.1 で非推奨の警告を発
生させ、内部関数の挙動を同期させることを提案しています。
PHP RFC: Deprecate passing null to non-nullable arguments of internal functions
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
種類 nullに対する対応
ユーザー定義
関数
PHP7.0から導入され、nullを受け取る場合とそうではない場合が最
初から区別されていた
内部関数 PHP7.0はるか以前からnullを黙って受け取っていた
知っての通り、PHP8.1からは、内部関数もstrictモードの際には、ユーザー定義関数と
同じように明示されているnullableの引数以外は、nullを受け取ることができなくなっ
ています。
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
ちなみにscalarというワードがいつからあるのか?を
遡ってみると
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
1998年!
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
これは確かに歴史的な理由ですね???。
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
どのバージョンからなぜnullが暗黙的に受け取られていたのか?
については、遡ってみたものの判明せず、迷宮入りでした???
力及ばずごめんなさい???
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
それでは2つ目。
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
2. snmpwalkoid
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
そもそも見たことがない関数では???。
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
見たことがある方いらっしゃいますかー!
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
具体的には、何で利用される標準関数なのか?
理解するために色々前提の理解が必要
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
SNMP
SNMP(Simple Network Management Protocol)は、UDP/IPベースのネットワー
ク監視、ネットワーク管理を行うためのプロトコルです。ルーター、スイッチな
どのネットワーク機器、WindowsやUNIXサーバーなどの状態監視、リソース監
視、パフォーマンス監視、トラフィック監視を行うために使用します。一般的
に、サーバーに対しては、CPU使用率、メモリ使用率、ディスク使用率、プロセ
ス監視、Windowsイベントログ監視、Syslog監視を行います。ネットワーク機器
に対しては、各ポート上で送受信されたパケット数、エラーパケット数、ポート
の状態(up/down)、およびCPU使用率、メモリ使用率などを監視します。ベン
ダによっては機器固有の管理項目を公開しているものがあり、きめ細かい監視が
可能です。
→ https://blogs.manageengine.jp/itom_what_is_snmp/
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
SNMPについてのもう少し詳細の説明を入れる。
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
OID(Object IDentifier)
各情報に対して割り当てられる一意な番号。各SNMPコマンドでの情報取得に必要な
ID
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
snmpwalk
そもそもsnmpwalkというコマンドが存在する。
指定したOID配下に含まれるすべてのOIDと、値を取得するコマンド。
snmpwalkoidはそのコマンドのOIDのみを取得できるようにしたコマンドと理解でき
る。つまりネットワーク監視のために利用されるため、Laravelとか一般的なフレーム
ワークではそもそも利用すらされていない。
→ https://qiita.com/Mabuchin/items/d435c0afb4f0ca17ad25
→ https://www.secuavail.com/kb/log-technique/about-snmp/#:~:text=OID(Object
IDentifier):各,割り当てられる一意な番号。
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
使い方想定
テストから読み取るのが早そう
https://github.com/php/php-
src/blob/b06fedb41d560f756dfb5d964b0d36a224e44dc7/ext/snmp/tests/snmprealwalk.
phpt#L21
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
SNMPの標準関数群について
https://www.php.net/manual/ja/intro.snmp.php
↑こちらを読めば分かるとおり、ラッパーの関数群であることがわかる
SNMP 拡張モジュールは非常にシンプルで使い勝手の良いツール群です。Simple
Network Managment Protocol を使ってリモートデバイスを管理することができま
す。
これはNet-SNMP ライブラリのラッパーなので、基本的な考え方はこのライブ
ラリと同じです。また、Net-SNMP の設定ファイルや環境変数によってPHP の関
数の挙動も変わります。
Net-SNMP についての詳細な情報は? http://www.net-snmp.org/ にあります。
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
歴史的な経緯
ここからはいよいよ歴史的な経緯に入っていく
いつからある?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
PHP4系からだと思うじゃないですか???。
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
PHP3.0.8 ~
php.netのドキュメントにはPHP4からといったように見える書き方がなされている
が、これはgitなどを使ったドキュメントとの連携の管理が4系からなされている影響で
あり、実際には3系から存在している。
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
該当の歴史的理由が現在の状態になったところを見て
みる
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
[PHP-DEV] CVS update: php3/doc/functions
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
色々議論があるのですが、まとめると
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
1. PHP3.0.8へ入れるため、snmprealwalkという関数が実装される(1999-04-03
2:19:43)
2. PHP3.0.8リリース前にMike Jacksonさんからsnmprealwalkというのは、適切な名
前ではない。snmpoidwalkかsnmpwalkoidかに変更してはどうかという提案。下位
互換性のためにsnmpwalkoidとsnmprealwalkの動作は同じにするよ!snmpwalkな
どについても考慮するよ!ポリシー的に適切かわからないけどね!(1999-05-21
13:42:07)
3. Rasmus Lerdorfさんからいいね!その変更進めようぜ!PHP3.0.8に混ぜてリリー
スしちゃおう!という返信がある(1999-05-22 0:16:23)
4. このあと実装が行われた(1999-05-22)
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
わずか1ヶ月半くらいが歴史的な理由???!w
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
まとめ
種類 歴史的な理由の内容
ユーザー定義関
数 内部関数との動作の差分を入れるための対応が要因
snmpwalkoid
1ヶ月半くらいで提案をサクサク入れたことが発端だったよう
だ???w
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
ご静聴ありがとうございました!
今日は懇親会には1時間弱ほどの参加になるので、懇親会前でもい
るうちに話しかけてくれると大喜びします!!!
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
おまけ
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
1. PHP3.0.8はmuseum.php.netにzipファイルがない
2. PHP1系はmuseum.php.netにzipファイルが1つしかない
3. PHP Internalsのメーリングリストを遡るのは結構大変
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
こちらに調査時などの走り書きを入れています
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?
2024-02-11 | 笔贬笔の「歴史的な理由」ってなんだ!?

More Related Content

笔贬笔の「歴史的理由」ってなんだ!?を过去の笔贬笔を笔贬笔1まで遡って绍介していきます