javascript

幅優先探索で迷路を解く

人材獲得作戦・4 試験問題ほか: 人生を書き換える者すらいた。 幅優先探索で迷路の最短経路を探す 探索方法ピンときませんでしたw いいわけはしませんwww はぁ、、、、 というわけで、家に積まれっぱなしだった本を見ながら幅優先探索を勉強。 ダイクストラ…

CanvasのglobalCompositeOperation

前回のパーフェクトシャッフルは、表示を奇麗にする為にopacityを0.03にして透過を強くし、その副作用として色が薄くなってしまったのを強調する為にgetImageDataを使ってピクセル毎の色を調整していたわけだけども、MDCのサイトを見てると、Canvasのコンテ…

パーフェクトシャッフル

http://d.hatena.ne.jp/nishiohirokazu/20100107/1262835414 ↑が奇麗すぎるので、できないかと思ってやってみた。が、どうしても円形にする方法がわからない。 しかたがないので5角形で止まっているところまで。実は時系列的には上の記事で書いたベジェが後…

CanvasでquadraticCurveToしてみる。

正多角形の表示とその頂点nと頂点n+1をつないでできる2次ベジェ曲線を書く。紫の線が多角形。緑が2次ベジェ曲線。赤が図形中心とベジェ曲線の制御点を結ぶ線分。以下、ソース。 var ceil = Math.ceil; var round = Math.round; var cos = Math.cos; var sin …

時刻取得

「javascript 時計」で検索するといろんな所でソース付きで紹介されているけど、どれもsetIntervalかsetTimeoutで1000ms毎に実行するタイプのもの。この場合最大999msずれている可能性もあるのだけど、まぁjavascriptで表示するレベルのだからしょうがないの…

version3で変わったこと

GoogleMapsAPI version3というのがあるらしい。 http://sites.google.com/site/gmapsapi3/developers によると、 2009年 5月 27日、Google I/O イベントにてGoogle Maps API JavaScript版のversion 3が発表されました。 Google Maps API version3は、既にあ…

フラクタルもどき

マンデルブローとかジュリアとか名前だけならなんとでも言えますw ということでcanvasを使ってフラクタルもどきを作ってみた。行く行くはマンデルブローを書くんだ!!! ちょっとパラメータを変えただけでいろんな図形が書けるのでおもしろい。 ↓とりあえず、…

Canvasでグラデーション2

中心からグラデしてみた こんなのできたw

canvasでグラデーションしてみる

とりあえず現時点でできてるもの。 Core2Duo2.4GHz メモリ2GBのMacBook上のFirefox3で6秒弱 <html> <body> <canvas id="color" width="350" height="350"></canvas> <script type="text/javascript"> var canvas = document.getElementById('color'); var ctx = canvas.getContext('2d'); var canvas_w = canvas.width; var canvas_h = canvas.height…</body></html>

ラングトンの蟻やってみた。

http://fn7.s194.xrea.com/ant.html升目の上を クリックして蟻の位置を決定して、runボタンで開始。 マシンの性能が許す限り蟻を増やしても良い。いくつかの蟻を設定して一気に開始というのもできる。とはいえ、うちのマシンでもせいぜい5匹程度かのぅ。 蟻…

shadowbox-3.0bでスライドショーを作る時のメモ

画像ファイルへのリンクには、rel="shadowbox[name]"のように"[]"の括弧内にグループ化の記述を行う Shadowbox.init()のオプションで、slideshowDelayを0以上の数値で指定する いじょ。リンクのリストはスクリプトで生成すると楽でよいな。 for i in *.jpg d…

javascriptクロージャでfizzbuzz

