MySQL、オープンソース系、ウェブ系ネタ。#17で話してきました。Sugimuraコードはgithubに置いてあります。jquery-vimizewebサイトをvim化するjQueryプラグインです。一応このブログに導入しているので動作確認出来ます。コマンドはこの辺に書いてあります。書いたキッカケもともと自分が書いたコードがあったのですが、ページトップに移動するコマンドがgだったのをとある方に「ggじゃないんですか?」って言われたのでちゃんと動くように書いてみました。補足など初めてのjQueryプラグイン作成なので勢いで書いた感じになっています。作法とかイマイチ分からないのですが、動けばいっか的な感じです。LTネタ思いついた時には1週間前だったのもあってあまり調べていません。向いているサイトとあまり向かないサイトが有る:cmdとgコマンドが使えるとやっぱりvimっぽい(気がする):cmdはスキなコマンドを追加できるようになっています。入力する時に画面には何も表示されないのでそれを直したいですね。何かコマンド割り当てたい。oキーでリンク開けるようにしたい。Text2でJavaScriptのシンタックスエラーチェックをリアルタイムで行う方法https://twitter.com/#!/javascript_j/status/197743453881380865ココらへんのツイートからふとやってみようかと。githubリアルタイムで構文チェックを行なってくれる。インストール必要がある。追加されるので選択する。テキストボックスに「SublimeLinter」を入力する。選択すれば自動でインストール開始する。siteJavaScriptでJSHintやJSLintを使うにはNode.jsが必要。)をダウンロードしてインストール。$PATH.JSHintのインストールuipoet/sublime-jshintJSHintはJSLintのフォーク。false->trueに変えるとより強調される。false,エラーがあるところは強調や下線等してくれる。jQueryのコードとかになるとエラーばっかりになってしまうのが...。手動モードにしたほうがいいのかも。ちなみにちょっと頑張ったんだけど、Perlの構文チェックを有効にする方法が分かりませんでした...。nullが帰る対処とあるスクリプトで最初の実行時には正常に動作するのだけれど、同一ページを再訪問(リロードではなく)した時に不具合が出た。webkit系のブラウザで不具合が確認できたのだけれど、どうやらgetElementById()でnullが帰っている様子。ググってみると同じような現象で悩んでいる人もいるみたい。DOM構築前だとnullが帰る事もあるのが原因のようだ。onLoadイベントとかはjQuery使っているのなら簡単に実装できるのだけれど、純粋JSで書いているスクリプトだし、他所様に配信するスクリプトなので解決方法を探る。いいのだろうけど、そうはいかない。onLoadイベントに登録すればいい。いいのだけど、onLoadイベントは1つしか実行できないので工夫が必要になる。かいたHTML中にあるIDが付いたタグの中に別処理で作成したHTMLを放り込むもの。});みたいな感じにすればonLoadイベントとして実行してくれる。することで、getElementById()でnullが帰らなくなる。javascriptでiframeを書き、そのフレームをさらに書き換える・・・というものがあるのですが、スクリプトをページ内に複数設置すると、chromeでエラーになってしまうので回避策。frames[フレーム名];で取得していたのですが、これが2度目以降の実行時にundefinedとなってしまう。document.getElementById(ifrname).contentWindow;でもやはり取得できず。他のブラウザでは問題ないので気が付かなかったのだけれど、chromeのみ症状が出た。解決策としてはDOMでiframeを追加する事で望んだ結果が得られた。しなくてはならないのでちょっと面倒。仮想パス(../aaa/bbb/ccc.html)やフルパス(/aaa/bbb.html)で既にサイトを公開している場合には、どこかしらで修正を見逃す場合もある。移動させればよさそう。{location.replace('https://'+window.location.host+window.location.pathname);}//--></script>今までのパスを変更しないで済むので多少楽・・・かな。DBIx::Class(DBIC)でtimestamp的なカラムの自動更新Mojoliciousでactionの前後に実行される独自のHookを作る。