restful_authentication

Rails 2.0 時代の認証プラグインってどんなのがあるんだろう?と思っていたら、restful_authentication というプラグインがあるようです。
名前の通り、REST に対応した認証を行ってくれるプラグインで、acts_as_authenticated からの乗り換えがオススメされています。

REST については不勉強なので、後で要勉強なのですが…
考え方としては、RESTful なアプリケーションでは、ログインという行為はセッションというリソースの操作にあたる、という事でしょうか。
他にも、検索は POST でやる事が多いけど、これも意味から考えると GET にするべきなの?とか、結構気になる点が多いです。
Ajax との絡みは、単なる画面遷移の問題なんだろうなぁ、と思うのですが。

確かオフィスに本があったと思うので、今日はあれを借りてきて、じっくり読んでみようかと思います。
restful_authentication については、その考え方を調べた後で試してみようかと。
自分用ブログツール、何度目かの作りなおしです。
ま、自分の書いたソースがひどいと思えるだけでも進歩だと思っておきます。
どうでもいいですが、「見えているだけで、君も成長しているという事だ…」というセリフ、漫画とかで死ぬほど見た気がしませんか?

何と言うか、生産性を上げるためにも、こういう基礎的な考え方をもっておかないとまずいなと感じています。
いんちき英語でも旅行はできるけど、商売はできないよ、みたいな?
例えは悪いですが、つまりプロっぽいコードを目指さないとな、という事。

人生なんて「あのときああしておけば」って事の連続ですが、特に勉強不足に関する後悔は、こと私のそれにおいて非常に多い気がします。
自己分析と、客観視。分かってはいるんですけど、ね。
プログラム | comments (66) | trackbacks (0)

AS3 でソフトシンセ

http://www.flashcodersbrighton.org/wordpress/?p=9

詳しくは上の記事(英語)を見てもらうとして、これはすごい!
Java やら C# やらで作ったものならありそうですが、ActionScript でこれだけできるんですね。
記事を読むと、やはり音を連続させる部分で苦労されたようです。

ライブラリはフリーで使えるようなので、簡単なソフトシンセを作る事もできそうです。
さすがに各種エフェクトをかけようとすると、厳しそうな気はしますが…

上のサウンド以外でも、今の ActionScript では任意のバイト列を生成する事ができるらしいので、やろうと思えば結構色々できるみたいです。
そうなると、AIR というのも(実行速度によっては)結構使えるのかもしれません。
プログラム | comments (273) | trackbacks (0)

lightbox 2.0 を rails で使う

今回、Rails のバージョンは 2.0 です。
lightbox について説明するのは面倒なので、公式サイトを見てください。
サンプルをちょこちょこいじれば、理解できると思います。

lightbox 公式サイト

で、これを Rails に組み込むときの手順について。

