たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。
以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
救済者願望は救済者願望であって、救済願望ではないのです
、という話の中の、星界の紋章Ⅱからの引用を見て、以前僕が言いたかったことそのまんまだと思った。
結果として前より幸せになるか不幸になるか、どちらのケースが多いのだろう。
活用されてる例を知らないんだけど、XULもXMLだから、DTDでエンティティ参照使ってモジュール化できるんですよね。
<?xml version="1.0"?>
<!DOCTYPE page [
<!ENTITY button '<button label="button label"/>'>
<!ENTITY buttons '
&button;
&button;
&button;
&button;
'>
]>
<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
&buttons;
</page>
せっかくだから何かに活用できないものかしらん。
追記。理由は知りませんが、MozillaではChrome URLで示された外部DTDファイルは読み込めません。なので、これはWeb上での話ではなく、拡張機能の開発の話って事で。
気がついたらなんかものっそ久しぶりにしゃっくりが出てる。「ああしゃっくりだねえ」「疑う余地ないよね」みたいな明白なしゃっくり。小さい頃はよくあったけどここ数年ずっとならなかったように記憶してるから、不思議な感覚だ。
minmax.jsというライブラリを使うと、最小サイズ・最大サイズを設定するCSSの機能を古いIEでも使えるそうで。IE6でやっても動いた。
IE6でもXML宣言があると後方互換モードになってしまってこれらのプロパティが機能しなくなるんじゃなかったかな。だとしたらもうしばらくの間は有用かも?
なんか文章が分かりにくいと言われたんで言い訳しとくと、スクリプト発見→IE6で表示→おお確かに動いてるねぇ→説明読む→ってIE5用なのかよ!→でもIE6で動いたなぁ→ていうかそもそもIE6って本体でmax-widthとか実装してたよね→でも後方互換モードじゃ使えないんだよね、XML宣言あると後方互換モードになっちゃうんだよね→じゃあやっぱりIE6でも有用なんじゃね? という流れがあった結果としてのこのエントリなんですよと。読む人の都合とか利便とか考えてないオナニー文章の典型ですね。
「世間は(社会は)そんなに甘くない」「生きていくのは厳しい」っていうような表現はよく目にする。
でも実際今までこうしてなんとか生きてきて、案外なんとかなってしまっていて、それほど滅多打ちにされてもいなくて、手をさしのべてくれる人もいて、お目こぼしして貰うようなこともあったりして、世間って結構いいかげんなところがあるんだな、っていうことも思っていて。
多分、「世間の厳しさ」っていうのは、鬼のようにいつでもビシバシ辛く当たってくるとか、そういう意味の「厳しさ」では、本当は、ないんじゃないかなあ、って、ふと思った。もちろんそういう意味の「厳しさ」に晒されることもあるだろうけど、でもそれよりもっと恐ろしい物が、それよりもっと「厳しい」所が「世間」にはあるンじゃないかと思う。
それは、「世間の気まぐれさ」。どうでもいいときにばっかりうまく回って、助けて欲しいときには助けてくれない。親切にもハシゴをかけてくれて、いざ屋根に上ったと思ったら、今度は僕が上にいるのも忘れて平気でハシゴを取っ払ってしまうような、気まぐれなところ。次の一手を予想できないから、がっちり防御を固めていても何事もなくスルーされることもあれば、気を抜いているときに限って一番弱いところを狙い打ちにされることもある。安心することができない、全く疑いを捨てて生きていくことができない。よく分からないままに流されるしかなくて、でも流されるばかりだとどこまでも落ちていく。自分で舵を取って切り開いていくことがとても難しい。昨日の敵は今日の友かもしれないし今日も敵かもしれない。昨日の友は今日も友かもしれないし今日は敵かもしれない。
そんな「世間」の得体の知れないところ、ままならないところこそが、何より一番恐ろしくて、厳しいんじゃないか、と、思ってきている。
Tab EffectはDirectX8以降が必須=Windowsのみ対応ということなので、環境に依存せず動く物をHTML Canvasを使って作れないかなーと思ってやってみた。
結論。こりゃとても実用にはならんわ…… 行列変換とかやったら死ぬのが目に見えてる(そもそもやり方分からんけど)ので簡単な伸縮だけのエフェクトにしてても、重すぎて重すぎて実用に耐えません。しかも時々ウィンドウの描画に失敗して真っ白になるし。何故?
タブという概念は普通の人(コンピュータの中で何が起こってるのか頭の中で想像することに長けていない人)には分かりにくくて、Tab Effectのようにそれを視覚的に表現する物はユーザビリティの向上において結構役立ちそうな気がするんだけど、ジョークとしか思われなかったりするのが切ないところですね。
追記。Takenさんにアドバイスをもらって、HTML Canvasに描画した物をtoDataURL()
で画像としてキャッシュして処理するようにしてみたところ少しだけ軽くなったので、調子に乗ってもうちょっと3Dっぽい効果を加えてみた。
軽くなったとはいえ、さすがに台形に画像を拡縮すると重すぎるんで、あくまで「それっぽいニセモノの効果」でしかないですが。
もう一つ小ネタ。Split Browserで詰まった箇所。
splitter要素は、ドラッグすると、前後に置かれた要素の大きさを伸縮してくれる。この時、前後の要素の属性一覧とかを見ると、伸縮後の幅(width)もしくは高さ(height)が属性として指定されていることが分かる。
前のエントリに書いたように、「常にツールバーだけは表示される要素」みたいなものをスプリッタの隣に置いておく場合、その要素をツールバーだけの状態に自動で折りたたむ処理は、自分で一から書かないといけない。といってもそんなに難しいことはなくて、要するにツールバーの大きさと同じ値を親要素の大きさに指定してやればいい。
<vbox>
<hbox id="above" flex="1"/>
<splitter/>
<vbox id="below" flex="1">
<toolbar id="bar"/>
<hbox id="content" flex="1">
</vbox>
</vbox>
<script>
function collapse() {
var box = document.getElementById('below');
var bar = document.getElementById('bar');
box.height = bar.boxObject.height;
}
</script>
ただ、これには一つ問題がある。折りたたむ方はこれでいいんだけど、元の状態に戻す、つまり畳まれたボックスを広げ直す時には、同じやり方をやっても望んだとおりの大きさにまでボックスが広がってくれないことがある。
これは何故かというと、スプリッタの前後の片方にある要素の大きさを指定し直しても、反対側にあるもう一つの要素の大きさ指定がそのままになっているからだ。畳まれたボックスを狙ったとおりの大きさに広げるには、反対側にある要素のサイズ指定も同時にいじってやらないといけない。
function collapse() {
var box = document.getElementById('below');
var bar = document.getElementById('bar');
box.lastheight = box.boxObject.height;
box.height = bar.boxObject.height;
}
function expand() {
var box = document.getElementById('below');
var sidebox = document.getElementById('above');
var last = box.lastheight;
var current = box.boxObject.height;
sidebox.height = sidebox.boxObject.height - (last - current);
box.height = last;
}
Split Browserでも使いまくってるsplitterの注意点。
Mozilla Suiteの頃にはsplitterの中央付近にgrippy(つまみ)が表示されて、それをクリックしたら左右(上下)のどちらかに要素を折りたたむという挙動を示すんだけど、Firefoxの標準テーマではgrippyがdisplay:none
されてるのでぶっちゃけ使えない。拡張機能側のテーマでgrippyの外観を定義するか、grippyに外観が定義されてるテーマを使うかのどっちかをしないと、grippy要素を追加しただけでは何も起こらない。
grippyをクリックした時に前後に折りたためるようにするcollapse
属性というのがあるけど、そういう訳なので、実際にはこの機能はFirefoxではほとんど役に立たない。でも、この属性があるかないかでスプリッタの挙動が若干変わるのには注意が必要だ。
例えばこんな場合を想像する。
<vbox>
<hbox id="above" flex="1"/>
<splitter/>
<vbox id="below" flex="1">
<toolbar/>
<hbox id="content" flex="1">
</vbox>
</vbox>
こういう構造の時、スプリッタをドラッグすると、スプリッタの前後にある要素の大きさが無段階で伸縮する。しかし下側のボックスの中にはflex属性が設定されていないtoolbar要素があるので、スプリッタをドラッグしてvbox#belowの大きさを変化させても、実際に伸縮するのはhbox#content(とvbox#below)とhbox#aboveだけになる。結果として、vbox#belowの大きさはtoolbar要素の高さより小さくはならない。toolbarより高さを小さくしようとしても、そこでつっかえてそれ以上スプリッタが動かなくなる。
<vbox>
<hbox id="above" flex="1"/>
<splitter collapse="after"/>
<vbox id="below" flex="1">
<toolbar/>
<hbox id="content" flex="1">
</vbox>
</vbox>
でもこんな風にcollapse属性を指定すると、toolbar要素にflex属性が無くても、つっかえずにスプリッタをボックスの端までドラッグできるようになる。そして端まで達すると下のボックスは折りたたまれて非表示になる。
言い換えれば、スプリッタを動かしても折りたたまれず常に表示されたままになるようなツールバーとかを実装したければ、collapse属性を使わず、常に表示しておきたい要素にflex属性を設定しない、という事でそれを実現できるわけです。
という、小ネタ。