トットの開発メモ

トットの開発メモ

JavaScriptでパスワードを生成する方法|crypto.getRandomValuesと偏りの消し方

JavaScriptでパスワードを生成する方法。Math.randomではなくcrypto.getRandomValuesを使う理由、%で文字を選ぶと出る偏りと引き直しでの消し方、「必ず1文字」の入れ方による偏り、強さ(ビット)の計算を、実測した数値つきでまとめます。
トットの開発メモ

JavaScriptで全角・半角を変換する方法|normalize(NFKC)の落とし穴と半角カナの濁点

JavaScriptで全角英数字と半角英数字を変換する方法。0xFEE0の差を使う変換、英数字にはさまれた記号だけを半角にする正規表現、normalize(NFKC)の副作用、半角カナの濁点の後始末、全角カナから半角カナへの対応表、Intl.Collatorでの並べ替えを実行結果つきでまとめます。
トットの開発メモ

encoding-japaneseの使い方|文字コード判定とShift_JIS変換

ブラウザ標準のTextDecoderはShift_JISを読めますが、書く・判定する機能はありません。そこを埋めるencoding-japanese(2.2.0)の使い方と、UTF-16の判定結果や変換不能文字の落とし穴、文字化けを逆算する仕組みを、実測つきで書きました。
トットの開発メモ

JavaScriptでJPEGのExif(位置情報)を削除|Canvasを使わずセグメントを消す

JPEGはセグメントの並びなので、DataViewでマーカーを順に読んでAPP1(Exif)などを外し、残りをBlobに並べ直せば画質を変えずに消せます。複数スキャンのJPEGで見逃した話と、向きの情報・PNG・WebPをCanvasで描き直す理由も。
トットの開発メモ

qrcode-generatorで日本語のQRコードが文字化けする原因と直し方(UTF-8)

QRコード生成ライブラリ qrcode-generator(1.4.4)は、既定の設定では日本語を正しく記録できません(「こんにちは」は空、「あいうえお」は「BDFHJ」に)。原因は既定の stringToBytes が1文字を1バイトに切り詰めるため。UTF-8への差し替え1行と、jsQRで確かめる方法を実測つきで。
トットの開発メモ

ブラウザだけでPDFをつくる・読む — pdf-libとpdf.js入門

PDF操作ツールの裏側で使っているJavaScriptライブラリ、pdf-libとpdf.jsをやさしく解説します。役割分担と最小のサンプルコード、日本語フォントやWorkerのはまりどころ、その場で試せるデモ付きです。