メイリオを試してみた。

ヒラギノとか IPA Gothic に比べると、雰囲気が丸くて、柔らかい感じ。SHARP のなんかのフォント (名前忘れた) に似てる気がする。あんまり好きじゃない。

文字小さめのほうが綺麗に感じる。ClearType のせいかな。

Windows はアンチエイリアスのかけたかがいくつか選べたらいいのになぁ。IPA Gothic も Windows だと汚く感じる。もったいない。

システム系フォントを全てメイリオにしてみた。なんか思ったよりいい感じ。

  1. トップ
  2. design
  3. メイリオ
  1. トップ
  2. font
  3. メイリオ

カタチのあるものを全然作れない。うーん。

プログラムより、ちゃんと物理的に形が見えるのを作りたい。

  1. トップ
  2. life
  3. もっと、カタチのあるものを作りたい
  1. トップ
  2. thinking
  3. もっと、カタチのあるものを作りたい

"CSS3 media queries for Opera" ハックで処理していた部分が修正されたおかげで逆に変になっていたのでコメントアウト。おぺらーな人は 9.0 に乗り換えるよね、乗り換えるよ、乗り換えてくださいよ、って感じで過去のバージョンはざっくり知らんふりします。

でも、このサイトのナヴィゲーション部分が Opera だとなんかズレてるんだよなぁ。なんでだろう……

イソムラさんが面白いバグを発見したので動画にしてみます。他人のサイトを録画とか趣味悪いですが、とりあえず圧倒的に楽しい。

Opera 9 の楽しいバグ

動画を見るより実際やってみるほうが圧倒的に楽しいです。

404 | Opera 9 アンダーグラウンド に詳細な手順が! Flash ダウンロードするのめんどくさい人はとっとと試しやがれですよ。楽しいから

  1. トップ
  2. web
  3. Opera 9 出現に伴い@ヘッドフォン娘 wiki

DHH 本がきたので、ちゃんと入門するよ!

ところで全然どうでもいいけど、本を読むと本のマジックというかなんというか、読んでいる間は「うわすげぇー簡単じゃーん」とかわかった気になるんだけど、実際のケース (今作ろうとしているのも) に当てはめようとするとことごとくうまく行かないという泣きたくなる情況が頻発して凹む。

とりあえず多対多の場合 ActiveRecords は id カラムを持たないテーブルを一個仲介役に作ってあげるみたい。んでテーブル名は二つのテーブルをアンダースコアでつなげたものにするらしい。(244 ページ, has_and_belongs_to_many)

それで、一個疑問は解けたけど、実際にやってみようとすると問題がまたでてくる。例えば vote っていうのはそれぞれの Topic に対して User がそれぞれ投票できるような感じ (Topic と User が多対多で、vote という意味で繋がってる) だけど、っていうかコード書いてみよう。

class Topic < ActiveRecord::Base
has_and_belongs_to_many :users
end
class User < ActiveRecord::Base
has_and_belongs_to_many :topics
end

とかやると vote っていう名前が一切でてこなくなる。

でもってどうするんのよ!って聞いてみたけど、要は has_and_belongs_to_many のリファレンス嫁ってことらしく読んでみる。実際実行して試したいけど、どうやって試せばいいか分からない。うーん気持ち悪い

下のようにするっぽい?

class Topic < ActiveRecord::Base
has_and_belongs_to_many :votes,
:join_table => "topic_votes"
:class_name => "User",
:foreign_key => "user_id"
end
class User < ActiveRecord::Base
has_and_belongs_to_many :voted_topics,
:join_table => "topic_votes"
:class_name => "Topic",
:foreign_key => "topic_id"
end

この has_* 系メソッドの第一引数は、そのまま@をつけてインスタンス変数名になるのかな。そうっぽいけど明確に書いてあるリソースが見つけられない。ソース嫁ってか。


それにしてもテーブル作って、generate model した直後でテストが通らない。もっと小さいアプリケーションからやるべきだなぁ……でもそういうアプリケーションで作りたいのがない。

  1. トップ
  2. rails
  3. Rails 入門, DB/ORM
  1. トップ
  2. ruby
  3. Rails 入門, DB/ORM

