2017年4月21日 星期五

[python] slackclient python 2.6 "python": "Python/{v.major}.{v.minor}.{v.micro}".format(v=sys.version_info), AttributeError: 'tuple' object has no attribute 'major'


slackclient  在 python 2.6 的的環境下使用會出現下列錯誤

root@hc2[/usr/lib/python2.6/site-packages/slackclient]{21:05}
# python ~/workspace/slackbot/disk_bot.py
Traceback (most recent call last):
 File "/root/workspace/slackbot/disk_bot.py", line 31, in <module>
   sc = SlackClient(slack_token)
 File "/usr/lib/python2.6/site-packages/slackclient/_client.py", line 28, in __init__
   self.server = Server(self.token, False)
 File "/usr/lib/python2.6/site-packages/slackclient/_server.py", line 27, in __init__
   self.api_requester = SlackRequest()
 File "/usr/lib/python2.6/site-packages/slackclient/_slackrequest.py", line 21, in __init__
   "python": "Python/{v.major}.{v.minor}.{v.micro}".format(v=sys.version_info),
AttributeError: 'tuple' object has no attribute 'major'

Error message 中指出, 是 sys.version_info 那些參數在 python 2.6 中沒有提供
修改如下

/usr/lib/python2.6/site-packages/slackclient/_slackrequest.py

import platform
from .version import __version__
            
            
class SlackRequest(object):
   def __init__(self):
            
       # __name__ returns 'slackclient._slackrequest', we only want 'slackclient'
       client_name = __name__.split('.')[0]
       client_version = __version__  # Version is returned from version.py
            
       # Construct the user-agent header with the package info, Python version and OS versi
       self.default_user_agent = {
           "client": "{0}/{1}".format(client_name, client_version),
           #"python": "Python/{v.major}.{v.minor}.{v.micro}".format(v=sys.version_info),   
           "python": "Python/{v[0]}.{v[1]}.{v[2]}".format(v=sys.version_info),
           "system": "{0}/{1}".format(platform.system(), platform.release())
       }    
            
       self.custom_user_agent = None

Usage of sys.version_info.major causes crash on python < 2.7 · Issue #79 · astraw/stdeb


2017年4月17日 星期一

[aws][sqs] get queue return None / SQS debug

SQS connection get_queue failed in China region · Issue #3440 · boto/boto
https://github.com/boto/boto/issues/3440

可以使用 debug = 2  看一下每一次的 requests
如果是 404 很大可能是這個 key 沒有 access 的權限

conn = boto.sqs.connect_to_region(
    "cn-north-1", aws_access_key_id=key_id, aws_secret_access_key=secret_key, debug=2)
q = conn.get_queue("my_queue_name")
send: 'GET /?Action=GetQueueUrl&QueueName=cloudtrail-bj&Version=2012-11-05 HTTP/1.1\r\nAccept-Encoding: identity\r\nContent-Length: 0\r\nHost: cn-north-1.queue.amazonaws.com.cn\r\nAuthorization: AWS4-HMAC-SHA256 Credential=yyyyyyyyy/20151222/cn-north-1/sqs/aws4_request,SignedHeaders=host;x-amz-date,Signature=xxxxxxxxxx\r\nX-Amz-Date: 20151222T140256Z\r\nUser-Agent: Boto/2.38.0 Python/2.7.10 Darwin/14.5.0\r\n\r\n'
reply: 'HTTP/1.1 400 Bad Request\r\n'
header: x-amzn-RequestId: c0b20366-324e-5054-be6c-4d95681e72c2
header: Content-Type: text/xml
header: Content-Length: 343


2017年3月15日 星期三

[startup]如何創造財富 How to make wealth Paul Graham


如何創造財富 How to make wealth – Ofa的手札
https://ofafa.wordpress.com/2015/08/10/%E5%A6%82%E4%BD%95%E5%89%B5%E9%80%A0%E8%B2%A1%E5%AF%8C-how-to-make-wealth/ 
How to Make Wealth http://paulgraham.com/wealth.html

n年後,再重閱 Paul Graham 駭客與畫家收錄的這篇 How to make wealth 感觸又更深一層

"如果你想要變得富有,你要如何做到呢?我想最好的賭法應該會是自己創業或是加入一家新創公司。這已經是數百年來持續被驗證相當有效的一個方式。Startup這個字大約是從1960年代開始,但它的內涵與中世紀開始的由資本家資助的航海探索其實是非常相似的。"

"你可以把新創公司視為是一種把工作時間壓縮到短短數年的方式,相較於用輕鬆的方式工作四十年,你在新創公司可以盡可能的在四年裡面努力工作。這個方式在科技業運作的特別好,而且你可以因為工作的很快獲得許多額外的好處。"


2017年3月8日 星期三

[startup]得到例會 談公司治理 談公司正式組織化的後延 羅振宇 羅胖


