La.系ぶろぐ

個人的いろいろメモ。シャープペンのメモにちょっぴりゲ○ツの悪口が混じってるただのチラ裏。

まだやってたりして……

い、いや……さすがに1日はつぶしてませんよ?
でも、今回はちょっと難儀。
だけど満足です、はい。(と言いつつ、30分後に追加修正……;)

<body id=D onKeyDown=K=event.keyCode-38><script>Z=[B=A=13];function Y(){for(q=i
=4;f=i--*K;c|=Z[h+(K+6?p-K:X[i]=t?p*A-(p/9|0)*170:p)])p=B[i];for(X=[c?0:K+6?h-=
K:B=X];l=c=q--;f|=Z[p-A])X[p=h+B[q]]=1;if(e=!e)if(h-=A,f|B)for(B=[0,1,18310823
<<++t*4>>27,(t%=7)&1?-1:A],h=253;c<260;)(Z[++c]=l%A%11<1|Z[++l]|X[l]|c<A)?++q>A
?(c-=A,P+=e++):0:q=2;for(S=P,K=261;--K;S+=X[K]|Z[K]?"■":K%A?"_":"<br>");D.
innerHTML=S;Z[253]||setTimeout(Y,99-P)}Y(c=h=e=K=t=P=0)</script>

読めないよね……きっと。

スポンサーサイト

PageTop

いい加減限界?

