第二天的主講人是 Curtis "Ovid" Poe,所分享的是他的新版 Agile Manifesto。強調 Agile 是種思維,而非刻板的工作程序。似乎與我這則玩笑互相回應:

由於第一天也有人提到 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.
    • 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. :)


blog comments powered by Disqus