SlideShare a Scribd company logo
1 of 49
Download to read offline
使⽤用者認證
范聖佑 Shengyou Fan
新北市樹林國⼩小 (2015/07/11)
適
⽤用
5.1
版
單元主題
• 了解使⽤用者認證機制的基本元素
• 介紹 Laravel 內建的使⽤用者認證機制
• 如何在專案內整合 Laravel 內建的使⽤用者認證機制
• ⽰示範實作專案使⽤用者認證功能
認證機制
使⽤用者認證
• 網路應⽤用程式的使⽤用者認證機制,⼀一般來說⾄至少會
有以下幾個功能:
- 使⽤用者註冊
- 使⽤用者登⼊入
- 使⽤用者登出
- 忘記密碼 (寄出密碼重設信)
- 重設密碼
Laravel 的認證機制
• Laravel 預設就提供了完整的使⽤用者認證機制,上述
列出的 5 ⼤大功能皆已內建,得來全不費功夫!
• 在 5.0 版預設就將使⽤用者認證機制安裝好,若要移除
的話,需要⽤用 artisan	
  fresh 指令將其移除
• ⽽而在 5.1 版裡,則是只提供核⼼心程式 (Middleware、
Trait)、Model 及 Controller 的實作,⾄至於 Route、
View 等則需要⼿手動撰寫
• 簡單來說,在 5.1 版只要將 Route 對應⾄至 Laravel 提
供的 Auth 系列 Controller,並將View 補⿑齊,就可以
使⽤用內建的認證機制
Laravel 認證相關的檔案
• 關於認證相關的設定檔放在 config/auth.php 內
• 預設好的 User Model 放在 app/ 底下
• 預設好有兩個 migration 放在 database/migrations 內,
會幫我們建⽴立 users 及 password_resets 兩個資
料表
• 預設有兩個 Controller 放在 app/Http/Controllers/
Auth 底下:AuthController 及
PasswordController
使⽤用者註冊
★ 參考⽂文件:http://laravel.com/docs/5.1/authentication#authentication-quickstart
先建⽴立 user 資料表
• Laravel 5.1 版有內建使⽤用者認證的 migration 檔案,
會⾃自動幫我們建⽴立好 users 資料表
• 若沒有其他欄位要增加的話,在實作前先把這個資
料表透過 php	
  artisan	
  migrate 建⽴立起來
• 若 user 需要有額外的欄位需要紀錄,則可以先修改
migration 檔的內容再進⾏行 migrate;也可以新建⼀一個
migration 把要擴充的欄位增加上去
user 資料表
• Laravel 的 User 是以 email 做為帳號唯⼀一值,各欄位名
稱及⽤用途如下:
- id:資料表 auto-increment 的 key 值
- name:使⽤用者名稱
- email:使⽤用者電⼦子郵件,也同時做為帳號認證⽤用
- password:使⽤用者密碼,經 bcrypt 加密後儲存,資料
格式請設 VARCHAR	
  60
- remember_token:認證時做為是否記住我的 token
值,資料格式⾄至少 VARCHAR	
  100,在 migration 檔內可
⽤用 $table-­‐>rememberToken() 增加這個欄位
註冊流程⽰示意圖
validator
成功回傳
建⽴立使⽤用者
create
通過
註冊資料
auth/register
失敗返回
錯誤訊息
成功訊息
/home
Laravel 的註冊流程
• 使⽤用者先⾄至 /auth/register ⾴頁⾯面填寫註冊表單,
表單上有 名字、Email、密碼、確認密碼 四個欄位 (確
認密碼欄位的名稱請設定為 password_confirmation 以利表單驗證時欄位對
照⽤用)
• 表單送出後,先經過 AuthController@validator
驗證表單資料,若失敗則返回、若成功則建⽴立新的
使⽤用者
• 驗證表單成功後,AuthController@create 會依
欄位建⽴立新的使⽤用者
• 所有動作完成後,返回⾄至 /home
設定註冊 Routes
• Laravel 5.1 已經幫我們將 Controller 準備好,僅需要
在 Route 裡指定路徑⾄至對應的 Controller 即可
• 要注意 Controller 要加 Auth 的 namespace,並且
注意對應到的 Controller ⽅方法不可錯
• 若有需要,可⾃自定 Route 名稱,⽅方便其他⾴頁⾯面以
route() 連結
//	
  app/Http/routes.php	
  
