Laravel Conf Taiwan 2017 會後心得(一般會眾篇)
發現這裡似乎沒什麼討論,在今天(7/1),第一屆的 Laravel Conf Taiwan 2017 剛剛結束。
因為買的是學生票,所以答應主辦單位會後要來寫篇心得。既然寫了心得,又不是國小、國中學生,要做就做得完整一些,從各方面剖析關於這次的 Conference。
關於 Laravel Conf Taiwan 2017,預計將會花到兩、三篇的篇幅來講述這事。(當然這取決於後續的迴響,說不定只寫這麼一篇就斷尾了)這一篇,我們單純從一個與會者的角度來看。
結論:災難、災難還有……災難
在此我要先感謝這次 Laravel Conf Taiwan 的主辦單位及志工,為了在台灣推廣 Laravel PHP Framework 不遺餘力所做的努力。
然而,誠如大家所認知的,不是努力就應該被讚揚、被鼓勵的,值得讚揚與鼓勵的一向只有努力過後所得來的成就。我這人講話不虛華,說得難聽一點就是「不會看氣氛與場合講話」,在台灣我們通常稱這種人為「白目」。
低品質的講題,造就低品質的 Conference
如果要說一個研討會的靈魂,我相信應該就是在會場上那些經過百家爭鳴、千挑萬選的講題了。低品質的講題無疑地會降低整個研討會的水準。
這邊先附上整個大會的時程表:
我有參加的講題如下:
- Laravel Storage X GCS 跨平台應用
- Laravel 單頁面應用與前後端分離開發
- Laravel 事件及序列功能應用
- 水平擴展 PHP 應用程序 - 使用 Maghead 資料庫框架
- 運用 Docker 整合 Laravel 提升團隊開發效率
Laravel Storage X GCS 跨平台應用
老實說會報名這次的 Laravel Conf Taiwan 2017,其中一個講題就是衝著這個來的。
我一直相當苦惱,到底如何在不更動任何程式碼的前提下,如何將儲存於本地端的 Laravel Storage 資料同步到 GCS 上。
其中我自行嘗試過許多方法,像是 Laravel Forge 那樣的佈署服務,將多個 release 版本的 storage 都建立一個 soft link 到佈署根目錄,再將根目錄的 storage
資料夾用 gsutil
同步到 GCS 上。
# Laravel Forge 佈署範例
/var/www # 佈署根目錄
| --- storage # 這個資料夾會用 gsutil 將內容同步到 GCS 上
| --- app --> (link to release-2017-01-03)
| --- release-2017-01-01 # 第一個發佈版本,這是個 Laravel Application
| --- app/
| --- bootstrap/
| --- …
| --- storage --> (link to /var/www/storage)
| --- release-2017-01-02 # 第二個發佈版本,這是個 Laravel Application
| --- app/
| --- bootstrap/
| --- …
| --- storage --> (link to /var/www/storage)
| --- release-2017-01-03 # 第三個發佈版本,也是最新的版本
| --- app/
| --- bootstrap/
| --- …
| --- storage --> (link to /var/www/storage)
這是到目前為止我認為 Laravel Storage X GCS 最優雅的解決方案 -- 但我仍然覺得不夠優雅:
第一:我覺得這樣在處理 storage
資料夾時的權限設定問題(尤其是 SELinux 的設定)相當麻煩。
第二,我覺得單純用 gsutil
去同步檔案時,無法針對特定的檔案權限做控管。
然而在這個講題中,我很訝異內容跟我所想像的大相逕庭,因為從頭到尾幾乎都只有幫聽眾複習官方文件中對於 Storage
功能的使用,以及介紹 superbalist/laravel-google-cloud-storage
這個既有的 Package 套用方法。
當然也有可能是我對於這個講題抱有太多不切實際的幻想,才導致這美麗的錯誤,然而在堂堂 Laravel Conf Taiwan 2017 上面,請講師幫我們複習官方文件與查詢 Google 的技巧,我不確定我是不是走錯地方了,我參加的到底是 Laravel Conf 還是 Laravel 初學者訓練營……?
Laravel 單頁面應用與前後端分離開發
單頁面應用,又稱為 SPA,Single Page Application。
前陣子嘗試寫過 Vue + Laravel SPA 之後,我一直認為 Laravel 5.4 將 Vue.js 加入並列為預設前端框架是個迎合市場口味的餿主意。(其實我也認為 Laravel 5.2 加入 Bootstrap 跟 jQuery 不是個好主意,雖然這些功能確實為我省了不少時間)
這讓 Laravel 這個框架變得太過臃腫且肥大,我甚至認為像 Queue
、Event
、User Auth Model
等等……這類的功能可以另外以服務提供者(Service Provider)的方式提供,畢竟不是每個應用程式都需要這樣的功能。
印象中,這個講題的講者也認為 Vue 整合於 Laravel 中是個奇怪的想法,畢竟前端就是前端,後端就是後端,兩者可以合作但不能逾越界線。
該講者也舉例,有許多公司可能因為各種原因,決定放棄由 Laravel 作為應用後端,但前端仍然使用 Vue 寫成的 SPA。在這樣的情況下,如果 Laravel 與 Vue 是在同一個地方開發(共用同一個 Git Repository),在分離時就會是一場災難。
所以在講者所任職的公司中,Laravel 僅作為 API Server,驗證 Request 、處理商業邏輯與回傳 JSON Response,而另外的前端工程師則利用 Vue + Vuex + Vue-router 製作 SPA,並傳送 Request 與處理後端傳回的 Response。
然而,我認為這麼「乾淨的」使用 Laravel 的方法,似乎有點浪費 Laravel 如此全能的框架能力。我甚至認為這樣不如直接使用個 NodeJS 搭配 Koa 還省事得多,追求效能的話還可以用 Golang 搭配 fasthttp 或是 PHP 搭配 Swoole。不過畢竟是 Laravel Conf,我也不就這麼吹毛求疵了。
講題中也提到了一些有關於推薦套件的使用,像是 Dingo 套件的搭配等等,可以當作開發時的參考。
嚴格來說這是個水準中等的講題,雖然內容平庸但不致於浮濫,技術上雖然已經有點常見但也不失為一個增廣見聞的機會。
Laravel 事件及序列功能應用
關於這個講題我必須鄭重地向各位致歉,也必須向講者致歉。-- 因為我並沒有認真在聽。
因為一些緣故,我在會場中處理公司的急事,以及因為早上服用藥物的作用讓我昏昏欲睡。
不過就我模糊的印象來說的話,這講題似乎也是個 Laravel 初學訓練營的內容(當然可能有加上一些技巧,但我著實沒有印象),我真的覺得身為一個研討會就不要在幫會眾複習官方文件了……
水平擴展 PHP 應用程序 - 使用 Maghead 資料庫框架
我必須承認,我是為了這個講題而下定決定購票入場的。
畢竟講者是 Maghead
的作者 c9s。
c9s 有許多令人驚豔的專案,例如快速切換 PHP 版本與 extensions 的 phpbrew、接近原生 PDO 效能的 ORM Maghead 以及(目前為止應該仍然是)最高效率的 PHP Router Pux。
講題內容為 Maghead 的介紹與 Maghead 結合 Laravel。
然而因為時間過於倉促,只能將 Maghead 作簡要的介紹,且針對 Maghead 與 Laravel 的結合也僅僅介紹 maghead/laravel-bridge
的簡單使用方法,甚為可惜。
對於 Maghead 取代官方 Eloquent 成為 Laravel 預設 Database ORM,我認為是可以被期待的(前提是有人去發 pull request)。畢竟在用法上與習慣上並沒有太大差異,而且效能上更是令人驚嘆。
運用 Docker 整合 Laravel 提升團隊開發效率
這是個有趣的講師,可惜講著有些過時的議題。
這邊就不特別講述講題內容,畢竟就只是講師分享該工作團隊前端、後端、QA 與 PM 都是利用 Docker 建置而成的環境進行開發、測試與客戶展示的經驗分享,還有利用 Docker 結合 Drone 的 CI/CD 經驗(沒有詳述,只是小小帶過)。
「容器化」(Containerize)大概可以榮登去年三大熱門關鍵字之一,無論在公司、社群還是技術論壇上,無不討論著 Container 的美好未來。
仔細想想,把應用程式包在容器裡執行,開發時輕鬆、測試時愜意、佈署時簡單,除了找到老婆之外,還有什麼事比這個更讓程序員們興奮的呢?-- 想想那個不用加班的未來。
當時許多人都跑去玩 docker,更有不少人認為 docker 就是容器的唯一技術。有許多人寫了無數個 Dockerfile、docker-compose,許下那個不用加班的未來願景。
然而好景不長,就那麼突然地,Docker 的開發公司將 Docker 專案改名為 Moby,然後 Docker 這個名字成為該公司的產品名稱,還分為 Community 與 Enterprise 兩個版本。說個笑話,全世界都幫 Docker 開發公司做了義工,看著產品趨於成熟,Docker 便關起門來開始營利。(嘛,也不能責怪人家,畢竟人家本來就是開公司的,又不是慈善事業)
仍然有許多人認為,「哎呀不過就是改個名字,何必這麼大驚小怪呢?反正它還是個開源專案,繼續用也不傷身的。」
可是這些人沒有想到的是,如果有一天,某個版本的 Docker Community 開始收費……那就算核心是 Moby 那又如何呢? Docker 公司為了移植容器技術到 macOS 與 Windows 上,對 Moby 做了修改才成為了現在的 Docker Community,從來就不是 Moby = Docker Community。
如果 Docker Community 開始收費,那各種加班的災難將會襲捲而來 -- 一時半刻要找到能完全取代 Docker 的容器技術還真不容易呢。
當初 Docker 風潮來襲時,我便認為容器技術不應以 Docker 為唯一解決方案,所以我一直在關注 rkt 的發展,我期許 rkt 或是其它的開源容器技術能夠位於天平的另一端以制衡 Docker。
場地抉擇、時間分配與團體衝突
場地
對於一場研討會,場地的抉擇是相當重要的。
本次研討會雖然位於交通相當方便的大樓,但我不確定是經費限制或是其它因素,場地本身通道狹窄,動線規劃並不完善。
租用 10 樓與 11 樓作為活動場地,但中午用餐卻在地下 1 樓,同時有上百人使用六部電梯造成的運量負擔相當可觀。
時間分配
大多講題對於時間的掌握還算可以接受,雖然有一個講題沒能把內容詳述(水平擴展 PHP 應用程序 - 使用 Maghead 資料庫框架),但整體而言還算在可接受範圍內
團體衝突
我不確定是溝通上的失誤或是什麼情況,在講者進行活動時竟然隔壁會有巨大的歌唱聲不時打斷,這是相當不給講者尊重的研討會環境,同時也枉顧會眾權益。
本作品采用《CC 协议》,转载必须注明作者和本文链接
高认可度评论:
感謝意見回饋,現在很少能看到這樣全面的議題心得了,我個人不覺得是白目,畢竟很多事情需要反省、改正才會進步,當我們到一家餐廳用餐給餐廳回饋與意見,其實就是喜歡這個餐廳,才會希望餐廳能夠更好
的確,Maghead 的講題因為時間有限 - 僅有 40 分鐘, 而只有 10 分鐘拿來介紹 Laravel 整合,的確是不夠,甚至有點倉促,從 ORM 本身、設計、使用到 Sharding, Sharding 作法, 目前的解決方案, Consistent Hashing, Chunk 等等又要再到整合外部套件,涵蓋的領域太多,此外要兼顧聽眾能夠理解,就免不了解釋基礎原理。
之後把題目做單純化,應該就可以解決這個問題。
謝謝你的支持。
很宝贵的用户反馈哈
期待更多的看法和见解
有没有视频可以看啊
感謝意見回饋,現在很少能看到這樣全面的議題心得了,我個人不覺得是白目,畢竟很多事情需要反省、改正才會進步,當我們到一家餐廳用餐給餐廳回饋與意見,其實就是喜歡這個餐廳,才會希望餐廳能夠更好
的確,Maghead 的講題因為時間有限 - 僅有 40 分鐘, 而只有 10 分鐘拿來介紹 Laravel 整合,的確是不夠,甚至有點倉促,從 ORM 本身、設計、使用到 Sharding, Sharding 作法, 目前的解決方案, Consistent Hashing, Chunk 等等又要再到整合外部套件,涵蓋的領域太多,此外要兼顧聽眾能夠理解,就免不了解釋基礎原理。
之後把題目做單純化,應該就可以解決這個問題。
謝謝你的支持。
不错啊
不錯的回饋,相信主辦單位會很喜歡你的心得。聊聊我講的議題,的確是個過時的主題,其實我的重點當然是講最後面的容器搭配 Drone 部分,這邊時間比較短,介紹時間有限,自己在做投影片的時候,就在想,來 LaravelConf 講很多 CI/CD Docker 部分對嗎?哈。最後我自己也很希望 Docker 不是唯一的容器方案,畢竟誰也不知道未來會變成如何。期待 rkt 可以更好
謝謝指教XD
非常棒的反馈,希望国内也可以多一些类似的大会。
@Summer
@MrJing
@BradStev
@fripig
@maxincai
感謝各位的支援與鼓勵
@yourself 我記得官方會釋出會中影片,可以到 Laravel Conf Taiwan 2017 看看詳細資訊
@c9s
其實當初在會場中聽到「準備了 233 張投影片」我瞬間就有「啊,大事不妙」的感覺。
不過除了
maghead/laravel-bridge
的說明不夠詳細之外(我記得有跳過幾張 slide),其餘對於 maghead 的講述是相當詳盡且易於理解的。(我對於 MySQL 的操作經驗僅限於單一資料庫的 CRUD 操作,對於 Sharding 其實有聽過沒做過,但在講題中我滿能理解其中意義與原理)@appleboy
其實我無意批評講題內容,如果對您造成負擔先在此致歉。
我前陣子因為公司專案的緣故有接觸過 Docker 的核心原始碼,我不得不承認雖然 Namespace 的觀念很早就出現在 Linux Kernel 中,但是將其完整化為產品的 Docker 真的有其專業與獨特性。尤其是他們將 Container 技術拓展到 macOS 與 Windows 的成就令我拜服。
然而我非常震驚與憤怒 Docker 將整個開源社群的成就佔為己有的行為,所以我降低了 Docker 在我未來專案中的應用比例。(老實說這非常困難,畢竟目前其它的容器化技術並沒有完整支援我常用的開發環境 macOS),同時也不再建議想要入門容器化技術的初學者使用 Docker。
真棒的反饋
議程中比較偏向帶給大家更多名詞及方向
受限於時間其實我刪除了不少投影片的
下次有機會的話可以更深入探討
@ChiVincent 好的好的 谢谢
大家好我是 Laravel Tracy 的開發者
也是協助 @c9s 開發 Laravel Maghead 的開發者
這次和 @c9s 合作開發,本來想跟大家說明一下整合過程
可以順便跟大家聊聊一些 Laravel 相關技術,
例如 Container, Service Provider 的運作流程及程式開發是可以與Framework解耦合
可以用一些方法讓程式在 Laravel 及 Codeigniter 或其他 Framework 也能夠運作
其實我想講的東西很多,十分鐘真的不夠
來聊聊議程的問題
在 Conference 的前一晚和 @c9s 在討論議程深度的問題
這問題著實頭痛...
在去年小弟在 phpconf taiwan 分享了一場 用 TDD 來開發網頁分析程式
整場聊下來,連我自己都覺得現場空氣好冷啊...(當然有很大的部份是小弟準備的不夠好)
所以對議程的準備就轉了一個很大的方向
很高興有您分享心得,讓講者知道可以做更深入的探討
未來就可以朝其他不一樣的方向前進囉...
又或許可以建議下次在舉辦 Conference 之前,大家可以提出想聽的內容
讓大會可以找相關議題的講者..
來滿足更多的參加者...
p.s.
本想投稿 如何使用 TDD 開發 Facebook Bot 謳歌伯
及如何使用 TDD 進行程式重構..
不過想到的時候已經過投稿時間了
而且也準備這類的題目也擔心又讓空氣冷到最高點
有你的心得分享,讓我更有信心了