SlideShare a Scribd company logo
1 of 61
Download to read offline
選⼀一個框架當好朋友,
讓您成為開⼼心攻城獅!
shengyou @ 彰師⼤大資⼯工系學會(2014.11.27)
演講主題分配
• 選⼀一個框架當朋友,讓你成為開⼼心攻城獅
• 使⽤用 Laravel 的前與後
• 成為全能 PHP 攻城獅
范聖佑
@shengyou
https://www.facebook.com/shengyoufan
得寬科技 研究員
Laravel 台灣 版主
laravel-dojo 作者
簡報主題
• 實作模擬:⼀一個 Blog 專題作業
• 不使⽤用框架⾯面臨的問題與瓶頸
• 導⼊入當代開發流程
• MVC 框架綜覽與選擇策略
• Laravel Framework 簡介
實作模擬
• 模擬實作⼀一個 Blog 專題作業
- 實作⼀一個簡易的 Blog 網站
- 每⼀一篇⽂文章都可以歸屬於某⼀一個分類
- 三種呈現⽅方式:總覽、分類、單⼀一
- 列表型⾴頁⾯面⽀支援分⾴頁瀏覽
有獎問答:簡述您的作法
警告!葛格沒練過,這 Code 很危險!
開發流程
• 設計⾴頁⾯面、規劃 DB
• 建⽴立開發環境
• 對應每⼀一⾴頁寫出 *.php 檔案
• 與組員協同合作
• 專題佈署
⾴頁⾯面分配
index.phpcategory.php post.php
&category_id=
?page= ?page= ?id=
分類⾴頁 ⾸首⾴頁(總覽) ⽂文章詳細⾴頁
各出奇招
• WAMP、XAMPP、EasyPHP、AppServ
• Microsoft Web Platform 安裝包
• PHP + MySQL + Apache 獨⽴立安裝/設定
• (Mac) MAMP、Homebrew、系統內建
• (Linux) apt-get、compiled from source
DB 規劃
連接資料庫
過時的語法
http://php.net/manual/en/function.mysql-connect.php
修正連線語法
http://php.net/manual/en/mysqlinfo.api.choosing.php
設定資料庫連線編碼
http://php.net/manual/en/mysqli.set-charset.php
各程式碼區塊
資料庫連線
各程式碼區塊
⽂文章列表
各程式碼區塊
分類列表
各程式碼區塊
分⾴頁計算及選單
整理程式結構
• 把整個程式常⽤用的變數改成常數,獨⽴立在
⼀一個 config.php 裡,並在各⾴頁引⼊入
• 每⼀一⾴頁要⽤用到的資料庫連線,獨⽴立成⼀一個
檔案,在每⼀一⾴頁引⼊入
• ⾴頁⾯面重複的部份,把每⼀一塊拆成獨⽴立的
*.php 檔案
協同合作
• 交換專題檔案
- 把原始檔⽤用 zip 打包,⽤用 email 交換;或
是直接共享⼀一個 Dropbox 資料夾
- 從 學⻑⾧長A 那邊拿到⼀一包傳說中超好⽤用的
資料庫連線 Class
- 從 學⻑⾧長B 那邊拿到⼀一包聽說也很好⽤用的
樣板⼯工具包
程式佈署
• 把專題送上線
- 使⽤用學校提供的網路主機
- 在網路上搜尋免費的 php + mysql 空間
- 使⽤用 FTP 軟體,將所有原始碼上傳
回顧與討論
以上的開發流程是否似曾相識?回想⼀一下⾃自
⼰己曾經寫過的專題,在開發時有遇到什麼問
題嗎?或是跟同學合作時,有沒有什麼部份
讓你感到困擾?程式佈署⽅方⾯面,有沒有更好
的作法?
有獎問答:請分享您的想法
開發⾯面的問題
• 使⽤用 懶⼈人包 的開發⼯工具雖然⽅方便,但有
版本過舊、擴充、與線上環境同步等問題
• 程式碼內混雜流程控制、DB 操作、顯⽰示
等動作,在開發上會較不易分⼯工及維護
• 各 Class 沒有統⼀一的載⼊入⽅方式,也沒有管
理相依性的機制,無法建⽴立在前⼈人的基礎
上開發
維護⾯面的問題
• 在開發過程中,針對資料庫的內容沒有⽅方
便的倒假資料功能,在開發資料庫相關功
能時,無法專注在程式⾯面上
• 沒有統⼀一針對程式錯誤的處理/除錯機制,
也無法透過設定在不同的開發模式底下開
啟/關閉錯誤訊息
安全性的問題
• 全部程式碼都在 Document Root 底下,增
加原始碼曝露⾵風險
• 資料庫的操作全部靠撰寫 SQL 語法,且
沒有設定對應的安全機制,容易受到攻擊
• 表單傳送沒有對 csrf 進⾏行防禦,容易被可
能的攻擊 try 到 飽/寶…
合作⾯面的問題
• 資料庫的變更全部靠⼿手動直接操作資料庫
(多⼈人開發時,成員無法取得新版結構)
• 每⼈人使⽤用的開發環境、程式碼撰寫⾵風格不
⼀一,不論是在除錯或未來維護上都較不易
• 檔案交換沒有統⼀一的控管機制,不知道誰
的版本⽐比較新/舊?不同⼈人對同⼀一檔案編輯
時,不知道差異
佈署上的問題
• 上線主機與開發⽤用機器在環境上不同步,
程式碼的運⾏行結果可能也不同
• 所有連線資訊直接寫在程式碼內,佈署時
需要⼿手動更改,無法動態由主機端載⼊入
• 直接⽤用 FTP 佈署程式碼,連線⽅方式不安
全,佈署的程式版本也無法控管
看似簡單卻不簡單
• ⼀一個網路應⽤用程式要處理的⼯工作有:
謎之⾳音:何不⽤用框架?
- 路由 Route
- ⾴頁⾯面邏輯控制
- DB 操作
- 產出⾴頁⾯面
- 安全性防禦
- AJAX 處理
- 資料分⾴頁
- 使⽤用者認證
- 錯誤處理機制
- 寄發 Email
導⼊入當代開發流程
• 使⽤用 MVC 框架
• 使⽤用版本控制
• 使⽤用虛擬機器開發
• 使⽤用 PaaS 平台做佈署
框架 101
• 將常⾒見的開發需求、功能,封裝成各種元
件,以⽀支援開發者迅速的完成開發⼯工作,
不⽤用每次重新發明輪⼦子
• 框架本⾝身會有許多開發慣例、程式碼撰寫
⾵風格。透過使⽤用相同的框架,開發者彼此
間將更容易的進⾏行合作、維護
★ 參考資料:http://en.wikipedia.org/wiki/Web_application_framework
MVC 框架
• M-V-C 是⺫⽬目前網路應⽤用程式的主流開發架
構,透過將 資料操作(Model)、流程控制
(Controller)、⾴頁⾯面顯⽰示(View) 分離,讓開
發⼯工作可以各司其職,程式碼更容易維護
• ⼤大多數的框架還會提供⼀一系列的⼯工具包、
擴充程式,儘可能的降低開發⼯工作的難度
版本控制
• 就像玩遊戲都會找存檔點⼀一樣,版本控制
的⺫⽬目的就是讓每⼀一次的程式碼變更都有紀
錄可尋、可查、可回溯
• 在開發流程中導⼊入版本控制,能讓成員更
⽅方便的協助合作;佈署時,若失敗了還有
辦法回復到上⼀一個可運作的版本
使⽤用虛擬機器開發
• 透過虛擬化技術直接在⾃自⼰己的本機端安裝
另⼀一個作業系統 (guestVM),並讓⾃自⼰己的
本機端與該虛擬機器共享檔案,達成在本
機開發但在虛擬機器測試的好處
• 虛擬機器可以完全模擬上線主機的環境,
若不⼩小⼼心把環境弄壞了,砍掉重練就好
PaaS 佈署
• ⼀一般常⾒見的網路主機往往是 共享主機
(shared hosting),會有 PHP 版本過舊、資
源共搶、無法安裝額外套件的缺點
• 使⽤用 PaaS 的服務,讓你只需要專注在程
式開發即可,主機安裝、設定、擴充、流
量等都可以由平台直接幫您完成
框架綜覽與選擇決策
PHP 市佔率最⾼高
• PHP 是市佔率最⾼高的伺服器端程式語⾔言
★ 資料來源:http://w3techs.com/technologies/overview/programming_language/all
W3Techs.com 2014/11/16
框架也因此出奇的多
★ 資料來源:http://socialcompare.com/en/comparison/php-frameworks-comparison
(認)真的很多…
★ 資料來源:http://www.bestwebframeworks.com/compare-web-frameworks/php/
族繁不及備載…
★ 資料來源:http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#PHP_2
各出奇招、各有所⻑⾧長
• 輕量、⼩小巧
• 敏捷開發、易於使⽤用
• 全⽅方位、企業化
• 效能為⺩王
框架選擇策略
• 框架本⾝身的設計邏輯與哲學
• 官⽅方有⼤大神領頭開發、背後的商業⽀支援
• 教學資源豐富、傳教⼠士多
• 社群夠⼤大、相關⽣生態系完整
框架選擇策略
• 框架本⾝身的設計邏輯與哲學
- 架構本⾝身的設計是否清楚簡明?
- 框架內各元件的職責是否分明?
- 各元件的 API 封裝是否直覺且易於使
⽤用?
框架選擇策略
• 官⽅方有⼤大神領頭開發
- 其開發⽅方向是否有跟上⼤大環境趨勢?
- 框架是否有定期更新、 安全性升級的通
告?確保框架維護不會出問題
- 官⽅方背後是否有商業公司⽀支援?商業公
司往往會投⼊入⼀一定⼈人⼒力成本⽀支援框架的
發展
框架選擇策略
• 教學資源豐富、傳教⼠士多
- 框架本⾝身的⽂文件是否完整清楚?
- 若該框架的傳教⼠士夠多,就表⽰示除了官
⽅方⽂文件外,還有眾多的教學範例。傳教
⼠士愈多,往往代表有⾜足夠的教學資源供
學習、觀摩。
框架選擇策略
• 社群夠⼤大、相關⽣生態系完整
- 使⽤用⼀一個框架就像加⼊入⼀一個⽣生態系⼀一樣,
若該⽣生態系不夠⼤大,對應的學習資源、
可使⽤用的套件就會相形不⾜足,在開發上
就會相形孤單。因此,選擇⼀一個社群夠
⼤大的框架是⼀一個重要的因⼦子。
Laravel Framework
• 由 Taylor Otwell 主導開發,⺫⽬目前 4.2 版:
- 參考 Ruby on Rials、ASP.NET MVC 及
Sinatra 的語法和架構
- ⼤大量使⽤用 Symfony 元件,建⽴立堅實的框
架基礎
- 預定 2014.12 發佈 5.0 版
核⼼心理念
語法簡單優美的,
讓開發者愉快的 PHP 框架!
Happy developers make the best code.
★ 參考資料:http://laravel.com/docs/4.2#laravel-philosophy
選擇 Laravel 的原因
• 簡單、清楚、⾃自我表達的框架元件
• 官⽅方⽂文件完整清楚、相關學習資源完整
• 作者定期發佈新版
• 跟上潮流趨勢的開發⼯工具/套件
• 傳教⼠士多、社群⼤大
• ⽣生態系完整、 相關套件多
選擇 Laravel 的原因
• 框架元件本⾝身具備簡單、清楚、⾃自我表達
的特質,作者如是說:
- It’s expressive
- It’s simple
- It’s accessible
★ 參考資料:http://taylorotwell.tumblr.com/post/21038245018/why-laravel
選擇 Laravel 的原因
• 官⽅方⽂文件完整清楚
• 除了官網上提供的原⽂文版
• 現在還有社群正體中⽂文版
• 相關學習資源多
• 可在 leanpub 上⽤用 laravel 當關鍵字查
★ 官⽅方⽂文件:http://laravel.com/docs/4.2
★ 參考書籍:http://www.laravel-dojo.com/books
選擇 Laravel 的原因
★ 參考資料:https://twitter.com/ipalaus/status/305438396568989697
作者每 6 個⽉月為⼀一個發⾏行週期
選擇 Laravel 的原因
But… Laravel 5 會延到 2015/01,作者說:「值得等!」
★ 參考資料:http://blog.laravel.com/laravel-5-release-dates/
選擇 Laravel 的原因
★ 參考資料:http://blog.laravel.com/on-laravels-future-part-2/
2015 年起,作者 (Taylor) 將全職投⼊入開發 Laravel
★ 參考資料:http://taylorotwell.com/on-laravels-future/
選擇 Laravel 的原因
• 跟上潮流趨勢的開發⼯工具/套件
- homestead (虛擬機器)
- socialite (介接各種 oauth 認證)
- cashier (整合 Stripe 訂閱型⾦金流服務)
- elixir (處理前端 assets 的煉⾦金藥)
選擇 Laravel 的原因
• 傳教⼠士多
- 各⽅方⼤大神投⼊入 Laravel 開發⼯工作 (Cool
kids are in the community!)
• 社群⼤大
- 2013 年最受歡迎框架
- Github 最多關注 PHP 框架
★ 參考資料:http://laravel-news.com/category/the-artisan-files/
★ 參考資料:http://taylorotwell.com/on-community/
市場調查現況
★ 資料來源:http://www.sitepoint.com/best-php-frameworks-2014/
Laravel 是 2013 年最受歡迎的框架
Github 最受觀注
Laravel 是 Github 上最多星星的 PHP 框架
★ Github 搜尋:http://bit.ly/1t1qsEz
★ Wikipedia 紀錄:http://en.wikipedia.org/wiki/Laravel#cite_note-7
Google 搜尋趨勢
Laravel 是最熱⾨門的搜尋關鍵字 (Google Trend)
★ 參考資料:http://bit.ly/1sYbJtQ
選擇 Laravel 的原因
★ 參考資料:http://packalyst.com/
⽣生態系完整、相關套件多
⼩小結
• 透過專題模擬了解單純使⽤用 PHP 撰寫網路
應⽤用程式時可能⾯面臨的瓶頸和問題
• 現代開發流程、框架選擇決策及 Laravel
框架簡介
• 接下來,將⽤用 Laravel 再實作⼀一次專題以
做為對照
Q & A
Thanks for listening!