firebugはいってなければconsole.logがundefinedって言われるかもな。 IEとか。 var create_fizzbuzz = fizzbuzz = function(a,b){ var n = 1; return function(){ var str = ''; if(n % a == 0){str = 'fizz'} if(n % b == 0){str += 'buzz'} str = str || …

Shadowboxいいな

Remedieで使われているLightBoxのような表示は、Shadowboxというライブラリらしい。複数のライブラリに対応したLightboxスクリプト -Shadowbox.js1年前からあったみたい。 Remedieがjquery使ってるからjqueryでしか使えんのかなと思ってたら、さにあらず。 p…

javascriptで似非Struct

var Struct = function(){ return this.initialize.apply(this,arguments); }; Struct.prototype.initialize = function(){ var keys = arguments; return function(){ for(var i=0;i

1秒ごとに一ずつ増えた値を出力する方法

素人がJavaScriptを勉強するブログ さんとこ // prototype.jsのbindのようなやつ function bind(func,obj,args){ return function(){ func.apply(obj,args) }; } (function(i,j,d){ console.log(i++); i < j && setTimeout(bind(arguments.callee,null,[i]),…

prototype.jsのイベント処理

var obj = new TheClass(); var btn = new Element('button'); btn.innerHTML = '押してね♪' btn.observe('click',function(){ // objへthisでアクセス可能な関数が記述できる }.bind(obj)) bind(obj)と、最後に書くだけでイベントハンドラ内のthis変数を通…

googlemap

最近仕事でgooglemapを使うことになったのだが、 逆ジオコーディングできないのが残念だ。 alpsmapの方では標高取得APIの返り値が実は逆ジオコーディングされていたり、 yahooの地図情報のHTMLを解析して取り出したり、するので、 そこから住所情報を抜きと…

CSVクラス

var CSV = function(src){ this.src = src; this.for_each = function(func){ var tmp = ''; this.src.replace(/^(.+)$/mg,function(m,line){ // ダブルクォートの個数が奇数なら、改行が含まれた値が存在するので、次の行を繋ぐ tmp += line+"\n"; var m = …

Youtubeビューア作ってみた。

http://fn7.s194.xrea.com/yv.html 使い方は このHTMLをローカルに保存する テキストエリアを空にしてにYoutubeのURLを書き込む setボタンを押す 見たい番号を押す 手抜き実装の為、動画は一つづつしか見れません。 自由に改変してくださって構いません。You…

似非CPUモニタ

http://fn7.s194.xrea.com/monitor.html インターバルを短くすれば、モニタそれ自身の負荷で グラフがえらいことになります

最近お気にいりの再帰

function TreeWalker(root){ this.root = root; this.walk = function(func){ (function(node){ if(node.nodeType != 1){return} func.apply(node); var ch = node.childNodes; var len = ch.length; (function(i,fn){ if(len <= i){return} fn(ch[i]); argu…

get_elements_by_attribute

function get_elements_by_attribute(attr_name,attr_value){ var r = []; (function(arr,elem){ var ch_nodes = elem.childNodes; var len = ch_nodes.length; for(var i=0;i

揺れるwindow

for(var i=0;i<100;i++){ var pl = ((Math.random() * 10) & 1) > 0 ? 1 : -1; var pt = ((Math.random() * 10) & 1) > 0 ? 1 : -1; var l = Math.random() * 10 * pl; var t = Math.random() * 10 * pt; setTimeout((function(l,t){ return function(){wind…

ループ

というわけで、先日覚えたarguments.calleeで時間差ループ function loop(func,interval){ (function(){ var res = func.apply({last:'last'}); if(res == 'last'){ return; }else{ setTimeout(arguments.callee,interval) } })() } setIntervalだなw 引数に…

というわけで、作ってみたグリモン

Mac用の通知ソフトGrowl風にtwitterのtimelineを表示するだけのグリモン。 どのページを開いていても動作するようになっているので、複数のタブを開いている場合、 CPUが大変熱くなるかもしれませんなw 一応、iframeでは動かないようにチェックを入れた。 め…

そうそう日付に関して

Javascriptの時刻をCGIを通してPerlに渡す時は少数点以下がいらないから Math.floor(new Date().getTime()/1000)か parseInt(new Date().getTime()/1000)をした方が良い。

Dateちょっと便利に拡張

Date.prototype.format = function(){ function z2d(n){//名前適当。1ケタの場合 10の位に 0 を表示 return (n < 10) ? '0'+n : n; } var y = (this.getYear() < 2000 ? this.getYear() + 1900 : this.getYear()); var m = z2d(this.getMonth()+1); var d = …

prototype.js 万歳

Domでごにょごにょする場合はあまり気にならないけど、 XMLHttpRequestのonReadyStateChangeのコールバック関数で readyStateの値とstatusの値をちぇっくとかめんどくさい。 Ajax使うならprototype.jsは便利。prototype.js万歳!!

不具合の原因

今日納品先から連絡があって、バグが発見された。 原因は、配列へのアクセス for(var i=0;i

人気の写真100選

Flickrの人気の写真を100枚取得して見る(こちら)。 prototype.jsとscriptaculousを使用。他は自作。 無駄にcanvas要素を使用した(笑)