「記法」を含む日記 RSS

はてなキーワード: 記法とは

2008-05-22

http://anond.hatelabo.jp/20080522001242

増田子ですー。

かなり妄想いれてだらだら書いちゃったので、失礼かなー、全然的外れじゃないかなーとかどきどきしながら登録したのですが、ちょっとでもお役に立てたら良かったですー。

というか増田ってリンク記法が使えないのねー。。。今気がついて直しました。とほほ。

化粧力強化月間前は、いきなり化粧しはじめるとなんかへんに意識してたのがバレそうで、笑われちゃいそうかなーと自意識過剰に心配だったんですけど。。。

しばらく誰にもなにも言われないし、やっぱり別に他人のこととかそんなに気にしてないんだ〜おkおkと色々やっていたら、ある日会社のおねーさまに「最近きれいになったねー、よいよよいよー♪」と褒めてもらってすっごい感動しました。普通に褒めてもらえて本当に嬉しかったです。

「化粧とかに興味がなさげな人」に外見の話を振るのは難しいから、ちゃんとしたらもっとよくなるのに。。。て思っても、なかなか言えないんですよねー。

まだまだ地味女なんですが、前よりは自信が持てるようになったし、お仕事でも、前は知らない人の前に出るお仕事とか面倒で逃げまくってたんですけど、そういう場に出るのも楽しいなーって思えるようになったので、色々試行錯誤はしたけど、使ったお金時間のモトは絶対とれたなーって思ってます。

増田美さんの文章読んで、なにかのきっかけで自己評価上がればもっともっと出来ることが増えて行く人なんじゃないかなー?と、勝手に確信しちゃいました。

男の人だと「自分はキモメンだから><」って思い込みを直すきっかけって難しいけれど、女にはお化粧ありますから是非頑張ってくださいー!

陰ながら増田子や、たぶん他の増田も応援してますよー!

ところで写真増田美さんですか? なんか普通にきれいっぽい人が映ってるんですが。。。

2008-05-04

日本語の弱点とか言ってる奴

これとそのブクマね。

幸い「日本語論理的でない」というトンデモさんが出てこない(日本語論理的でなかったら学術書の和訳ができるはずがないだろう)ので少し安心しているが、それでも「日本語は情緒的」だとか「日本語曖昧」だとか「日本語は回りくどい」言ってる人が多いので溜息。

そういうこと言ってるお前ら、どれだけ日本語以外の言語知ってるのかと。

お前らが日本語の「欠点」が見えやすいのは、お前らが日本語をよく知っているからだけの話。実際は他言語でもそういう言い方はいくらでもある。

日本語以外の言語で情緒的だったり曖昧だったり回りくどかったりする表現が可能なことは、ラカンだのなんだのの訳のわからん衒学的なポモ文が、明晰と言われるフランス語発祥であることからもすぐにわかるはずだ。「ソーカル事件」でぐぐるといい。あれはフランス語英語における、言語曖昧さを駆使したハッタリの実体をよく暴露したものだと思うよ。


ついでにいうと、言語の機能の話をするとき、文法・記法と語彙の問題がゴッチャにされる傾向があるのはなんとかならんかね。プログラミング言語で言えば前者は構文や「機能」、後者ライブラリに相当するわけだが、大抵のプログラミング言語チューリング完全であるというのと似たような意味で、日本語と他言語能力等価であると考えて差し支えないだろう。

ただし日本語の語彙体系は和語と漢語(和製漢語含む)と西洋外来語がぐちゃぐちゃになってわかりづらいことは確かだ。文字体系も同様。このため、書き言葉において日本語は非常に学習が難しい言葉とされているのは確か。

とはいうものの、語彙体系の煩雑さは英語だってかなりひどい。ゲルマン系・ラテン系ギリシャ系がぐちゃぐちゃ。しかも、selectionとelectionみたいに、もともと同じ言葉が生のラテン語フランス訛りとで違う意味を持ったりする。また、書き言葉が難しいといっても中国語より簡単なのは明らかだし、日本語の書き言葉学習中国人から見れば困難ではないはず。そして日本語の発音体系は非常に単純かつ標準的なので、日本語は話し言葉として見ればかなり簡単。