長い夢を見た。昨日学校の図書館で爆睡したときに見た夢と、昨日の夜妙に早く (8時ごろ) 寝て、今まで見ていた夢 (15時間)。続いていたけど、前半を覚えていない。クライマックス付近だけ覚えている。アルファギークはでてこなかった。むしろ珍しいことに現実にいる人が一人しかでてこなかった。


  • なんかの拍子に別の世界に紛れ込んだ。電車・トンネル
  • 高校生ぐらいの人たち (ないし人じゃない何か) が集まる四年制の学校
  • 廊下の奥の奥、生徒会役員とその周りの人が所属する人たちのための食堂がある。薄暗い。というかこの世界自体が薄暗い。関係者以外は入ってはいけない。
  • 一年生と二年生はライン (パシリの意味らしい) と呼ばれている。三年生・四年生にも呼び方があったけど忘れた。
  • 生徒会長は痩せ気味・身長はあまり高くないが、能力がアレらしい。結局見れなかったので不明
  • 彼女 (こちらの人間・髪が長い・身長が高い・微妙に天然入ってる) は時を止められるが、とめる時間帯が決まっている。ついでに準備が必要。周りに数名協力者がいる。
  • 彼女 (というより彼女の中にある何か) と、郊外のアパートの101号室に住むネコはキーである。
  • ある入り口がない建物の前にマットがしいてあるが、そこがトビラ。最後まで気付かない。というより気付けない。

キーパーソン (彼女とネコ) といろいろあるけど忘れた。ネコは人語を喋れる。アパートの一人暮らししている時点でただのネコじゃない。ネコのほうは純粋にキーだけど、彼女は元々こちらの人間なので、紛れ込んだときにキーが混入したみたいだ。たぶんそのキーのおかげで彼女の使える力が大きかったんだと思う。

なかなか死なない人がいた。だいぶひどいことをしたと思うけど、結局弱りもしなかった。気持ち悪かった。というか人じゃないんだなあれ。多摩川・長い道路・本

生徒会役員に味方が一人いる。と思いきや、割と味方がいる。というよりむしろ一緒にまぎれこんだ人たちは基本的に仲間のようだ。が、誰がまぎれこんだ人なのか正確に知る方法がないため信用できる数名で動く。


専用食堂で食事をしていると生徒会長が来る。逃げる。違う人間がターゲットになる。よかった。騒ぎが大きくなる。どうでもいいけどエロ本は一万円の罰金 (高すぎじゃない?)。ここで時が止まる (これは誰の協力ない。彼女の独断によるもの。協力がないため、動けたのは彼女と自分だけで、時間も短い)。手紙をもらう (内容は忘れた)。それとは別に口頭で、次の時間は4:00だと告げられる。

急いでこの世界がでないと、という話になる。このへん曖昧。先輩関係でネコがキーワードになっていることが判明し、アパートのネコを尋ねる。学校に帰る途中、今まで入り口がないことが変とは思いながらそれ以上を考えなかった場所がトビラであることに気付く。マーキング (あとで戻るためのしるし) をつけて学校へ。

他の人たちをまとめてマーキング位置に転送し、扉を開いてもとの世界へ。

  1. トップ
  2. dream
  3. 長い夢を見た。
  1. トップ
  2. life
  3. 長い夢を見た。

ビューって何。つまり、使うと何が嬉しいのかよくわからない。パフォーマンスのために云々っぽいけど、実際どういうケースで使うんだろう。


最近分かったこと。というか教えてもらったこと。

カラムに配列 (のようなもの) を突っ込みたいときは、配列の要素をテーブルにして、元の行の id とデータを複数突っ込むらしい。

/* この例だと当たり前な感じがするなぁ。 */
CREATE TABLE entries (
id INT PRIMARY KEY,
body TEXT,
...
);
CREATE TABLE comments (
id INT PRIMARY KEY,
entry_id INT,
body TEXT
);

多対多な関係の場合は仲介テーブルを作るみたい。

