Emacsテクニックバイブル

一昨日、新宿のヨドバシマルチメディア館に探しに行ったんだけど、まだ店頭には並んでなかった。なので、アマゾンでポチっといた。

FlaskでJSON出力

jsonifyっていう関数が用意されているので楽ちん

@app.route('/json/tags')
def show_tags():
    tags = db_session.query(Tag).all()
    return jsonify(tags = [tag.name for tag in tags if len(tag.entries) > 0])

ProductName JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス
Douglas Crockford
オライリージャパン / ¥ 1,890 ()
在庫あり。

かき氷

最近娘が毎日かき氷を食べているらしい。

1280919481 1280919487

僕は変な色のシロップが好きじゃないので、フルーツカルピスかけて食べる派。

ProductName パール金属 クールズしろくまくん かき氷器 D-1371

パール金属 / ¥ 4,200 ()
在庫あり。

「ポスト・モバイル—ITとヒトの未来図」と「AR-拡張現実」

両方ともおもしろかったけど、夢があるのはARかな。amazonであわせて買うと送料無料になるのでちょうどいい。

ProductName ポスト・モバイル―ITとヒトの未来図 (新潮新書)
岡嶋 裕史
新潮社 / ¥ 714 ()
在庫あり。

環境下するコンピュータとヒトの関わり合い。生活や政治などにどう入り込んでくるかというあたりの話。

  • 固定電話は機能的には携帯電話に大きく遅れをとっており、普及率の長期減少傾向に歯止めがかからない
  • 移動が贅沢な行為になる日がくるか?
    • 恋愛も結婚も仮想のほうが低コスト?
  • 顧客満足度を向上させる仕掛けとは、換言すれば、顧客の属性を知ることにつきる。

ProductName AR-拡張現実 (マイコミ新書)
小林 啓倫
毎日コミュニケーションズ / ¥ 819 ()
在庫あり。

拡張現実について。カメラに移した紙の上にキューブとか人形が表示される程度の認識だったけど、もっと広義に捉えていて、生活にどう関わってくるのかとか。本書を読んで現実の拡張なんだなと理解した。かなり面白かった。現状は眼球の外側で上書きしてるけど、その間の信号に干渉できると真の拡張現実だよなとか。

  • コンテンツの階層
    • 自社提供型
    • プラットフォーム型
    • ソーシャルメディア型
  • 空間の階層
  • Wikitude
    • Wikipediaのコンテンツを現実世界に重ねあわせる
  • Recognizer
    • 顔とSNSのIDを結びつける
  • KAMRA
    • オープンフォーマットモバイルARブラウザ

電脳コイルは名作

ProductName 電脳コイル (1) 通常版 [DVD]

バンダイビジュアル / ¥ 2,940 (2007-09-25)
在庫あり。

Jack

清水町のエスポットの向かいのJackにいってきた。

1280747926

期間限定の冷やし鶏梅しそが美味。ゲル状のスープが麺に絡んでうまい。

1280747933

とんこつラーメンはまろやかクリーミーで、塩分控えめな感じでうまいのはうまいんだけど、途中で食べ飽きた。ストレートすぎるっていうか奥行きが。カクテキとかなんかトッピングでもあればまた違うのかもしれんけど。

豚まんまもそんな感じで、かつおぶしと豚一直線的な。

1280747920 1280747914

結論: 期間限定美味かった。

佳肴 季凛(かこう きりん)でランチ

以前から気になっていた季凛さんへお邪魔。

1279794028

鱧の子の煮こごりうまい。ランチなので酒なしなのが惜しい。お鍋はほんのりターメリックの色が付いていてじゅんさいとか麸とか精進っぽい感じ。

1279794040 1279794066

鮪にマスタードって合うのね、鮪は美味しかったが、鯖の西京焼きが旨すぎ。ひじき入りご飯(押麦入り)は妻の分を息子がほとんど食べてしまった。

1279794047 1279794054

水菓子はコーヒー風味のコンニャク。コンニャクだけにゼリーよりも歯ごたえがあって、不思議な感じ。まぁ、息子にほとんど分け与えましたが。

1279794034

という感じで、かなり満足の内容だった。が気になる。

2010.08.02

料理の内容の間違いを訂正した。ご指摘ありがとうございました。

FlaskでRSSを出力する

make_responseでresponseオブジェクトを作って、Content-Typeを設定する。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    response = app.make_response(rss)
    response.headers['Content-Type'] = 'application/rss+xml'
    return response

if __name__ == "__main__":
    app.run()

RSSの生成には、ElementTreeを使うかエキスパートPythonプログラミングにあるようにテンプレートを使う。

ProductName エキスパートPythonプログラミング
Tarek Ziade
アスキー・メディアワークス / ¥ 3,780 ()
在庫あり。

なごり雪というざる豆腐

親戚から送られてきた。この豆腐はでかい、そして美味い。

1280662836 1280662842

一緒に送られてきた蕎麦。細い!

1280662830

口福というやつですな。

今日の畑(100801)

夕方でかけていって、トマトとミニトマトをほとんど処分した。今収穫できる野菜はゴーヤと甘長美人くらいしかないなぁ(あと紫蘇)。モロヘイヤ位は植えておけばよかった。

1280658057 1280658070

さっぱりしたが、この後に何を植えるかは決まっていない。とりあえず暇をみつけて 堆肥入れて耕して石灰撒いておこう。

オクラも実がなってきてた。

1280658051 1280658064

SQLAlchemyのmany-to-manyの検索のやりかたがわからない

なぜかFlaskではなくSQLAlchemyではまる

よくあるタグとエントリーの多対多のテーブル。

entry_tags = Table('entry_tags', Base.metadata,
    Column('entry_id', Integer, ForeignKey('entries.id')),
    Column('tag_id', Integer, ForeignKey('tags.id'))
)

class Tag(Base):
    __tablename__ = 'tags'
    id      = Column(Integer, primary_key=True)
    name    = Column(String(128), unique=True)
    entries = relation("Entry", secondary=entry_tags)

class Entry(Base):
    __tablename__    = 'entries'
    id               = Column(Integer, primary_key=True)
    title            = Column(String(128), unique=True)
    content          = Column(Text())
    pubdate          = Column(DateTime)
    tags             = relation("Tag", secondary=entry_tags)

このとき、タグをもつエントリを検索したい。単にエントリ最新10件をとってきたい場合には

entries = db_session.query(Entry).order_by(Entry.pubdate.desc()).limit(10)

でいい。

続いて、あるタグがふられているエントリの最新10件をとってきたい場合にどう書いていいか悩んだ挙句、結局わからなかったのでINを使うことにした。

tag_ids = [t.id for t in db_session.query(Tag).filter(Tag.name == tagname).first().entries]
entries = db_session.query(Entry).filter(Entry.id.in_(tag_ids)).order_by(Entry.pubdate.desc()).limit(10)

filterかfilter_byに何入れればいいんだろう?

ProductName Essential Sqlalchemy
Rick Copeland
Oreilly & Associates Inc / ¥ 3,370 ()
通常1~3週間以内に発送

2010.08.01 追記

relationでorder_byを設定すればよかった。

entries = relation("Entry", secondary=entry_tags, order_by=Entry.pubdate.desc)

でもって

entries = db_session.query(Tag).filter(Tag.name == tagname).first().entries

とすれば、あるタグを含むエントリを日付の最近の順に取ってくる。