2009-12-26

昭和ネオン 高村看板ミュージアム

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
http://www.showaneon.co.jp/museumu.html

昭和ネオンという会社がやっている古い看板の博物館なわけです。
レトロなものに興味があるのでキニナルのです。

味覚狩り

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
小さい子供がいても楽しめる味覚狩りってないかなぁと思っていくつか探しました。
たまご拾い
芋ほり
いちご狩り
栗拾い
がいいかなぁと思ってみました。
子供が小さいと高いところにある木になっているものはダメだろうと思ってます。
その点、いちご狩りは採ったってすぐ食べられるのでとてもよいです。
栗拾いも悪くはないですが、できるだけ朝早めにいかないと採り尽くされている感じです。
そのうち、ぶどう狩りとかミカン狩りとかナシ狩りにも行きたいと思うのですけどね。

2009-12-20

とんび

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク


とんびとは、大正ロマンの雰囲気がただようちょっと小粋なコートです。
別名、インパネスコートともいいます。
最近、ちょっと検索するだけでお手頃価格のとんびが増えてきました。
私は数年前とても欲しくなったのですが、検索で見つかるものは10万超えるものばかり、流石にそんなに払えないなぁと思ってオークションで手に入れました。
とんびは、着物屋さんとかでよく売っていて和服にあわせるイメージが強いのかもしれませんが洋装にも結構あいます。あんまり着ている人がいなくて形も変わっているのでちょっと普段使いは勇気がいりますけどね。
ただ私が使ってみて困った点は、カバンです。
カジュアルなカバンはすごく似合わない感じがするのです。
そして形の都合上、リュックタイプやショルダータイプのカバンは使えません。手持ちタイプ以外は使えないのが場合によっては、ちょっと困るのです。
ちょっと変わったコートが欲しい人にはオススメです!

納豆こんぶ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク


一度たべるとはまるらしいとのことでキニナルのです。

クコ酒

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
梅酒と同じようにホワイトリカーに漬け込むだけ。
好みではちみつを入れてもよいらしい。
お酒以外にも、酢やオイルに漬け込むのもよいらしい。

布海苔(ふのり)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク



カットわかめ感覚で使うのがよいらしいです。
こういうものがあるのを知りませんでしたのでキニナルのです。
まふのり、ふくろのり
とかいう言い方もあるようです。

ドライフルーツ梅酒

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
プチプチ穴をあけた梅と、プルーン、干しあんずを入れ、ホワイトリカーを入れるだけ。

とろろこんぶ粉

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
オーブントースターを熱くしたことろに、トレーに広げたとろろこんぶを入れてスイッチを切り、五分待つ。
余熱でパリパリになったとろろこんぶを手で粉々にする。

じゃこと湯葉の煎り煮

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
材料
湯葉・・・たっぷり
水・・・100cc
ちりめんじゃこ・・・適当
醤油・・・適当
七味・・・適当
山椒粉・・・多目

作り方
湯葉、水、ちりめんじゃこを鍋に入れて火にかけ、ゆばがしなっとしたら強火で水分を飛ばす。
味を見て、醤油、七味、山椒粉を入れる。

煎り豆

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
大豆を湯に一時間をほどつけた後に、水気を切ってあとはフライパンでひたすら煎るだけ。
一粒食べてカリッとしたらできあがり。

切干大根入り卵焼き

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
もどした切干大根を卵焼きに入れるとおいしいらしい。

フフフラン

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
材料


牛乳

とろけるチーズ

作り方
卵、牛乳、塩を混ぜ合わせたところに「ふ」をいれ、器に分けて入れて上からチーズをかけ、オーブントースターでこげ色がつくまで焼く。

汁を捨てない大根おろし

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
大根おろしを作る時に、粉にした「ふ」を入れるとおろし汁を吸ってくれるので、汁気を捨てることなくおいしい大根おろしができるらしい。

しそひじき

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
材料
ひじき

みりん
ゆかり
ゴマ
分量は適当で

作り方
フライパンにひじきと水を入れて火にかけて、沸騰したら火を止めてそのまま2、3分置いてもどす。
フライパンにふたをしてふたを押さえつけて水を切る。
水を切ったひじきに酒、みりん、ゆかりを入れて水気がなくなるまで煎り煮する。
最後にゴマをいれてできあがり。

わかめスープに一味追加

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
仕上げに梅干を一つ入れるかお酢を2、3滴落とすとおいしいらしい。

ラー油を楽しむ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
最近、ラー油がいろんな食材と会うということに気づきました。
最近、ラー油の使い方として
・ソバやそうめんの麺つゆに入れる
・納豆に入れる
・たまごかけゴハンに入れる
というのがお気に入りです。

セロリの浅漬け

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
材料
セロリ:適量
浅漬けの素:適量

作り方
浅漬けの素を使って切ったセロリを漬けるだけ

セロリンゴ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
材料
リンゴ:適量
セロリ:適量
フレンチドレッシング:適量

作り方
リンゴを小さめに切って、それを生のセロリを切ったものと混ぜる。
そして、フレンチドレッシングをかける。

いかくんセロリ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
材料
いかのくんせい:適量
セロリ:適量

作り方
いかのくんせいと生のセロリを適当に切って混ぜるだけ!

チーズせんべい

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
確かR25で紹介されてたものです。
簡単おいしいです。

材料
とろけるチーズ
小麦粉

作り方
とろけるチーズに小麦粉をまぶして、フライパンに丸くおき弱火で両面焼く

チーズと小麦粉を混ぜるときに、黒胡椒や七味、じゃこ、バジルとかを一緒に混ぜてもよいかもしれませんね。

揚げない鶏の唐揚げ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
All Aboutで紹介されれていました。

材料
2人前
鶏むね肉(又はもも肉) 1枚
おろしニンニク(又はおろし生姜) 少々(1/3~1/2片分
しょう油 小さじ2
ごま油 小さじ1/2
酒 小さじ1
塩 2本指で1つまみ
こしょう 少々
砂糖 小さじ1/3
小麦粉 大さじ2
片栗粉 大さじ2

作り方
1:鶏肉を小さめの一口大に切り、ニンニク、しょう油、ごま油、塩、コショウ、酒、砂糖をもみこむ。
2:小麦粉と片栗粉をふり入れて混ぜる。
3:天板にオーブンシートを敷き、鶏肉を並べ、オーブントースターに入れて焼く。
4:8~9分焼いたら裏返して、おいしそうな焼き色がつくまで焼く。(合計13分程度)
5:キッチンペーパーの上で余分な油分を切って、更にヘルシーに。

みたらしじゃがいも

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
テレビ朝日のウチゴハンという番組(2007/5/13)で紹介されていました。

材料
4人分
新じゃが 12個
   
(タレ)  
しょうゆ 60ml
みりん 大さじ2
砂糖 60g
水 200ml
片栗粉 18g
ハチミツ 大さじ1

以下、お好みで   
バター 適量
一味 適量

作り方
(1)新じゃがを鍋でゆで、火が通ったら皮をむく
(2)別の鍋に水で溶いた片栗粉・砂糖・しょうゆ・みりん・ハチミツを入れ、とろみがでるまでよく混ぜながら火にかける
(3)粘り気と透明感が出てきたらみたらしのタレ完成
(4)水につけておいた串に(1)の新じゃがを刺す
(5)(4)を焼き網で焼き、焼き目を付け皿に盛る
(6)(5)に(3)のタレをかける

バター、一味などを添えるとよりいっそうおいしくなるそうです。

じゃがいも餅

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
モチモチしておいしいですよ。
レシピは、All Aboutを参考にしました。

材料
1人前
・じゃがいも:中1個
・片栗粉:大さじ1
・小麦粉:大さじ2~2.5

あん
・2倍濃縮の麺つゆ:大さじ2
・水:大さじ3
・砂糖:ひとつまみ
・水溶き片栗粉:少々

作り方
1.じゃがいもをすりおろし、片栗粉と小麦粉を加えて混ぜあわせ、ぽってりした生地を作る。
2.フランパンに油を薄くしき、ポテト生地をスプーンですくって丸く流し入れ、蓋をして焼き、裏返して焼いて皿に取る。
3.空いたフライパンに麺つゆ、水、砂糖を入れて煮立て、水溶き片栗粉でとろみをつける。
4. あんをかけ、好みで青海苔粉やおろし生姜をのせる。

うどん餃子

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
All Aboutの料理のABCページで紹介されていたレシピです。
外側がカリカリ、中がもちもちしこしこ。大根餅や韮餅にも近い味わいだそうです。

材料
【4人前】
ゆでうどん 2玉(420g)
豚挽き肉 200g
白菜みじん切り 2カップ強
長ねぎみじん切り 1/2カップ強
スライス乾し椎茸 20枚ぐらい
おろしニンニク(又は生姜) 小さじ1
卵 1コ
白ごま 小さじ2
塩 小さじ1/4~1/3
コショウ 少々
しょう油 大さじ1
砂糖 大さじ1/2
ごま油 大さじ1
片栗粉 大さじ3
サラダ油 適宜

つけだれ 酢、しょう油、ラー油、大根おろし

作り方
1: 白菜、長ねぎ、椎茸を粗くみじん切りにする。うどんは3~4cmに切る。 (ニラを加えても良い。)

2: 刻んだ野菜を布巾に包んで水気をしぼる。

3: 野菜、挽き肉、ゴマ、ニンニク、しょう油、卵、塩、コショウ、砂糖、ごま油を手でしっかり混ぜ、片栗粉を加えて混ぜる。 (残った餃子の具を利用する場合は、具にうどんと、片栗粉と卵少々を足して作る。)

4: フライパンにサラダ油を熱し、(3)を丸く平べったく落として焼く。

5: 裏返して、両面をキツネ色にこんがり焼く。酢醤油にラー油を落としたタレに、お好みで大根おろしを添える。 (途中蓋をして蒸し焼きにし、七分通り火を通して裏返す。返したら蓋をせず、カリッと焼く。) 

ブリの緑茶燻製

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
日本テレビの「嗚呼!花の料理人」という番組を見ていた時に紹介していた料理です。
ブリでなくても、切り身で食べられる魚なら何でもOKなようです。

材料
ブリ 適量
お茶の葉200g

作り方
1) ブリの切り身に塩・コショウで下味を付ける
2) 市販のお茶の葉200gをフライパンに入れ、5~6分(煙がたつまで)強火にかける
 ※紅茶、ジャスミン茶、ウーロン茶でも代用OKだそうです。
3) 魚の水分をよく拭き取る
 ここでしっかりふき取りましょう。
4) フライパンに網をのせ、切り身をのせる
5) ボウルでフタをして、弱火で5分いぶして、完成。

燻製のための道具がなくても家にあるものでなんとか燻製ができそうですよね。
うちでは、網はグリルの網を使ってみようと思っています。

ブリ(ハマチ)大根 スープ仕立て

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
日本テレビの「嗚呼!花の料理人」という番組を見ていた時に紹介していた料理です。
コンビニの大根おでんを使うのが、う~~むと思いました。

材料
ぶり or はまち
コンビニの大根おでん
おでんダシ

作り方
1)ハマチに熱湯をかけ、すぐに冷水へ入れる
2)うろこは丁寧に取り除く
ここまでをきちんとやるのが美味しくするためのポイントのようです。
3)コンビニエンスストアのおでんの大根を水に入れ、味を抜く
4)顆粒のおでんダシを定量の1.5倍のお湯で溶き、日本酒を少々加える
5)(4)にハマチと大根を入れ、レンジに4分かける
6)仕上げにネギと柚子をトッピングして、完成

半干し野菜

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
食農教育 No.40 2005年4月増刊号で紹介されていたようです。
野菜を半日程度、天日で干して食べると甘味やうまみが増すようですよ。

材料
いろんな野菜

作り方
ほどよく切って干す!
それだけ。
詳細は、食農教育 No.40 2005年4月増刊号を見てください。

ねぎのふわふわ焼き

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
食感がよさそうです。
2006.12.10にテレビ朝日の「いまどき!ごはん」で紹介されていました。

材料
万能ねぎ:1把
山芋:1/2本
小麦粉:適量
水:適量
塩:少量
ごま油:適量

A
 にんにく(すりおろし):小1
 白いりゴマ:小1
 しょう油:大4
 ねぎ(小口切り):大2
 ごま油:小2

作り方
1. 万能ねぎはフライパンの大きさに合わせ、2~3等分にする。
2. 生地作り。山芋をすりおろし、水で溶いた小麦粉、しょう油、塩をよく混ぜ合わせる。
3. フライパンにごま油を入れて熱し、(2)に生地の半量を流し入れ、ねぎを並べるようにのせる。
4. ふちが固まったら、ひっくり返して焼く。
5. Aのタレをつけて、お召し上がりください。

白菜の塩昆布和えサラダ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
塩昆布っておいしいですよね。
2006.11.26にテレビ朝日の「いまどき!ごはん」で紹介されていました。

材料
白菜:1/3本
塩昆布:20g
A
 しょう油:大1
 砂糖:小1
 酢:1/3カップ
 塩:少々

作り方
1. 白菜はちぎって、冷水にさらす。
2. 水気をよく切り、塩昆布と和える。
3. Aをかけて、出来上がり。

里芋の梅肉サラダ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
里芋でサラダって珍しいです
2006.11.19にテレビ朝日の「いまどき!ごはん」で紹介されていました。

材料
里芋:6個
梅肉:大2
だし汁 :少々
しょう油:少々
長ねぎ(粗みじん):1本
削り節 :1パック
万能ねぎ:適量
もみのり:適量