CREATE TABLE ideas (
id INT PRIMARY KEY,
body TEXT
);
CREATE TABLE users (
id INT PRIMARY_KEY,
name VARCHAR(60)
);
CREATE TABLE votes (
id INT PRIMARY KEY,
idea_id INT,
user_id INT
);
  1. トップ
  2. sql
  3. SQL わかんね
  1. トップ
  2. prog
  3. SQL わかんね

見て不愉快になる物は見なければいい、と人は言う。例えば自分に対する陰口が書かれた匿名掲示板。例えば自分に向けた悪意が積み重ねられているソーシャルブックマーク。身分の目に入るところにそれを入れなければいい、そう言う人は多い。中にはシステム的にそれをやってしまう人もいる。リンク先のさとうさんはそういう人のようだ。

これはちょっと違うんだよね。あのスクリプト書いたのはもうちょっと違う理由があって、まぁスクリプト自体はそういう風にも使えるんだけど、もともとは違うって意味でちょっと違う。

自分が「何を」消したかったかというと、見たくないものというより、もっとなんていうか、有害なものを消したかった。例えば、本当に例えばだけど「さっさとクソして寝ろ」とか「くだらない」とかしかコメントに書いてないブックマーク (ブックマーカー) って、その文に価値がないうえに、自分にとって不愉快になるという点で「有害」なんです。だから消したかった。読むに値しない以上に有害なのを消したかった。

不愉快になるけど、批判は全うで、読んでおくべきだなぁと思ったらそれを消したりはしない。

何も得るものがないうえに不愉快になるとか、そのこと自体がまた不愉快なのでスクリプトを書くに至った的何かで、そこまで感じなかったらスクリプトなんて書かないわけです。そうじゃなかったら $X("//div[@class='bookmarklist']/ul/li[a["+xpath_fl+"]]/text()[last()]") なんてめんどくさいコード書かないです。

  1. トップ
  2. life
  3. 無価値じゃなくて有害
  1. トップ
  2. web
  3. 無価値じゃなくて有害

LDR でのメインフィード (RSS) の購読数が100を超えてた。

なんとなくメインのフィードが100いくのが区切りな気がしてたので書いてみる。


Atom は 23, RSS は 102。Bloglines は 100 いってない。

  1. トップ
  2. net
  3. フィードの登録数

確認がとれたものと修正して動いたもの

ずばばっと表示させるやつはどうも挙動が怪しいです。動的にレンダリングするのを変えるのはやっぱちょっと苦手っぽい。

require 000.user.js

ignore-not-cc-photo.user.js を書き換えた。flickr が gamma になったときぐらいに HTML の構造を変えたらしく、もっと簡単に書けるようになっていた。ついでに $X 使うように修正した。

  1. トップ
  2. js
  3. flickr 系 user.js for Opera
  1. トップ
  2. gm
  3. flickr 系 user.js for Opera
  1. トップ
  2. opera
  3. flickr 系 user.js for Opera

  1. 半分の月がのぼる空7
  2. さよなら、いもうと。

半月は短編集の前編らしい。なんかもうどうでもいいよ!

さよなら、いもうと。いもうと以外のキャラがいい。負荷軽減のためにわざとやっているのかなんなのかしらないけどそういう雰囲気。実際登場時間も少ない気がする。

「俺だって今日、死ぬかもしれない。明日、死ぬかもしれない。そのことがわかったはずなのに、少しも必死じゃない」 「必死じゃないといけないの?」 「いけないわけじゃないかもしれないけど……なんつうんだろ? 明日死ぬかもしれないのにさ、今日をやけにのんびり生きてるんだよな。死ぬ前にやっておきたいこととか思いつかない。だからそのことを考えないようにして、また明日とか平気で言ってしまう。そんな自分のままじゃダメなんだって思うんだけど、でもどうするんでもないんだよな」

開始早々のアレとか、途中のイベントとか、最後のアレとか、随所に新井輝臭のようなものが漂っています。当たり前だけど

  1. トップ
  2. book
  3. 半月7, さよなら、いもうと。を読んだ