More Related Content

What's hot

Laravel - 簡介與環境設定
Laravel - 簡介與環境設定Laravel - 簡介與環境設定
Laravel - 簡介與環境設定Vincent Chi
 
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹Shengyou Fan
 
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web frameworkBo-Yi Wu
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
成為全能 php 攻城獅
成為全能 php 攻城獅成為全能 php 攻城獅
成為全能 php 攻城獅Shengyou Fan
 
專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定Shengyou Fan
 
Route 路由控制
Route 路由控制Route 路由控制
Route 路由控制Shengyou Fan
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署Shengyou Fan
 
開發工具與環境建置
開發工具與環境建置開發工具與環境建置
開發工具與環境建置Shengyou Fan
 
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後Shengyou Fan
 
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊Shengyou Fan
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 
Why to choose laravel framework
Why to choose laravel frameworkWhy to choose laravel framework
Why to choose laravel frameworkBo-Yi Wu
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 SeedingShengyou Fan
 

What's hot (20)

Laravel - 簡介與環境設定
Laravel - 簡介與環境設定Laravel - 簡介與環境設定
Laravel - 簡介與環境設定
 
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
 
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web framework
 
驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
工作坊總結
工作坊總結工作坊總結
工作坊總結
 
成為全能 php 攻城獅
成為全能 php 攻城獅成為全能 php 攻城獅
成為全能 php 攻城獅
 
