2010年02月06日
遅延なう
Google App Engine の勉強をかねて、電車の遅延情報を提供する「遅延なう」というサービスを作ってみました。
ついでに mixi アプリの勉強もかねて、「mixi アプリ版の遅延なう」も作ってみました。やってることは単純で、 twitter API で拾ってきた情報を一度 GAE 上の datastore や memcached で保持して、 mixi からのリクエストがきた時に XML として吐き出しています。
ついでに iPhone アプリ版も作ろうと思ったけど、そこまでのモチベーションは無かったので、無難に Web アプリ版を作ってみました。 safari からホーム画面にブックマークするとそれっぽく使えます。
2010年01月30日
THIS IS IT
| マイケル・ジャクソン THIS IS IT(特製ブックレット付き) [Blu-ray] | |
![]() | おすすめ平均 ![]() 演奏について 宝物を探しに。 愛と情熱に満ちたパフォーマーの生き様に感服 全ての人に広めたい なんと言えばいいかわかりません!Amazonで詳しく見る by G-Tools |
マイケル・ジャクソン世代ではないので奇行が目立つ人程度にしか知らなかったけど、アーティストとしてはプロなんだなぁーと再認識した。
コンサートを作り上げる過程が面白いです。
2010年01月24日
また GALA 湯沢
今シーズン3往復目の越後湯沢です。 かなり雪が降ってて寒かったけど、そのぶん転んでも痛くないから気にせず豪快に転がれた。
たしかに昔(90年前後)はリフトに長蛇の列ができてたイメージがある。 今は比較的スムーズに乗れるから、利用客からの視点としてはスキー人口が減った方が快適ではある。。。
やっぱり料金の問題で、東京周辺から新潟/長野のゲレンデまで行くためには、交通費だけでけっこうかかるし、現地についてもリフト券やゲレンデ内での食事はかなり高いですよね。さらに道具をレンタルして・・・とかなると本当に高い。
また、荷物とか考えると車で行った方が便利っぽいレジャーではありますが、20代の人達で車離れが起きているわけで、このあたりも影響しているんでしょうね。
昨日日帰りで行った Gala 湯沢は新幹線でのアクセス性も良いし、レンタル品の WEB からの事前予約ができるから料金支払いなどなくスムーズ(これあるのに現地で申し込もうとする人の行列ができてましたが・・・、周知が足りない)、JR運営だけあってゲレンデ内でも Suica が使えるので会計がスムーズ、とゲレンデの中では色々頑張ってる方だと思いました。
新しいお客さんを呼び込むのも大事だけど、既存のスキー客の不満点ももっと改善してほしい。 食事時にレストランが非常に混んでるので、混み具合をリアルタイムで携帯に配信するであれ、そこから携帯で予約するであれ、90年代にはできなかったゲレンデ内の個人個人に対して情報をアウトプットできるようになったのだから、昔のシステムのままではなく、もう少しやれることあるんじゃないのかなぁーと思ったしだいです。
2010年01月12日
セントレジャー舞子
いつもの齊藤研の人達とセントレジャー舞子スキー場に行ってきた。3日間もあったので、比較ダラダラと滑ってました。
先日行ったラフォーレ修善寺、Gala湯沢の駅、今回の宿、あたりはどこ行っても iPhone が繋がらない。これだけ繋がらないと、携帯電話としては全然使い物になりませんね。個人的には電話としては全く使ってないから構わないけど、パケット通信さえできなくなるのは不便極まりないです。電話状況の改善希望。
2009年12月28日
Google App Engine(GAE) で twitter API を使う
Web2.0 的な流行言葉になりつつ(なった?)ある、クラウド・コンピューティングを試してみました。有名どころだと Amazon or Google なわけですが、 Amazon は有料なので無料の GAE こと Google App Engine を使ってみることにした。
Google App Engine での開発はとても簡単で、 SDK をダウンロードするとローカルでの開発環境(ローカルサーバ)が付いてくるから、 Python もしくは Java でコードを書き、ローカルサーバで動作確認、ちゃんと動いたら Google のサーバに deploy するだけです。 deploy も GUI のボタン一発でできちゃうので簡単です。苦労するのは日本ではあまりメジャーでない Python の作法の初歩を覚えることくらいかな。
お試しで作ったのがこれです。
Python で twitter の Search API を叩いて返ってきた Atom/XML を parse して template に流し込んでるだけ。
# ソース
Python の作法はまったく分かりませんが、こんな感じで動いてます。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright 2007 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import wsgiref.handlers
import urllib
import os
from google.appengine.api import urlfetch
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
import xml.etree.ElementTree as etree
class MainHandler(webapp.RequestHandler):
def get(self):
self.response.out.write('Hello world!')
class TwitterSearch(webapp.RequestHandler):
def get(self):
keyword = u"鳩山".encode('utf-8');
url = 'http://search.twitter.com/search.atom?'
query = [
('q', keyword),
]
form_data = urllib.urlencode(query)
result = urlfetch.fetch( url+form_data+'&lang=ja' )
#self.response.out.write( url+ form_data )
if result.status_code == 200:
xml = etree.fromstring( result.content )
params = []
for entries in xml.getiterator("{http://www.w3.org/2005/Atom}entry"):
#self.response.out.write( entries.tag )
param = { "img" : entries.findall("{http://www.w3.org/2005/Atom}link")[1].get("href"),
"name" : entries.find(".//{http://www.w3.org/2005/Atom}author/{http://www.w3.org/2005/Atom}name").text,
"content" : entries.find("{http://www.w3.org/2005/Atom}content").text }
params.append( param )
#self.response.out.write( "<img src=" + entries.findall("{http://www.w3.org/2005/Atom}link")[1].get("href") + " />" )
#self.response.out.write( entries.find(".//{http://www.w3.org/2005/Atom}author/{http://www.w3.org/2005/Atom}name").text )
#self.response.out.write( entries.find("{http://www.w3.org/2005/Atom}content").text )
#self.response.out.write( '<br /><br />' )
template_values = {
'params': params,
}
path = os.path.join(os.path.dirname(__file__), 'tmpl/twitter_search.html')
self.response.out.write(template.render(path, template_values))
def main():
application = webapp.WSGIApplication([('/', MainHandler),
('/twitter_search', TwitterSearch)],
debug=True)
wsgiref.handlers.CGIHandler().run(application)
if __name__ == '__main__':
main()
xml.etree.ElementTree で XML を parse すると、名前空間を指定して tag を指定しなければならなくてメンドクサい。回避策はわからない。。。
param = { "img" : entries.findall("{http://www.w3.org/2005/Atom}link")[1].get("href"),
"name" : entries.find(".//{http://www.w3.org/2005/Atom}author/{http://www.w3.org/2005/Atom}name").text,
"content" : entries.find("{http://www.w3.org/2005/Atom}content").text }
| みんなのPython 改訂版 | |
![]() | おすすめ平均 ![]() 消去法的定番書 知識の整理と Python3への準備に役立つ 初級者向け、ただし...Amazonで詳しく見る by G-Tools |
# つまったところ
Error: Server Error The server encountered an error and could not complete your request. If the problem persists, please report your problem and mention this error message and the query that caused it.
ローカル環境ではちゃんと動くのに Google のサーバで実行するとこんなエラーログが出るところで2日間もつまったんだけど、
#!/usr/bin/env python # -*- coding: utf-8 -*-
本番サーバ上では二行目の文字コード指定が無いとソースコード中の日本語を扱えないようです。
# Google App Engine の感想
簡単なアプリケーションを書いて Web 上で動かしたいなぁーってときには最適なプラットフォームですね。 Python はインデントでブロックを指定する言語仕様が最初とっつきにくかった。それと、文字コード周りの処理がめんどうな印象。
2009年12月22日
FOMA補助充電アダプタ01
ドコモには、2年間同じ携帯を使い続けると新しい電池を貰えるというサービスがあるので、ドコモショップに行ってみた。
そしたら、電池以外にも「FOMA補助充電アダプタ01」という物も選べるとのことで、電子機器好きとしては迷わず珍しめな補助充電アダプタ01を選択してみました。外で充電することなんてないので、使うことはほぼ無いと思いますが。。。
物は「Powered by eneloop」なので、三洋製です。
| 【ドコモ純正商品】FOMA補助充電アダプタ01 | |
![]() | Amazonで詳しく見る by G-Tools |
2009年12月17日
FF XIII
ひさびさにゲームを買ってみました。FF13です。
やはりハイビジョンになると映像がすごいですね。シリーズでは各ハード一作目の FF VII, X が好きなので、PS3 での一作目である XIII にも期待しています。
| ファイナルファンタジーXIII | |
![]() | おすすめ平均 ![]() 確かに… ゲームもここまできたか! これ本当にゲームなの? 期待し過ぎの反動? ファンタジー過ぎてユーザー置いてきぼり。製作者だけは楽しい感じ。Amazonで詳しく見る by G-Tools |
2009年12月13日
2009年12月06日
ハゲタカ, あなたは私の婿になる
サンフランシスコのとき機内で見た映画。
| 映画 ハゲタカ(2枚組) [Blu-ray] | |
![]() | おすすめ平均 ![]() 経済ドラマの傑作です 遊び心があったら傑作にAmazonで詳しく見る by G-Tools |
終始真剣すぎて、見てて疲れた。内容は面白いけど。
| The Proposal [Blu-ray] (邦題: あなたは私の婿になる) | |
![]() | Sandra Bullock Average Review ![]() Funny & Entertaining Awesome Movie Formula, yet the actors and dialog make the movie Missing something Middle of the road RomComSee details at Amazon by G-Tools |
ハゲタカとは真逆な内容。こちらはバカバカしさが面白い。




![マイケル・ジャクソン THIS IS IT(特製ブックレット付き) [Blu-ray]](http://ecx.images-amazon.com/images/I/51BQ2Jru-5L._SL160_.jpg)







消去法的定番書




これ本当にゲームなの?
ファンタジー過ぎてユーザー置いてきぼり。製作者だけは楽しい感じ。


![映画 ハゲタカ(2枚組) [Blu-ray]](http://ecx.images-amazon.com/images/I/51xl4bynFjL._SL160_.jpg)
![The Proposal [Blu-ray]](http://ecx.images-amazon.com/images/I/51XNUacrZgL._SL160_.jpg)





最近の記事/コメント