[影片心得]Steve Jobs遺失的採訪: 人才與創意管理的內功

Steve Jobs - The Lost Interview from Daniel Wagner on Vimeo.

##前提

最近MOD送我電影199 偶爾看到.. 覺得實在很棒… (雖然是20年前訪問… 而且結果大家都知道(爆雷))

##內容

完美的創意與完美的產品的差異 — 在於大量完美的工藝

“There is just tremendous amount of craftsmanship in between a great idea and a great product.”

“問題在於優秀的創意到產品之間存在著大量完美的工藝”

“And as you evolve the great idea, it changes and grows, it never comes out like it starts.”

實現創意的過程中…當你了解的越多…想法會變化甚至面目全非.

“Because you learn a lot more, you get into th subtleties, you also find the… There’s tremendous trade-off that you have to make.”

你不得一次次權衡利弊..做出讓步與調整.

##相關鏈結

[Docker] 跟朋友的Docker使用的Q&A

起因:

有個朋友看我貼了篇docker swarm的文章,於是跟我討論了一些docker的用法.

覺得整個討論相當有意義,於是徵求同意後把文章記錄一下.


整個討論:

討論應用的情境

朋友: 你也有在玩docker嗎?

: 當然…

朋友: 剛入門一週 在指點一下XD



朋友: 我目前只會裝跟build自己的image,打算把開發環境跟 production都換成docker.

: dockerize your all service 是個蠻好的課題

朋友: 目前還不是很知道deploy怎麼做比較好,不過我看他還有一堆有的沒的功能 太底層我不太會.

: deploy 就透過docker-compose 一個設定檔 db/web browser/service 都搞定. 至於Docker也不用看的太底層啦,你先搞懂基礎 docker,在看docker-compose 就已經出師了.

朋友: 所以我local 開發環境要deploy正式環境 用compose就可以,dockerfile有些指令我還看不太懂.

: 喔… 你是要deploy dev-> prod

: 沒關係.沒有人記得起來所有docker指令.docker console 大概是我覺得最討厭的指令集了.

朋友: 想要找個比較簡單的做法 : 那你看看我剛剛貼的swarm 朋友: 每次裝aws環境 裝到我快吐了




解釋Docker Compose 跟 Swarm應用差異

朋友: 所以compose是幹嘛的,swarm我看很多人在講分散式系統,我的需求很簡單 就是想要dev -> 多台production.

: 簡單的說

  • docker-compose 可以一次呼叫一群的docker container 並且設定串接在一起.
  • swarm 可以將全世界的container歸類在一起..你在local 就可以操控跨網路的container

朋友: 所以compose必須在同一台主機上

: 對…基本上. 但是docker-compose可以跟swarm混用

朋友: 就是一台很強電腦跑很多台東西 恩,混用我可以理解.那我應該要去看swarm.

: 一個docker-compose 例子.不過,你的方向是swarm.

然後我貼的那篇經驗談 好像就有提到 DEV->PRE PROD->PROD 的控制




拆解Services方法的討論

朋友: 所以你docker-compose在使用上有把 application / db / web server三個都要分三個container喔.自己dev環境也這樣搞嗎? : 能拆成這樣 到時候要換任何一個不用重啟container

朋友: 我是很懶 全部裝一起,production才會拆開.

: 現在不拆之後拆就會出問題…那就失去docker的好處

朋友: 不過local如果分開 production會比較輕鬆一點

: 而且重build 跟跑也快 才能節省時間啊.

朋友: 所以你這樣需要三個image嗎

: 對,就docker microservice 概念 基本上一個service 就應該要是一個image.之後才方便抽換.




關於Mac上使用boot2docker VM可能造成的問題

朋友: 這樣硬碟就爆了XD

: 你們不都是MBPR? 我128G,都沒講話 XD.

朋友: 我現在不知道為啥256g一直滿,打算把整台重灌. 然後全妝成docker,以後要砍環境比較快.

: 我docker都用windows 桌機跑 VM,然後MAC連過去. 你硬碟會爆應該是xcode,可以看看我這篇文章

