はばたきたい

Posted: November 30th, 2007 | 6 Comments »

ピンバッジ

気がつけば、学生のまま 26 歳 の誕生日を迎えてしまいました。
そろそろ、いい加減社会にはばたきたいです。

関係ありませんが、最近iKnow というオンライン英語学習サービスにハマっています。
発音が聞けるのがいいですね。
コンテンツもたくさんあるしゲーム感覚でできるしで、けっこうハマります。
現実逃避したい方はどうぞ。


ブラ旨いスター

Posted: November 27th, 2007 | 10 Comments »

塔ノ沢

連休は箱根に行ってきました。
湖の方に行く交通機関のありえない混雑ぶりには面食らいましたが、総じてとても良かったです。

駒場祭にも顔を出しました。
部室に寝かせておいた(放置してあった)ウィスキーがまろやかになっていました。

ところで、さっき誤変換で気が付いたのですが、キリンのブラウマイスターって、「ブラ旨いスター」なんですね。
たしかにあれは美味しいですよね。

【追記】
携帯が、恐ろしく性能の悪いカメラ付きの懐中時計になってしまいました。
御用の方は、下記アドレスまでよろしくお願いします。
branchiopoda[at]gmail.com


Flex で碁盤掲示板を作成 1

Posted: November 22nd, 2007 | No Comments »

Flex の勉強がてら、碁盤掲示板を作成してみようかと思います。
完成してから公開ということにするとなかなかできないので、作成手順を公開しながら作っていくことにします。
作成手順を公開といっても、ぶっちゃけ何もよくわかっていないので試行錯誤します。
レベル低いです。
生暖かく見守ってやってください。

今回はとりあえず大まかな枠組みを MXML で作ってみました。
コードは一番下。

FlexGoban1.swf

サーバサイドは抜きにして、掲示板部分はだいたい作りました。

書き込み部分は Repeater で、更新の時には DataProvider を再定義しているのですが、そうすると一回全部が消えてから更新されるようになってしまいます。
本当は差分だけ更新したいのですが・・・。
何かいい方法はないですかね?

次回は UIComponent を拡張して、碁盤コンポーネントを作ってみたいと思います。
その後は、碁盤コンポーネントの埋め込み、サーバサイドとの通信、見た目のブラッシュアップなどをやる予定です。

