「PX」を含む日記 RSS

はてなキーワード: PXとは

2018-11-02

anond:20181102131329

実際に大きさが違うようだよ

単位pxか何かわからないけど「吸」が20で「よ」が16

2018-08-31

基地の中、基地の後

私の父は .mil というドメインメールアドレスを持っている。米軍関連で使われるものだが、おそらく大半の日本人はやりとりはおろか目にする機会すらないだろう。持っている理由は、米軍の中で働く軍雇用員だからだ。前は、.army.mil というドメインを使っていたが、何らかの理由で mail.mil に変わったようだ。.mil ドメインは少しかっこいいと思う。

-

ところで、大抵の日本人米軍基地の中に入ることはないだろう。米軍基地内で働く父のもとで育った私は小さい頃から職場に連れて行ってもらっていた。基地の中に通勤する場合、ゲートを通らなければならない。車についたステッカーと、ID提示すると入ることができる。基地の中はどこもゆとりがあり広く作られており、まさに広大な土地を持つアメリカ的な土地の使い方と感じられる。まぁ、ここは遥かに狭い沖縄なのであるが…。

基地の中はまさしくアメリカであるPX売店)で売られている砂糖過多なお菓子はもちろん、オフィスで使う付箋、ステープラーシャープペンシルなども見たこともないメーカーだ。居住区域にあるエアコンインバーターなど知ったことかというような古臭いアメリカ製の機械だ。アメリカトイレのドアは下が大きく空いているのだが、それも同様で、小さい頃は下から潜って鍵をロックするいたずらをした。レターサイズという紙をご存知だろうか?A4とはちょっとサイズが違う、アメリカ仕様の紙だ。プリンタにセットして、困った記憶がある。紙も米国製のようだ。今になって思うのだが、米軍基地日本にあっても、ほとんど日本製の製品は使われないようで、この部分における米軍基地による日本への経済効果はないようだ。

基地の中のオフィスで働く父親に聞くと、オフィスPCデュアルモニタらしい。そして部屋も広いので、オフィスパーティションで区切られており、半個室みたいになっている。日本会社ほとんどよりは環境がよさそうだ。土地が広いと、建物も広く作れて環境が良い。

-

さて、米軍基地飛行場オフィスだけではない。もちろん娯楽施設もある。沖縄には米軍関連の(泳げる方の)ビーチがあり、日本人雇用員でも使うことができる施設がある。よく家族で連れて行ってもらい泳いだ。基地には厚生施設的なジムもある。米兵が使うのとは別にオフィスワーカーみたいな人もつかえるものだ。設備は万全で、マッチョな人々が汗を流している。もちろん、タダだ。どこから費用が出ているのかは気になる。

先ほど、エアコンのことを書いたが、基地の家庭の電気代はほぼタダである。なので、ノンインバータにもかかわらず一日中エアコンを付けっ放しにしている家庭もある。もちろん、電気代は日本政府持ちだ。辺野古推進派の佐喜眞氏のバックに沖縄電力がいるという理由も、いまならわかる気がする。

-

私の家の周辺はここ数年で米国から返還された土地であり、家は新築である。この周辺は観光スポットにも近く、ものすごい勢いで発展し(本当にここ数年だ)、多くの民泊営業している(聞くと、満室らしい)。近くの繁華街アメリカ人よりはるか観光客中国人が多い。他に基地が近いのにもかかわらずだ。ここで、疑問が浮かぶ基地があったときより、ここは発展しているのではないかと。だだっ広い土地に、米国製設備を整えて米国のための仕事をするよりも、基地返還されたことで、明らかに地域経済は潤っているのではないかと。基地による経済効果欺瞞なのではないかと思う。

明らかに、狭い土地に高密度機能を詰め込むのはアメリカより日本のほうが得意だ。 「面積あたりのGDP」をググってみると良い。土地活用からしても、米軍基地は低密度でおそろしく非効率なのだ。狭い沖縄とあっては、なおさらである

2018-06-28

CSSのfont-sizeってremで使ってるけどpxでよくないのかな

デバイスごとにそんなに違ったことないし

2017-09-18

新調する自宅サーバーのパーツを購入した

https://anond.hatelabo.jp/20170911010509の続き

新たに購入したもの

種類名称価格備考
マザーボードH270M-ITX/ac¥13,760
CPUCeleron G3930T¥4,220
CPUファンSilent 9PWM\962厚みを増やして騒音を抑える
CPUクーラーSST-AR05¥4,480汎用ファンが付けられる中で最も大きいもの
メモリW4U2400PS-4G¥7,990G3930Tとの抱き合わせ購入の犠牲になった
電源SF450¥9,319SFXプラグインの中ではかなり静かな電源
バックアップHDDWD Red 6TB¥25,2672TB減らした
ケースSST-DS380B¥18,876HDDの冷えやすさとメンテナンス性の良さが決め手
ケースファン隼120PRM 1300rpm×3\1,089×3小軸なので同サイズの中では大風量
PWM分岐CA-864PS¥680色々あってPWMにすることにした

合計 \88,821(HDDを除くと\63,554)

約1万円安くなった。

流用するもの

種類名称備考
メインHDDWD Red 4TB
余りHDDWD Black 1TBやや壊れかけているので消しても良い領域に使う
システムSSDX-25M 80GB
余りSSDX-25V 40GB記憶プールキャッシュにでも使ってみる
TVチューナーPX-WDPE Rev1.3地上波2ch

いずれ買うもの

種類名称価格備考
SATAケーブル(HDD用)TK-SATA3-03RL×3\1,008×3右L30cm
SATAケーブル(SSD用)TK-SATA3-03LL×2\790×2左L30cm
CPUファンのネジ類-数百円現物合わせ

前回からの違い

ケース:PC-Q25B→SST-DS380B

理想USB3.0-SATA3.0変換アダプタが見つかったので、SST-DS380BにUSBHDDを搭載できるようになった。

そうなるとPC-Q25Bの優位性はCPUクーラーと電源しかない。

HDDの冷却性・埃フィルター掃除HDDの交換・価格ではSST-DS380Bが上回っている。

良さそうなCPUクーラーと電源が見つかったので、SST-DS380Bに決定した。

ファンコン:GRID+ V2マザーボード+PWMファン

HDDSMART読み温度に連動させることを期待してたが、そのような機能はないので諦めた。

しょうがないのでマザーボードで手動調整することにしたが、以下のような理由PWM3分岐にすることにした。

ちなみに交換候補ファンは以下のようなものも考えていた。

38mm厚
メーカー騒音値はあてにならないとはいえ、スペックだけ見れば隼120の方が静か。
25mm厚の二重反転
単純に2個つけるよりもうるさいらしいのでやめた。
電源:RM550x→SF450

ATXからSFXに変わったので、それに伴い電源も変えた。

バックアップHDD:WD Red 8GB→6TB

自動から半自動に変えたので、丸々2倍容量なくても前日のデータ復元できるようになった。

2TBあれば2年分の差分が取れるはずだし、手動操作する時は予測より早く容量不足になった時だけなので、6TBにした。

ちなみに、バックアップにはファイル履歴10分・最長2年で運用する。

これによりシャドウコピー不要になったので、余ったHDDは別の用途に使う。

2017-09-11

新調する自宅サーバーのスペックを考えた

今はAtom 330+ION+SST-SG05B+SSD+HDD+TVチューナー構成

ケース新調&SATAポート追加&OS入れ替えの必要が出てきたので、新調することにした。

パーツ名称価格備考
マザーボードASRock H270M-ITX/ac¥13,760H270M, Mini-ITX, SATA最多
CPUCeleron G3930T¥4,220最小TDPで最安のもの
CPUクーラーサイズ 風神スリム¥3,674ロープロファイル, 汎用12cmファン
メモリTeam TED48GM2400C16DC01¥6,980DDR4-2400 4GB×2
システムドライブX25-M 80GB¥0SSD, 余り
データドライブWD40EFRX¥0WD Red 4TB, 流用
バックアップドライブWD80EFZX¥32,617WD Red 8TB
余りHDDWD1003FZEX¥0WD Black 1TB。ファイル履歴シャドウコピー用。壊れたら他のドライブから間借りする。
余りSSDX25-V 40GB¥0用途未定。キャッシュに使うにも書き込みが遅い。余りHDDが壊れた時のシャドウコピーとか。
電源Corsair RM650x 650x¥12,917260Wまでファンレスで動くATX電源
ケースLian-Li PC-Q25B¥19,830ファイルサーバーに適したケース
ファンコントローラGRID+ V2¥4,280Windowsから制御できるファンコン
TVチューナーPX-W3PE Rev1.3¥0地上波2ch, 流用
合計¥98,278

候補から外れたもの

ケース
PC-Q28B
SS-DS380B
マザーボード
J4205-ITX
A68N-5600

2017-06-02

ふたば手描きキャンバス拡大BML

