2月 2012
3件の投稿
2タグ
JsTestDriverのAsyncTestCase
この内容はJsTestDriver WikiのAsyncTestCaseを意訳したものではありません。 http://code.google.com/p/js-test-driver/wiki/AsyncTestCase TestCaseはAsyncTestCaseの同期実行版なので基本的にAsyncTestCaseを使いましょう。 (TestCaseをAsyncTestCaseに置き換えるだけでそのまま実行できます) assert関係はこちらからどうぞ Assertions http://code.google.com/p/js-test-driver/wiki/Assertions 以下の二つはTestCaseと互換の基本的な実行方法です。 オブジェクトリテラルを渡す方法 AsyncTestCase(‘testCaseName’, { ...
2タグ
JsTestDriverのコマンドラインオプション
この内容はJsTestDriver WikiのCommandLineFlagsを意訳したものです。 http://code.google.com/p/js-test-driver/wiki/CommandLineFlags $ java -jar JsTestDriver.jar —help —browser VAR : The path to the browser executable —browserTimeout VAR : The ms before a browser is declared dead. —captureAddress VAL : The address to capture the browser....
2タグ
JsTestDriverの設定ファイル書式
この内容はJsTestDriver WikiのConfigurationFileを意訳したものです。 http://code.google.com/p/js-test-driver/wiki/ConfigurationFile JsTestDriverの設定ファイルはYAMLで書きます。 設定ファイルはテストで使用するファイルをJsTestDriverが読み込むために使用され、標準はJsTestDriverコマンドを実行したカレントディレクトリの「jsTestDriver.conf」を参照します。 この参照先はコマンドラインオプションの「—config」から変更することができます。 各ファイルのベースパスはjsTestDriver.confと同じディレクトリとなりますが、コマンドラインオプションの「—basePath」から変更することができます。 サンプル ...
1月 2012
10件の投稿
2タグ
JSのイベント関係で重要そうなURLをいくつか
http://d.hatena.ne.jp/language_and_engineering/20090907/p1 >JavaScriptの動かないコード (中級編) clickイベントを強制的に発生させたい (fireEvent/createEventの使い方) - 主に言語とシステム開発に関して JSのイベントをコード内から発火する方法 http://d.hatena.ne.jp/koumiya/20080916/1221580149 >ブラウザの戻るボタンで戻ったときに呼ばれるイベントとかキャッシュとかそこらへんのこと - koumiyaの日記 ブラウザによっては「histry.backでonloadが呼ばれない問題」があることと、その回避策に関して http://www.quirksmode.org/dom/events/index.html...
1タグ
pdf.jsに見るブラウザ機能開発の未来
昨日Mozilla Vision 2012 Conference Day http://mozilla.jp/events/vision/2012/conference/ #mozvision で「pdf.js — HTML5 と JavaScript の限界に挑戦する」を見てきたけど、その内容が期待通りすごかった。 (前にMozillaの人が「pdf.jsが意味分からないレベルですごい」って言ってたので期待してた) 内容としては「PDFではサポートされてる画像形式(JPEG2000)とかがサポートされていない場合、JSでデコードして描画」、「埋め込みフォントがブラウザで対応していない形式の場合、JSで対応する形式に変換してDATA...
1タグ
JSでのVM実装はもしかしたら未来のブラウザの形かもしれない
以前Javascript PC Emulator http://bellard.org/jslinux/ が話題になったけど、基本的にネタ扱いだった。 でも、今JSがやろうとしてることって「ブラウザ上でアプリケーションを作れるようにする」ってことだし、File APIやWebGLは今までのブラウザ上では出来なかったかなりハードウェアに近いAPIになってる。 これはもしかしたら未来のブラウザには各タブごとにVMが乗って、JSはその上で動くOS上のアプリケーションのような扱いになるんじゃないか。 この方法であればJSはハードウェアリソースを(VMの制限の上で)自由に使えるし、今より各種制限も少なくなる。 (cookieとか各VM間で共有するデータは同じブラウザ内の認証用VMに対する接続的な方法で解決する)...
2タグ
JSの単体テストにJsTestDriverがおすすめ
JSで単体テストしたい人限定の話ですが、JsTestDriverが結構良かったので紹介します。
基本的には以下の内容のまとめです。 0-9, JsTestDriverを使うときの注意点 http://0-9.tumblr.com/post/15574052397/jstestdriver 0-9, 最近のJS系のツールを触ってみたまとめ http://0-9.tumblr.com/post/15398953814/javascript-tools ・JsTestDriverとは何か? 超簡単に言うとSelenium CoreのJS実装とQUnitを合わせたものです。 実際Selenium ver2はJsTestDriverが使ってるWebDriverと言うAPIを使っています。 (WebDriverがブラウザを外部から動かす共通仕様で、Selenium...
Fiddler、CharlesでのUA差し替えの方法
Fiddlerの場合、Fiddler起動後、Ctrl+rを押してFiddlerScriptを以下のように修正すれば可能 static function OnBeforeRequest(oSession: Session) { // 上記行の下に以下の行を追加 if ( ~oSession.host.indexOf(‘example.jp’) || ~oSession.host.indexOf(‘localhost’) // ドメインを追加したい場合、上記行をコピペして追加 ) { // UAは好みに合わせて ...
5タグ
Android, iOSでのjQuery, jquip, zepto, jQ.Mobi,...
PCではなくAndroid, iOSのみの時間なので注意 http://jsrun.it/kyo_ago/1Akw 何も読み込まない状態 5~10ms http://jsrun.it/kyo_ago/pggf jQueryを読み込んた初期化時間 300ms~500ms http://jsrun.it/kyo_ago/jGTs jquip.events.css.ajaxを読み込んだ初期化時間 80ms~150ms http://jsrun.it/kyo_ago/e3B0 zepto load timeを読み込んだ初期化時間 80ms~150ms http://jsrun.it/kyo_ago/XzUy jQ.Mobi load timeを読み込んだ初期化時間 30ms~50ms http://jsrun.it/kyo_ago/y3tX riddle load timeを読み込んだ初期化時間...
5タグ
iOS, AndroidでjQuery.support内の無効になるものリスト
http://jsrun.it/kyo_ago/yMBj
それぞれ以下のものが無効になる
2.1-update1 checkOn doesAddBorderForTableAndCells focusinBubbles inlineBlockNeedsLayout optDisabled optSelected shrinkWrapBlocks subtractsBorderForOverflowNotVisible Android 2.3.6, 2.2, iOS 4.2.1 checkOn doesAddBorderForTableAndCells focusinBubbles inlineBlockNeedsLayout optDisabled ...
2タグ
JsTestDriverを使うときの注意点
・ファイル構成 以下の構成が無難(srcは別の名前でもいい) src ソースコード test テストコード test/JsTestDriver.conf ・JsTestDriver.conf コードの読み込みはexcludeである程度制御できるけど、どうせ依存関係あるし*ではなくて一個づつファイル指定するほうが無難 WebStorm使うならserverは指定しなくてOK *で読み込む場合アルファベット順になるので注意(アルファベット順なのは保証されてるっぽいのでそれに依存するのはOK) http://code.google.com/p/js-test-driver/wiki/ConfigurationFile 各種ファイルパスはJsTestDriver.conf起点になるので注意 ...
最近のJS系のツールを触ってみたまとめ
社内用にまとめたものだけど、そもそもTwitter上で流したもののまとめなのでこちらにも投げてみる。
//——————————
CoffeeScript 元からCoffeeScriptに慣れてるか、素のJSが書きにくいと感じる人にはおすすめ 素のJSが書きやすい人はロジック書きにくくなる部分あるので若干つらい 記述するコード量は減るけど、素のJSでもエディタとかのサポートがあれば記述時間はそれほど変わらないかも (特に変換後のJS想像しながら書く場合) ただ、素のJS好きな人でも対応は難しくないので、JS書きたくない人が開発するのであれば使うのはありかも ...
WebStormでJsTestDriverを使う方法
・画面左下の「JsTestDriver Server」パネルを開いて再生ボタンを押す
http://gyazo.com/70004fc968c80d5ca9b39866f588328a
・表示されるURLをブラウザで開く
・「Run / Debug Configuration」から+でJsTestDriverを追加して設定する
12月 2011
10件の投稿
windows環境にjsdom入れる方法
詰まるのが、htmlparserとcontextifyのインストール
https://github.com/tautologistics/node-htmlparser
htmlparserはgithubからファイル落としてpackage.json内のdebug.webをdebug.urlに書き換えて再圧縮後、「npm install 最圧縮したhtmlparser.tar.gz」で入る
ただし、再圧縮はGNU Tar 1.2以上で行うこと(1.1系とかWin系のTarだとnpmが受け付けない)
contextifyはファイルを解凍してC:\Users\{ユーザ名}\node_modules以下にそのまま突っ込む。
windowsの環境変数にNODE_PATH=C:\Users\{ユーザ名}\node_modulesを指定すれば普通に見えるようになる。
...
WebStormでMochaを動かす
・WebStorm入れる
入れる
・npm入れる
入れる
・module入れる
npm install mocha
npm install chai
・設定する
WebStormのRun/Debug Configurationsの+を押して設定を追加
Path to Nodeにnode.jsのパスを指定
Path to Node App JS Fileにmochaのパスを指定
(winの場合C:\Users\{ユーザ名}\AppData\Roaming\npm\node_modules\mocha\bin\mocha)
Working Directoryにプロジェクトの/を指定
・実行する
Run(Shift+F10)でmochaで実行してくれる
1タグ
JSコードTips
// 任意の連続した文字列生成 (new Array(10)).join(‘a’); // 任意の内容で初期化された配列生成(要Underscore.js) _(_.range(100)).map(function(n) { return ‘hoge’ }); // 高速なepoch秒生成 +(Date.now ? Date.now() : new Date()) // event throttle(scrollイベントの発生を100msに1回以下に抑える) var timer; $(window).on(‘scroll’, function (e) { if (timer) { return; }; /* hoge */ timer = setTimeout(function () { timer =...
1タグ
JSで表示用htmlをキャッシュするときに考える事
JSで画面遷移を制御する場合、各ページのテンプレート用htmlをキャッシュするのはよくあるけど、このキャッシュをどの程度キャッシュするかは結構悩ましい。
単純に変数として保持してページ読み込み時に再度取得し直すなら簡単だけど、そうすると最初の読み込みに時間がかかるようになるので出来ればlocalStorageに保持したい。
ただ、localStrageに保持するとhtmlを修正しても反映されなくなる問題がある。
これは一定時間ごとにキャッシュを破棄して取得し直すことで解決するけど、ページの初期表示を高速化したい場合最初のページはキャッシュから読み込む必要がある。
ただ、その場合JS、CSSも過去のテンプレートhtmlに適応されても問題ない形式にする必要があって、更にパーマネントリンクを持っている場合全ページに対して互換性をもたせる必要がある。
...
2タグ
もしもjQueryでクラスっぽく書くなら
(※この記事はJavaScript Advent Calendar 2011 (フレームワークコース) : ATNDの15日目の記事です) jQueryとクラスベースはうまく混ぜるのがむつかしいけど、こんな感じにすれば割とクラスっぽく書けると思う。 (function () { var $ = jQuery.sub(); jQuery.klass = jQuery.klass || {}; jQuery.klass.myKlass = $; var klassVar = ‘hoge’; $.fn.myMethod = function () { alert(klassVar); }; })(); (function () { var $ = jQuery.klass.myKlass.sub(); ...
1タグ
「コードを後ろまで読まないと処理内容が確定しない」問題
JSは無名関数伸びだし方にいくつかあってよくあるのが(function () {})()だけど、この方法だとコードを最後まで読まないと処理内容が確定しないという問題がある。
(function () {
/* この時点では処理内容は未確定 */
})();// ここまで読んでようやく実行されることが確定する
基本的には「(function」で始まってれば大抵「})();」で終わるのでそこまで問題じゃないけど、こういうコードだと結構困る。
var hoge = (function () {
/* 最期まで読まないとfunction objectをhogeに保持したいのか、無名関数を実行した結果をhogeに保持したいのかわからない */
})();
この点、new function () {}は最初の「new...
1タグ
プログラムという奇跡
プログラムを奇跡と考えるとSEは司祭でPGは僧侶でコーディングは呪文詠唱でプログラミングは神降ろしみたいな感じ。
大規模な奇跡を起こそうとすると数千人規模の司祭と僧侶が何ヶ月も呪文詠唱を行い続けてようやく発動する。
そうなると呪文詠唱も複雑になり失敗する危険も高くなる。
呪文詠唱に失敗した場合、発動しないだけならいいけど、間違った形で発動してしまい本来呼んではならない神が降りてくることもある。
また、基本的に降ろせる神は司祭の力量に依存するけど、力量が足りない場合生贄が必要になる場合もあるしそれでも望んだ神が降ろせるとは限らない。
—-
「神に魅入られた僧侶」であればたった一人で何十人規模の司祭、僧侶が数ヶ月かかる呪文詠唱を短時間でこなることも可能。
そういう僧侶は常に神を身にまとい、神を降ろし続けることですごい速度で力量を上げ続ける。
2タグ
jQueryはそろそろ実装と仕様を分離すべきじゃないか
jQueryがでかすぎて小分け版のjQuipが出たり、スマホ向けのZepto.jsが出たりしてるけど、そろそろjQueryも仕様と実装を分離して、素のjQueryとそれ以外を分ける方向に進んだらいいんじゃないか。
このへんPythonはうまくやっててCPython、Jython、IronPython、PyPyって感じで上手く分かれてる(ように見える)
jQueryも今のJS実装はCjQuery的な名前にして「jQuery」はテスト群とドキュメントの名前にすれば、他のjQuery実装も並立しやすくなると思う。
各種実装は「*jQuery」的な名前にして、「jQueryテストカバー率nn%でxx環境向け」ッテ感じの表記にするか、CCっぽく「xx APIセットサポート」みたいな表記にすればわかりやすくていいと思う。
CC的な表記であればPluginも「xx...
2タグ
「もし"use strict"が複数のモードをサポートしたら」
perlにはuse Strictに引数渡すことができて、それによって幾つかのモードを切り替えることができる。
もしJSでも同じようなことができるならこんなことができたらいいなというのを思いつきで書いてみた。
—-
・Automatic Semicolon Insertion禁止
JSは末尾の;を省略しても自動的に補ってくれる機能があるけど、これを禁止にして「文法上必要な末尾の;が省略されている場合構文エラー」モードを付けたい。
—-
・変数の書き換え禁止(全部定数モード)
varの代わりにconst使えばいいけど、functionの引数とかも全部constにしたい。objectのpropertyを書き換え禁止にするかどうかは微妙だけど、「propertyも書き換え禁止モード」があってもいいかも(全部freeze状態)
—-
...
2タグ
JSでラベルがサポートされ続けなければならない理由
あまり知られてないし、実際殆ど使われてないけど、JSにはこんな感じで使うラベル構文がある。
hoge:
for (;;) {
while (1) { break hoge; };
};
使われてない理由は色いろあると思うけど、functionの中から外に飛べないのでイテレータとの相性がわるいというのもあって、これがなんとかなれば多少は使われるのかなーという感じ。
ただ、それでもこの言語仕様はJSの実装上非常に重要な構文で、これがないとsyntax errorになるコードは結構多いはず。
具体的には以下のようなコードがsyntax errorにならないのはhttp:がラベルと解釈されてその後の//がコメントの開始と解釈されてるから。
http://example.com/
if (true) { alert(1); };
...
11月 2011
1件の投稿
5タグ
フリック用JSまとめ
flipsnap.js
http://webtech-walker.com/archive/2011/03/28205254.html
iScrollの切り出し版。Androidでちょっと動きが微妙(指の動きに追従しない)
コード短くて読みやすい。-webkit-transform3dで実装。brunchにwebkit以外の実装版もある。
イベントの範囲が対象要素のみなので使いやすい。
Androidに追従するバージョン作ったけど、他のライブラリのほうがなめらかかも。
http://jsdo.it/kyo_ago/8zAd
iScroll
http://cubiq.org/iscroll-4
超多機能。Androidでdemoが動かなかった。
でかすぎてコード読む気せず。
イベントを貼る範囲がでかいの注意(inner scroll実装してるから)
...
10月 2011
8件の投稿
2タグ
jQueryのliveやdelegateは実際何をやってるのか
jQueryにはイベント制御のAPIとして、clickやmouseoverの元になるbindの他に、同じような呼び出し方のliveやdelegateが提供されている。
bindはDOM APIで提供されているaddEventListenerのwrapperだが、liveは以下のような実装になっている。
1. 第一引数のイベント名でdocument objectにlive用のイベントハンドラーをbindする
2. 1で設定したイベントハンドラー内でdocument object内に存在する要素上で発生したイベントを全てキャッチする
・イベントの発生元要素がbind時に設定されたセレクタに一致する場合、第二引数に指定されたユーザーのイベントハンドラーを呼び出す
...
1タグ
革の札入れの作り方
カードや小銭入れのついていない、札だけを入れる薄い財布が欲しかったので自作した。
外革
縦9cm*横18.5cmの薄くてある程度硬い革。
ハンズの素材売り場で300円だった。
ある程度大きくないと、奥まで札がいれにくいので注意。
札に対して二周りくらい大くする。
真ん中に折り目をつけて、薄くするためにカッターで削る。
毛羽立ちを抑える為にトコフィニッシュ塗ったけど、使っていけば毛羽立ちはなくなっていくのでいらなかったかも。
内革
横は上6.5cm、下5.3cmの台形*縦8cmの薄くて柔らかい革。
ハンズの素材売り場で300円だった。
基本的に札とほぼ同じサイズでOK。
一度真ん中を切って再度縫い直すと折り目がつかなくて薄くできる。
その時両面を交互に縫うと、手間がかかるけど革がまっすぐになる。...
1タグ
自分のコーディングルールとその理由
・横80列で折り返す。
普段80列で開発してるわけじゃないけど、横に長いコードも見にくいので。
・1funtionは30行にする。
これも列指定と同じ意味で。
数字自体はそこまで意味がないけど、長いコードはそれ自体問題がある可能性が高い。
・1ファイルは200~300行
「JSを1ファイルに200行以上書くと人間は死ぬ」と言われてるけど、実際はもうちょっと多くても大丈夫。
・インデントは8タブ
タブを使う理由は「タブはスペースに一括置換できるけど、スペースはタブに一括置換できない」から。
なので、コード中にコードインデント以外でハードタブは記述しない(文字列内に記述する時は¥tで記述する)
タブの表示数はエディタ毎の設定次第だけど、インデントの深いコードが書きにくくなるので8タブで書く。...
1タグ
イベントの間引き方
JSでイベント関連の実装をする場合、頻繁に発生するイベントを間引きたくなる事がある。
例えばwindow.scrollやwindos.resize、mouseover何かは状況によってrequestAnimationFrameを超える頻度で発生するので、特に重い処理を実行する場合などはある程度イベントを無視しないとUIがロックされてしまう。
また、スマホや古いバージョンのブラウザなんかも処理速度の問題で間引く必要が出てくる。
こう言う処理は一般にthrottleとかdebounceと呼ばれてて(一応それぞれ違う動作を指す)検索すると公開された実装があるけど、とりあえずjQuery.throttleを使えばいい感じにしてくれる。
ただ、jQuery使ってないとか、ちょっと使いたいだけとかいうならこんな感じのコードでもいける。
window.onscroll = function...
読むべき本の仕分け方
書評サイトや技術系のサイトを見てるとよく本が紹介されてて買うかどうか迷うことがあるけど、こういう方法で最近は衝動買いがなくなった。
読みたいと思った本は一旦全部読書管理系サイトに登録する。
その時は過去に登録済みの場合、タグに「1」をつける。
すでに「1」がついている本は「1」を消して「2」に。同じ様に「過去に読みたいと思った回数」をタグ付して行く。
積ん読がなくなって次の本が欲しくなったら、タグの数字が大きい本から読んでいく。
信頼できる場所で紹介されてるとか、特に読みたい話の本とかは一気に2加算してもいいかもしれない。
この方法なら勢いで本を買うこともないし、いい本を見つけても我慢をする必要がない(いい本なら自然と数字が上がっていく)
1タグ
JSはいつ大規模開発の方向に向かうのか
JSはこれまで他の言語に比べて少人数で開発することが多かった。
それは開発者自体が少なかったこともあるけど、開発する人間が少なかったためにライブラリやフレームワークに関して大きな変更を行いやすかったこともあるとおもう。
ライブラリやフレームワークに関して大きな変更が行えれば、同じ機能に対して必要なコード量が少なくなるので一人が実装出来る機能数は多くなる。
もちろんflash等の補完出来る技術が多かったので、必要とされる機能が少なかったというのもあると思うけど。
個人個人が作っていたツールをprototype.jsがまとめ、jQueryがDOMベースのコーディングスタイルを生み出し、CoffeeScriptが別言語を生み出した。
それぞれ要求される機能が個人で把握できるコード量を超えるたび、新しいフレームワークで個人が把握できるコード量までコードが圧縮されているんじゃないか。...
1タグ
WebSocketはWeb以外の使用を想定した仕様なんじゃないか
今Web上でWebSocketを使おうとすると、サポートブラウザやサポートバージョンで結構大変になる。
もちろんsocket.io使えばその辺あまり考えなくていいけど、それは本当にWebSocketを使ってるのかな?
技術的には同期通信だけど実際にはflashのsocketを使ってるだけで、WebSocketを使ってるだけなんじゃないか。
個人的にWebSocketは名前に反してWeb上より物理的にもっと狭い、家庭内LANとかでの使用を想定された規格なんじゃないかと思う。
例えば、TVにWebサーバをいれてWebSocketでの通信を受け付けられるようにすれば、リモコンは既存のスマホで機能的には十分対応出来る。
もちろん、エアコンも冷蔵庫もレンジもなんでもいける。...
3タグ
Web UIの今後はこうなっていくかもしれない
おそらく、ここから1年くらいでWebのUIはアプリに近いのもになって行くんじゃないか。
そこではSVGは重要な位置を占める気がする。
今のところSVGは結構色もの扱いであまり重要なものとみなされてないけど、もしUIがアプリに近くなるなら現在のHTMLのような論理構造は意味がなくなる。
かと言ってcanvasのようなラスタ形式では自由すぎて柔軟性がない。
レイアウトの大枠をSVGで作ってその中にHTMLやcanvasを組み込む形が適しているんじゃないか。
この形式であればこれまでのWebの技術で十分対応可能なので、あとはブラウザのサポート次第で一気に実現可能になる。
そして、今から2、3年後にはWebの3D化が起こるんじゃないか。
PC上でのWebの3Dは2000年くらいにも流行って、その時は失敗したけど、次にくるのはモバイル上での3Dがくるとおもう。...
7月 2011
3件の投稿
MSで配布してるVirtualPC Imageのパスワード
admin : P@ssword1
USキーボードになってるかもしれないので注意(US配列の場合@はShift+2)
イメージのダウンロードはここから
http://www.microsoft.com/download/en/details.aspx?id=11575
設定からネットワーク機能が無効になってる場合もあるので注意
統合機能を有効にする場合、さきにVirtualPC上でホスト環境と同じID,Passのアカウントを作成する必要があるので注意。
(作成前に統合機能を有効にしてログインできなくなったらVirtualPCのメニューから無効にすればOK)
CloudFrontはデータを削除できる
Amazonの提供しているCloudFront(CDN)の初期設定は ファイルアクセス後1日間キャッシュが効くためその間の更新は反映されません。 (設定により最短1時間更新まで短くできます) ただ、これに関しては1年くらい前に削除用のAPIが提供されて MacであればCybarDuck、WinであればCloudBerryで削除できるようになっています。 (CloudBerryでは実際に削除を確認。CybarDuckは公式サイトには書いてあるけど実際は未確認) 一応以下のような制限があります。 * 一月あたり1000回以上は$0.005/回(1万回アクセスして5千円位) * 削除APIアクセス後実際反映されるまでに10分程度かかる * CloudBerryの制限かもしれませんが、10分間に3回以上削除APIを呼び出すと4回以降がエラー (同時に削除命令を走らせられるのが3命令まで?)...
オフィス周りで気をつけること
・電源ケーブルを結ばない 結んだところが発熱し、周囲の皮膜が破れて発火する危険があります。 ACアダプタのコードが長くて邪魔な方はこのへんの商品とか検討してみてください。 http://www.amazon.co.jp/exec/obidos/ASIN/B001NJFZES/ http://www.amazon.co.jp/exec/obidos/ASIN/B000AWHT3E/ http://www.amazon.co.jp/exec/obidos/ASIN/B001QCXQWU/ http://www.amazon.co.jp/exec/obidos/ASIN/B001QCXQX4/ 結んである電源ケーブルを見つけた場合、他人のものであっても解いておいてください。 (マウスとかキーボードのケーブルはOKです) ・ACアダプタを重ねない...
5月 2011
2件の投稿
ちょっと気をつけるだけでJSが多少ましになること
・URL dispacherを使う。 (コードの使用範囲を明示) ・何でもJSでやろうとしない。 (JSはDOMや文字列の構築に弱い) ・class名に値を保持しない。 (classは使いにくい。input[type=”hidden”][name=”“]の方がいい) ・URL等の一致にはregexpだけじゃなく、stringでも受け取れるようにする。 (エスケープがめんどくさい) ・JSONは[]にリテラルを格納しない。 (変更に弱くなる。{}を入れてその中に入れる)
良いJSerが気をつけること
・DOMに展開されたhtmlのインデントも気にする ・JS用の要素、class、IDは最低限に抑える ・JS切ってても動作する ・実行速度より表示速度を優先する ・自分の責任外の部分が仕様から外れていても危険な動作に陥らない ・サーバへのリクエストをDOMの構造から構築する ・effect中もユーザの操作を考慮する ・出来るだけ多くの環境で動作することを考える ・DOMの構築前、構築中、構築後、画像の読み込み前、読み込み後を意識して処理を行う ・DOM展開後もvalidであることを意識する
10月 2010
1件の投稿
Paypal新少額決済サービスMicropaymentsの衝撃とは | Over the... →
7月 2010
2件の投稿
jQuery.iff
http://benalman.com/code/javascript/jquery/jquery.ba-iff.js /*! * iff - v0.2 - 6/3/2009 * http://benalman.com/projects/jquery-iff-plugin/ * * Copyright (c) 2009 "Cowboy" Ben Alman * Licensed under the MIT license * http://benalman.com/about/license/ */ (function($){ '$:nomunge'; // Used by YUI compressor. $.fn.iff = function( test ) { var elems = !test || $.isFunction( test ) ...
3月 2010
1件の投稿
jquery.tap
$.fn.tap = function (func) { $.ifFunction(func) ? func.call(this, this) : console.debug(this) return this; }; $(‘div’).find(‘a’).tap(function () { console.debug(this[0]); });
1月 2010
1件の投稿
Amazon RDSの-cに指定する値
db.m1.small, db.m1.large, db.m1.xlarge, db.m2.2xlarge, db.m2.4xlarge
12月 2009
3件の投稿
ドキュメント内を検索する
window.find(‘str’)
// ドキュメント内の検索(Fxでスクロール位置を変更する)
ブラウザの読み込みを中止する
if(navigator.appName == “Microsoft Internet Explorer”) { window.document.execCommand(‘Stop’); } else { window.stop(); }
EC2インストール後にすること
#環境変数系(instance_nameは変更してください) echo ‘instance_name’ > /etc/instance_name echo ‘ export EC2_ACCOUNT_KEY=nnnn-nnnn-nnnn export EC2_AMI_BUCKET=ami-backet_name export EC2_LOG_BUCKET=log-backet_name export INSTANCE_NAME=`cat /etc/instance_name` export JAVA_HOME=/usr/java/default export PATH=$PATH:$JAVA_HOME/bin export...
11月 2009
4件の投稿
IEでの解決方法はサブミットの瞬間だけページ全体の charset の指定を入れ替えると言う方法です。
form の Submit は使わず...
– JavaScript で複数の文字コードをform から送信する方法
JSDeferredの読み方(というより印刷の仕方)
ここからが本題です。...
– JSDeferredを読む (Kanasansoft Web Lab.)
アプリケーション間でコピーペーストを実現しようとすると、WebアプリからJavaScriptでクリップボードにアクセスすることができない(IEではできるようだがデ...
– jQuery用 Live Clipboard プラグイン - snippets from shinichitomita’s journal
Google Apps Script を試す - snippets from... →
10月 2009
1件の投稿
[Shift]+[Ctrl]キーを先に押すためIMEとATOKが切り替わっていたようです。
...
– 日本語変換ソフト「ATOK」に切り替えました! | Hibi日記