2014年3月8日土曜日

古いInstanceTypeから新しいInstanceTypeに切り替えた時のトラブル対応

社内でm1系とかm2系で運用してきたInstanceをm3系、c3系に切り替えて再開したら、上手く起動しないという報告があった。

詳しく見てみるとm1.m2系のInstanceをSTOPして、InstanceTypeをm3/c3系に変更。その後STARTしたらRUNNING状態になるがステータスチェックの二つ目で転けていた。んでもってそもそもこのInstanceは結構古くから使われているモノだった。

ここまで聞いておおよそ見当が付いた。EC2Configとドライバが古いのだ。
取り敢えず一旦m1/m2系のInstanceで起動し直す。そこで以下の二つをDLして更新する。

http://aws.amazon.com/developertools/5562082477397515
http://aws.amazon.com/developertools/2187524384750206

とこれで完了。この後にm3/c3系に切り替えれば無事起動した。

2014年3月3日月曜日

python3 + bottleでshif-jisなcsvを出力する

無駄に悩んだ。
取り敢えずメモ程度に。
from io import StringIO
from bottle import route, response
@route('/get_csv')
def get_csv():
    response.content_type = 'application/octet-stream'
    response.headers['Content-Disposition'] = "attachment; filename='hoge.csv'"
    stream = StringIO()
    writecsv = csv.writer(stream)
        # ここでcsvを作る。
    stream.seek(0)
    return stream.getvalue().encode('shift-jis')

2013年11月18日月曜日

BOTOでCloudWathcのmetricsをとる

InstanceのIDを指定してCPU使用率をとる方法。

環境
python3.3
BOTO 2.9.0 py3kport
import datetime
from decimal import Decimal,ROUND_HALF_UP
from boto.ec2.cloudwatch import CloudWatchConnection,regions

for region in regions():
    cw_con = CloudWatchConnection(
        aws_access_key_id     = 'AAA',
        aws_secret_access_key = 'BBB',
        region = region,
    )
    for val in cw_con.get_metric_statistics(
            60,
            datetime.date.today() - datetime.timedelta(hours=0.1),
            datetime.datetime.today(),
            'CPUUtilization',
            'AWS/EC2',
            'Average',
            {'InstanceId': ['i-CCC']},
            'Percent',
    ):
        print(val)

2013年9月18日水曜日

Python bottleでPOST時の項目数上限

Pythonのbottleを使ったWebサイトで、100個以上の項目(inputとかtextarea)を投げると100個までしか取得出来ない問題が起きた。

調べたらどうやら100個制限してるのが仕様っぽい
THE REQUEST OBJECT

んで取り敢えずこの設定を上書きすれば100この制限は外れるっぽい。

そのWeb全てのqueryに適用する場合はbottle読み込んでる所の一番上にかく。

from bottle import BaseRequest
BaseRequest.MAX_PARAMS = 200

各ページ個別で上限を設定する場合は

from bottle import BaseRequest
@route('/create', method='POST')
@view('confirm')
def post_create():
    BaseRequest.MAX_PARAMS = 200
    value = request.forms.decode().get('key')

となる。
まぁSecurityとか考えたら個別で設定だよな。

2013年7月5日金曜日

0.25mm Crystal Armor for Xperia Z

はい。買いました。
0.25mm CrystalArmor for Xperia Z

Xperiaは防塵防滴なので可能な限りキャップを開けずに使いたいモノです。充電も可能な限りクレードル使いたいですね。急速充電も出来るし。以前の0.4mm版だと両面付けるとクレードルに刺さらなくなるので流石にアレでした。今回購入したのは0.25mm。以前の0.4mm版と比べて薄くなっています。まるで何処ぞのゴムみたいですね。

まぁ結論からいうと、0.25mm版でも両面はったらクレードル刺さりません。

ただ明らかにもう少し!!って状態なのでクレードルの左右にある黒い四角い部分をニッパーで切り取りました。
すると・・・



キタ━━━━━━(゚∀゚)━━━━━━ !!
充電出来ました。向かって左上のオレンジ色の光が充電中の証拠です。
クレードルにある固定器具をぶった切ってしまったので以前の様にカチッ!とはまる快感と安心感はなくなりました。変わりにある意味でおくだけ充電ですが。

あと個人的に画面への傷が気になるのでクレードルの手前の受け側の左右をニッパーで斬りました。
やっぱCrystalArmor(・∀・)イイネ!!

2013年6月12日水曜日

python3のJSONメモ

python2.x
    f = urllib.request.urlopen(url)
    return json.loads(f.read())

python3.x
    f = urllib.request.urlopen(url)
    content = f.read()
    return json.loads(content.decode('utf8'))

2013年6月10日月曜日

Python3のLeveDBメモ

 # -*- coding: utf-8 -*-
import leveldb

db = leveldb.LevelDB('/home/hogfe/ldb')
key = 'hoge'
value = 'fuga'

Python2.7でのCode
登録
db.Put( key, value)

