pixivのフィード

https://zenn.dev/p/pixiv

https://www.pixiv.co.jp/

フィード

記事のアイキャッチ画像
読みやすい改行のための軽量な分かち書き器をPHPで
pixivのフィード
BudouXという汎用の日本語分かち書きライブラリがあります。https://developers-jp.googleblog.com/2023/09/budoux-adobe.html以前これのJava版実装をPHPに移植したことがありました。https://zenn.dev/tadsan/articles/50c0c2b9fd443eアルゴリズムがとても簡単なのでPHPでも簡単に動かせるので便利です。ところで、先述のGoogle社のブログにはこんなことが書いてあります。 今後の展開現在 BudouX は ICU (International Components f...
4日前
記事のアイキャッチ画像
ENCA 25日目: 正規表現の Well-known Symbols メソッドをプリミティブに対して実行しない(進行中)
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 25 日目です。 正規表現の Well-known Symbols メソッド前回の記事で触れていますが、文字列のメソッドの引数に正規表現を渡した際に Well-known Symbols メソッドが実行されます。6つのメソッドに対応する Well-known Symbols が5つあります。文字列のメソッド対応する正規表現の Well-known SymbolsString.prototype.matchSymbol.match...
11日前
記事のアイキャッチ画像
ENCA 24日目: IsRegExp の挙動変更(リジェクト)
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 24 日目です。 IsRegExp とはECMAScript の仕様に IsRegExp が定義されています。これは文字列のメソッド内で、渡された引数が正規表現オブジェクトかどうかを判定する際に用いられます。使われている箇所について見てみると以下の2つのパターンに分類できます。引数として文字列のみを許容するため、正規表現オブジェクトが渡ってきたら TypeError を投げたい場合String.prototype.includesString.p...
11日前
記事のアイキャッチ画像
ENCA 23日目: RegExp.prototype.replace のキャプチャで2桁から1桁にフォールバックする仕様修正
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 23 日目です。 RegExp.prototype.replace と正規表現文字列を置換する際に用いる RegExp.prototype.replace は第一引数に正規表現[1]を受け取ることが出来ます。その場合第二引数には文字列か函数を渡すことでマッチした部分文字列を置き換えます。文字列を使った例が以下のようになります。console.log("foo".replace(/foo/u, "bar")); // "bar"console.log("...
11日前
記事のアイキャッチ画像
ENCA 22日目: 正規表現の名前付きキャプチャグループでエスケープシーケンスを扱えるように
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 22 日目です。 Unicode エスケープシーケンス色々UTF-16 のサロゲートペアを含む 𝒜 について考えます。これは文字列リテラルとしては次の3つの表現をすることが出来ます。"𝒜""\ud835\udc9c""\u{1d49c}"変数宣言としては次の2つの表現をすることが出来ます。let 𝒜;let \u{1d49c};正規表現リテラルでは u もしくは v フラグを使った Unicode 対応モードの場合3つの表現をすること...
14日前
記事のアイキャッチ画像
ENCA 21日目: Function.prototype.bind でターゲットの length が Infinity な場合の挙動明示
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 21 日目です。 函数の length プロパティJavaScript の函数は length プロパティが設定されるようになっています。これは函数を作った際に受け取る引数(デフォルト引数や残余引数が現れる前の引数)の数が設定されます。function foo(a, b, c = "c") {}console.log(foo.length); // 2なおこのプロパティは configurable であるため、Object.definePropert...
14日前
記事のアイキャッチ画像
ENCA 20日目: クラスの name プロパティ設定を早める
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 20 日目です。 クラスの name プロパティJavaScript のクラスは name プロパティが設定されるようになっています。これは SetFunctionName が実行されることによるもので、通常の函数と同様に、クラス宣言、クラス式問わずに設定されます。// クラス宣言class Foo {}console.log(Foo.name); // "Foo"// 変数宣言でクラス式を使うconst Bar = class {}cons...
15日前
記事のアイキャッチ画像
ENCA 19日目: `eval?.()` の direct eval 化(リジェクト)
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 19 日目です。 direct eval とはeval 函数を実行する際、参照される変数名が eval そのままで実行される場合を direct eval と呼び、そうでない indirect eval と区別しています。direct eval はそのスコープでの実行となりますが indirect eval は別のコンテキストで実行されます(新しく <script> タグが作られて実行されると考えるとわかりやすいかもしれません)。global...
16日前
記事のアイキャッチ画像
ENCA 18日目: eval で CodeLike オブジェクトを実行可能に(進行中)
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 18 日目です。 eval はプリミティブな文字列しか実行しないeval はプリミティブな文字列のみを実行します。それ以外が渡ってきた場合は単にそのまま返す仕様となっています。// プリミティブな文字列は実行するconsole.log(eval("1 + 2")); // 3// それ以外はそのまま返すconsole.log(eval(42)); // 42console.log(eval({ foo: "foo" })); // { foo:...
17日前
記事のアイキャッチ画像
ENCA 17日目: catch 束縛変数とそのブロック内の for...of 内の var による変数名重複の許容
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 17 日目です。 try 文の Static Semantics: Early Errorstry 文の Static Semantics: Early Errors に catch によって束縛された変数と、その後続のブロック内で変数名が重複したとき SyntaxError となる記述がなされています。// SyntaxErrortry {} catch (e) { const e; }しかし var によって変数宣言されているときにも Synta...
18日前
記事のアイキャッチ画像
ENCA 16日目: Intl API に渡す引数の挙動をコア API に合わせる(リジェクト)
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 16 日目です。 ECMA-402 Intl API についてJavaScript コアの言語仕様は ECMA-262 に定義されています。そしてその拡張仕様である Intl API が ECMA-402 で定義されています。国や言語、文化によって異なる処理をサポートします。// 通貨のフォーマットconst formatter = new Intl.NumberFormat("ja-JP", { style: "currency", curr...
19日前
記事のアイキャッチ画像
ENCA 15日目: typeof の implementation-defined を削除
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 15 日目です。 typeof の implementation-defined を削除歴史的経緯から typeof の結果に implementation-defined が含まれていました。Type of valResultUndefined"undefined"Null"object"Boolean"boolean"Number"number"String"string"Symbol"s...
20日前
記事のアイキャッチ画像
ENCA 14日目: Math.sqrt 精度の正確さ保証
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 14 日目です。 数値計算精度の扱いECMAScript の数値計算の精度を表す言葉に implementation-approximated があります。これはなるべく正確な計算結果であるべきだが、仕様ではその正確さを保証しないことを表します。多くの Math 函数が implementation-approximated となっています。詳しくは uhyo さんの記事が参考になります。https://zenn.dev/uhyo/articles/j...
20日前
記事のアイキャッチ画像
ENCA 13日目: モジュールの識別子名で Unicode 文字列が扱えるように
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 13 日目です。 モジュールの識別子名で Unicode 文字列が扱えるようにWebAssembly が文字列として UTF-8 を使うことを採用しました。これによりモジュールの識別子名が valid な UTF-8 であることが要請されています。https://webassembly.github.io/spec/core/syntax/values.html#syntax-name一方で ECMAScript では今までモジュールの識別子名が変数名...
22日前
記事のアイキャッチ画像
ENCA 12日目: Cyclic Module Records の策定
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 12 日目です。 ECMAScript のモジュールECMAScript にはもともとモジュール1つをカプセル化して表現した Abstract Module Records という抽象クラスと、それを継承した Source Text Module Records 具象クラスのみが定義されていました。Source Text Module Records がいわゆる JavaScript モジュールを表しており、ざっくり以下のような特徴を持ちます。Jav...
23日前
記事のアイキャッチ画像
ENCA 11日目: SharedArrayBuffer のオプショナル化
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 11 日目です。 SharedArrayBuffer のオプショナル化ES2017 に満を持して入った SharedArrayBuffer でしたが、その後 CPU の投機的実行を悪用した Spectre 脆弱性が発見されてしまい、攻撃を緩和するために高精度に時間が測定できる performance.now() の精度が落とされ、SharedArrayBuffer が無効化されてしまうこととなりました。詳しくは jxck さんのブログ記事を参考にしてくだ...
25日前
記事のアイキャッチ画像
ENCA 10日目: ArrayBuffer の長さの最大値明示
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 10 日目です。 JavaScript でバイナリデータの取り扱いに関わる歴史ES5.1 までの言語仕様ではバイナリデータを扱うための共通 API がありませんでした。バイナリデータを扱いたい場合、Web 標準では文字列で代替し[1]、Node.js では独自の Buffer クラス使っていました。ブラウザ上でインタラクティブな CG を扱う WebGL でバイナリデータを扱う必要性が生じ、ArrayBuffer と各種型付き配列(TypedArray)...
1ヶ月前
記事のアイキャッチ画像
ENCA 9日目: プロパティ列挙順で始めに列挙する整数値の範囲修正
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 9 日目です。 整数値インデックスの扱いECMAScript の数値 number は倍精度浮動小数点数(binary64)です。仮数部が 52 ビットであることから、2^{53} - 1(Number.MAX_SAFE_INTEGER)までの整数値を正確に扱うことが出来ます。また配列 Array の長さの最大値は 2^{32} - 1 と定義されており、インデックスとしては +0 から 2^{32} - 2 までの整数値を取ります。以上の理由から +0...
1ヶ月前
記事のアイキャッチ画像
ENCA 8日目: プロパティ列挙順一律化
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 8 日目です。 Reflect.ownKeys のプロパティ列挙順ES2015 Reflect.ownKeys は対象オブジェクトが持つ [[OwnPropertyKeys]] 内部メソッドを呼び出します。Proxy や Module Namespace オブジェクトのような Exotic Object にはそれぞれ定義された [[OwnPropertyKeys]] 内部メソッドで順番が定義されますが、普通のオブジェクトは OrdinaryOwnPrope...
1ヶ月前
記事のアイキャッチ画像
ENCA 7日目: Temporal Dead Zone (TDZ) をやめたい(未定)
pixivのフィード
!この記事は 1人 ECMAScript Normative Changes Advent Calendar 2024 の 7 日目です。 var と let/const の違いES2015 から変数宣言に let/const が導入されました。レガシーな var と比べてブロックスコープであり、同一スコープでの再宣言ができないようになっています。また let/const には変数の初期化(宣言)前にアクセスすると ReferenceError を投げる仕様があります。これを Temporal Dead Zone (TDZ) と呼びます。console.log(foo); ...
1ヶ月前