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年前 加精
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 15

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

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

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

謝謝你的支持。

6年前 评论

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

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

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

謝謝你的支持。

6年前 评论
appleboy

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

6年前 评论
Summer

很宝贵的用户反馈哈

6年前 评论

期待更多的看法和见解

6年前 评论
yourself

有没有视频可以看啊

6年前 评论

不错啊

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年前 评论

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