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

發現這裡似乎沒什麼討論,在今天(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 协议》,转载必须注明作者和本文链接
本帖由 Summer 于 6年前 加精
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 15

感謝意見回饋,現在很少能看到這樣全面的議題心得了,我個人不覺得是白目,畢竟很多事情需要反省、改正才會進步,當我們到一家餐廳用餐給餐廳回饋與意見,其實就是喜歡這個餐廳,才會希望餐廳能夠更好

的確,Maghead 的講題因為時間有限 - 僅有 40 分鐘, 而只有 10 分鐘拿來介紹 Laravel 整合,的確是不夠,甚至有點倉促,從 ORM 本身、設計、使用到 Sharding, Sharding 作法, 目前的解決方案, Consistent Hashing, Chunk 等等又要再到整合外部套件,涵蓋的領域太多,此外要兼顧聽眾能夠理解,就免不了解釋基礎原理。

之後把題目做單純化,應該就可以解決這個問題。

謝謝你的支持。

6年前 评论
Summer

很宝贵的用户反馈哈

6年前 评论

期待更多的看法和见解

6年前 评论
yourself

有没有视频可以看啊

6年前 评论

感謝意見回饋,現在很少能看到這樣全面的議題心得了,我個人不覺得是白目,畢竟很多事情需要反省、改正才會進步,當我們到一家餐廳用餐給餐廳回饋與意見,其實就是喜歡這個餐廳,才會希望餐廳能夠更好

的確,Maghead 的講題因為時間有限 - 僅有 40 分鐘, 而只有 10 分鐘拿來介紹 Laravel 整合,的確是不夠,甚至有點倉促,從 ORM 本身、設計、使用到 Sharding, Sharding 作法, 目前的解決方案, Consistent Hashing, Chunk 等等又要再到整合外部套件,涵蓋的領域太多,此外要兼顧聽眾能夠理解,就免不了解釋基礎原理。

之後把題目做單純化,應該就可以解決這個問題。

謝謝你的支持。

6年前 评论

不错啊

6年前 评论
appleboy

不錯的回饋,相信主辦單位會很喜歡你的心得。聊聊我講的議題,的確是個過時的主題,其實我的重點當然是講最後面的容器搭配 Drone 部分,這邊時間比較短,介紹時間有限,自己在做投影片的時候,就在想,來 LaravelConf 講很多 CI/CD Docker 部分對嗎?哈。最後我自己也很希望 Docker 不是唯一的容器方案,畢竟誰也不知道未來會變成如何。期待 rkt 可以更好

6年前 评论

謝謝指教XD

6年前 评论

非常棒的反馈,希望国内也可以多一些类似的大会。

6年前 评论

@yourself 我記得官方會釋出會中影片,可以到 Laravel Conf Taiwan 2017 看看詳細資訊

6年前 评论

@c9s

其實當初在會場中聽到「準備了 233 張投影片」我瞬間就有「啊,大事不妙」的感覺。

不過除了 maghead/laravel-bridge 的說明不夠詳細之外(我記得有跳過幾張 slide),其餘對於 maghead 的講述是相當詳盡且易於理解的。(我對於 MySQL 的操作經驗僅限於單一資料庫的 CRUD 操作,對於 Sharding 其實有聽過沒做過,但在講題中我滿能理解其中意義與原理)

6年前 评论

@appleboy

其實我無意批評講題內容,如果對您造成負擔先在此致歉。

我前陣子因為公司專案的緣故有接觸過 Docker 的核心原始碼,我不得不承認雖然 Namespace 的觀念很早就出現在 Linux Kernel 中,但是將其完整化為產品的 Docker 真的有其專業與獨特性。尤其是他們將 Container 技術拓展到 macOS 與 Windows 的成就令我拜服。

然而我非常震驚與憤怒 Docker 將整個開源社群的成就佔為己有的行為,所以我降低了 Docker 在我未來專案中的應用比例。(老實說這非常困難,畢竟目前其它的容器化技術並沒有完整支援我常用的開發環境 macOS),同時也不再建議想要入門容器化技術的初學者使用 Docker。

6年前 评论

真棒的反饋
議程中比較偏向帶給大家更多名詞及方向
受限於時間其實我刪除了不少投影片的
下次有機會的話可以更深入探討

6年前 评论
yourself

@ChiVincent 好的好的 谢谢

6年前 评论

大家好我是 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 進行程式重構..
不過想到的時候已經過投稿時間了
而且也準備這類的題目也擔心又讓空氣冷到最高點
有你的心得分享,讓我更有信心了

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!