作り方
1. 里芋はよく洗って皮をむいて、15分中火でゆでる。
2. 里芋に竹串がスッと通るくらいやわらかくなったら、半量( 3個)をすりつぶす。
3. 梅肉、だし汁、しょう油、長ねぎ、削り節、万能ねぎを加えて混ぜる。
4. 残りの里芋( 3個)を丸ごと入れて軽く混ぜ、もみのりちらして完成。(里芋を粗くつぶして食感にアクセントをつける。)

ほったらかし煮玉子

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ゆで卵を作ったら、後は冷蔵庫に入れてほったらかし

材料

麺つゆ
水(麺つゆが3倍濃縮の時は、麺つゆと同量)

作り方
1:清潔な蓋付き容器(コンテナ、タッパー、ビン等)に、麺つゆと水を入れる。
お好みの堅さのゆでたまごを作って、調味液に漬けて冷蔵庫に入れる。
2:半日後~一日後ぐらいが食べ頃。

調味液は、2~3回なら繰り返して使えるらしい。
又は、煮物などの、火を通す料理に使いまわして無駄にしないのがよいです。

このレシピは、All Aboutの料理のABCガイドサイトに乗っていました。

ネギ油冷奴

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ネギの香りがいいです。

材料
【4人前】
豆腐 一丁
長ネギ 1本
生姜 1かけ
サラダ油 大さじ4
しょう油 適宜
大葉 (省略可) 4~8枚
※サラダ油は、ゴマ油とかにしてもおいしいかも。

作り方
1:長ネギは薄く小口切り。生姜は極細にせん切り。2つを混ぜあわせる。
2:器に大葉を敷き、四等分に切った豆腐をのせ、(1.)を山盛りにのせる。
3:サラダ油を小鍋に取り、煙が出るくらいに熱し、ネギの上からジュジュッとかける。 
4:ネギがほんのり焦げて香ばしい仕上がり!
しょう油を回しかけて食す。

このレシピは、All Aboutで紹介されていました。

魚の付け合せ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
魚に付け合せるものとして大根おろしの変わりにわさび漬けもかなりありだった。
魚の油とあの味が結構あう。

ヨーグルトミルクプリン

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
どっかで検索しておいしそうだったのでメモ

材料
材料は、カップ2つ分ぐらいです。
粉ゼラチン 5g
プレーンヨーグルト 100ml(1/2カップ)
牛乳 200ml(1カップ)
砂糖 大サジ2

作り方
粉ゼラチンは、大さじ2の水の中に振り入れ15分ほどふやかしておきます 砂糖と牛乳を暖め(沸騰したものをさまして)ゼラチンをふやかしたところに入れ、良く溶かします。
ヨーグルトにぬるくなった牛乳を混ぜ合わせていく。
カップに入れて冷やして出来上がり。

カラメルミルクプリン

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
どっかでみたのだけど、どこで見たかは忘れた。結構おいしかった。

材料
材料は、カップ2つ分ぐらいです。
砂糖 大サジ4
牛乳 200ml
牛乳 50ml
粉ゼラチン 5g

作り方
粉ゼラチンは、大さじ2の水の中に振り入れ15分ほどふやかしておきます 砂糖を鍋に入れてとかして色が変わるまで熱する。色が変わったら水を入れてとけるまで熱する。
牛乳を入れてきちんと混ぜる。そして暖める。
ゼラチンをふやかしたところに、上記の暖かいままの牛乳を入れてよくとかす。
カップに入れて冷やして出来上がり。
どっかで見たレシピには、練乳を入れるとも書いてあった。入れたらきっとおいしいと思う。

牡蠣のネギショウガ蒸し

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
材料
牡蠣(生食用)
長ネギ
ショウガ

作り方
皿に牡蠣を置き、その上に千切りした長ネギとショウガをおいて、蒸し器に入れて3分でできあがり。
なんかかけて食べる

若鶏利休煮

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
鶏肉がビックリするほど柔らか!

材料
【4人分】
鶏もも肉〈鶏肉のつけ地〉……2枚
ヤマサしょうゆ……50ml
ヤマサうすくちしょうゆ……75ml
酒……50ml
みりん……30ml
(※うすくちしょうゆがない場合は、ヤマサしょうゆのみ80mlに。酒、みりんは同じ量でOK) 和がらし、粒マスタード、柚子こしょう、豆板醤など……適量

作り方
1:フッ素樹脂加工のフライパン(なければ普通のフライパンにサラダ油少々をひいて)を火にかけ、鶏肉を皮目から入れて強火で焼き、出てきた脂を捨てる。裏返して身側も強火で焼き、きれいな焼き色をつける。途中でじわじわと出てきた脂も捨てる。
 「さっぱりと仕上げるため、鶏肉から出た脂をできる限り捨てること。脂をフライパンごとあけるかスプーンですくい取ったら、さらにペーパータオルでふき取ると完璧!」
2:耐熱性の容器にしょうゆ、うすくちしょうゆ、酒、みりんを合わせ、1)の鶏肉を30分ぐらい浸して肉の繊維に味をしみ込ませる。
 「よく味がしみるように、肉が熱いうちに浸すこと。ヤマサの有機丸大豆の吟選しょうゆのような色のきれいなしょうゆを使うと、肉の色もきれいに仕上がります」
3:蒸し器に水を張って火にかけ、十分に蒸気が上がったら2)を容器ごと入れ、皮目を上にして約7分蒸す。肉を裏返し、さらに5分ほど強火で蒸す。
 「肉を汁に浸して蒸すと本当に柔らかくなり、普通に煮たときとは口当たりが違います。そして火は強火。これも肉をふっくらと仕上げるコツ」
4:蒸し上がったら鶏肉を取り出し、汁は万能こし器などでこし、そこに再び鶏肉を戻して15分ぐらい漬ける。
5:味がなじんだら食べやすい大きさに切り分け、器に盛って和がらしなどを添える。

なめめの酢じめ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
あまりにおいしいので、皿までなめてしまう。そこからついた料理名だそうです。

材料
( 4人分 )
マイワシ 500g
みそ 大さじ1
ねぎ 1/2本
しょうが 1かけ
青じそ 5枚

作り方
(1) イワシは手開きにして原骨をすきとり、皮をむいて細切りにし、包丁で細かくたたく。
(2) ねぎ、しょうが、青じそをみじん切りにし、みそと混ぜ合わせて(1)にたたき合わせる。
(3) 深めの皿に(2)をのせて平らにのばし、表面から届くまでの筋目を入れる。
(4) 全体がかぶる程度に酢をかけて冷蔵庫に入れ、冷やしておく。
特記事項 酢じめにしないで、そのままいただいてもよい。イワシはカタクチイワシを利用するのもよい。

いわしの酢じめ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
材料
分量(2人分)
●いわし 4尾
●しょうが(せん切り) 5g
●青じそ 4枚
●(A)
 ・酢 大さじ2
 ・キッコーマンうすくちしょうゆ 小さじ1/2
 ・マンジョウ本みりん 大さじ1/2

作り方
1. いわしは3枚におろして腹骨をすき取り、塩(分量外)をたっぷりふって30分ほどおく。
2. (1)の塩を洗い落として水気をふき取り、(A)に浸けて10分ほどおく。
3. (2)をそぎ切りにし、青じそを敷いた皿に盛ってしょうがをあしらう。

酢じめについて
臭み抜き、保存力もアップ
健康にいいといわれる青魚ですが、臭みが苦手という人も多いでしょう。そんな人にお勧めなのが酢じめです。酢にはにおい消しや殺菌効果がありますが、ひと工夫すれば、その効果はさらに高められます。
まず酢を使う前に魚の表面に塩を振ります。浸透圧で余分な水分を取り除くためです。塩の量は身の重さの3~5%。20~60分置くと、水分と一緒に臭みの成分が外に出て、食べやすくなるのです。塩を振らずに酢につけると酢の水分を吸収してふやけ、口当りが悪く、身崩れも起こしやすくなります。
酢に浸す時間は魚の大きさによって、15~60分です。時間を長くすると中まで酢が浸透し、身がしまってきます。これは酸の影響で魚のタンパク質が固まるから。殺菌力もあるので、保存性も増します。逆に時間を短くすると外側は酢でしっかりしまり、内側は軟らかく鮮魚の風味も残りますが、保存期間は短いのです。

牛スジと大根のやわらか煮

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
材料
牛スジ:300g
大根(中):1本
調味料
 A 濃口しょうゆ:150~200CC
   砂糖:50g
   みりん:100CC
 酒:200CC(スジをゆでる時使用)

作り方
1.牛スジをたっぷりに熱湯で1~2分ゆでる。
 中まで火が通ったら、ゆで汁を全部捨て、スジを軽く洗う。
2.鍋にたっぷりの湯を用意し(1.5リットル位)、酒200CCを加え、その中へ牛スジを入れ沸騰するまで強火で、その後は弱火でアクを取りながら約1時間ゆでる。(固めの好きな人は30分位でもよい。)
3.<2>の鍋を常温になるまで冷まし、冷蔵庫へ入れる。(半日位入れておく。)
 充分冷えたらラード状の物が浮き上がるので、それをすくい取り再び火にかける。
4.大根は皮をむいて乱切りにし、水でさらしてアク抜きをする。
 (<3>の鍋が沸き上がるまでの間でよい。)
5.<3>の鍋が沸き上がったら、大根を加え、中火で大根が柔らかくなるまでゆでる。
 (25~30分位)
6.大根に串が通れば<A>を加え、20分位中火で煮込む。
 (もっと柔らかくしたい時は、砂糖だけで10分煮て、しょうゆを後で入れるとよい。)
7.器に盛りつけ、練りからしを添えて出す。

干し大根のスッパ和え

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
材料
切り干し大根1/3袋
長ねぎ1/4本
梅干し(大きいもの)2個
市販の「味ぽん」の大さじ1
ニンニクすりおろし小さじ1(お酒の肴にする場合)

作り方
切り干し大根を水で軽く戻し、キッチンペーパーなどでよく水気を切っておく。
長ねぎは千切りにし、梅干しはみをほぐして包丁で叩く。
全ての材料を和え、20分くらい冷蔵庫で寝かせましょう。
味がよく染みて、簡単な「漬け物」風に仕上がります。
ごはんに乗せてこぶ茶をふりかけ、お湯をかけ、即席お茶漬けにしても美味しい。
ニンニクを入れるとお酒の肴になる。

ひじき入りお手軽ちらし

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
材料
市販の「五目ちらし」の素1.5合分
ごはんお茶碗に軽く2杯分(1.5合)
生ひじき1/2パック
冷凍枝豆10房分

作り方
生ひじきは軽く湯通しするかレンジでチンし、キッチンペーパーなどで水気を切っておく。
冷凍枝豆を解凍し中身を出しておきます。
ごはんに「五目ちらし」「生ひじき」「枝豆」の順に軽く混ぜ合わせるだけ。

豆乳(湯葉?)フォンデュ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
作り方
くみ上げ湯葉ができる状態のところに
オイルフォンデュやチーズフォンデュと同じような食材を湯葉をまぶして食べる。
具体的な作り方は、ちょっと不明

鳥はむ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
材料
鳥胸肉 2~3枚
 ※皮は好みで取っても取らなくても良い
塩 一枚につき小さじ山盛り一杯かそれよりやや多め
 ※出来ればミネラル分の入った美味しい塩がgood
胡椒 一枚に付小さじ一杯程度
 ※粗引きがまぶしやすいかも
蜂蜜 ティースプーン一杯分程度
 ※なければ砂糖に変更も可
ジップロック 1枚
 ※なければラップやビニール袋に変更可

作り方
とり胸肉一枚分につきティースプーン一杯分程度のハチミツ(または砂糖)を まんべんなく塗る。
とり肉一枚につき小さじ山盛り一杯か、それよりやや多めの塩を全体に じゃりじゃりする程度すりこむ。
※後で塩抜きをしますのでしっかりまぶしましょう。多すぎかな?くらいでかまいません。
コショウも一枚に付小さじ一杯程度やはり全体にまんべんなくふります。
※これもやや多いくらいがしっかりスパイスの味がつき出来あがりに差が出ます。
(ここで好みのハーブ類を追加も可能)

それを密封できる袋に入れ空気を抜き冷蔵庫に二日寝かせます。
※空気を抜く方法はジップロックなどのファスナー式のビニール袋の場合 ある程度手で空気を抜いたらファスナーを1cm程度残して閉め、残りのところからストローを刺して口で吸い中の空気を抜くとかなり真空パックになります。塩をまぶしてる時にかなり水分が出た場合はこの寝かせてる時点でそれほど水が出ませんが寝かせてる間にたくさん水分が出た場合は水分を捨ててかまいません。
↓↓↓↓↓↓↓↓↓冷蔵庫で2日間寝かせる↓↓↓↓↓↓↓↓

二日間しっかりと塩漬けした肉を塩抜きします。ボウルかなにかに水を張り、軽く水洗いしたとり肉を30分~1時間程度そこにつけます。
※浸水する水は1.5%程度の塩水にすると、鶏肉中の成分が流出せず、かつ 塩分を効率よく排出できると考えられる(「むかえ塩」という調理法)
その間に小さくも大きくも無い直径20cm前後の鍋にお湯を沸かします。 沸騰したらさきほどの塩抜きしたとり肉を投入、再沸騰したら火を止めます。 あとは蓋をして最低限冷めるまで、出来れば6~8時間放置したら完成。
※夏場は冷めたら冷蔵庫で保管(スープにつけたままで)した方がいいかもです