9.0 がリリースされたのでいろいろ調べて書く。

XPath は割と普通に使えるっぽい。時々変な挙動な気もするけど。$X は書き換え無しに動く。と思いきや createNSResolver は動かない

innerHTML 使ってパースさせるやつ は Opera でもできるようだ。


Array#forEach や GM_xmlhttpRequest がないため、殆どの GreaseMonkey スクリプトは動かない (が、後述するスクリプトでほぼ解決)。ついでに Opera はハイパートリッキーなことをしないとドメインを超えられないようだ。

Opera 用のラッパは 000.user.js とか最初のほうに呼ばれそうなファイルに書いてあげればいいっぽい。000.user.js . インターフェイスのラッパだけです。ドメイン超えるのも 000.user.js に書けば普通にいけるかもしれない。

作ったスクリプトで確認がとれたやつを列挙する。


E4X とかクロスドメインとかでひっかかる。E4X を innerHTML + XPath にし、クロスドメインのハックをすれば動くと思われる。

それと、日本語は素でかけないようです。\u でエンコードする必要あり。スクリプトを直接編集する場合もです。(GreaseMonkey はインストールするときに化けるらしく、直接編集している限りは日本語は普通にかけます。)

  1. トップ
  2. js
  3. GreaseMonkey Script on Opera 9.00
  1. トップ
  2. gm
  3. GreaseMonkey Script on Opera 9.00
  1. トップ
  2. soft
  3. GreaseMonkey Script on Opera 9.00
  1. トップ
  2. opera
  3. GreaseMonkey Script on Opera 9.00

データベースの設計ができないからなんだと思う。Rails ってまずはじめにデータベース設計ありき、みたいな雰囲気があって、どうしたらいいかわからない。きっとこの辺が分かれば高速に開発できるのだろうけど、いかんせんデータベースって「レスポンスがいいけど面倒くさい」というイメージがずっとある。

というか実際問題面倒くさい。ロックが効かないシステム (学校の鯖) でやろうとするとデータベース使うって段階で既に躓く。自宅鯖でやるとなると、デーモンが一個動いたりするから、セキュリティ云々で面倒くさい (SQLite を使うのはスタンダードじゃなくて躓く)。セキュリティ云々が面倒くさいとかいう人間に公開サーバーを運用する資格なんてないので、この辺で脱落する。公開できないサービスなんて面白くない。だからといって開発用に鯖を借りる金は出てこない。そこまでモチベーションがあるわけじゃない。

データベースありき。データベース側からやっていくと、そのものの表面的カタチ (インターフェイス) がなかなか見えてこなくてつまらないし、いざインターフェイスを作る段階になると、ロジックで疲れ果てててきとーなモノになってしまう (「よしじゃあ rhtml と CSS 書こうか、でももう一応できてる (scaffold のおかげ) しなぁ、めんどいからいいや」みたいな)。

ユーザーインターフェイスなんて後からどうにでもなる、わけない。最初に作ったイメージはあとあとまで引き継がれてしまう。最初のできが悪いと、ずっと悪いまま。すごく優秀な「別の」人が関わらない限り、それは直らない。(自分としてはこういう新しい視点を提供してくれる頭のいい女の子に憧れる。関係ない)

CSS 書くときと、プログラムのロジックを書くときの脳みその状態が全然違う。切り替えるのが面倒くさい。先に見た目を作ると、あとで「あーこれが本当に動いたらなぁ」なんて気分になってロジック書く気になるけど、逆だとならない。

根本的に何か勘違いしている可能性がありまくるけど、現状だといまいちやる気にならない。今作りたいものはあるけど、データベース設計で既に躓いている (だいたいテーブルの数が5個ぐらい)。だからとりあえず UI だけ作ろうかと思った。そのうち。いつか。

  1. トップ
  2. rails
  3. Rails ができない
  1. トップ
  2. ruby
  3. Rails ができない

いろんなところでカリー化と普通に言われて、カリー化って何だよって思っていたけど、ふとした拍子に理解した (と思う)

引数を一個とって関数を返す関数をカリー化された関数というらしい。なんか言葉にするとそこらの説明と大して変わらないなぁ。

