とりあえずの任期は残り半年ですが、力の続く限りがんばりますので、個人的に知ってる方は密かに応援していてくださると嬉しいです ;)
2012年12月31日月曜日
2012年12月17日月曜日
web2pyをバックグラウンドにする方法
こうしろと書いてある。なんか、ちょっと、いいのか?という気がしないでもない。
nohup python web2py.py -a '<recycle>' -i 127.0.0.1 -p 8000 &
nohup python web2py.py -a '<recycle>' -i 127.0.0.1 -p 8000 &
ルートに成れるなら、もっと賢い方法がありそう。
https://sites.google.com/site/web2pyjapan/book/11/linux-unix
2012年12月14日金曜日
web2pyでdatatablesを使う。ついでに、mongodb
staticフォルダにdatatablesのアーカイブを解凍した物をおいてある。
==ビューの部分ここから==
==ビューの部分ここから==
<html>
<head>
<script src="{{=URL(r=request,c='static',f='DataTables-1.9.3/media/js/jquery.js')}}" type="text/javascript"></script>
<script src="{{=URL(r=request,c='static',f='DataTables-1.9.3/media/js/jquery.dataTables.js')}}" type="text/javascript"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" type="text/css">
<style type="text/css" title="currentStyle">
@import "{{=URL(r=request,c='static',f='DataTables-1.9.3/media/css/demo_page.css')}}";
@import "{{=URL(r=request,c='static',f='DataTables-1.9.3/media/css/jquery.dataTables_themeroller.css')}}";
@import "{{=URL(r=request,c='static',f='DataTables-1.9.3/examples/examples_support/themes/smoothness/jquery-ui-1.8.4.custom.css')}}";
</style>
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
oTable = $('#example').dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"aaSorting": [[0,"desc"]]
});
});
</script>
</head>
<body>
<table width="100%" class="display" id="example" border="0" cellpadding="5" cellspacing="5">
<thead>
<tr>
<th>Collection stop date</th>
<th>Collection stop time</th>
<th>Category</th>
<th>ID</th>
<th>Station</th>
<th>Detected Nuclide</th>
<th>Link data</th>
</tr>
</thead>
<tbody>
{{
import datetime
old_id = 0
for col in records:
current_id = col["rn_sampleid"]
utime=col["rn_unixtime"]
dt=datetime.datetime.fromtimestamp(utime)
if current_id != old_id:
old_id = current_id
}}
<tr>
<td>{{=dt.strftime('%Y/%m/%d')}}</td>
<td>{{=dt.strftime('%H:%M:%S')}}</td>
<td>{{=col["rn_category"]}}</td>
<td>{{=col["rn_sampleid"]}}</td>
<td>{{=col["rn_station"]}}</td>
<td>{{=col["rn_nucl"].replace('+',' ')}}</td>
<td>{{="S"}}</td>
</tr>{{pass}}{{pass}}
</tbody>
<tfoot>
<tr>
<th>Collection stop date</th>
<th>Collection stop time</th>
<th>Category</th>
<th>ID</th>
<th>Station</th>
<th>Detected Nuclide</th>
<th>Link data</th>
</tr>
</tfoot>
</table>
</body>
</html>
==ビューの部分ここまで==
==pythonの部分ここから==
import pymongo import time def index(): conn = pymongo.Connection('ip.to.your.machine',27017) db = conn.datafusion col = db.overlaps start_time_tuple = (2012,9 ,1,0,0,0,0,0,0) end_time_tuple = (2012,12,1,0,0,0,0,0,0) start_unixtime = time.mktime(start_time_tuple) end_unixtime = time.mktime(end_time_tuple) data_full = col.find({"rn_unixtime":{"$gte":start_unixtime,"$lt":end_unixtime}}) conn.disconnect() return dict(records=data_full)
==pythonの部分ここまで==
2012年12月10日月曜日
Python3でWSGIサーバをスレッド化する
メモ
return [b'hello']
がわからなくてはまった。
from wsgiref import simple_server
from socketserver import ThreadingMixIn
class ThreadingWSGIServer(ThreadingMixIn, simple_server.WSGIServer):
pass
def myapp(environ, start_response):
start_response('200 OK', [('Content-type', 'text/plain')])
return [b'hello']
server = simple_server.make_server('0.0.0.0',8000,myapp,ThreadingWSGIServer)
server.serve_forever()
~
2012年12月6日木曜日
2012年12月4日火曜日
MongoDBのメモ
わたし用MongoDBをCドライバを使って動かすときのメモ。
- サーバーインストール
http://www.mongodb.org/downloads
から適当にアーカイブ拾ってくる。
わたしは、Linux64bitなので、以降はそれが前提。
mongod.confを適当に作る。私は、ここから拾ってきた。
https://github.com/mongodb/mongo/blob/master/debian/mongodb.conf
サーバー起動用スクリプト(バックグラウンドになる)
#!/bin/sh -f
numactl --interleave=all ./mongodb-linux-x86_64-static-legacy-2.2.2/bin/mongod --config ./mongodb-linux-x86_64-static-legacy-2.2.2/mongod.conf --fork - C API (driver)のインストール
http://www.mongodb.org/display/DOCS/C+Language+Center
から、アーカイブ拾ってくる。makeしてできたlibとかヘッダーを適当な場所にコピーする - プログラムする
基本はチュートリアル、
http://api.mongodb.org/c/current/tutorial.html
を参考にすればいいんだけど、C driver v0.7から write concernという新しい変数が必要になる。プログラムは末尾に。コンパイル時に-std=c99するか-DMONGO_HAVE_STDINTしないといけない。私は、後者にしている。色々理由があって。 - mongo shellで中身を確認する時は、
mongo SERVER_FQDN
して、shellのなかで、
use COLLECTION_NAME #プログラムの中のmongo_insertで決めてる
db.DOCUMENTS.find()
すると、登録した物が見えるはず。
#include "mongo.h"
int status;
mongo mongo_conn[1];
mongo_write_concern mongo_wc[1];
mongo_init(mongo_conn);
mongo_write_concern_init(mongo_wc);
mongo_wc->w=1;
mongo_write_concern_finish(mongo_wc);
mongo_set_op_timeout(mongo_conn,1000);
status = mongo_client(mongo_conn,"SERVER_FQDN",27017);
if( status != MONGO_OK ) {
fprintf(stderr,"error\n");
mongo_write_concern mongo_wc[1];
mongo_init(mongo_conn);
mongo_write_concern_init(mongo_wc);
mongo_wc->w=1;
mongo_write_concern_finish(mongo_wc);
mongo_set_op_timeout(mongo_conn,1000);
status = mongo_client(mongo_conn,"SERVER_FQDN",27017);
if( status != MONGO_OK ) {
fprintf(stderr,"error\n");
}
bson b[1];
bson_init(b);
bson_append_new_oid(b,"_id");
bson_append_int(b,"unixtime",time_integer);
bson_finish(b);
status = mongo_insert(mongo_conn,"COLLECTION_NAME.DOCOMENTS",b,mongo_wc);
if(status != MONGO_OK){
fprintf(stderr,"%s\n",msg_mongo(status));
}
bson_destroy(b);
mongo_write_concern_destroy(mongo_wc);
mongo_destroy(mongo_conn);
2012年12月3日月曜日
UNWGバザー
VICの横の会場で、UNWG主催のバザーがありました。
いろいろな国が出店していて、楽しゅうございました。
写真は、同室の人の出身のカザフスタンの人が民族衣装をまとっていたので、撮らせてもらいました。
いろいろな国が出店していて、楽しゅうございました。
写真は、同室の人の出身のカザフスタンの人が民族衣装をまとっていたので、撮らせてもらいました。
2012年11月30日金曜日
DragonEgg + gfortran
ちと興味があって、Dragonegg+gfortranの性能が知りたかった。
結果。ベンチは姫野ベンチf90、CPUはOpteron2218.
gfortran 4.1.2 最適化とかなし: 136MFLOPS
gfortran 4.7.2 -march=native -O3 : 878.5MFLOPS
gfortran 4.7.2 -march=native -O3 -fplugin=dragonegg.so: 554.8MFLOPS
ちょっと残念な結果。っつか、4.7.2が良すぎるような。
結果。ベンチは姫野ベンチf90、CPUはOpteron2218.
gfortran 4.1.2 最適化とかなし: 136MFLOPS
gfortran 4.7.2 -march=native -O3 : 878.5MFLOPS
gfortran 4.7.2 -march=native -O3 -fplugin=dragonegg.so: 554.8MFLOPS
ちょっと残念な結果。っつか、4.7.2が良すぎるような。
2012年11月28日水曜日
ヒンカリ
Khinkali, Xinkaliとアルファベットで綴る、大きな小籠包。
食べごたえがあって、スパイスが効いていて私はこっちのほうがすきです。
オッサンがお皿いっぱい頼んでいて、ワインとウォッカで昼間っからガンガンやっている。
食べごたえがあって、スパイスが効いていて私はこっちのほうがすきです。
オッサンがお皿いっぱい頼んでいて、ワインとウォッカで昼間っからガンガンやっている。
2012年11月23日金曜日
トビリシ空港
つきました。貧乏だと言われ続けてきたので、空港の建物が立派なのとフリーのWIFIがあるのにびっくり。どうでもいいけど、タクシーの運ちゃんが電車待ってるから乗らないっていってるのに、歩いているのに並走してしつこくこえかけてくるのに辟易する。
気を引き締めねば。
気を引き締めねば。
2012年11月21日水曜日
クリスマス・マーケット
日本人の同僚というか先輩というか、に帰りがけに会い、すでに開いているクリスマス・マーケットがあるというので、連れて行ってもらう。アムホフのやつ。
ホットワインをいただきながらぐるっと巡る。みんな寒い中、ホットワイン飲みながらだべっている。
カップは返せば2.5ユーロ戻ってくるらしいけど、記念にもらっとく。
まだ一ヶ月以上あるのに本当にクリスマスモード。
ホットワインをいただきながらぐるっと巡る。みんな寒い中、ホットワイン飲みながらだべっている。
カップは返せば2.5ユーロ戻ってくるらしいけど、記念にもらっとく。
まだ一ヶ月以上あるのに本当にクリスマスモード。
2012年11月18日日曜日
美術史美術館で朝食
美術史美術館にはカフェが入っていて、そこではいわゆるコーヒー(ミルクが入ってないやつ)が飲めるので、たまーにいきます。
いつもはおやつの時間にいくのですが今日は朝に、朝食をとりに。
アプリコットジャムつきのフレンチトーストでございます。
(ターフェルシュピッツとかもメニューには載ってたけど、そういうのは別の場所で食べたい。)
そのまま絵画鑑賞なんて贅沢でしょう?
いつもはおやつの時間にいくのですが今日は朝に、朝食をとりに。
アプリコットジャムつきのフレンチトーストでございます。
(ターフェルシュピッツとかもメニューには載ってたけど、そういうのは別の場所で食べたい。)
そのまま絵画鑑賞なんて贅沢でしょう?
ウィーンで麻婆豆腐
中華料理屋さんを巡っているわけですが、ウィーンで麻婆豆腐を食べられるのは、今のところ
四川飯店、チンタオ、楽口福の三軒。四川のはもちろん美味しいのですが、他の2つは正直イマイチ。ただし、四川料理以外のレベルはチンタオとか楽口福の断然高いので、狙いを定めていってください。
2012年11月16日金曜日
2012年11月10日土曜日
2012年11月9日金曜日
2012年11月1日木曜日
アンダルシア旅行6日目/6日 マジョルカ島
ということで、時間がたっぷりあるのでマジョルカ島で市内観光。
なにはともあれ腹ごしらえ。WEBでauthentic mallorcaな料理が食べられるという、
Celler Sa Premsa (http://goo.gl/maps/gxriO )へ。
結局mallorcaなんとかと書いてあるタパスを頼むことになったのですが、正直あんまりうまくない。
まぁ、ローカルのものを食わずして、というものだと思うので。
マジョルカスープ(写真の一番上の皿)と書いてあるのを頼んだのに、スープじゃないし。
キャベツとバケットをコンソメで煮込んで汁気を無くしたモノっぽかったので、元はスープなのだろうと思う。
食後は、カテドラルへ。絢爛豪華ですが、なにより天蓋?はガウディ作のものらしいです。初ガウディ。宝物をいろいろ展示してあるのですが、とにかく金ぴかって感じでござる。一回の旅行で幾つもカテドラルを巡ると若干食傷気味に・・・
なにはともあれ腹ごしらえ。WEBでauthentic mallorcaな料理が食べられるという、
Celler Sa Premsa (http://goo.gl/maps/gxriO )へ。
結局mallorcaなんとかと書いてあるタパスを頼むことになったのですが、正直あんまりうまくない。
まぁ、ローカルのものを食わずして、というものだと思うので。
マジョルカスープ(写真の一番上の皿)と書いてあるのを頼んだのに、スープじゃないし。
キャベツとバケットをコンソメで煮込んで汁気を無くしたモノっぽかったので、元はスープなのだろうと思う。
食後は、カテドラルへ。絢爛豪華ですが、なにより天蓋?はガウディ作のものらしいです。初ガウディ。宝物をいろいろ展示してあるのですが、とにかく金ぴかって感じでござる。一回の旅行で幾つもカテドラルを巡ると若干食傷気味に・・・
2012年10月31日水曜日
アンダルシア旅行6日目/6日 帰国(グラナダ -> マラガ -> マジョルカ島)
今日は帰国日で、移動が結構大変。しかし、マジョルカ島でトランジットの時間が長いのでちょっと観光できる。
グラナダからマラガまで、alsaのバス移動。 7:00発9:30着。ローカルのバスも7:00から動き始めるらしく、タクシーでバスターミナルまで。その辺気を使えよ、と思わなくもない。
12:00の飛行機で、マラガ → マジョルカ島。
マジョルカ島 → ウィーン は21:00発なので、とても時間があるのです。
マラガも周りは白い村なんですね。
グラナダからマラガまで、alsaのバス移動。 7:00発9:30着。ローカルのバスも7:00から動き始めるらしく、タクシーでバスターミナルまで。その辺気を使えよ、と思わなくもない。
12:00の飛行機で、マラガ → マジョルカ島。
マジョルカ島 → ウィーン は21:00発なので、とても時間があるのです。
マラガも周りは白い村なんですね。
アンダルシア旅行5日目/6日 グラナダ/アルハンブラ宮殿
アルハンブラ宮殿を見るためだけにグラナダへ。
Ronda -> Granadaは電車移動です。8:15ぐらい発の電車で、11:00ごろ着のがあります。
駅から市内中心部へは、33番のバスを使うとよいようです。
Ronda -> Granadaは電車移動です。8:15ぐらい発の電車で、11:00ごろ着のがあります。
駅から市内中心部へは、33番のバスを使うとよいようです。
アンダルシア旅行4日目/6日 アルへシラス/ジブラルタル
Rondaの公式ページを覗いていたらジブラルタルへ日帰り旅行可能と書いてあるのを見つけて、足を延ばしてみました。
旅程は
Ronda (電車 7:15ぐらい) -> Algeciras (9:10ぐらい)
Algeciras (バス 10:00) -> Gibraltar (10:45ぐらい)
帰りはそのまま逆に。私は、15:55 Algeciras発の電車を使いましたが、最終は19:00発です。
写真は、ジブラルタルの国境(イギリス領なので)と、ゲートを越えてすぐにある滑走路。
飛行機が来ると信号で止められるっぽい?
写真は、ジブラルタルの国境(イギリス領なので)と、ゲートを越えてすぐにある滑走路。
飛行機が来ると信号で止められるっぽい?
登録:
投稿 (Atom)