Route::get('auth/register',	
  ['as'	
  =>	
  'register.index',	
  
'uses'	
  =>	
  'AuthAuthController@getRegister']);	
  
Route::post('auth/register',	
  ['as'	
  =>	
  'register.process',	
  
'uses'	
  =>	
  'AuthAuthController@postRegister');
實作註冊表單
• Laravel 5.1 預設沒有提供對應的Views,不過官⽅方⽂文
件內有⽰示範如何撰寫表單原型,可以直接參考來改
• View 所預設放置的位置及檔名為:resources/views/
auth/register.blade.php (請務必依照預設命名檔案並放置在對應的
位置)
//	
  resources/views/auth/register.blade.php	
  
{!!	
  Form::open(['route'	
  =>	
  'register.process',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'method'	
  =>	
  'post'])	
  !!}	
  
	
   {!!	
  Form::text('name',	
  null,	
  ['id'	
  =>	
  'name'])	
  !!}	
  
	
   {!!	
  Form::email('email',	
  null,	
  ['id'	
  =>	
  'email'])	
  !!}	
  
	
   {!!	
  Form::password('password',	
  null,	
  ['id'	
  =>	
  'password'])	
  !!}	
  
	
   {!!	
  Form::password('password_confirmation',	
  null,	
  	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ['id'	
  =>	
  'password_confirmation'])	
  !!}	
  
	
   {!!	
  Form::submit('登⼊入')	
  !!}	
  
{!!	
  Form::close()	
  !!}
修改預設設定
• 假如使⽤用者資料表有需要額外的欄位,記得在
AuthController 裡的 validator 及 create 加上
對應的驗證及寫⼊入欄位的設定,⽽而 User Model 裡的
fillable 也要將欄位打開
• 若註冊完成後,不想要導到 /home,可以在
AuthController 內設定⼀一個 $redirectPath 屬
性,將要重新導向的網址以字串設定即可
註冊流程核⼼心程式
• 關於使⽤用者註冊的功能,Laravel 預設提供了
AuthController 處理所有的動作,裡⾯面的程式碼
不多,因為⼤大多數的動作都直接使⽤用
IlluminateFoundationAuthAuthenticatesA
ndRegistersUsers Trait 實作
• AuthenticatesAndRegistersUsers 裡⼜又分成兩個
Trait,其中
IlluminateFoundationAuthRegistersUsers
包含了所有關於註冊的動作,想了解 Laravel 如何實
作註冊動作,可以追⼀一下原始碼
使⽤用者登⼊入/登出
★ 參考⽂文件:http://laravel.com/docs/5.1/authentication#authentication-quickstart
登⼊入流程⽰示意圖
validator
登⼊入
成功
登⼊入使⽤用者
Auth::attempt
通過
登⼊入認證
auth/login
失敗返回
錯誤訊息
/home
登⼊入
失敗
失敗
訊息
Laravel 的登⼊入流程
• 使⽤用者先⾄至 /auth/login ⾴頁⾯面填寫登⼊入表單,表單
上有 Email、密碼 兩個欄位及⼀一個 記住我 的選勾欄
位
• 表單送出後,AuthController 會⾃自動⽤用 email 及
password 兩個欄位的值與資料庫內的資料做⽐比對
• 若失敗則返回登⼊入⾴頁、若成功則導⾄至 /home
登出流程⽰示意圖
重導
登出使⽤用者
Auth::logout
auth/logout /
登出
使⽤用者
Laravel 的登出流程
• 將使⽤用者導⾄至 /auth/logout ⾴頁⾯面
• AuthController 會將現在登⼊入的使⽤用者登出
• 所有動作完成後,返回⾄至 /
設定登⼊入/出 Routes
• Laravel 5.1 已經幫我們將 Controller 準備好,僅需要
在 Route 裡指定路徑⾄至對應的 Controller 即可
• 要注意 Controller 要加 Auth 的 namespace,並且
注意對應到的 Controller ⽅方法不可錯
• 若有需要,可⾃自定 Route 名稱,⽅方便其他⾴頁⾯面以
route() 連結
//	
  app/Http/routes.php	
  
Route::get('auth/login',	
  ['as'	
  =>	
  'login.index',	
  'uses'	
  =>	
  
'AuthAuthController@getLogin']);	
  
Route::post('auth/login',	
  ['as'	
  =>	
  'login.process',	
  'uses'	
  
=>	
  'AuthAuthController@postLogin']);	
  
Route::get('auth/logout',	
  ['as'	
  =>	
  'logout.process',	
  'uses'	
  
=>	
  'AuthAuthController@getLogout']);
實作登⼊入表單
• Laravel 5.1 預設沒有提供對應的Views,不過官⽅方⽂文
件內有⽰示範如何撰寫表單原型,可以直接參考來改
• View 所預設放置的位置及檔名為:resources/views/
auth/login.blade.php (請務必依照預設命名檔案並放置在對應的位置)
//	
  resources/views/auth/login.blade.php	
  
{!!	
  Form::open(['route'	
  =>	
  'login.process',	
  'method'	
  =>	
  'post'])	
  !!}	
  
	
  	
  	
  	
  {!!	
  Form::email('email',	
  null,	
  ['id'	
  =>	
  'email'])	
  !!}	
  
	
  	
  	
  	
  {!!	
  Form::password('password',	
  null,	
  ['id'	
  =>	
  'password'])	
  !!}	
  
	
  	
  	
  	
  {!!	
  Form::checkbox('remember',	
  1,	
  true,	
  ['id'	
  =>	
  'remember'])	
  !!}	
  
	
  	
  	
  	
  	
  
	
  	
  	
  	
  {!!	
  Form::submit('登⼊入')	
  !!}	
  
{!!	
  Form::close()	
  !!}
修改預設設定
• 若想要修改登⼊入失敗的訊息 (不是表單驗證的錯誤訊
息),可以在 AuthController 裡覆寫
getFailedLoginMessage ⽅方法裡的回傳字串
• 若登⼊入完成後,不想要導到 /home,可以在
AuthController 內設定⼀一個 $redirectPath 屬
性,將要重新導向的網址以字串設定即可
• 若登出完成後,不想要導到 /,可以在
AuthController 內設定⼀一個
$redirectAfterLogout 屬性,將要重新導向的網
址以字串設定即可
登⼊入/出流程核⼼心程式
• AuthController 使⽤用了	
  
IlluminateFoundationAuthAuthenticatesA
ndRegistersUsers Trait,⽽而
AuthenticatesAndRegistersUsers 裡⼜又分成兩個
Trait,其中
IlluminateFoundationAuthAuthenticatesU
sers 包含了所有關於登⼊入/出的動作,想了解
Laravel 如何實作登⼊入/出動作,可以追⼀一下原始碼
忘記密碼
★ 參考⽂文件:http://laravel.com/docs/5.1/authentication#resetting-passwords
先建⽴立資料表
• Laravel 5.1 版有內建密碼重設的 migration 檔案,會
⾃自動幫我們建⽴立好 password_resets 資料表
• 在實作前要把這個資料表透過 php	
  artisan	
  
migrate 建⽴立起來
password_resets 資料表
• 當 Laravel 要讓使⽤用者重設密碼時,會將重設密碼的
token 值存放在這個資料表,做為使⽤用者可否重設密
碼的認證:
- email:使⽤用者帳號
- token:由 Laravel 產⽣生的 token 值,做為⽐比對⽤用
- created_at:紀錄申請重設的時間,預設為 1 ⼩小
時,若超過時間則要重新申請。
忘記密碼流程⽰示意圖
validator
成功返回
寄出密碼重設信
設定使⽤用者忘記密碼
通過
帳號資料
password/email
失敗返回
錯誤訊息
成功訊息
產⽣生 token 紀錄
Laravel 的忘記密碼流程
• 使⽤用者先⾄至 /password/email ⾴頁⾯面忘記密碼表單,
表單上只有 Email ⼀一個欄位
• 表單送出後,先經過
PasswordController@postEmail 驗證表單資料,
若失敗則返回
• 驗證表單成功後,PasswordController 會產⽣生重
設密碼 token 並紀錄在 password_resets 資料表
內,並將重設密碼連結 email 給使⽤用者
• 所有動作完成後,返回⾄至 /password/email
設定忘記密碼 Routes
• Laravel 5.1 已經幫我們將 Controller 準備好,僅需要
在 Route 裡指定路徑⾄至對應的 Controller 即可
• 要注意 Controller 要加 Auth 的 namespace,並且
注意對應到的 Controller ⽅方法不可錯
• 若有需要,可⾃自定 Route 名稱,⽅方便其他⾴頁⾯面以
route() 連結
//	
  app/Http/routes.php	
  
Route::get('password/email'	
  ,	
  ['as'	
  =>	
  'forgetpassword.index'	
  	
  ,	
  
'uses'	
  =>	
  'AuthPasswordController@getEmail']);	
  
Route::post('password/email',	
  ['as'	
  =>	
  'forgetpassword.process',	
  
'uses'	
  =>	
  'AuthPasswordController@postEmail']);
實作忘記密碼表單
• Laravel 5.1 預設沒有提供對應的Views,不過官⽅方⽂文
件內有⽰示範如何撰寫表單原型,可以直接參考來改
• View 所預設放置的位置及檔名為:resources/views/
auth/password.blade.php (請務必依照預設命名檔案並放置在對應
的位置)
• 重設密碼完成後,會把成功訊息以 status 變數放
在 session 裡,可在 view 上⾯面印出來
//	
  resources/views/auth/password.blade.php	
  
{!!	
  Form::open(['route'	
  =>	
  'forgetpassword.process',	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'method'	
  =>	
  'post'])	
  !!}	
  
	
  	
  	
  	
  {!!	
  Form::email('email',	
  null,	
  ['id'	
  =>	
  'email'])	
  !!}	
  
	
  	
  	
  	
  {!!	
  Form::submit('忘記密碼')	
  !!}	
  
{!!	
  Form::close()	
  !!}
設定 Email
• 確認完使⽤用者⾝身份後,Laravel 會幫我們寄出⼀一封密
碼重設信,所以要先設定 Email:
- 設定 config/mail.php 裡的 from 區段內的寄件⼈人資
訊,包括 address 及 name
- 設定 .env 裡的相關的 Email 設定值:
✓ MAIL_DRIVER -­‐ ⼀一般是 SMTP
✓ MAIL_HOST -­‐ Email 使⽤用的 SMTP 主機
✓ MAIL_PORT、MAIL_ENCRYPTION -­‐ 主機使⽤用的 port 及加密⽅方式
✓ MAIL_USERNAME、MAIL_PASSWORD -­‐ Email 帳號、密碼
設定重設密碼信內容
• Laravel 內建帶有 resources/views/emails/
password.blade.php 會⽤用這個 view 當做重設密碼信的
內容
• 若想要修改信件的內容,直接修改這個 view 裡的
HTML 即可
//	
  resources/views/emails/password.blade.php	
  
點選此連結來重設您的密碼:{{	
  url('password/reset/'.$token)	
  }}
修改預設設定
• 假如想要修改重設密碼信的信件主旨,可以在
PasswordController 裡設定⼀一個 $subject 屬
性,以字串設定信件主旨即可
• 所有跟密碼重設的相關提⽰示⽂文字,都以多國語系字
串存在 resources/lang/{code}/passwords.php 內
• 其他更多重設密碼的設定,都紀錄在 config/auth.php
裡的 password 區段,包括重設密碼信使⽤用的 view
(emails.password)、重設密碼使⽤用的資料表名稱
(password_resets) 以及重設密碼的有效時間
(reminder.expire 以分鐘計)
忘記密碼流程核⼼心程式
• 關於忘記密碼的功能,Laravel 預設提供了
PasswordController 處理所有的動作,裡⾯面⼤大多
數的動作都直接使⽤用
IlluminateFoundationAuthResetsPassword
s Trait 實作,想了解 Laravel 如何實作忘記密碼動
作,可以追⼀一下原始碼
重設密碼
★ 參考⽂文件:http://laravel.com/docs/5.1/authentication#resetting-passwords
重設密碼流程⽰示意圖
validator
成功重設
並登⼊入
Password::reset
通過
認證資料
password/reset/{token}
失敗返回
錯誤訊息
重設使⽤用者密碼
登⼊入使⽤用者
/home
Laravel 的重設密碼流程
• 使⽤用者從重設密碼信裡取得 /password/reset/
{token} ⾴頁⾯面的網址,點擊網址後進⼊入重設密碼⾴頁⾯面,
若 token 無效則回傳 404
• 重設密碼表單上有 Email、密碼、確認密碼 三個欄位 (確認
密碼欄位的名稱請設定為 password_confirmation 以利表單驗證時欄位對照⽤用) 及
⼀一個 token 的隱藏欄位
• 表單送出後,先經過 PasswordController@postReset
驗證表單資料,若失敗則返回
• 驗證表單成功後,PasswordController 會將新密碼重
新加密後儲存,並將使⽤用者登⼊入
• 所有動作完成後,返回⾄至 /home
設定重設密碼 Routes
• Laravel 5.1 已經幫我們將 Controller 準備好,僅需要
在 Route 裡指定路徑⾄至對應的 Controller 即可
• 要注意 Controller 要加 Auth 的 namespace,並且
注意對應到的 Controller ⽅方法不可錯
• 若有需要,可⾃自定 Route 名稱,⽅方便其他⾴頁⾯面以
route() 連結
//	
  app/Http/routes.php	
  
Route::get('password/reset/{token}',	
  ['as'	
  =>	
  'resetpassword.index',	
  
'uses'	
  =>	
  'AuthPasswordController@getReset']);	
  
Route::post('password/reset',	
  ['as'	
  =>	
  'resetpassword.process',	
  
'uses'	
  =>	
  'AuthPasswordController@postReset']);
實作重設密碼表單
• Laravel 5.1 預設沒有提供對應的Views,不過官⽅方⽂文
件內有⽰示範如何撰寫表單原型,可以直接參考來改
• View 所預設放置的位置及檔名為:resources/views/
auth/reset.blade.php (請務必依照預設命名檔案並放置在對應的位置)
//	
  resources/views/auth/reset.blade.php	
  
{!!	
  Form::open(['route'	
  =>	
  'resetpassword.process',	
  'method'	
  =>	
  
'post'])	
  !!}	
  
	
  	
  	
  	
  {!!	
  Form::hidden('token',	
  $token)	
  !!}	
  
	
  	
  	
  	
  {!!	
  Form::email('email',	
  null,	
  ['id'	
  =>	
  'email'])	
  !!}	
  
	
  	
  	
  	
  {!!	
  Form::password('password',	
  null,	
  ['id'	
  =>	
  'password'])	
  !!}	
  
	
  	
  	
  	
  {!!	
  Form::password('password_confirmation',	
  null,	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  ['id'	
  =>	
  'password_confirmation'])	
  !!}	
  
	
  	
  	
  	
  {!!	
  Form::submit('重設密碼')	
  !!}	
  
{!!	
  Form::close()	
  !!}
修改預設設定
• 若重設密碼完成後,不想要導到 /home,可以在
PasswordController 內設定⼀一個 $redirectTo 屬
性,將要重新導向的網址以字串設定即可
重設密碼流程核⼼心程式
• 關於重設密碼的功能,Laravel 預設提供了
PasswordController 處理所有的動作,裡⾯面⼤大多
數的動作都直接使⽤用
IlluminateFoundationAuthResetsPassword
s Trait 實作,想了解 Laravel 如何實作重設密碼動
作,可以追⼀一下原始碼
認證相關實作
確認⺫⽬目前登⼊入狀態
• Laravel 提供 Auth Facade 可以讓我們在任何地⽅方確
認使⽤用者⺫⽬目前的登⼊入狀態,回傳值是 boolean:
-­‐ Auth::check()
取得登⼊入使⽤用者資訊
• 當使⽤用者成功登⼊入系統後,Laravel 提供 2 種⽅方式可
以讓我們很⽅方便的取得⺫⽬目前登⼊入使⽤用者的資訊:
-­‐ $user	
  =	
  Auth::user();	
  
-­‐ $user	
  =	
  $request-­‐>user();
限制僅供登⼊入後瀏覽
• 如何保護⾴頁⾯面限制只有登⼊入的使⽤用者可以瀏覽?有
兩種⽅方式:
- 在 Route 上設定 middleware
- 在 Controller 的 construct 裡設定 middleware
//	
  app/Http/routes.php	
  
Route::	
  group('users/profile',	
  ['middleware'	
  =>	
  'auth',	
  function()	
  
{	
  
	
  	
  	
  	
  //	
  只有登⼊入後的使⽤用者才可以通過	
  
}]);
//	
  app/Http/Controllers/UsersController.php	
  
public	
  function	
  __construct()	
  
{	
  
	
  	
  	
  	
  $this-­‐>middleware('auth');	
  
}
若已經登⼊入⾃自動跳轉
• 若在某些⾴頁⾯面要讓已經登⼊入的使⽤用者瀏覽時⾃自動跳
轉 (如登⼊入⾴頁、忘記密碼、重設密碼⾴頁等),可在
Controller 上設定 guest 的 middleware
• 若要修改跳轉⾴頁的網址,請修改 app/Http/
Middleware/RedirectIfAuthenticated.php 裡的路徑
//	
  app/Http/Middleware/RedirectIfAuthenticated.php	
  
if	
  ($this-­‐>auth-­‐>check())	
  {	
  
	
   return	
  redirect('/');	
  
}
//	
  app/Http/Controllers/Auth/PasswordController.php	
  
public	
  function	
  __construct()	
  
{	
  
	
   $this-­‐>middleware('guest');	
  
}
單元總結
• 在這個單元裡我們學到了些什麼?
- 標準網路應⽤用程式的使⽤用者認證實作
- Laravel 5.1 提供的使⽤用者認證功能
- ⽰示範專案使⽤用者認證實作⽅方式
Q & A
歡迎提問討論

More Related Content

What's hot

Proxmox Clustering with CEPH
Proxmox Clustering with CEPHProxmox Clustering with CEPH
Proxmox Clustering with CEPHFahadIbrar5
 
Deeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay NetworksDeeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay NetworksDocker, Inc.
 
Functional Programming by Examples using Haskell
Functional Programming by Examples using HaskellFunctional Programming by Examples using Haskell
Functional Programming by Examples using Haskellgoncharenko
 
Building Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integrationBuilding Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integrationFredrik Öhrström
 
Odoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best PracticesOdoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best PracticesOdoo
 
Linux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみようLinux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみようTsuyoshi OZAWA
 
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)Cyril Wang
 