檜山正幸のキマイラ飼育記 - JavaScriptでカリー化 の最初に「カリー化ってなに?」って書いてあるけど、今はこれが一番わかりやすい例だと思える。前読んだときはよくわからなかった。2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = g(x)(y) が常に成立すること。ちなみに「なに?」の部分以外はわからない (読んでもいない)

モナドもわからない。ほっといてもそのうち分かるんだろうな

  1. トップ
  2. prog
  3. カリー化をふと理解した?

GreaseMonkey では GM_xmlhttpRequest で他のページとってくるじゃないですか。で、onload して req.responseXML をとるなり req.responseText をとるなりするけど、どうにもこうにも not well-formed なページ (HTML とか) をとってきてノード検索するとき面倒くさいんですよ。responseXML はもちろん空だし、responseText はもちろんただのテキストだし。

で、なんとなく思いついたので以下のように解決するようにした。

GM_xmlhttpRequest({
method : "GET",
url : i.href,
onload : function (req) {
// てきとーなエレメント作って突っ込む (ブラウザにパースさせる)
var d = document.createElement("div");
d.innerHTML = req.responseText;
// d を最初のコンテキストノードにして文書を XPath 検索
$X(".//foobar", d);
},
onerror : function (req) {
alert(req.responseText);
}
});

なんてキモイ!

問題点は application/xhtml+xml なページから not well-formed なページをとってくるっていう場合は使えないこと。なぜなら innerHTML が使えないから。でも殆どの場合 (というか殆どのページは) text/html なので問題ない感じ。はてなとかはてなとかはてなとか。

Firefox 1.5 からは application/xhtml+xml なページでも innerHTML 使えるみたいです。by yoko さん

  1. トップ
  2. js
  3. ふぁっきん not well-formed, XMLHttpRequest とかで
  1. トップ
  2. gm
  3. ふぁっきん not well-formed, XMLHttpRequest とかで

はてぶでコメントと画像を表示させてる

hatena-bk-show-ss-and-comments.user.js

似たようなのがあるけどとりあえず公開する。こっちは自分のブックマークじゃなくてもいろんなところで動くと思う。

  1. トップ
  2. js
  3. はてブでスクリーンショットとコメントをさっさと表示させる GM
  1. トップ
  2. gm
  3. はてブでスクリーンショットとコメントをさっさと表示させる GM

sayonara-hatena-by-araiteru.user.js

気が付いたらはてなを使っている人向けのスクリプトです。そこそこ適切な代替サービスなどにリダイレクトします。

実装がダサかったので少しだけ変えました。コンセプトが既にダサいとかは知りません。

  1. トップ
  2. js
  3. はてな使うのをやめるための GreaseMonkey スクリプト
  1. トップ
  2. gm
  3. はてな使うのをやめるための GreaseMonkey スクリプト

via 適宜覚書はてな異本 - AdobeAcrobat7のロードをスピードアップする方法

紹介された方法だと何かうまく行かないので自力で try and error してみる。(7.0.5)

  • EScript.api
  • EScript.JPN
  • EWH32.api
  • Ewh32.jpn
  • Search.api
  • Search.JPN

エラー出しながらやったけど、「プラグインについて」を見れば依存性が書いてある罠。

  1. トップ
  2. soft
  3. Acrobat Reader 高速化

hatena-bk-neglect-comment-by-id.user.js

指定ユーザのコメントを消します。デフォルトでは「ブックマークしている」ことは薄く見えるようにしてあります。ERASE_FROM_THE_WORLDtrue にするとブックマークしている事実も消します (ブックマーク数は変えません)。

  1. トップ
  2. gm
  3. はてブ。見たくないユーザのコメントを消す GM
  1. トップ
  2. js
  3. はてブ。見たくないユーザのコメントを消す GM

学校のテストでみごとに0点だったのでちゃんと頭に入れるよ!!

