2005年 11月 30日

prototype.js

each 使えないから最新の RC を試したんだけど、思ったより使えない。Event.observe って、もうちょっとクロスブラウザに考慮していると思ってた。

軽くテストスクリプト書いてごちゃごちゃやってた script.aculo.us の effects.js を使ってみたかっただけとかなんとか。

Event.observe で function (e) {} とか渡しても IE では e にイベントオブジェクトが入らない。

_observeAndCache: function(element, name, observer, useCapture) {
var eEvent = function () {
this.type            = window.event.type;
this.target          = window.event.srcElement;
this.currentTarget   = this;
this.clientX         = window.event.clientX;
this.clientY         = window.event.clientY;
this.pageX           = document.body.scrollLeft + window.event.clientX;
this.pageY           = document.body.scrollTop + window.event.clientY;
this.shiftKey        = window.event.shiftKey;
this.altKey          = window.event.altKey;
this.ctrlKey         = window.event.ctrlKey;
this.which           = window.event.keyCode;
this.stopPropagation = function() { window.event.cancelBubble = true }
this.preventDefault  = function() { window.event.returnValue = false }
}
if (!this.observers) this.observers = [];
if (element.addEventListener) {
this.observers.push([element, name, observer, useCapture]);
element.addEventListener(name, observer, useCapture);
} else if (element.attachEvent) {
this.observers.push([element, name, observer, useCapture]);
element.attachEvent('on' + name, function () {
observer(new eEvent());
});
}
},

みたいに prototype.js を直接書き変えて使ってみた。けど、なんか楽しくない。

なんかわくわくしない。つまらない。

ちなみに prototype.js における each の break, continue の実装は、あらかじめ $break$continue にオブジェクトを代入しておいて、それを投げるというものだった。なるほど文字列投げるよりこっちのほうがいいな。

[1, 2, 3, 4, 2, 6].collect(function (v, i) {
if (v == 2) throw $continue;
if (i > 4) throw $break;
return v;
}); //=> [1, 3, 4]

なんで _each を定義させるんだろうと思っていたけどこれのためだね。_eachEnumerable.each からのみ呼び出される。Enumerable の各メソッドは each を使用する。

each_with_index 相当がねぇよとか思ったけど、each 自体がその役目を負ってる。[1].each(function (value, index) {}) とかける。

あー Event.element とか使うのか。

prototype.js .inspect $H()

$H()inspect() の組み合わせが微妙に便利だ。普通の object って toString() しても [object Object] とかになって中身がわからんから、$H(obj).inspect() とかやると中身が見れて便利。

Object.prototype.p = function () {
var t = Object.inspect(this);
if (t == "[object Object]")
t = $H(this).inspect().replace(/^#<Hash/, "#<Object");
if (navigator.userAgent.match(/Firefox/)) {
window.dump(t + "\n");
} else {
window.status = t;
}
return this;
};
({aa:"aabb"}).p().aa.p().replace(/^a/, "b").p();
//=> #<Object:{'aa': 'aa'}>
//   'aabb'
//   'babb'
2005年 11月 29日

オキサーイド!

亀田人気 テレビの常識覆す

代ゼミネタだと思った。

2005年 11月 28日

UI -> 機能

先に UI 作ったほうがやる気が出る。さきに機能を実装すると UI 作るのが面倒くさくなって UI がおろそかになる。そして UI が悪いものはいくら内部実装がかっこよくても使わない。

2005年 11月 27日

NULL::colors いろいろアップデート

NULL::colors2 飽きるまでいぢる。

とりあえず、クッキーからの自動復帰を適当に実装。無駄に JSON 使ってる。このへん実装しなおすかもしれない。

んで URLハッシュからの復帰を実装。TCS のターゲット色と、プレビューエリアの4箇所8色 (前景・背景) を保存する。Result をクリックした後でてくる Static Link にリンクを貼ってある。要 UI 改良。ハッシュから復帰すると問答無用で Cookie がリセットされるのは挙動としてどうなんだ。

あとは、気に入った配色ができたら保存して、サムネイル付で読み込みできるようなのが欲しい。ついでに、コレ!ってのができたらサーバー上に保存しておくとか、そういうの。

Cookie ってどれぐらいの大きさまでいけるのかなぁ。

クッキーの最大サイズ制限について

NULL::colors 色セットの保存

NULL::colors2 飽きるまでいぢる。

でもってプレビューつきセーブ・ロードを実装。スロット9箇所。クッキーサイズが 2k ぐらいになるので調度よさげ。

Firefox 1.5 で outline が使えるようになったので使ってみた。既に Firefox 1.0.7 とか過去のもの扱い。だんだん俺の俺による俺のためのカラージェネレータに。最初はてきとーに作って放置する気だったけど微妙に自分でも使おうという気になってきた。

Result で明度差・色差と、WCAG1.0 による判定を表示するように。

上から3番目がコンテンツ本文なので、それが false でなければ気にしなくてもいいと思う。

2005年 11月 26日

NULL::colors2 D&D

NULL::colors2 をさらにいぢくる。ドラックアンドドロップで色の変更できるようにしてみたり。やばい楽しい。でも気がつくとクロスブラウザのこと考えて鬱になる。「ああーこのコード IE じゃ動かないな」「Opera はちゃんと解釈するんだろうか」「opacity とか Gecko でしか使えないじゃん」っていう自動的思考。微妙に病的。そして考えてから、Firefox で動けばいいんだった!と気づいて晴れやかな気分に。やりたい放題というのはすばらしい。

カラーコードがコピペできんな。どうしよ。

プレビューの色をクッキーに保存させたい (さらに URL からも復元したい) んだけど、いまいちうまいやりたかがない。

前景色と背景色を一部決めうちにしているんだけど、なんかいい方法ないかなぁ。D&D したときスムーズにやりたいからダイアログとかは嫌だしなぁ。

2005年 11月 25日

NULL::colors

NULL::colors の外観

NULL::colors Firefox Only. カラージェネレータ

こういうツールは IE に対応させても嬉しくないので IE にはハナから対応させる気がありません。(IE コンパチじゃない、すなわちオリジナルの Triangle Color Selector を微妙に改良したのを使用) Opera には対応させようと思ったんだけど、なんかいろんな処理がいちいち4回走ってうざいのでやめた。

色の計算式はソレっぽくなるのを試行錯誤してみた。これから変わるかもしれない。処理自体はごく単純。

むしろ俺が色の計算式を変えて遊ぶのが楽しい。だからユーザが動的に計算式変えられるようにしたら面白いのかもしれない。とりあえずめんどっちいのでアイデアだけメモ。

クリック&ドラッグがうまくいかなかったのは preventDefault() をやってなかったからだった。

ロード直後の真っ白なパレットに、TCS をクリックすることにより色がドバっと発生する、この瞬間が萌えませんか? お前だけだよってか。

dump でコンソール流れまくります。

NULL::colors2

NULL::colors の外観

セクション分ける必要があるのか微妙。NULL::colors2

もう少し実用的かつ美しくしてみる。カラフルなのは楽しい。

表示されているパレット 6x3 のうち、プレビューに使われるのは一番左の2列だけです。

今のアルゴリズムだと彩度低くて明度高いとイマイチ。

路上喫煙に罰則 川崎市

路上喫煙に罰則 川崎市

登戸もやってくれ。むしろ全駅でやってくれ。っていうか全国でやってくれ。