そういう意味日本語はごく当たり前の言語。今まで挙げた要素すべてで日本語より明らかに効率的な言語はたぶんイタリア語スペイン語ぐらいじゃないか。


あと、「漢字情報圧縮」と言っている人へ。漢字という文字が仮名文字やアルファベットよりはるかに複雑であることは一目瞭然であり、一文字当たりの情報量が多いだけとも言える。文字数が減ったからと言って情報を圧縮したとは言えないぞ。

それから、敬語日本語独自のものではない。英語敬語だって難しいぞ。謙譲語も尊敬語も丁寧語もある。ある程度「話法の助動詞を使う」という原則はあるが、細かい表現はいちいち覚えていくしかない。

2008-04-08

http://anond.hatelabo.jp/20080408153207

え?

とするとこれは・・・

ガイシュツ とか すくつ のような2ちゃんねる記法ってことなのか・・・?

orz...

2008-03-23

なぜギークは「はてな」でブログを書くのか?

スーパーpre記法があるのでソースを張りやすいから。

2008-03-13

tinycafe、世に憚る

http://anond.hatelabo.jp/20080313100241

http://anond.hatelabo.jp/20080313101230

http://anond.hatelabo.jp/20080313101745

なんかキーワード荒らしのために、最近はてなキーワードから消えてしまったようなんだけど、tinycafe女史がまたはてなに帰ってきたんだ。

うん、実に興味深い生態系だからみんなも観察するといいよ!

(今後、発言が増えても当増田リンク集を作る気力があるかどうかわからん)

今回のid:yoko_figurefun

(注記:“ふぐりふん”と読まないこと。本人はフィギュアスケートファンのつもりらしい)

拠点一覧:

http://d.hatena.ne.jp/yoko_figurefun/

http://blogs.yahoo.co.jp/yoko_figurefun

http://www.digicafe.jp/profile/8755564.html

http://abatown.com/mini/index.html?tid=yokokisaragi

http://snow.advenbbs.net/bbs/yokosblog.htm

(注記:元々「無断リンク禁止」主義の人であることと、リファラが飛ばないように敢えて自動リンク停止記法を用いています)

今までの使用id一覧

