2017年2月26日 星期日

[influxdb][statsd] auto create set count in influxdb db every 10 second set 會自己每十秒統計資訊


在使用 statsd 與 influxdb 的時候發現 statd.set 的值每隔 10秒 就會  新增一個count 統計。(下圖已經改成 5 秒 )


這個值可以在 statsd 的 config 內修改。

/opt/statsd# vim config.js

  graphiteHost: '',
  graphitePort: '',
  port: 8125,
  flushInterval: 5000,
  keyNameSanitize: false,
  backends: [ 'statsd-influxdb-backend' ],


/opt/statsd# bash -c cd /opt/statsd && /usr/bin/nodejs stats.js config.js 1>/var/log/statsd.log 2>&1 & echo $! > /var/run/statsd.pid

2017年2月21日 星期二

[linux][xenserver] 沒有 xencenter 狀況下怎麼連結 vm 的 console



[root@xenserver-hy03 ~]# list_domains
id |                                 uuid |  state
 0 | ab9c10e8-1ae3-4f47-8979-c030ae780398 |     R
 1 | 42577729-ffa9-2a21-cd23-aacb7e84de5c |    B H
 2 | e12978e9-1f71-da3b-d082-e81d6cc7918d |     RH
 3 | 25a65266-a501-6208-9ce5-2061393e7106 |     RH
 4 | d039f305-7a25-e900-baa5-14c288d272d4 |     RH
 5 | 8c682a7e-32ef-fa30-b6c4-620a3650d4d9 |     RH
 6 | eb8a92be-f59b-1a3c-fa9a-6d1a64cc296b |    B H

查到想要連的vm的 dom_id ,這裡的例子是 6 。取得 vnc port
[root@xenserver-hy03 ~]# xenstore-read /local/domain/6/console/vnc-port
5906

這樣就取得了 vnc port
因為機器放在內網,把port bind到,server上。
ssh -NR  :5906:localhost:5906 root@server_ip




2017年2月20日 星期一

[mac][python] mac 下 brew install gtk ,pygtk in virtaulenv


在 mac 中,想使用 gtk 的工具
知道要install gtk , pygtk

(mypython) peicheng@IronMan[~/workarea/openxenmanager]{10:48}
$ python openxenmanager
Traceback (most recent call last):
 File "openxenmanager", line 23, in <module>
   import gtk
ImportError: No module named gtk

直接使用 pip install 出現,

$ pip install pygtk
Collecting pygtk
  Using cached pygtk-2.24.0.tar.bz2
    Complete output from command python setup.py egg_info:
    ********************************************************************
    * Building PyGTK using distutils is only supported on windows. *
    * To build PyGTK in a supported way, read the INSTALL file.    *
    ********************************************************************

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/bn/73_b2959181dz267sk7x5y080000gp/T/pip-build-g0KAka/pygtk/

所以使用 brew install gtk pygtk

(mypython) peicheng@IronMan[~/workarea/openxenmanager]{10:49}
$ brew install gtk
(mypython) peicheng@IronMan[~/workarea/openxenmanager]{10:49}
$ brew install pygtk
(mypython) peicheng@IronMan[~/workarea/openxenmanager]{10:49}
$ python openxenmanager
Traceback (most recent call last):
 File "openxenmanager", line 23, in <module>
   import gtk
ImportError: No module named gtk

安裝好還是有這個訊息,環境下是有使用 virtaulenv的 brew install 的 packages 在另外一個目錄下,
切到 virtualenv  的 site-packages 的路徑下

cd /Users/peicheng/env/mypython/lib/python2.7/site-packages

ln -s /usr/local/lib/python2.7/site-packages/gtk-2.0 ./gtk-2.0
ln -s /usr/local/lib/python2.7/site-packages/pygtk.pth pygtk.pth


這樣就可以正常使用了

2017年2月16日 星期四

[linux] crontab using date as variable in command / crontab 中使用 date 當參數


有個需求是定期的 export ga 資料到 Amazon s3 上,在使用 Amazon EMR 做分析。

