2008年4月29日火曜日
Google App Engine / 管理コンソール
Docs > The Dev Web Server
以下の URL で開発環境の Development Console にアクセスし、datastore の内容を確認することができる。
http://localhost:8080/_ah/admin
http://localhost:8080/_ah/admin/datastore?kind=Greeting
このプログラムのソース
c:/Program Files/Google/google_appengine/google/appengine/ext/admin/__init__.py
2008年4月26日土曜日
Google App Engine / django template カスタムタグ
django のテンプレートをカスタマイズすることができた。
(django template にカスタム filter を追加することができた)
-- templatefilters.py
#!-*- coding:utf-8 -*-
# import the webapp module
from google.appengine.ext import webapp
import datetime
# get registry, we need it to register our filter later.
register = webapp.template.create_template_register()
def truncate(value,maxsize,stopper = '...'):
""" truncates a string to a given maximum
size and appends the stopper if needed """
stoplen = len(stopper)
if len(value) > maxsize and maxsize > stoplen:
return value[:(maxsize-stoplen)] + stopper
else:
return value[:maxsize]
def timeJST (value):
# return value - datetime.timedelta(hours=18)
return value + datetime.timedelta(hours=9)
# SDK102 にしたら動作がかわった???
register.filter(truncate)
register.filter(timeJST)
-- index.html
{{ greeting.date|timeJST|date:"Y/m/d H:i:s" }}
-- helloworld.py
webapp.template.register_template_library( 'templatefilters')
参照元
- Django: Custom tag libraries?
http://groups.google.com/group/google-appengine/browse_thread/thread/41ddd1a0cce0a81d?hl=en - Using custom django template helpers with Google APP Engine
http://daily.profeth.de/2008/04/using-custom-django-template-helpers.html
2008年4月25日金曜日
Google App Engine / flickr API 表示サイズ
http://www.flickr.com/services/api/ で検索結果の画像の表示のサイズの変更について、テストした結果をメモしておく。
テンプレートの変更による。 ( 送信するパラメータは変更なし)
検索キーワードは "Michaelangelo Moses" を設定
- s small square 75x75
- t thumbnail, 100 on longest side
- m small, 240 on longest side
- - medium, 500 on longest side
- b large, 1024 on longest side (only exists for very large original images)
- o original image, either a jpg, gif or png, depending on source format
http://www.flickr.com/services/api/misc.urls.html にまとめられていました。
http://dflatt.org/eric/2006/12/flickr_api.html こちらもわかりやすい。
/sizes/
_m.jpg
- 拡張子なし。
- これが一番大きな検索結果が表示された。
/sizes/l/
_b.jpg
- _b.jpg だと一部の画像が表示されない
- UNAVAILABLE の表示であっても、クリックした先の flickr のサイトの画像は表示される。
/sizes/sq/
_s.jpg
/sizes/t/
_t.jpg
/sizes/o/
_o.jpg
- UNAVAILABLE の表示
- クリック : flickr のサイトのオリジナルサイズの画像が表示される。
2008年4月24日木曜日
Google App Engine / url fetch API
先日のサンプルプログラムはあきらめ URL Fetch API用の別の以下のプログラム
Google App EngineでXMLをパースする方法(python版WebService::Simpleを使ってflickr画像検索を作る) のサンプルは動作させることができた。
http://localhost:8080/flickr/
Flickr の API Key も http://www.flickr.com/services/から取得
いろいろな API http://www.flickr.com/services/api/ が用意
されている。
プロジェクトフォルダ以下のファイルリスト
│ app.yaml
│ flickr.html
│ flickr.py
│ index.yaml
│ webSimple.py
│ webSimple.pyc
│
└─elementtree
ElementInclude.py
ElementPath.py
ElementPath.pyc
ElementTree.py
ElementTree.pyc
HTMLTreeBuilder.py
SgmlopXMLTreeBuilder.py
SimpleXMLTreeBuilder.py
SimpleXMLTreeBuilder.pyc
SimpleXMLWriter.py
TidyHTMLTreeBuilder.py
TidyTools.py
XMLTreeBuilder.py
__init__.py
__init__.pyc
--
SDK102 にしたところ、下記のエラーで動作しなくなる
'photos' : res.parse_xml().find("photos").getchildren(),
AttributeError: 'NoneType' object has no attribute 'getchildren'
2008年4月23日水曜日
Google App Engine Google Data Python Library
Getting Started with the Google Data Python Library
http://code.google.com/support/bin/answer.py?answer=75582
これはきちんと理解しておかないと、いろいろなエラーに時間をとられる。
C:\work\gdata.py-1.0.12.1>c:\python25\python ./setup.py install
-- gdata_test.py を変更
# from xml.etree import ElementTree
from xml.etree import ElementTree, SimpleXMLTreeBuilder
ElementTree.XMLTreeBuilder = SimpleXMLTreeBuilder.TreeBuilder
except ImportError:
# from elementtree import ElementTree
from xml.etree import ElementTre
C:\work\gdata.py-1.0.12.1>c:\python25\python ./tests/run_data_tests.py
Running all tests in module gdata_test...............
----------------------------------------------------------------------
Ran 15 tests in 0.031s
OK
サンプルプログラム muvmuv を下記からダウロードして実行してみたのだが
http://code.google.com/support/bin/answer.py?answer=75582
起動
C:\google>dev_appserver.py muvmuv/
これはOK
実行
http://localhost:8080/build
しかし、これが NG
原因検索
http://groups.google.com/group/google-appengine/browse_thread/thread/b7399a91c9525c97
対策
http://effbot.org/downloads/ からelementtree-1.2.7-20070827-preview.win32.exe [52k]
を入れ、これを直接 project フォルダ以下に置いたが
C:\google\muvmuv\elementtree
結論としては windows SDK の不具合で fix 待ち
http://code.google.com/p/googleappengine/issues/detail?id=222 this is a current issue with the Windows SDK.
--- その他 作業memo ---
Python版インストール(Windows) を参考に
PYTHONPATH=C:\Python25\Lib\site-packages を一応、設定
C:\google\muvmuv\ElementTree.py in ()
cannot import name SimpleXMLTreeBuilder
エラー例
Then I got "No module named expat: use SimpleXMLTreeBuilder instead".
'SimpleXMLTreeBuilder' is not defined
File "C:\google\muvmuv\main.py", line 235, in getMoviesFromRss
tree = ElementTree(fromstring(rss.content))
NameError: global name 'fromstring' is not define
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 484, in __call__
handler.get(*groups)
File "C:\google\muvmuv\main.py", line 215, in get
movies = self.getMoviesFromRss(rss1, build_only)
File "C:\google\muvmuv\main.py", line 235, in getMoviesFromRss
tree = ElementTree(fromstring(rss.content))
File "C:\google\muvmuv\elementtree\ElementTree.py", line 1013, in XML
return api.fromstring(text)
File "C:\google\muvmuv\elementtree\ElementTree.py", line 181, in fromstring
parser = XMLTreeBuilder()
File "C:\google\muvmuv\elementtree\ElementTree.py", line 1171, in __init__
self._parser = parser = expat.ParserCreate(None, "}")
NameError: global name 'expat' is not defined
---
Please see http://code.google.com/p/googleappengine/issues/detail?id=222 this is a current issue with the Windows SDK.
expat.py は pyexpat.py を import
コマンドラインからはエラーは発生しない DLLs/pyexpat.pyd などがある。
C:\google>c:\python25\pythonPython 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] onwin32Type "help", "copyright", "credits" or "license" for more information.
>>> from pyexpat import *
SDK102 にしたら build できた。
最初起動時に simplejsonエラーが発生したが
以前どうやら django 以下に試行錯誤で置いた
ファイルをプロジェクトフォルダに copy して対応。
exec module_code in script_module.__dict__ File "C:\google\muvmuv\main.py", line 8, in
画像をクリックすると
以下のエラーが発生しているが、これは
対応できそうである。
File "C:\google\muvmuv\main.py", line 43, in get
template_values = {'login': loign, 'logout': logout, 'user': user}
NameError: global name 'loign' is not defined
2008年4月19日土曜日
Google App Engine /GqlQuery object and JSON
how to convert GqlQuery object to JSON format
http://groups.google.com/group/google-appengine/browse_thread/thread/634e7b9a2e584dd3?hl=en
How to use simplejson with GqlQuary object for example how to convert
marker_list to JSON for format
marker_list = db.GqlQuery('SELECT * FROM Marker')
them to json format, here is my testing code:
def dumprow(r):
import datetime
a = {}
for k in r.fields().keys():
v = getattr(r, k)
a['id'] = r.key().id()
a['key'] = str(r.key())
if isinstance(v, str):
a[k] = str(v)
elif isinstance(v, unicode):
a[k] = unicode(v)
elif isinstance(v, datetime.datetime):
a[k] = v.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(v, datetime.date):
a[k] = v.strftime('%Y-%m-%d')
elif isinstance(v, datetime.time):
a[k] = v.strftime('%H:%M:%S')
elif isinstance(v, (int, float, list)):
a[k] = v
else:
a[k] = str(v)
return a
def dumpquery(query):
s = []
for r in query:
s.append(dumprow(r))
return s
Google App Engine 1.0.1 / sampels
Google App Engine SDK のバージョンが 1.0.1 になっていたので Update。
http://code.google.com/appengine/downloads.html
(アプリケーションの削除により、一旦削除してから、再度インストール)
また、google-app-engine-samples に登録されているものを、いくつか動かしてみた。
まず、これらのソースをながめてみるのがいいようだ。
http://code.google.com/p/google-app-engine-samples/downloads/list
Google App Engine Helper for Django というものもある。
http://googleappengine.blogspot.com/2008/04/google-app-engine-helper-for-django.html
http://code.google.com/p/google-app-engine-django/
登録:
投稿 (Atom)
Swift UI チュートリアル Loading watchOS が終わらない?
Loading watchOS が終わらない? ディスク容量の残量が少ないので不要なシュミレーターを削除したとこころ watchOSのものが全部なくなってしまっていた。 WatchOS を削除して再度インストールしても復活せず。 Create a new simulator で ...
-
1. get_or_insert 自体がトランザクションなのでこれを含めたトランザクションを 作成しようとするとエラーとなる。 File "C:\Program Files\Google\google_appengine\google\appengine\api\...
-
新しいXcodeが使いたかったので MacOS15(Sequoia) にアップグレードしたところ、やはりApacheでPHPが動かなくなっていた。 結論としては brew, openssl, php, httpd を全て再度インストールしたところ動くようになった。 以下、作業ロ...
-
Apache が動かなくなった (MacOS 13.6.7) /var/log/apache2/access_log も error_log も出力されなくなっている $ sudo apachectl start すると以下のようなエラーとなった。 Load failed: ...