JavaScript

phantomjs+qunitテストランナー

phantomjsからqunit実行したいなと思ったらphantomjsのexampleにあった。 https://github.com/ariya/phantomjs/blob/master/examples/run-qunit.jsこれだとテスト数、成功数、失敗数しか出力されないのでもうすこし詳細がでるのがほしいなと思ってこのソース…

qCanverのソース上げた

この前書いたライブラリ http://d.hatena.ne.jp/daisun/20110723/1311405757ソースをgithubに上げた。 https://github.com/daisun/qcanverテストも未完成なのでたぶん普通にエラーになる箇所があるし コードも使われてないようなのが混ざっている気がする。…

手前味噌。Canvasライブラリ「qCanver」作成中。

もろきゅう。半年以上前からこつこつと勉強がてら作っていCanvasを扱うためのライブラリ。 ライブラリの名前は、jQueryっぽいくCanvasを文字っててちょっとトンチがきいてそうな名前を考えていて、息子がきゅうり好きなのもあって「qCanver」(これだとキュ…

Canvasの幅と高さ

Canvasはwidthとheight属性を指定しないと、widthが300pxでheightが150pxになる。 じゃあ、CSSでwidthとheightしたらどうなるんだろうか?と思って指定してみると、描画できるcanvas自体はwidth属性とheight属性でしたいした領域になる。 それでCSSで指定し…

あの問題のやつをJSでかくと

久しぶりに書いとく。昨日でてきたこれを ((lambda (n) ((lambda (fact) (fact fact n)) (lambda (ft k) (if (= k 1) 1 (* k (ft ft (- k 1))))))) 10) JavaScriptにすると。 (function (n) { return (function (fact) { return fact(fact, n); })(function …

defer属性の挙動

久しぶりに更新。defer属性の挙動について、ふと気になったので調べる。defer属性はのっぺりひらたく言うと、スクリプトの実行を延期させるようにすること。 最近はパフォーマンスを改善するのにも使われるようです。 サイ本いわく対応しているのはIEのみと…

Workerをちょっとだけさわった。

ちょっとWorkerを使ってみようかと思って試してみた。 使い方 var worker = new Worker("worker.js"); みたいにする。 workerにお仕事してもらう内容は、worker.jsって別ファイルに記述する。worker.js onmessage = function (evt) { var data = evt.data //…

Canvasで円グラフ。

そもそも扇形が作りたかったのは、円グラフを作りたくて。 さっき作ったsector()を使って円グラフっぽくはなった。 設定したパーセントに応じて扇形を作って円になるように 並べただけなんだけど。 var canvas = d.getElementById("canvas"); var ctx = canv…

Canvasで扇形を書く関数sectorを作ってみた

Canvasをはじめて使ってみた。 そして、Math.sin()とMath.cos()も初めて使った。 function sector(ctx, x, y, radius, startAngle, endAngle) { var start = startAngle * Math.PI / 180; var end = endAngle * Math.PI / 180; ctx.arc(x, y, radius, start,…

関数を返す関数

今日はSICPの読書会が急遽中止になってしまった。 (メールに気づかないで途中までいいたw) せっかく早く帰ってきたので、先週自社でやってる方でやったやつのメモ。 ((hoge 1) 2) のように"(("ってなっているので見たときは???だったけど よく考えてみ…

すべて選択

よく、業務系なアプリにありがちだけど、一覧画面に各行の 先頭にチェックボックスがついてて、選択した行に対して 何かしらのアクションをする(削除とか)なんてのがある。 用途にもよるけど、だいたいそんな画面には「すべて選択」 とかってボタンがつい…

DOM関連のバグ

John Resigのブログに『The DOM is a Mess』ってタイトルで しゃべった時のスライドが公開されていて、 その中でgetElementByIdとかのバグがちょろっとのっていたのでメモ。英語に自信がまったくないので間違っているかも。 getElementById IEとOperaの古い…

じゃばすく

JavaScript(じゃばすくりぷと)を「じゃばすく」と呼ぶのを 耳にしますが、「じゃばすく」って呼び方微妙じゃね?って どうでもいい話。 ちなみに僕は、JS(じぇいえす)って呼ぶ派。JavaScriptの姉妹(?)のActionScript(あくしょんすくりぷと)は 「あ…

Rhinoを入れてみた

ちょっとRhinoについてみてみたら、Java6(1.6?)に組み込まれているらしい。 へー。 で、この記事を見ながらRhinoをいれてみた。 http://builder.japan.zdnet.com/sp/scripting-on-java-kickstart/story/0,3800084107,20366909,00.htm インストール手順 http:…

DOMで生成したinput要素のname属性がセットされない

DOMで生成したinput要素をgetElementsByNameでとろうとしたらとれない。 なんでじゃーって調べたらIE6のバグらしい。 じゃあ、IE7じゃどうだろうか?と思って確認してみた。 http://www.daisun-labs.org/test/input_name.html ↑IEでみてね。結果は、、、 <input>や…

Re: 第3回 SICP読書会

カノログ 第3回 SICP読書会 http://kanolog.jp/2008/07/3-sicp-ee80.html id:kanouk課長がこの前の読書会のことを書いていたので、 読書会ではこの辺を大雑把に説明してたので 手続きsqrtにあわせてJavaScriptで書き直してみた。ここはxを各functionに引数と…

配列とオブジェクトのコピー

配列は参照をわたしてるので、 var ary = [1, 2, 3]; var copyAry = ary; copyAry[0] = 0; とすると、aryの方も[0, 2, 3]となってしまう。 解決方法を考える。 var ary = [1, 2, 3]; var copyAry = []; for(var i = 0; i < ary.length; i++){ copyAry[i] = a…

ドット記法は遅い

ドット記法はでてくるとそのオブジェクトのプロパティを調べにいくから パフォーマンス的にいまいち遅いらしい。 言われてみれば、そらそうか。 var hoge = { piyo: { fuga: { foo: ["a", "b", "c"] } } }; var s = ""; for(var i = 0; i < hoge.piyo.fuga.f…

Document.prototypeってIEだと書けないのか

getElementsByTagNameにワイルドカードが使えることを知った。 これで正規表現とか渡したりできたらいいなとか思って、 getElementsByTagNameRegExpとgetElementsByNameRegExpを 作ってみた。 function getElementsByNameRegExp(regExp){ var elms = documen…

prototypeプロパティでチェーンはしていない。

一応、constructor、prototypeあたりの完結編。 もう、なに三部作かもわからないし、各エントリが起承転結なくバラバラと 終わっている。ぐだぐだな文章。 今回いろいろ調べているうちに、 プロトタイプチェーンがたどっていくプロトタイプとprototypeプロパ…

継承するとまた少しおもしろいことがわかってくる?

前のエントリにからんで、いろいろ試していたことをおまけ的に載せておく。 継承するときにprototype.constructorの参照を再設定する理由が わかった。 おさらいついでに継承なしで。 //construcotrはFunction、prototype.constructorはChild function Child…

constructorとprototype.constructorがわからなくなった

constructor(プロパティ)とprototype.constructor(プロパティ)は 別物だと思っていたけど、やっぱり同じ物だとおもいつつもやっぱり違うのか?と よくわからなくなってきた。(特に継承とかしようとした場合に) ので少し調べてみた。 (ちなみにSpiderM…

パスカルの三角形

パスカルの三角形が最近はやっているらしい。 身内の間で。厳密には約二名(課長と係長)の間で。 ことの発端は魔術師本に出てる問題。 先に答えを見てしまっているからだろうけど 考え方をまとめてみた。 パスカルの三角形とは 三角形の辺上の数はすべて1、…

Staticインポートって

先週Scalaをいじっていて、Javaのジェネリックに行き着いた。 ついでといってはなんだけど、Java5の新機能も確認してみている。(現在進行中) Staticインポートとは? Staticメンバーをインポートできる。 意外と地味? つかってみる import static java.la…

getElementById()でname属性が検索される?

getElementById()でname属性を検索してエレメントを取得できるという話を聞いた。 いや、絶対に推奨されている使い方ではないだろう。 そもそもIDはページ内でユニークだからgetElementById()はエレメントを返して、 複数設定できるname属性用にArrayオブジ…

for文になれるためにいろいろ試す

for文について PythonはJavaScriptのようなインデックスでループさせるような for文はなく、for in でしかない。 JavaScriptで書くと var array = new Array('A', 'B', 'C'); for(var i = 0; i < array.length; i++){ alert(i);//A B Cと出力される } ってい…

eval()は悪か?

文字列をJavaScriptコードとして実行するeval()。 とても便利だけど、考えもなしに使うと、セキュリティホールにもなりかねない。 だから安易に使うものじゃないと思う。 考えに考え抜いてもう使うしかないような切り札とすべき。 引数で渡された名前を持つ…

Google Gadgetを作ってみよー

今日は、JavaScript Day! と勝手に決め、前々から気になっていた Google Gadgetの記事が出ていたので触発された。 ちょっといじってみよ。 はじめに builderの『5分で学ぶGoogle Gadget開発』を 読む。ふむふむ。 作るのはxmlベース。Contentの中にJavaScrip…

thisについて考えてみる

thisを意外と何の気なしにつかってるからいろいろ実験。 var hoge = "Global hoge"; function Hoge(){ this.hoge = "hoge"; } Hoge.prototype.func = function(){alert(this.hoge);}; var a = new Hoge(); a.func(); 実行結果は『hoge』とダイアログがでる。…

いまさらXPathを使ってみた

いまさらながらですが、JavaScriptでXPathを使ってみた。 IE対応はしていないけど、手順としては document.createExpression()でxpath式を設定してXPathExpressionオブジェクトを取得 取得したXPathExpression.evaluate()を使ってXPathの評価結果のXPathResu…