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生存的環境有許多快速達成反饋的科技,使得人的真實相處慢慢的喪失,而不能體驗跟享受這個世界帶來的美好。

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

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


2016年12月28日 星期三

高等遊民的意思



高等遊民,是日本明治時代至昭和初期大學畢業後沒就業學生的稱呼,他們以閱讀為主要活動,政府認為他們無所事事,容易接觸自然主義、社會主義、無政府主義等危險思想。
高等遊民以讀有興趣的書為主要活動,很多人最後成為作家,如夏目漱石、石川啄木和川端康成。
最終在昭和初期,因對中戰爭和一系列對外戰爭帶來的戰爭景氣和國家總動員法實行,就職困難開始解決。


2016年12月27日 星期二

[tech_note] firebase push id Unique Identifiers method guid 產生方法


The Firebase Blog: The 2^120 Ways to Ensure Unique Identifiers https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html

昨天剛好看到一篇 firebase 提到,怎麼產生不重複的 guid的方式。


What's in a Push ID?

A push ID contains 120 bits of information. The first 48 bits are a timestamp, which both reduces the chance of collision and allows consecutively created push IDs to sort chronologically. The timestamp is followed by 72 bits of randomness, which ensures that even two people creating push IDs at the exact same millisecond are extremely unlikely to generate identical IDs. One caveat to the randomness is that in order to preserve chronological ordering if a client creates multiple push IDs in the same millisecond, we just 'increment' the random bits by one.
To turn our 120 bits of information (timestamp + randomness) into an ID that can be used as a Firebase key, we basically base64 encode it into ASCII characters, but we use a modified base64 alphabet that ensures the IDs will still sort correctly when ordered lexicographically (since Firebase keys are ordered lexicographically).

