2017/09/16 本人參加了第九屆 rubyconf-china, 從北京特地來(lái)到杭州,
2015年第一次去杭州, 那時(shí)候一個(gè)朋友還在杭州, 這次我到杭州, 他去別的城市晃蕩了.
這次的活動(dòng), 挺不錯(cuò), 既有十足的干貨, 也有實(shí)際的工程實(shí)踐, 更有很長(zhǎng)時(shí)間不見(jiàn)的老朋友們.
Day.1 am 第1場(chǎng)
Leveraging the power of NGINX with Ruby - tylerdiaz
第一場(chǎng) 是strikingly的老外同事分享的 mruby在nginx的應(yīng)用.
nginx其實(shí)是個(gè)很不錯(cuò)的 web 應(yīng)用, 引入ngx_mruby, 調(diào)用ruby腳本可以做 json序列化 xss過(guò)濾等. 這樣避開(kāi)了 rails的middleware, 跑分性能優(yōu)秀. 而且比起用cpp的 ngx_pagespeed, 開(kāi)發(fā)難度小很多.
ngx_mruby 跟lua的 OpenResty 相似, 只是把lua換做ruby,但是 ngx_mruby還不能 require
,這種想法值得關(guān)注.
最后結(jié)尾: we are hiring
Day.1 am 第2場(chǎng)
Ethereum on Ruby - jan
jan 分享了ruby在區(qū)塊鏈項(xiàng)目的實(shí)踐
jan之前做了開(kāi)源的peatio交易所,分別用ruby python實(shí)現(xiàn)了ethumen的絕大部分功能 . 然后講了區(qū)塊鏈的數(shù)據(jù)結(jié)構(gòu), Block, BlockHeader, Merkle Tree, 介紹了PoW 以及網(wǎng)絡(luò)層的點(diǎn)對(duì)點(diǎn)tcp數(shù)據(jù)傳輸?shù)?
重點(diǎn)介紹了 ethumen的虛擬機(jī)-- EVM, 一個(gè)基于堆棧式的解析器, 可以用EVM實(shí)現(xiàn)智能合約.
目前 jan成立了cryptape, 用rust開(kāi)發(fā)一個(gè)開(kāi)源的聯(lián)盟鏈項(xiàng)目cita.
最后結(jié)尾: we are hiring
很開(kāi)闊眼界.
Day.1 pm 第1場(chǎng)
Ruby 異步編程奧德賽 - 丁盛豪
dsh0416 分享自己的異步web框架 -- midori, 通過(guò) fiber pool 而不是callback解決并發(fā)問(wèn)題.
callback形式會(huì)陷入嵌套的地獄, node EventMachine都不能避免這個(gè)問(wèn)題.
上來(lái) 給thin sinatra express 跑跑分, thin 投機(jī)取巧, 在hello world 測(cè)試中跑分很高,
一切換到真實(shí)的環(huán)境, 跑分立馬下降. 原因我記得是在整個(gè)請(qǐng)求過(guò)程中, 不是所有的請(qǐng)求都是異步的,
如果mysql請(qǐng)求堵塞了, 整個(gè)流程就堵塞了.
midori底層用fiber來(lái)處理并發(fā)以, 還優(yōu)化了中間件, 把棧式的壓棧彈棧這個(gè)循環(huán)過(guò)程, 優(yōu)化成類(lèi)似尾遞歸調(diào)用.
作者氣氛調(diào)動(dòng)的不錯(cuò), 節(jié)奏拿捏的也很好, fiber的思路很不錯(cuò).
Day.1 pm 第2場(chǎng)
如何用Erlang快速開(kāi)發(fā)Web快速開(kāi)發(fā)框架 - bhuztez
聽(tīng)說(shuō)很多人為了聽(tīng)B大演講專(zhuān)門(mén)買(mǎi)了門(mén)票. 本人也終于見(jiàn)到B大的真面目, 萌萌的.
B大說(shuō)出了至理名言: 成功人士都是談運(yùn)行效率, 失敗人士才談開(kāi)發(fā)效率
講了 erlang的一些特性, 模式匹配 / 不可變 / 熱更新 /parse_transform等.
開(kāi)始介紹他的框架razor, 記得有url_dispatch peg razor_db 等模塊,
很多是通過(guò)pattern matching + parse_transform 實(shí)現(xiàn)的, 感覺(jué)是構(gòu)造一些解析器,
用到lex/yacc的知識(shí).
FP語(yǔ)言在這方面很強(qiáng)大, 推薦個(gè)haskell項(xiàng)目 https://github.com/haskell/parsec, 總之我是一知半解了.
B大的這次演講感覺(jué)并不是特別的好, 暴露了很多細(xì)節(jié), 每個(gè)細(xì)節(jié)展開(kāi)了都是一場(chǎng)演講, 干貨密度太高了.
shopping is cheap, let reinvent wheel. 讓我們盡情的發(fā)明輪子吧
Day1. pm 第3場(chǎng)
Ruby Web實(shí)時(shí)通信方案的深度剖析 - 侯俊杰
薄荷網(wǎng) 介紹ruby在實(shí)時(shí)通訊領(lǐng)域的選型, 雖然老生常談了, 但有跑分, 有每個(gè)方案的差異介紹, 很不錯(cuò).
介紹了實(shí)時(shí)通訊的幾個(gè)方案 http輪詢(xún)方案/ 云服務(wù)/ websocket.
重點(diǎn)講了websocket下的幾個(gè)選擇 actioncable /faye-websocket/em-websocket/plezi ,
分別做了跑分, 技術(shù)上的差異. 算是教科書(shū)式的選型參考了, 演講的很好.
Day1. pm 第4場(chǎng)
ActiveRecord 源碼分析及應(yīng)用擴(kuò)展 - Leon
一個(gè) freewhell的大拿 講的ActiveRecode的實(shí)現(xiàn).
ar本來(lái)就挺復(fù)雜, 而且開(kāi)發(fā)時(shí)間很長(zhǎng). 然后用他自己的抽象 -- 變換矩陣/編譯器輸入輸出 巴拉巴拉一些概念
把 ar又包裝了一層. 恕本人愚鈍, 基本沒(méi)聽(tīng)懂.
Day1. pm 第5場(chǎng)
打造 Ruby 項(xiàng)目的容器化集成工具 - 周藝
彩程 boy 分享的 在前東家的 docker 實(shí)踐
由公司運(yùn)維的docker翻車(chē)史, 自己接手后的一步步改進(jìn)優(yōu)化, 這是個(gè)很好的工程師在項(xiàng)目中自我進(jìn)化例子,
培養(yǎng)完善的邏輯, 如何提供解決問(wèn)題的思路,工程師就是來(lái)解決問(wèn)題的嘛.
雖然大家在群里說(shuō) 最后都會(huì)回歸到k8s, 我只用過(guò)docker, 一直是個(gè)湊數(shù)的運(yùn)維,
我挺喜歡這樣的工程實(shí)踐的分享, 有了這些摸玻璃渣子過(guò)河的經(jīng)驗(yàn), 才能深刻體會(huì)到成熟解決方案的魅力.
第一天的分享結(jié)束, 沒(méi)隨大部隊(duì) 壓西湖, 吃了些飯, 去旅館困覺(jué)去了.
Day2. am 第1場(chǎng)
為 Ruby 設(shè)計(jì)一款 AOT(Ahead-of-time)編譯器 - 潘旻琦
通過(guò)一個(gè)rubyc工具把ruby打包分發(fā), 把rails項(xiàng)目打包, 快速方便的分發(fā).
原理是借鑒linux內(nèi)核的 squash, 剝離出了個(gè)用戶(hù)態(tài)的libsquash, 用libsqueeze 模擬
出個(gè)虛擬內(nèi)存路徑 __enclose_io_memfs__
,把文件掛載到這個(gè)路徑下.
不懂, 沒(méi)接觸過(guò), 漲姿勢(shì)了.
Day2. am 第2場(chǎng)
愛(ài)因斯坦搞煉丹 - Elixir: A Haskeller's Perspective - 祖與占
用haskell的視角看 Elixir
本人在15年-16年看過(guò) <haskell趣學(xué)指南>, 爛尾至今, 智商這個(gè)東西不說(shuō)了.
haskell在fp 語(yǔ)言中確實(shí)有很重要的地位, 高配版的lisp, 很多的fp語(yǔ)言從haskell借鑒想法.
印象深的講師舉的例子有 F# haskell erlang elixir, 還有perl
拋了這么張照片
有人在說(shuō): Elixir只是給erlang包了一層皮.
有人回答: Elixir不單單是給erlang包了一層皮, 他是整個(gè)生態(tài)的革新.
講師應(yīng)了句: Elixir官網(wǎng)還有夜間模式呢.
提問(wèn)有環(huán)節(jié), 之前有人在B大的演講上 問(wèn) 模式匹配咋實(shí)現(xiàn)的, B大把鍋給了 祖與占,
組與占說(shuō): "大家可以看下這篇1987年的論文, 既然時(shí)間這么長(zhǎng)了, 大家應(yīng)該都能看懂."
恩, 這很 hardcode.
隨后抽獎(jiǎng)環(huán)節(jié)
3個(gè)人 分一個(gè)btc, 我身邊的一個(gè)姑娘正是其中之一,
跟機(jī)會(huì)擦肩而過(guò), 憤而離席之, 逛逛杭州吧.
下面的內(nèi)容純屬猜測(cè)了:
金數(shù)據(jù)的大神通過(guò)機(jī)器學(xué)習(xí)來(lái)鑒黃, 聽(tīng)說(shuō) 關(guān)鍵字有 "小姨子" ...
充分發(fā)揮了大家的熱情 提問(wèn)的時(shí)候 每個(gè)人都至少chuai 著 3個(gè)問(wèn)題
反響熱烈 積極響應(yīng). 哦 對(duì)了, 聽(tīng)說(shuō)訓(xùn)練/預(yù)測(cè)數(shù)據(jù) 都是用的python
李亞?wèn)| 講mobx 在rails 前端中的使用, 前端我一年不碰了, 在此不表.
下午 沒(méi)參加
感觀:
這次的conf,多種語(yǔ)言齊上陣 -- erlang elixir python,
多種主題 -- 區(qū)塊鏈 mruby docker 機(jī)器學(xué)習(xí), 可以看到這個(gè)社區(qū)的包容性 前瞻性.
從之前的 關(guān)注web開(kāi)發(fā), 到更多的關(guān)注性能, rails ruby的底層探究, 在這里都有體現(xiàn).
rails 已經(jīng)過(guò)了爆發(fā)期, 正在走向成熟與穩(wěn)定, 正在擴(kuò)展新的領(lǐng)域.
希望rubyconf 一直持續(xù)下去, 越辦越好, 一直有理由旅個(gè)游.
嗯的重點(diǎn)是, 這次參會(huì)的妹子比例突破天際了, 可是為甚沒(méi)一個(gè)女講師呢
PS:
在杭州看到了西西弗書(shū)店, 也是第一次逛西西弗, 買(mǎi)了二本書(shū), 帶回了關(guān)于杭州的一丟丟記憶.
20170918 于杭州開(kāi)往北京的火車(chē)上
參考:
https://www.youtube.com/channel/UCOLKFS_uA7nX26_u8z9V9og/playlists 視頻