カテゴリー
開発・Web制作

mermaid をズーム&パン可能にする

mermaid で作った図を Web ページに出す際、図が入りきらないので小さめに出したりしています。ただ、そうすると文字が小さくなって読みづらくなります。Google Maps みたいにズームとかパン(上下左右にドラッグで移動)できたらいいなと思ったのでスクリプトを書いてみました。

カテゴリー
開発・Web制作

常用漢字の正規表現を書いてみる(JavaScript)

普段漢字の入力チェックはそれほど拘らないことが多いです。とりあえず Unicode の漢字ブロックにいればいいかなという具合で作ってしまいます。ただ、日本には常用漢字という名の文字セットがあり、この通りに正規表現でバリデーション組んだらどうなるのか気になったので作ってみました。

カテゴリー
開発・Web制作

window の scroll イベントがうまく取れない

JavaScript でスクロールイベントをトリガーにする処理を書いたのですが、うまく動かなかったので調査しました。よく考えてみると当たり前な原因だったのですが、少し手間取ったので記事として残しておこうと思います。

カテゴリー
開発・Web制作

EC-CUBE 4 に TypeScript を導入する

ちょっとした処理なら JavaScript でも事足りるのですが、込み入った処理を書こうとすると保守性が残念なことになりがちです。TypeScript を導入してスパゲッティ化を抑えていきたいと思います。

カテゴリー
ツール 開発・Web制作

正規表現の $ は文字列の最後ではない場合がある

最近 ^ や $ より \A や \z を使った方がいいという話を聞いたり、いろいろな言語を触ったりして少し混乱してきたので、言語ごとの正規表現の違いについてまとめようと思います。

カテゴリー
開発・Web制作

再帰的に ko.track する

複雑な構造の ViewModel を knockout.es5 で扱う際、再帰的によろしくやってくれるものがないため作成してみました。

カテゴリー
開発・Web制作

結局、ko.track はどこまで効くのか

knockout.js のプラグインである knockout-es5 を使用すると、双方向バインディングが利用できるようになります。入力欄の内容が ViewModel に入るだけでなく、ViewModel に代入した値が画面に反映されます。

ただ、単純に ko.track(obj) するだけだと、ViewModel の深い階層のオブジェクトに値を代入しても画面に反映されなかったり、今まで動いていたのに配列を書き換えた途端に動かなくなったりと、いまいち挙動がつかめません。一通り以下で試してみようと思います。

カテゴリー
開発・Web制作

TypeScript でタグ付けされたTemplate literalを使う

前回の記事:JavaScript で String.format したいで、テンプレートリテラルの使い方は何となくわかりましたが、いざ TypeScript で使うぞってなったときにタグ関数の引数の型がよく分からなかったのでメモ。

カテゴリー
開発・Web制作

JavaScript で String.format したい

他の言語とかで、軽くエラーメッセージ出したい時によく string.format を使うのですが、JavaScript には存在しません。なにかしら似たようなものはないかと Stack Overflow を覗いてみると template literal 使えばっていう回答がありました。テンプレートリテラルとは初耳なので、勉強がてらそれを使ってみることにします。

カテゴリー
開発・Web制作

array.length === 0 がマジックナンバーだよって lint に怒られる

Node.js 使い始めて数カ月がたちます。今まではブラウザで動く、生の JavaScript しか書いたことないので、覚えることが多くて困っています。最近はテストの自動化に手を付け始めて、テスト自動化のついでに eslint も導入してみたのですが、エラーが出まくる出まくる・・・。(300行くらいでエラー200件)

基本は簡単につぶせるのですが困ったのが次の2つ。