銀の弾丸

プログラミングに関して、いろいろ書き残していければと思っております。

JavaScript

C++でJsonを扱うクラスライブラリ jsonexpr

8月から支援に入った画像処理(リアルタイム・オブジェクト・トラッキング)プロジェクトの検証システムで、C++の本体からJSONを吐く必要がありまして、急いでやっつけたのですが、「そういや昔、C++でJSON扱うクラスライブラリ作ったね・・・」と思い出しま…

意外に悩ましい整数部分の四捨五入

photo credit: danmachold calculator via photopin (license) JavaScriptで整数部分を四捨五入する場合の注意点。桁落ちに気を付けましょうってお話です。 JavaScriptで、小数を整数に四捨五入するにはMath.roundを使いますね。 でもこれ、残念なことに桁数…

「プロミス地獄」に落ちないための基本事項

「コールバック地獄」からボクらを救ってくれた「Promise」ですが、ふと気が付けば、ちょっと種類の違う別の地獄に落ちてる場合がありますよと。 「なんだPromiseお前もかっ!」的な(笑) 「コールバック地獄」は見た目にネストが深くて「ダメだコリャ感」…

WHATWG Fullscreen API を仕様通りに使えるモジュール「fullscrn」

WEBページ内の特定HTML要素を画面全体に広げられるフルスクリーンAPIのラッパーモジュールをnpmで公開しました。 WHATWGが策定しているフルスクリーンAPIは、現状(2017年5月現在)、多くのブラウザで、プリフィックス付きの実装(mozとかwebkitというアレで…

SVGの重なり順序を操作する「svg-z-order」

npm の svg-z-orderは、 JavaScriptからSVG要素の重なり順(Z-Order)を操作するモジュールです。 SVGには、HTMLに使えるz-indexスタイルは効きません。 なので、重なり順を変更するには、要素を並べ替えるしかないのです。 コードからDOM要素を並べ替えるに…

D3.js v4 でドラッグするには d3.drag() で behavior を取得する

D3.jsでドラッグイベントを処理する必要があったのですよ。 ほぼ初めてのD3ですからグーグル先生にいろいろ聞いて、「ほうほうなるほど」と学習していたのですけど、 ドラッグに関して各所で示されていたサンプル通りにやってみたら、まさかのエラー。 結局…

JavaScriptのラムダ式(アロー関数)は丸括弧で括らなければ即時実行できませんのね

Link: Flickr PAGE - CC BY 2.0 Node.jsで以下のようにラムダ式を即時実行していたのですが、ブラウザでは構文エラーとなって動かないんです。 (()=>{ console.log("これ動きません"); }()); まさかコレが動かないとか思いもよらず。 どう見直しても問題があ…

JavaScriptでマイクロ秒単位の定期処理を実行する(npm fractional-timer)

JavaScriptで1ミリ秒より短いインターバルタイマー処理を提供するモジュール fractional-timer のご紹介。 Link: Flickr PAGE - CC BY-SA 2.0 実際のところ、精度はよくありませんので、クリティカルな用途には向きません。 単純な処理をなるべく高速にタイ…

npm 「hash-arg」 ― コマンドラインパラメータに名前でアクセス

コマンドラインで指定されたパラメータに名前でアクセスする為の、シンプルなNode.jsのモジュールをnpmで公開したので御紹介。

Node.jsで正常終了:process.exit(0) は呼ばないほうが良いですね

「ダメ!絶対!」ということでも無いですが、Node.jsで、正常終了するとき、`process.exit(0)`と明示的に呼び出さないほうが良いですねっていう小ネタです。いや、引数0は省略できるとか、そういうことではなくて。

ブラウザでマルチスレッド ― JavaScriptのWeb Worker を使用してサブスレッドと通信する(応答をコールバックで受けとる機構を実装する)

ブラウザで動作する8ビットマイコンのエミュレーターを作っており、動作速度と安定性を確保するため、Web Workerを使用したので、そこで得られた知見などを書いてます。

テキストを日本語的に傍点(圏点)で強調するJavascript

ふと思いついてテキストに傍点をつけるためのスクリプトを作りましたので、ご紹介。(ソースはGitHubに置いてます) 「傍点」は「圏点」ともいうらしいのですが初耳でした。この文書では以降「傍点」で通します。 「傍点によるテキストの強調」は、CSS3のtex…

jQueryプラグインを正しく簡単に作る方法

キチンとしたjQueryプラグインを簡単に作れるようになる関数のご紹介。 javascriptのクラスを作れる人なら、「jQueryプラグインはjQuery.fnに~」とか、「メソッドチェインをするために~」なんてことを詳しく知らなくても大丈夫。

jQuery UIで普通のテキスト入力を少し立派に見せるjQueryプラグイン

フォームのテキスト入力項目の見た目を、jQuery UI の spinner(スピンボタン付き数値入力ウィジェット)と同じようにする、jQueryの簡単なプラグインです。spinnerのスタイル(CSS)を利用するので、jQuery UI も必要です。 spinnerは結構高さがあって、ボタン…

日付入力スピンボタンとdatepickerとの併用

日付入力用のspinnerです。例によってjQueryとjQuery UIが必要です。 datespinner: 以下のように、datepickerと同時に使えます。 datepickerだけではテキストボックスにテーマのスタイルが適用されないようですが、spinnerを使えばOKです。 datespinner(with…

時刻入力スピンボタン

時刻入力用のspinnerです。時分のみ入力します。秒も入力したい場合は追加コードが必要です。 jQuery UI の spinnerをカスタマイズしたものですので、jQueryとjQuery UIが必要です。 timespinner: ウィジェットの値としてはシーケンシャルな分の値になってる…

jQueryでフォーム部品のcheckedやselectedはpropで操作する

よく勘違いして慌てているので書いておきます。 フォーム部品のcheckedやselectedといったbool型のプロパティの操作は、propを使用する。以前はattrを使っていた記憶がありますが、それではちゃんと動いてくれないです。 いちご みかん りんご いちご みかん…

入力日付をチェックする関数

文字列として入力された日付が正しいかどうかをjavascriptで判定する関数です。うるう年などの関係で、ややこしそうに思いますが、javascriptなら意外にあっさりしています。

フォームのリセット時にjQuery UIのselectmenuの表示もちゃんと更新する

jQuery UI のselectmenu は、フォームがリセットされても表示が元に戻らないみたいですね。 以下のようにして解決。 $("input[type='reset']").button() .click(function() { window.setTimeout(function() { $("[name='sel']") .selectmenu('refresh'); }, …

はてなブログでjQueryを普通に使う

jQueryやっぱり便利ですね。単純な処理では不要論もありますけど、お手軽さがいい。 はてなブログでも、jQueryが標準で読み込まれていますが、残念ながらHEADやコンテンツ内で、そのままでは利用できないです。 ページの体感的な描画速度の向上のため、jQuer…