うめ醤油

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
「うめ醤油」は青梅を醤油に漬け込むだけですが、青梅の爽かな風味が感じられるお醤油です。
刺し身醤油に使ったり、もちろんいろんなお料理にも使えます。
お醤油がしみ込んだ梅の実も細かく刻んでいろんなお料理に使えますよ。

材料
青梅300g
 青梅は一晩水に浸け、アク抜きをします。
醤油300cc

作り方
1・ザルに上げた梅を、布巾で水気をふき取ります。
2・爪楊枝の先でヘタを取り除きます。
3・広口ビンに梅を入れ、醤油を加えます。
4・きっちりと蓋をして冷暗所に置いておきます。
半年くらいから使えます。醤油に漬かった梅の実も取りだして、お料理のかくし味にも使えます。

鳥団子鍋

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
作り方
1)鳥レバーを細かくたたいてミンチにする。
2)鳥レバーミンチと鳥ミンチ
 (2:3ぐらいの割合がベストとおもうが予算に合わせて適用に)
 おろししょうが(たっぷり目)、卵、塩・醤油少々をよく混ぜ合わせる。
 つなぎに片栗粉ちょっと足してもOK
3)あとはこれを鍋の具として、適当に団子状にスプーンですくって入れる。
 アツアツをおろし醤油やポン酢で。

豆腐卵スープ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
豆腐と卵を使ったスープの作り方です。
分量はだいたい3人分です。
かなり適当な分量で書いてみます。

材料
・豆腐:半丁
・卵:3個
・ネギ:一本
・中華スープのもと:適当
・塩コショウ:適当

作り方
卵と豆腐を器に入れ豆腐が小さくなるまで混ぜる。
適当な量の水に中華スープのもとを適当な量入れてネギと一緒に煮る。
ネギがいい感じになってきたら、卵と豆腐を混ぜたものをスープをかき混ぜながら入れる。
お好みの味加減になるように塩コショウをする。

具はネギでなくて白菜にしたりワカメを入れたりと適当に替えてみてもおいしいです。

2009-11-28

Google Static Maps APIで作成した地図画像を携帯で見ようとしても見れないことがある

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google Static Maps APIで地図画像を作れるわけですが、ソコニイクでもこの機能を使っています。
この画像を携帯で見たときになんか見れたり見れなかったりすることがありました。
見れなくてもリロードすれば見れたりすることが多かったわけですが、たまになんどリロードしてもダメなときもありました。
同じ画面をPCの方から確認すると問題なく見れてしまう感じだったのです。

私が持っている携帯の調子が悪いのかな?と思ったりもしたのですが、調べてみると似たようなことが他の人にも起こっていることがわかりました。

http://okwave.jp/qa5396695.html
が似たような現象で、どうも携帯だとGoogle Static Maps APIの回数制限にかかりやすい感じということがわかりました。
そして、Google Static Maps API Version2にするのもよさそうな感じということがわかりました。
しかし回数制限にひっかかるとメーターが振り切った画像が出ると書かれているのですが、私の現象では普通の画像リンク切れみたいな感じでちょっと違う感じもします。
と思いつつソコニイクでもGoogle Static Maps API Version2に書き換えてみました。

他にも調べてみると
http://php.tekmemo.net/?p=1111
という記事もあり、こちらは画像がリンク切れみたいな感じと私の現象により似ている感じです。
コチラでは必須パラメータsensorの付け忘れが原因だったようで、私の場合はsensorはつけていたのでこちらも違う感じです。

でいろいろ調べていたところ私がGoogle Static Maps APIを呼ぶときですが、以下のように呼ぶべきところを
http://maps.google.co.jp/maps/api/staticmap?
size=300x200&path=color:0xFF0000|weight:40|0,0|35,139&
sensor=false&key=[MAPS_API_Key]
&がエスケープ処理が係っていて&となっていて
http://maps.google.co.jp/maps/api/staticmap?
size=300x200&path=color:0xFF0000|weight:40|0,0|35,139&
sensor=false&key=[MAPS_API_Key]
となっていました。
なのでこちらも直しました。

そしたらなんか調子よくなってしまいました。
APIをversion2にするのとエスケープ処理をとめるのを同時にやってしまったのでどちらが本当の原因だったのかわからなくなってしまいました。

ちなみにGoogle Static Maps APIの呼び方にエラーがあった場合は、エラーメッセージが表示されるようです。
<img src="http://maps.google.co.jp/maps/api/staticmap?
size=300x200&path=color:0xFF0000|weight:40|0,0|35,139&
sensor=false&key=[MAPS_API_Key]">
としているとエラーになるとリンク切れにしか見えませんが
<a href="http://maps.google.co.jp/maps/api/staticmap?
size=300x200&path=color:0xFF0000|weight:40|0,0|35,139&
sensor=false&key=[MAPS_API_Key]">test</a>
としてリンク先を見ればエラーメッセージが確認できたりします。

工人舎 デュアルディスプレーモバイルノート

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
工人舎さんから発表されたノートPCがキニナルのです。

モニタが2枚あるノートです。
なんか無茶な感じがとてもキニナルのです。

以下で発表されたノートPCが見れます。
http://ascii.jp/elem/000/000/478/478839/

こんなトリッキーなものが10万以下で買えるようです。
ちょっと前にレノボでもデュアルモニタのものが発表されていましたが
えらく高いしなんとなくハンパな感じがしていました。
http://journal.mycom.co.jp/articles/2009/04/20/w700ds/index.html

工人舎さんは、具体的な使い道や便利なのかどうかまったくわからないのですが
なんかキニナルので欲しくなったりしてしまいます。

2009-11-25

紙とあそぶレゴ(R)ブロック

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
無印さんとレゴさんのコラボです。
紙とブロックを組み合わせて遊ぶのです。

レゴブロックにちょうどよい穴をあけることができるパンチです。
と言ってしまえばそれまでな感じではありますが、なんかステキなのでキニナルのです。

詳細は以下を見てください。
http://www.muji.net/store/pc/user/campaign/campaign091113_01.jsp

2009-11-24

Google Static Maps API Version 2なるものがありました

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google Static Maps APIについて調べると
Google Codeの
http://code.google.com/intl/ja/apis/maps/documentation/staticmaps/
にたどり着いてこちらを参考にすることが多いと思います。

私は知らなかったのですが、これにはVersion2があるのです。
ちなみに上記の日本語版はVersion1です。

Google Codeのページを英語に切り替えると実はVersion2の説明になっていたりします。
http://code.google.com/intl/en/apis/maps/documentation/staticmaps/

Version2に関して日本語の説明ページも別のところにありました。
http://googlemaps.googlermania.com/staticmapsv2/index.html
コチラのページを英語のページとあわせて使うと便利です。

Version2になって、そんなに大きく機能が変わるわけではないのですが、個人的にはVersion2で追加されたvisibleパラメータが便利だと思っています。
visibleには、地図上に表示させたいポイントを複数指定できます。
そしてそのポイントがいい感じで収まるズームサイズを勝手に判別してくれるもののようです。

過去に
Google Static Maps APIのいい感じのズームサイズを決定する
というエントリを書いたわけですが、ここで書いた計算をしないでもGoogleさんのほうでいい感じにしてくれるのです。

Google Codeの日本語記事はとても役に立つのですが、たまに実はちょっと古いみたいなことがある気がします。
最新を常に保って欲しいとはいいませんが、
最新情報が英語版のほうにあるよ
と日本語の記事でも教えてくれるとうれしいなぁとか思ってみました。

2009-11-23

DjangoでGETする際などに同じパラメタが複数設定されているものを取得する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
index.html?a=1&a=2&a=3
みたいなものを受け付けた時のことです。
通常だと
val = request.GET["a"]
みたいな感じで取得するわけですが、上記のような時は
3
とか一つしかとれません。
取得するには
list = request.GET.getlist("a")
のようにgetlistで取得する必要があるのでした。

2009-11-19

Googleトランジットを出発地か到着地を指定して呼ぶ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
地図を使うアプリケーションでは、電車の乗り換え情報をなんらかの形で利用できると便利なことがあります。
その際に、出発地か到着地のどちらかが決まっているケースは多いような気がします。

携帯でもPCでも使えるGoogleトランジットでは以下のように呼べば出発地もしくは到着地を指定して呼ぶことが出来ます。

出発地を指定
http://www.google.co.jp/transit?saddr=出発地
到着地を指定
http://www.google.co.jp/transit?daddr=到着地
外苑前をセットする場合(地名はUTF-8で指定する必要があります)
http://www.google.co.jp/transit?saddr=外苑前
http://www.google.co.jp/transit?daddr=外苑前

携帯用の地図の場所メモを作成するソコニイクでは、作成した場所メモの最寄り駅を表示することができるのですが、そこで最寄り駅から移動するためのgoogleトランジットのリンクを追加してみました。

2009-11-16

com.docomostar.system.ScheduleのfindByDate

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
iアプリのJavaDocを斜め読みしていたら
com.docomostar.system.Scheduleクラスの中にfindByDateなるものがあるのを知りました。

これを使えば、Googleカレンダーのデータと比較してカレンダーを同期するアプリを作れるかも

と思ったのですが、よく読んだらトラステッドアプリでしか使えないようです。


iアプリでスケジュールに登録することは勝手アプリでもできることを確認したのですが、いちいち確認を求められるし、きっと同じスケジュールをたくさん登録できちゃう気がします。

Google App EngineにProxyを立ててiアプリはこのProxyに通信してGoogleカレンダーのデータを取得してお互いのデータの差分更新をやろうと思ったのですが、残念ながら勝手アプリでは断念です。

トラステッドしか使えないものをもっと少なくすれば、iPhoneやAndroidに意外に対抗できるような気がするかもとか思ってみました。

2009-11-08

iappliTool for Star-1.1でビルドすると落ちる

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
私の環境では、iappliTool for Star-1.1でビルドするとiappliToolが終了してしまいます。
iappliToolが終了していてもビルド自体は出来ています。
ビルドできているのでいいと言えばいいのですが、いちいち再起動が面倒なわけです。

これを回避するためには、
iappliToolの「設定」-「エミュレータ環境設定」の「ビルドの設定」タブを選び
「チェック処理」の
「ADFチェック処理(起動時必須項目)を実行する」のチェックをはずす
とよいようです。
これでビルドしても落ちなくなりました。

2009-11-05

PythonさんでGoogleカレンダーのイベント内容を取得する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
PythonでGoogleカレンダーに登録されているイベントを取得してみました。

データの取得にはgdata-python-clientというのを使うのがとても便利です。
以下から取得できます。
http://code.google.com/p/gdata-python-client/

使い方は、以下を見る感じです。
http://code.google.com/intl/ja/apis/calendar/data/1.0/developers_guide_python.html

認証には、AuthSub,OAuth,ClientLoginと種類があるのですが、以下の例ではClientLoginを利用しています。

import gdata.calendar.service

def print_event():
#認証部分
username = 'グーグルアカウント'
calendar_service = gdata.calendar.service.CalendarService()
calendar_service.email = username
calendar_service.password = 'グーグルアカウントのパスワード'
#適当にプログラム名を指定すればよい感じ
calendar_service.source = 'Google_Calendar_Event_Get_test'
calendar_service.ProgrammaticLogin()

#デフォルトのカレンダーから取得する
visibility = 'private'
projection = 'full'
query = gdata.calendar.service.CalendarEventQuery(username, visibility, projection)
#検索条件の指定
#検索範囲を指定
query.start_min = '2009-11-01'
query.start_max = '2009-12-02'
#繰り返しイベントを別のイベントとして取得
query.singleevents = 'true'
#イベントの開始日時の昇順でソート
query.orderby='starttime'
query.sortorder='a'
feed = calendar_service.CalendarQuery(query)

for ev in feed.entry:
for e in ev:
print '%s. [%s]-[%s]' % (ev.title.text,e.start_time,e.end_time)


ちなみにCalendarEventQueryの検索条件に指定できるのは、以下を参照すると分かります。
http://code.google.com/intl/ja/apis/calendar/data/2.0/reference.html#Parameters
テキストで検索するには以下を参照するとわかります。
http://code.google.com/intl/ja/apis/calendar/data/1.0/developers_guide_python.html#RetrievingWithQuery

2009-11-03

Djangoでいきなりテンプレートへ渡す

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Djangoで説明ページなどでなんの処理もしないでいきなりテンプレートに渡したいと時があります。
その際には、汎用ビューの一つの
django.views.generic.simple.direct_to_template
を使えばOKです。
例えば/testというページにリクエストが来たらtemplate/test.htmlに飛ばしたいときは
urls.py
に以下のような感じで書くとよい感じです。

urlpatterns = auth_patterns + patterns('',
('^test/$','django.views.generic.simple.direct_to_template',
{'template': 'test.html'}),
) + urlpatterns

どうやるんだろうと思っていたら、Google App Engine Patchのサンプルのトップページでも使っていました。

2009-10-19

「ソコニイク」なるものを作ってみました

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ソコニイクというのを作ってみました。
どっかに似たようなものがきっとあるような気もするのですが、地図を使ったサイトです。

コンセプトとしては、PCはソコソコ使えるけど、携帯はそんなに使いこなせていないなぁと言う私のような人が携帯をもうちょっと使ってみようというものです。

使い方としては、PCで事前に地図を調べておいて携帯に地図のURLを送っておいて、現場近くになったら携帯でその地図を見るというものです。
なので最後は携帯で利用することを前提としています。

