Knockout.jsのViewModel間でデータのやりとりを行う方法

www.wrapcode.com

Knockout.jsで別々のViewModel間でデータのやりとりを行う方法がわからなかったので
調べた所、上記のサイトに各種方法が書いてあった。

"ko.subscribable"というfunctionがnativeであるけれど詳しいドキュメントは
ないらしい。
このfunctionを使う方法もあるが、"knockout-postbox"という拡張を使うと
もう少しシンプルに書ける。

GitHub - rniemeyer/knockout-postbox: A small library that uses Knockout's native pub/sub capabilities to facilitate decoupled communication between separate view models or components.

サンプルとして記載されていたコードが動かなかった(jsfiddleでの外部コード読み込みが"https"のみ対応となったため)ので自分でCodePenに書いてみた。

See the Pen knockout.js multiple view model 2(Pub-sub) by tamoriinu (@yokoyama) on CodePen.

ajaxでコンテンツを読み込んでから要素の高さを揃える

webdrawer.net

上記のサイトを参考にして、書き方をちょっとだけ変えたのが以下。
いままでコールバック地獄、という程のものに出会わなかったけれど、今後は非同期処理を気にする必要があるパターンに色々でくわしそうなので予習しておいてます。

http://tamoriinu.sakura.ne.jp/js_deferred/pattern5/

crontabでnode.jsを定期実行する

node.jsはcron用のモジュールがあるが、今回はCentOSのcrontabを使用する。

node.jsのいろいろなモジュール14 – node-cronでcron的にプログラムを実行する
http://dev.classmethod.jp/server-side/cron/

さくらVPSでcronを設定する(CentOS
http://okuzawats.com/crontab-20151218

モジュールのパスが通らずエラーになる場合は、crontab内に
環境変数としてパスを記載する必要がある。

JavaScriptで配列オブジェクトにshuffleメソッドを追加する

1人で作成する簡単なアプリなどではArray自体にshuffleメソッドを追加してしまったほうが
楽かもしれない。

See the Pen shuffleArray(prototype) by tamoriinu (@yokoyama) on CodePen.

JavaScriptでマウスの座標を取得

マウスの座標は原点をどことするかで値が変わってくる。

  • スクリーン(PC画面)の左上(screenX/Y)
  • ブラウザで表示されている領域の左上(clientX/Y)
  • 表示されているページの左上(pageX/Y)
  • イベント発生元要素の左上(offsetX/Y)

参考書籍にはoffsetX/Yはfirefoxで対応していない、とあったが今は対応しているようだ。
developer.mozilla.org


See the Pen eventarg2 by tamoriinu (@yokoyama) on CodePen.