“我們盡可能拖,盡可能把這個公司正式組織化的那天往後拖,所以,直到這一天,我們公司依然是一家沒有層級,沒有部門,沒有考核,沒有一個字的管理規定,也沒有KPI,也沒有上下班時間的一家公司,到一百七十四人,我們仍然挺到了這個狀態。但是總有一天,你必須這些手段都得上,因為陌生人的協做。經濟學解決的就是這個問題,陌生人的大規模協做,如果不用管理手段,肯定將來是無法控制的,但是我們希望把那天拖的越久越好。 ” 

羅振宇

https://www.facebook.com/luogicshow/videos/1861588090779128/
32:30

2017年3月4日 星期六

2016 回顧 2017 展望


每一年都要寫下的展望與回顧,今年初,辦公室的妹妹問說,你今年有什麼想做的嗎?
我回答是,每一年都有回顧與展望,但是,可能要再次定義了。

今年的回顧與展望,特別的晚下筆,因為,這三個月就好像瞬息萬變的一直在流過,一直在變動,想不到一等再等就等到三月,這個心情也不一樣的時刻。

2016 一個充滿波折跟變動的一年,

  • 三四月又換了主管,又是一個新的挑戰跟生活,辦公環境也是瞬息萬變。
  • 升職了,可是有某些不如預期。
  • 五六月,因為知道爺爺的身體狀況。開刀後,進入了醫院。
  • 這段日子,實在是很煎熬,忙著工作上的事情,忙著心理的衝擊。
  • 8/29 轉換到新的 team去
  • 9/10 與爺的告別
前半年,再忙著自己的工作,後來,擔心的是家裡與工作上的轉換。
轉到新的地方,也度過了一個熟悉期,隨著11月公司的新成立,辦公室的遷移,到了另外一個高峰。不得不說,這邊的夥伴也真是一時之選。能有這樣的機會也是千載難逢。

途中也在重閱了不少經典 from zero to one, 或是 Derek Sivers Anything You Want ... 
也一直思考著,若是自己創業的同時,要有怎樣的作為。
當時的設定就是scale ,怎麼有了體系後的 scale 與 growth hack 的作法了。
下半年,也就是心靈探索的時間了。

這年來說side project的技術實驗算是已經成熟,期望的是找個主題。
三年的試驗 three years startup retrospective - peicheng note http://peichengnote.blogspot.tw/2016/12/three-years-startup-retrospective.html

16年一直設定的財富自由目標,
也就是當 side project 收入大於本業收入的時候,自己的思考模式也會變得不一樣。
那時候,很怕長得太快,因為,會賺錢太容易,撇除世俗的追求,在來的追求都是更高層次的。
趕在parse.com 結束的尾聲,把service的轉到新的kinvey 。
過年期間,因為被 kinvey suspend 一段時間,產生的新的廣告調整方式。
一度每日衝破 100$ ,不過,三月才知道其中有很多無效點擊。


武術上,只有一搭沒一搭的繼續練著,吳家太極拳的拳架。若是有機會,應該學齊吳家的拳劍刀槍,在拳的基礎上的撲跌技法。








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


2017年1月19日 星期四

how to solve port is already in use 怎麼解決



連續啟動某個程式,發現之前的 port 還在使用沒有正常釋放。
port is already in use

可以使用

netstat -anp tcp | grep 5000

看一下 pid 在 kill -9 pid

如果沒有 p 這個 option

可以使用

lsof -i tcp:5000


2017年1月15日 星期日

從0到1 From Zero To One Peter Thiel



之前總是斷斷續續的讀這本書,終於知道為什麼黑天鵝效應的作者,說這本書要讀三遍了。

大綱
自序  從0到1
1    未來的挑戰
2    1999年的教訓
3    打造有創意的獨占企業
4    競爭的迷思
5    後發優勢
6    成功不是樂透彩
7    跟著錢走
8    偉大的企業都有祕密
9    基礎決定命運
10    組織的幫派文化
11    顧客不會自動上門
12    人類與電腦的新關係
13    潔淨科技與特斯拉
14    創業家無可取代的特質
結語      打造更美好的未來
致謝

裡面提到一些很不錯的觀念包跨在開創一個新的事業,是沒有特別成功方程式的,主要是創辦人對商業的根本想法。

講初始的夠小團隊應該是在同艘船上,在股權分配上的考量。

文化怎麼去塑造。

不同時期在看這本書總又不同想法。



2017年1月14日 星期六

[電影] 師父 徐浩峰



師父 (電影) - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/%E5%B8%88%E7%88%B6_(%E7%94%B5%E5%BD%B1)

《師父》(英語:The Master),是一部2015年中國動作劇情片,由徐浩峰編劇並執導,改編自徐浩峰創作的同名小說。廖凡、宋佳領銜主演,蔣雯麗、金士傑、宋洋、黃覺參演,中國於2015年12月11日上映。

講述詠春拳宗師陳識北上天津開館,由此觸發天津武林一系列恩怨情仇的故事。


===

逝去的武林 開始就很關注徐浩峰的動態,他不只想描寫出一般人寫出的武俠精神,更深刻的去寫一個時代的故事。就是因為時代的故事,讓整個武林環境也跟個轉變。

武人也是人,武林不能脫離社會生存。
整個片子,是填充式的一幕一幕的填滿你。
就因為對各項武術的考察與了解,在動作與兵器使用上,也有不少呈現。