携帯の地図サイトとか便利なんでしょうけど、現場近くで迷ったときは携帯でその場で地図を調べるのはどうもまどろっこしくて結局は人に聞いてしまう感じなのです。
なのでせめてPCで事前で調べておこうかなぁということで
ソコニイク
を作ってみました。

気が向いたら使ってみてください。

2009-10-15

ブラックライトつきのペン

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク



ブラックライトがついたペンで何ができるかというと通常は見えない文字が見えるようにできるということなのです。
使い道が正直あまり思いつかないのですが、そんなお子様スパイ的な感じのことがちょっとステキでキニナルのです。

紙和

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク


紙封筒みたいなものなのですが、シワの感じがステキでキニナルのです。

2009-10-10

Djangoでjsonを読み取る

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Djangoでjsonを使おうと思うとjson形式で出力することはいっぱい見つかるのですが、どっかのAPIとかを使った出力がjson形式でそれをパースしようと思ったときの情報が少ない感じがします。

json形式をパースするにはDjangoの中にsimplejsonというものが付属しているようなのでそれを利用すればよいそうです。

以下のような感じです。

import django.utils.simplejson as json

def parse_json(json_str):
obj = json.loads(json_str)
return obj


こんな感じで使う感じです。
json_str='["foo", {"bar":["aaa", "bbb", "ccc"]}]'
ret = parse_json(json_str)
foo = ret['foo']

でもDjango1.1からはsimplejsonがDjangoに組み込まれなくなったようなことをどっかで見たような気がしないでもないです。

simplejsonに関して詳しくは以下を参考にしてください。
http://undefined.org/python/#simplejson
ちなみにjson形式で出力を行うには、以下を参考にしてくみてください。
http://djangoproject.jp/doc/ja/1.0/topics/serialization.html

2009-10-03

携帯からgoogle mapにリンクをはったり、グーグルのiアプリを起動したり

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
携帯サイトなどえも自分でgoogleのapiを利用して地図を作るのもよいのですが、なんだかんだで携帯さんのgoogleさんを利用できると便利なことが多いわけです。

そんなわけで指定した場所で携帯googleマップにリンクを張る方法は、以下が参考になります。
http://imakoko.didit.jp/imakoko_html/memo/parameters_google.html
こちらでloncパラメータに緯度経度を指定できと書いてありますが、緯度経度は指定できずに地名しか指定できないようです。

緯度経度を利用するならば、逆ジオコーディングをして住所などを割り出す必要があります。
逆ジオコーディングは、以前書いた以下を参考にしていただけるとうれしいです。
pythonさんでジオコーディングと逆ジオコーディング

またdocomoでは、googleマップのiアプリも便利なわけなの起動のためのリンクなども用意すると便利な感じです。その方法は、以下が参考になります。
http://saya.s145.xrea.com/archives/2007/08/post_258.html
アプリ起動の際にqパラメータに緯度経度や地名を渡すことで指定した場所を中心にして起動できます。
qパラメータにはkml(簡易のようですが)も渡すことができるそうです。

2009-09-30

Google Static Maps APIのいい感じのズームサイズを決定する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google Static Maps APIを使っているとある2点が一画面に収まるような感じのズームサイズを決定したくなることがあります。

pythonで以下のような感じで求められそうです。

#2つの指定座標が収まるズームサイズを求める
#sizeは画像サイズ(正方形地図を利用としています)
# 長方形の場合は、二つの値を受け取ってそれぞれに対して
# zoomを計算して小さい方を選べばよいと思います。
#x1,y1はポイント1の緯度経度
#x2,y2はポイント2の緯度経度
def get_zoom_size(size,x1,y1,x2,y2):
dx = float(x1)-float(x2)
dy = float(y1)-float(y2)
d=math.sqrt(dx*dx+dy*dy)
if d==0:
return 14
zoom = math.log(float(size)/d)/math.log(2)
return int(math.floor(zoom))

floatやらintやらがこなれていない感じがビンビンしてますが、なんとなく出ている感じがするので、まぁよしとしましょう。
これは、
Google Static Maps API で表示した画像の端っこの緯度経度を調べる
で紹介した以下の式を変形させて出してみました。
lx=float(xsize)/pow(2,float(zoom))

2009-09-29

pythonでモバイルAdSenseを使ってみる

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
※この方法では、広告は表示されますがカウントがされていないことがわかりました。
※カウントされる方法はまだわかりません。
※※ カウントされないのはGoogle App Engineに配置したときのケースのようです。(追記 2010/5/20)

携帯用のAdSenseを利用する場合は、PHP,perlなどのコードを貼り付けなさいと最終的になります。
GoogleAppEngineを使っているならば、pythonで使ってみたくなるのです。
なのでPythonで使ってみました。
GoogleAppEngineでないならばurlfetchの部分は置き換えが必要です。
後は、自分用の設定にするにはモバイルAdSenseで生成されたPHPなどのコードを見ながら適切に自分用の値を設定する必要があります。

# -*- coding: utf-8; -*-
from time import time
from math import floor
from urllib import urlencode
from google.appengine.api import urlfetch

def google_append_color(color,dt):
color_array = color.split(',')
return color_array[int(dt % len(color_array))]

def google_ad(request):
scheme = 'https://' if request.is_secure() else 'http://'
dt = time()
params = {
'ad_type':'text_image',
'channel':'設定したいchannelのコードを設定',
'client':'ca-mb-' + '自分のAdSenseの値を設定',
'dt':repr(floor(dt*time())),
'format':'mobile_single',
'https':request.META.get('HTTPS', ''),
'ip':request.META.get('REMOTE_ADDR', ''),
'markup':'xhtml',
'oe':'utf8',
'output':'xhtml',
'ref':request.META.get('HTTP_REFERER', ''),
'url':scheme + request.META.get('HTTP_HOST', '') + request.META.get('REQUEST_URI', ''),
'useragent':request.META.get('HTTP_USER_AGENT', ''),
'color_border':google_append_color('ここは色をカスタマイズするならば利用',dt),
'color_bg':google_append_color('ここは色をカスタマイズするならば利用',dt),
'color_link':google_append_color('ここは色をカスタマイズするならば利用',dt),
'color_text':google_append_color('ここは色をカスタマイズするならば利用',dt),
'color_url':google_append_color('ここは色をカスタマイズするならば利用',dt),
}
screen_res = request.META.get('HTTP_UA_PIXELS', '')
delimiter = 'x'
if screen_res == '':
screen_res = request.META.get('HTTP_X_UP_DEVCAP_SCREENPIXELS', '')
delimiter = ','
if screen_res == '':
screen_res = request.META.get('HTTP_X_JPHONE_DISPLAY', '')
delimiter = '*'
res_array = screen_res.split(delimiter)

if len(res_array) == 2:
params['u_w'] = res_array[0]
params['u_h'] = res_array[1]

muid = request.META.get('HTTP_X_DCMGUID', '')
if muid != '':
params['muid'] = muid
muid = request.META.get('HTTP_X_UP_SUBNO', '')
if muid != '':
params['muid'] = muid
muid = request.META.get('HTTP_X_JPHONE_UID', '')
if muid != '':
params['muid'] = muid
muid = request.META.get('HTTP_X_EM_UID', '')
if muid != '':
params['muid'] = muid

url = 'http://pagead2.googlesyndication.com/pagead/ads?' + urlencode(params)
result = urlfetch.fetch(url)
if result.status_code != 200:
return None
return result.content

このgoogle_adで返された値を広告を貼り付けたい位置に出力するようにすればよいです。
一応、試したら見ることはできたので動いているようです。

2009-09-24

携帯で位置情報を取るには、Cirius LabさんのGeoFormAPIがステキ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
携帯サイトの醍醐味の一つは位置情報を取れることだと思うのですが、各会社毎に取得する手段が違うし、同じ会社でもGPSを使うものと基地情報(?)を使うものといろいろなわけです。
そんな違いを吸収してくれるのがCirius LabさんのGeoFormAPIなのです。
詳細は、以下をみてください。
http://lab.cirius.co.jp/index.php?GeoPlatformAPI%2FGeoFormAPI
これを利用すると、位置情報を取得するためのリンクを生成してくれます。
生成した情報をクリックすると位置情報を取得して、指定したurlに位置情報をつけてもどしてくれます。

pythonさんで利用するには、以下のような感じです。
利用前提はgoogle app engineなのでurlfetchを使っていますが、使わないときは適当に置き換えてください。
またdjangoを利用するのでrequestオブジェクトを受け渡しています。環境変数を取るときは違う手段を使っても良いと思います。

# -*- coding: utf-8; -*-
from urllib import urlencode
from google.appengine.api import urlfetch

def get_geo_form(request,return_uri,w='現在位置で探す'):
params = {
'ua':request.META.get('HTTP_USER_AGENT', ''),
'return_uri':return_uri,
'api_key':'APIを利用するためのAPIキーを指定します。',
'display':w,
}
url = 'http://api.cirius.co.jp/v1/geoform/xhtml?' + urlencode(params)
result = urlfetch.fetch(url)
if result.status_code != 200:
return None
return result.content


get_geo_formによって、リンクのhtmlを返すのでこれをそのまま使いたい場所に埋め込むことになります。

docomoでinputタグはformできちんと囲わないと出力されない

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
docomo用のサイトをちょっといじっていて
<input type="text" value="test">
のようにテキストボックスを単独で表示しようとしたら表示されませんでした。

きちんと
<form action="/dummy">
<input type="text" value="test">
</form>
のようにformタグで囲わないと出力されないようです。
formタグで囲うときは、最低限actionは指定しないといけない感じです。

2009-09-23

pythonさんでジオコーディングと逆ジオコーディング

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
場所の名前から緯度経度取得するジオコーディングをpythonでやってみました。

google mapを利用します。
ジオコーディングに関しては、
http://code.google.com/intl/ja/apis/maps/documentation/services.html#Geocoding_Direct
に書いてあります。

コードは以下のような感じです。
google app engineで利用することを前提にしているので
urlfetchを使っていますが、そうでないならばそこを置き換える必要があります。

# -*- coding: utf-8; -*-
import xml.etree.ElementTree as etree
import urllib
from google.appengine.api import urlfetch

#場所名から緯度経度取得
def geocoding(addr):
url = 'http://maps.google.com/maps/geo?'
url = url + 'key=' + 'グーグルマップAPIのキー'
url = url + '&sensor=false'
url = url + '&output=xml'
url = url + '&q=' + urllib.quote(addr.encode('utf-8'))
result = urlfetch.fetch(url)
if result.status_code != 200:
return None
dom = etree.fromstring(result.content)
namespace ='http://earth.google.com/kml/2.0'
code = dom.findtext('.//{%s}code' % namespace)
if code != "200":
return None
point = dom.findtext('.//{%s}coordinates' % namespace)
if point == None :
return None
tmp = point.split(',')
ret = {}
ret['lon'] = tmp[0]
ret['lat'] = tmp[1]
return ret


緯度経度から場所の名称を取得する逆ジオコーディングもgoogle map apiでできることを
http://creco.net/2009/03/07/implement_google_reverse_geocoding_api/
で知りましたので、こちらも試してみました。

コードは以下のような感じです。
取得できる場所の名称が道路名だったり郵便番号だったりするケースを除外するためにAddressDetailsのAccuracyを確認する必要があるのですが、AddressDetailsのネームスペースが他と違っているので、そこが注意ポインツです。
しばらく気づかずにAddressDetailsの情報が取れなくて悩んでしまいました。

# -*- coding: utf-8; -*-
import xml.etree.ElementTree as etree
import urllib
from google.appengine.api import urlfetch

#緯度経度から場所名取得
def regeocoding(lat,lon):
url = 'http://maps.google.com/maps/geo?'
url = url + 'key=' + 'グーグルマップAPIのキー'
url = url + '&hl=ja'
url = url + '&oe=UTF8'
url = url + '&output=xml'
url = url + '&q=' + str(lat) + ',' + str(lon)
result = urlfetch.fetch(url)
if result.status_code != 200:
return None
logging.info(result.content)
dom = etree.fromstring(result.content)
namespace ='http://earth.google.com/kml/2.0'
code = dom.findtext('.//{%s}code' % namespace)
if code != "200":
return None
for placemark in dom.findall('.//{%s}Placemark' % namespace):
ad = placemark.find('.//{urn:oasis:names:tc:ciq:xsdschema:xAL:2.0}AddressDetails')
if ad.get("Accuracy") == "5" or ad.get("Accuracy") == "6":
continue
else :
addr = placemark.findtext('.//{%s}address' % namespace)
break
addr = addr.replace(u'日本', '', 1)
return addr

2009-09-20

Google Static Maps API で表示した画像の端っこの緯度経度を調べる

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google Static Maps APIで地図画像を作成できますが、作成した画像の一番上やら右端などがどんな緯度経度なのかを知りたいときがあります。

方法としては、
http://da-studio.blogspot.com/2008/04/google-static-maps-api.html
を見ればわかります。

理論に関しては、まったくわからないですが
ズームサイズと画像サイズから、地図に表示されている
(地図の一番上の座標)-(地図の一番下の座標)
の値がわかるようです。

これがわかれば、中心座標に求めれた数値の半分を足したり引いたりすれば、端っこの座標を求めることができるのです。

リンク先にphpのサンプルコードがあるので、こちらではpythonのコードを書いてみます。

#画像縦サイズ:ysize
#画像縦サイズ:xsize
#画像中心緯度:clat
#画像中心軽度:clon
#縦横の表示域を算出
lx=float(xsize)/pow(2,float(zoom))
ly=float(ysize)/pow(2,float(zoom))