活動期間id名称注釈
05/??/?? ~ 07/02/15tinycafe 
07/02/28 ~ asaka_saya(tinycafeの親友という設定。4月頃P/W紛失で活動停止)
07/04/05 ~ 07/04/16yoko-fuwari 
07/05/21 ~ 07/08/19tinycafe2 
07/09/27 ~ 07/10/27fuwaridays増田を悪用して大暴れ)
07/11/13 ~ 07/12/01asaka_saya(fuwaridays退会から17日後、P/W見つけて再び運用開始)
08/01/14 ~ 08/01/16?tinycafephoto(はてなフォトライフのみの使用)
08/01/21 ~ 08/01/28tinycafe_yoko 
08/03/12 ~ 現在yoko_figurefun(通算8回目、今回の増田不規則発言

最近揉め事の数々


まあ、揉め事と言ったら他にもキリがないほど沢山あるんだけど、何にせよ気をつけなければならないのは、tinycafeはどうやら“3行以上の文章が読めない”らしいというのが多くの観察者の共通見解。なのでまともなコミュニケーションが成立した例は皆無に近い。

正直、「こんな人はネットからいなくなればいいんだ!」と思っていた時期が増田にもありました。

ただね、最近思うことは、「こういう人でも受け入れてくれる生暖かさが、ある程度はネットにも必要なんだろうな」ということ。

もしかしたら、危ない人がネットに何かを発露することで未然に防げている犯罪もあるのかもしれない。

もっと突っ込んで言ってしまえば、例えば何らかの手段でネット使用禁止を食らったら最後、何をするかわかったものではない。

そういうわけで、恐らくは増田が観察をやめたとしても、tinycafeはtinycafeのままで居続けるのであろう。この先、何年、何十年も。恐らく。きっと。

2008-03-03

http://anond.hatelabo.jp/20080303002801

律儀にコメントしてくれる人 を書いた者です。

追記:初増田なんですが、けっこうすぐ反応あるものなんですね。面白かったです。

オチを残酷にしたのは、ちょっとねらってというか・・・わざとですwまあ本心なんですが。

普段はブクマしか使ってなくて、はてなダイアリー増田も書いたことなかったのではてな

記法とかも分かんないんで、内心どきどきしてましたが、このレスポンスの速さは面白い

ですね。

結局いろいろ考えたんですが、やっぱりいきなり一方的に禁止IPにして、コメントはじく

のは卑怯な気がして。。。

誠実でもフェアでもないし。コメント閉じることにしました。

今まで、コメント閉じるのは反論の余地をなくしているみたいで嫌だったんですよ。フェア

じゃない、つーか。

でもよく考えたらトラバ出来るしどうしても何か言いたいことあればメアドも公開してるし、

それでいいかと。

はてな以外のブログサービスだけど、はてなブックマークボタンも設置したし、なにかあれ

ブクマでよろ、と。

彼ははてブとか使わないし、知らない人なんで多分これで大丈夫でしょう。わざわざはてな

アカウント取ったら笑うけどw

というわけでこのエントリを書いた目的は「他者を拒絶する残酷さ」で、つかの間のサディ

スティックな気分を味わう、というものになりました。まだ新規エントリは書いていないの

で、彼もまだコメントしようとして弾かれていない。

実際には傷つけることなく、他者を傷つけるかも知れないという想像を楽しめた。

いやあ面白かったですね。

まあ、ほんとのところは、一ヶ月も放置してたのに、コメント付いたんでびっくりしたとい

うか怖かったんで思わず、禁止IPにしちゃっただけなんですけどね。

そもそもブログコメントって0が普通だと思うんですよ。mixiじゃあるまいし、義務的にコ

メントくれなくていいんですよ。有益な情報やりとりなら、他の手段もある。ちょっと面倒

くさくすることで、ノイズも減るしね。

あ、あと私どっちかっていうとMなんだけどなー。手首縛られるのとか好きだしw肉体的には

Mだけど、精神的にはSかもしれない。SとMは表裏一体。Mはわがままなんです。

2008-03-02

[][]はてブのhotentryで、2chコピペブログや「ネタ」を削除する

http://anond.hatelabo.jp/20080102122736

汎用性を上げてみた。

はてブのhotentryから削除するgreasemonkey

Sleipnir2のseahorseでも使える。

// ==UserScript==
// @name           hatebufilter
// @namespace      hatebufilter
// @description    Hatena bookmark filter
// @include        http://b.hatena.ne.jp/hotentry*
// @include        http://b.hatena.ne.jp/entrylist*
// ==/UserScript==
/*
問題点
いまのところなし

・問題が起こりそうなURL
http://b.hatena.ne.jp/hotentry?mode=daily&date=20080224
http://b.hatena.ne.jp/hotentry?mode=daily&date=20080218
**/

(function(){
	// Hatebu Tag
	var HatebuTagParentNum = 3;

	var filters = [
		// moconico douga
		{"tag": "div", "name": "entry", "pattern": "nicovideo\.jp"},
/*
		// tag of "2ch"
		{"tag": "a", "name": "tag", "pattern": "2ch", "parentNum": HatebuTagParentNum},
		{"tag": "a", "name": "tag", "pattern": "\\*2ch", "parentNum": HatebuTagParentNum},
**/
		// 2ch blogs  
		//  livedoor
		{"tag": "div", "name": "entry",
			"pattern": /http:\/\/blog\.livedoor\.jp\/(insidears|dqnplus)\//},
		{"tag": "div", "name": "entry",
			"pattern": /http:\/\/(guideline|alfalfa|news4vip)\.livedoor\.biz\//},
		//  fc2
		{"tag": "div", "name": "entry",
			"pattern": /http:\/\/(urasoku|news23vip|waranote|vipvipblogblog|netanabe|res2ch|kanasoku|tenkomo)\.blog\d+\.fc2\.com\//},

		// tag of "neta"
		{"tag": "a", "name": "tag", "pattern": "ネタ", "parentNum": HatebuTagParentNum},
		{"tag": "a", "name": "tag", "pattern": "*ネタ", "parentNum": HatebuTagParentNum},

		// hatena anonymouse diary
		{"tag": "div", "name": "entry", "pattern": /http:\/\/anond\.hatelabo\.jp\//}
	];

	for (var i = 0; i < filters.length; i++) {
		var f = filters[i];
		filtering(f.tag, f.name, f.pattern, f.parentNum== undefined ? 1 : f.parentNum);
	}

	function filtering(tag, name, pattern, parentNodeNum){
		var entrylist = document.getElementsByTagName(tag);
                //print("pattern = " + pattern);
		for(var idx = entrylist.length - 1; 0 <= idx; idx--){
//        for(var idx = 0; idx < entrylist.length - 1; idx++){
			if (entrylist[idx].className == name){
				if (entrylist[idx].innerHTML.match(pattern)) {
					var node = entrylist[idx];
					var oldNode = null;
					for (var j = 0; j < parentNodeNum; j++) {
						oldNode = node;
						node = node.parentNode;
					}
					// print("class = " + oldNode.getAttribute("class"));
					// print("id = " + oldNode.getAttribute("id"));
					node.removeChild(oldNode);
				}
			}
		}
	}
})();

hatebufilter.user.jsなどとUTF-8で保存して使う。

しかし、増田コード記法日本語貼り付けたら化けるんだが・・・どうすればいいんだろ?

コメントアウトを直せば、2chコピペブログ以外の「2chタグ自体での削除も可能です。

いろいろ削除していると、まーオレンジニュースでいいじゃんという。

# スーパー引用記法にしました

2008-02-18

http://anond.hatelabo.jp/20080218201307

http://anond.hatelabo.jp/20080217204219

http://anond.hatelabo.jp/20080217215531

http://anond.hatelabo.jp/20080217210537

http://anond.hatelabo.jp/20080217221248

なんかもうクビ突っ込む気もないんだけど、

なんでこういう人は自分の文体がここでは浮きまくってて自演がバレバレだって気付かないんだろうなぁ。

あと「ID:ktuo2002」とか、それDにリンクしないから! つうかなんでそもそもID大文字

とりあえず↓の編集履歴を見てd:id:saki-haの人が必死なことはよくわかった。

はてなブックマーク - ソーシャルブックマーク

「ハーブマイスターストーカー」を含む日記 - はてなダイアリー

ネットストーカー - はてなダイアリー

はてなストーカー - はてなダイアリー

サイバーストーカー - はてなダイアリー

うん。もちつけ。まずヘルプぐらい読んで、キーワードリンク記法をおぼえろ。

なんて言うかもう全体に「はてなに初めて来てはしゃいでる感」がぶりぶりだ。半年ROMれ

しかしktuo2002の人もヒマだな。っていうかちょっと楽しいんだろうな。saki-haの人はソーシャルハッキングとか複雑なことできなさそうだから安全だし。

2008-02-04

http://anond.hatelabo.jp/20080204064419

=で合ってるってば。→で何が言いたいのかしらないけど、ひょっとして極限のことを言ってるの? だとしても 0.99… = lim(n→∞)Σ(k=1 to n)(0.9 * 10^(-k)) = 1 だよ?

理解できそう?(笑

あ、limとかΣは今考えたオレ記法だから適当に察すれ。てか mimeTeXとか増田で使えんのかな

2008-02-03

http://anond.hatelabo.jp/20080203114053

なんで悩んでるのかもわからん・・・

select 
**
from 
都道府県 tb1
left outer join 
地方 tb2
on tb1.地方コード = tb2.地方コード
order by tb1.地方コード

でいいんじゃないの??

無駄データって何?

地方コードで引きたいってこと?

select 
**
from 
地方 tb2
left outer join 
都道府県 tb1
on tb1.地方コード = tb2.地方コード
where 
tb2.地方コード = 北海道
order by tb2.地方コード

みたいなことか?

無駄データ……ってなんのこっちゃろ?

CREATE function get_地方名(w_地方コード varchar(32)) RETURNS varchar(64)

RETURN

(select

地方名

from

地方

where

地方コード = w_地方コード )

;

こうやっといて、

select 
**,
get_地方名(地方コード) 地方名
from 
都道府県 tb1
order by tb1.地方コード

こんな感じにやるとか、

いろいろやりかたはあるんでねぇの。

もちろん一覧で取得したいなら外部結合のほうがいいにきまっとる。

んじゃ!そんなわけでがんばって!!

SQLインジェクションには気をつけないと怖い増田に怒られるぞ!

追記。

あれ、スーパープレ記法にすると*が二重になる・・・

脳内解釈してちょ

**

2008-01-24

http://anond.hatelabo.jp/20080124134238

フォントいじりは、はてな特有の記法を使うのではなくて、普通HTMLタグを手打ちで使うんですよ。

はてなダイアリーのヘルプでいうと、「日記内でHTMLタグを使う」という項かな。

日記では a・em・strong・ins・del・font など、一部のHTMLタグを利用することができます。利用できないHTMLタグを使った場合、文字列がそのまま表示されます。

はてなダイアリーで利用可能なHTMLタグについて詳しくは、「はてなダイアリー利用可能タグ」をご覧ください。

日記内でHTMLタグを使う - はてなダイアリーのヘルプ

fontタグ等のHTMLタグの使い方については、googleで調べてください。

fontタグで、うまくいかないようだったら、はてなダイアリー入力支援ツールを使った場合に挿入されるタグを参考にして。

キーワードリンクはてなダイアリーガイド「はてなダイアリー編集画面説明」

2008-01-05

Re: ポインタがあったほうがわかりやすい

それはどうかなー

ポインタ一回わかっちゃうとポインタの便利さ具合は身にしみるけど

アドレスを渡して操作する、つまり実体をゴリゴリ複製しないってのは処理時間メモリ量の節約行為でしかない

全てを値渡しの表記法にして、処理完了後の代入行為があるなど直接書き換えを意図していたらポインタ操作になるように言語処理系の方で工夫できたら一番いいのではないかと思うよ

誰もそのうまい書き方を思いついていないから、ソースを書く側で工夫しているわけで。あとケアレスミスに対して危ないから。

2007-12-31

すぐ寝る女は愛される?/男の恋愛深層心理

すぐセックスすると軽い女に見られる。そう信じている女は多いけれど、男は「まずは寝てみないと、本気なれない」というのも真実らしい。セックス後に男が惚れる女って?

2007年12月25日

http://allabout.co.jp/relationship/womenlove/closeup/CU20071225A/

この記事の読者層が凄く知りたい。

要するに、この記事は本当に「女性」に対して書かれたものなのか。

それとも、本当はこの記事を読んでるのは「男性」が多くて、それに対して書かれた記事なのか。

僕は男性だからよくわかるんだけど、個人的にどう考えてもこの記事で書かれてる「愛される女性」ってのは「男性にとって都合のいい女性」とイコールであるような気がする。

この記事に書かれているものを女性が理想として実践すると、それはその女性の立場を貶める結果になるんじゃないだろうか。

引用記法がよくわかんない/(^o^)\

2007-12-25

増田には画像を張ることはできないが、tex記法は使いたいなあ、と思った

2007-12-09

大学院まできましたが、学部の「アルゴリズムデータ構造」で習ったようなテクニックを

使用するような問題にとんと出会わないのだが、一体どういう時に使用することになるはずだったのだろう。

研究で使用しているアルゴリズムといったらむしろ論文上の数式そのものであって、

固有値問題だ、ラグランジュの未定乗数法だ、のような問題であって、

リンクリストだ、サラリーマンセールス問題だ、というようなものは特にみかけないのだが。

うーん、なんだったんだろう。

スタックとかO(n)記法ぐらいなら当たり前の知識として使っているとは思うけど、

ダイナミックプログラミングでさえ使った覚えがない。

2007-11-25

天地逆文字

Unicodeにもないよそんなの。

ありゃまあ。んで、はてな記法を要望するのはそれはそれで一考だけど、やはり文字集合セットにお願いするのがスマートなんじゃないかな。テキストに書きたいのははてなに限らないし。

anond:20071125052330

http://anond.hatelabo.jp/20071125004608

たぶんUnicodeではあるんだろうけど、普通に欲しいなあ。将棋の駒の分だけでいいからさ…そう思わない?

Unicodeにもないよそんなの。

将棋については「将棋記法」をはてなに要望するのがいいと思います。

2007-11-10

匿名日記五日目

よし、五日目。

ニコニコ見てたら遅くなった・・・・

3日ぶりくらいにニコニコ見にいったのだが、

そこで俺は何故かR18のタグ押してしまっていたわけで・・・・

エロ動画サイトなんてブクマしまくっているにもかかわらず、だ・・・・

俺は規制された場にエロを求めてしまっていた・・・・

だが、この「規制された区域でのエロ」ってのがまたそそるわけで・・・・

こんなのはな水着大会バカ殿の入浴シーンでのぽろりみたいなもん。

雇われAV女優と分かっていてもね、パンチラ的な・・・・

その瞬間を見逃すな!というギリギリ、ハラハラ、そのドキドキがエロを高める・・・・

深夜だからこんな始まり方でいいだろ。

それより本だよ、女の友達に借りた本。

まだ半分しか読めていない・・・・

でもな、だいぶ頑張ったぞ?

けどこれ・・・・あんま・・・・はっきり言っていいか?

ぜんぜん面白くないぞ。

ぜんぜんてことはないか・・・・

ただな・・・・単調すぐる。

半分読んでも単調ってヤバいだろ・・・・

この後どんでん返しが待ってたとしても、

それまでのフリが糞つまらんかったという事実は変わらないからな。

残念だか・・・・

あらすじ聞いてないから読み進めるまま知るしかない俺涙目。

非常にじれったいんだが・・・・

俺は根気だけで読んでいます。

早く二冊目いきたいです。

自分独自のタグの人。

http://anond.hatelabo.jp/20071108223848

こうやって貼れば自動的にトラックバックするんだよな。

俺は5日目にしてついに、「トラックバック」を覚えた!ぱちぱち

で?自分独自のタグ?ああ、はいはい・・・・

自分独自のタグね。

え・・・・

そんなの、俺まだ5日目だぞ?

タグは分かる、どこでつけてるのかが分からない。

それはタイトルか本文に、俺だと分かる文字でも書いておけばいいのか?

そんな原始的な方法じゃなくて、本当にタグを作れるの?

タイトルはさすがにつけたくないんだが。

匿名日記だしな。

あ、名乗らないままならいいのか・・・・

というか独自のタグってなんよ・・・・

タグつけてるのは、

ブクマコメントつける時のついでか、

そのブクマする時の条件なのかは知らんが・・・・

IDもってる人がつけるんじゃあないのか?

いや、俺は分かってないけど、

とりあえず記法一覧を見てみたが・・・・

うっ・・・・

どこ見ればいいんだ・・・・

おいこれ難しいぞ・・・・よく分からん・・・・

他の人の日記見てくる・・・・

見てきた。

これ見てもしょうがないよな、タグ見えないんだが。

あ・・・・

よく考えたらタグってどこから見れるのかも分かってない。

ブクマコメントのところ押せば見れるな。

誰がどのタグつけたかも分かるようになってるみたいだな・・・・

匿名日記タグつける場というか作る場も、IDありきの人の画面からしか見れない。

と、俺は踏んでるんだが。違うのか?

ここ5日で日記紹介のブログを沢山見たんだがあれ何?

そのブログで、はてなの日記を異常なほど、

それも毎日集めてるページみたいなところ?を見た。

あれはなんだ、ああいう文化か?

あんないっぱい集めて毎日更新してるのか、すごいな。

収集家だよな・・・・

その日気に入った日記を紹介するページなのか。

それだけのブログってのもあるのか?よくは知らんが・・・・

検索ついでにかち合ったことはあるな、そういう収集家のページ。

あんまりかかわり合いになることはないと思ってたが・・・・

匿名日記には割と身近な存在のようですね・・・・

あっこれか!

日記ブックマークボタン押したらそれらのページがどっと出てきたぞ!

ほう・・・・

身近どころじゃないなこれ、はてなの一機能なのか・・・・

あ・・・・

匿名じゃないな、それにタグとはなんら関係なかった。

タグは、そうだな・・・・

匿名でつける方法が分かったらちょっと考えてみるよ、ごめんな。

やだよ。めんどくさい。の人

はい残念でしたー

俺がトラックバックのやり方知ったのさっきだからね、1時過ぎ。

貼ればいいんだろ?貼らなくてもいい方法もあるのか?

まあ貼ればいいんだから貼ればいいんだ。

それよりタグ・・・・

分からないまま時は流れて2時だよ、くっそ・・・・

あとお前、俺は1時間近くタグに奮闘してたの!

そんな一行でやる気のなさ主張すんなw

五日目マダー?の人

http://anond.hatelabo.jp/20071109171930

書いたよ!できたてほやほやの五日目だよ!

これ今毎日書いてるけどちょっと無理だな、

1日に数回書くつもりもあるにはあるんだが・・・・

あとネカマ日記もね、これも本読んでからだな・・・・

今日日記終わり。

夕飯はおでん。明日の朝もおでん

2007-11-08

60行テンプレートエンジンがパワーアップしてレイアウト機能に対応

前の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&amp;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, &amp;$_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) &amp;&amp; $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コード:

<?php
require_once('OtokomaeTemplate.php');
$TEMPLATE_DIR    = 'templates';
$LAYOUT_TEMPLATE = 'layout.php';
$context = array('list'=>array(10,'<A&amp;B>',NULL));
include_template('template.php', $context);
?>

レイアウトテンプレート(layout.php):

<?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>

テンプレート(template.php):

<?php // レイアウトテンプレート名をテンプレート中で指定する場合 ?>
<?php //$_context['_layout'] = 'mylayout.php'; ?>
<?php // レイアウトで使用する変数テンプレート中で指定する場合 ?>
<?php $_context['title'] = 'レイアウトのサンプル'; ?>
<table>
<?php foreach ($list as $i=>$item): ?>
  <tr bgcolor="#{$i % 2 ? '#FFCCCC' : '#CCCCFF'}">
    <td&gt;#{$i}</td&gt;
    <td&gt;%{$item}</td&gt;
  </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&gt;0</td&gt;
    <td&gt;10</td&gt;
  </tr>
  <tr bgcolor="#FFCCCC">
    <td&gt;1</td&gt;
    <td&gt;&lt;A&amp;B&gt;</td&gt;
  </tr>
  <tr bgcolor="#CCCCFF">
    <td&gt;2</td&gt;
    <td&gt;</td&gt;
  </tr>
</table>
<!-- /テンプレートの内容 -->
    </div>
  </body>
</html>

いくつか補足:

2007-11-01

圧倒的

キチガイ発生中ですな

最初は記法もばらしてたのにだんだん適当に...

メシ食ってこよっと

2007-10-31

[]

               
             
     
       
       
       
               
               

スマソ。記法知らんかった。席立つんで誰か別の人シロよろ。

つぎクロ。

|*□|*□|*□|*□|*□|*□|*□|*□|*□|*□|
|*□|  |  |  |  |  |  |  |  |*□|
|*□|  |  |*○|  |  |  |  |  |*□|
|*□|  |*●|*○|*○|*●|*●|  |  |*□|
|*□|  |  |*○|*○|*○|*○|  |  |*□|
|*□|  |  |*○|*●|*●|*○|  |  |*□|
|*□|  |  |*○|*●|*●|*○|  |  |*□|
|*□|  |  |  |  |  |  |  |  |*□|
|*□|  |  |  |  |  |  |  |  |*□|
|*□|*□|*□|*□|*□|*□|*□|*□|*□|*□|

2007-10-30

はてブコメント欄は「引用メモする」場所で「感想を書く」場所ではない俺から一言。

そんなことより「はてな」はダイアリーに記事を書く際に指定のコードをつけると、「同時にはてブとしてもpostされる」記法を作ってくれないか。

記法後の引用記法内のタグと100文字目までがコメント欄移植と言う仕様で。

両方やるのは手間で仕方ない。

あ、こう言うのアイディアに出してる人いないのかな。

http://anond.hatelabo.jp/20071030081253

感想ブログに書け」ってのは100%同意だよ。

2007-10-27

はじめてカテゴリ記法を知った、俺アホ過ぎる(T/O)

内容を入力してください。

ずこー

ログイン ユーザー登録
ようこそ ゲスト さん