python
2.6系だとJSONが標準で組み込まれてるらしいんですが、手元は2.5系なのでsimplejsonを使っています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/usr/bin/python # -*- coding: utf-8 -*- import sys, codecs sys.stdout = codecs.getwriter('utf_8')(sys.stdout) import simplejson data = { 'items':[ {'name':'iPhone', 'price':50000}, {'name':'macbook', 'price':100000}, {'name':"マクド", 'price':100}, ]} text = simplejson.dumps(data) # encode copy = simplejson.loads(text) # decode print "data = " + str(data) print "text = " + text print "copy = " + str(copy) for item in copy['items']: print item["name"]
Here is the code.
import MySQLdb
import simplejson as json
db = MySQLdb.connect(host='xxx', user='xx', passwd='xx', db='xxx')
cursor = db.cursor()
def getSQLJSON(hostName,dbName,id,pw,sql):
global db,cursor
resultArray =[]
cursor.execute(sql)
tableDescription = cursor.description
result = cursor.fetchall()
for e in result:
resultRaw ={}
columnIndex =0
for ee in e:
vcoulumnName = tableDescription [columnIndex][0]
resultRaw[coulumnName]=ee
columnIndex +=1
resultArray.append(resultRaw)
jsonResult = json.dumps(resultArray, separators=(',',':'))
return jsonResult
mysql の出力を JSON 形式へ?
08/08(金) 248日のトラップサーバにログインしたら、[Unknown HZ value! (1) Assume 100.]なるメッセージが出現。タイミング悪く、times()を使ったプログラムで異常が見つかった。原因は、マシンの起動時間をカウントするカウンター。clock_t型(符号付き4バイト)の最大値を越えて負数になったのがトラブルの原因だった様子。
マシンのカウンタは、1/100sec毎にカウントするので、符号付き4バイトの最大値に達するのが (2^31-1)/(100*86400) = 約248日。確かに、トラブルが発生する前に稼動時間見たら251日だったから、どうやらこれが原因。
実害は多分ないだろうから放置してもよいかな。
$ sudo gem install thinどうしたものか。
Select which gem to install for your platform (i486-linux)
1. thin 1.2.4 (ruby)
2. thin 1.2.4 (x86-mswin32)
3. thin 1.2.3 (ruby)
4. thin 1.2.3 (x86-mswin32)
5. Skip this gem
6. Cancel installation
> 4
Install required dependency rack? [Yn] y
Install required dependency thin? [Yn] y
Select which gem to install for your platform (i486-linux)
1. thin 1.2.4 (ruby)
2. thin 1.2.4 (x86-mswin32)
3. thin 1.2.3 (ruby)
4. thin 1.2.3 (x86-mswin32)
5. Skip this gem
6. Cancel installation
> 1
Install required dependency rack? [Yn] y
yInstall required dependency thin? [Yn] y
Select which gem to install for your platform (i486-linux)
1. thin 1.2.4 (ruby)
2. thin 1.2.4 (x86-mswin32)
3. thin 1.2.3 (ruby)
4. thin 1.2.3 (x86-mswin32)
5. Skip this gem
6. Cancel installation
> 3
Install required dependency rack? [Yn] y
Install required dependency thin? [Yn] y
Select which gem to install for your platform (i486-linux)
1. thin 1.2.4 (ruby)
2. thin 1.2.4 (x86-mswin32)
3. thin 1.2.3 (ruby)
4. thin 1.2.3 (x86-mswin32)
5. Skip this gem
6. Cancel installation
> 6
ERROR: While executing gem ... (Gem::RemoteInstallationCancelled)
Installation of thin cancelled.
cronなんかに
0 0 * * * /path/to/snapshot.py 7 vol-00000000
という感じで登録しておく事を前提に作りました。
- #!/usr/bin/env python
- import sys
- from boto.ec2.connection import EC2Connection
- if(len(sys.argv) != 3):
- print "Usage: snapshot.py <num> <volume-id>"
- quit()
- conn = EC2Connection('aws_access_key',' aws_secret_access_key');
- conn.create_snapshot(sys.argv[2])
- snapshot = {}
- for x in conn.get_all_snapshots():
- if(x.volume_id == sys.argv[2]):
- tmp = {x.id:x.start_time}
- snapshot.update(tmp)
- snapshot = sorted(snapshot.items(), key=lambda (k, v): (v, k), reverse=True)
- for i in range(int(sys.argv[1]), len(snapshot)):
- conn.delete_snapshot(snapshot[i][0])
amazon ec2
アプリケーションごとにチューニングする方法をはじめ、OOM killer対策の各種方法が編み出されています。そこに現れた新たな挑戦者が「mem_notify」です。
1月24日、最初にMarcelo Tosattiが「oom notify」として書き始めたパッチに修正を加え、小崎資広さんが「mem_notify v5」パッチを提案しました。
mem_notifyはシステム全体の空きメモリが足りなくなり、スワップが始まりそうになったタイミングで、メモリを開放するようにアプリケーションに通知するというフレームワークです。アプリケーションは/dev/mem_notifyをpollし、待ちます。
Linux Kernelは、空きメモリ容量が少なくなり、スワップを利用しそうになった時点で、アプリケーションにメモリを開放するように通知します。/dev/mem_notify経由で通知を受けたアプリケーションは、明示的にメモリを開放してカーネルに返すため、スワップを利用しなくても済むという寸法です。結果として、OOMが発動するような状況になる前にアプリケーション側で対策が打てるようになるのです。
> 設定の一括変更は、 > python -i /var/mailman/bin/withlist リスト名 > といった感じで時々やっているので、一括してできればやろうかなと思ったのでした。 会員のオプションは m.user_options にディクショナリとして 入っていますので、 def fix_option(m): members = m.user_options.keys() for i in members: m.user_options[i] |= 256 m.Save() m.Unlock() のようなスクリプトを作成すればよろしいかと。
引用すると改行が消えて困るなぁ
Comments [0]