はてなキーワード: h1とは
それはアレルギー症状を起こしているヒスタミンの体内濃度が高いのが原因です。
https://ja.wikipedia.org/wiki/%E3%83%92%E3%82%B9%E3%82%BF%E3%83%9F%E3%83%B3
血圧降下、血管透過性亢進、平滑筋収縮、血管拡張、腺分泌促進などの薬理作用があり、アレルギー反応や炎症の発現に介在物質として働く。ヒスタミンが過剰に分泌されると、ヒスタミン1型受容体(H1受容体)というタンパク質と結合して、アレルギー疾患の原因となる。
神経組織では神経伝達物質として働き、音や光などの外部刺激および情動、空腹、体温上昇といった内部刺激などによっても放出が促進され、オキシトシン分泌や覚醒状態の維持、食行動の抑制、記憶学習能の修飾などの生理機能を促進することで知られている。
遺伝的な個人差も大きいので、一概にそうなるとは言えませんが、アトピーや慢性鼻炎などのアレルギー持ちの人は、
ヒスタミンによる覚醒状態の維持効果のおかげで頭脳明晰になるのです。
○朝食
○薬
いっぱい飲みたいけど我慢
○昼飯
○夕飯
怒られたので、オムライスカレーを食べにいった。トマトが入ってて美味しかった。
○調子
ちょっと家族ともめてしまったせいで、心のバランスがまた崩れてしまった。
あと手当金の話が上手く進まずちょっと苦しい。
でも、以前のような死にたいとか、薬バカ飲みとか、消えたいとまではいかない。
とりあえずランニングしてチョコ食ったら、することないからゲームしよ、と思える程度には回復できた。
○ハッピーウォーズ
今まで対人専門だったんだけど、協力プレイも意外と面白いことに気づけた。
とはいえ、一周してやめた。
正直飽きてきたなあ。
ボス戦を数戦し、主人公達の村の人たちと合流できた所までプレイ。
ディスパッチャーの内容を今ひとつ理解していなかったのでサンプルコードを読んだり、本を読むなりした。
実装はできるんだけど、細かい所までは理解が追いついていなかったので、少し前に進めた感じがする。
こういう終わりがないゲームをどこまでやり込むかは難しいんですが、
とりあえずレベル50を目指そうかなあ、へっぽこの自分にはかなり遠い道のりになりそうですが。
Haloは1、2、4しかクリアしてないので、これをクリアすればナンバリングタイトルはとりあえず終えられるかな。
今日は「ステージ1 アライバル」(ムービーみるだけ)と「ステージ2 シエラ117」を攻略。
ビギナーなので、実績は解除されず。
でも難しいのよりもストーリーをちゃんと追いたいのです。
「たやすいことではない」とか「女の子とは約束しちゃだめ、出来ない約束はね」とか「集合場所は?」「戦場よ」とか、どれも痺れる決まってる。
目標もなくダラダラやるのが限界にきたので、自分の中のForza目標を決めて、それが達成されたら
その目標とは、シャーマンキングでX-LAWSが使う「天使」こと「スーパーカー」をゲーム中で可能な限りそろえ、自分が満足するレースをする。です。
いきなりなんのこっちゃと思われるかもしれまんせが、私の車の知識は本気でこの漫画程度しかないのです(※シャーマンキングは車漫画じゃそもそもありません)
なので、そこに登場する天使ことスーパーカーを集めて並べて満足する、それがForzaの僕の楽しみ方、ということにします。
○Forza2のやり込み度合いについて
まず自分は車の免許を持ってなく、車に対する興味や知識が全くと言っていいほどない。
まだレースゲームは対戦する楽しみがあるからいいものの、Forza2のオンラインは過疎っており、対戦が出来る状態にもない。
ならそもそも、どうして始めたのかというと、XboxOneで自分が好きなゲームを増やしたいから。
つまり、Forzaシリーズを自分なりの楽しみ方を見つける必要が有る!
そして、思いついたのが、僕が大好きな漫画「シャーマンキング」に登場する「天使」ことスーパーカーたちのことだ。
シャーマンキングに登場するX-LAWSという組織は、スーパーカーを武器に戦うのである。
それがいたく格好よく、ハンドルネームの元になった漫画のロボットと似ていることもあり、僕は彼らが大好きなのだ。
というわけで、Forzaでも彼らのスーパーカーをすべて所有し、満足いくまで運転したら、次のナンバリングに進むという自分ルールを制定した。
以下はそのメモ
マルコ、ミカエル、フェラーリ92年型、フェラーリ、イタリア(92年型はなかったので年代が近い91年型で妥協しよう(そういうもんでいいのか?))
リゼルク、ゼルエル、ロータスエリーゼ、ロータス、イギリス(いっぱいあってよくわからんから、適当にデザインで選ぼう)
ジョンテンバット、ラファエル、アストンマーチン・DB4、アストンマーチン、イギリス(DB4がないからDB9で代用しよう(いいのかなあ?))
ラーキ・ディラック、ウリエル、フォード・GT40、フォード、アメリカ(Mk2ってのがあったからこれでいこう、もうこれでいいのです。)
ポーフ・グリフィス、サリエル、ポルシェ・911、ポルシェ、ドイツ(なんか山ほどあるけど、どうしよう)
クリス・ブンスター、メタトロン、ハマーH1、ゼネラルモーターズ、アメリカ(この会社はForza2で見つけられなかった)
ケビン・メンデル、レミエル、メルセデス・ベンツ 300SL、ベンツ、ドイツ(この会社はForza2で見つけられなかった)
ミイネ・モンゴメリ、ガブリエル、ジュリエッタSZ、アルファロメオ、イタリア(この会社はForza2で見つけられなかった)
というわけで、フェラーリとロータスエリーゼとアストンマーチンDB9とフォードGT40MK2とポルシェ911を買って、
で、Forza3でも同じことをやって、Forza4でも同じことをやって、ゲーム性が違うホライゾンは普通に楽しみます。
○購入記
アストンマーチンDB9(金がない)
フォードGT40MK2(ロックされている)どうやらレベル39まで上げないといけないらしい、今レベル23でかなり飽きかけてるんだけどなあ(汗)
ポルシェ911(金がない)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Is it a bug?</title> </head> <body onresize="alert('a');"> <h1>Is it Ok?</h1> </body> </html>
コピペ用→ http://pastebin.com/qwm8fqTN
IE9だと問題なく動作するし、
chromeだとご丁寧に「このページからのポップアップをこれ以上出さないか」聞いてくれます。
ぼくの環境だけの事例かもしれないので、みんなも試してくれると嬉しいな。
で、みんなの環境でも同じようなら、これはfirefoxのバグということなのかな?
日本が過去に基準値(370 Bq/kg)を超えたからと税関で止めた食品一覧
H1.1.11 きのこ(くろらっぱたけ) フランス 650 Bq/kg
H1.10.23 きのこ(あんずたけ)フランス 532 Bq/kg
H2.2.28 ハーブ茶(ダンデリオン)スイス 1,167 Bq/kg
H2.10.3 ハーブ茶(セイヨウノコギリ草)アルバニア 814 Bq/kg
H3.2.14 乾燥きのこ(ヤマドリタケ)ユーゴスラビア 556 Bq/kg
H3.3.13 ミックススパイス フランス 1,028 Bq/kg
H6.11.8 燻製トナカイ肉 フィンランド 388 Bq/kg
H10.1.21 乾燥ポルチーニ(ヤマドリダケ) イタリア 731 Bq/kg
H13.11.8 乾燥ポルチーニ(ヤマドリダケ) イタリア 418 Bq/kg
1 名前:仕様書無しさん[] 投稿日:2006/06/22(木) 16:15:13
【前スレ】
http://pc8.2ch.net/test/read.cgi/prog/1143691132/
2 名前:仕様書無しさん[sage] 投稿日:2006/06/22(木) 16:16:42
Q:1 ◆n4irhdIw0M は何者?
現在の年収は日本円に換算すると1000万ちょい。税金高いから手取り600-700万。
旧帝の工学部卒。情報専攻。院も卒業して日本で就職。しばらく経ってからアメリカ移住。
Q:Koalaって何者?
シドニーにある大学の電子工学部卒。C/C++、主にWindows用アプリを開発。
学生時代に作っていたシェアウェアをアピールしてそのまま就職。
Q:670って何者?
A:応募して書類が目に留まれば面接。
上手くやれば合格で、条件交渉して入社。
3 名前:仕様書無しさん[sage] 投稿日:2006/06/22(木) 16:17:25
Q:英語力はどの程度必要?
A:TOEIC800ぐらいなら頑張ればすぐ手が届くそうです。
A:時給で働く人以外には無いそうです。
A:主流なものなんてないです。
アメリガでどうだ日本ではどうだという括り方が不毛な気がする。
A:「キュービクル」と呼ばれる高さ180cmぐらいの仕切りで
3m*3mぐらいのスペース与えられる。机3つ、本棚3つぐらい。
PCやWSは人によるが、1台~3台。モニタ2台持ってる人も多い。
高度な経験とスキルを持ったIT技術者は不足しているそうです。
給与の目安は、経験5年以上のプログラマで年収6万~8万ドル。
経済はシドニーオリンピック後もずっと上昇しているそうです。
4 名前:仕様書無しさん[sage] 投稿日:2006/06/22(木) 16:18:08
Q:日本人に対する印象は?
A:1 ◆n4irhdIw0Mさん
「静かで何も言わない」ということで舐められてることが多い。
Koalaさん
結構好印象みたいでつ。
「日本人はpolite」って言う人が多い。
Q:ビザについて教えて
Koala
例えば学費が安くなる、治療が格安で受けられる、失業保険がもらえる、
国民年金がもらえるなど。
1 ◆n4irhdIw0M
あくまでアメリカの利益の為。よって、その会社でしか働けない。
ビザには期限があるので、会社が申請すると4,5年後に永住権がもらえる。
そうすれば、選挙権などの一部を除いてアメリカ人と同等の権利が与えられる。
エンジニアが良く使うビザの種類はH1-B。ただ、毎年発行の上限があるので、
H1-Bを取れる時期に採用決定しないとビザが取れないためにお流れになる恐れがある。
5 名前:仕様書無しさん[sage] 投稿日:2006/06/22(木) 16:18:53
A:1 ◆n4irhdIw0M
クビになる可能性が高い
医療費高い
Koala
日本であることは間違いない。体に染み付いた文化はそうそう抜けない。
温泉とか焼肉とか秋葉原とか恋しくなります。ハンバーガーやピザはもうウンザリ。
あとサービスの良さとか、電車の正確さとか、とにかく日本は何でもクオリティ高い。
もしアメリカだったら、大学から英語をやっていた方が絶対に有利。
更にそこの国の人の考え方や生活の理解度が全然違ってくる。
それで何とか就職できればビジネスビザのスポンサーになってもらえる可能性が高い。
6 名前:仕様書無しさん[sage] 投稿日:2006/06/22(木) 16:19:33
A:何か具体的な成果を見せられるならば何とかなるかも。それが無いなら大卒は必要。
Q:Kiwiって何者?
A:ニュージーランド(NZ)在住のプログラマ。前スレの163で登場。
物価はオーストラリアよりも高目(為替レート的に輸入品はNZの方が高い)。
90%は3~5年以内に帰国してる。
大自然はたまに見るから美しいのであって、そこに住むのはただただ不便です。
A:前スレのネタスレ。思いのほか良い雰囲気で進行中。誤爆注意。
http://pc8.2ch.net/test/read.cgi/prog/1148761974/
FAQおわり。
足りなかったら適当に付け足してね。
どのような施策でSEOを行うかを聞いてみたところ「内部対策」と「外部リンク」との答え。
「内部対策」は現状のサイトを分析して、metaタグとかh1タグ内にキーワードを含めるとか、サイトマップを設置するとか、SEO的に重要と言われていることでできていないことを指摘してくれる。まあ、正直言って、そのあたりの本屋でSEOの本を1冊買ってくれば誰でも出来るような内容。
で、「外部対策」。
いろいろなサイトからリンクを張ってくれる訳ですが、いわく、「弊社は様々なジャンルのメディアサイトを運営しているので、お客様の業態にあったサイトから質のいいリンクを張れますよ。」とのこと。しかもページランクも高いところから張るらしい。
http://rush-bridal.net/konaosir.html
完全にワードサラダじゃん。
Web上に意味のないページを量産して、スパムをまき散らして、これがSEOのからくり?
はっきりいって、google先生はこんなのじゃだまされないみたいよ。
この会社よく調べると、一昔前は、アクセスカウンターばらまきもしていたみたいだし、こういうのをまっとうな商売と認めていいんだろうか?(ちなみにこの会社は上場してます)
ものすごく役に立ちそうなホームページを見つけたので、みんなにも紹介しちゃいます。
というホームページです。
http://sugokumoukaru.success-story.jp/
http://s04.megalodon.jp/2009-0427-1659-43/sugokumoukaru.success-story.jp/
フッターの「在宅ワーク」連呼が秀逸と言わざるを得ません。
もちろん、「特定商取引法」のページもあります。
http://sugokumoukaru.success-story.jp/tokutei.html
(魚拓)
http://s02.megalodon.jp/2009-0427-1706-59/sugokumoukaru.success-story.jp/tokutei.html
ページソースを見てびっくりしました。
さすがです。
きっとこのホームページを作った人の頭の中は、
常人の理解を超えているんだろうな、
と思いました。
実はまいにんぐマイコ先生
http://anond.hatelabo.jp/20090305163800
なんとなくperl ruby python SQLを見てたら見つけた。
こっそりやったほうが良いのか、問題を提起したほうが良いのか。
http://anond.hatelabo.jp/20090415120341
どうせなら
({"count":"63","eid":"12958894","entry_url":"http://b.hatena.ne.jp/entry/http://www19.atwiki.jp/rabuho/","related":[{"count":"115","url":"http://nikuch.blog42.fc2.com/blog-entry-396.html","eid":"12904869","title":" \u7af6\u99ac\u5834\u306e\u30aa\u30c3\u30b5\u30f3\u9054\u304b\u3089\u805e\u3044\u305f\u540d\u8a00\u96c6 - \u8089\u6c41\u304c\u6ea2\u308c\u51fa\u3066\u3044\u307e\u3059","entry_url":"http://b.hatena.ne.jp/entry/http://nikuch.blog42.fc2.com/blog-entry-396.html"},{"count":"37","url":"http://alfalfa.livedoor.biz/archives/50846904.html","eid":"3865016","title":"\u30a2\u30eb\u30d5\u30a1\u30eb\u30d5\u30a1\u30e2\u30b6\u30a4\u30af\u3088\u308a\u300c\u304b\u3063\u3053\u3088\u3059\u304e\u3066\u9ce5\u808c\u304c\u7acb\u3063\u305f\u52d5\u753b\u300d","entry_url":"http://b.hatena.ne.jp/entry/http://alfalfa.livedoor.biz/archives/50846904.html"},{"count":"261","url":"http://news4vip.livedoor.biz/archives/51267142.html","eid":"12623444","title":"\u30102ch\u3011\u30cb\u30e5\u30fc\u901f\u30af\u30aa\u30ea\u30c6\u30a3:\u4eba\u751f\u3092\u5909\u3048\u308b\u540d\u8a00\u30fb\u683c\u8a00","entry_url":"http://b.hatena.ne.jp/entry/http://news4vip.livedoor.biz/archives/51267142.html"},{"count":"39","url":"http://alfalfa.livedoor.biz/archives/51308451.html","eid":"8854638","title":"\u5b66\u6821\u3067\u306f\u6559\u3048\u3066\u304f\u308c\u306a\u3044\u4eba\u751f\u306b\u5f79\u7acb\u306411\u306e\u30eb\u30fc\u30eb:\u30a2\u30eb\u30d5\u30a1\u30eb\u30d5\u30a1\u30e2\u30b6\u30a4\u30af","entry_url":"http://b.hatena.ne.jp/entry/http://alfalfa.livedoor.biz/archives/51308451.html"},{"count":"175","url":"http://d.hatena.ne.jp/tzetze/20081019/p1","eid":"10464747","title":"\u306e\u3073\u592a\u540d\u8a00\u96c6 - \u56de\u866b","entry_url":"http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/tzetze/20081019/p1"}],"bookmarks":[{"timestamp":"2009/04/15 12:57:33","comment":"","user":"westerndog","tags":["2ch"]},{"timestamp":"2009/04/15 12:52:44","comment":"\u306a\u3093\u3058\u3083\u3053\u308a\u3083","user":"jt_noSke","tags":},{"timestamp":"2009/04/15 12:52:32","comment":"","user":"yuriap","tags":["neta"]},{"timestamp":"2009/04/15 12:51:53","comment":"\u30d6\u30ed\u30b0\u3067\u500b\u4eba\u60c5\u5831\u6652\u3057\u3059\u304e\u3084\u308d\u30fb\u30fb\u30fb\u30a2\u30e1\u30d6\u30ed\u3063\u3066\u643a\u5e2f\u304b\u3089\u9001\u308c\u308b\u3093\u304b\u306a\uff1f\u643a\u5e2f\u3082\u65e5\u672c\u4e2d\u306b\u767a\u4fe1\u3055\u308c\u308b\u306e\u3060\u304c\u3001\u304a\u305d\u3089\u304f\u30e6\u30fc\u30b6\u5074\u306b\u81ea\u899a\u304c\u306a\u3044\u3002\uff0f\u30aa\u30bf\u30af\u3067\u3082\u3042\u308a2ch\u30e6\u30fc\u30b6\u306b\u5f15\u3063\u304b\u304b\u308a\u3084\u3059\u304b\u3063\u305f\u3093\u3060\u306a\u3002","user":"kalmalogy","tags":["2ch","\u3053\u308c\u306f\u3053\u308f\u3044"]},{"timestamp":"2009/04/15 12:49:24","comment":"","user":"mamuchi","tags":["\u307e\u3068\u3081","2ch"]},{"timestamp":"2009/04/15 12:49:02","comment":"\"rabuho\"\u3068\u3044\u3046\u7db4\u308a\u304c\u982d\u60aa\u305d\u3046\u3060\u306a\u30fc\u3068\u601d\u3046","user":"hermit-h1","tags":},{"timestamp":"2009/04/15 12:40:41","comment":"","user":"kasuga-k","tags":["\u3042\u3068\u3067\u8aad\u3080","2ch"]},{"timestamp":"2009/04/15 12:31:52","comment":"","user":"runway35","tags":["\u3042\u3068\u3067\u8aad\u3080"]},{"timestamp":"2009/04/15 12:24:15","comment":"\u51fa\u5e2d\u756a\u53f7\u3068\u304b\uff57\uff57","user":"rawwell","tags":},{"timestamp":"2009/04/15 12:17:57","comment":"","user":"tk18","tags":},{"timestamp":"2009/04/15 12:14:58","comment":"","user":"se_tsu_na","tags":["\u307e\u3068\u3081"]},{"timestamp":"2009/04/15 12:13:27","comment":"","user":"ymrl","tags":},{"timestamp":"2009/04/15 12:01:35","comment":"","user":"elk-elg","tags":["2ch"]},{"timestamp":"2009/04/15 12:00:15","comment":"","user":"piraki","tags":["\u307e\u3068\u3081"]},{"timestamp":"2009/04/15 11:40:53","comment":"","user":"A410","tags":["*\u3042\u3068\u3067\u8aad\u3080"]},{"timestamp":"2009/04/15 11:23:54","comment":"","user":"Francamente_Pinocchio","tags":},{"timestamp":"2009/04/15 11:06:10","comment":"","user":"mixvox-j","tags":["\u3053\u308c\u306f\u3053\u308f\u3044"]},{"timestamp":"2009/04/15 10:57:55","comment":"","user":"tama3333","tags":},{"timestamp":"2009/04/15 10:56:20","comment":"","user":"timeismoney","tags":["\u3053\u308c\u306f\u3053\u308f\u3044","2ch"]},{"timestamp":"2009/04/15 10:55:58","comment":"\uff1e\u3053\u3093\u306a\u3053\u3068\u3092\u3057\u3066\u3082\u304a\u307e\u3048\u3089\u306e\u5931\u308f\u308c\u305f\u9752\u6625\u306f\u623b\u3063\u3066\u3053\u306a\u3044\u3088/\uff1e\u8ab0\u304b\u306e\u9752\u6625\u3092\u596a\u3046\u3053\u3068\u306f\u3067\u304d\u308b\u3088\uff01/\uff1e\u3067\u3001\u304a\u524d\u3089\u306e\u52dd\u5229\u6761\u4ef6\u306f\u306a\u3093\u306a\u306e\uff1f/\uff1e\u306a\u3044\u3001\u3053\u306e\u796d\u306f\u8ca0\u3051\u305f\u4e8b\u304b\u3089\u59cb\u307e\u3063\u305f\u304b\u3089","user":"feita","tags":["\u30e1\u30b7\u30a6\u30de\u72b6\u614b"]},{"timestamp":"2009/04/15 10:55:07","comment":"","user":"accent_32","tags":},{"timestamp":"2009/04/15 10:52:46","comment":"","user":"neko-note","tags":},{"timestamp":"2009/04/15 10:44:57","comment":"\u3048\u30fc\u3068\u3001blog\u3063\u3066\u306e\u304c\u3069\u3046\u3044\u3046\u3068\u3053\u308d\u304b\u3084\u3063\u3071\u308f\u304b\u3063\u3066\u3044\u306a\u3044\u3072\u3068\u591a\u3044\u3093\u3060\u306a\u3041\u3001\u3068\uff08\uff52\uff59","user":"ezil","tags":["\u3053\u308c\u306f\u3053\u308f\u3044","2ch"]},{"timestamp":"2009/04/15 10:14:50","comment":"\u902e\u6355\u8005\u304c\uff12\uff43\uff48\u304b\u3089\u6ca2\u5c71\u3067\u307e\u3059\u3088\u30fc\u306b\uff3e\uff3e","user":"ryupon-21","tags":},{"timestamp":"2009/04/15 10:00:11","comment":"","user":"ktmc","tags":["at de yom"]},{"timestamp":"2009/04/15 09:46:19","comment":"\u5ca9\u821f\u3068\u3044\u3063\u305f\u3089\u300c\u79d2\u901f5\u30bb\u30f3\u30c1\u30e1\u30fc\u30c8\u30eb\u300d\u306e\u821e\u53f0\u3058\u3083\u3042\u306a\u3044\u304b\u30fb\u30fb\u30fb\u3002","user":"kaitoster","tags":["\u307e\u3068\u3081","2ch"]},{"timestamp":"2009/04/15 09:40:04","comment":"\u306a\u3093\u305e\u3053\u308c","user":"HolyGrail","tags":},{"timestamp":"2009/04/15 09:36:36","comment":"","user":"km37","tags":},{"timestamp":"2009/04/15 09:33:53","comment":"","user":"gdno","tags":["\u307e\u3068\u3081","2ch","\u3042\u3068\u3067\u8aad\u3080"]},{"timestamp":"2009/04/15 09:26:52","comment":"","user":"CUTPLAZA-Tomo","tags":["\u3042\u3068\u3067"]},{"timestamp":"2009/04/15 09:15:51","comment":"\u30ed\u30df\u30aa\u3068\u30b8\u30e5\u30ea\u30a8\u30c3\u30c8\u3092\u60f3\u50cf\u3057\u3066\u3084\u307e\u306a\u3044\u3067\u3059\u3002\u7d50\u5a5a\u3067\u304d\u308b\u5e74\u306a\u306e\u306b\u306d\u3002","user":"zambia","tags":},{"timestamp":"2009/04/15 09:09:36","comment":"","user":"kei_identity","tags":},{"timestamp":"2009/04/15 08:56:43","comment":"","user":"yamakaz","tags":["\u3042\u3068\u3067\u8aad\u3080"]},{"timestamp":"2009/04/15 08:54:26","comment":"\uff57\uff4b\uff54\uff4b","user":"Mist","tags":["\u3042\u3068\u3067\u8aad\u3080"]},{"timestamp":"2009/04/15 08:39:29","comment":"\u63a2\u5075\u3054\u3063\u3053\u304b\u3002\u304b\u308f\u3044\u3044\u5b50\u306f\u6ce8\u610f\u3057\u305f\u65b9\u304c\u3044\u3044\u306a\u3002\u5e74\u8cc0\u72b6\u306b\u4f4f\u6240\u3063\u3066\u9732\u9aa8\u3059\u304e\u3002\u30d1\u30d1\u306f\u30b7\u30e7\u30c3\u30af\u3060\u308d\u3046\u306d\u3002","user":"cake_holl1515","tags":},{"timestamp":"2009/04/15 08:32:04","comment":"","user":"pukada","tags":["2ch","\u307e\u3068\u3081"]},{"timestamp":"2009/04/15 08:02:30","comment":"","user":"k-mmths03","tags":},{"timestamp":"2009/04/15 07:34:51","comment":"","user":"ocha39","tags":["2ch"]},{"timestamp":"2009/04/15 07:32:09","comment":"\u3053\u308c\u305e\u4eba\u8089\u691c\u7d22\u306e\u6975\u307f\u304b\u3002","user":"georgew","tags":["\u3042\u30fc\u4eba\u751f","\u3053\u308c\u306f\u3053\u308f\u3044","\u3053\u308c\u306f\u30ad\u30c4\u3044"]},{"timestamp":"2009/04/15 05:53:15","comment":"\u4e0b\u7a2e\u3069\u3082\u3002","user":"lefthanded","tags":["2ch","\u307e\u3068\u3081"]},{"timestamp":"2009/04/15 05:49:42","comment":"\u8a95\u751f\u30b1\u30fc\u30ad\u306e\u753b\u50cf\u304b\u3089\u7236\u89aa\u306e\u540d\u524d\u3092\u7279\u5b9a\u2192\u96fb\u8a71\u5e33\u691c\u7d22\u30b5\u30fc\u30d3\u30b9\u4f7f\u3063\u3066\u4f4f\u6240\u7279\u5b9a\u2192\u5e74\u8cc0\u72b6\u306e\u753b\u50cf\u304b\u3089\u78ba\u5b9a / \u3053\u308c\u3092\u5831\u9053\u3057\u305f\u30ed\u30b1\u30c3\u30c8\u30cb\u30e5\u30fc\u30b9\u3082\u3053\u308c\u306b\u52a0\u62c5\u3057\u3066\u3044\u308b\u3068\u3044\u3046\u3053\u3068\u3092\u81ea\u899a\u3057\u3066\u6b32\u3057\u3044\u306d\u3002","user":"al001","tags":},{"timestamp":"2009/04/15 05:22:59","comment":"\u307e\u3060\u307e\u3060\u624b\u306c\u308b\u3044\u3068\u601d\u3044\u307e\u3059\u3002\u81ea\u6bba\u8005\u304c\u51fa\u3066\u304b\u3089\uff62\u4ffa\u3089\u3084\u308a\u3059\u304e\u305f\u3088\u306a\uff63\u3068\u304b\u624b\u306e\u3072\u3089\u3092\u8fd4\u3059\u306e\u304c\u69d8\u5f0f\u7f8e\u3067\u3059\u3002\u305d\u306e\u305f\u3081\u306b\u3082\u81ea\u6bba\u8005\u304c\u51fa\u308b\u304f\u3089\u3044\u52a0\u71b1\u3092\u3002","user":"nakano87","tags":},{"timestamp":"2009/04/15 04:03:25","comment":"\u306a\u3093\u3060\u304b\u5f37\u70c8\u306a\u65e2\u8996\u611f\u3092\u611f\u3058\u308b\u3093\u3060\u304c","user":"m_shinzaki","tags":},{"timestamp":"2009/04/15 03:26:47","comment":"","user":"hecoheco","tags":},{"timestamp":"2009/04/15 02:29:49","comment":"","user":"dlogbk","tags":["2ch"]}],"url":"http://www19.atwiki.jp/rabuho/","title":"\u30e9\u30d6\u30db\u306b\u884c\u3063\u305f\u4e2d\u5b66\u751f\u3068\u305d\u306e\u587e\u8b1b\u5e2b \u307e\u3068\u3081wiki - \u30c8\u30c3\u30d7\u30da\u30fc\u30b8","screenshot":"http://screenshot.hatena.ne.jp/images/120x90/f/4/b/3/e/9c3e7bf256555ca7d8c59bea86bf79edda1.jpg"})
タイトルからしてものものしいが、理由は簡単。
ろくでもないから。
今自分が住んでいるマンションは、筆者である私自身が自発的な引っ越しによって移ってきた場所ではなく
両親とその娘(娘は私の姉にあたる)が互いの住居をを交換する、というかたちで引っ越してきた
((普通はこんなん滅多にないよな))のだが、このマンションがもう、ひどい、というレベルじゃなく
ありえない、なのだ。
まずこのマンションは姉夫婦が中古で買ったマンションなんだが、まあ、値段は近所の
マンションのスペック調べたらH1年築。そろそろ20年ぐらいになるわけだが、このマンション(というよりはスペック的には寧ろ団地)はマジヤバイ。
ヤバイなんてもんじゃない。
普段普通に暮らしているだけでも
・配水管音
(だいたい10分おきぐらいに、いわゆるトイレとかの水を流す音が聞こえる。
そして、外にあるその配水管は誰かがなぐったような形跡があって、ベコベコになっているが直る様子がない)
・上階からの衝撃音
(ようは上のクソガキが飛び跳ねる音)
・上階からの水漏れ
(たまにお風呂で咳してる音とか聞こえてきます。マジきめぇw)
・廊下からの音
・同じフロア内のドア衝撃音
(5mぐらい離れた住居なのに、振動が伝わってきて自分の部屋の窓がビリビリ震える)
・叩いてもまるで発泡スチロールのような、防音性能0の薄い壁
(お風呂場にいても自室のメール着信音が聞こえてきたのにはビビったw)
(一応東南向)
・一応3LDKなのにどう考えても物置にしか使えないような部屋がある
(自分の自室。窓を開けたら隣の棟の壁しか見えない北向き。昼間の暗さとかテラ地下室w)
その騒音を部屋の都合上一手に引き受けている自分は、耳栓が手放せなくなったわけですよ。
でね、もっと驚くべき事にこんなマンションがね、2000万もするわけですよ。2000万。
バブルのときはもっと高かったのかな。
こんな騒音だらけのクソボロイマンションでも、駅近10分以内、というだけで賃貸12万です。
で、こんなマンションに限って宣伝文句が「ずっと住み続けられるヴィンテージマンション」とかなんとかほざいてるわけですよ。おまえらアホかとバカかとwwww
あのね、2000万っていったら、しがない新卒社員の年収の10倍近くもするんですよ?
はっきり言って、大金。
10年間ちかく必死に働かないと得られないお金分、ローンを組んだらこんなマンションでも月6万ぐらいで20年近くずーっとローンを払い続けなければならないわけで。
で、手に入るのが、こんなグレードのマンションて。
心底バカらしくね???
こんな中古マンション売って利益を得てる不動産会社ってボロ儲けすぎじゃね???
こんなマンションでも、適当に広告でっち上げて、何も知らないバカなやつに売りつければそれで利益が上がるんですぜ?
暴論かもしれないけど、今超不況で不動産会社ぼんぼんつぶれてますが、自分はこんな経験があるせいか正直ざまーみろ、としか思わなかったですよ。
姉夫婦は一体何を考えてこんなマンションを買ったのかマジでわからん。
いくら駅近利便性がいいっていっても、酷いマンションで暮らす精神的ストレスのなさと利便性を秤にかけたら、自分は間違いなく前者を優先するですよ。
4月に引っ越す前に暮らしていたマンションはH7年(1995年)築でこちらもそろそろ20年近くになるわけですが、そこのマンションではこんな騒音は微塵もなかったしね。
値段の違いもあるけど、マンションは確実に劣化する。そして、使われている建材がショボければショボイ(値段安い)ほど、上記でさんざん述べたようなひどいことが確実に起こってくる。
結婚したての若夫婦は、私の姉夫婦みたいに安さに惹かれてマンションとか買ってしまいがちなことがあるかもですが、本気で中古マンションは辞めた方がいいと思います。
※愚痴です。
私は高3で、10月末に行われる文化祭の広報パートとしてウェブサイトを作ってくれと頼まれた。7月のことだ。
うちの高校は男子校で、それなりに名門の大学の付属校だ(系列校という場合もある)。ターゲットは女子高生か受験生、いずれにせよ普段はネットをあまり使わない層だと思われる。そして学校名はそれなりに目立たせたほうがいいと考えた。
はじめは特に何も指定されなかったから、一般的でわかりやすいと思われるヘッダ、左メニュー、右コンテンツ、フッターの4ブロック構成にし、ヘッダには文化祭のテーマ(英単語)のロゴを背景に「学校名 文化祭名 開催日」をh1要素として入れた。左には「インフォメーション」とか「オリジナルグッズ」とかそういう一単語の簡単なメニューを入れ、マウスオーバーで見た目が変わるような装飾を施した。右コンテンツには全ページにh2要素をはじめにいれ、そのページのタイトルとした。デザインは横幅850pxの中央寄せで背景はストライプ、中央の背景は白一色にし、テーマにそってやや濃いグレーと赤系で色づけた。
高校生の文化祭のサイトとしてはかなり良いほうなんじゃないかと自負していた。
なおGoogleAnalyticsによると8月の平均ページビュー(1人当たりのページビュー)は8ページで、数字的にも悪くないと私は考えていた。ちなみに8月の総PVは20000だった。「大学名 グッズ」で検索したときに、大学のページより上に本校の文化祭の大学グッズ紹介のページが表示されているのは感動的だった。
新学期が始まったから、総務パート、装飾パート、パンフパートに見せたわけだ。
するとなんだ、1分くらい沈黙が続いた後、第一声がこれだ。
“公式サイトなんて学校名で検索されてくるんだから、すべてのページのタイトル(たぶんh2要素のこと)やトップ画像(たぶんヘッダのこと)にわざわざ学校名を入れる必要はない。開催日だって「インフォメーション」のページに書いてある。開催日が気になったら「インフォメーション」のページを見るだろ普通。トップ画像にはパンフパートが用意したロゴ(英単語+イラスト)を入れるだけで、学校名や文化祭名や開催日は入れるな。”
(^ω^;)
文句は続いた。
“テーマに対してデザインが明るすぎる。背景は真っ黒にして文字は真っ白がいい。文字(%指定で14pxにしている)もでかすぎる。”
いったい、何のための公式サイト作成なんだ。勝手にやってくれ。私は降りる。
降りて専門学校を探さなければ。大学の推薦入学を得られるだけの成績がないのだ。
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
_________________ここから下は古い情報▼__________________________________________________
今、自分のブログをスクラッチしているので、こちらで。→2008/9/28 スクラッチ完了!BLACK-OUT.CSS公式ページ
作りました
要は、LynxのようなシンプルWebに世界がなればいいのになと思っている方。
そして、どんなサイトでも目線は左右に動かしたくない!スクロールは上下だけで済ませたい!
と、強く考えておられる方むけの情報です。
私はテキストブラウザのLynxを時々使っているのですが、これでサイトを見るとシンプルに見れるのですごく良いんですよね。
ただ、LynxはFlashとか画像が見れないし、マウスが使えないのはいざって時にちょっと不便。
で、Firefoxをテキストブラウザ化できないかなあと、ふと思いまして、思いつきで作ってしまいました。
私めもwebデザイナーやっとるんですが、上記のように、昨今のwebデザインなんて普段はなくていいって思っている奴でして。
仕事じゃ3カラムのサイトとか作りますが自分はそんなん好きじゃないです。色がサイトごとに違うってのも理解できない。
必要なのは情報であってデザイナーのデザインなんてどうでもいいんですよ。
そんな訳で、どんなサイトでもテキストブラウザ状態で閲覧できるFirefox用の拡張cssを作りました(やっつけだけど)。
ただ、ニュースサイトで画像が見れないと困る時もあるので、普段は小さなサムネイルで、カーソルを合わせた時だけ大きく表示されるようにしています。
@このcssはコンセプト実証モデルです。思いつきで作ってるのでちょっと問題もあります。フィードバックとか意見など頂けると嬉しいかも。
@将来的には、グリモンでjsも組み合わせてもっとコンソールのような感覚でブラウジングできるようにしたい
@(参考用)私のよく見るサイト・・・ニコ動、wikipedia、スラッシュドットジャパン、2nn.jp(2ch)、mixi、はてなでホッテントリに上がっているブログ各種
ちなみに、こんなん使うな、既にこんないいのあるわいってのをご存知の方は教えてくれると嬉しいです。
それなりに探したのだけど、見当たらなくて・・・だから自作したので。
/* * ---------------------------- * black-out.css * author zamamin.com * build 2008.8.09 15:03 * version 0.0.31 * fix @namespaceを書いてなかったので追加 * ---------------------------- * */ @namespace url(http://www.w3.org/1999/xhtml); /* 全てのエレメントをリセット */ body,body * { background-image:none !important; background-color:#000 !important; border-color:#333 !important; text-decoration:none !important; color:#aaa !important; /*<- テキスト色 */ font-size:16px !important; /*<- 文字サイズ */ font-weight:normal !important; padding:0.15em !important; margin:0 !important; line-height:1.25em !important; text-align:left !important; text-indent:0 !important; font-family:Arial,Helvetica,Verdana,'ヒラギノ角ゴPro W3','Hiragino Kaku Gothic Pro',Osaka,'メイリオ',Meiryo,'MS Pゴシック',sans-serif !important; float:none !important; clear:both !important; position:relative !important; width:auto !important; height:auto !important; } body { background-color:#000 !important; padding:0.5em !important; } body * p, body * div, body * h1, body * h2, body * h3, body * h4, body * h5, body * h6{ margin-bottom:0.3em !important; float:left !important; clear:both !important; } /* リンク色 */ body * a, body * a *{ color:#a50 !important; } /* アクセス済みのリンク色 */ body * a:visited{ color:#a50 !important; } /* カーソルを合わせた時のリンク色 */ body * a:hover, body * a:hover *{ color:#0aa !important; background-color:#609 !important; } /* 画像は普段は小さくサムネイル表示。鬱陶しいので薄く表示 */ body * img{ opacity:0.3 !important; height:15px !important; width:15px !important; } /* 画像はマウスカーソルもっていけば原寸サイズになる */ body * img:hover{ opacity:0.9 !important; height:auto !important; width:auto !important; } button, input, select, option, textarea{ color:#f00 !important; padding:0.05em !important; height:auto !important; } /* テーブルのスタイル */ table{ border:none; } table td, table th{ border:none; border-right:1px dashed #999 !important; border-bottom:1px dashed #999 !important; } /* for 2ch(暫定) */ body * dt{ font-weight:bold !important; } /* 二コ動 */ embed#flvplayer{ height:540px !important; width:952px !important; }
前の60行テンプレートエンジンを改良して、レイアウトテンプレート機能を追加してみた(それでも全部で90行)。
レイアウトテンプレート機能とは、例えば個別のテンプレートが<table>...</table>を出力して、それをレイアウトテンプレートが<html><body>...</body></html>で囲って出力するとかそんなの。
詳しくは終わりの方のサンプルをみてくれ。
これは Ruby on Rails(とその仲間たち)にある便利機能のひとつ。
ついでにいうとSmartyにはない機能のひとつ。
今まで知らなかった人はぜひ試してくれ。チョー便利だから。
前回はたくさんのブックマークありがと。
コメントで「男前テンプレート」と名前がついてたので、勝手に採用。
あと、これ以上の機能追加はしないので、各自勝手に改造して使ってくれ(そのためにコメントをつけてるから)。何でも人任せにするな。
コード:
<?php /* * OtokomaeTemplate.php -- レイアウトテンプレートに対応した90行のテンプレートエンジン * * - レイアウトテンプレート中で echo $_content; とすると中身が表示される。 * - テンプレート中で設定した変数をレイアウトテンプレートで使うことが可能。 * - レイアウトテンプレート名をテンプレート側で指定することも可能。 * - 使い方: * require_once('OtokomaeTemplate.php'); * $TEMPLATE_DIR = 'templates'; // 省略可、パーミッションに注意 * $LAYOUT_TEMPLATE = 'layout.php'; // 省略可 * $context = array('title'=>'Example', * 'list'=>array(10,'<A&B>',NULL)); * include_template('template.php', $context); * - 要 PHP 5.1 or later * - ライセンス: public domain (自由に改造してね) */ /* * 設定用のグローバル変数 */ $TEMPLATE_DIR = NULL; /* テンプレートを探すディレクトリ */ $LAYOUT_TEMPLATE = NULL; /* レイアウトテンプレートのファイル名 */ /* * テンプレートを読み込んで実行する。 * $_context は変数名をキー、値を要素とする連想配列。 * $_layout はレイアウトテンプレートのファイル名。 * - NULL または省略した場合は $LAYOUT_TEMPLATE を使う。 * - FALSE ならレイアウトテンプレートを使わない。 * - $_context['_layout'] = '...'; とすればテンプレート側でも指定可能。 */ function include_template($_filename, $_context, $_layout=NULL) { global $LAYOUT_TEMPLATE; $_content = render_template($_filename, $_context); if (@$_context['_layout'] !== NULL) // テンプレート側で指定された場合は $_layout = $_context['_layout']; // それを使う。 elseif ($_layout === NULL) // 引数で指定されなかった場合は $_layout = $LAYOUT_TEMPLATE; // デフォルトのファイル名を使う。 if ($_layout) { $_context['_content'] = $_content; // レイアウトテンプレート中で使う変数 $_content = render_template($_layout, $_context); } echo $_content; // or return $_content; } /* * テンプレートを読み込んで実行し、その結果を文字列で返す。 * include_template() の実体。 */ function render_template($_filename, &$_context) { $_cachename = convert_template($_filename); extract($_context); // 連想配列をローカル変数に展開 ob_start(); include($_cachename); // テンプレートを読み込んで実行 return ob_get_clean(); } /* * テンプレートファイルを読み込み、convert_string() で置換してから * キャッシュファイルに書き込む。読み込み時のロックは省略。 * (file_get_contents() もファイルロックできるようにしてほしいなあ。) */ function convert_template($filename) { global $TEMPLATE_DIR; if (! file_exists($filename) && $TEMPLATE_DIR) $filename = "$TEMPLATE_DIR/$filename"; $cachename = $filename . '.cache'; if (! file_exists($cachename) || filemtime($cachename) < filemtime($filename)) { $s = file_get_contents($filename); $s = convert_string($s); file_put_contents($cachename, $s, LOCK_EX); // LOCK_EX サポートは 5.1.0 から } return $cachename; } /* * テンプレートの中身を置換する。 * - '#{...}' を 'echo ...;' に置換 * - '%{...}' を 'echo htmlspecialchars(...);' に置換 * - ついでにXML宣言も置換 */ function convert_string($s) { $s = preg_replace('/^<\?xml/', '<<?php ?>?xml', $s); $s = preg_replace('/#\{(.*?)\}/', '<?php echo $1; ?>', $s); $s = preg_replace('/%\{(.*?)\}/', '<?php echo htmlspecialchars($1); ?>', $s); return $s; } ?>
<?php require_once('OtokomaeTemplate.php'); $TEMPLATE_DIR = 'templates'; $LAYOUT_TEMPLATE = 'layout.php'; $context = array('list'=>array(10,'<A&B>',NULL)); include_template('template.php', $context); ?>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <body> <h1>%{$title}</h1> <div id="maincontent"> <!-- テンプレートの内容 --> <?php echo $_content; ?> <!-- /テンプレートの内容 --> </div> </body> </html>
<?php // レイアウトテンプレート名をテンプレート中で指定する場合 ?> <?php //$_context['_layout'] = 'mylayout.php'; ?> <?php // レイアウトで使用する変数をテンプレート中で指定する場合 ?> <?php $_context['title'] = 'レイアウトのサンプル'; ?> <table> <?php foreach ($list as $i=>$item): ?> <tr bgcolor="#{$i % 2 ? '#FFCCCC' : '#CCCCFF'}"> <td>#{$i}</td> <td>%{$item}</td> </tr> <?php endforeach ?> </table>
出力例:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <body> <h1>レイアウトのサンプル</h1> <div id="maincontent"> <!-- テンプレートの内容 --> <table> <tr bgcolor="#CCCCFF"> <td>0</td> <td>10</td> </tr> <tr bgcolor="#FFCCCC"> <td>1</td> <td><A&B></td> </tr> <tr bgcolor="#CCCCFF"> <td>2</td> <td></td> </tr> </table> <!-- /テンプレートの内容 --> </div> </body> </html>
いくつか補足:
http://anond.hatelabo.jp/20071030034313 の二番煎じ
あまりのアホさに、作ってて気が狂いかけた
方針
using System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.IO; using System.Reflection; using Microsoft.CSharp; delegate void ConvertTemplateDelegate(TextWriter tw, Dictionary<object, object> args); static class TemplateGenerator { public static ConvertTemplateDelegate Generate(string code) { CompilerParameters param = new CompilerParameters(); param.GenerateInMemory = true; param.ReferencedAssemblies.Add("System.Web.dll"); CompilerResults rs = new CSharpCodeProvider().CompileAssemblyFromSource(param, ParseTemplate(code)); if (0 < rs.Errors.Count) { StringWriter sw = new StringWriter(); sw.WriteLine("Compile Error..."); foreach (CompilerError err in rs.Errors) sw.WriteLine(err.ToString()); throw new Exception(sw.ToString()); } return (ConvertTemplateDelegate) Delegate.CreateDelegate(typeof(ConvertTemplateDelegate), rs.CompiledAssembly.GetType("Template", true).GetMethod("Convert")); } private static string ParseTemplate(string code) { using (StringWriter sw = new StringWriter()) { sw.WriteLine("using System; using System.Collections.Generic; using System.IO; using System.Web;"); sw.WriteLine("public static class Template {"); sw.WriteLine("public static void Convert(TextWriter tw, Dictionary<object, object> args) {"); int index = 0; while (0 <= index && index < code.Length) { int i = code.IndexOf("<%", index); sw.WriteLine("tw.Write(\"{0}\");", EscapeString(i < 0 ? code.Substring(index) : code.Substring(index, i - index))); if (0 <= i) { i += 2; int i2 = code.IndexOf("%>", i); if (0 <= i2) { string cc = code.Substring(i, i2 - i); if (cc.StartsWith("=")) sw.WriteLine("tw.Write(HttpUtility.HtmlEncode(\"\"+({0})));", cc.Substring(1)); else sw.WriteLine(cc); i = i2 + 2; } } index = i; } sw.WriteLine("}}"); return sw.ToString(); } } private static string EscapeString(string code) { return code.Replace("\\", "\\e").Replace("\"", "\\\"").Replace("\t", "\\t").Replace("\n", "\\n").Replace("\r", "\\r").Replace("\\e", "\\\\"); } }
サンプル C# コード。ためしにテンプレートから Xml 生成して、標準出力してみる。
class Program { static void Main(string[] args) { ConvertTemplateDelegate func = TemplateGenerator.Generate(TemplateEngine.Resource1.template); using (StringWriter sw = new StringWriter()) { Dictionary<object, object> arg = new Dictionary<object, object>(); arg["title"] = "template sample"; arg["data"] = new string[] { "foo", "fooo", "<strong>foooooooooo!</strong>" }; func(sw, arg); Console.WriteLine(sw); } } }
サンプルテンプレート
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title><%= args["title"] %></title> </head> <body> <h1><%= args["title"] %></h1> <table> <% string[] data = (string[]) args["data"]; %> <% for(int i = 0; i < data.Length; i++) { %> <tr bgcolor="<%= i % 2 == 0 ? "#FFCCCC" : "#CCCCFF" %>"> <td><%= i %></td> <td><%= data[i] %></td> </tr> <% } %> </table> </body> </html>
出力例
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>template sample</title> </head> <body> <h1>template sample</h1> <table> <tr bgcolor="#FFCCCC"> <td>0</td> <td>foo</td> </tr> <tr bgcolor="#CCCCFF"> <td>1</td> <td>fooo</td> </tr> <tr bgcolor="#FFCCCC"> <td>2</td> <td><strong>foooooooooo!</strong></td> </tr> </table> </body> </html>
CodeDom 使って動的コンパイル……って、このコードのままだとセキュリティ的に大問題な気がするな。
素直に ASP.NET 使ったほうが楽だと直感した。
あと EscapeString すっごく自信ない。たぶん修正が必要だと思うw
やってしまった・・・。
方針:
package SixtyLinesTemplate; use strict; use warnings; our $VERSION = '0.01'; sub convert { return unless defined(my $str = shift); $str =~ s{&}{&}gso; $str =~ s{<}{<}gso; $str =~ s{>}{>}gso; $str =~ s{\"}{"}gso; $str; } sub include_template { my $tmpl = shift; my %c = %{+shift}; eval convert_template($tmpl); die $@ if $@; } sub convert_template { my $tmpl = shift; my $cache = $tmpl.'.cache'; return scalar do { open my ($FH) , $cache; local $/; <$FH> } if ( -f $cache && (stat($tmpl))[9] <= (stat($cache))[9] ); my $out = do { open my ($FH) , $tmpl; local $/; <$FH> }; $out =~ tr/()/\x28\x29/; $out =~ s/\[%\s*(foreach|if|unless|end)\s*(.+?)\s*{?\s*%\]/");".(lc($1) eq 'end' ? '} print q(' : "$1 $2 { print q(")/ige; $out =~ s/\[%(.+?)%\]/);print $1; print q(/g; $out =~ s/\[#(.+?)#\]/);print SixtyLinesTemplate::convert($1); print q(/g; $out = 'print q('.$out.');'; open my ($FH) , '>' , $cache; print $FH $out; $out; } 1;
サンプルコード:
use SixtyLinesTemplate; my $context = { 'title' => 'Example', 'list' => [10,'<A&B>'] }; SixtyLinesTemplate::include_template('template.tmpl',$context);
サンプルテンプレート:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>[# $c{title} #]</title> </head> <body> <h1>[# $c{title} #]</h1> <table> [% foreach my $i (0..@{$c{list}}-1) %] <tr bgcolor="[% $i % 2 ? '#FFCCCC' : '#CCCCFF' %]"> <td>[% $i %]</td> <td>[# $c{list}[$i] #]</td> </tr> [% end %] </table> </body> </html>
出力例:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Example</title> </head> <body> <h1>Example</h1> <table> <tr bgcolor="#CCCCFF"> <td>0</td> <td>10</td> </tr> <tr bgcolor="#FFCCCC"> <td>1</td> <td><A&amp;B></td> </tr> </table> </body> </html>
foreachんところが汚く見えるかもしれませんが、あれは添え字を取ろうとするとああなるんでご勘弁を。
普通にループするだけならforeach my $item (@$c{title}) でいけますゆえ。
あと存在しない変数とか使うと死んだり警告でたりするのでevalの前にno strictとno warningsをやった方がいいかもねぇ。
って何まじめに検証してんだ俺・・・orz
追記:
SixtyじゃなくてFortyだね。恥ずかし!
追追記:
でも&amp;の奴はちゃんと書いてるんだけども投稿すると勝手にエスケープされてしまってるんだよね。何でだろ?
ちなみにこのconvertの処理はCGI::Utilから拝借しました。
方針:
【追記】レイアウト機能を追加してみた
コード:
<?php /* * SixtyLinesTemplate.php - 60行しかないけどSmartyより速いテンプレートエンジン * * 使い方: * require_once('SixtyLinesTemplate.php'); * $TEMPLATE_DIR = 'templates'; // 省略可、パーミッションに注意 * $context = array('title'=>'Example', * 'list'=>array(10,'<A&B>',NULL)); * include_template('template.php', $context); * * ライセンス: public domain (自由に改造してね) */ /* * テンプレートを探すディレクトリ。 */ $TEMPLATE_DIR = NULL; /* * テンプレートを読み込んで実行する。 * $_context は変数名をキー、値を要素とする連想配列。 */ function include_template($_filename, $_context) { $_cachename = convert_template($_filename); extract($_context); include($_cachename); } /* * filename を読み込み、convert_string() で置換してから * filename.cache に書き込む。読み書きのロックは省略。 * (file_{get,put}_contents() はファイルロックできるようにすべきだ。) */ function convert_template($filename) { global $TEMPLATE_DIR; if (! file_exists($filename) && $TEMPLATE_DIR) $filename = "$TEMPLATE_DIR/$filename"; $cachename = $filename . '.cache'; if (! file_exists($cachename) || filemtime($cachename) < filemtime($filename)) { $s = file_get_contents($filename); $s = convert_string($s); file_put_contents($cachename, $s); } return $cachename; } /* * テンプレートの中身を置換する。 * - '#{...}' を 'echo ...;' に置換 * - '%{...}' を 'echo htmlspecialchars(...);' に置換 * - ついでにXML宣言も置換 */ function convert_string($s) { $s = preg_replace('/^<\?xml/', '<<?php ?>?xml', $s); $s = preg_replace('/#\{(.*?)\}/', '<?php echo $1; ?>', $s); $s = preg_replace('/%\{(.*?)\}/', '<?php echo htmlspecialchars($1); ?>', $s); return $s; } ?>
<?php require_once('SixtyLinesTemplate.php'); $TEMPLATE_DIR = 'templates'; // optional $context = array('title'=>'Example', 'list'=>array(10,'<A&B>',NULL)); include_template('template.php', $context); ?>
サンプルテンプレート:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>%{$title}</title> </head> <body> <h1>%{$title}</h1> <table> <?php foreach ($list as $i=>$item): ?> <tr bgcolor="#{$i % 2 ? '#FFCCCC' : '#CCCCFF'}"> <td>#{$i}</td> <td>%{$item}</td> </tr> <?php endforeach ?> </table> </body> </html>
出力例:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Example</title> </head> <body> <h1>Example</h1> <table> <tr bgcolor="#CCCCFF"> <td>0</td> <td>10</td> </tr> <tr bgcolor="#FFCCCC"> <td>1</td> <td><A&B></td> </tr> <tr bgcolor="#CCCCFF"> <td>2</td> <td></td> </tr> </table> </body> </html>
素敵さんが公開されているユーザースタイルシートをつかいたかった
→自分でなんとかするしかないみたいだ・・・
っちゅーことでつくったcss。
コードは整理されてないしもうやる気は残ってないし
でココで公開してしまえ
ミクシィの表示を横幅720pxの2ペインにします。
主な改造点は
・全体的に行間を狭めた。
・全体的に余白を狭めた。
・一部の背景をうっすーい灰色にした。
・さよならmikly。
・絶対位置指定divを排除(全部は無理なので目立つ部分を適当に。)
・広告をほどほどけした。
・etc...
使い方は「mixi ユーザースタイルシート」あたりで検索してくれ…
/* mixi User Style Sheet by anon */ /* based mixi 2pain User StyleSheet (by Shao) thank you ! */ .emoji{display:none !important} /* 広告*/ p.adBanner, div#diaryComment div.diaryBottomAd, div.prContents, div.sponsorList01{display:none !important} div#adBanner{display:none !important} /*ローカルナビ*/ #localNavigation ul li{position:static;} #localNavigation ul.localNaviHome img{width:80px !important;} #localNavigation ul.localNaviFriend img{width:102px !important;} a#diaryPullDownButton,a#photoPullDownButton,a#videoPullDownButton, a#reviewPullDownButton{display:none !important} li.mikly, li.review, li.movie{display:none !important} li.home img {width:73px !important} /* infomation */ div.information {line-height:1.1 !important; font-size:12px !important;} div.information h2{padding-top:10px !important; position:static !important; float:left !important; background-position: 10px 10px !important; } div.information ul{ line-height:1.1 !important;} div.information div.contents{ padding-bottom:0px !important; position:static; width: 98%;} div.information div.contents ul { padding-bottom:0px !important;} /* delete intro */ #intro{display:none !important} #bodyContents #newFriendDiary, #bodyContents #newComment, #bodyContents #newBbs, #bodyContents #newVideo, #bodyContents #newAlbum, #bodyContents #newPlaylist, #bodyContents #newReview, #bodyContents #myUpdate{ padding-bottom:5px !important; } div div.contents {line-height:1.1 !important; background:#fcfcfc;} #newMyDiary div.contents dl.contentsList02{ padding-bottom:1px;} dl.contentsList01{ line-height:1.5 !important;} dl.contentsList02{ line-height:1.5 !important;} ul.entryList01{ line-height: 1.2 !important;} dl.contentsList01 dd{padding-left:16px; background-position: 0% 0.5em;} /* 3rd column */ #bodySub{float:left !important;width:100% !important; margin:0;padding:0;} div#help{display:none !important} div.prContents, div.adBanner, p.greenpower{display:none !important} div#miklyContents{display:none !important} div#prSepecial{display:none !important} div.bodySubSection {width:224px !important; float:left !important; margin:3px !important;} div.bodySubSection div.heading01{position:static !important;} div.bodySubSection a.sectionSize{ position:static !important; margin: -20px 0 0 200px !important; } /* header*/ #headerArea{ background: none !important; height:91px !important;} #headerArea h1 a{ padding:5px 0 5px !important;text-align:left !important;width:720px !important;} #headerArea h1 img {width:93px !important;height:23px !important;} /* footer */ div#headerArea{width:720px !important} div#headerArea,div#bodyArea,div#footerArea, div#footerArea p,div#footerArea ul{width:720px !important; } div#footerArea, div#footerArea p,div#footerArea ul{width:720px !important; overflow:hidden !important; } div#footerArea ul.footerNavigation01 li { margin:0 2px !important }
今作ってるサイトは、クライアントが現在所有しているサイトの構造を基本にしてくれということだったので丸ごとダウンロードして改装中なんだが、なんだか色々な意味でアレゲだ。
デザインそのものがベタで古臭い感じだったので、どうせ何も知らない社員がビルダーか何かで作ったんだろうぐらいにしか思っていなかったのだが、中を見たら意外にもxhtmlで書かれていてちゃんとCSSを当てている。
ただ、その当て方を見てるとやっぱり根本的に何か勘違いしているのが見て取れる。例えばヘッダ部分を空のdivにして、背景画像としてロゴイメージを指定してあったり。素直にh1にimg入れろよ。
他にも1色ベタ塗りのメニューボタン背景が画像で指定されていたり。