#小数点以下をいい感じに丸める処理
lattop = round((float(clat)+ly/2)*1000000)/1000000
latbtm = round((float(clat)-ly/2)*1000000)/1000000
lontop = round((float(clon)+ly/2)*1000000)/1000000
lonbtm = round((float(clon)-ly/2)*1000000)/1000000


表示域を算出するときに、念のため値をfloatで囲んでおくのが良さげです。
何も考えずに使っていたら、それぞれintとして取り扱うコードになっていて、
算出結果が0とかになったりしたもので。

2009-09-19

pythonで'cp932 codec can't decode bytes in position illegal multibyte sequence'ってエラー

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
windows環境でpythonさんをいじっているのですが、
日本語を扱うところで
cp932 codec can't decode bytes in position illegal multibyte sequence
みたいな感じのエラーがでました。

コード的には、

w = "日本語"
ww = "aaa" + w + "bbb"

みたいな感じの2行目の部分で出ました。

とりあえずコードの頭に
# -*- coding: utf-8; -*-
とかつけているからコード内の日本語はutf-8で扱われるのかと思っていたのですが
cp932とか言われてちょっとよくわからず。
でも、

w = u"日本語"
ww = "aaa" + w + "bbb"

とユニコードにしておいたら消えました。

pythonの日本語系の取り扱いは、まだしっくりせずです。

2009-09-18

Djangoのテンプレートのフィルタのescapejs

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Djangoさんのテンプレートには、フィルタというものがついていてテンプレートにセットされた値にテンプレート側で値に対して修正を書けることができます。

Djangoさんのテンプレートないでjavascriptを記述していて、そのスクリプト内にある文字列を変数に代入しようとして

var aaa = "{{ test }}";

なんてしておいた時に、testの値に改行などが入っていた際には、javascriptが動かなくなります。

そんな感じを防止するために

var aaa = "{{ test|escapejs }}";

のような感じでescapejsというフィルターを使うとエラーにならないようにしてくれます。

でも、html的に安全でないとかいう感じで書いてあったので、私はこんな感じにしてみました。

var aaa = "{{ test|striptags|escapejs }}";


便利なDjangoのテンプレートのフィルターは、
http://djangoproject.jp/doc/ja/1.0/ref/templates/builtins.html#ref-templates-builtins-filters
で確認できます。

フォームのテキストエリアなどにデフォルトを表示してフォーカスを当てると消えるやつ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
フォームにデフォルト値を入れておいて、実際にフォーカスをあてて入力を行う際には、そのデフォルトが消えるというやつです。
jQueryのプラグインであるjQuery Watermark Pluginを使うと実現できます。

利用方法は、
http://www.skuare.net/2009/04/javascriptjquery_watermark_plu.html
を見ればよいです。

ポイントは、デフォルト文字の表示のされ方を指定するためにupdnWatermarkというクラスのcssを準備しておく必要があります。

jQuery Watermark Pluginからダウンロードするとサンプルがあるので、それをそのまま利用するのが簡単だと思います。

ただこのサンプルでは、CSSフレームワークであるBlueprintを利用していると気持ちのよい位置に文字が表示されませんでした。
なので私は、以下のような感じのcssを用意して使ってみました。

.updnWatermark label
{
position: absolute;
padding: 1em;
padding-left: 0.5em;
white-space: nowrap;
color: #999;
}

2009-09-13

Blueprint CSS

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google app engine patchには、Blueprint CSSなるものが入っています。

これは、CSSフレームワークなるものらしいです。
CSSフレームワークとは、なんじゃらほい?という感じだったのですが、
フレームワークで準備したcssのクラスとかをいい感じでつかうと
いい感じのサイトが簡単にできちゃいますというものようです。

Blueprintの場合ですが、グリッドレイアウトというものが簡単に出来るようになるようです。
グリッドレイアウトとは、画面上の各要素をグリッドにきちんとあわせることできれいなサイトができあがるというもののようです。
そして、そのグリッドにきちんとあわせるというのが、私のような素人には結構たいへんな気配がするのです。
Blueprintでは、グリッドレイアウト意外にもブラウザのデフォルトの見た目をリセットしてBlueprintのいい感じの見た目を設定してくれているようでもあります。
それをできるようになるということなので、私も使ってみることにします。

Blueprintに関しては、
http://www.ideaxidea.com/archives/2009/01/blueprint_css.html
で情報がまとまっていて参考になります。

Blueprintは、グリッドが24個(デフォルトで変えられるようです)に分かれており、それぞれの要素で何個のグリッドを使うかを指定していく感じです。

具体的な利用法は、以下のような感じです。

CSS指定方法

<link rel="stylesheet" href="/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="/blueprint/print.css" type="text/css" media="print">
<!--[if lt IE 8]><link rel="stylesheet" href="/blueprint/ie.css" type="text/css" media="screen, projection"><![endif]-->


実際にBlueprintを適用する範囲は、classでcontainerで指定したdiv範囲となります。
一緒に指定してあるshowgridを指定すると背景にうっすらグリッドを表示してくれてテスト時のデザインの参考になります。

<div class="container showgrid">
</div>


24個のグリッドをいくつかにdiv要素で分割して指定するには、span-*というクラスを指定します。
そして、一行に配置するグリッドは、合計24になるようにします。
そして、一行の終わりとなる要素にはlastというクラスを指定します。

<div class="container showgrid">
<div class="span-24 last">
<p>一行目は、24個のグリッドを一つの要素で使い切ります。</p>
</div>
<div class="span-8">
<p>2行目は3つの要素を配置します。</p>
</div>
<div class="span-8">
<p>2つ目の要素です。</p>
</div>
<div class="span-8 last">
<p>3つ目の要素です。行の最後なのでlastクラスを指定しています。</p>
</div>
</div>


div要素は、入れ子にできます。入れ子で指定するときは、利用グリッドの合計を親要素で利用しているグリッドの合計にする必要があります。

<div class="container showgrid">
<div class="span-12">
<p>この中を入れ子で指定します。</p>
<div class="span-5 colborder">
<p>ここで親グリッド12のうち5個利用します。colborderを指定したことで、5個のグリッドの後にグリッド一つ分の空白をあけることになります。なので合計6個分のグリッドをココで指定しています。</p>
</div>
<div class="span-6 last">
<p>入れ子でも、入れ子内で行の最後になった場合はlastクラスを指定します。</p>
</div>
</div>
<div class="span-12 last">
<p>行の最後なのでlastを指定しています。</p>
</div>
</div>


グリッド配置するときには、必ずしも1個目のグリッドから利用するわけでなく、途中のグリッドから利用したいこともあります。
そのときは、prepend-*とappend-*を利用します。prependを指定すると指定グリッド前に指定した数だけグリッドをあけてから要素を配置することになります。appendは要素の後に指定グリッド分あけることになります。

<div class="container showgrid">
<div class="span-8 prepend-4 append-5">
<p>グリッド4つ分あけてからグリッド8個分確保します。そしてその後に5個分のグリッドをあけます。つまり17個分ここで指定したことになります。</p>
</div>
<div class="span-7 last">
<p>隣の要素との間に5グリッド分の間が開いています。</p>
</div>
</div>


ここまで書いた要素をすべて一つのcontainerの中に入れたとしたら、以下のようなイメージになります。
あくまでもこんな感じになるというだけで、実際に以下はBlueprintを利用したものではないです。





一行目は、24個のグリッドを一つの要素で使い切ります。
2行目は3つの要素を配置します。2つ目の要素です。3つ目の要素です。行の最後なのでlastクラスを指定しています。
この中を入れ子で指定します。
ここで親グリッド12のうち5個利用します。colborderを指定したことで、5個のグリッドの後にグリッド一つ分の空白をあけることになります。なので合計6個分のグリッドをココで指定しています。 入れ子でも、入れ子内で行の最後になった場合はlastクラスを指定します。
行の最後なのでlastを指定しています。
 グリッド4つ分あけてからグリッド8個分確保します。そしてその後に5個分のグリッドをあけます。つまり17個分ここで指定したことになります。 隣の要素との間に5グリッド分の間が開いています。


他にも、見た目系をいじるクラスとかもあるようなのですが、そこまではまだ理解ができていません。

藤城清治さん

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
日本人なら一度は見たことがあると思われる影絵の作家さんです。

http://www.seiji-fujishiro.com/nn4/index.html

今日、銀座でやっている展覧会があり、ちょっと見てきました。特になんとも思っていなかったのですが、予想以上にステキでした。
色使いがとてもきれいで影絵の概念がちょっと変わってしまいました。
影絵でグラデーションがあるなんて思っていなかったものです。
そして藤城清治さんは、今年で86歳のようですが、2009年の作品などもあり、それがまたステキだったりするのです。
そんなこんなでオススメなのです。


2009-09-02

Eater-sagari

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク


なんか謎の生物な感じがキニナルのです。
パクっといろいろ食べるのです。

これは、なんかシリーズみたいになっているようです。
seto(セト)
がブランド名のようです。他にいかのようなものがありました。


2009-08-31

ブックストッパー自作

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
以前、ブックストッパーというものを紹介させていただきました。
http://viva-okini.blogspot.com/2009/03/blog-post_4633.html
ここでもパチンコ玉を使った自作をちょっと試したのですが、また別の形で自作してみました。

今回、作ったのはこんな感じです。



















材料は、
・川で拾った手ごろな石
・麻紐
・クリップ
です。

実際の利用はこんな感じです。














実際のブックストッパーと比べるとこんな感じです。














ちょっと石がでかすぎたかもです。
そして麻紐の編み方がヘタクソなのが残念な感じですが機能的には十分でした。

その編み方は、これを参考にしました。


そして麻紐は以下の2色を利用してみました。



できは、いまいちですがなんか作っているのは楽しいなぁとか思うわけです。

実際に手作りしてみると、やっぱりホンモノのブックストッパーはよく出来ているなぁと当たり前の感想を持ったりするのです。

2009-08-06

Google Mapplets APIをテストする

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google Mappletsというのは、自分のサイトの中にGoogle Mapの機能を持ってくるのとは逆に自分の作ったものをGoogle Mapに取り込んでもらうものです。
実際に利用するには、Mapplets用のjavaスクリプト入りのXMLを用意して、それをgoogleさんに読み込んでもらうことになります。
Googleさんに読み込んでもらうにはどっかに置いとかないといけないわけですが、動くかどうかわからないものを置くのも心苦しいわけです。
なのでまずはテストが必要なわけですが、そこは流石Googleさんなのでちゃんとスクリプトをテストする環境が用意されているわけです。
http://maps.google.co.jp/gadgets/directory?synd=mpl&hl=ja&backlink=http%3A%2F%2Fmaps.google.co.jp%2Fmaps%2Fmm%3Fie%3DUTF8%26hl%3Dja%26ll%3D35.689517%2C139.785946%26spn%3D0.307284%2C0.55481%26z%3D11&cat=devtools
にある
Mapplet Scratch Pad
というmappletをgoogleマップに追加して
Googleマップのマイマップを開くと
Mapplet Scratch Pad
が利用できるようになって、ここで自分書いたmappletのコードを試すことが出来るようになるわけです。
Mapplet Scratch Padは、
http://code.google.com/intl/ja/apis/maps/documentation/mapplets/guide.html#Important_Developer_Tools
にも重要ですよん。
と書いてあるのでMappletをいじる際には必ず利用した方がよいようです。

2009-07-30

ダダマニア

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

ダダです。
ウルトラマンに出てくる宇宙人ダダを重ねるのです。
意味がわからずキニナルのです。
ダダの無表情っぷりがちょっとスキだったりするのですけど。

2009-07-29

クッキングトイ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
おもちゃというか簡単調理具というか単なるおもちゃとは言えないクッキングトイなるものがキニナルのです。

特にキニナルものを一覧にしてみます。

・蕎麦


・パン


・チョコバナナ


・パスタ


・アイス


・生キャラメル


・たいやき


・マカロン


・せんべい


・シュークリーム


・ドーナツ


・餃子


基本的にネリネリ、コネコネ系という感じですね。

その他クッキングトイは、
こちらでご覧ください。

2009-07-26

Google Map APIの直前の検索結果を変える

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google Map APIで縮尺を変えたり、地図を写真に切り替えたりといろいろなコントローラーが付けられるわけですが、その中で場所を移動する矢印の真ん中に「直前の検索結果に戻る」というのがあります。
これの直前の検索結果とは、
savePosition
を使って保存した場所になります。
以下のような感じでクリックするとマーカーを立ててその位置を記憶させることができます。
これによって、マーカーを立てた後に地図をドラッグしてマーカーが見えなくなってもマーカーの位置に戻れます。

<script type="text/javascript"
src="http://www.google.com/jsapi?key={{gkey}}"></script>
<script type="text/javascript">
google.load("maps", "2.x",{"other_params":"sensor=false"});
var map = null;

function initialize() {
map = new google.maps.Map2(document.getElementById("map"));
map.setUIToDefault();
GEvent.addListener(map, "click", getAddress);

var point;
point = new GLatLng(35.6585873, 139.7454247)
map.setCenter(point, 14);
}

function getAddress(overlay, point) {
if (point != null) {
map.clearOverlays();
map.setCenter(point);
var marker = new GMarker(point);
map.addOverlay(marker);
map.savePosition();
}
}

google.setOnLoadCallback(initialize);
</script>
<body onunload="GUnload()">
<div id="map" style="width: 600px; height: 480px"></div>
</body>