專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定
 
驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
Route 路由控制
Route 路由控制Route 路由控制
Route 路由控制
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署
 
使用 Controller
使用 Controller使用 Controller
使用 Controller
 
開發工具與環境建置
開發工具與環境建置開發工具與環境建置
開發工具與環境建置
 
使用者認證
使用者認證使用者認證
使用者認證
 
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
 
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
[Modern Web Conf 2015] 給 PHP 開發者的 Composer 錦囊
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
Why to choose laravel framework
Why to choose laravel frameworkWhy to choose laravel framework
Why to choose laravel framework
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
 

Viewers also liked

DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)
DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)
DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)Chen Cheng-Wei
 
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)Chen Cheng-Wei
 
Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用Shengyou Fan
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定Shengyou Fan
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理Shengyou Fan
 
PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向Shengyou Fan
 

Viewers also liked (6)

DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)
DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)
DevOps叢林裡的小隊游擊戰術 (@ iThome DevOps 2015)
 
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
 
Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向
 

Similar to 選一個框架當好朋友,讓您成為開心攻城獅

網站規劃
網站規劃網站規劃
網站規劃jiannrong
 
Drupal 是好的生財工具嗎?網站標案經驗分享 台灣i運動資訊平台(Drupal as a Cash Cow for Prodution House? ...
Drupal 是好的生財工具嗎?網站標案經驗分享 台灣i運動資訊平台(Drupal as a Cash Cow for Prodution House? ...Drupal 是好的生財工具嗎?網站標案經驗分享 台灣i運動資訊平台(Drupal as a Cash Cow for Prodution House? ...
Drupal 是好的生財工具嗎?網站標案經驗分享 台灣i運動資訊平台(Drupal as a Cash Cow for Prodution House? ...Souyi Yang
 
HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程Souyi Yang
 
文學通的開發心路歷程
文學通的開發心路歷程文學通的開發心路歷程
文學通的開發心路歷程建銘 廖
 
高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程Souyi Yang
 
可扩展的架构设计
可扩展的架构设计可扩展的架构设计
可扩展的架构设计Bruce Dou
 
Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界Gelis Wu
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4Daniel Chou
 
Langchain and Azure ML and Open AI
Langchain and Azure ML and Open AILangchain and Azure ML and Open AI
Langchain and Azure ML and Open AIKo Ko
 
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架Justin Lin
 
[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談
[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談
[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談Drupal Taiwan
 
Kamigo reviews 20191127
Kamigo reviews 20191127Kamigo reviews 20191127
Kamigo reviews 20191127Jia Yu Lin
 
數位科技工具在自我學習上的運用
數位科技工具在自我學習上的運用數位科技工具在自我學習上的運用
數位科技工具在自我學習上的運用基欽 劉
 
軟體開發之路甘苦談(Gelis)
軟體開發之路甘苦談(Gelis)軟體開發之路甘苦談(Gelis)
軟體開發之路甘苦談(Gelis)Gelis Wu
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
Ch13 整合Spring MVC
Ch13  整合Spring MVC Ch13  整合Spring MVC
Ch13 整合Spring MVC Justin Lin
 
網頁設計 - PHP技巧與應用
網頁設計 - PHP技巧與應用網頁設計 - PHP技巧與應用
網頁設計 - PHP技巧與應用Vincent Chi
 
Ibmzf2
Ibmzf2Ibmzf2
Ibmzf2daoopp
 
從雛形到設計-了解您的使用者在想什麼
從雛形到設計-了解您的使用者在想什麼從雛形到設計-了解您的使用者在想什麼
從雛形到設計-了解您的使用者在想什麼Souyi Yang
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 

Similar to 選一個框架當好朋友,讓您成為開心攻城獅 (20)

網站規劃
網站規劃網站規劃
網站規劃
 
Drupal 是好的生財工具嗎?網站標案經驗分享 台灣i運動資訊平台(Drupal as a Cash Cow for Prodution House? ...
Drupal 是好的生財工具嗎?網站標案經驗分享 台灣i運動資訊平台(Drupal as a Cash Cow for Prodution House? ...Drupal 是好的生財工具嗎?網站標案經驗分享 台灣i運動資訊平台(Drupal as a Cash Cow for Prodution House? ...
Drupal 是好的生財工具嗎?網站標案經驗分享 台灣i運動資訊平台(Drupal as a Cash Cow for Prodution House? ...
 
HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程
 
文學通的開發心路歷程
文學通的開發心路歷程文學通的開發心路歷程
文學通的開發心路歷程
 
高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程
 
可扩展的架构设计
可扩展的架构设计可扩展的架构设计
可扩展的架构设计
 
Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4
 
Langchain and Azure ML and Open AI
Langchain and Azure ML and Open AILangchain and Azure ML and Open AI
Langchain and Azure ML and Open AI
 
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
 
[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談
[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談
[DCTPE2011] 11) Drupal 是好的生財工具嗎? 2. 中小型網站製作公司/工作室座談
 
Kamigo reviews 20191127
Kamigo reviews 20191127Kamigo reviews 20191127
Kamigo reviews 20191127
 
數位科技工具在自我學習上的運用
數位科技工具在自我學習上的運用數位科技工具在自我學習上的運用
數位科技工具在自我學習上的運用
 
軟體開發之路甘苦談(Gelis)
軟體開發之路甘苦談(Gelis)軟體開發之路甘苦談(Gelis)
軟體開發之路甘苦談(Gelis)
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
Ch13 整合Spring MVC
Ch13  整合Spring MVC Ch13  整合Spring MVC
Ch13 整合Spring MVC
 
網頁設計 - PHP技巧與應用
網頁設計 - PHP技巧與應用網頁設計 - PHP技巧與應用
網頁設計 - PHP技巧與應用
 
Ibmzf2
Ibmzf2Ibmzf2
Ibmzf2
 
從雛形到設計-了解您的使用者在想什麼
從雛形到設計-了解您的使用者在想什麼從雛形到設計-了解您的使用者在想什麼
從雛形到設計-了解您的使用者在想什麼
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 

More from Shengyou Fan

[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式Shengyou Fan
 
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...Shengyou Fan
 
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀Shengyou Fan
 
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能Shengyou Fan
 
How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023Shengyou Fan
 
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀Shengyou Fan
 
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台Shengyou Fan
 
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇Shengyou Fan
 
Using the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your DatabaseUsing the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your DatabaseShengyou Fan
 
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具Shengyou Fan
 
[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園Shengyou Fan
 
初探 Kotlin Multiplatform
初探 Kotlin Multiplatform初探 Kotlin Multiplatform
初探 Kotlin MultiplatformShengyou Fan
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率Shengyou Fan
 
[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南Shengyou Fan
 
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用Shengyou Fan
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜Shengyou Fan
 
老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具Shengyou Fan
 
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS AggregatorShengyou Fan
 
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON APIShengyou Fan
 
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin ServerlessShengyou Fan
 

More from Shengyou Fan (20)

[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
 
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
 
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
 
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
 
How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023
 
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
 
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
 
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
 
Using the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your DatabaseUsing the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your Database
 
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
 
[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園
 
初探 Kotlin Multiplatform
初探 Kotlin Multiplatform初探 Kotlin Multiplatform
初探 Kotlin Multiplatform
 
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
 
[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南
 
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜
 
老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具
 
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
 
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
 
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
 

選一個框架當好朋友,讓您成為開心攻城獅