記得經常去清一下 有是幾十G.

此外,MAC docker 跑VM 就算image 砍掉…空間一樣算喔 所以你又要看另外一個指令 docker-machine 把VM重啟 清理一下

朋友: 有這回事? 重開機會好嗎?

: 不會好 要砍掉VM 就像是VirtualBox 空間只會一直上去啊

朋友:你現在部落格用哪套啊?最近打算重做一個自己網站

:blog 用jekyll 架在github page

朋友:我現在mac上是用boot to docker

:大家都是 所以你空間有可能都是VM吃掉. 這個人repo 把所有都用docker image chrome/sublime/spotify 超屌




關於Virtual Box 砍掉已經用空間的方式

朋友: 要怎麼砍掉vm啊?

: docker-machine rm default 相關的看一下doc

記得砍掉docker-machine,要重啟跟重新設定port docker port 跟socket addr.可以看看這篇

朋友: 所以整個docker都是一個vm

: 對

朋友:砍掉那裡面東西都不見了吧

: 當然

朋友: 那這樣超麻煩勒

: 所以你先透過VBOX 看一下 到底有多少空間被吃掉 因為VM 空間是變大後不會縮回來的 (除非你用vboxresie vbox resize.

朋友:哪個指令看size? docker-machine inspect嗎?

: 是.. 不然virtual box UI也可以看

朋友:virtual box UI 在哪啊 裝好就有嗎

: 當初裝docker 都會裝一套 Virtual Box




討論結束

:這一串Q&A蠻有意義的.. 等等整理一下 變成一篇 blog…. Today I learn (again)

朋友: 你每天都整理一堆啊? 超強

:因為不整理會忘記..老了..整理起來 自己多懂一次.




心得

強者我朋友,不愧是強者.很能透過Q&A的方式來解答自己心中的疑問,也就是如何問對問題.又學了一課…

相關鏈結

程式設計週記[2016/03/11]: 要會寫分散式系統,得先找到溝通的方法

這是什麼?

程式週記主要內容如下:

Gihub project 介紹:

  • 主要會貼一些github,但是會盡量寫上一些有用的評語(或是我容易想到的關鍵詞)幫助以後查詢

網路文章心得:

  • 會寫些心得,強迫自己閱讀.

“程式週記”並且定期週期性更新.

大部分內容在我的twitter都會有,這邊只是將一些簡單的心得與感想註解一下.

本週摘要

本週花太時間在追如何使用etcd/raft.本來是打算用NSQ的管理方式,但是看了許久還是找不到他使用的方式.回過頭來使用raft

Go

writ: A flexible command and option parser for Go

  • 有點像是cobra,不過可以直接透過name tag 直接讓go structure 直接套入command option.

A command line client for Dropbox built using the Go SDK

kati: Google GNU make clone which is written by golang

  • 可以透過kati來將makefile轉換成ninja用的檔案.

A repository for plotting and visualizing data

  • 可以拿來換圖用的套件.

Stochastic flame graph profiler for Go programs

  • 隨機產生火焰顯示profile你的go程式的結果.

Python

Android/JAVA/NODE.JS

Building Android Apps — 30 things that experience made me learn the hard way — Medium

  • 作者分享在開發Android App裡面踩到的雷,這種經驗分享的文章,永遠都是我的最愛.

Yahoo Deep Learning Engine: CaffeOnSpark

  • Yahoo最近開源的Deep Learning Engine,主要可以將Hadoop/Spark Cluster的資料抓取來使用.更多部分可以看他們的文章

Cross-platform Linux without the suck

  • 可以讓你在Windows下面使用unix的console,而且又不像Cygwin那麼大.重點是用JS ES6寫的

Docker

Kafka (and Zookeeper) in Docker

  • Spotify 開源docker image可以讓你快速架設kafka跟zookeeper.

One+ year feedback of using Docker and Swarm in DEV and QA environments — Medium

  • 使用swarm經驗談文章.. 挺不錯的. 有教導如何透過swarm在dev <-> pre-prod <-> prod 之間切換的方法.

iOS/Swift

網站文章

Use CloudFlare to enable HTTPS on your Github Page hosted blog

  • 如果你有使用Github page 去Hosted 你的 blog,這邊可以幫你加上HTTPS (SSL).如果是限制的連線數下,是免費的服務.
  • 這邊有另外一篇文章也提到,不過他建議如果有用到custom domain name記得要把name server轉址.
  • 這篇文章更提到其實本身的github.io已經有https,只是在CNAME支援上有些問題.如果再不使用CNAME狀況下,是可以直接跑的.有一些相關的設定可以幫助你更輕鬆使用.

How and when Ken Thompson started programming? Also, Ken Thompson [wa|i]s in reddit.

  • 來看看C語言與Go語言的共同發明人 Ken Thompson 的小故事

一个有趣的实例让NoSQL注入不再神秘

  • MongoDB可以透過網頁輸入NoSQL查詢語法,所以有漏洞因此而生.

AWS最新白皮書PDF下載”Building a Real-Time Bidding Platform on AWS”

Use CloudFlare to enable HTTPS on your Github Page hosted blog

  • Github Page (ex: https://kkdai.github.io) 本身其實有HTTPS(SSL)的服務,不過如果你透過Custom Domain轉過來的話就會失效.這時候的方式就是透過CloudFlare來當CDN提供SSL的服務.

網站收集

有聲書/影片心得

本週專案

這邊會寫一些我的Project 52的成果.

本週專案: https://github.com/kkdai/raftrpc

本週繼續上週不敢挑戰的consensus,在還沒搞懂NSQ如何做的方式.

決定拿etcd的Raft來架設RPC Server.

本來想透過這篇文章來達成,不過context無法serialized.

回過頭去看etcd的raftexample,主要的重點是 raft需要另外一個http port 來架transport channel 來達到raft node 狀態交換.

如何導入raft到你的Project?

  1. Refer code from raftexample
  2. Get file listener.go, kvstore.go, raft.go.
  3. Do your modification for your usage.
note
  • raft.transport need an extra http port for raft message exchange. MUST add this in your code. (which is peer info in example code)

[TIL] Today I Learn 2016/03/10

Run docker container as default system services

  1. Start docker daemon when ubuntu launch.
  2. Add conf on service as follow
description "cAdvisor"

start on filesystem and started docker
stop on runlevel [!2345]

#respawn

# @see https://github.com/google/cadvisor/blob/master/docs/running.md#standalone
script

    docker rm -f cadvisor  || true

    docker run  \
        --volume=/:/rootfs:ro          \
        --volume=/var/run:/var/run:rw  \
        --volume=/sys:/sys:ro          \
        --volume=/var/lib/docker/:/var/lib/docker:ro  \
        --publish=8080:8080  \
        --detach=true    \
        --restart=always \
        --name=cadvisor  \
        google/cadvisor:latest

end script

For more detail, check here. Automatically start containers

[TIL] 2016/03/08

ETCD Architecture study.

Some study note about survey how Raft work in ETCD. Something more about official architecture from digging code.

  • Data storage in etcd/storage/backend. The file structure as follow:
    • topic/sub_topic/data
  • Data Exchange type using protobuf with grpc

BTW: NSQ using http.handle. So, no RPC data exchange issue, no protobuf required.

NSQ about how to elimiate SPOF

Refer to slide.

Seems the SPOF means of client side failure handle, not server side. (TBC)

  • Every server response to dedicate topic (no redudent) (p.22)
  • Client use this to add more consumer and handle it as load balance. (Refer topology_pattern)
    • quote: Assuming you have some sort of load balancer in front of these two hosts you can now tolerate any single host failure.

Need more check about this gist about use NSQ on K8s

[TIL] 2016/03/06 Today I learn from (Go/VC)

Golang

Program to prints out the visible surface of a go package?

Godex is the program to print APIs and package Info.

How to use godex

go get golang.org/x/tools/cmd/godex

How to use godex

godex math

godex github.com/kkdai/photomgr

VC(Visual Studido

How To Use RPC Callback Functions

IBM KM: RPC Callback Procedures Example