YAPC::EU 2012 第二天
作者:gugod 發佈於:第二天的主講人是 Curtis "Ovid" Poe,所分享的是他的新版 Agile Manifesto。強調 Agile 是種思維,而非刻板的工作程序。似乎與我這則玩笑互相回應:
Scrum 並不是種嚴謹的方法論。但其之所以管用,是因為全團隊上下在實踐之時,都要了解這個方法及其意義。比較像是群體自我意識提升。那麼,整公司一起去練法輪功,可能也有類似的效果。
— Kang-min Liuさん (@gugod) 7月 22, 2012
由於第一天也有人提到 Continuous Deployment,於是也趁機點出了「測試、監控、記錄」 這三種工具的重要性。有寫測試,能在出新版之前先行找出瑕疪;有做監控, 就能在即時發 現錯誤.有做記錄,則可在錯誤發生之後,全面了解狀況。
但私以為,全篇演講最重要的一句話,是在開頭的這一句:
I realized I've been teaching people how to rewrie agile manifesto
講者多年來自省推行 Agile 的過程而發現,其實自己是在教大眾這個概念的精神為何,而非 死背原創。如此具備彈性,顯然也是 Agile 精神的一種實踐。
接著是 Parrot 的 Thread 支援,在這一年之中被實做出來了。所實做的是基於 Green thread 的 Worker thread。重點摘要如下:
- 是 interpretor thread 的變種,能支援多核心
- 每支 Thread 自有 Garbage Collector
- Thread 的執行內容為一 "Task" 物件,有新工作項目時,則丟進 Scheduler 排班執行
- 變數只有其所屬的 thread 可以寫入,其他 thread 只能透過 Proxy 物件讀取共享變數內容
- Proxy 物件存在於 intrepretor main thread,能存取所有記憶體空間。
講者 nine 有提到基本上 Proxy 物件與多份 GC 的 設計是相關的,不過細節就沒有說明了。猜想是類似 objc 的 autorelease pool 這類的, 不特別做 ref count 與 mark and swipe,而是在 thread 結束時一次全部清掉的做法。這 部份要再確認。
顯然 ElasticSearch 在 EU Perl 社群中也十分火紅,在 YAPC::EU 中也有好幾堂課跟 ElasticSearch 有關。Lucy 倒是一個字眼都沒看到了。其易用性顯然對開發人員來說也是十 分重要的。
今天許多講題內容都與 agile 的工具與精神相關, Message::Passing 似乎是值得一玩的 工具。
晚上有公司贊助的 "Beer & Engineering" ,不過我沒有酒量,就只喝可樂了(笑)。
這一天的筆記如下:
- yapc eu 2012 day 2
- keynote
- people who are writing tests are trying to excel.
- 10% of the companies are in the top 10% :)
- Sharpshooter PrRoblem -- shoot 1st. announce your target.
- "I realized I've been teaching people how to rewrie agile manifesto"
- Goal / Strategy / Tatics
- Structured Interviews
- desigen a set of question and ask all the candidates the same set of question
- Agile = Mindset. != Process
Agile org:
- Everyone is an owner, which means "responsibility", that leads to the requirement authority.
- Authority requires information.
- Ownership implies Trust.
- Agile Workflow perspective = Compomise
- tasks!, !processes.
- Courage instead of fear. (rollout = courage?)
- minimize risk / maximize reward.
- Test + Monitoring + Logging = Trinity of being Agile.
- Test: know what's happening before release
- Monitoring: know what's happening during release
- Logging: know what's happening after release.
- parrot thread
- green threads
- Interpretor threads
- "Tasks" + Run Loop. Sounds very similary to async/event-driven paradigm.
- hybrid thread
- Worker threads.
- has 'Task' queue.
- explicit sharing.
- variable is owned by exactly one thread.
- read only to other threads.
- variable is owned by exactly one thread.
- Worker threads.
- green threads
- Message::Passing use case
- multi-output possible.
- with Dancer GUI to do log search
- array programming
- paradigm
- Array::APX / Array::Deeputils
- tons of vector-based operations.
- prime number selection
- Any number that's NOT in the matrix of [2..] x [2..]
- joy of breaking things
- exploits ~ combinations of features
- social network analysis
- SNA::Network::*
- mst
- insufficiently automated infrastructure.
- mongodb complaint?
- picked up sudo for a while..
- Object::Remote can bridge code further
- Data is aggregated with git and JSON files in git repo.
- sudo vs shared ssh root key?
- sudo make is easier to lock the sudoer.
- shared password is always the worst. :)
- keynote