web2py(http://www.web2py.com/)は興味のあるWebフレームワークです。
pythonで書かれています。
これをGoogle App Engineで動かそうと苦労した事があります。
macからアップフロードしても動かない。Invalid Requestになるのです。
最近のドキュメントで知らされた事があります。
1.Macのバイナリーコードでなく、ソースコードの版をインストールすること。
2.gaeのビッグテーブルで動かすにはローカルマシンで一通りのデータベース操作をしてインデックスを作っておくこと。
この2点です。
これは試してみる価値がありそうなので、すこし追跡する事にします。
中途半端で済みません。
(上の金魚のバナーはマウスを置くとそこに金魚が集まります。面白い)
isumifishermanは仕事でDjangoを使っていましたが最近、Web2pyにはまっています。Google App Engineに載せるためです。 いろいろメモをしておくと後で便利という実に個人的なブログです。
2010年9月16日木曜日
2010年9月13日月曜日
さくらインターネットVPS、Plone4
さくらインターネットが新しいサービス、VPSをスタートさせた。
早速にエントリして使わせていただきました。
VPSコントロールパネルがメールで案内されたのでここにログイン。
最初のページに仮想サーバーの起動、停止、再起動があるのでこれで起動をします。
このページのスクリーンショットを見た方が分かりやすい。
あとは画面にあるリモートコンソールから作業できるのでしょうが、
SSHとFTPを確認したいので、割当のあったIPアドレスでMacのターミナルからrootユーザーをつかって、SSHでログイン、Transmitも同様にSFTPでログインできました。
これでplone.orgのサイトを見たらwgetでurlを指定すれば良さそうなので、早速にトライした。この段階ではシステムは空っぽなので何でも気兼ねなくできます。
port8080でアクセスするとWelcomeされて、Ploneサイトの初期化がいとも簡単にできました。admin管理者のパスワードもinstanceのフォルダーにあるのでそれでログインしました。
Ploneは様々なaddonがあります。これはbuildoutでできる筈なのですが、まだ成功していません。
早速にエントリして使わせていただきました。
VPSコントロールパネルがメールで案内されたのでここにログイン。
最初のページに仮想サーバーの起動、停止、再起動があるのでこれで起動をします。
このページのスクリーンショットを見た方が分かりやすい。
あとは画面にあるリモートコンソールから作業できるのでしょうが、
SSHとFTPを確認したいので、割当のあったIPアドレスでMacのターミナルからrootユーザーをつかって、SSHでログイン、Transmitも同様にSFTPでログインできました。
これでplone.orgのサイトを見たらwgetでurlを指定すれば良さそうなので、早速にトライした。この段階ではシステムは空っぽなので何でも気兼ねなくできます。
port8080でアクセスするとWelcomeされて、Ploneサイトの初期化がいとも簡単にできました。admin管理者のパスワードもinstanceのフォルダーにあるのでそれでログインしました。
Ploneは様々なaddonがあります。これはbuildoutでできる筈なのですが、まだ成功していません。
2010年9月9日木曜日
Google Chartの日本語表示
続いてGoogle Chartです。
簡単な紹介をすると、Google chartはGET、POSTでリクエストを送るとグラフがダウンロードされる便利なツール。
ある調査のレポートでは便利に使わせていただきました。
同梱されているpygooglechart.pyを使って簡単にグラフをつくれます。
問題は私の場合はグラフに表示するデータのサイズが大きすぎて、GETでは送れないので、POSTに変更です。
オリジナルのdownload(self, file_name)、コードを修正して
def download_post(self, file_name):
url = self.BASE_URL[:-1]
data = self.get_url_post()
opener = urllib2.urlopen(url,data)
if opener.headers['content-type'] != 'image/png':
raise BadContentTypeException('Server responded with a ' \
'content-type of %s' % opener.headers['content-type'])
open(file_name, 'wb').write(opener.read())
簡単な紹介をすると、Google chartはGET、POSTでリクエストを送るとグラフがダウンロードされる便利なツール。
ある調査のレポートでは便利に使わせていただきました。
同梱されているpygooglechart.pyを使って簡単にグラフをつくれます。
問題は私の場合はグラフに表示するデータのサイズが大きすぎて、GETでは送れないので、POSTに変更です。
オリジナルのdownload(self, file_name)、コードを修正して
def download_post(self, file_name):
url = self.BASE_URL[:-1]
data = self.get_url_post()
opener = urllib2.urlopen(url,data)
if opener.headers['content-type'] != 'image/png':
raise BadContentTypeException('Server responded with a ' \
'content-type of %s' % opener.headers['content-type'])
open(file_name, 'wb').write(opener.read())
とパッチしました。
次が日本語の表示です。
これもGoogle Groupで検索。
label,legendなど文字の表示を探し出して、utf-8エンコードに変更しました。
たとえば、チャートオブジェクトのlegendは
# self.legend = [urllib.quote(a) for a in legend]
self.legend = [urllib.quote(a.encode("utf-8")) for a in legend]
フォントの色やサイズももちろんカストマイズ可能です。
すこし気になる事がありました。
- ビジネスグラフとしては十分な機能でしたが、非常にレスポンスが遅い。かなり混雑しているのでしょう。しかしその対策は用意されているようで、URLはいくつか用意されているようです。そちらを使えばもっと早くなるかも。
- これは私だけの経験かもしれませんが、linechart(線グラフ)で折れ線の数が少ないと前にリクエストされたイメージが帰ってくることがあります。この問題、どなたかご存知でしたら教えてください。
そんなこともあって、Google Chartの換わりにMatplotlibを、そして当然numpyも併行して使う事にしました。
matplotlibの日本語表示
Macを使っています。
日本語の表示で苦労しました。例の白抜きの箱が表示されてしまう件です。
最初のトライは
import os
os.environ['VERSIONER_PYTHON_PREFER_32_BIT']='yes'
#t = os.environ['VERSIONER_PYTHON_PREFER_32_BIT']
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
plt.plot([1,2,3,4])
filename = 'myfig2.png'
plt.savefig('media/some/charts/'+filename)
これで出力したファイルをDjangoで表示できました。
'VERSIONER_PYTHON_PREFER_32_BITの下りがないと64bitで動くようでimportエラーになります。
次のステップでタイトルやら軸のラベルを表示すると、文字が白抜きになります。
google groupで検索しました。ロシア語が白抜きになるというエントリで次のコードを見つけました。
import matplotlib
matplotlib.use('GTK')
from matplotlib.matlab import *
from matplotlib.font_manager import *
p = FontProperties()
font = {'fontname' : 'Lucida',
'color' : 'r',
'fontweight' : 'bold',
'fontsize' : 16}
plot([1,2,3])
xlabel(u'natê¿enie',font)
ylabel(u'napiêcie',font)
title(u'Wykres z polskimi literkami ±æê³ñ󶿼',font)
show()
ラベル毎にFontを指定しています。
matplotlib.use('GTK')をコメントアウトして、フォントをMacに搭載されているフォントに変更しました。
p = FontProperties()
#font = {'fontname' : "serif", #dont work
# font = {'fontname' : 'sans-selif', #dont work
font = {'fontname' : 'Hiragino Sans GB',
'color' : 'r',
'fontweight' : 'bold',
'fontsize' : 12}
日本語の表示で苦労しました。例の白抜きの箱が表示されてしまう件です。
最初のトライは
import os
os.environ['VERSIONER_PYTHON_PREFER_32_BIT']='yes'
#t = os.environ['VERSIONER_PYTHON_PREFER_32_BIT']
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
plt.plot([1,2,3,4])
filename = 'myfig2.png'
plt.savefig('media/some/charts/'+filename)
これで出力したファイルをDjangoで表示できました。
'VERSIONER_PYTHON_PREFER_32_BITの下りがないと64bitで動くようでimportエラーになります。
次のステップでタイトルやら軸のラベルを表示すると、文字が白抜きになります。
google groupで検索しました。ロシア語が白抜きになるというエントリで次のコードを見つけました。
import matplotlib
matplotlib.use('GTK')
from matplotlib.matlab import *
from matplotlib.font_manager import *
p = FontProperties()
font = {'fontname' : 'Lucida',
'color' : 'r',
'fontweight' : 'bold',
'fontsize' : 16}
plot([1,2,3])
xlabel(u'natê¿enie',font)
ylabel(u'napiêcie',font)
title(u'Wykres z polskimi literkami ±æê³ñ󶿼',font)
show()
ラベル毎にFontを指定しています。
matplotlib.use('GTK')をコメントアウトして、フォントをMacに搭載されているフォントに変更しました。
p = FontProperties()
#font = {'fontname' : "serif", #dont work
# font = {'fontname' : 'sans-selif', #dont work
font = {'fontname' : 'Hiragino Sans GB',
'color' : 'r',
'fontweight' : 'bold',
'fontsize' : 12}
しかし、次でもOKでした。
rcParams['font.family'] = 'Hiragino Sans GB'
これはプロセスの環境を変えているので軸毎にFontを指定しなくても良いようです。
さらにHOMEディレクトリに/.matplotlib/matplotlibrcファイルを作ればユーザーのdefaultにできます。
もっとも単純にコピーはできなくてterminalからsudoでコピーしないとだめ。
(この辺りがMacのすごいところでlinuxマシンになる)
さらにpythonのsite-packagesのmatplotlib/mpl-data/matplotlibrcの該当するエントリを編集すればOKでしょうが、ここはいじらないでおきました。
登録:
投稿 (Atom)