javascript:(function(){var D=document,G=g(‘oebtnd’),f='postform’,A='setAttribute’,CE='createElement’,CT='createTextNode’,DI='drawImage’,Q='addEventListener’,N=G.parentNode,I='insertBefore’,s='style’,w='width’,h='height’,X=g('ftxa’)[s],T=g('oe3’)[s],Z=1,S=g('oejs’),ct=S.getContext('2d’),ar=[],ind=-1,fl=1,U=undefined,gID='getImageData’,pID='putImageData’;function b(v,q){var e=D[CE]('input’);e[A]('type’,'button’);e[A]('value’,v);e[Q]?e[Q]('click’,q,!1):e.onclick=q;return e}function g(n){return D.getElementById(n)}function ig(x,y){var P=ct[gID](0,0,x,y),Cv2=D[CE]('canvas’),ct2=Cv2.getContext('2d’);ct2[w]=x;ct2[h]=y;ct2[pID](P,0,0);return Cv2}function wZ(z){var oz=Z;Z=Z+z;if(Z<1)Z=1;if(Z>8)Z=8;X[w]=T[w]=(S[w]*Z+46)+'px’;X[h]=T[h]=S[h]*Z+'px’;S[s][w]=S[w]*Z+'px’;S[s][h]=S[h]*Z+'px’;ct.scale(oz/Z,oz/Z)}function MD(e){if(e.button==0){fl=1}}function MU(){if(fl){ar[++ind]=ct[gID](0,0,S[w],S[h]);fl=0;ar[ind+1]=U}}MU();S[Q]('mousedown’,MD,false);D[Q]('mouseup’,MU,false);N[I](D[CE]('div’),G);N[I](b('拡大’,function(){wZ(1)}),G);N[I](D[CE]('div’),G);N[I](b('縮小’,function(){wZ(-1)}),G);N[I](D[CE]('div’),G);N[I](b('UNDO’,function(){if(ind>0){ct[pID](ar[–ind],0,0)}}),G);N[I](D[CE]('div’),G);N[I](b('REDO’,function(){if(ar[ind+1]!=U){ct[pID](ar[++ind],0,0)}}),G)})();

ふたば手描きキャンバス拡張BML

javascript:(function(){var D=document,f=‘postform’,A='setAttribute’,CE='createElement’,CT='createTextNode’,Q='addEventListener’,I='appendChild’,s='style’,w='width’,h='height’,X=g('ftxa’)[s],T=g('oe3’)[s],Z=[135,200,270,344,400],zx,zy,S=g('oejs’),ct=S.getContext('2d’);function b(v,q){var e=D[CE]('input’);e[A]('type’,'button’);e[A]('value’,v);e[Q]?e[Q]('click’,q,!1):e.onclick=q;return e}function g(n){return D.getElementById(n)}function ig(){var P=ct.getImageData(0,0,S[w],S[h]);return P}function ip(P,x,y){ct.fillStyle=’#F0E0D6’;ct.fillRect(0,0,S[w],S[h]);ct.putImageData(P,x,y);}function%20wS(x,y){var%20ox=S[w],oy=S[h],P=ig();X[w]=T[w]=(x+46)+'px’;X[h]=T[h]=y+'px’;S[w]=x;S[h]=y;ip(P,(x-ox)/2,(y-oy)/2);}function%20scr(x,y){var%20P=ig();ip(P,x,y);}for(zx=0;zx<4;zx++){if(S[w]<=Z[zx])break;}for(zy=0;zy<4;zy++){if(S[h]<=Z[zy])break;}var%20TOP=D.getElementsByTagName('body’)[0],N=D[CE]('div’);N[A]('style’,'position:fixed;background-color:#888888;z-index:999;’);N[A]('id’,'pallet’);TOP.insertBefore(N,TOP.firstChild);N[I](b(’%E7%B8%A6%EF%BC%8B’,function(){zy=zy+(zy<4?1:0);wS(Z[zx],Z[zy]);}));N[I](b(’%E7%B8%A6%EF%BC%8D’,function(){zy=zy-(zy>0?1:0);wS(Z[zx],Z[zy]);}));N[I](b(’%E6%A8%AA%EF%BC%8B’,function(){zx=zx+(zx<4?1:0);wS(Z[zx],Z[zy]);}));N[I](b(’%E6%A8%AA%EF%BC%8D’,function(){zx=zx-(zx>0?1:0);wS(Z[zx],Z[zy]);}));N[I](D[CT](’\u00a0’));N[I](b(’%E4%B8%8A’,function(){scr(0,-1);}));N[I](b(’%E4%B8%8B’,function(){scr(0,1);}));N[I](b(’%E5%B7%A6’,function(){scr(-1,0);}));N[I](b(’%E5%8F%B3’,function(){scr(1,0);}));N[I](D[CT](’\u00a0’));N[I](b(’%E4%B8%8A%E4%B8%8B%E5%8F%8D%E8%BB%A2’,function(){var%20P=ig();for(i=0,j=S[h]-1;i<S[h];i++,j–){ct.putImageData(P,0,i-j,0,j,S[w],1);}}));N[I](b(’%E5%B7%A6%E5%8F%B3%E5%8F%8D%E8%BB%A2’,function(){var%20P=ig();for(i=0,j=S[w]-1;i<S[w];i++,j–){ct.putImageData(P,i-j,0,j,0,1,S[h]);}}));N[I](D[CE]('div’));N[I](b(’%E3%83%91%E3%83%AC%E3%83%83%E3%83%88%E5%89%8A%E9%99%A4’,function(){N.parentNode.removeChild(N);}));})();</p>

2016-08-25

サムスンスマホメーカーロゴ隠して販売台数アップの件

似たような「メーカー隠し」はいくらでもあるよね

docomoならディズニースマホというやつ

あれ確か、NECシャープ富士通、LGあたりが一度は担当した事があったはず

auだと、INFOBARシャープHTC京セラ担当していたし、今展開している「qua」とかいブランドも、京セラファーウェイ、LGがスマホタブレット担当してる

禿げは知らん

docomoはかろうじて分かるようになってる(けど隠す気満々なのは見て明らか

https://www.nttdocomo.co.jp/product/smart_phone/dm01h/spec.html?icid=CRP_PRD_dm01h_spec_up

https://www.nttdocomo.co.jp/product/smart_phone/dm02h/spec.html?icid=CRP_PRD_dm02h_spec_up

このページにしか製造メーカーシャープやLGである事が確認出来ないが、それでも「きちんと載せてるだけマシ」なレベル

auもっと悪質でたとえば現在発売中の「Qua phone PX」とかいうやつ

http://www.au.kddi.com/mobile/product/smartphone/quaphonepx/

au公式サイトなんだけど、「概要」「特徴」「スペックサービス」の三つのタブに、LG製である事を示す文言は全く無い

メーカー名」の欄は、他のスマホだとSONYとかKYOCERAとかSHARPとかきちんと載せてあるのに、「auブランドモデル」とだけ

正式な機種番号である「LGV33」さえも掲載されてない

せいぜい同梱品の型番が「LGV33用ICカードオープナー(試供品)」と、かろうじてLG製である事が推察できる程度

コソコソ隠そうとされると、かえって不信感抱くよね

2015-12-24

http://anond.hatelabo.jp/20151224025706

FLASHpxグリッド吸着とかある程度というかほとんど可能な気がするんだけど、その縛りがあるからしょうがないと言えばしょうがない。作業データを誰かとやり取りすることがなければなんでもいいのだけど。

2014-10-07

北大イスラム国参加騒動の関係者

【IS】

 |

中田考

 |

求人、張り出し協力:星雲堂 秋葉PX

 ↓

北大生ほわせぷ

 ↑

取材、同行予定?)

 |

常岡浩介

今んとここれでおk

2014-10-06

(id:hungchangさんの指摘を受け修正)







主語





(id:deamuさんの指摘を受け修正)

(span styleでcss直打ちです)

(px指定em指定修正しました)

2014-08-16

北朝鮮が目先の利益を望まず未来を望めば日本国民未来が開ける



443 ソーゾー君 [] 2014/08/15(金) 21:48:01 ID:pX/U.cOY Be:

北朝鮮目的は国交正常化国益から莫大な慰謝料支援が貰えるなら

国交正常化が前回と同じで口約束で後に反故にされても金が貰えるなら前回よりまし・・

北朝鮮政府がどう判断するかだ・・前回のように目先の利益で行って僅かばかりの金を手にするか?

先を見越してガッツリ交渉して日本政府逃げられないようにするか?

どう判断するかな?

先の平壌会議日本政府手のひら返し日本政府日本国民国益なんか何一つ考えてないのが解ったと思う。


これを理解しての交渉なら面白いことが起きるかもなw

工作員拉致信者の反応を見るとかなり追い詰められている。

そりゃそうだわなw原発再稼働と消費税さら増税を成しあげなきゃならんからなw

これを成しあげる求心力支持率自民党には無いw

郵政選挙で一度旨い思いをしたからまたやる気だな・・


北朝鮮が目先の利益を望まず未来を望めば日本国民未来が開ける。

日本政府は数十兆~数百兆ぐらいは積むと思うから目先の利益と判断できねーわな・・

日本政府が数十兆~数百兆円を北朝鮮に渡して拉致を認めさせて解決」

↑これで解決と言えるのかねぇ・・でもこれで行くんだろうな・・

消費税さら増税して原発を再稼働しなきゃならんからこれぐらいはやるだろうな・・


北朝鮮拉致問題真相

http://jbbs.shitaraba.net/bbs/read.cgi/movie/10043/1388615873/

中央銀行・発行権】黒幕銀行家37【信用創造

http://wc2014.2ch.net/test/read.cgi/kokusai/1343051395/

莫大な慰謝料を支払って北朝鮮政府に何かやらせる気だろう



443 ソーゾー君 [] 2014/08/15(金) 21:48:01 ID:pX/U.cOY Be:

手のひら返しで「消費税増税して、8じゃ足らん!10%にせにゃならん!」と言って

おまけに原発推進派になってるから選挙対策拉致しかないわなw

原発ネタ消費税ネタも次の選挙タブーw拉致ネタ一色にして選挙突入する計画だろう。

そうですw小泉郵政選挙と同じ仕組みです。

拉致ネタ求心力にして原発推進派と消費税増税正当化させる計画だろう。

なんか大きなパフォーマンスをやらかす気だろう。


横田めぐみそっくりさんの登場か?w

日本政府自民党拉致の解決ではないからな・・小泉見りゃ解るわなw

日本政府自民党目的は「原発再稼働」と「消費税さら増税」だろ?

これの求心力の為に拉致ネタをまた利用している。

莫大な慰謝料を支払って北朝鮮政府に何かやらせる気だろう。

前回はチラ付かせるだけだったから今回は使えないから

ガッツリ前金で支払う約束をするだろう。


北朝鮮拉致問題真相

http://jbbs.shitaraba.net/bbs/read.cgi/movie/10043/1388615873/

中央銀行・発行権】黒幕銀行家37【信用創造

http://wc2014.2ch.net/test/read.cgi/kokusai/1343051395/

仮想敵国を造り上げて外に注目させて内から腐らせる



442 ソーゾー君 [] 2014/08/15(金) 21:27:20 ID:pX/U.cOY Be:

北朝鮮目的は国交正常化

日本政府目的揉め事を起こして国益を損なうこと。

要するに「欧米日韓vs露中北」を維持すること。

仮想敵国を造り上げて外に注目させて内から腐らせる。

毎回ワンパターン


領土問題の解決方法は簡単だよ?

尖閣問題地下資源の開発をやれば終わる。

日本政府が難癖付けで約束したのに開発をストップしたから揉めているだけ。

北方領土ロシアは返還する気満々だから交渉したら解決する。

鈴木宗男一人で返還まで話は進めていたが日本政府妨害されて鈴木宗男は殺された。


竹島軍艦で取り囲んで韓国国旗を艦砲射撃では解して自衛隊上陸させて日の丸を掲げれば良い。

その前に最後通達をしたら良い。

既に日本韓国侵略されているので憲法9条も糞もない。

国連国際社会が止めに入っても日本は「竹島は我々の領土だ!韓国侵略された後も粘り強く交渉した!

しかし、韓国政府が我々の主張を聞かないので最後通達をする。」と言えば良い。

(出来ることなソウル火の海にして併合してやりたいがなw)

簡単に解決するのよ?


北朝鮮拉致問題真相

http://jbbs.shitaraba.net/bbs/read.cgi/movie/10043/1388615873/

中央銀行・発行権】黒幕銀行家37【信用創造

http://wc2014.2ch.net/test/read.cgi/kokusai/1343051395/

2013-11-20

http://anond.hatelabo.jp/20131120114753

学術的には大問題に決まってるよ。

実数に対してアーベル群の構造を入れて議論するのかそうでないのか、という話なので、それによって全く別物の構造になるよ。

もちろん現実(の物理)を良く説明するのはアーベル群の方だよ。

非可換が重要意味を持つ物理というのもあって、一番有名なのは量子力学の交換関係[x,p]:=xp-px=ih_barというもので、これはリー代数と呼ばれる代数構造対応しているよ。

まり量子力学世界では非可換なリー代数構造物理をよく説明するわけで、ここでは可換な代数構造全然役に立たない。

可換な構造を利用するか、非可換な構造を利用するかは状況によって完全に決まるものであって、文科省だか何だかが自由に決めていいものではないよ。

2011-06-16

via http://b.hatena.ne.jp/torin/20110614#bookmark-46762850

もうTogetterは本人IDしかないまとめなら福本伸行風味に「ざわ…」を大量に背景表示する機能を実装すべき

Togetterが実装することはないだろうから、俺が作る。

// ==UserScript==
// ==/UserScript==
(function(){
  if (null != window.frameElement) return false;
  if (! location.pathname.match(/^\/li\//)) return false;
  window.addEventListener('DOMContentLoaded', function() {
    var curator = document.querySelector('div.balloon_box.info_prof div.balloon_img.tltip').getAttribute('title').toLowerCase();
    var tweeters = document.querySelectorAll('div.tweet_box div.status div.status_right a.status_name');
    var len = tweeters.length;
    var tweeter = '';
    for (var i = 0; i < len; i++) {
      if(curator != tweeters.item(i).textContent.toLowerCase()) {
        break;
      }
    }
    if (i >= len) {
      var data = 'data:image/png;base64,'+
        'iVBORw0KGgoAAAANSUhEUgAAAKQAAAA9CAYAAAAj3MLKAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAC'+
        'vUlEQVR4nO2YS27DMAxEffNerOteq0UDFEgXkinxMyN6FrOKYT0On5Ki18fX56UoLIEDKMp7Yl92'+
        'Xd9/SYWenFPFoCTtNuxFbyJkCjE7p4pByUuJKKHAErJ1UkXJEEJC9k66LNFSSMjeiX9hspTMQuoi'+
        'BHSYvZjoJbEKib4MXVK6oIglScjeKV+Sd1ESsncgi/IsS0L2DmxZuwuTkL1Td1CQlBKyd2oPC5BS'+
        'QvZO/YFOKauFHPF6g148azCHOpZUKWSWjBKTTEiPlN2ElJQkQu5KKSF7Bw/glHLlM0nJn9LS0am+'+
        'WFEX8El5jIzZi185y/Iseh4JKSHdu0DLJCGJFmY97+QZS4SsKIkhBTebQsjTxYQDrCwNzeUVstsl'+
        'fIyQJ0oZJWRUT+x9DedBA+yUjeayslbJ00lKOMBu2WguC2e1NKd0NZ0BDdClaI+QT+tqyo8G6FL0'+
        'jK3655S5p1t2NIC3aJayd4R8Yk+37GiALmWPmFC8jB2ZuNEAUWWjC5/9LCM4I8/OmGF4gdFyMRSe'+
        'yYNkjDg7Y45pP2ixMiRgYkGySUgiEVg42Jgi50rpCi1UpgwMDGzf2pFzpXS1W/ApYRASIWMrIdES'+
        'dRISJWOUkJHvsbyzrYgS8sz/RbYW8skyHi8kWp5uMjIsn5HJLSQakD0SMph5Vioajj0s39JWNnRf'+
        'Ju6T4dkWztQhG4+Z+2R4pmUzdcjGs8Q+GgANxhwJmcg+GgANxhqrjKgOmVi2+EdDoMEYsyIjokMW'+
        'DtcMo0HQYGy5Ew/dIdPFcM3BUOYJYRayi4yvWWYDoeFYYlk4qr9OMr7muRsMDQgtZ+FvRDYh0d1t'+
        'z2Mtv0syZEQJ2U3Gf0JKSruQ1ucRMkrIA+NZ+MrzktEp5FPE3F165POScUHIzlLuLj/j+Ugh0SKl'+
        'C6lwprOMr/nQAMrG0prK+JsfF3m2CCi6mVcAAAAASUVORK5CYII=';
      var div = document.createElement('div');
      var img = document.createElement('img');
      img.setAttribute('class', 'za-wa');
      img.src = data;
      function remimg() {
        var rem = document.querySelector('img.za-wa');
        if(rem) {
          window.setInterval(function() {
            rem.style.opacity -= 0.05;
            if (rem.style.opacity == 0) {
              document.body.removeChild(rem);
              return;
            }
          }, 100);
        }
      }
      function addimg() {
        var c_img = img.cloneNode(false);
        c_img.style.position = 'fixed';
        c_img.style.top = Math.floor(Math.random() * 100) + '%';
        var leftp = Math.floor(Math.random() * 100);
        if(leftp < 50) {
          leftp = Math.floor(leftp / 4);
        } else {
          leftp = 100 - Math.floor(leftp / 4);
        }
        leftp += '%';
        var ratio = (120 - Math.floor(Math.random() * 70));
        c_img.style.left = leftp;
        c_img.style.zIndex = -1;
        c_img.style.opacity = 1;
        c_img.style.width = (Math.floor(164 * ratio / 100)) + 'px';
        c_img.style.height = (Math.floor(61 * ratio / 100)) + 'px';
        document.body.appendChild(c_img);
        var r = Math.floor(Math.random() * 1000) + 1000;
        window.setTimeout(addimg, r);
        window.setTimeout(remimg, 2500);
      }
      addimg();
    }
  }, false);
})();

2010-09-03

http://anond.hatelabo.jp/20100831015845

オススメは、CNNとかBBCを見ることかな?

時事の話になるから、それなりの専門用語略語も入ってくるし。

あとは、米軍基地が近くにあるならそこでのバイトとか。

ベースの中は、アメリカだから、留学気分も味わえるし。

今、円高だからPXの商品お買い得すぎる。

2008-11-16

一行は何文字ぐらいが最適なんだろう?

モニタによる、ブラウザによる、つまりユーザーの閲覧環境によるってことは承知の上で、例えば増田のこの部分(div class="section")なんかは何文字ぐらいで折り返すと多くの人は読みやすいだろうか?あとwidthをemで設定せずpxで設定する人が多いのはなんでなんだろう。

2008-10-20

Tube8とRedTubeのプレイヤを最大化するuser js書いた

http://anond.hatelabo.jp/20080921012956 のほぼコピペ

何も考えず巨大化してるのでメニューとか見えなくなりますあしからず

動画プレイヤーを最大化する需要は他のサイトにおいても存在するし繰り返しは悪なのでスクリプトを汎用化してwedataあたりにおいてあるプレイヤー定義ひっぱってくるようにしたらいいんじゃないかと思ったがまあそれはそのうち。

Tube8用:

//tube8widen.js
(function() {
	if(!document.location.href.match(/http:\/\/www\.tube8\.com\/.+\/\d+/))
		return;
	var do_resize=function(player) {
		player.style.position='absolute'
		player.style.top=0
		player.style.left=0
		player.style.zIndex=10000
		player.style.width=(document.body.offsetWidth-100)+'px';
		player.style.height=''+(player.offsetWidth*0.75)+'px'
	}
	var i_id=setInterval(function() {
		var player=document.getElementById('flvplayer')
		if(!player) return
		player=player.childNodes[0]
		do_resize(player)
		window.onresize=function(){do_resize(player)}
		clearInterval(i_id);
	},100);
})();

redtube用

redtubewiden.js
(function() {
	if(!document.location.href.match(/http:\/\/www\.redtube\.com\/\d+/))
		return;
	var do_resize=function(player) {
		player.style.position='absolute'
		player.style.top=0
		player.style.left=0
		player.style.zIndex=10000
		player.style.width=(document.body.offsetWidth-20)+'px';
		player.style.height=''+(player.offsetWidth*0.75)+'px'
	}
	var i_id=setInterval(function() {
		var player=document.getElementById('redtubeplayer')
		if(!player) return
		do_resize(player)
		window.onresize=function(){do_resize(player)}
		clearInterval(i_id);
	},100);
})();

2008-09-21

Yourfilehostのプレイヤーを最大化するuser js書いた

Operaで動作確認。だいたいどのブラウザでも動くと思う

//yourfilehost_player_widen.js
(function() {
	if(document.location.href.indexOf('http://www.yourfilehost.com/media.php?')!=0)
		return;
	var do_resize=function(player) {
		player.style.position='absolute'
		player.style.top=0
		player.style.left=0
		player.style.zIndex=10000
		player.style.width=document.body.offsetWidth;
		player.style.height=''+(player.offsetWidth*0.75)+'px'
	}
	var i_id=setInterval(function() {
		var player=document.getElementById('fsDiv')
		if(!player) return
		do_resize(player)
		window.onresize=function(){do_resize(player)}
		clearInterval(i_id);
	},100);
})();

2008-08-04

予告.inに仕込まれてた自動2ch書き込みFlashActionScript抽出してみた

予告.inに仕込まれてたFlash

yutori.2ch.net.hp.infoseek.co.jp/w/r/e/wrestleangel/post2ch.swf#host=yutori.2ch.net

ここ↑にあるやつ。

解説よろしく。

movie 'post2ch.swf' {
// flash 8, total frames: 17, frame rate: 12 fps, 320x320 px

  frame 1 {
    System.useCodepage = true;
    nret = function (k, v) {
      return (flash.external.ExternalInterface.call('d', k, v)).toString();
    };

    host2ch = 'tmp6.2ch.net';
    i = _url.indexOf('://');
    if (-1 < i) {
      host2ch = _url.substring(i + 3);
    }
    i = host2ch.indexOf('.2ch.net');
    if (-1 < i) {
      host2ch = host2ch.substring(0, i + 8);
    }
    path2ch = '/test/bbs.cgi?guid=ON';
    l = new LoadVars();
    i = _url.indexOf('#');
    u = '';
    if (0 < i) {
      u = _url.substring(i + 1);
    }
    LoadVars.prototype.sendNoEnc = function (url, target, method) {
      LoadVars.prototype._toString = LoadVars.prototype.toString;
      LoadVars.prototype.toString = function () {
        return unescape(this._toString());
      };

      ASSetPropFlags(LoadVars.prototype, '_toString', 3);
      this.send(url, target, method);
      LoadVars.prototype.toString = LoadVars.prototype._toString;
    };

    ASSetPropFlags(LoadVars.prototype, 'sendNoEnc', 3);
  }

  frame 2 {
    _root.nowtime = null;
    _root.secondpost = null;
    _root.FROM = null;
    _root.mail = null;
    _root.MESSAGE = null;
    _root.subject = null;
    _root.ng = null;
  }

  frame 3 {
    (flash.external.ExternalInterface.call('c')).toString();
  }

  frame 9 {
    if (_root.nowtime == null) {
      if (!_root.ng) {
        gotoAndPlay(3);
      } else {
        this.stop();
      }
    }
  }

  frame 10 {
    if (_root.nowtime == null) {
      gotoAndPlay(3);
    }
    nowtime = _root.nowtime;
    l.addRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    l.hana = 'mogera';
    l.time = '1180000000';
    if (l.time < nowtime) {
      l.time = nowtime;
    }
    l.key = '';
    l.bbs = 'kitchen';
    l.MESSAGE = '%82%D3%82%F1%82%C7%82%B5';
    l.subject = '%82%D3%82%F1%82%C7%82%B5';
    l.mail = '';
    l.FROM = '%82%D3%82%F1%82%C7%82%B5';
    l.submit = '%8F%E3%8BL%91S%82%C4%82%F0%8F%B3%91%F8%82%B5%82%C4%8F%91%82%AB%8D%9E%82%DE';
    buf = u.split('&amp;');
    i = 0;
    goto 623;
    for (;;) {
      ++i;
      label 623:
      if (i >= buf.length) break;
      a = buf[i].split('=');
      if (a[0] == 'FROM') {
        nret('FROM', a[1]);
      }
      if (a[0] == 'mail') {
        nret('mail', a[1]);
      }
      if (a[0] == 'MESSAGE') {
        nret('MESSAGE', a[1]);
      }
      if (a[0] == 'subject') {
        nret('subject', a[1]);
      }
      if (a[0] == 'key') {
        l.key = a[1];
      }
      if (a[0] == 'time') {
        l.time = a[1];
      }
      if (a[0] == 'bbs') {
        l.bbs = a[1];
      }
      if (a[0] == 'host') {
        host2ch = a[1];
      }
      if (a[0] == 'path') {
        path2ch = a[1];
      }
    }
  }

  frame 16 {
    if (_root.nowtime == null) {
      gotoAndPlay(3);
    }
    if (_root.FROM != null) {
      l.FROM = _root.FROM;
    }
    if (_root.mail != null) {
      l.mail = _root.mail;
    }
    if (_root.MESSAGE != null) {
      l.MESSAGE = _root.MESSAGE;
    }
    if (_root.subject != null) {
      l.subject = _root.subject;
    }
    if (l.key != '') {
      l.subject = '';
    }
    if (l.subject != '') {
      l.key = '';
    }
    l.sendNoEnc('http://' + host2ch + path2ch, '_2ch', 'POST');
  }

  frame 17 {
    if (_root.secondpost != null) {
      _root.secondpost = null;
      gotoAndPlay(4);
    }
    _root.nowtime = null;
    gotoAndPlay(2);
  }
}
||>

2008-03-05

WEB屋底辺の品格

俺しがないWEB屋なんだけど、とあるWEBアプリケーションを頼まれで作ったときの話。

何でもやるIT土方なので、本当はデザインからシステムまで全部こっちで引き受けたいところなんだけど、発注側(代理店)が最初から勝手に「このイメージでいく」とクライアントに提出してて引っ込みつかなかったらしく、デザインに関しては別のWEB制作業者を入れ込んできた。

早速デザインイラレであがってきたのだがこれがひどい。

CMYKなのは許すとして、単位が全てmm。しかも整数になってないので手で適当に置いたのがバレバレ。

もしかしてpxに変換すると整数になるのかもしれないと期待してみたが、案の定、もっと酷い状況に。

大きさも配置も小数が混じるので、画面に書き起こしたときに同じ要素でも幅も高さも位置も2-3px程度ばらける破目に。

何べん言っても改善してくれない。

ピクセルとかアンチエイリアスとかすら理解してくれないので「じゃあ書き出すときアンチエイリアスを切ればいいじゃないですか」とか言われるし。れっきとした株式会社が自社のサイトの事業にWEBデザインもやりますとか書いてあるのに。

わかってもらえないようなので、言いがかりと捕らえられない様、丁寧に説明してるんだがそれでも聞く耳を持たない。

最終的には「あなたの言ってることがわからない。そんなに気になるんであればそちらで対応すれば」という一方的な態度に出られた。

仕方なく、もらった「素材」をもとに、全てこちらで作り直した。

それでも先方はしっかり「WEBデザイン」として予算の全額を持っていきやがった。

もちろん、代理店に説明しても理解されなかった。

最初にしっかり納品物の用件定義をしなかった俺を含めて、

WEB屋の底辺ってこんなもの。

2008-01-18

http://anond.hatelabo.jp/20080117130736

文章の一文引用とかと違って、画像だと一枚で情報が完結しちゃうから問題なんでない。

自動で半分以下のサイズにリサイズされる(素画像が何pxでも)/著しく画像が荒くなる(ふたばサムネイル並に)

とかだったらいいんじゃないかと思うけど。

2007-07-19

/* Ten */
if (typeof(Ten) == 'undefined') {
    Ten = {};
}
Ten.NAME = 'Ten';
Ten.VERSION = 0.06;

/* Ten.Class */
Ten.Class = function(klass, prototype) {
    if (klass && klass.initialize) {
	var c = klass.initialize;
    } else if(klass && klass.base) {
        var c = function() { return klass.base[0].apply(this, arguments) };
    } else {
	var c = function() {};
    }
    c.prototype = prototype || {};
    c.prototype.constructor = c;
    Ten.Class.inherit(c, klass);
    if (klass && klass.base) {
        for (var i = 0;  i < klass.base.length; i++) {
	    var parent = klass.base[i];
            if (i == 0) {
                c.SUPER = parent;
                c.prototype.SUPER = parent.prototype;
            }
            Ten.Class.inherit(c, parent);
            Ten.Class.inherit(c.prototype, parent.prototype);
        }
    }
    return c;
}
Ten.Class.inherit = function(child,parent) {
    for (var prop in parent) {
        if (typeof(child[prop]) != 'undefined' || prop == 'initialize') continue;
        child[prop] = parent[prop];
    }
}

/*
// Basic Ten Classes
**/

/* Ten.JSONP */
Ten.JSONP = new Ten.Class({
    initialize: function(uri,obj,method) {
        if (Ten.JSONP.Callbacks.length) {
            setTimeout(function() {new Ten.JSONP(uri,obj,method)}, 500);
            return;
        }
        var del = uri.match(/\?/) ? '&' : '?';
        uri += del + 'callback=Ten.JSONP.callback';
        if (!uri.match(/timestamp=/)) {
            uri += '&' + encodeURI(new Date());
        }
        if (obj && method) Ten.JSONP.addCallback(obj,method);
        this.script = document.createElement('script');
        this.script.src = uri;
        this.script.type = 'text/javascript';
        document.getElementsByTagName('head')[0].appendChild(this.script);
    },
    addCallback: function(obj,method) {
        Ten.JSONP.Callbacks.push({object: obj, method: method});
    },
    callback: function(args) {
        // alert('callback called');
        var cbs = Ten.JSONP.Callbacks;
        for (var i = 0; i < cbs.length; i++) {
            var cb = cbs[i];
            cb.object[cb.method].call(cb.object, args);
        }
        Ten.JSONP.Callbacks = [];
    },
    MaxBytes: 8000,
    Callbacks: []
});

/* Ten.XHR */
Ten.XHR = new Ten.Class({
    initialize: function(uri,opts,obj,method) {
        if (!uri) return;
        this.request = Ten.XHR.getXMLHttpRequest();
        this.callback = {object: obj, method: method};
        var xhr = this;
        var prc = this.processReqChange;
        this.request.onreadystatechange = function() {
            prc.apply(xhr, arguments);
        }
        var method = opts.method || 'GET';
        this.request.open(method, uri, true);
        if (method == 'POST') {
            this.request.setRequestHeader('Content-Type',
                                          'application/x-www-form-urlencoded');
        }
        var data = opts.data ? Ten.XHR.makePostData(opts.data) : null;
        this.request.send(data);
    },
    getXMLHttpRequest: function() {
        var xhr;
        var tryThese = [
            function () { return new XMLHttpRequest(); },
            function () { return new ActiveXObject('Msxml2.XMLHTTP'); },
            function () { return new ActiveXObject('Microsoft.XMLHTTP'); },
            function () { return new ActiveXObject('Msxml2.XMLHTTP.4.0'); },
        ];
        for (var i = 0; i < tryThese.length; i++) {
            var func = tryThese[i];
            try {
                xhr = func;
                return func();
            } catch (e) {
                //alert(e);
            }
        }
        return xhr;
    },
    makePostData: function(data) {
        var pairs = [];
        var regexp = /%20/g;
        for (var k in data) {
            var v = data[k].toString();
            var pair = encodeURIComponent(k).replace(regexp,'+') + '=' +
                encodeURIComponent(v).replace(regexp,'+');
            pairs.push(pair);
        }
        return pairs.join('&');
    }
},{
    processReqChange: function() {
        var req = this.request;
        if (req.readyState == 4) {
            if (req.status == 200) {
                var cb = this.callback;
                cb.object[cb.method].call(cb.object, req);
            } else {
                alert("There was a problem retrieving the XML data:\n" +
                      req.statusText);
            }
        }
    }
});

/* Ten.Observer */
Ten.Observer = new Ten.Class({
    initialize: function(element,event,obj,method) {
        var func = obj;
        if (typeof(method) == 'string') {
            func = obj[method];
        }
        this.element = element;
        this.event = event;
        this.listener = function(event) {
            return func.call(obj, new Ten.Event(event || window.event));
        }
        if (this.element.addEventListener) {
            if (this.event.match(/^on(.+)$/)) {
                this.event = RegExp.$1;
            }
            this.element.addEventListener(this.event, this.listener, false);
        } else if (this.element.attachEvent) {
            this.element.attachEvent(this.event, this.listener);
        }
    }
},{
    stop: function() {
        if (this.element.removeEventListener) {
            this.element.removeEventListener(this.event,this.listener,false);
        } else if (this.element.detachEvent) {
            this.element.detachEvent(this.event,this.listener);
        }
    }
});

/* Ten.Event */
Ten.Event = new Ten.Class({
    initialize: function(event) {
        this.event = event;
    },
    keyMap: {
        8:"backspace", 9:"tab", 13:"enter", 19:"pause", 27:"escape", 32:"space",
        33:"pageup", 34:"pagedown", 35:"end", 36:"home", 37:"left", 38:"up",
        39:"right", 40:"down", 44:"printscreen", 45:"insert", 46:"delete",
        112:"f1", 113:"f2", 114:"f3", 115:"f4", 116:"f5", 117:"f6", 118:"f7",
        119:"f8", 120:"f9", 121:"f10", 122:"f11", 123:"f12",
        144:"numlock", 145:"scrolllock"
    }
},{
    mousePosition: function() {
        if (!this.event.clientX) return;
        return Ten.Geometry.getMousePosition(this.event);
    },
    isKey: function(name) {
        var ecode = this.event.keyCode;
        if (!ecode) return;
        var ename = Ten.Event.keyMap[ecode];
        if (!ename) return;
        return (ename == name);
    },
    targetIsFormElements: function() {
        var target = this.event.target;
        if (!target) return;
        var T = (target.tagName || '').toUpperCase();
        return (T == 'INPUT' || T == 'SELECT' || T == 'OPTION' ||
                T == 'BUTTON' || T == 'TEXTAREA');
    },
    stop: function() {
        var e = this.event;
        if (e.stopPropagation) {
            e.stopPropagation();
            e.preventDefault();
        } else {
            e.cancelBubble = true;
            e.returnValue = false;
        }
    }
});

/* Ten.DOM */
Ten.DOM = new Ten.Class({
    getElementsByTagAndClassName: function(tagName, className, parent) {
        if (typeof(parent) == 'undefined') {
            parent = document;
        }
        var children = parent.getElementsByTagName(tagName);
        if (className) { 
            var elements = [];
            for (var i = 0; i < children.length; i++) {
                var child = children[i];
                var cls = child.className;
                if (!cls) {
                    continue;
                }
                var classNames = cls.split(' ');
                for (var j = 0; j < classNames.length; j++) {
                    if (classNames[j] == className) {
                        elements.push(child);
                        break;
                    }
                }
            }
            return elements;
        } else {
            return children;
        }
    },
    removeEmptyTextNodes: function(element) {
        var nodes = element.childNodes;
        for (var i = 0; i < nodes.length; i++) {
            var node = nodes[i];
            if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
                node.parentNode.removeChild(node);
            }
        }
    },
    nextElement: function(elem) {
        do {
            elem = elem.nextSibling;
        } while (elem && elem.nodeType != 1);
        return elem;
    },
    prevElement: function(elem) {
        do {
            elem = elem.previousSibling;
        } while (elem && elem.nodeType != 1);
        return elem;
    },
    scrapeText: function(node) {
        var rval = [];
        (function (node) {
            var cn = node.childNodes;
            if (cn) {
                for (var i = 0; i < cn.length; i++) {
                    arguments.callee.call(this, cn[i]);
                }
            }
            var nodeValue = node.nodeValue;
            if (typeof(nodeValue) == 'string') {
                rval.push(nodeValue);
            }
        })(node);
        return rval.join('');
    },
    onLoadFunctions: [],
    loaded: false,
    timer: null,
    addEventListener: function(event,func) {
        if (event != 'load') return;
        Ten.DOM.onLoadFunctions.push(func);
        Ten.DOM.checkLoaded();
    },
    checkLoaded: function() {
        var c = Ten.DOM;
        if (c.loaded) return true;
        if (document && document.getElementsByTagName &&
            document.getElementById && document.body) {
            if (c.timer) {
                clearInterval(c.timer);
                c.timer = null;
            }
            for (var i = 0; i < c.onLoadFunctions.length; i++) {
                    c.onLoadFunctions[i]();
            }
            c.onLoadFunctions = [];
            c.loaded = true;
        } else {
            c.timer = setInterval(c.checkLoaded, 13);
        }
    }
});

/* Ten.Style */
Ten.Style = new Ten.Class({
    applyStyle: function(elem, style) {
        for (prop in style) {
            elem.style[prop] = style[prop];
        }
    }
});

/* Ten.Geometry */
Ten.Geometry = new Ten.Class({
    initialize: function() {
        if (Ten.Geometry._initialized) return;
        var func = Ten.Geometry._functions;
        var de = document.documentElement;
        if (window.innerWidth) {
            func.getWindowWidth = function() { return window.innerWidth; }
            func.getWindowHeight = function() { return window.innerHeight; }
            func.getXScroll = function() { return window.pageXOffset; }
            func.getYScroll = function() { return window.pageYOffset; }
        } else if (de && de.clientWidth) {
            func.getWindowWidth = function() { return de.clientWidth; }
            func.getWindowHeight = function() { return de.clientHeight; }
            func.getXScroll = function() { return de.scrollLeft; }
            func.getYScroll = function() { return de.scrollTop; }
        } else if (document.body.clientWidth) {
            func.getWindowWidth = function() { return document.body.clientWidth; }
            func.getWindowHeight = function() { return document.body.clientHeight; }
            func.getXScroll = function() { return document.body.scrollLeft; }
            func.getYScroll = function() { return document.body.scrollTop; }
        }
        Ten.Geometry._initialized = true;
    },
    _initialized: false,
    _functions: {},
    getScroll: function() {
        if (!Ten.Geometry._initialized) new Ten.Geometry;
        return {
            x: Ten.Geometry._functions.getXScroll(),
            y: Ten.Geometry._functions.getYScroll()
        };
    },
    getMousePosition: function(pos) {
        // pos should have clientX, clientY same as mouse event
        if ((navigator.userAgent.indexOf('Safari') > -1) &&
            (navigator.userAgent.indexOf('Version/') < 0)) {
            return {
                x: pos.clientX,
                y: pos.clientY
            };
        } else {
            var scroll = Ten.Geometry.getScroll();
            return {
                x: pos.clientX + scroll.x,
                y: pos.clientY + scroll.y
            };
        }
    },
    getElementPosition: function(e) {
        return {
            x: e.offsetLeft,
            y: e.offsetTop
        };
    },
    getWindowSize: function() {
        if (!Ten.Geometry._initialized) new Ten.Geometry;
        return {
            w: Ten.Geometry._functions.getWindowWidth(),
            h: Ten.Geometry._functions.getWindowHeight()
        };
    }
});

/* Ten.Position */
Ten.Position = new Ten.Class({
    initialize: function(x,y) {
        this.x = x;
        this.y = y;
    },
    subtract: function(a,b) {
        return new Ten.Position(a.x - b.x, a.y - b.y);
    }
});

/*
// require Ten.js
**/

/* Ten.SubWindow */
Ten.SubWindow = new Ten.Class({
    initialize: function() {
        var c = this.constructor;
        if (c.singleton && c._cache) {
            return c._cache;
        }
        var div = document.createElement('div');
        Ten.Style.applyStyle(div, Ten.SubWindow._baseStyle);
        Ten.Style.applyStyle(div, c.style);
        this.window = div;
        this.addContainerAndCloseButton();
        document.body.appendChild(div);
        if (c.draggable) {
            this._draggable = new Ten.Draggable(div, this.handle);
        }
        if (c.singleton) c._cache = this;
        return this;
    },
    _baseStyle: {
        color: '#000',
        position: 'absolute',
        display: 'none',
        zIndex: 2,
        left: 0,
        top: 0,
        backgroundColor: '#fff',
        border: '1px solid #bbb'
    },
    style: {
        padding: '2px',
        textAlign: 'center',
        borderRadius: '6px',
        MozBorderRadius: '6px',
        width: '100px',
        height: '100px'
    },
    handleStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        backgroundColor: '#f3f3f3',
        borderBottom: '1px solid #bbb',
        width: '100%',
        height: '30px'
    },
    containerStyle: {
        margin: '32px 0 0 0',
        padding: '0 10px'
    },
    // closeButton: 'close.gif',
    closeButton: 'http://s.hatena.com/images/close.gif',
    closeButtonStyle: {
        position: 'absolute',
        top: '8px',
        right: '10px',
        cursor: 'pointer'
    },
    _baseScreenStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        display: 'none',
        zIndex: 1,
        overflow: 'hidden',
        width: '100%',
        height: '100%'
    },
    screenStyle: {},
    showScreen: true,
    singleton: true,
    draggable: true,
    _cache: null
},{
    screen: null,
    windowObserver: null,
    visible: false,
    addContainerAndCloseButton: function() {
        var win = this.window;
        var c = this.constructor;
        var div = document.createElement('div');
        win.appendChild(div);
        Ten.Style.applyStyle(div, c.containerStyle);
        this.container = div;
        if (c.handleStyle) {
            var handle = document.createElement('div');
            Ten.Style.applyStyle(handle, c.handleStyle);
            win.appendChild(handle);
            this.handle = handle;
        }
        if (c.closeButton) {
	    var btn = document.createElement('img');
            btn.src = c.closeButton;
            btn.alt = 'close';
            Ten.Style.applyStyle(btn, c.closeButtonStyle);
            win.appendChild(btn);
            new Ten.Observer(btn, 'onclick', this, 'hide');
            this.closeButton = btn;
        }
        if (c.showScreen) {
            var screen = document.createElement('div');
            Ten.Style.applyStyle(screen, Ten.SubWindow._baseScreenStyle);
            Ten.Style.applyStyle(screen, c.screenStyle);
            document.body.appendChild(screen);
            this.screen = screen;
            new Ten.Observer(screen, 'onclick', this, 'hide');
        }
    },
    show: function(pos) {
        pos = (pos.x && pos.y) ? pos : {x:0, y:0};
        with (this.window.style) {
            display = 'block';
            left = pos.x + 'px';
            top = pos.y + 'px';
        }
        if (this.screen) {
            with (this.screen.style) {
                display = 'block';
                left = Ten.Geometry.getScroll().x + 'px';
                top = Ten.Geometry.getScroll().y + 'px';
            }
        }
        this.windowObserver = new Ten.Observer(document.body, 'onkeypress', this, 'handleEscape');
        this.visible = true;
    },
    handleEscape: function(e) {
        if (!e.isKey('escape')) return;
        this.hide();
    },
    hide: function() {
        if (this._draggable) this._draggable.endDrag();
        this.window.style.display = 'none';
        if (this.screen) this.screen.style.display = 'none';
        if (this.windowObserver) this.windowObserver.stop();
        this.visible = false;
    }
});

/* Ten.Draggable */
Ten.Draggable = new Ten.Class({
    initialize: function(element,handle) {
        this.element = element;
        this.handle = handle || element;
        this.startObserver = new Ten.Observer(this.handle, 'onmousedown', this, 'startDrag');
        this.handlers = [];
    }
},{
    startDrag: function(e) {
        if (e.targetIsFormElements()) return;
        this.delta = Ten.Position.subtract(
            e.mousePosition(),
            Ten.Geometry.getElementPosition(this.element)
        );
        this.handlers = [
            new Ten.Observer(document, 'onmousemove', this, 'drag'),
            new Ten.Observer(document, 'onmouseup', this, 'endDrag'),
            new Ten.Observer(this.element, 'onlosecapture', this, 'endDrag')
        ];
        e.stop();
    },
    drag: function(e) {
        var pos = Ten.Position.subtract(e.mousePosition(), this.delta);
        Ten.Style.applyStyle(this.element, {
            left: pos.x + 'px',
            top: pos.y + 'px'
        });
        e.stop();
    },
    endDrag: function(e) {
        for (var i = 0; i < this.handlers.length; i++) {
            this.handlers[i].stop();
        }
        if(e) e.stop();
    }
});

/* Hatena */
if (typeof(Hatena) == 'undefined') {
    Hatena = {};
}

/* Hatena.User */
Hatena.User = new Ten.Class({
    initialize: function(name) {
        this.name = name;
    },
    getProfileIcon: function(name) {
        if (!name) name = 'user';
        var pre = name.match(/^[\w-]{2}/)[0];
        var img = document.createElement('img');
        img.src = 'http://www.hatena.ne.jp/users/' + pre + '/' + name + '/profile_s.gif';
        img.alt = name;
        img.setAttribute('class', 'profile-icon');
        img.setAttribute('width','16px');
        img.setAttribute('height','16px');
        with (img.style) {
            margin = '0 3px';
            border = 'none';
            verticalAlign = 'middle';
        }
        return img;
    }
}, {
    profileIcon: function() {
        return Hatena.User.getProfileIcon(this.name);
    }
});

/* Hatena.Star */
if (typeof(Hatena.Star) == 'undefined') {
    Hatena.Star = {};
}

/*
// Hatena.Star.* classes //
**/
if (window.location && window.location.host.match(/hatena\.com/)) {
    Hatena.Star.BaseURL = 'http://s.hatena.com/';
} else {
    Hatena.Star.BaseURL = 'http://s.hatena.ne.jp/';
}
Hatena.Star.Token = null;

/* Hatena.Star.User */
Hatena.Star.User = new Ten.Class({
    base: [Hatena.User],
    initialize: function(name) {
        if (Hatena.Star.User._cache[name]) {
            return Hatena.Star.User._cache[name];
        } else {
            this.name = name;
            Hatena.Star.User._cache[name] = this;
            return this;
        }
    },
    _cache: {}
},{
    userPage: function() {
        return Hatena.Star.BaseURL + this.name + '/';
    }
});

/* Hatena.Star.Entry */
Hatena.Star.Entry = new Ten.Class({
    initialize: function(e) {
        this.entry = e;
        this.uri = e.uri;
        this.title = e.title;
        this.star_container = e.star_container;
        this.comment_container = e.comment_container;
        this.stars = [];
        this.comments = [];
    },
    maxStarCount: 11
},{
    flushStars: function() {
        this.stars = [];
        this.star_container.innerHTML = '';
    },
    bindStarEntry: function(se) {
        this.starEntry = se;
        for (var i = 0; i < se.stars.length; i++) {
            if (typeof(se.stars[i]) == 'number') {
                this.stars.push(new Hatena.Star.InnerCount(se.stars[i],this));
            } else {
                this.stars.push(new Hatena.Star.Star(se.stars[i]));
            }
        }
        if (se.comments && !this.comments.length) {
            for (var i = 0; i < se.comments.length; i++) {
                this.comments.push(new Hatena.Star.Comment(se.comments[i]));
            }
        }
        this.can_comment = se.can_comment;
    },
    setCanComment: function(v) {
        this.can_comment = v;
    },
    showButtons: function() {
        this.addAddButton();
        this.addCommentButton();
    },
    addAddButton: function() {
        if (this.star_container) {
            this.addButton = new Hatena.Star.AddButton(this);
            this.star_container.appendChild(this.addButton);
        }
    },
    addCommentButton: function() {
        if (this.comment_container) {
            this.commentButton = new Hatena.Star.CommentButton(this);
            this.comment_container.appendChild(this.commentButton.img);
        }
    },
    showStars: function() {
        var klass = this.constructor;
        // if (this.stars.length > klass.maxStarCount) {
        //     var ic = new Hatena.Star.InnerCount(this.stars.slice(1,this.stars.length));
        //     this.star_container.appendChild(this.stars[0]);
        //     this.star_container.appendChild(ic);
        //     this.star_container.appendChild(this.stars[this.stars.length - 1]);
        // } else {
        for (var i = 0; i < this.stars.length; i++) {
            this.star_container.appendChild(this.stars[i]);
        }
    },
    showCommentButton: function() {
        if (this.can_comment) {
            this.commentButton.show();
            if (this.comments.length) this.commentButton.activate();
        } else {
            // this.commentButton.hide();
        }
    },
    addStar: function(star) {
        this.stars.push(star);
        this.star_container.appendChild(star);
    },
    addComment: function(com) {
        if (!this.comments) this.comments = [];
        if (this.comments.length == 0) {
            this.commentButton.activate();
        }
        this.comments.push(com);
    },
    showCommentCount: function() {
        this.comment_container.innerHTML += this.comments.length;
    }
});

/* Hatena.Star.Button */
Hatena.Star.Button = new Ten.Class({
    createButton: function(args) {
        var img = document.createElement('img');
        img.src = args.src;
        img.alt = img.title = args.alt;
        with (img.style) {
	    cursor = 'pointer';
	    margin = '0 3px';
            padding = '0';
            border = 'none';
            verticalAlign = 'middle';
        }
        return img;
    }
});

/* Hatena.Star.AddButton */
Hatena.Star.AddButton = new Ten.Class({
    base: ['Hatena.Star.Button'],
    initialize: function(entry) {
        this.entry = entry;
        this.lastPosition = null;
        var img = Hatena.Star.Button.createButton({
            src: Hatena.Star.AddButton.ImgSrc,
            alt: 'Add Star'
        });
        this.observer = new Ten.Observer(img,'onclick',this,'addStar');
        this.img = img;
        return img;
    },
    ImgSrc: Hatena.Star.BaseURL + 'images/add.gif'
},{
    addStar: function(e) {
        this.lastPosition = e.mousePosition();
        var uri = Hatena.Star.BaseURL + 'star.add.json?uri=' + encodeURIComponent(this.entry.uri) +
            '&title=' + encodeURIComponent(this.entry.title);
        if (Hatena.Star.Token) {
            uri += '&token=' + Hatena.Star.Token;
        }
        new Ten.JSONP(uri, this, 'receiveResult');
    },
    receiveResult: function(args) {
        var name = args ? args.name : null;
        if (name) {
            this.entry.addStar(new Hatena.Star.Star({name: name}));
            //alert('Succeeded in Adding Star ' + args);
        } else if (args.errors) {
            var pos = this.lastPosition;
            pos.x -= 10;
            pos.y += 25;
            var scroll = Ten.Geometry.getScroll();
            var scr = new Hatena.Star.AlertScreen();
            var alert = args.errors[0];
            scr.showAlert(alert, pos);
        }
    }
});

/* Hatena.Star.CommentButton */
Hatena.Star.CommentButton = new Ten.Class({
    base: ['Hatena.Star.Button'],
    initialize: function(entry) {
        this.entry = entry;
        this.lastPosition = null;
        var img = Hatena.Star.Button.createButton({
            src: Hatena.Star.CommentButton.ImgSrc,
            alt: 'Comments'
        });
        img.style.display = 'none';
        this.observer = new Ten.Observer(img,'onclick',this,'showComments');
        this.img = img;
    },
    ImgSrc: Hatena.Star.BaseURL + 'images/comment.gif',
    ImgSrcActive: Hatena.Star.BaseURL + 'images/comment_active.gif'
},{
    showComments: function(e) {
        if (!this.screen) this.screen = new Hatena.Star.CommentScreen();
        this.screen.bindEntry(this.entry);
        var pos = e.mousePosition();
        pos.y += 25;
        this.screen.showComments(this.entry, pos);
    },
    hide: function() {
        this.img.style.display = 'none';
    },
    show: function() {
        this.img.style.display = 'inline';
    },
    activate: function() {
        this.show();
        this.img.src = Hatena.Star.CommentButton.ImgSrcActive;
    }
});

/* Hatena.Star.Star */
Hatena.Star.Star = new Ten.Class({
    initialize: function(args) {
        if (args.img) {
            this.img = args.img;
            this.name = this.img.getAttribute('alt');
        } else {
            this.name = args.name;
            var img = document.createElement('img');
            img.src = Hatena.Star.Star.ImgSrc;
            img.alt = this.name;
            with (img.style) {
                padding = '0';
                border = 'none';
            }
            this.img = img;
        }
	new Ten.Observer(this.img,'onmouseover',this,'showName');
	new Ten.Observer(this.img,'onmouseout',this,'hideName');
	if (this.name) {
            this.user = new Hatena.Star.User(this.name);
            this.img.style.cursor = 'pointer';
            new Ten.Observer(this.img,'onclick',this,'goToUserPage');
        }
        if (args.count && args.count > 1) {
            var c = document.createElement('span');
            c.setAttribute('class', 'hatena-star-inner-count');
            Ten.Style.applyStyle(c, Hatena.Star.InnerCount.style);
            c.innerHTML = args.count;
            var s = document.createElement('span');
            s.appendChild(img);
            s.appendChild(c);
            return s;
        } else {
            return this.img;
        }
    },
    ImgSrc: Hatena.Star.BaseURL + 'images/star.gif'
},{
    showName: function(e) {
        if (!this.screen) this.screen = new Hatena.Star.NameScreen();
        var pos = e.mousePosition();
        pos.x += 10;
        pos.y += 25;
        this.screen.showName(this.name, pos);
    },
    hideName: function() {
        if (!this.screen) return;
        this.screen.hide();
    },
    goToUserPage: function() {
        window.location = this.user.userPage();
    }
});

/* Hatena.Star.InnerCount */
Hatena.Star.InnerCount = new Ten.Class({
    initialize: function(count, e) {
        this.count = count;
        this.entry = e;
        var c = document.createElement('span');
        c.setAttribute('class', 'hatena-star-inner-count');
        Ten.Style.applyStyle(c, Hatena.Star.InnerCount.style);
        c.style.cursor = 'pointer';
        c.innerHTML = count;
        new Ten.Observer(c,'onclick',this,'showInnerStars');
        this.container = c;
        return c;
    },
    style: {
        color: '#f4b128',
        fontWeight: 'bold',
        fontSize: '80%',
        fontFamily: '"arial", sans-serif',
        margin: '0 2px'
    }
},{
    showInnerStars: function() {
        var url = Hatena.Star.BaseURL + 'entry.json?uri=' +
        encodeURIComponent(this.entry.uri);
        new Ten.JSONP(url, this, 'receiveStarEntry');
    },
    receiveStarEntry: function(res) {
        var se = res.entries[0];
        var e = this.entry;
        if (encodeURIComponent(se.uri) != encodeURIComponent(e.uri)) return;
        e.flushStars();
        e.bindStarEntry(se);
        e.addAddButton();
        e.showStars();
    }
});

/* Hatena.Star.Comment */
Hatena.Star.Comment = new Ten.Class({
    initialize: function(args) {
        this.name = args.name;
        this.body = args.body;
    }
},{
    asElement: function() {
        var div = document.createElement('div');
        with (div.style) {
            margin = '0px 0';
            padding = '5px 0';
            borderBottom = '1px solid #ddd';
        }
        var ico = Hatena.User.getProfileIcon(this.name);
        div.appendChild(ico);
        var span = document.createElement('span');
        with(span.style) {
            fontSize = '90%';
        }
        span.innerHTML = this.body;
        div.appendChild(span);
        return div;
    }
});

/* Hatena.Star.NameScreen */
Hatena.Star.NameScreen = new Ten.Class({
    base: [Ten.SubWindow],
    style: {
        padding: '2px',
        textAlign: 'center'
    },
    containerStyle: {
        margin: 0,
        padding: 0
    },
    handleStyle: null,
    showScreen: false,
    closeButton: null,
    draggable: false
},{
    showName: function(name, pos) {
        this.container.innerHTML = '';
        this.container.appendChild(Hatena.User.getProfileIcon(name));
        this.container.appendChild(document.createTextNode(name));
        this.show(pos);
    }
});

/* Hatena.Star.AlertScreen */
Hatena.Star.AlertScreen = new Ten.Class({
    base: [Ten.SubWindow],
    style: {
        padding: '2px',
        textAlign: 'center',
        borderRadius: '6px',
        MozBorderRadius: '6px',
        width: '240px',
        height: '120px'
    },
    handleStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        backgroundColor: '#f3f3f3',
        borderBottom: '1px solid #bbb',
        width: '100%',
        height: '30px',
        borderRadius: '6px 6px 0 0',
        MozBorderRadius: '6px 6px 0 0'
    }
},{
    showAlert: function(msg, pos) {
        this.container.innerHTML = msg;
        var win = Ten.Geometry.getWindowSize();
        var scr = Ten.Geometry.getScroll();
        var w = parseInt(this.constructor.style.width) + 20;
        if (pos.x + w > scr.x + win.w) pos.x = win.w + scr.x - w;
        this.show(pos);
    }
});

/* Hatena.Star.CommentScreen */
Hatena.Star.CommentScreen = new Ten.Class({
    base: [Ten.SubWindow],
    initialize: function() {
        var self = this.constructor.SUPER.call(this);
        if (!self.commentsContainer) self.addCommentsContainer();
        return self;
    },
    style: {
        width: '280px',
        height: '280px',
        overflowY: 'auto',
        padding: '2px',
        textAlign: 'center',
        borderRadius: '6px',
        MozBorderRadius: '6px'
    },
    handleStyle: {
        position: 'absolute',
        top: '0px',
        left: '0px',
        backgroundColor: '#f3f3f3',
        borderBottom: '1px solid #bbb',
        width: '100%',
        height: '30px',
        borderRadius: '6px 6px 0 0',
        MozBorderRadius: '6px 6px 0 0'
    },
    containerStyle: {
        margin: '32px 0 0 0',
        textAlign: 'left',
        padding: '0 10px'
    },
    getLoadImage: function() {
        var img = document.createElement('img');
        img.src = Hatena.Star.BaseURL + 'images/load.gif';
        img.setAttribute('alt', 'Loading');
        with (img.style) {
            verticalAlign = 'middle';
            margin = '0 2px';
        }
        return img;
    }
},{
    addCommentsContainer: function() {
        var div = document.createElement('div');
        with (div.style) {
            marginTop = '-3px';
        }
        this.container.appendChild(div);
        this.commentsContainer = div;
    },
    showComments: function(e, pos) {
        var comments = e.comments;
        if (!comments) comments = [];
        this.commentsContainer.innerHTML = '';
        for (var i=0; i<comments.length; i++) {
            this.commentsContainer.appendChild(comments[i].asElement());
        }
        if (e.starEntry && !e.can_comment) {
            this.hideCommentForm();
        } else {
            this.addCommentForm();
        }
        var win = Ten.Geometry.getWindowSize();
        var scr = Ten.Geometry.getScroll();
        var w = parseInt(this.constructor.style.width) + 20;
        if (pos.x + w > scr.x + win.w) pos.x = win.w + scr.x - w;
        this.show(pos);
    },
    bindEntry: function(e) {
        this.entry = e;
    },
    sendComment: function(e) {
        if (!e.isKey('enter')) return;
        var body = this.commentInput.value;
        if (!body) return;
        this.commentInput.disabled = 'true';
        this.showLoadImage();
        var url = Hatena.Star.BaseURL + 'comment.add.json?body=' + encodeURIComponent(body) +
            '&uri=' + encodeURIComponent(this.entry.uri) +
            '&title=' + encodeURIComponent(this.entry.title);
        new Ten.JSONP(url, this, 'receiveResult');
    },
    receiveResult: function(args) {
        if (!args.name || !args.body) return;
        this.commentInput.value = ''; 
        this.commentInput.disabled = '';
        this.hideLoadImage();
        var com = new Hatena.Star.Comment(args);
        this.entry.addComment(com);
        this.commentsContainer.appendChild(com.asElement());
    },
    showLoadImage: function() {
        if (!this.loadImage) return; 
        this.loadImage.style.display = 'inline';
    },
    hideLoadImage: function() {
        if (!this.loadImage) return; 
        this.loadImage.style.display = 'none';
    },
    hideCommentForm: function() {
        if (!this.commentForm) return;
        this.commentForm.style.display = 'none';
    },
    addCommentForm: function() {
        if (this.commentForm) {
            this.commentForm.style.display = 'block';
            return;
        }
        var form = document.createElement('div');
        this.container.appendChild(form);
        this.commentForm = form;
        with (form.style) {
            margin = '0px 0';
            padding = '5px 0';
            // borderTop = '1px solid #ddd';
        }
        //if (Hatena.Visitor) {
        //    form.appendChild(Hatena.Visitor.profileIcon());
        //} else {
        //    form.appendChild(Hatena.User.getProfileIcon());
        //}
        var input = document.createElement('input');
        input.type = 'text';
        with (input.style) {
            width = '215px';
	    border = '1px solid #bbb';
            padding = '3px';
        }
        form.appendChild(input);
        this.commentInput = input;
        var img = this.constructor.getLoadImage();
        this.loadImage = img;
        this.hideLoadImage();
        form.appendChild(img);
        new Ten.Observer(input,'onkeypress',this,'sendComment');
    }
});

/* Hatena.Star.EntryLoader */
Hatena.Star.EntryLoader = new Ten.Class({
    initialize: function() {
        var entries = Hatena.Star.EntryLoader.loadEntries();
        this.entries = [];
        for (var i = 0; i < entries.length; i++) {
            var e = new Hatena.Star.Entry(entries[i]);
            e.showButtons();
            this.entries.push(e);
        }
        this.getStarEntries();
    },
    createStarContainer: function() {
        var sc = document.createElement('span');
        sc.setAttribute('class', 'hatena-star-star-container');
        sc.style.marginLeft = '1px';
        return sc;
    },
    createCommentContainer: function() {
        var cc = document.createElement('span');
        cc.setAttribute('class', 'hatena-star-comment-container');
        cc.style.marginLeft = '1px';
        return cc;
    },
    scrapeTitle: function(node) {
        var rval = [];
        (function (node) {
            if (node.tagName == 'SPAN' &&
                (node.className == 'sanchor' ||
                 node.className == 'timestamp')) {
                     return;
            } else if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {
                return;
            }
            var cn = node.childNodes;
            if (cn) {
                for (var i = 0; i < cn.length; i++) {
                    arguments.callee.call(this, cn[i]);
                }
            }
            var nodeValue = node.nodeValue;
            if (typeof(nodeValue) == 'string') {
                rval.push(nodeValue);
            }
        })(node);
        return rval.join('');
    },
    headerTagAndClassName: ['h3',null],
    getHeaders: function() {
        var t = Hatena.Star.EntryLoader.headerTagAndClassName;
        return Ten.DOM.getElementsByTagAndClassName(t[0],t[1],document);
    },
    loadEntries: function() {
        var entries = [];
        //var headers = document.getElementsByTagName('h3');
        var c = Hatena.Star.EntryLoader;
        var headers = c.getHeaders();
        for (var i = 0; i < headers.length; i++) {
            var header = headers[i];
            var a = header.getElementsByTagName('a')[0];
            if (!a) continue;
            var uri = a.href;
            var title = '';
            // Ten.DOM.removeEmptyTextNodes(header);
            var cns = header.childNodes;
            title = c.scrapeTitle(header);
            var cc = c.createCommentContainer();
            header.appendChild(cc);
            var sc = c.createStarContainer();
            header.appendChild(sc);
            entries.push({
                uri: uri,
                title: title,
                star_container: sc,
                comment_container: cc
            });
        }
        return entries;
    }
},{
    getStarEntries: function() {
        var url = Hatena.Star.BaseURL + 'entries.json?';
        for (var i = 0; i < this.entries.length; i++) {
            if (url.length > Ten.JSONP.MaxBytes) {
                new Ten.JSONP(url, this, 'receiveStarEntries');
                url = Hatena.Star.BaseURL + 'entries.json?';
            }
            url += 'uri=' + encodeURIComponent(this.entries[i].uri) + '&';
        }
        new Ten.JSONP(url, this, 'receiveStarEntries');
    },
    receiveStarEntries: function(res) {
        var entries = res.entries;
        if (!entries) entries = [];
        for (var i = 0; i < this.entries.length; i++) {
            var e = this.entries[i];
            for (var j = 0; j < entries.length; j++) {
                var se = entries[j];
                if (!se.uri) continue;
                if (encodeURIComponent(se.uri) == encodeURIComponent(e.uri)) {
                    e.bindStarEntry(se);
                    entries.splice(j,1);
                    break;
                }
            }
            if (typeof(e.can_comment) == 'undefined') {
                e.setCanComment(res.can_comment);
            }
            e.showStars();
            e.showCommentButton();
        }
    }
});

/* Hatena.Star.WindowObserver */
Hatena.Star.WindowObserver = new Ten.Class({
    initialize: funct


  
  

2007-04-14

http://anond.hatelabo.jp/20070414034708

OpenSNSで50歳前後のおっちゃんたちが出入りする特殊なSNSに参加しているのだけどさ、そこのなかのおっちゃんが叫ぶわけですよ。

ちょうど昨日の話しだったのでタイムリーすぎて笑った。

そのおっちゃんいわくね、改行が短すぎるだとか、字が小さいだとか。横幅が小さいとか。

それただ21インチぐらいのディスプレイ使ってるんちゃうん。

挙句、mixiなんかの字の小さい、改行が繰り返されたデザイン日本人の心を小さくする!

文字の小ささは若者の心の表れだ!!とか。

もうね、それはただの老眼だからIE捨ててブラウザの拡大機能使えと。

(ところでIE7は拡大機能ついた?拡大機能ないのIE6だけだよね??)

そうおもった自分がいましたよ。

ま、なんつうか、

<font size="7"></font>

この時代が懐かしいなとちょっと思った。

ところでcssptpx以外でどうやってサイズ指定するの?

120%とか? まさかem?

最近ちらほら、大手でフォントサイズを選べるページが増えてきたね。

老眼の上役対策かしらん。

http://www.city.shinagawa.tokyo.jp/index.html

大手と言うか官公庁に多いのかな?

バリアフリーってか……。

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん