2008-04-03
マウスカーソルにmoveを指定した要素をドラッグ可能にする
というのを書いてみました。cssで{ cursor:move; position:absolute; top:YYpx; left:XXpx}を指定したものは全てドラッグ可能になるという、スタイルとスクリプトを関連付けるような邪悪な感じです。大分脆いので修正したい箇所がまだあるのですが、とりあえずでも公開しないと手をつけなそうなので公開します。
そもそも、要素をドラッグ可能にするライブラリが欲しくって色んなライブラリを見てみたのですが、(僕が見たものは)どのライブラリも要素への参照を引数にインスタンスを生成するタイプのもので、それの「要素数 = インスタンス数」というのが何となく嫌で、回避する方法を考えているときに思いつきました。
仕組みは、document.bodyに対してイベントハンドラを設定するだけの簡単なものです。お行儀が悪いので、許せない人は許せないと思いますが、「ドラッグだけしたい!」なんてときにはサクッと対応できるので、個人的には楽で好きです。
使い方は、ソースを読み込んで「Drag.enable();」です。ドラッグしたくない要素があれば、マウスカーソルにmove以外を指定してください。ドラッグ不可にしたいなら「Drag.disable();」です。でも本当に使いたい方は、ソースを読んで詳細を確認してください。
ちなみに、ドラッグのためのコードはこちらのページのものを参考にさせていただきました。ソースもシンプルで読みやすいし、JavaScriptでのドラッグ方法を知りたい人にはおすすめです。
2008-03-23
携帯向けチートシート作成支援
自分向けツールです。しょぼいですが。
使い方は、フォーマットに、
$1($2) - $3テキストに、
a,b,c hoge,foo,bar お魚,お肉,お野菜とでも入力して、「プレビュー」ボタン押せばわかると思います。あと、区切り文字と$N(N:1-9)をテキストに入れると正しくページが生成されません。
作成したページを携帯のお気に入りに入れておけば嬉しいときがあるかも知れません。
del.icio.usのnot shared解除を支援するブックマークレット
2008/02/07追記
後日気になってソースを見返したら、動かないコードにはバグがありました。。。
修正したやつを↓に置いてますので、そっちをどうぞ。
del.icio.usに大量のブックマークをインポートしたのだけど、インポートしたブックマークが全部「not shared」とかなってて、どうも非公開設定になってる。それは嫌で公開設定にしたいので、一括して公開設定にしてくれる何かがないかなあとちらっと探したけどない。まあそれならそれで、not sharedを解除するAPIかなんかがdel.icio.usにjsで用意されてるんだろうから、それを直接たたくようなブックマークレット作ればいいや。開いているページのnot sharedを一括で解除するようなのを。とか思って作ったけど、動かない(→コレ)。でまあ結局そういう諸事情により、not sharedを一個づつ解除するようなつくりのものでお茶を濁しました。
もう遅いかも知れないけど、困っている方もいそうなので一応公開しておきます。
動作: ブックマークレットを実行したページのnot sharedを全部自動で解除。(でも遅い)
動作: ブックマークレットを実行したページのnot sharedを全部自動で解除。(妥協版よりかは早い)
Ruby: RSSの操作
例によって便利なモジュールが用意されています。もちろんRSSを扱うのは初めてなんですけど、かなりやさしいです。open-uriで対象ページのRSSを取得して、rssオブジェクト生成すれば後はやりたいほうだいです。(邪道かどうかは知りませんが。)
とりあえず、試しに書いたdeliciousのpopularのRSSからサムネイル付きのリンク一覧を生成するスクリプトを載せます。
#!/usr/bin/ruby -w
require 'rss'
require 'open-uri'
# SimpleAPI
thumb = "http://img.simpleapi.net/small/"
# get rss
uri = URI.parse("http://del.icio.us/rss/popular")
rss_source = uri.read
# header
print "Content-Type: text/html\n\n"
print <<HEADER
<html>
<head>
<title>RSS Usage</title>
</head>
<body>
HEADER
rss = RSS::Parser.parse(rss_source, false)
rss.items.each do |item|
puts '<a href="' + item.link + '"><img src="' + thumb + item.link + '"></a>'
puts '<a href="' + item.link + '">' + item.title + '</a><br>'
end
puts <<FOOTER
</body>
</html>
FOOTER
まあ実際に使うとなるとバリデーションとかに気を配ったりとかでもう少し大変になるとは思いますが、自分専用のRSSリーダーとかだったら楽勝で作れそうですねー(やらんけど)。一応サンプルをここに置いときます。