コード(MXML)

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">

    <mx:Script source="MainCode.as"/>
	<mx:Script>
		<![CDATA[
		import flash.events.MouseEvent;
		import mx.controls.Alert;
		import mx.validators.*;

		public var idNow:uint = 4;

		private function submitPost(evt:MouseEvent):void {
			var errorMsgs:Array = new Array();

			//必須項目をチェック
			if (postModel.name == "") {
				errorMsgs.push("名前を入力してください。");
			}
			if (postModel.title == "") {
				errorMsgs.push("タイトルを入力してください。");
			}
			if (postModel.message == "") {
				errorMsgs.push("メッセージを入力してください。");
			}

			//url,email をチェック(適当です。)
			if (/^(https?)(:\\/\\/[-_.!~*\'()a-zA-Z0-9;\\/?:\\@&#038;=+\\$,%#]+)$/.test(postModel.url) == false &#038;& postModel.url != "") {
				errorMsgs.push("正しいURLではありません。");
			}
			if (/^[_a-z0-9-]+(¥.[_a-z0-9-]+)*@[a-z0-9-]+([¥.][a-z0-9-]+)+$/i.test(postModel.email) == false &#038;& postModel.email) {
				errorMsgs.push("正しいメールアドレスではありません。");
			}

			//エラーをチェック。エラーがなければ追加。
			if (errorMsgs.length > 0) {
				Alert.show(errorMsgs.join("\\n"));
			} else {
				myPosts.splice(0, 0, {id:idNow, name:postModel.name, email:postModel.email, url:postModel.url, title:postModel.title, message:postModel.message});
				myRep.dataProvider = myPosts;
				idNow ++;
			}

		}

		private function clearForm(evt:MouseEvent):void {
			nameInput.text = urlInput.text = emailInput.text = titleInput.text = messageTextArea.text = "";
		}

		private function removePost(evt:MouseEvent):void {
			var rptr:* = evt.target.parent.parent.parent;
			var pnl:* = evt.target.parent.parent;
			myPosts.splice(rptr.getChildIndex(pnl) - 1, 1);
			myRep.dataProvider = myPosts;
		}

		[Bindable]
		public var myPosts:Array = [{id:3, name:"佐藤", email:"", url:"", title:"腹減った", message:"ラーメン食おうぜ。"},
									{id:2, name:"鈴木", email:"", url:"", title:"ビール", message:"安西先生、ビールが・・・飲みたいです。"},
									{id:1, name:"山田", email:"", url:"http://7to3.net/journal/", title:"テスト", message:"テストです。"}];
		]]>
	</mx:Script>

	<!-- Data -->

	<mx:Model id="postModel">
		<post>
			<id />
			<name>{nameInput.text}</name>
			<url>{urlInput.text}</url>
			<email>{emailInput.text}</email>

			<message>{messageTextArea.text}</message>
			<kifu />
		</post>
	</mx:Model>

	<!-- Validator -->
	<mx:EmailValidator id="emailVal" source="{emailInput}" property="text" />

	<!-- view -->
	<mx:HBox width="90%">
		<mx:Panel>
			<mx:Text text="ここに碁盤を置きます。" width="300" height="300" />
		</mx:Panel>

		<mx:VBox horizontalAlign="center" width="100%">
			<mx:Panel width="100%">
				<mx:Form id="postForm" defaultButton="{submitButton}">
					<mx:FormHeading label="書き込み"/>
					<mx:FormItem label="名前" required="true">
						<mx:TextInput id="nameInput" width="100%" />
					</mx:FormItem>
					<mx:FormItem label="メールアドレス">
						<mx:TextInput id="emailInput"/>
					</mx:FormItem>
					<mx:FormItem label="URL">
						<mx:TextInput id="urlInput"/>
					</mx:FormItem>
					<mx:FormItem label="タイトル" required="true">
						<mx:TextInput id="titleInput"/>
					</mx:FormItem>
					<mx:FormItem label="メッセージ" required="true">
						<mx:TextArea id="messageTextArea"/>
					</mx:FormItem>
					<mx:FormItem direction="horizontal">
						<mx:Button id="submitButton" label="書き込み" click="submitPost(event);"/>
						<mx:Button id="clearButton" label="クリア" click="clearForm(event);" />
					</mx:FormItem>
				</mx:Form>
			</mx:Panel>

			<mx:Repeater id="myRep" dataProvider="{myPosts}">
				<mx:Panel id="postPanel" width="100%" paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10">
					<mx:HBox width="100%">
						<mx:Label id="nameLabel" text="#{myRep.currentItem.id}"/>
						<mx:Text id="titleText" text="{myRep.currentItem.title}"/>
						<mx:Text id="nameText" text="{myRep.currentItem.name}"/>
						<mx:Text id="emailText" text="{myRep.currentItem.email}"/>
						<mx:Text id="urlText" text="{myRep.currentItem.url}"/>
						<mx:Button id="removeButton" label="remove" click="removePost(event);" />
					</mx:HBox>
					<mx:Text id="messageText" text="{myRep.currentItem.message}" />
				</mx:Panel>
			</mx:Repeater>
		</mx:VBox>
	</mx:HBox>
</mx:Application>

韓国の友人と

Posted: November 20th, 2007 | 4 Comments »

hand on go bowl

韓国の友人ジュニョンが学会で日本に来るというので、日曜日久しぶりに会ってきました。
彼が囲碁部の対抗戦で日本へ来たのが 2003 年だったはずなので、実に四年ぶり。

まずは囲碁部の同期といっしょに、朝新宿のホテルに迎えに行った後、西口の囲碁サロンで碁を打ちました。

そして、昼に日本に着いたばかりの、ジュニョンの研究室の後輩ウォンシクと合流。
回転寿司を食べました。
よく考えずに一番近くの店に入ったら一皿100円じゃなくて、シマッタ!と思いましたが、旨かったのでまあ良しとします。
皿が十種類以上ある上、一皿 1000 円以上の地雷皿もあるので気が抜けませんでしたが・・・。

で、本屋に少し寄った後、二人に PASMO を買ってもらって地下鉄で浅草へ。
浅草寺でおみくじを引いたり、お土産屋を冷やかしたり。
やはり浅草は鉄板ですね。
おみくじ引いたら凶だったので、境内にくくりつけてきました。

Doll Cake Shop

そうこうしてるうちに急に冷え込んできて、昼間の暖かさが嘘のよう。
昼を食べたのがすこし遅かったので晩飯には少し早い、というので渋めの焼き鳥屋へ。
日本酒をまずは熱燗、そしてお冷も。
飲みだしてからはよく覚えていないのですが、彼らは一ノ蔵が気に入っていたようです。

店を変え、今度は和民でビールと焼酎。
彼らは、馬を食べること(馬刺し)や日本の焼酎の豊富さに驚いてました。
韓国では焼酎の地酒的なものはあまりなく(広まっていない?)、種類が少ないのだそうです。
また、ストレートで飲むため従来の焼酎は人気がなくなってきており、アルコール度数が下がってきているのだとか。
割って飲めばいいと思うのですが・・・。

Sensoji Temple

その後さらに新宿へ移動し、先輩達と合流。
呼んだら、夜遅いにもかかわらず来てくれたのです。
そして思い出横丁の焼き鳥屋で瓶ビール。
韓国では、前の席の人に手酌をさせてしまうと三年間彼女ができない、と言われているのだとか。
そうなっては大変なので、どんどん注いでどんどん飲みました。

気がつけば終電の時間を越えていたので、カラオケに。
最初は知っている韓国語の歌を歌うも、そんなものはすぐに尽き。
英語の歌を歌ったり、BOA の歌の韓国語版や日本の歌の韓国でのカバーを無理やり歌ったり。
普通に日本の歌も歌いましたが・・・。

四時すぎにカラオケ屋を追い出され、始電まで時間があるので韓国の二人をそれぞれのホテルに送りました。
寒さが異常。
真冬用のコートを着てきたのですが、それでもかなりの寒さ。
ガチで凍死もありえます。
そこへいくと地下街、特に地下鉄の駅の暖かさは異常。
昔の人が竪穴式住居に住んでいた理由がよくわかりました。

そんなこんなで朝家に帰るとヘトヘトでしたが、どうやら喜んでもらえたようで良かったです。
それに、朝から晩まで遊び倒したのも久しぶりでした。
完全燃焼って、いいものですね。

それにしても、韓国の人はけっこう日本に来るのに、僕は韓国に 5 年前に一度行ったきり。
そろそろまた行きたいですね。
誰か一緒に行きましょう。


キムチの味

Posted: November 17th, 2007 | 3 Comments »

坂

昨日は新宿の韓国豚焼肉料理屋で学科の同期飲み。
一言で言うと、みんな社会人でした。
10 人中 2 人が、おれ結婚するよ。あ、私もー。とサラっと。
もうそういう年なんですねえ。
その上、学割にしてもらって助かりました。
どうもありがとうございます!

その後、吉祥寺はハーモニカ横丁の飲み屋に。
ちょうど食べ物が終わってしまったところだったのですが、キムチを出してくれました。
韓国料理屋でキムチを食べた後だったのですが、そのキムチが非常にウマイ。
日本の漬物的というか、すっきりとして旨みがある感じ。
やはりこういう方が日本人には合う気がします。
しかも「それは普段出してるものと違うから、サービスです」と言うのです。
普段のキムチはどんだけ旨いんでしょうか。
お湯割りの加減もちょうどいい感じだし、食べ物もメニュー表見た感じではリーズナブルで、韓国から来た看板娘も面白いしで、いいお店でしたよ。
名前は思い出せないのですが、「コパンダ」より西側の通りの駅側のカウンターと透明ビニールのお店です。

関係ありませんが、以前どこかで「子供にしか聞こえない音がある」というのを読みました。
個人差はありますが、子供のころは 20Hz から 20,000Hz くらいまで聞こえるのが、年をとるとともにどんどん聞こえる領域が狭まっていくそうです。
で、今日は実際に試すやつを発見。
「大人には聞こえない音/聴力検査FLASH (Mosquito Sound)」

僕は 14,000Hz まででした。
それまでは聞こえるのに、15,000Hz からプツッと聞こえなくなる。
これは不思議ですねー。


サンマの骨

Posted: November 16th, 2007 | 4 Comments »

外付けHDD

外付けハードディスクというものを初めて買いました。
研究に使う(かもしれない)大量の動画データを収納するため。
ノートパソコンも写真のせいで一杯になってきたので、一石二鳥です。

買ってから分かったのですが、FAT フォーマットだと 4GB までのファイルしか保存できないんですね。
しかし、別のフォーマットだと Windows と Mac 併用できないという。
Mac から 100GB 近いファイルを移したいのですが、なかなか大変なようです。
分割して移せばいいのかな。
めんどくせー。
コンピュータって変なことに時間をとられて困ります。

夕飯に食べたサンマの骨がのどに刺さってとれません。
今日は遠藤周作の「海と毒薬」(戦時中の捕虜生体解剖の話)を読んだのですが、昨日までといい、暗い系の本ばかり読んでいるので運気が落ちてきたのでしょうか。
何か心持ちが明るくなるような本、ないですかねえ?


越冬

Posted: November 15th, 2007 | 2 Comments »

絨毯

ここのところ居酒屋破船と、貧困系の小説を読んでいます。
どっちも非常に面白いのですが、今の僕の気分というか生活と実によく馴染みます。
馴染む、馴染むぞーーっ!

とにかく、節約は大事だなぁと思う今日この頃です。
蓄えがないと冬は越せませんからね。

そんな訳で最近は、研究室に行くと晩飯を外で食うことになるので、大学で授業に出た後は直帰しています。
こんなんで論文出せるのでしょうか・・・。


建築史と今週の日曜日あたり

Posted: November 14th, 2007 | No Comments »

イチョウ

今日は駒場で授業。
藤森先生の建築史でした。

前回は昔の建築工法、製材や芝棟などの話がメインでしたが、今回は宗教系。
精霊信仰から太陽神信仰に至る流れの中でどう建築が成立してきたかを、竪穴式住居から伊勢神宮、トルコのアタルヒュック遺跡まで、いろんな例とともに見ていく講義でした。
話が縦横無尽で実に面白かったです。

ようく考えると、大学を出るとこんなにいろいろ知ってる人の話を聞くのも少なくなる訳ですよね。
学生生活が長いので、そういうことに鈍感でしたが・・・。
思い返してみれば、僕は大学でアカデミックなことをほとんど何も学んでいないわけで。
今頃になると「もうちょっと勉強すればよかったなー」なんて思ったりもしますけど、それも後の祭。
留年はもうできないし、例えできたとしてもきっとダラダラするに違いないので、ビールでも飲みながら修了できるようがんばります。

で、全然関係ないのですが、囲碁部関係の人に告知です。
けっこういろんな人が見ていることがわかったので・・・。

さっきチャットで聞いたのですが、ソウル大のパクジュニョン(しょうたに似てる)が今週土曜から来週木曜まで日本に来るそうです。
駒場である学会に来るのだけど平日だけらしいので、日曜あたり襲撃しましょう!

適当に声をかけるつもりですが、ヤル気満々の人は参加表明してくれるとありがたいです。
よろしく!


クイズの答え

Posted: November 12th, 2007 | 2 Comments »

クリスマスツリー

地元の駅にクリスマスツリーが生えてきました。
まだ11月なのに、気が早いですねー。

今日は、「三限の授業に遅刻するー」と思ってふと手帳を見ると『三限休講』の文字。
急に時間が空いたので、先日のクイズの答えでも。
まだ問題を見てない人は、ちょっと考えてから読んでくださいね。

結論から言うと、99 人確実に助かります。
事前の相談が勝負です。

まずは、三色に 0、1、2 というように数字を割り振っておきます。
また、説明のために死刑囚たちに一番前から番号をふって、一番前の人を P1 、一番後ろを P100 とします。

P100(最初に色を聞かれる人)は、自分より前の 99 人の帽子の色の数字を全部足して、3 で割った余りの色を答えます。
すると、アラ不思議。
あとの 99 人は自分の色がわかるのです。

まず P99 は、P100 が言った色の数字と、P1 から P98 の色(見える)の数字の合計を 3 で割った余りから、自分の色が求められます。
例えば、P100 が 1 の色を答え、P1 から P98 の色の数字の合計が 3 で割って余り 0 であった場合、P99 の帽子は 1 の色です。

これを一般化すると、Pn は、

s: P1 から P99 の合計を 3 で割った数字(P100 の言う色)
A: P1 から Pn-1 の合計(自分より前の人たちは見ることができる)
B: Pn+1 から P99 の合計(自分の前の全ての人の答えを覚えておく)

の全てがわかり、自分の色の数字を c とすると、

s = (A + c + B) % 3 (ただし、m % n は m を n で割った余り)

なので、自分の帽子の色が計算できる、ということです。

上記のようなことを事前に相談しておき、各自が間違いなく計算できれば、最低でも 99 人助かる、というのが答えです。
三分の一の確立で 100 人全員助かります。
運が悪かった場合は、P100 の慰霊碑が建つことでしょうね。

ちょっと文章で書くとわかりにくいですが、問題に頭を悩ませた人はすぐわかるんじゃないでしょうか。


ほろ酔いです

Posted: November 10th, 2007 | No Comments »

サボテン?

研究室で発泡酒を飲みながら、後輩を待っています。

今日は昼までストーンオーシャンを読んだ後、大学でシンポジウムに行ってきました。
土木デザイン賞をとった青森県の木野部海岸の話。
東北弁はいいですね、やはり。
みんな方言を話せばいいんじゃないかと思うんですよ。

昨日は後輩の家で鍋。
鍋もいいですね、やはり。
もし江戸時代に生まれていたら、鍋奉行になりたかったです。