本当は、現在たっているマーカーの直前に立てたマーカーに戻るようにするために

map.savePosition();
map.setCenter(point);
var marker = new GMarker(point);
map.addOverlay(marker);

マーカーを記述する前にsavePositionを発行してみたのですが、なんかドラッグすると変な位置が記録されているような感じだったのでやめてみました。

2009-07-22

jQueryでcookieを

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
jQueryを使うといろいろステキなわけですが、cookieの取り扱いもステキです。
利用方法は、
http://blog.4galaxy.net/28.html
を見ていただければ完璧です。

ちなみにGoogle App EngineでDjangoを使うときに便利なapp engine patchを利用しているとjQuery関連が一つにまとめられているのでcookieマネージャであるjquery.cookie.jsも同じ場所においておくことにします。

場所は、
プロジェクトルート/common/jquery/media
において
プロジェクトルート/common/jquery/settings.py
を以下のようにjquery.cookie.jsを追加します。

from ragendja.settings_post import settings
settings.add_app_media('combined-%(LANGUAGE_CODE)s.js',
'jquery/jquery.js',
'jquery/jquery.fixes.js',
'jquery/jquery.ajax-queue.js',
'jquery/jquery.bgiframe.js',
'jquery/jquery.livequery.js',
'jquery/jquery.form.js',
#追加しました
'jquery/jquery.cookie.js',
)

これでcookieが簡単に使えちゃいます。

以下のような感じです。

#セット
$.cookie('attr','val',{ expires: 30 });
#ゲット
test = $.cookie('attr');

2009-07-21

google app engine pathではjQueryが組み込まれている

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google App EngineでDjangoを使うためにpatchを利用しているわけですが、settings.pyの中の
INSTALLED_APPSにjqeuryとか書いてあったのです。

INSTALLED_APPS = (
# Add jquery support (app is in "common" folder). This automatically
# adds jquery to your COMBINE_MEDIA['combined-%(LANGUAGE_CODE)s.js']
# Note: the order of your INSTALLED_APPS specifies the order in which
# your app-specific media files get combined, so jquery should normally
# come first.
'jquery',
・・・
)

これを書いておけばmediautilsでまとめあげたjavaスクリプトを読み込んでおけばjqueryも使えてしまうということなのでした。
具体的に利用できるものとしては、
プロジェクトルート/common/jquery/settings.py
に書いてありますが、以下のものが利用できるようです。
jquery.js
jquery.fixes.js
jquery.ajax-queue.js
jquery.bgiframe.js
jquery.livequery.js
jquery.form.js

jQueryも使おうかと思ったので、このjqueryのエントリも残しておくことにしました。

2009-07-20

google app engine patchのmediautils

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
google app engine patchにはmediautilsなるものが利用できるようです。
内容的には、
http://code.google.com/p/app-engine-patch/wiki/MediaGenerator
を見るのが一番なのですが、用は自分の作ったアプリケーションで利用するjavaスクリプトやCSSを一つのファイルにまとめて圧縮してくれるというもののようです。

mediautilsは最初の設定から利用できるようになっています。
関係するsettings.pyの内容は以下の部分のようです。
実際にはちょっと自分で買えている部分はあります。

LANGUAGE_CODE = 'ja'

LANGUAGES = (
('ja', 'Japanese'),
('en', 'English'),
)

#ここに書かれているファイルにまとめられるようです。
#ここに纏め上げるjavaスクリプトやcssを書くようです。
COMBINE_MEDIA = {
'combined-%(LANGUAGE_CODE)s.js': (
'.site_data.js',
),
'combined-%(LANGUAGE_DIR)s.css': (
'global/look.css',
),
}

MEDIA_VERSION = 1

INSTALLED_APPS = (
# ...
'mediautils',
# ...
)


テンプレートでは、

<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}combined-{% if LANGUAGE_BIDI %}rtl{% else %}ltr{% endif %}.css" />
<script type="text/javascript" src="{{ MEDIA_URL }}combined-{{ LANGUAGE_CODE }}.js"></script>

と指定して利用するようです。

追加するファイルは、プロジェクトのsettings.pyにすべて書いておいてよいのですが、各アプリケーションで個別に追加することもできるようです。
追加するjsファイルをアプリケーションのディレクトリの下にmediaというディレクトリを作って、さらにアプリケーションのディレクトリにsettings.pyを作って以下のような感じに書けばよいみたいです。

from ragendja.settings_post import settings
settings.add_app_media('combined-%(LANGUAGE_CODE)s.js',
'myapp/code.js',
)


いまいち便利さがよくわかっていないのですが、サンプルでも使っているしpatchをいろいろ使うには利用した方がよさそうな気もするので、とりあえずmediautilsは使っていってみようかと思います。

Google App Engine patchを利用している時にテンプレートでMEDIA_URLが取得できなかった

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
google app engine patchを利用して遊んでいます。
画像をおいて参照しようと思ったのです。
デフォルトの設定そのままな感じでは
/media
の下に画像をおいて
テンプレートで
<img src="{{ MEDIA_URL }}global/logo.png" alt="" />
と書いておけば利用できるようにサンプルを見るとできそうなので自分の作ったアプリでも試してみたのですが、最初は{{ MEDIA_URL }}を解決してくれませんでした。
そしてサンプルではちゃんと解決してくれるわけです。

これは、views.pyで
from django.shortcuts import render_to_response
としていたのがいけなくて
from ragendja.template import render_to_response
としないといけなかったようです。

そしてこの変更をしたら
render_to_responseを使い方も変更が必要でした。
requestを渡してあげる必要があるようです。
以下のような感じです。

def index(request):
payload = dict()
payload['test'] = 'testtest'
#変更前のコード
# return render_to_response('test_index.html', payload)
#変更後のコード
return render_to_response(request,'test_index.html',payload)

2009-07-11

Magnet Tack

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク


形はまったく普通の画鋲です。
でも、磁石になっているのです。
なので画鋲を押したところに金属をつけることができるのです。
ちょっと便利そうでキニナルのです。

noord 串皿

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク



お皿に丸い穴があいています。そしてその反対側には串がおけるでっぱりがあります。
でっぱりのところに串を固定して穴をもって串に刺さっているものをとることができるということなのです。
なかなかステキなアイデアでキニナルのです。

2009-07-08

ペーパーログ製作器

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク


紙薪というものがあるのをはじめて知ったのです。
新聞紙を利用して薪を作ってしまうというものなのです。
新聞紙の再利用としては、なんかいい感じな気がするのでキニナルのです。

何に使うかは全く考えはないのですが作ってみたいのです。

2009-07-07

Djangoのテストケース

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Djangoでテストをするときは、
python manage.py test
とすることでいい感じでテストケースを探してくれてテストをしてくれるわけなのです。

とりあえず共通的な処理をするものをプロジェクトの下に
lib
というディレクトリを作って、この中に共通処理をする関数を入れた
common.py
というのを作って、そのテストを行う
tests.py
を以下のような感じで作ってみました。

from django.test import TestCase
from lib.common import func

class GmapHelperTestCase(TestCase):
def setUp(self):
pass
def test_func(self):
self.assertEquals('aaa', 'bbb')

そして
settings.py

INSTALLED_APPS

lib
を追加してみたのですが、テストケースを発見してくれませんでした。

Djnagoの説明を見ると自動で発見するテストケースは
models.pyに記載したDoctestか
そのディレクトリにあるtests.py
と書いてありましたので、
libの下に
models.py
と空のファイルを作ることで発見してくれるようになりました。

共通処理をするものをこういう形で書くのが本当によいのかどうか、ちょっとわからないのですがこんな感じで進めてみます。

ちなみにどのテストケースが実行されているかを確認するには
python manage.py test --verbosity=2
とすると確認できます。

2009-07-06

Google App EngineでDjangoは、helperからpatchにしてみた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
http://kingyo-bachi.blogspot.com/2009/06/google-app-enginedjango.html
でGoogle App EngineでDjangoを利用するには、Google App Engine Helperが便利と書いてみましたが、
manage.py test
を実行するとGoogle App Engine Helperのテストエラーが出てしまいました。
私の環境がwindowsであることが原因な気がしつつ、そしてどっかいい感じにパスを通せばなんとかなるような気がしたりしつつ調べていたら
Google App Engine patch
という方がいい感じな気配なので切り替えました。

Google App Engine patchでは、Djangoの機能をGoogle App Engine上で使えるものが多くなっています。

Google App Engine patchは
http://code.google.com/p/app-engine-patch
から取得できます。
こちらからダウンロードしたものを解凍すれば、そのままサンプルになっています。

Google App Engine patchには、Djangoの1.0系のzipファイルも含まれているので自分でDjangoのzipファイルを準備する必要はありません。

もちろん
manage.py test
でエラーはでません。
ですが、windowsの環境でsettings.pyで
USE_I18N = True
となっていると
manage.py runserver
としたときに、gettextのワーニングがいろいろ出ます。
これを解消するには、
http://docs.djangoproject.com/en/dev/topics/i18n/#gettext-on-windows
から
gettext-runtime-0.17-1.zip
gettext-tools-0.17.zip
を取得して、それぞれを解凍して出来たディレクトリの中身を
C:\Program Files\gettext-utils
に入れます。
そして環境変数PATHに
C:\Program Files\gettext-utils\bin
を通すことでワーニングは解消されます。
単に設定を
USE_I18N = False
にするのでも差し支えはないとは思います。

これでDjangoのadmin画面とかが使えちゃえます。
かなり便利です。
デフォルトだと独自にadminアカウントを作って、そのアカウントでログインするようになっていますが、Google App Engineを使っているならば、そこいら辺はGoogleアカウントにお任せしたいところです。
その手段は、
http://code.google.com/p/app-engine-patch/wiki/GoogleAccounts
に書いてありました。

私は、以下のような感じにしてみました。
app.yamlに

- url: /admin/.*
script: common/appenginepatch/main.py
login: admin

として、
settings.pyのmiddlewareの部分を
'django.contrib.auth.middleware.AuthenticationMiddleware'
をコメントアウトして
'ragendja.auth.middleware.GoogleAuthenticationMiddleware'
を有効にします。
そして
AUTH_USER_MODULE = 'ragendja.auth.google_models'
AUTH_ADMIN_MODULE = 'ragendja.auth.google_admin'
も有効にします。
これで/adminにアクセスすればgoogleアカウントのログイン画面が表示されて、admin権限があるユーザのみが利用できるようになります。

そして自分が作ったアプリケーションのmodelをadminで利用するには以下のような感じです。
ここではアプリケーション名をahahaでmodels.pyにOhohoというクラスを作ったとします。
もちろんsettings.pyには記述済みというコトで。
Ohohoをadmin画面で管理できるようにするには、
ahahaディレクトリに以下のようなadmin.pyを作成します。

from ahaha.models import Ohoho
from django.contrib import admin

admin.site.register(Ohoho)

これだけです。

2009-06-27

Djangoのローカルテスト環境でGoogle map apiを利用する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google map APIを利用するには、サイトのurlが必要になります。

本番環境は、問題ないとしてローカルでテストしているときですが、Djangoの場合
http://localhost:8000
となっているわけです。

ここでテストするにはどうしたらよいかと思っていたら
普通にGoogle map APIのkeyの申請のところで
http://localhost:8000
と申請すればよいだけでした。

で、Google App EngineのDjango環境でためしに住所から緯度経度を取ってみるサンプルです。
まずsettings.pyに
MAP_KEY = 'xxxxxxxxx'
と定義しておきます。

適当なところで以下のような感じで

# -*- coding: utf-8; -*-

from django.conf import settings
import xml.etree.ElementTree as etree
from google.appengine.api import urlfetch
import urllib

def test_gmap():
url = 'http://maps.google.com/maps/geo?'
url = url + 'key=' + settings.MAP_KEY
url = url + '&sensor=false'
url = url + '&output=xml'
url = url + '&q=' + urllib.quote('千代田区丸の内1-9-1')
result = urlfetch.fetch(url)

if result.status_code == 200:
dom = etree.fromstring(result.content)
namespace ='http://earth.google.com/kml/2.0'
retunrn dom.findtext('.//{%s}coordinates' % namespace)


ちょっとはまったポイントとしては、日本語を利用するならばファイルの先頭に
# -*- coding: utf-8; -*-
を忘れずに。
manage.py startapp
で生成するviews.pyとかにはcodingが入っていないので入れ忘れていてエラーが出てちょっと考えちゃいました。

あと、xmlの解析に利用しているElementTreeについては、
http://python.matrix.jp/modules/ElementTree.html
が参考になります。

Djangoのsettings.pyに独自設定を定義する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Djangoの設定はsettings.pyにいろいろ書かれています。
なので自分が作成するアプリケーション用の設定も同じく書いておきたいわけです。
それは、
http://djangoproject.jp/doc/ja/1.0/topics/settings.html#topics-settings
にちゃんと書いてあるので、そこを見ればOKです。

要約すると
settings.pyには、普通にオリジナルの設定を他の既存のパラメータと同様な感じで定義できます。
例えば、
MY_CONF = 'test conf'
とか普通に書きます。

使うときですが、利用するファイルで
from django.conf import settings
として、
val = settings.MY_CONF
で利用できます。

2009-06-24

Djangoで携帯サイト向けサイトを作るためにuamobileを使う

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
pythonで携帯サイトを作るためには、uamobileが便利なわけです。
SOBARCOでもuamobileは使っているのですが、ちょっとバージョンが古く、今では結構変更されていました。