何がわからないってことを明確にしとこう。

  • サブネット
  • ネットワーク部・ホスト部っていうのがなぜ存在するのかがわからない。
  • ネットワークアドレスっていうのは実際どういう風に使うのか
  • サブネットをどう設定するとネットワークアドレスがどうなるのか。
  • ネットワークの設定とかででてくるサブネットマスクには実際どういう設定をするのよ。

IP をそもそも理解していないようです。

さてそこで #XSLT で訊き (今現在既に理解の範疇を超えた話をしている (わらい)) つつ @IT:連載 基礎から学ぶWindowsネットワーク 第7回 1.IPアドレスとは とか読みつつ疑問を解決していく。


TCP/IPでは、ネットワーク全体をフラットな1つのネットワークとして扱うのではなく、いくつかの小さなネットワークの集合体として扱うことになっている。

そもそもこの辺で躓いていた。グローバルIPとプライベートIPっていうのはあるけど、グローバルIP の中では全部フラットだと思ってた。グローバルIPの中でも階層があるんだなぁと。無駄なトラフィックを減らすため (同じネットワーク内の通信は同じネットワーク内で完結するように) らしい。


  • ネットワークアドレスを求めるにはネットマスクと AND 演算。AND だから分かりきった部分のオクテット (サブネット26bitだったら上の3つ (24bit分)) はそのまま書いていい。
  1. トップ
  2. net
  3. IP がわからん

いろいろソフトウェア系でわからないこと

  • ランダウの記号
  • 浮動小数点数の二進数表記
  • ルーティングテーブル
  • アルゴリズム全部
  • SQL
  • コンピュータのメモリの管理
  • 確率
  • 決定表
  • CPU スケジューリング
  • データベース正規化
  1. トップ
  2. soft
  3. いろいろわからんこと

LTS って何。Long Term Support

ダウンロード終了まであと43分


これってアップデートマネージャからアップデートしてもちゃんと ubuntu-ja のほうにアップデートされるのかしら。されなそうな気分。されてほしい。

emacs21 で致命的なエラーっぽいのがでて完了しなかった。apt-get remove emacs21 して再起動した。とりあえず起動はちゃんと?してくれた。PCMCIA マネージャの起動に失敗してたけど、何に影響するのかわからん。

しかしながら emacs は使える。バージョンが違うのかな。emacs のそのへんが意味不明

Rhythmbox が Audioscrobbler をサポートしてる。でも mp3 が再生できなくなった。gstreamer0.10-fluendo-mp3 を入れた。

Audioscrobbler 機能が動いてないような。むーん。

仕方ないので rbscrobbler を今まで通り起動してみる。

Rails 動かすために (ruby 1.8.3 だとダメっていわれた!) うpだてしたけど、終わったころにはやる気がなくなってる罠

一部の曲が文字化けする。エンコーディングとか一緒なのになぁ。意味不明すぎ。

むしろ id3v2 を読めてないくさい。なんだこれは。

RIFF -> Idv2 と変換させたら直った。

  1. トップ
  2. linux
  3. Update -> ubuntu 6.06 LTS

読み終わった。関係ないけど学校で暇だったから炎のゴブレットを飛ばしながら読んだ。内容忘れすぎ。

最終巻まだー? ハリーの夢落ち


これで溜まってる本は全部読み終わった。なんか次の探そう。

  1. トップ
  2. book
  3. ハリーポッターと謎のプリンス

なんか最近 CSS の具体的なイメージまでフォトショで作っても、そのまま CSS 書かずにほっとくことが多い。前はすぐに書いてすぐに公開してたんだけどなぁ……

それにトリッキーな CSS テクニックも全く使わなくなった。どうせ IE でおかしいし、みたいな。慣れただけなのかなんなのか、仕様書も前より読まなくなった。つまらない。

どれもそれほど面白そうに見えない。好奇心がなくなったのかなんなのか。

  1. トップ
  2. css
  3. CSS なぁ
  1. トップ
  2. web
  3. CSS なぁ

普通のブラウザならサポートしている便利なやつで data: っていうのがあるわけです。意外と知らない人もいたりいなかったり。たびたびこの話は出る感じ。以下 RFC:2397 のメモ。

data:[<mediatype>][;base64],<data>