1.DL したファイルを配置する。
index.html と、いくつかのフォルダができると思います。
それらを、以下のように配置していきます。
index.html => 削除(ぉ
js フォルダ => lightbox.js 及び scriptaculous.js を public/javascripts 以下にコピー。
images フォルダ => 最低限、closelabel.gif と loading.gif を public/images 以下にコピー(使うなら他も、分からなければ全部)。
css フォルダ => 中身を適当な css にコピペするか、public/stylesheets 以下にコピー(混ざるので、後者がおすすめ)。

2.ファイルを読み込む
当たり前ですが、読み込まないと読まれないので。
先ほど追加した js や css に、適切にリンクを張りましょう。

3.lightbox.js を少し書き換える
65, 66 行目の images/ を『/』images/ に書き換え。
要は、スラッシュの追加です。
これにより、ディレクトリがどこだろうと public/images/ 以下のファイルを読んでくれます。

4.テスト
<a href="/images/test.jpg" rel="lightbox"><img src="/images/thumb.jpg"></a>
これで、正常に動くはずです(FireFox 2.0 及び IE7 で確認)。

1.X 系と比べて、かなり使いやすくなったと思います。
前に仕事で使った時は、(私は見てただけですが)色々めんどくさそうだったので。
後、JavaScript が無効な環境でも、単純にリンクとして機能する点も個人的にうれしいところです。
プログラム | comments (46) | trackbacks (0)

XML と XMLList

ActionScript には組み込みで XML クラスが存在します。
特徴は、要素をどんどん「.」でつないで取得できる事。
HTML が分かる人なら、ある要素の中にさらに別の要素が含まれるのは分かると思います。


<root>
<age>9</age>
<name>なのはさん</name>
<job>
<type>魔砲少女</type>
<company>一般協力者</company>
</job>
</root>


と、まあありがちなプロフィールを XML にしたとして。
ここから値を取ってきたい場合、 myXml に値が代入されているとして

var _type:String = String(myXml.job.type);

こんな感じ。キャストしてるのは念のため。
見てのとおり、一番上の要素は無視されます。

で、これの集合体が XMLList というオブジェクト。
集合体と言いましたが、正確には『最上位の要素以下に並列した複数の要素を持つ』という意味です。
上の例を変化させるとこんな形。


<root>
<person>
<age>9</age>
<name>なのはちゃん</name>
<job>
<type>魔砲少女</type>
<company>一般協力者</company>
</job>
</person>
<person>
<age>19</age>
<name>なのは様</name>
<job>
<type>管理局の白い魔王</type>
<company>時空管理局</company>
</job>
</person>
</root>


見てのとおり、最上位にあたる root 以下に複数の person 要素が存在しています。
こうした場合のクラスが XML の集合体である XMLList というわけ。
XMLList の要素数(ちなみに length() 『メソッド』で取得可能)が1つなら通常の XML クラスのようにアクセスできるのですが、複数ある場合配列のようにアクセスする事になります。

ここでひとつ注意点があります。

例えば、以下のようなケース。


<root>
<name>東方シリーズ</name>
<works>
<work>
<title>東方靈異伝 〜 Highly Responsive to Prayers</title>
</work>
<work>
<title>東方封魔録 〜 the Story of Eastern Wonderland</title>
</work>
</works>
</root>


めんどくさいので2つでやめにしますが、これの最上位以下は並列な要素ではないので、そのまま取得すると XML クラスです。
ですが、この XML が myXml に代入されているとして、このように値を取得すると話は別。

anotherXml:XML = myXml.works;

これはコンパイルは通る(ちなみに中身が何であろうと XML としてロード可能だったりします…)ものの、実行時にパースエラーになってしまいます。
理由は、 works という要素を最上位とすると、その下には並列に work 要素が並んでいるため。
この場合、XMLList として取得しない限りエラーになってしまいます。

と、いうわけで複数入りうる要素を取得する場合、必ず XMLList を使うべきなようです。
XML がパースできないと言われて、別のところを見て延々1時間は悩んだのですが…
Flash のコンパイラはエラーメッセージが少し不親切だと思います。
Rails が親切すぎるとも言いますが。
プログラム | comments (43) | trackbacks (0)

AtionScript3 でクラスから root のタイムライン操作

他にどう書けばいいか分からなかったので。

まずは前提のおさらい(というか自分用メモ)。
ムービーを作った段階で、以下の値は自動的に登録されます。

stage : すべての表示コンテンツが配置される背景のようなもの
root : stage に初期で登録されている表示コンテンツ

と、いうわけでメインのタイムラインをあるクラスから操作する場合は、root へのアクセスが必要になります。
そこで私が書いたのがこういう処理。

root.gotoAndStop(2);

root のタイムラインを2フレーム目に進めてストップ。
一見正しいのですが、なぜかこれがエラーになります。
内容を見ると、未定義の可能性があるプロパティがどうの、との事。
確実に MovieClip に決まってるオブジェクトなのに不思議ですが、仕方ないので値をキャスト。

MovieClip(root).gotoAndStop(2);

これで無事動きましたとさ。
ちなみに、他の値についてもコンパイルでエラーになったらキャストすると動く事が結構あるようです。

MovieClip(parent)

とか、色々。
こちらの場合、確かに parent がどんなオブジェクトかは分からない(分かってはいけない、オブジェクト指向的に)ので、正しい動作と言えますね。
困ったら試すといいかもしれません。
プログラム | comments (166) | trackbacks (0)

忘れやすい事メモ

ActionScript も結構イベントドリブンな書き方ができるのですが、今日30分悩んだ事のメモ。

Loader に Event.COMPLETE なイベントを追加したい場合

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, confirmComplete);

と、Loader 本体ではなく、.contentLoaderInfo に定義する。
これ、意外と気がつきません。

UILoader の場合はそのまま定義するみたいですが、うーん?
まだまだ基本的な部分への理解が足りません。
プログラム | comments (42) | trackbacks (0)

