タグ

ブックマーク / qiita.com/rana_kualu (56)

  • 【PHP8.2】PHPの乱数がすごい改善される - Qiita

    class XorShift128Plus { /* constants */ protected const MASK_S5 = 0x07ffffffffffffff; protected const MASK_S18 = 0x00003fffffffffff; protected const MASK_S27 = 0x0000001fffffffff; protected const MASK_S30 = 0x00000003ffffffff; protected const MASK_S31 = 0x00000001ffffffff; protected const MASK_LO = 0x00000000ffffffff; protected const ADD_HI = 0x9e3779b9; protected const ADD_LO = 0x7f4a7c15; protec

    【PHP8.2】PHPの乱数がすごい改善される - Qiita
    n314
    n314 2022/11/30
    たまにしか使わないからこそ、こういう整理いいよね。“第二引数に定数MT_RAND_PHPを渡すと、壊れたメルセンヌツイスターになります。” クスッときた。
  • 【DNS】サブドメインのないドメインのAレコードは真っ先に書かないといけない - Qiita

    インシデントの話なのでせっかくだから私が体験した1番ゾッとするインシデントの話に参加してみたのですが、正直なところ1番ではないですね。 やっぱ一番はコレですよ。 というわけで先日起こした事故の紹介です。 まあタイトルどおりなのですが。 どういうこと?

    【DNS】サブドメインのないドメインのAレコードは真っ先に書かないといけない - Qiita
    n314
    n314 2022/07/13
    ゾーンファイルを書いてたのはずっと前だからうろ覚えだけれども、トップレベルは @ で指定してた気がするなあ。割と自由に設定できる系の管理画面でも@が自動的に入ったりする。
  • 【PHP8.2】PHPで選言標準形 (Disjunctive Normal Form) 型が使えるようになる - Qiita

    タイトルの意味はよくわからない。 さてPHPでは、PHP8.0で型のOR、PHP8.1で型のANDが使えるようになりました。 しかし、この両者を組み合わせて使うことはできません。 function f(A | B | C $param){} // OK function f(A & B & C $param){} // OK function f(A | B & C $param){} // NG ← ということで、これを可能にしようというRFCが提出されました。 既に投票は終わっており、賛成多数で可決されました。 PHP8.2からDNF型が使用可能になります。 以下は該当のRFC、Disjunctive Normal Form Typesの日語訳です。 PHP RFC: Disjunctive Normal Form Types Introduction Disjunctive Nor

    【PHP8.2】PHPで選言標準形 (Disjunctive Normal Form) 型が使えるようになる - Qiita
    n314
    n314 2022/07/05
    静的解析の方に本体が合わせていってる形になるのかな?
  • 【DNS】CNAMEのTTLは転送先のTTLが適用されるっぽい? - Qiita

    今回のは試してみたらそういう挙動っぽかったような気がするという話であり、確定した情報ではありません。 私の勘違いとかなんか設定ミスとかだったらすみません。 どこ探してもこの件について書かれてないし、RFCにもいまいち見当たらないっぽいです。 ここに載ってるよってのがあったら教えてください。 どういう意味? サーバAのzoneファイル @ IN SOA ns1.a.com. root.a.net. ( 99999 ; Serial 60 ; Refresh 60秒 60 ; Retry 60 ; Expire 60 ; Negative cache ) foo IN A 10.0.0.1 bar IN CNAME bar.b.net.

    【DNS】CNAMEのTTLは転送先のTTLが適用されるっぽい? - Qiita
    n314
    n314 2022/05/25
    あんまり意識したことなかったけど、確かにそうなるのかも。権限ない場合は先にAのzoneにbar IN A 10.1.2.3って書いちゃうとか?
  • 【PHP9】ついに未定義変数が使えなくなる - Qiita

    PHP9以降、致命的エラーになります。 以下は該当のRFC、Undefined Variable Error Promotionの紹介です。 投票期間は2022/03/14から2022/03/28です。 2022/03/21時点では賛成30反対6の賛成多数であり、ほぼ確実に可決されます。 Undefined Variable Error Promotion Introduction 未定義変数とは、使用する前に値がまだ初期化されていない変数のことです。 未定義変数にアクセスすると、現在はWarning: Undefined variable $varnameの警告E_WARNINGが表示され、その変数値はNULLであるかのように扱われますが、実行が中断されることはありません。 しかし、これは意図しない挙動である可能性が高いでしょう。 この挙動を変更して例外を出すためにカスタムエラーハンドラ

    【PHP9】ついに未定義変数が使えなくなる - Qiita
    n314
    n314 2022/03/25
    ラスマス氏「PHPはひどいコードを動かすのが驚くほど得意」と言っていたけども、段々得意じゃなくなってくるのか。
  • Googleフォントを使うと犯罪になる - Qiita

    <link href="https://fonts.googleapis.com">って書くと罰金取られます。 以下はGerman Court Rules Websites Embedding Google Fonts Violates GDPRというニュースの紹介です。 German Court Rules Websites Embedding Google Fonts Violates GDPR ドイツのミュンヘン地方裁判所は、あるWebサイトの運営者が、ユーザの個人情報を人の同意なしにフォントライブラリを経由してGoogleに提供したとして、100ユーロの賠償を命じました。 Webサイトが原告のIPアドレスGoogleに無断で提供したことは、ユーザのプライバシー権の侵害に当たると判断しました。 さらに、Webサイトの運営者は収集した情報をその他のデータと突き合わせることで『IPア

    Googleフォントを使うと犯罪になる - Qiita
    n314
    n314 2022/02/08
    まあ確かにフォントなら問題ないということになったら1ピクセルの透過画像を使わずにフォントを使えばいいわけだしね。
  • 【Chrome】ServiceWorkerを今度こそ決定的かつ完全に消去する - Qiita

    前、Chromeを使うなら、必ずServiceWorkersを無効化しようという記事を書いたのですが、あの方法はてんで全然ダメダメでした。 chrome://serviceworker-internalsには無用なServiceWorkerが増え続け、chrome://flags/からはServiceWorkerの削除設定が削除されました。 そんなわけで、今度こそServiceWorkerを決定的かつ完全に消し去りたいと思います。 といっても自力でどうこうしたわけではなく、全面的に他人の力を借りただけですが。 Reject Service Worker Reject Service Workerをインストールする。 おわり。 かんたん! 作者はtoshiさんです。 ありがとうございます。 アドオンの技術的内容はServiceWorkerを無効化するという記事に書かれているのですが、Serv

    【Chrome】ServiceWorkerを今度こそ決定的かつ完全に消去する - Qiita
    n314
    n314 2022/02/03
    Running Status: RUNNING で検索したら動いてるのはgoogleとqiitaだけだった。今開いてるから?全部で252個登録されていたけど大半は記憶に無いんだよなあ…。一度見ただけのブログやニュースかな。
  • JavaScript ライジングスター 2021 - Qiita

    2022 / 2021 / 2020 / 2019 JavaScriptライブラリのトレンドを紹介しているbestofjs.orgが、2021年に最もホットであったJavaScriptライブラリのランキングを発表しました。 選考基準は累計スター数ではなく、『2021年の一年間で増えたスターの数』です。 過去流行っていたけど落ち目となった技術は出てこないので、最近注目されている技術がわかります。 ちなみに2016年の総合ランキング1位はVue.js、2017年の総合ランキング1位はVue.js、2018年の総合ランキング1位はVue.js、2019年の総合ランキング1位はVue.js、2020年の総合ランキングDenoです。 以下は2021年のランキング、2021 JavaScript Rising Starsの日語訳です。 JavaScript ライジングスター 2021 6回目のJa

    JavaScript ライジングスター 2021 - Qiita
    n314
    n314 2022/01/11
    知らないものが増えてきた
  • 【PHP8.1】PHP8.1がリリースされたので新機能全部やる - Qiita

    PHP8.2 / PHP8.1 / PHP8.0 2021/11/26にPHP8.1.0がリリースされました。 大きな新機能については、PHP8.0以降公開されるようになったランディングページで見ることができます。 ここでは、概要ではなくUPGRADINGに載っている変更点を全部見て回ることにします。 Backward Incompatible Changes 下位互換性のない変更点。 PHPコア Access to the $GLOBALS array is now subject to a number of restrictions $GLOBALSの内部処理を変更します。 $a = 1; $globals = $GLOBALS; // 値をコピー $globals['a'] = 2; var_dump($a); // PHP8.1 int(1) // PHP8.0 int(2) $

    【PHP8.1】PHP8.1がリリースされたので新機能全部やる - Qiita
    n314
    n314 2021/12/07
  • Nikita Popov、PHP開発から離れる & PHP財団設立のお知らせ - Qiita

    The first is that I'm changing jobs at the end of the month, and won't be working on PHP in a professional capacity anymore. I'll still be around, but will have much less time to invest in PHP development. 今月末で転職するため、今後仕事としてPHPに関わることはなくなります。 今後も活動は続けますが、PHPに関わる時間はずっと少なるでしょう。 Nikita Popovは、ここ数年のPHPエコシステムを主導してきた人物です。 それまでもボランティアで年間1000以上のContributeをしていたのですが、2019年にJetBrainsに入社してからは毎年4000以上のContribute

    Nikita Popov、PHP開発から離れる & PHP財団設立のお知らせ - Qiita
    n314
    n314 2021/11/30
    マジか…。徐々にゆるふわPHPに戻っていって、PHP-Parserが更新されなくなったりバグが多くなったら静的解析が使い物にならなくなる可能性もあるような。
  • PHPにおけるクラスの事前バインディングについて - Qiita

    これは正常に動作します。 Testクラスを定義するより先に使っているのに動きます。 ふしぎですね。 これは一見JavaScriptにおける巻き上げと同じように見えますが、実際はもっと複雑でややこしいことをやっています。 そこらへんについて、PHPの第一人者Nikita Popovが解説していました。 以下はEarly binding in PHPの日語訳です。 Early binding in PHP PHPでは、同一ファイル内で宣言前のクラスを使用することができる場合があります。 我々はこれをearly bindingと呼んでいますが、この正確な動作はかなり難解であり、具体的な文書化も見当たりません。 この記事を読めば、事前バインディングに関するバグレポートのへの回答が何故won't fixばかりになるのかが理解できるようになるでしょう。 Early binding != class

    PHPにおけるクラスの事前バインディングについて - Qiita
    n314
    n314 2021/11/04
    たまに書き捨てっぽいCLIのスクリプトを書く時に遭遇するかもしれない。
  • 【PHP8.2】動的プロパティが禁止される - Qiita

    $dt = new DateTime(); $dt->hoge = 1; var_dump($dt->hoge); // 1 PHPでは未定義のプロパティに値を突っ込むと、特に何の抵抗もなくプロパティが生えます。 しかし、他の多くの言語ではこのような動作にならず、未定義プロパティを突っ込もうとするとエラーになります。 ということでこれを禁止しようというRFCが提出されました。 以下はDeprecate dynamic propertiesのRFCの紹介です。 PHP RFC: Deprecate dynamic properties Introduction 宣言されていないプロパティに書き込みを行うと、PHPでは何もエラーが出ずに動的にプロパティが作成されます。 現代のコードにおいて、これが意図的に行われることはほとんどありません。 このRFCでは、動的プロパティを非推奨とし、将来的に削

    【PHP8.2】動的プロパティが禁止される - Qiita
    n314
    n314 2021/09/01
    その前に、もっとクラス定義を柔軟にしてほしいな。DB操作だとプロパティ10個のうち8個しか使わないクラスとか例外的に11個使うクラスとか出てくるけど、別ファイルにするのはしんどい。
  • 【PHP8.1】PHP8.1の新機能 - Qiita

    PHP8.2 / PHP8.1 / PHP8.0 / PHP7.4 2021/11/26にリリースされました 2021/07/20、PHP8.1がフィーチャーフリーズしました。 言語機能に関わるような機能の追加・変更が締め切られたということです。 今後はデバッグを繰り返しながら完成度を高めていき、2021/11/25にPHP8.1.0がリリースされる予定です。 というわけでPHP8.1で実装されるRFCを見てみましょう。 RFC Fibers 賛成50反対14で受理。 Fiberです。 PHPで非同期コードを書けるようになります。 $fiber = new Fiber(function (): void { $value = Fiber::suspend('fiber'); echo "レジュームした。$value: ", $value, "\n"; }); $value = $fiber

    【PHP8.1】PHP8.1の新機能 - Qiita
    n314
    n314 2021/07/27
    “First-class callable syntax”これいいな。
  • 【Declined】PHPのあらゆる関数を部分適用できるようにするRFC - Qiita

    // 普通の関数 function foo1(int $a, int $b):int{ return $a + $b; } echo foo1(10, 5); // カリー化 function foo2(int $a):Closure{ return fn (int $b):int => $a + $b; } echo foo2(10)(5); // 部分適用 $foo10 = foo2(10); echo $foo10(5); 読みにくくなっとるだけやん? 関数の再利用とか言うけどそんなに再利用するか? まあ私の妄言はどうでもいいとして、なんかPHP体であらゆる関数を部分適用できるようにするというRFCが提出されていました。 以下はPartial Function Applicationの紹介です。 Partial Function Application Introduction 関

    【Declined】PHPのあらゆる関数を部分適用できるようにするRFC - Qiita
    n314
    n314 2021/06/28
    反対多いな。nikicも大量にレビューしている割には反対しているよ。詰めきれていない問題があるんだろうか。
  • 【PHP8.1】引数デフォルト値でnewできるようになる - Qiita

    先日2021/03/02に、New in initializersというRFCが提出されました。 なにかというと、こんな構文が書けるようになります。 class Test { private $foo = new Foo(); public function __construct( private Logger $logger = new NullLogger, ){} } PHP RFC: New in initializers Introduction このRFCでは、プロパティやパラメータのデフォルト値など、イニシャライザの内部でnew式を使えるようにすることを提案します。 現在のPHPでは、以下のようなコードは許可されていません。

    【PHP8.1】引数デフォルト値でnewできるようになる - Qiita
    n314
    n314 2021/06/26
    これいいな。安全安心のnikic。
  • 【PHP8.1】その配列、純粋配列? - Qiita

    PHPには配列と連想配列の区別がありません。 むしろPHPの配列は順序付きハッシュであり、その中でも数値のキーは特別に連番で扱える、みたいな扱いです。 他言語で言うところの配列はPHPにはありません。 $arr = [ 'hoge' => 'fuga', 'foo' => 'bar', 'x', // キーは0になる 3=>'y', 'z' // キーは4になる ]; しかしまあ区別したいよねってことで、Add array_is_listというRFCが提出されました。 既に受理されており、PHP8.1にて実装されます。 Add array_is_list(array $array): bool Introduction PHPの配列は、整数キーと文字列キーの両方をサポートしており、さらに順序が保証されているという珍しい型です。 変数値が配列であるかのチェックは簡単ですが、その配列は連想配列

    【PHP8.1】その配列、純粋配列? - Qiita
    n314
    n314 2021/03/25
    滅多に使わなさそうだけど、たしかにjson_encode するときにハマったことがあったかも。あとフォーム入力で配列を受け取る場合はエラーチェックがしやすいかも。
  • 【PHP8.1】PHPで簡単に非同期処理を書けるようになる - Qiita

    PHPは長きにわたり同期的、すなわち、あらゆる処理を上から順に実行していくというスタイルを取ってきました。 しかしたとえば、複数のURLからデータを取ってきて結果をまとめたいといった場合、時間のかかるHTTPリクエストは同時に投げたいですよね。 この用途にはGuzzleというライブラリが存在し、これを使えば同時にリクエストを投げられます。 しかし、ではHTTPアクセスとDBアクセスを同時にやりたい場合は? 時間のかかる計算を裏でやりたい場合は? などと考え始めると、こういった個別のライブラリでは対処しきれません。 ということで汎用的な非同期処理をPHPで書けるようにするRFCが提出されました。 PHP RFC: Fibers Introduction 人類史上ほぼ全ての期間において、人々はPHPを同期的なコードとしてのみ書いてきました。 同期的に実行されるコードのみが存在し、そしてそれを同

    【PHP8.1】PHPで簡単に非同期処理を書けるようになる - Qiita
    n314
    n314 2021/03/18
    利用者を大事にしている感が良い。
  • SJIS-macに変換したはずなのにSJIS-winになる - Qiita

    $utf8Str = "❶❷❸❹❺"; $sjisStr = mb_convert_encoding($utf8Str, 'SJIS-mac'); echo(mb_detect_encoding($sjisStr, ['UTF-8','SJIS-mac', 'SJIS-win', 'SJIS'])); // SJIS-win ← SJIS-macに変換したはずなのに、何故かSJIS-winと判定されてしまいます。 そもそもSJIS-macってなんだよって話ですが、単にMacJapaneseのエイリアスです。 従ってMacJapaneseと書いても同じく、正しく誤判定されます。 そしてコメント欄にThis is a bug in PHP's mbstring extension『mbstringエクステンションのバグじゃよ』という人が現れています。 間違ったコードを書いたときに自分のせいでは

    SJIS-macに変換したはずなのにSJIS-winになる - Qiita
    n314
    n314 2020/09/30
    すごい。
  • 【PHP8.0】PHP8.0の新機能 - Qiita

    PHP8.2 / PHP8.1 / PHP8.0 / PHP7.4 2020/11/26に リリースされました 。 2020/08/04にPHP8.0がフィーチャーフリーズしました。 言語機能に関わるような機能の追加・変更が締め切られたということです。 今後はデバッグを繰り返しながら完成度を高めていき、2020/11/26にPHP8.0がリリースされる予定です。 というわけでPHP8.0で対応することが決まったRFCを見てみましょう。 RFC JIT 賛成50反対2で受理。 PHP8の目玉、JITです。 PHPをネイティブコードにコンパイルし、さらにコンパイルした結果を次のリクエストに使い回すことができます。 速度はOpcacheがオンの状態から平均的に1.3-1.5倍程度、さらにCPUバウンドな処理なら3倍以上という劇的な高速化が見込めます。 Opcache無しからだと、1分かかっていた

    【PHP8.0】PHP8.0の新機能 - Qiita
    n314
    n314 2020/08/10
  • 【PHP8.0】非厳密な比較演算子`==`の挙動が今さら変更になる - Qiita

    結果は順にtrue、true、falseです。 これがPHP7までの非厳密な比較(等価)演算子だったわけですが、まあおかしいよねってことで、この挙動がPHP8.0で変更になることになりました。 よもや今さら基中の基である比較演算子の動作を弄ってくるとは思わなかったぞ。 以下はSaner string to number comparisonsの日語訳です。 PHP RFC: Saner string to number comparisons Introduction ==やその他の非厳密な比較演算子を用いた文字列と数値の比較は、現在は、文字列を数値にキャストし、その後整数か浮動小数の比較を行っています。 この結果、多数の不可解な結果が得られますが、中でも注目すべきは0 == "foobar"がtrueになることです。 このRFCでは、文字列が実際に数値型文字列である場合にのみ数値型

    【PHP8.0】非厳密な比較演算子`==`の挙動が今さら変更になる - Qiita
    n314
    n314 2020/08/03
    "0" == "" はtrueになってほしいような、そうでもないような。直接if("0")とかif ("") とかが多いから問題ないのかな。