セミコロンとカンマを逆にしたりする。

data:text/plain,foobar
data:,foobar 上と同じ
data:text/html,<html><body style="background:#fff"></body></html>
data:text/plain;charset=utf=8,%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92
data:image/gif;base64,R0lGODlhEAAQALMNADAwMBAQEO/v78/Pz0BAQCAgIN/f37+/v2BgYJ+fnwAAAP///4CAgP///wAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAAANACwAAAAAEAAQAAAEObDJieq8uFVEer5bR3xZFxQFiaGpOrHSIqtP3cgLbeP6IxlA1wRoEP4MgsPB2FAeElCXE5pgUpmuCAAh+QQJAAANACwAAAAAEAAQAAAEPrDJSaulKF+bUV1glQEEMYHLVZoSqpaSIW9NYTeyQdsFPm88yWF4eRgnw0PxKDwMEomK8VGBRmkTK3bLpUUAACH5BAkAAA0ALAAAAAAQABAAAAQ6sMlJK13Yarw0NQZXIeQEGhqJmGBaNkfsNUQNy15N3MesS4mgpkCcBBPDIlBIeTiVM+dj1nRSr9hJBAAh+QQJAAANACwAAAAAEAAQAAAEN7DJueq80+i6MNYG50nHIWjjVR4ptrZTIrdI3cgJbeM6AkuE4A8ohBUKgaLnwTwWYMyHE8oc/iIAIfkECQAADQAsAAAAABAAEAAABDiwyWnqvPPoapbHknZw3oIlyaBN5YmCMJrAdG3feN4gfM4jmIdwQiAAehfho8AsEmBKZsFpk+pqEQAh+QQJAAANACwAAAAAEAAQAAAENrDJeeq8M+l6jMeSlnCeATbi5C3sCbKLi8Fybd/yo+P6w+uFwgRBPAULhCQRYQwmCcvaE1eLAAAh+QQJAAANACwAAAAAEAAQAAAEObDJmeq8uNV0er5bd3xZJxgGiaGpOrHSI6tL3cgPbeP6IhVA1wRYEP4KAQLB2FASEFCXE4pgUpmuCAAh+QQJAAANACwAAAAAEAAQAAAEPrDJSaulKV+bU31glQ3HMYHPVZoSqpZSIW+NYTdyQdsGPm88CWF4WRgnQ0LxKCQAEIiKcVGBRmkTK3bLpUUAACH5BAkAAA0ALAAAAAAQABAAAAQ6sMlJK33Yavw0LQVXJeQEFhqZmGBaNkTsNUcNy1593MSsS4igxkCcBBHDIlBIWTiVM+di1nRSr9hJBAAh+QQJAAANACwAAAAAEAAQAAAEN7DJ+eq8s+j6MNYF50kEEWjjVRIptrYTIrdJ3cgIbeN6AkuH4A8ohBkMgqJnwTwaYMyFE8oc/iIAIfkECQAADQAsAAAAABAAEAAABDiwyVnqvJPoWp7HkkZw3oMhCKBN5YmCMIrAdG3feN4kfM4nmIVwcjgMehfhwsAsHmBKpsFpk+pqEQAh+QQJAAANACwAAAAAEAAQAAAENrDJSeq8E+lKiseShnBeATbi5D3sCbKPi8Fybd/youP6wusGwyRBPAUNhyQxYQwmD8vaE1eLAAA7

もちろん image/* のときは base64 を使わないといけないという規則があるわけじゃない。% エンコーディングで普通に書いてもいい。クソ長いけど。

ユーザ CSS とか JS とかを配布するとき、一つのファイルに纏めたいときは便利。

  1. トップ
  2. js
  3. data: (data scheme)
  1. トップ
  2. web
  3. data: (data scheme)

久しぶり。黒背景にしたけどきもい。すぐ違うの作らないと

背景画像は /2006/other-side-world です。久しぶりに RDF 書いた……

  1. トップ
  2. css
  3. CSS 書いた。変えた。
  1. トップ
  2. web
  3. CSS 書いた。変えた。