取得
value = db.Get(key.name)


Python3でのCode
登録
db.Put( bytes(key, 'UTF-8'), bytes(value, 'UTF-8'))

取得
value = db.Get( bytes(key, 'UTF-8') ).decode()

2013年3月12日火曜日

python boto でInstance metadataを取得

# -*- coding: utf-8 -*-
import boto.utils

meta = boto.utils.get_instance_metadata(version='latest', url=u'http://169.254.169.254', timeout=None, num_retries=5)
# 情報がDICTに成ってる。持ってるDICTのKey一覧
for key in meta.keys():
    print key
# InstanceIDを取得
print meta.get(u'instance-id')

2013年2月15日金曜日

build.prop

ro.semc.enable.fast_dormancy=false
ro.ril.disable.power.collapse=1
ro.ril.enable.a52=0
ro.ril.enable.a53=1
ro.ril.hsdpa.category=10
ro.ril.hsupa.category=6
ro.ril.hsxpa=2
ro.ril.fast.dormancy.timeout=3
ro.ril.enable.dcm.feature=1
ro.ril.disable.fd.plmn.prefix=44010
ro.ril.enable.sdr=0
ro.ril.oem.mosms.mode=1
ro.telephony.default_network=2
ro.ril.def.agps.mode=2
ro.ril.def.agps.feature=2
ro.telephony.no_emg_calls_only=true
ro.semc.spn.currentname=NTT DoCoMo
ro.semc.spn.newname=NTT DOCOMO
ro.ril.oem.ecclist=110,118,119
ro.ril.oem.nosim.ecclist=110,118,119
ro.product.brand=docomo

ro.HOME_APP_ADJ=1
ro.HOME_APP_MIN_ADJ=0
ro.HOME_APP_MAX_ADJ=1

2013年1月22日火曜日

au DIGNO Sを買ったんで感想

取り敢えずAndroidの遍歴。個人的にはAndroid5台目。スマフォにして3台目。


  • Xperia Arc
  • Iconia A500
  • Xperia S (グローバルモデル)
  • NEXUS7
  • DIGNO S

3月発売予定のグローバル版XperiaZを購入する前にまともな高速回線が欲しいなぁと思っていた所でした。取り敢えず回線はLTE最強のauにMNPする事は決定してました。Zはテザリング運用でいいやと。

折しもそんな時にKDDIからauへの新規契約/MNP時に端末代金5000円引にしてくれるクーポンが届きました。元々家はKDDIの1Gbps光ファイバなんでスマートバリューで割引きくし、男子割もあるんでこれを気にエイヤ!とMNP。

DIGNOを選んだ理由は以下の通り

  • バッテリの容量が多い
  • 本体の実質負担額がマイナスになる
  • 防水

LTEルータとして使うので、まぁバッテリを重視って所ですかね。なにげに人生初の京セラ端末、人生初のSONY以外のスマフォですよ。

使ってみた感想としてはまぁ可もなく不可もないスタンダードでベーシックな端末ですね。

  • やっぱXperiaってカメラと液晶が綺麗なんだな。
  • 防水(・∀・)イイネ!! これは捗る!!!
  • au LTE HAEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
  • 電池ものすげぇ持つ!!!
  • デフォで入ってるクリップボード管理ソフト経由でペーストすると落ちるアプリが幾つかある。(G+とか)
ですかね。

カメラはやはりXperiaが綺麗すぎですな。一応DIGNOもArcと同じカメラ素子っぽいが写りがなんか色あせてる。液晶もなんか色がイヤに濃い。
防水機能はあんま重視してなかったんですが、あるとお風呂での暇つぶしが便利ですね。XperiaS使ってた時は身体洗う時は風呂の外に置いたり適当な布で巻いてたんですが、DIGNOだとそれをしなくて良いのは地味に楽。

あとau LTEやっぱHAEEEEEEEEEEEE
嫁がXperiaGXで一応LTE対応なんですが、家で実測8Mbps位。まぁ1.5GhzのLTEにしか対応してないとは言え微妙過ぎる値。一方のDIGNOは家で25Mbps出てる。
近くにある国道近くだとDIGNOで30Mbps・。嫁のGXは10Mbps位。普通に地下鉄でもLTEはいって20Mbpsでてるし。



後は電池がむっちゃ持ちますね。まぁ比較対象が1.5Ghz帯にしか対応してない1800mAhなXperiaSなんで、800Mhz帯対応してて2500mAh詰んでるDIGNOと比較するのもアレですが。
XperiaSだと、会社いって昼過ぎには60%前後で、会社で充電して家に着くと50%前後。
DIGNOだと会社いって充電せずに家に帰ってきても残り50%。めっちゃ持ちますね。

あと最後のクリップボード管理アプリが超ウザイ。なにこれ。
消したいんだけど消し方ワカランし。
これだからガラスマは('A`)

感想らしくもない感想だけど、取り敢えずサブ端末予定機としては充分な端末すな。
やっぱこれって流石京セラって事なのか?