はじめて屋台やカフェ以外での食事。もっと早く入っておけばよかった。ドイツ料理好きかも。
やたらと Berliner Weisse を飲んでいますが、甘いお酒ですので念のため。
これでベルリンはおしまいです。明日は帰国のための移動だけ。
はじめて屋台やカフェ以外での食事。もっと早く入っておけばよかった。ドイツ料理好きかも。
やたらと Berliner Weisse を飲んでいますが、甘いお酒ですので念のため。
これでベルリンはおしまいです。明日は帰国のための移動だけ。
カフェ
ドイツ経験の豊富な知人におすすめのカフェを教えてもらったので、行ってきました。メニューにミートボールと書いてあったのを注文したら、ハンバーグ的なものがでてきました。でけぇよ。飲み物はホットチョコレートにベイリーズを混ぜたもの。寒かったので暖まりました。
ビール
この日は、昨日とは別のバーに行きました。硬派な女性と、あきらかにこき使われている男性店員がいるお店です。女性のツンデレっぷりに萌えです。デレを見せてくれませんが。
先週、職場での最終出社日でしたので、空いている時間を使ってドイツのベルリンに来ています。およそ旅行だとか観光だとかをしたことがないので、どうしていいか分からず、でもとりあえずヨーロッパに行ってみたいなぁという、どうしようもない動機で来ています。
搭乗口でぴこーんぴこーん
成田→フランクフルト→ベルリン、という飛行機でした。成田からフランクフルトの11時間はだるいなぁと思っていたのです。で成田での搭乗口で改札機みたいなのに搭乗券を入れてもらいますよね。あそこで、ぴこーんぴこーんとアラームが鳴るわけですよ。
ちょっとだけ英語が分かるのに、敢えてアメリカを避けている理由は、いつも出入国で別室に連れて行かれるからなのです。なんかとなりで「私が帰らないと、うちの小さい子たちはどうなるの」とかって泣き崩れているおばちゃんの横で、「で、最後にアメリカに来たのはいつだって?」とかの質問をされるのが、もう面倒で面倒で。フライト逃しそうになるし。
なのに、搭乗口でぴこーんぴこーんですよ。泣きそうになりながら係の人と話してみると、満席なのでビジネスクラスの席を用意した、とのこと。やったー、わーい。というわけで快適な11時間でした。
ちなみに国際線に乗るときには、必ず襟付きシャツ、ジャケット、革靴着用です。これが利いているのかどうか、まったく検証していませんが、何度かビジネスクラスに乗ってます。しつこいようですが、検証してません。
ビールっす
この旅行はドイツに行くこと自体が目的なので、現地でのプランはまったくありません。とりあえずビール飲んでおこうくらいなもんです。というわけで、到着したのが夕方で、ぶらぶらしつつ適当に屋台でソーセージ食べたあとは、ビールのお店へ。
Berliner Weisse なるビールのカクテルみたいなのと、Berliner Kindle なる苦いのをいただきました。Berliner Weisse のほうが甘いシロップみたいなのと混ぜるので、Weissebier 特有の臭いに気づかずに飲めました。
前回のつづき。
開発サーバと本番サーバの設定
IBM developerWorks の記事のリスト9にあるように、settings.py を開発サーバと本番サーバを if 文で分けておきます。
import socket
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if socket.gethostname().startswith('mylocalhost'):
DEBUG = True
DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'data.sqlite'
...
else:
DEBUG = FALSE
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'myappdata'
DATABSEE_USER = 'myname'
DATABASE_PASSWORD = 'mypassword'
...
のように書きます。私の場合は、データベースの設定くらいしか違いはありません。
デプロイするスクリプト
(生の Django ではなく)Goole App Engine のいいところは、開発コードをそのままデプロイするツールがついていることです。で、まあ、あそこまでデキはよくなくていいので、似たようなコードが欲しいなぁと思って、簡単なシェルスクリプトを書きました。
#!/bin/bash
HOST=$1
IDENTITY_FILE="/path/to/key.pem"
SRC=`dirname $(dirname $0)`
DST=root@${HOST}:/srv/django
if [ $# -eq 1 ]
then
rsync -auvz --delete --exclude "tools" --exclude ".hg" --exclude "*~" --exclude ".DS_Store" -e "ssh -i ${IDENTITY_FILE}" ${SRC} ${DST}
ssh -i $IDENTITY_FILE root@${HOST} apachectl restart
else
echo $0 host
fi
これを Django project のディレクトリと兄弟になるディレクトリ tools の中に、deploy という名前で保存しておきます。
ですね。で path/to ディレクトリ内で、tools/deploy hostname で呼び出します。
まず rsync を使って、サーバ側のファイルを更新します。手元のPCは Mac なので .DS_Store ファイルを除外したり、mercurial を使っているので .hg フォルダを除外したり、Emacs を使っているのでバックアップファイル *~ を除外したりしています。
続いて本番サーバのアパッチを再起動するところまで、deploy スクリプトに任せています。
ホスト名を明示的に入力するようにしているのは、きっと将来、テスト用にサーバを作るだろうなぁと考えてのことです。EC2 を使っているので、バージョンアップをする前に、まったく同じ環境のインスタンスを立ち上げてテストするのに、ほとんどお金がかからないので。
今はまだ固定IPを取っていないのですが、人に見せられるようになったら、ドメイン取って公開する予定です。