なんかペントミノの順序も変わっちゃったし、いい加減別ものっぽいんだけど。
もう限界でしょ?別の意味で(ヲ

<body id=D onKeyDown=K=event.keyCode-38><script>Z=[B=A=13];function Y(){for(q=i
=4;f=i--*K;c|=Z[h+(K+6?p-K:X[i]=t?p*A-(p/9|0)*170:p)])p=B[i];for(X=[c?0:K+6?h-=
K:B=X];l=c=K=q--;f|=Z[p-A])X[p=h+B[q]]=1;if(e=!e)if(h-=A,f|B)for(h=253,B=[0,1,t
?A:2,[15,0,0,A,-11,3,27][t=++t%7]-1];c<260;)(Z[++c]=l%A%11<1|Z[++l]|X[l]|c++q>A?(c-=A,P+=e++):0:q=2;for(S=P,c=261;--c;S+=X[c]|Z[c]?"■":c%A?"_":"<br>");
D.innerHTML=S;Z[253]||setTimeout(Y,99-P)}Y(c=h=e=K=t=P=0)</script>

とか言いつつ、数時間眺めてると数バイト減るんだよね。困ったもんだ。
帰納法で行くと数百時間眺めれば0バイトに!?(アホな)
てか、そろそろバグ入ってそうで怖い……

PageTop

6行

やっぱ上に4行ダミーのせてるのは詐欺かなぁ。
とりあえず。
<body id=D onKeyDown=K=event.keyCode-38><script>Z=[B=A=13];function Y(){for(q=c
=i=4;f=i--*K;c-=!Z[h+(K+6?p+K:X[i]=p*A-(p/9|0)*170)])p=B[i];for(X=[c?0:K+6?h+=K
:t?B=X:0];i=K=q--;f+=Z[A+p])k=X[p=h+B[q]]=1;if(e=!e)if(h+=A,f|B)for(h=70,l=c=
299,B=[[15,27,3,-11,A,0,0][t=++t%7]-1,0,1,t-6?A:2];l--;)(Z[--c]=Z[l]|X[l])?++m>
A?(c+=A,P+=k++):0:m=2;for(S="";i<312;S+=X[i]|(Z[i]|=i++%A%11<1|i>299)?"■":i%A?
"_":"<br>");D.innerHTML=S+P;Z[70]||setTimeout(Y,99-P)}Y(h=e=K=t=P=0)</script>

PageTop

くやしいのう。

あ、上のメニューに><があんのね。お間抜け。
てことで、ビット圧縮しない方向性で。

<body id=D onKeyDown=K=event.keyCode-38><script>Z=X=[B=A=13];function Y(){for(q
=c=i=4;f=i--*K;c-=!Z[h+(K+6?p+K:X[i]=p*A-(p/9|0)*170)])p=B[i];for(X=[c?0:K+6?h
+=K:t?B=X:0];i=K=q--;f+=Z[A+p])k=X[p=h+B[q]]=1;if(e=!e)if(h+=A,f|B)for(h=70,l=c
=299,B=[[-11,-25,3,15,-A,0,0][t=++t%7]-1,0,1,t-6?-A:2];l--;)(Z[--c]=Z[l]|X[l])?
++m>A?(c+=A,P+=k++,m=2):0:m=2;for(S="";i<312;S+=X[i]|(Z[i]|=i++%A%11<1|i>299)?
"■":i%A?"_":"<br>");D.innerHTML=S+P;Z[57]||setTimeout(Y,99-P)}Y(h=e=K=t=P=0)
</script>

うーん。あとタグ1っこまで圧縮したのだが。でも、ちょっとズルしてるかも。

PageTop

7行テトリス

また横着してトラバ省略。

「ビットで押し込めば短くならね?」と思って挑戦してみましたが……
<body id=D onKeyDown=K=event.keyCode-38><script>Z=[f=B=A=12];function Y(){for(X
=[c=0],q=i=4;i--*K;X[i]=p*A-(p/9|0)*145,d=h+(K+25?p+K:X[i]),c|=Z[d/A|0]&1<p=B[i];for(c?0:K+25?h+=K:t?B=X:0;q--;X[s=p/A|0]|=r=1<if(e=!e)if(h+=A,f)for(h=89,B=[[-7,-20,6,17,-9,3,3][t=++t%7]-4,0,k=1,t-6?-A:2],Z
[l=m=25]=-1;--l;)(Z[m-1]=Z[l]|X[l]|-2047)==-1?(P+=k++):--m;K=f=0;for(S=P,q=5;S
+="
",++q<26;)for(i=X[q]|Z[q];i;i>>>=1)S+=i&1?"■":"_";D.innerHTML=S;Z[6]&
32||setTimeout(Y,99-P)}Y(h=e=K=t=P=0)</script>
(タグの括弧を全角にしてあります……こういうのどう打つんだっけ?)
うう……勝てない……先人とはこんな偉大な物だったのか……
しかし、会社の一日を綺麗につぶしてしまった。てか、こういうのって楽しいよね^^(コラ

PageTop

bluetoothなネタ

ちょっと勉強不足なのでいい加減なこと書いてるかも知れませんが。

個人的には結構bluetoothは好きなんですよ。専用のレシーバがいるわけではないので、レシーバ一個あれば何でもつながるし。
でも……便利なのって「一対で使う」時だけなんですよね。

最近AppleのWireless Keyboardを買って、ジョブスのくせにいい仕事しやがって、な感じなんですが(なんて言い草)いざ使おうとすると……いろいろ面倒なんですよ。
家で一台、会社で一台、連携用でノート一台で使っているんですが、その「任意のPC」につなぐのが面倒この上ない。
たとえばノートでペアリングしている時に、「次はデスクトップで……」と電源を入れると勝手にノートにつながる。(これは当たり前)
で、つなぎ直そうとすると、その接続情報を一旦消して、ペアリング状態にして、PCの方で認識しないといけない。ノートPCが切ってあれば情報を消すとか要らないんだけど。
(そもそも、強制ペアリングボタンとか普通のキーボードにはあるんだけど、Appleの場合普段いらないので知らないだけだったり……?)
で、なぜかその認識に結構時間がかかる。(2~3分リトライしてやっと認識する、とか)
もしかすると単純に手順がよくないのかも知れないけど、もともとつなぎ換えを想定してない気もするので、こんな物……という気もする。でも、折角どこでもすぐ出せる……な素性のキーボードなのに、取り回しの良さがスポイルされてるような。

そうそう、このキーボード、TC1100につなごうとすると認識しないんですよ。原因がよくわからなかったんだけど(何せ認識画面まで言って、パスキーだけ表示されない)どうもWIDDCOMスタックのバージョンが古いせいらしい。でも、これってアップデートは提供されないし、でも他スタック(体験版)で認識するし……ちょっと腹立たしい。
いや、解るんですよ。スタックのバージョンアップでお布施が欲しいとか。でもなぁ……売ってるの基本的に海外のサイトだし、と言うのもあるし、だいたい……ドライバのアップデートが有償なのこれくらいだよ?って気もするし。(そうでもないか……PCとOSも同じような感じだし)
まあ、どうも情報を見ていくと……bluetoothの開発は洒落にならないくらいコストかかるようで仕方ないのかも知れませんが。道理でBTのガジェットは高いわけだ。

とまぁ、中途半端に便利なせいで妙にイライラするわけですが。というか、他にも結構BTのガジェット持ってるんだけど、結局常用してないなぁ……
(ヘッドホンとかも、ペアリング操作が微妙なんだよねぇ……)
マルチペアリングとか、その辺の機能をもうちょっとがんばって欲しい気がします。あんまりするとセキュリティ的に微妙なんだろうけどね。

PageTop

ガンマの話3

忘れた頃にようやく本題。

で、まあガンマを使うのはグラフィックエディタを作る人間くらい
かと思っていたら……プログラマを初めて苦節×年、忘れた頃に
それはやってきました。

ゲームのオープニングで、字幕スクロールをしようと思ったのです
が、ま、折角なのでスムーススクロール、要するに0.5ドット
スクロールでもしようと思ったわけです。
こんな単語を書くと「ああ、TOWNS」なんて思う人は歳がばれますね。

で、書いてみると、ちらつくんですよ。字がちらちらと。MSX2の
漢字モードの様に。(おおげさ、と言うかこれも(ry)

で、原因を調べると0.5ドットずらしの時は画面が暗くなっている、
と。たとえば輝度が255の画素と0の画素は128じゃなくて160位に
持ち上げないと明るさが合わないわけです。(と、グラフィック
エディタでしこしこ調べてました)
そこまでして、やっと「ああ、ガンマか……」と。

最近でもTVのスタッフロール見てるとちらちらしてることが
ありますが、あれも考えてみると液晶TVのスケーリングの手抜き
ですね。(最初はTV局の機材が……とか思ったけど、んなわけ
ないよね。てか放送時のサイズと表示サイズが同じと限らないの
すっかり忘れてた^^)

このときの字幕のサイズはあまり大きくなかったので(画面半分も
使わなかった……上下にフェードとか掛けてたせいもあって)
ごり押しで計算させてました。でも、さすがにガンマ計算をドット
毎に3回は死ぬわけで……というか、そもそもガンマの計算を
ばらすのはちょっと学力が……なので二乗・平方根で近似しました。
言い訳すると、画面のガンマは正確に決まってないし(だいたい
2.2と言われてますが)Macだと1.8だし、中間の近似でいいか、と。
(いや、Windowsアプリだから。Winでγ=1.8な人いないから、と
いうツッコミは無粋って事に……)

まあ、要するにドットサイズが正確に等倍、整数倍にならない処理
では、ガンマを考慮しないと明るさが狂うわけです。これはいろんな
場所に影響が出るわけで、たとえばゲームの背景を見ていて、天井の
タイルの線が点線になっていると「ああ、リサイズの時にガンマ
が……」と言うツッコミになるわけです。(家庭用の場合はにじみ
やすいのでバレない……のはブラウン管時代の話で、今時だと結構
解るのかな?)
Direct3Dでも当然テクスチャの拡大縮小があるわけで、内部では
ガンマ設定があったり、浮動小数演算があったりいろいろしてます
が、こういうのって再現してるものですかね?
まあ、ハード作ってる人は気にしていろいろしてそうですが、なんと
なく使う方は無頓着な気が……

とまあ、ようやくガンマを活用する機会を得たわけですが、この話は
まだちょっと続いたりします。

PageTop