2014年12月8日 星期一

android studio setup 紀錄

一般來說一路按下一步到底就好

有一個地方偵測JDK 7 or JDK 7以上版本的地方一直偵測不到

跳出的提示視窗有說如果偵測不到的話可以用手動加入的方式

找到java jdk底下的bin/java.exe檔,再加入到環境變數的path中(如下圖)












加完後便不會有偵測失敗的問題

(目前直接使用JDK8的版本,不知道支援度如何,先測試看看)

2014年11月3日 星期一

python logging

最近有實際需求後才發現logging是個相當好用記錄log的model...

所以在這邊稍微記錄一下平常使用logging的方法

這程式主要的功能是希望每次運行程式後能將log續寫至指定的檔案

並在檔案達到maxBytes指定的大小後便新增新的log檔

新增到backupCount指定的數量後刪除最舊的檔案


# -*- coding: utf-8 -*-

import logging

from logging.handlers import RotatingFileHandler

def log():

        file_path = '{0}/file name'.format(os.path.dirname(os.path.abspath(__file__)))

        # maxBytes => 多少bytes後就開始切檔案,這裡設定2M

        # backupCount => 檔案大於幾個後會開始刪除舊檔案,以這邊為例子就是新增10個檔案後便會開始刪除舊的檔案

        Rhandler = RotatingFileHandler(file_path, maxBytes=2*1024*1024, backupCount=10)

        logger = logging.getLogger(__name__)

        logger.setLevel(logging.INFO)

        logger.addHandler(Rhandler)



        logger.debug("debug message ... 1")

        logger.info("info message ... 2")

        logger.warn("warn message ... 3")

        logger.error("error message ... 4")

if __name__ == '__main__':
        log()

2014年10月29日 星期三

Amazon RDS backup snapshot using python

看很多Amazon auto backup都是直接下指令排序在建立snapshot

由於對ubuntu指令不是很熟,所以就用python來撰寫一個自動建立snapshot的程式,超過15天的snapshot就刪除

系統: ubuntu 14.04

事先安裝:
1. sudo apt-get install awscli
2. sudo apt-get install rdscli 
(這個應該是可以不用安裝,沒試過解除安裝後是否可以運行,有興趣的可以自行嘗試看看)
3. sudo pip install boto
(Python package that provides interfaces to Amazon Web Services)


code example:
# -*- coding: utf-8 -*-
import boto.rds, datetime, time

def day_process(date):
        # process rds iso datetime return format => '%Y-%m-%d' for calculate
        d = datetime.datetime.strptime(str(date), '%Y-%m-%dT%H:%M:%S.%fZ')
        d = datetime.datetime.strptime(str(d).split(" ")[0], '%Y-%m-%d')
        return d


# connect rds
conn = boto.rds.connect_to_region('your rds region'\
        , aws_access_key_id = 'your aws_access_key_id'\
        , aws_secret_access_key = 'your aws_secret_access_key')

# today date
NToday = datetime.datetime.today().strftime('%Y-%m-%d')

# db instance list
db_instance = [put your instance list here, so we can use it for loop to process all db instance]

for db in db_instance:

    # get all db instance snapshot
    snap = conn.get_all_dbsnapshots(None, db, None, None)

    # snapshot list for snapshot id, snapshot_create_time
    snapshot_list = []
    for v in snap:
        temp_dict = {}
        temp_dict['snap_id'] = v.id
        temp_dict['snap_time'] = v.snapshot_create_time
        snapshot_list.append(temp_dict)

    # sort snapshot list
    sort_list = sorted(snapshot_list, key = lambda x:x['snap_time'])

    try:
        # create daily snapshot
        conn.create_dbsnapshot("{0}-{1}".format(db, NToday), db)

        # latest_day & oldest_day & se_lat_day
        latest_day = datetime.datetime.strptime(NToday, '%Y-%m-%d')
        se_lat_day = day_process(sort_list[len(sort_list)-1]['snap_time'])
        oldest_day = day_process(sort_list[0]['snap_time'])

        # snapshot keep days
        keep_day = 15

        if (latest_day-oldest_day).days and (se_lat_day-oldest_day).days >= keep_day:
            # for the situation over 2 snapshot > keep_day
            for li in sort_list:
                com_day_old = day_process(li['snap_time'])
                if (latest_day-com_day_old).days > keep_day:
                    conn.delete_dbsnapshot(li['snap_id'])

        if (latest_day-oldest_day).days >= keep_day:
            # for the situation only 1 snapshot > keep_day
            # delete snapshot
            conn.delete_dbsnapshot(sort_list[0]['snap_id'])

    except Exception as e:
        print e

2014年6月8日 星期日

android hash key 紀錄

這篇是將之前做過的FB相關應用前置動作紀錄一下

首先要產生hash key這篇就講得蠻清楚的了
http://blog.kenyang.net/2012/01/androidfacebook-login-api.html

再來是要怎樣將產生的key包進要生成的application裡(如下圖)