そして今度は、Djangoで利用できるようしてみたのでその手順です。

Djangoの環境作成は、ココをごらんください。

まずuamobileを以下から取得します。
http://pypi.python.org/pypi/uamobile/
今回は、0.2.5を利用しています。
取得したファイルを解凍してできたディレクトリにあるuamobileディレクトリをDjangoプロジェクトのルートディレクトリの直下にコピーします。

uamobileではIPyというのも使っているようなので取得します。
http://pypi.python.org/pypi/IPy
今回は、0.63を利用しています。
取得したファイルを解凍してできたディレクトリにあるIPy.pyをDjangoプロジェクトのルートディレクトリの直下にコピーします。

私の環境ではuamobile/cidr.pyの先頭をコメントアウトしないいけませんでした。
#from pkg_resources import resource_string


これで使う準備が整いました。

せっかくDjangoで利用するのでmiddlewareとしてどのページを見るときでも勝手にサイトを見ている端末を判別できるようにします。

Djangoプロジェクトの直下にcommonディレクトリを作成します。
commonディレクトリに内容が空の__init__.pyファイルを作ります。
また、以下のmiddleware.pyを作成します。
from uamobile import detect

class UserAgentMobileMiddleware(object):
def process_request(self, request):
request.device = detect(request.META)

こちらは、http://labs.unoh.net/2007/08/python_3.htmlを参考にさせていただきました。

そしてsetting.pyのMIDDLEWARE_CLASSESに
'common.middleware.UserAgentMobileMiddleware',
を追加します。

ちゃんと動いている確認します。
Dyangoプロジェクト直下で
python manage.py startapp myapp
を実行します。

そしてsetting.pyのINSTALLED_APPSにmyappを追加する。

myapp/view.pyを以下のように編集する。
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response

def index(request):
payload = dict()
payload['docomo'] = request.device.is_docomo()
payload['au'] = request.device.is_ezweb()
payload['softbank'] = request.device.is_softbank()
payload['pc'] = request.device.is_nonmobile()
return render_to_response('index.html', payload)


テンプレートも準備します。templates/index.htmlを以下のように編集します。
<html>
<head>
<title>test</title>
</head>
<body>
aaa<br>
docomo:{{docomo}}<br>
au:{{au}}<br>
sofubank:{{softbank}}<br>
pc:{{pc}}<br>
</body>
</html>


urls.pyを以下のように変更する。
urlpatterns = patterns('myapp.views',
(r'^$', 'index'),
)


ここまで準備できたらrunserverでhttp://localhost:8000/にいろんな端末でアクセスしてみることで端末判別が行われていることがわかります。
携帯サイトのテストには、FirefoxのアドオンであるFireMobileSimulatorがむちゃむちゃ便利です。

ちょっとまとめるとDjangoの環境とは別にここまで追加したものは以下のような感じです。
Djangoルート
|-uamobile
|-IPy.py
|-common
| |-__init__.py
| |-middleware.py
|-myapp
| |-views.py
|-templates
|-index.html

パワーフィルム PowerFilm 「USB + AA SOLAR CHARGER」(ソーラー・チャージャー)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク


最近、太陽光で充電するものがいろいろ出ている気がします。
そんな中、こいつはキニナルのです。

充電池を充電するものですが、そのスタイルがいい感じです。

2009-06-20

真空保温調理器 シャトルシェフ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク


余熱で調理しちゃうのです。
じっくりコトコトと同じことが出来る感じなのです。
鍋をバスタオルとかでくるんでも同じことができるのですが、
ぐるぐる巻いたりするのがちょっと面倒だし、巻いたもの鍋が安定しないしのです。
こういう専用の調理器具をあるのを知らなかったので、ちょっとキニナルのです。

ポトフとかおでんならば、朝にざっと食材と調味料をざっと仕込んで一回沸騰させてそのままこれに入れれば夜にはいい感じのものができそうな気がして、料理の手間も省ける予感。

こんな本もあるので、結構いろんなものが作れるのかもしれないです。

2009-06-19

Google App EngineのDjangoでチュートリアルをやってみる

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google App Engine上のDjangoは、使えるデータベースが特殊なため以下のDjangoのマニュアルにあるチュートリアルはそのままではできないようです。
http://djangoproject.jp/doc/ja/1.0/index.html

なのでGoogle App Engine上のDjangoでのチュートリアルが
http://webos-goodies.jp/archives/51337216.html
にあるので、こちらを参考にしたわけですがそのままでは動きませんでした。
私の作成した環境が
Google App EngineでDjangoを利用する
で紹介させていただいたように、Djangoは1.0.2を利用していて更にGoogle App Engine Helperを利用している環境のためだろうと思います。

というわけで私の環境で
http://webos-goodies.jp/archives/51337216.html
で紹介してあるチュートリアルを動くようするための変更点を紹介させていただきます。

まずhelperを入れているので
python manage.py startapp poll
の前まではすでに準備が出来ているので何もしません。

settings.pyのINSTALLED_APPSだけを以下のように変更します:

INSTALLED_APPS = (
'appengine_django',
'poll',
)


url.pyは、以下のように変更します。

from django.conf.urls.defaults import *

urlpatterns = patterns('poll.views',
(r'^$', 'index'),
(r'^create/$', 'create'),
(r'^poll/(?P[^\.^/]+)/$', 'poll_detail'),
(r'^poll/(?P[^\.^/]+)/results/$', 'poll_results'),
)


models.pyは紹介しているままです。

bforms.pyは、以下のようにします。
formsのimportとcleaned_dataの部分を修正しています。
このファイルは、pollディレクトリに作成します。

from django import forms
import models
from google.appengine.ext.db import djangoforms

class PollForm(djangoforms.ModelForm):
class Meta:
model = models.Poll
exclude = ['created_by']

class ChoiceForm(forms.Form):
choice = forms.CharField(max_length = 100)

def __init__(self, poll=None, *args, **kwargs):
self.poll = poll
super(ChoiceForm, self).__init__(*args, **kwargs)

def save(self):
choice = models.Choice(poll = self.poll, choice = self.cleaned_data['choice'])
choice.put()


views.pyは、
from pollango.poll import models
となっているものを
from poll import models
に直すだけです。

後は、http://webos-goodies.jp/archives/51337216.htmlに書いてある通りで動くようになりました。

friendfeedを使ってみることにしてみました

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ブログの更新とSOBARCOへの登録をTwitterに飛ばすためにTwitterfeedとかいくつか使ってみたのですが、SOBARCOの登録がいい感じでTwitterに飛ばないものが多かったのです。
そんなわけでfriendfeedがうまくいくかどうかわからないのですが使ってみることにしました。
設定は、
http://www.ideaxidea.com/archives/2009/06/twitter_via_friendfeed.html
を見れば完璧です!

2009-06-14

Google App EngineでDjangoを利用する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google App Engine for javaを勉強しようかなぁと思っていましたが、気が変わりDjangoの方を勉強してみようと思い立ったのです。

ちなみに開発環境はwindowsです。

Google App Engineには、0.96.1のDnangoが
C:\Program Files\Google\google_appengine\lib\django
にあったりして、そのまま利用できるバージョンはこのバージョンのようですが、
最新は、1.0.2のようです。
なので、この1.0.2が利用できてeclipseで開発できる環境までを構築してみました。

pythonはインストール済みなのが前提です。

最初に、Djangoをインストールします。
http://www.djangoproject.com/download/
から
Django-1.0.2-final.tar.gz
を取得して解凍します。
コマンドプロンプトで解凍したディレクトリの中の
Django-1.0.2-finalのディレクトリに移動して
python setup.py install
を実行します。

更にこのディレクトリ内のdjangoディレクトリをzip圧縮したdjango.zipを作っておきます。

Djangoが正しくインストールできたことを確認するためにコマンドプロンプトで
C:\Python25\Lib\site-packages\django\bin\django-admin.py --version
(PythonがPython25にインストールされている場合です)
を実行して
1.0.2 final
と表示されることを確認します。

Google App EngineをDjangoを利用するには、
Google App Engine Helperを利用すると便利なようなので利用します。
http://code.google.com/p/google-app-engine-django/downloads/detail?name=appengine_helper_for_django-r86.zip&can=2&q=
から
appengine_helper_for_django-r86.zip
を取得して解凍します。

Djangoでは、プロジェクトという単位が一番大きな管理単位のようです。
そのプロジェクトを作成します。
ここではC:\temp\pythonとします。
プロジェクトのためのディレクトリを作成します。
ここでは
test_django
とします。

このディレクトリに
helperのzipを解凍してできたディレクトリの中身をコピーします。
また、このディレクトリを事前に作っておいたzip圧縮して作成したdjango.zipもコピーします。