Deploying & Scaling your Odoo Server
Deploying & Scaling your Odoo ServerDeploying & Scaling your Odoo Server
Deploying & Scaling your Odoo ServerOdoo
 
Tools for Solving Performance Issues
Tools for Solving Performance IssuesTools for Solving Performance Issues
Tools for Solving Performance IssuesOdoo
 
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...php and sapi and zendengine2 and...
php and sapi and zendengine2 and...do_aki
 
Intro to Linux Shell Scripting
Intro to Linux Shell ScriptingIntro to Linux Shell Scripting
Intro to Linux Shell Scriptingvceder
 
Linux Performance Profiling and Monitoring
Linux Performance Profiling and MonitoringLinux Performance Profiling and Monitoring
Linux Performance Profiling and MonitoringGeorg Schönberger
 
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/NeutronOverview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutronvivekkonnect
 
Tips on how to improve the performance of your custom modules for high volume...
Tips on how to improve the performance of your custom modules for high volume...Tips on how to improve the performance of your custom modules for high volume...
Tips on how to improve the performance of your custom modules for high volume...Odoo
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기Ian Choi
 
[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka
[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka
[2019] 바르게, 빠르게! Reactive를 품은 Spring KafkaNHN FORWARD
 
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具Shengyou Fan
 
[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless modeAkihiro Suda
 
Best Practices in Handling Performance Issues
Best Practices in Handling Performance IssuesBest Practices in Handling Performance Issues
Best Practices in Handling Performance IssuesOdoo
 

What's hot (20)

Proxmox Clustering with CEPH
Proxmox Clustering with CEPHProxmox Clustering with CEPH
Proxmox Clustering with CEPH
 
Deeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay NetworksDeeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay Networks
 
Functional Programming by Examples using Haskell
Functional Programming by Examples using HaskellFunctional Programming by Examples using Haskell
Functional Programming by Examples using Haskell
 
Building Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integrationBuilding Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integration
 
Odoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best PracticesOdoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best Practices
 
Laravel Presentation
Laravel PresentationLaravel Presentation
Laravel Presentation
 
Linux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみようLinux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみよう
 
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)
 
Deploying & Scaling your Odoo Server
Deploying & Scaling your Odoo ServerDeploying & Scaling your Odoo Server
Deploying & Scaling your Odoo Server
 
Tools for Solving Performance Issues
Tools for Solving Performance IssuesTools for Solving Performance Issues
Tools for Solving Performance Issues
 
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
 
Intro to Linux Shell Scripting
Intro to Linux Shell ScriptingIntro to Linux Shell Scripting
Intro to Linux Shell Scripting
 
Linux Performance Profiling and Monitoring
Linux Performance Profiling and MonitoringLinux Performance Profiling and Monitoring
Linux Performance Profiling and Monitoring
 
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/NeutronOverview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
 
Tips on how to improve the performance of your custom modules for high volume...
Tips on how to improve the performance of your custom modules for high volume...Tips on how to improve the performance of your custom modules for high volume...
Tips on how to improve the performance of your custom modules for high volume...
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
 
[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka
[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka
[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka
 
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
 
[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode
 
Best Practices in Handling Performance Issues
Best Practices in Handling Performance IssuesBest Practices in Handling Performance Issues
Best Practices in Handling Performance Issues
 

Viewers also liked

Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作Shengyou Fan
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 SeedingShengyou Fan
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定Shengyou Fan
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理Shengyou Fan
 
Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用Shengyou Fan
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 SeedingShengyou Fan
 
使用 Eloquent ORM
使用 Eloquent ORM使用 Eloquent ORM
使用 Eloquent ORMShengyou Fan
 
Package安裝與使用
Package安裝與使用Package安裝與使用
Package安裝與使用Shengyou Fan
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 

Viewers also liked (20)

驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
整合 Open ID
整合 Open ID整合 Open ID
整合 Open ID
 
CRUD 綜合運用
CRUD 綜合運用CRUD 綜合運用
CRUD 綜合運用
 
Migrations 與 Schema 操作
Migrations 與 Schema 操作Migrations 與 Schema 操作
Migrations 與 Schema 操作
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
工作坊總結
工作坊總結工作坊總結
工作坊總結
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
Package 安裝與使用
Package 安裝與使用Package 安裝與使用
Package 安裝與使用
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
工作坊簡介
工作坊簡介工作坊簡介
工作坊簡介
 
Eloquent ORM
Eloquent ORMEloquent ORM
Eloquent ORM
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
Model 設定與 Seeding
Model 設定與 SeedingModel 設定與 Seeding
Model 設定與 Seeding
 
Route路由控制
Route路由控制Route路由控制
Route路由控制
 
使用 Eloquent ORM
使用 Eloquent ORM使用 Eloquent ORM
使用 Eloquent ORM
 
Package安裝與使用
Package安裝與使用Package安裝與使用
Package安裝與使用
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
工作坊簡介
工作坊簡介工作坊簡介
工作坊簡介
 

Similar to 使用者認證

Laradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTHLaradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTHSzuping Wang
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎Shengyou Fan
 
Schema & Migration操作
Schema & Migration操作Schema & Migration操作
Schema & Migration操作Shengyou Fan
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作Shengyou Fan
 
OpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniterOpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniterHung-yu Lin
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Justin Lin
 
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後Shengyou Fan
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4Daniel Chou
 
開發環境建置
開發環境建置開發環境建置
開發環境建置Shengyou Fan
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署Shengyou Fan
 
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由Shengyou Fan
 
專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定Shengyou Fan
 
Appserv setup
Appserv setupAppserv setup
Appserv setupHt Wang
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0國昭 張
 
COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南Shengyou Fan
 

Similar to 使用者認證 (20)

使用者認證
使用者認證使用者認證
使用者認證
 
使用 Controller
使用 Controller使用 Controller
使用 Controller
 
驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
Laradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTHLaradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTH
 
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
 
Schema & Migration操作
Schema & Migration操作Schema & Migration操作
Schema & Migration操作
 
Route 機制
Route 機制Route 機制
Route 機制
 
Migrations 與 Schema操作
Migrations 與 Schema操作Migrations 與 Schema操作
Migrations 與 Schema操作
 
OpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniterOpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniter
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
 
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4
 
開發環境建置
開發環境建置開發環境建置
開發環境建置
 
應用程式佈署
應用程式佈署應用程式佈署
應用程式佈署
 
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
 
專案啟動與環境設定
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定
 
Appserv setup
Appserv setupAppserv setup
Appserv setup
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南
 

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] 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
 
以 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
 
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置Shengyou Fan
 
用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手Shengyou 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] 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 提升開發、發佈及服務監控效率
 
以 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
 
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
 
用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手
 

使用者認證