或許從冷兵器時代,轉變到熱兵器時代,到軍人時代,武人也在問自己,這一身技藝還有何處去。

從保鏢為業的標局的時代結束,這也影響了不少。 當廣授門徒變成一門生意,到底什麼應該要教真的,什麼不應該教出來。
不教,就會這這歷史洪流消失,教呢?在各個方面又要考量,教與不教,傳承與不傳承,就又變成一個時代的大問題了。

整個電影會讓你思考你所執著的事物,有時候轉過身看,對當時的想法會有所改變嗎?


原文在草稿中是 2016.12.04

[電影] 全面攻佔:倒數救援 Olympus Has Fallen 2013



全面攻佔:倒數救援 - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/%E5%85%A8%E9%9D%A2%E6%94%BB%E4%BD%94%EF%BC%9A%E5%80%92%E6%95%B8%E6%95%91%E6%8F%B4

是一部於2013年上映的美國動作電影,由安東尼·福奎阿執導,傑拉德·巴特勒、艾倫·艾克哈特和摩根·費里曼主演。

擔任白宮特勤人員的麥克班寧(傑哈巴特勒飾),在護送阿瑟總統(亞倫艾克哈特飾)與總統夫人前往正式晚宴途中,禮車竟意外打滑失控吊掛懸崖。危急時刻班寧雖竭盡全力搶救,卻仍然只能在有限的時間裡救出總統一人,班寧也因總統夫人在此事件中身亡而被遣離白宮降轉至財政部擔任內勤。

原以為事件就此落幕,沒想到就在兩年後南北韓啟發戰爭之際,美國總統在國慶第二天接待南韓使者(袁瑞克飾)來訪時,竟慘遭攻擊,白宮更被南韓使者肆無忌憚的佔領,第一首府此刻陷入前所未有的恐怖行動危機,而國防部所有頂級特務逐一陣亡,班寧雖已不是總統隨扈的特勤人員,但愛國心切的他趁著混亂局勢巧妙潛進白宮,隻身一人對抗恐怖分子,展開艱險重重的救援總統行動……


====

很多事情就算過了在內心還是放不下,還是會緊緊繫著觀望著,當有需要的時候,還是會在挺身而出。

勇敢的再次面對,跟末忘初衷,才能再次克服曾經以為的恐懼


note 然後發現這篇從註記以後一直在草稿內。 17.01.14 11:03 pm
原時間應該是 2016.12 .03 or 04

2017年1月9日 星期一

[python] 如何處理大型 json 檔案 streaming JSON parser using ijson



如何處理一個巨大的 json file , 在 XML 不產生dom tree 的時候可以改用 SAX streaming parse XML ,那在 json 的處理上有什麼類似的處理方式嗎?


IIvan Sagalaev http://softwaremaniacs.org/about/en/  有寫了一個

ijson Iterative JSON parser with a standard Python iterator interface

ijson 2.3 : Python Package Index https://pypi.python.org/pypi/ijson/

一個簡單的例子
json file

{
"results":[
  {
  "author":"",
  "board":"myboard",
  "body_raw1":"raw"
  },
  {
  "author":"",
  "board":"myboard",
  "body_raw1":"raw"
  }
  ]
}


import ijson
import os, sys
D = {}
plen = len('results.item.')
for prefix, the_type, value in ijson.parse(open('./b50.json')) :
    #print prefix, the_type, value
    if prefix == 'results.item' and the_type == 'start_map' :
        D = {}
        continue
    if prefix == 'results.item' and the_type == 'end_map' :
        for k,v in D.items():
            print k,v
        print '-----'
        continue
    if 'results.item.' in prefix:
        D[prefix]= value


2017年1月7日 星期六

[think] 千禧世代在職場上到底出了什麼問題? - Simon Sinek 賽門.西奈克


最近很火紅的一個影片

Simon 最有名的 TED 演講,也就是黃金圈圈(Golden Circle)的理論 。
Why How What

Why 理念跟目標
How 執行的方法跟過程
What 最終呈現的產品與領導風格

The Golden Circle

WHAT
Every person on the planet knows What they do.
This is your job title, function, the products you sell or services you offer.
HOW
Most people know How they do it.
These are the things they do that make them special or set them apart from their peers.
WHY
Very few people know WHY they do what they do.
The Why is not about making money - that’s a result. The Why is a purpose, cause or belief.
Your Why is the very reason you exist.






千禧世代在職場上到底出了什麼問題? - Simon Sinek 賽門.西奈克 - YouTube
https://www.youtube.com/watch?v=KsGiDrt5U2c 




如同Leaders Eat Last 談到人的滿足是由多巴胺達成生理獎勵,而millennials生存的環境有許多快速達成反饋的科技,使得人的真實相處慢慢的喪失,而不能體驗跟享受這個世界帶來的美好。

從四個面向講起,教育的影響,科技的發展,導致沒有耐心的等待事情發生的機會,還有整個環境的影響,造就這樣的狀況。

要避免快速回饋的成癮情況,這也是是科技發展,對人與人的互動跟體驗的影響。