使用 timestamp + randomness 在使用 base64 encode 而成,實作上,只要是產生的時候, timestamp 還沒改變,就把最後一個 bit +1 。 
這些gits 是個版本的實作方式。
JavaScript code for generating Firebase Push IDs https://gist.github.com/mikelehen/3596a30bd69384624c11
Firebase push algorithm in Python (ref: https://www.firebase.com/blog/2015-02-11-firebase-unique-identifiers.html) https://gist.github.com/risent/4cab3878d995bec7d1c2


ref
[tech_note] hackpad 的 unique padid 產生方式 / etherpad 與 appjet - peicheng note
http://peichengnote.blogspot.tw/2015/10/technote-hackpad-unique-padid-etherpad.html
Parse.com ObjectId 產生方法 unique id - peicheng note http://peichengnote.blogspot.tw/2016/01/parsecom-objectid-unique-id.html

2016年12月26日 星期一

[電影] 火線掏寶 War Dogs




《火線掏寶》(英語:War Dogs,前稱作Arms and the Dudes)是一部於2016年上映的美國傳記犯罪戰爭喜劇片,由陶德·菲利普斯執導,並和史考特·巴德尼克、布萊德利·庫柏、布萊恩·祖里佛共同監製,而劇本則由菲利普斯、史蒂芬·欽、傑森·斯米洛維奇共同負責。電影改編自蓋·羅森在《滾石》上撰寫的文章《Arms and the Dudes》[3]。由麥爾斯·泰勒和喬納·希爾分別飾演主角大衛·帕克歐茲與伊弗倫·佛羅里,其他主演包括安娜·德哈瑪斯與J·B·布蘭克。
《火線掏寶》於2016年8月19日在美國上映。

故事改編自真人真事。主要敘述於07年冬天,兩個從未上過戰場的年輕軍火商人大衛和伊弗倫為了想要一夜致富而接受了美軍和阿富汗的軍火招標,但兩人很快察覺到自己將深陷於危機之中,這使得他們必須想辦法平安回家。


抓準機會跟把握時機,還有人面對一些誘惑的時候又會怎麼去應對。



2016年12月23日 星期五

Titan Gremlin Server start http rest server solve "not a WebSocket handshake request: missing upgrade”




Titan 1.0 配置好啟動後,如果出現
“not a WebSocket handshake request: missing upgrade”
其實預設是啟用 WebSocket 的

如果要啟用 Gremlin  server 的 http interface

可以在下面 file 註解到websocket channel 增加這行 啟動 HttpChannelizer

 conf/gremlin-server/gremlin-server.yaml file:


channelizer: org.apache.tinkerpop.gremlin.server.channel.HttpChannelizer

三年的試驗 three years startup retrospective



上一篇文章促使我開始反思,
從 2013 年聖誕節前夕,上線了一個service
一路走到可以自動營運的程度。

以前前期來說,一直投入不少時間在摸索,不過到後來真的可以驗證,這樣的模式是有一定的成效的。

這些服務,主要就是在測試一些技術性的細節。

驗證一些,人數不需要太多,但是有一定經濟的規模的商業模式。

期望,在未來的一年內,能夠基於這樣的基礎來從事新的試驗。



2016 聖誕節前夕







2016年12月22日 星期四

Derek Sivers 回復 創業的堅持


Derek Sivers  一直是我很推崇的(前)創業家

2016的年尾聲,他整理了他回答的三萬多個問題給一萬多個人的內容摘要。

In 2016, I answered 30,904 emails from 11,971 people. It was practically a full-time job. These are the most common questions.

Frequently Asked Questions | Derek Sivers
https://sivers.org/faq


有一個問題,為何我的事業或讀者沒有快速的增長?
這是個很有趣的問題跟回答,回答他的過去與看法。

CD Baby 在 還沒起飛前,他連續四年每天都工作12 ~18 個小時。
他從1994 年起,也連續不停寫作了22年。

告訴我們, Keep pushing, but be patient.

Why isn’t my business or audience growing faster?

I worked on CD Baby for 12-18 hours per day, 7 days per week, for four years before it really took off.
As for an audience, I’ve been creating and posting things online for free non-stop since 1994. Yep, that’s 22 years now. And keeping in touch with everyone I met that whole time.
Keep pushing, but be patient.


2016年12月19日 星期一

[blog] 2016 年文章發文數回顧


最近每一年都又統計回顧一下blog 的發文數
2017 的發文數截至目前加上這篇應該是 78 篇
遠遠少於去年 155篇的一半阿

由於時間的抽空與多樣的改變,導致自己也越來越隱藏對自己的感情與對話了。


 



[linux] find 找出 檔案大小是0 且 檔名長度的文件 並且刪除



找出檔案大小為零 且 檔名長度是6 的檔案

find ./ -size 0 -name "??????"

接著再混搭 xargs

find ./ -size 0 -name "??????"  | xargs -p rm -rf

使用 -p 可以先看一下執行怎樣的 command

確認無誤後使用

find ./ -size 0 -name "??????"  | xargs rm -rf

2016年12月6日 星期二

[docker] how to install docker on Ubuntu 16.04 如何在 Ubuntu 16.04 安裝 Docker



如何在  Ubuntu 16.04  安裝 Docker
在 EC2 上啟用了一台新的 instance ,透過下面步驟安裝 docker 的環境


  • uname -r
    確認一下  kernel version 是在 3.10 以上,不過這個在 16.04  上預設是必然的
  • sudo apt-get update
  • sudo apt-get install apt-transport-https ca-certificates
  • sudo apt-key adv                --keyserver hkp://ha.pool.sks-keyservers.net:80                --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
  • echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
    增加 source list 並且 更新
  • sudo apt-get update
  • apt-cache policy docker-engine
    驗證一下 apt 來源是否是正確的
  • sudo apt-get update
  • sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
  • sudo apt-get update
  • sudo apt-get install docker-engine
  • sudo service docker start
  • sudo docker run hello-world
  • sudo docker ps

[influxdb] select MEASUREMENT ERR: error parsing query: found FROM, expected identifier at line 1, char 15





使用 influxdb  command line 要 select MEASUREMENT 時

ERR: error parsing query: found FROM, expected identifier at line 1, char 15
> select * from foo2.counter
ERR: error parsing query: found foo2.counter, expected identifier at line 1, char 14


原來是要加上 double quote

> select value from "foo2.counter"
name: foo2.counter
------------------
time value
1480992498000000000 2


select MEASUREMENT ERR: error parsing query: found FROM, expected identifier at line 1, char 15


[0.9.2] (regression) Error reading from measurement named "Measurement" · Issue #3467 · influxdata/influxdb
https://github.com/influxdata/influxdb/issues/3467

2016年11月21日 星期一

[mac][vim] error: There was a problem with the editor 'vi'. Please supply the message using either -m or -F option.


遇到

error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.


使用

$ git config --global core.editor

指定編輯器

2016年11月13日 星期日

[mac] mac 使用 android 的 usb 網路共用




除了使用 手機的無線基地台功能,也可以透過 usb網路共用的設定分享網路出來。



只要裝了

HoRNDIS: USB tethering driver for Mac OS X | Joshua Wise's domain
重開機後, android 手機插入電腦 開啟 usb網路共用 如果有讀取到就可以使用網路。




2016年11月11日 星期五

[哲學思想] 你為了什麼工作的呢 ? 重版出來



這幾張圖示最近在 看日劇 "重版出來" 所節錄下來的





今天整理了北京的照片,心理才想著

  • 好像時光回溯,之前回來的幾個心得
    • 他們只是比我們知道什麼時候該做什麼事情,並且好好去做
    • 很多事情要立即的去做



2016年11月9日 星期三

[python] datetime string with timezone to timestamp 轉換有時區的時間字串到時間戳



有個需求是把 時間字串轉成 epoch 的 timestamp

這個字串來說 "2016-11-07 15:47:33" UTC+8
轉換成 iso 8601 表示的話

2016-11-07T15:47:33+08:00

轉成 timestamp就是  1478504853


int((datetime.strptime(t, "%Y-%m-%d %H:%M:%S") - timedelta(hours=8)).strftime("%s")) - time.timezone

不使用其他lib的思路如下,先把 time string parse成 datetime object ,
但是因為UTC +8 跟 UTC 差了八個小時 ,所以減去 timedelta 八小時 ,就是UTC 的datetime string 。

是使用 strftime 轉成 timestamp 時,會因為環境的timezone設定有影響, 會以為這個 datetime object 是 目前的 timezone 所以,再減掉 time.timezone。
就得到最後的 timestamp。


>>> t
'2016-11-08 11:50:21'
>>> int((datetime.strptime(t, "%Y-%m-%d %H:%M:%S") - timedelta(hours=8)).strftime("%s")) - time.timezone
1478577021
>>> time.timezone
-28800



另外一個使用 pytz 的作法


import pytz
from datetime import datetime,timedelta

tp_timezone = pytz.timezone('Asia/Taipei')
tsd = datetime.strptime(t, "%Y-%m-%d %H:%M:%S").replace(tzinfo=tp_timezone)
timestamp = int(tsd.strftime("%s"))