# export ga
0 0 * * * /bin/bash /home/ec2-user/ga_fetcher/put_data_to_s3.sh `date -d "yesterday" +"%Y%m%d"` > cron_export_ga.log
本來使用這樣的設定,在 bash 下跑過也可以正常執行。
看了 cron 的 log
$ sudo cat /var/log/cron | grep put_data

Feb 16 06:16:01 ip-10-0-3-153 CROND[19830]: (ec2-user) CMD (/bin/bash /home/ec2-user/ga_fetcher/put_data_to_s3.sh `date -d "yesterday" +")
發現 crond 的 command 只抓到 +

其實遇到 % 需要 escape ,在前面加上 \ 解決問題。

$ crontab -l
# export ga
0 0 * * * /bin/bash /home/ec2-user/ga_fetcher/put_data_to_s3.sh `date -d "yesterday" +"\%Y\%m\%d"` > cron_export_ga.log


Feb 16 06:19:01 ip-10-0-3-153 crond[2546]: (ec2-user) RELOAD (/var/spool/cron/ec2-user)
Feb 16 06:19:01 ip-10-0-3-153 CROND[19845]: (ec2-user) CMD (/bin/bash /home/ec2-user/ga_fetcher/put_data_to_s3.sh `date -d "yesterday" +"%Y%m%d"` > cron_export_ga.log)

2017年2月14日 星期二

[linux][shell script] 使用 date 來取得前一天的日期



因為有些機器的時區不同,在server 上又不想調整系統的時間設定。
如果想定期的作業一些事情,可以使用這樣的方式。

每天去處理昨天的產生的資料。


[ec2-user@ip-10-0-3-15 ga_fetcher]$ date
二  2月 14 03:23:36 UTC 2017

[ec2-user@ip-10-0-3-15 ga_fetcher]$ date -d 'yesterday' +%Y%m%d
20170213

如此一來,我們每天UTC time 00點,再處理昨天的資料。


2017年2月13日 星期一

[TED]紹恩.阿克爾 (Shawn Achor): 優質工作的快樂秘訣 | TED Talk



紹恩.阿克爾 (Shawn Achor): 優質工作的快樂秘訣 | TED Talk | TED.com
https://www.ted.com/talks/shawn_achor_the_happy_secret_to_better_work?language=zh-tw

我們相信工作會帶來幸福快樂,但是能不能反過來想呢?心理學家紹恩.阿克爾在TEDxBloomington,以緊湊又有趣的演說主張:其實是快樂激發生產力。

看過這個Talks幾次每次都有不同的收穫,
當你腦內分泌多巴胺時,你會覺得更快樂,更容夠適應世界。
這裡有提供一個簡單的訓練方式,
  1. 每天寫下3件感激的事
  2. 每天3件新事
  3. 連續21天
腦部開始記住這個模式。
先從正面掃描世界,而不是先看負面。


"但其實我們的腦子是以相反的方式在運作的 如果你可以提升一個人目前的積極程度 那麼他的腦子會經歷 我們稱之為"快樂優勢"的感覺 就是當你的腦部處於積極狀態 會比消極時、中立時或者處在壓力時 顯著表現更好 你的理解力提升,你的創造力增加,你的活動力也升高 事實上我們發現 每一種業務成效都進步了 你的創造力在你的腦部處於積極狀態時, 會比處於消極、中立,或者有壓力時,提高31% 銷售量提高37% 醫師如果感覺積極時, 會比處於消極、中立,或者有壓力時, 看診速度快19%,接下來的診斷也更精準 所以說我們要把公式反過來寫 如果我們可以找到讓當下就很積極的方法 那麼我們的腦子就會更靈活 我們就可以更努力、更快的工作,而且更明智。

我們需要想辦法把公式反過來寫 我們才能開始想像我們的腦子 到底能做到什麼地步 因為在你感覺積極時 多巴胺會大量湧入你的身體裡 而多巴胺有兩種功能 它不但讓你感覺更快樂 它還會把你腦內所有的學習中心打開 讓你能以不同的方法適應這個世界。

我們發現有方法可以訓練你的腦部 讓它能變的更積極 只要每天兩分鐘連續做21天 我們確實可以讓你的腦子重新連結 讓你的腦部運作 更樂觀更成功 目前我們在每一個與我合作的公司 以練習這件事做研究 讓他們的員工寫下3件他們感激的事 每天3件新事,連續21天 計劃終了時 他們的腦部開始記住這個模式 先從正面掃描世界,而不是先看負面。

回想一下過去24小時 你所經歷的一件正面的事 讓你的腦子重溫一次這種感覺 就像運動讓你的腦子知道你的行為很重要 我們發現沈思會讓你的腦部 克服我們創造的文化過動症 就是試著在同一時間內多工 沉思讓我們的腦子每次只專注一件工作 然後最後,偶行小善就變成隨時行善 有些人一打開電子信箱 就會寫一封充滿正面話語的電子信 讚美或是謝謝在他們社交群中的某人。

藉由做這些活動 藉由訓練你的腦子 就像我們訓練我們的身體 我們發現我們可以讓 幸福與成功關係的公式倒著寫 這麼做不但會激起正面的漣漪 還能創造真正的革命"


[哲學思想] 謝哲青:我欣賞的女孩子, 就是獨立, 然後善良; 但是要世故。


哲青在一個訪問中提到他的愛情觀,

"我欣賞的女孩子,就是獨立,然後善良;但是要世故。
很少人會把世故,
放在條件裡面對不對?
因為我認為,善良世故的人,
他才能夠保護家,也可以保護自己,
如果你是善良又天真的人,
沒有辦法,真的"

以前看過這個報導還沒有這麼深刻的體驗,
現在終於知道,原來這是多麼深刻的描繪。

"我欣賞的女孩子, 就是獨立, 然後善良; 但是要世故。"


Sophisticated Lady:世故正好,天真一點不剩 | 互動玩娛樂 | 圖表看時事 | 時事話題
http://theme.udn.com/theme/story/6776/2269132
謝哲青的世故 @ RainDog :: 痞客邦 PIXNET :: http://raindog.pixnet.net/blog/post/30097637-%E8%AC%9D%E5%93%B2%E9%9D%92%E7%9A%84%E4%B8%96%E6%95%85

[aws] 跨帳號取用 s3 資源 how to access s3 in the cross-account policy


想要存取跨越不同帳號的 s3 ,應該怎麼設定呢?

有個數據分析的需求是,資料定期的整理到 B 帳號的 s3 上。但是,一般分析是使用 A 帳號的 s3 。


0 .
使用 B 帳號建立好 s3 bucket



可以在 Edit bucket policy  設定

以下是是一個範例 可以代換 accountAid 跟 my-table


{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "myconfig",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::accountAid:root"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-table/*"
},
{
"Sid": "myconfig",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::accountAid:root"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::my-table"
}
]
}

這樣便設定好讓 A 帳號也可以讀取 B 帳號建立的 s3 bucket


可以使用 s3 指令驗證


$ aws s3 ls s3://my-table --profile accountA
2017-02-13 15:31:50          6 mytest


$ aws s3 cp /tmp/mytest s3://my-table/zzz --profile accountA
upload: ../../../tmp/mytest to s3://my-table/zzz


awscli 多重 profile 可以加在 ~/.aws/credentials

[accountA]
aws_access_key_id = aaaaa
aws_secret_access_key = bbbb
region = us-west-1



詳細的文章資料可以參考 Amazon 上的文件
Example 2: Bucket Owner Granting Cross-Account Bucket Permissions - Amazon Simple Storage Service
http://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html



[git] how to revert the first commit 怎麼 revert 第一個 HEAD commit



一般在提交後,想要做 revert 上一個 commit
使用 git reset HEAD^

但是在只有 第一個commit 下,可能會遇到下面問題

* f1a6389 - (16 minutes ago) init - PC (HEAD -> master, origin/master)

$ git reset HEAD^
fatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'


使用下面語法,藉由直接刪除 HEAD ,回復到還沒有 commit 的狀態。

git update-ref -d HEAD


修改後 強制推到遠端 (請小心並清楚知道現在在做什麼)

git add yourfiles
git commit -m 'init'
git push origin master -f