Prototypeのリファレンスが欲しい

リファレンス本作れば、普通に売れますって…

今日学んだ事。
Prototype 1.6 系では、


$("unko").innerHTML += "unko";


というこれは、かっこ悪い。
こういう場合は、こう書きます。


$("unko").insert({bottom : "unko"});


ハッシュの前が位置で、後ろが入れる文字列。
位置指定は、以下のような感じ。

before : 該当IDを持つタグの直前。
top : 該当IDを持つタグ内の一番上。
bottom : 該当IDを持つタグ内の一番下。
after : 該当IDを持つタグの直後。

図にするとこう。

before
<div id="unko">
top
〜略〜
bottom
</div>
after

基本的に挿入だけならこれで賄えるので、そういう場合こっちのが便利な感じ。
Prototype の API を見たら、位置と文字列を指定しろと書いてあるのに、その位置のサンプルがついていませんでした。
動作するコードに勝るリファレンスなど、この世に存在しないのです、にぱー。
と、どこかの巫女さんも言っていたとかいないとか。

もう2月とか…時間が経つのは、本当にあっという間。
プログラム | comments (47) | trackbacks (0)

HTMLは難しい

ただ見えればいいんなら簡単なんですが、まじめにやるとすごく難しい。
例えば、厳密な XHTML1.0 では、br を2回続けて書くと怒られるし、インライン要素の中にブロック要素を書くなんてもってのほか。

そうした点を踏まえて、アクセシビリティの高い Blog のビューを作っているのですが、これがなかなか難しい。
本文については、行ごとに p タグで括ってしまい、それ以上の改行が必要な場合は style プロパティで指定すればいいのですが…

問題は、ソースコードの表現にありました。
ソースコードは見やすく書かないと見る気すら失せるのですが、これが曲者。

・ pre タグの中でタブによるインデントを行うのは非推奨
・見易さのために連続して改行すると怒られる

などの問題のため、なかなか思うように表現できません。
仕方が無いので、ここに関しては以下のように妥協しました。

・全体を div で囲い、このタグにエディタのようなスタイル指定をする(ついでに overflow: auto; も指定)
・ソースコードを行ごとに解析し、空白文字だけ、または改行のみの行は br タグに、他は行ごとに pre タグで括る(ここは、Ruby の正規表現で十分対応可能)

ソースコードの場合、2行以上の改行は必要ないのでこれでOKでしょう。
他のケースは、私は使わないので知りません。

しかし、HTMLって、どうやっても何らかのエラーになってしまうケースが多い気がします。
正しく指定すると某ゲイツ製ブラウザで見られない、とか。
現在策定中らしい、HTML 5.0 にでも期待するべきなんでしょうか。
プログラム | comments (32) | trackbacks (0)

狂気の沙汰ほど面白い…!

自家用 Blog ツール向け、あほ機能その1。
『指定した位置に麻雀の牌姿入力支援フォームを出現させる』JavaScript ライブラリ。
画像が大きいので動作サンプルは追記にて。
無駄にビジュアルで現在の手牌を確認できたり、一枚だけ消去、とかできたりもします。

…誰が使うんだこんなのwww
ちなみに、無駄に動的にファイルを呼び出したりしているので、純粋な JavaScript ではなく、Ruby にちょっとだけ依存しています。
具体的には、ファイル指定がめんどくさかったので Dir.glob でさくさくと。
このメソッドも、なぜか正規表現が使えなかったりちと不便でした。
技術的には結構面白かったかな?
続きを読む>>
プログラム | comments (26) | trackbacks (0)

prototype 面白いです

色々分かってきて一番面白いところなので、メモ。
複数の要素を一気に監視したい場合。


window.onload = function (){
var elements = document.getElementsByClassName("elements");
for(var i = 0; i < elements.size(); i ++){
Event.observe(elements[i].id, "click", msg, false);
}
}

function msg(e) {
alert(Event.element(e).id);
}


これは簡単かつ結構面白い。
適当な要素をそれぞれの elements に与えておく事で、例えば Google Calender のように、複数の要素を動的に配置した上で監視、とかができますね。
同じ事を onclick でやる事も、まあ Ruby なり使えばできますが、こちらの方が圧倒的に読みやすいと思います。
プログラム | comments (54) | trackbacks (0)