Laravel Conf Taiwan 2017 會後心得(一般會眾篇)

ChiVincent發表於2017-07-02

發現這裡似乎沒什麼討論,在今天(7/1),第一屆的 Laravel Conf Taiwan 2017 剛剛結束。

因為買的是學生票,所以答應主辦單位會後要來寫篇心得。既然寫了心得,又不是國小、國中學生,要做就做得完整一些,從各方面剖析關於這次的 Conference。

關於 Laravel Conf Taiwan 2017,預計將會花到兩、三篇的篇幅來講述這事。(當然這取決於後續的迴響,說不定只寫這麼一篇就斷尾了)這一篇,我們單純從一個與會者的角度來看。

結論:災難、災難還有……災難

在此我要先感謝這次 Laravel Conf Taiwan 的主辦單位及志工,為了在臺灣推廣 Laravel PHP Framework 不遺餘力所做的努力。

然而,誠如大家所認知的,不是努力就應該被讚揚、被鼓勵的,值得讚揚與鼓勵的一向只有努力過後所得來的成就。我這人講話不虛華,說得難聽一點就是「不會看氣氛與場合講話」,在臺灣我們通常稱這種人為「白目」。

低品質的講題,造就低品質的 Conference

如果要說一個研討會的靈魂,我相信應該就是在會場上那些經過百家爭鳴、千挑萬選的講題了。低品質的講題無疑地會降低整個研討會的水準。

這邊先附上整個大會的時程表:

file

我有參加的講題如下:

  • 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 這個框架變得太過臃腫且肥大,我甚至認為像 QueueEventUser 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 協議》,轉載必須註明作者和本文連結

相關文章