helperをwindowsで利用するには、
http://sourceforge.net/projects/pywin32
にある
pywin32-212.win32-py2.5.exe
を取得してインストールしておく必要があるようです。
(参考:http://code.google.com/intl/ja/appengine/articles/appengine_helper_for_django.html

helperが動作することを確認します。
コマンドプロンプトでDjangoプロジェクトのディレクトリに移動します。
cd C:\temp\python\test_django
Djangoのサーバーを起動します。
python manage.py runserver
そして
http://localhost:8000
にアクセスしてDjangoのページが表示されることを確認します。
また、
http://localhost:8000/_ah/admin
で、Google App Engineのadminページも利用できることも確認します。

ここまでの内容は、
http://code.google.com/intl/ja/appengine/articles/appengine_helper_for_django.html
http://mars.shehas.net/~tmatsuo/misc/appengine_helper_for_django-ja.html
が参考になります。

次にeclipseで作成したDjangoプロジェクトを開発できるようにします。
私はEclipseは3.3を利用しています。
そしてPythonが開発できるためのPydevはインストール済みのものとします。

eclipseを起動して
「ファイル」-「新規」-「プロジェクト」を選択
「Pydevプロジェクト」を選んで「次へ」
djangoプロジェクトを作成したディレクトリを
プロジェクト・コンテンツのディレクトリーに指定
(ここではC:\temp\python\test_django)
プロジェクト名を作成したdjangoプロジェクトと同じにする
(ここではtest_django)
デフォルトのsrc・・・のチェックをはずす
そして「完了」
これでeclipseでDjangoプロジェクトが見れるようになります。

次に、manage.pyでrunserverが動作するようにします。

作成されたプロジェクト名を右クリック
「プロパティ」を選択
「Pydev」-「PYTHONPATH」-「Project source folder」-「ソースフォルダの追加」
でプロジェクトのディレクトリを指定する
(ここではtest_django)

manage.pyを右クリックして
「実行」-「実行ダイアログを開く」
「Python実行」を右クリックして「新規」を選択
 「プロジェクト」にdjangoプロジェクトを選ぶ(ここではtest_django)
 「メイン・モジュール」にmanage.pyを選ぶ
「引数タブ」をクリックして
 「program argument」にrunserverを記述し
 「作業ディレクトリ」-「その他」を選択してワークスペースをクリックしてプロジェクトのルートを選択する(ここではtest_django)
そして「実行」をクリックするとhttp://localhost:8000で最初に確認したdjangoのページが見れるようになります。

ちなみに
python.exe manage.py startapp polls
のようにプロジェクトの下に新しいファイルをコマンドプロンプトで追加した場合、
eclipse上でプロジェクトを右クリックして「更新」をすると新しく作成されたファイルが見えるようになります。

こんな感じでは、まずは開発環境を作ってみました。


*最初は、0.96.1でやろうとしましたが、helperの最新版では1.0以上が必要で、更に0.96に対応しているr52では、Google App Engineのバージョンが新しいとなんかうまく使えなかったので使うのをやめました。新しいVersionが使えることに越したことはないですしね。

2009-05-31

WinMerge

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
windiffというツールがあるのですが、
windows環境でファイルの差分をディレクトリ単位でも比較できる結構便利なツールです。
linuxを使って入れば、普通にdiffを使っていればいいのですが、なんだかんだでwindowsでも確認したいことがあったりします。

それがさらにちょっと便利になったWinMergeというものを最近使っています。
便利な点としては、3つのファイルを比較できるというのが以外に便利だったりして重宝していたりしているのです。

WinMergeは、以下から取得できます。
http://www.geocities.co.jp/SiliconValley-SanJose/8165/winmerge.html

2009-05-30

Google App Engineの一つのアプリケーションでいろいろ実験する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Google App Engineは、無料で使えるのは10個のアプリケーションなわけです。
ある実験サイトを作ろうと思ったときに、localだけでは実験しきれないことがどうしてもあります。
たとえば、iアプリとかと連携したサイトで実際に端末にダウンロードして実験したいときなどはデプロイするしかありません。

でも、あくまでも実験なので実験のたびに貴重なアプリケーションを浪費するわけにはいかないなぁと思っていたのです。

実験用のものを一つ用意して、その一つを使い回せばいいのですが、上書きすると消えちゃうので、それはそれで困ることもあるかも。と思っていたのです。

ですが、残しておきたければversionを変えておけばよいだけということを
http://www.atmarkit.co.jp/fjava/rensai4/gaej01/gaej01_4.html#08
を見て今更ながらわかってみました。

アクセスできるのは、デフォルト設定されたversionのものだけのようですが、どうせ実験なので実験するときだけversionを変えればよいわけですね。

最近Google App Engineにはjavaも追加されたわけですが、一つのアプリケーションにversionを変えてjavaとpythonは共存できるようです。

なので今更ながら、実験用に一つアプリケーションを増やしてみました。

2009-05-26

たまご型ストラップ・データケーブル

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク


一見、なんの変哲もないストラップに見えますが、実はUSBケーブルなのです。
たまごの中に端子が隠されていたりします。

ちょっと携帯を機種変したので携帯をいろいろ使い倒したいなぁと思っていてPCとの接続もオラオラやりたいと思ったわけです。
そのためにはストラップがケーブルっていいんじゃないと思って探したらあったのでキニナルのです。
私の携帯だと、本当はUSB miniをさらに携帯のコネクタに変換しないといけないのですけどね。

本当はデザイン的には、

の方がキニナルのですが、あんまし評判が・・・

この手の商品はデザインのもっとよいものがあれば、結構売れる気がするのですけどねぇ。

2009-05-20

マスキングテープ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク


なんかを塗るときのはみだし防止のマスキングテープなわけですが、最近おしゃれな感じのマスキングテープも出てきました。
マスキングテープですが、手で簡単に切れるというのがすごく使い勝手がいいのでオススメなのです。
ちょっと仮に壁にはるとかでもオシャレさんなテープであれば、ステキな感じになりますしね。

キッズテント

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク


ダンボール製のちっちゃいテントなのです。
空いたダンボール箱を見かけたら、とりあえず入ってみたくなるお子様などには、とてもキニナルこと間違いなしです。
ダンボール製なので、自分用に色を変えたり絵を描いたりできるので、そんなところもステキな感じです。

2009-05-15

ルミノドット

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
http://www.luminodot.jp/


自分の好きなようにドットのピンをさしていって、それが光るというのがステキでキニナルのです。
光り方もいろいろある感じでウェルカムボードみたいに使ったりするのもステキな気がします。
オシャレな部屋の演出に一役買いそうなものだと思うのです。

歌詞GET

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
http://www2.kget.jp/

タイトルは知っているけど、歌詞はうる覚え。そんな時に歌詞を知りたい時に役立つサイトです。
このサイトでは、番組名やフレーズの一部からでも曲を検索することもできるのです。

そして歌詞は表示されますが著作権上の問題でコピーや保存はできませんので、必要ならばこのサイトを見ながら書き残すしかないかもしれません。
印刷もできなそうですしね。
どうしても楽に残したければスクリーンショットを取っておくことで多少は対応できるかもしれませんけど完璧には無理ですねぇ。

なのでちょっと気になる時に役立つオススメサイトという感じです。

家庭常備菓子

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
http://www.orionstar.co.jp/onrainsyapingu.html

オリオンという会社が出しているちょっと遊び心のあるお菓子の詰め合わせセットです。
オリオンという会社は、一度はどっかで見たことがあるような気がするココアシガレットを作っている会社でもあります。
本当に家に常備することはないと思うけど、人が集まる時にでも一つ買っておくと楽しんでもらえそうでキニナルのです。

ホワイトボードカレンダー

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
http://www.1101.com/store/calendar/index.html


ほぼ日刊イトイ新聞で紹介しているホワイトボードカレンダーです。
壁掛けカレンダーが、ホワイトボードと同じ感じて使えるというものです。
これは、何かと便利そうでキニナルのです。
カレンダーに書き込みをしたりはしているのだけど、用事だけ書き込んでいるだけだと結構覚えてしまってあんまり見なくなっているような気がします。
でも、ホワイトボードならば、消すこともできるのでメッセージボードとしても使えるのが便利な気がします。
ここで紹介しているのは、ほぼ日で紹介しているホワイトボードカレンダーではないし、最初に気になったものとはちょっと違うのだけど、カレンダーとホワイトボードとウォールポケットが一緒になってるのでこれはこれで便利そうだな~~。

ActionScriptでマウスがのると大きくなるフキダシを作る

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
SOBARCO用に作ったブログパーツでは、小さな吹き出し部分にマウスを持ってくると大きくなってコメントが見れるようにしてみました。
まず吹き出しをActionScriptで作る方法は、

にきっちり書いてあったので、そちらを参考にさせていただきました。

これを改良して、マウスが来ると大きくなるような修正をしてみました。
マウス動作の部分を中心に抜粋した感じですが以下のような感じです。

package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import caurina.transitions.Tweener;

public dynamic class Fukidashi extends Sprite {
public var max_width:uint;
private var max_height:uint;
private var min_width:uint;
private var min_height:uint;
private var start_x:uint;
private var start_y:uint;
private var end_x:uint;
private var end_y:uint;
private var set_pos:Boolean = false;
private var zoom_on:Boolean = false;

public function Fukidashi(fillColor:Number = 0xEDE5D7, max_w:uint = 70, max_h:uint = 35, min_w:uint = 18, min_h:uint = 9) {
max_width = max_w;
max_height = max_h;
min_width = min_w;
min_height = min_h;
var canvas:Sprite = new Sprite();
var fukidashi:Sprite = createFukidashi(canvas, fillColor);
//回転の中心が左下になるように移動する
addChild(fukidashi);
max_width = fukidashi.width;
max_height = fukidashi.height;
buttonMode = true;
set_minisize();
addEventListener(MouseEvent.ROLL_OVER, overHandler);
}

private function set_minisize() : void {
width = min_width;
height = min_height;
}

public function set_position(sx:uint, sy:uint, ex:uint, ey:uint) : void {
start_x = sx;
start_y = sy;
end_x = ex;
end_y = ey;
set_pos = true;
}

public function overHandler(event:Event):void {
if (set_pos) {
zoom_on = true;
Tweener.addTween(this, {x:end_x,y:end_y,width:max_width,height:max_height,time:0.1,transition:"easeOutBack",onComplete:tweenEnd} );
} else {
width = max_width;
height = max_height;
}
}

public function outHandler(event:Event):void {
if (set_pos) {
zoom_on = false;
Tweener.addTween(this, {x:start_x,y:start_y,width:min_width,height:min_height,time:0.2,transition:"easeOutBack",onComplete:tweenEnd} );
} else {
width = min_width;
height = min_height;
}
}

public function tweenEnd() :void {
if (zoom_on) {
removeEventListener(MouseEvent.ROLL_OVER, overHandler);
addEventListener(MouseEvent.ROLL_OUT, outHandler);
} else {
removeEventListener(MouseEvent.ROLL_OUT, outHandler);
addEventListener(MouseEvent.ROLL_OVER, overHandler);
}
}

//フィールドを囲む吹き出しを作る
private function createFukidashi(canvas:Sprite, fillColor:Number) :Sprite {
var fldW:uint = max_width;
var fldH:uint = max_height;
//吹き出しを描く;
var w:uint = Math.ceil(fldW * 1.1);
var h:uint = Math.ceil(fldH * 1.4);
canvas.graphics.lineStyle(1, fillColor);
canvas.graphics.beginFill(fillColor);
canvas.graphics.drawRoundRect(0, 0, w, h,10,10);
canvas.graphics.endFill();
canvas.graphics.beginFill(fillColor);
canvas.graphics.moveTo(w * 0.15, h * 1.3);
canvas.graphics.lineTo(w * 0.35, h);
canvas.graphics.lineTo(w * 0.25, h * 0.5);
canvas.graphics.endFill();
return canvas;
}

}

}

本来ならば、フキダシにメッセージを入れたり、フキダシに輪郭線があったりするのですが、そこまでいれるとあまりにも本の内容そのままなので、そこは抜粋しているので気になるときは本を見てみてください。

あと、なぜか作ったブログパーツではマウスがフキダシの左側にあるとイベントをうまく拾ってくれなかったり、ROLL_OVERのイベントが連続で発生したりとかちょっとおかしな感じになっているのですが、よくわからなかったのでそのままにしてみました。

2009-05-12

MOUSE_OVER,ROLL_OVERの違い

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ActionScriptではいろんなイベントをいい感じで利用できるようになるのが重要な感じですが、そのなかでMouseEventの
MOUSE_OVER
ROLL_OVER
の違いがわかりにくいですが
http://blog.flair4.jp/2007/12/-as30-mouse-overroll-over.html
がわかりやすく説明しています。

一言で違いをいうとオブジェクトが重なっているときの振る舞いの違いです。
なので重なってなければどっちでも同じだと思います。

flashdevelopではtweenは使えない?

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
tweenとは、拡大とか移動とかシンプルなflashのアニメーションを簡単に実装するためのオブジェクトです。

利用する際には、
import fl.transitions.Tween;
とするらしいのですが、
flashdevelopを利用している場合は、importできないようです。

設定が悪いのか、TweenはCS3とか製品版で利用できるものということなのか
ちょっとわからないのですが、tweenが使えなくても代わりに
tweener
というものが使えます。

http://d.hatena.ne.jp/flashrod/20070527
が参考になります。

tweenerのzipファイルを取得したら、解凍してできた
caurina
というディレクトリをActionScriptのメインとなるスクリプトを置いているディレクトリに置くことで利用できます。

ブログパーツでは、吹き出しの上にマウスを置くと大きくなるアニメーションで利用してみました。

TextField上のカーソル形状をI型でなくす

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
flash上の普通にTextFieldをaddChildした場合には、そのTextFiled上にマウスがきたらテキストが選択できるようにI型のカーソルになります。
たんなる画面上の表示要素にしたい場合は、他の部分と同じカーソルになってもらいのです。
そんなときは、TextFieldのselectableをfalseにすることで変更できます。

ちなみにクリックするときのようにカーソルを指形状にしたいときは、指形状にしたいSpriteオブジェクトのbuttonModeをtrueにすればできます。

flashの画面上の要素に影をつける

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ActionScriptで画面に表示するオブジェクトになんらかの効果をつけるには、
.filters
メソッドに適用するフィルター効果のオブジェクトをセットするといいようです。
オブジェクトに影をつける効果のオブジェクトは、
DropShadowFilter
です。
使い方は、

import flash.filters.DropShadowFilter;

・・・

var filter : DropShadowFilter = new DropShadowFilter();
filter.distance = 2;
var box : Sprite = new Sprite();
box.graphics.drawRect(0, 0, 50, 50);
box.filters = [filter];

みたいな感じです。
DropShadowFilterは、影をつける以外にdistanceを0に設定することでオブジェクトの輪郭線を描くことにも使えます。
四角とか丸に対して輪郭線をわざわざDropShadowFilterを使ってつけることはないと思いますが、Sprite上にいろんな図形を組み合わせたちょっと複雑なgraphicに対して輪郭線をつけるには便利な感じです。

ActionScriptでwebページを開く

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
flashコンテンツでどっかをクリックしたら関連ページを開くとかを実装する時に使うのは、
navigateToURL
という関数で、
navigateToURL(new URLRequest(urlPath));
みたいな感じで使います。

AmazonのProduct Advertising APIの署名

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
8月からamazonのWEBサービスを使うためにはリクエストに署名を追加する必要があるそうです。

pythonでこれに対応するコードは、
http://mudaimemo.blogspot.com/2009/05/amazon-product-advertising-apipython.html
を見れば完璧です。Google App Engineでもそのまま利用できます。

ちなみにperlで利用するには、
http://chalow.net/2009-05-09-1.html
が参考になります。

javaの場合は、amazonのサンプルがそのまま使えます。
http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?rest-signature.html

ついでにrubyも調べてみましたが
http://postcard.blog.ocn.ne.jp/itazura/2009/05/product_adverti.html
が参考になりそうです。

おまけにphpは
http://d.hatena.ne.jp/p4life/20090510/1241954889
が参考になりそうです。

発表されてから数日なのに皆様対応がはやいです。

2009-05-10

画像の読み込み完了を検知する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
xmlなどを読み込む場合には、URLLoaderオブジェクトを使って読み込み完了の検知は、
URLLoaderオブジェクト直下のaddEventListenerでEvent.COMPLETEを以下のような感じでセットすればよいわけですが、

var myLoader:URLLoader = new URLLoader();
myLoader.addEventListener(Event.COMPLETE, loadCompleteHandler);

これと同じノリで、web上の画像を読み込もうとしたわけなのですが、読み込み完了が検知できなかったのです。
調べたところimageの場合は、
LoaderオブジェクトのcontentLoaderInfoのaddEventListenerにイベントを登録する必要がありました。
以下のような感じです。

var myImgLoader:Loader = new Loader();
myImgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHandler);

ちょっとややこしかったのでメモです。

TextFieldのサイズにあわせて表示テキストを途中で区切る

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
テキストフィールド1行ではみ出した場合の末尾に「…」をつけたい場合の例として
http://level0.kayac.com/2008/05/textfield_sample.php
が参考になりまして、こちらを改良して
幅と高さのテキストフィールドを用意して、このテキストフィールドをはみだす場合は、末尾に「…」をつけてみました。

var sample_tf : TextField = new TextField();
sample_tf.width = 100;
sample_tf.autoSize = TextFieldAutoSize.LEFT;
sample_tf.selectable = false;
sample_tf.multiline = sample.wordWrap = true;
sample_tf.text = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわ";
var need_dot:Boolean = false;
var max_height = 30;
while ( sample_tf.height > max_height ) {
sample_tf.text = sample_tf.text.slice( 0, sample_tf.text.length -1 );
need_dot = true;
}
if (need_dot) {
sample_tf.text = sample_tf.text.slice( 0, sample_tf.text.length -1 ) + "…";
//削除した文字がたまたま半角文字だと「…」をつけると
//heightをオーバーする可能性があるので念のためもう一度チェックを入れる
if (sample_tf.height > max_height) {
sample_tf.text = sample_tf.text.slice( 0, sample_tf.text.length -2 ) + "…";
}
}

ブログパーツの帯のタイトル部分と吹き出しの部分でこれを利用しています。