Top Banner
Jifty 唐鳳 1
505

Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Sep 13, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty♨

唐鳳

1

Page 2: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

⚁2

Page 3: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

2007/04/01

3

Page 4: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

2007/04/01

⚁ 明天飛日本

3

Page 5: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

2007/04/01

⚁ 明天飛日本

⚁ 在YAPC::Asia要講兩場

3

Page 6: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

2007/04/01

⚁ 明天飛日本

⚁ 在YAPC::Asia要講兩場

⚁ 糟:簡報還沒寫!

3

Page 7: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

<@ij1iao>JIT流簡報

4

Page 8: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

<@ij1iao>JIT流簡報

4

Page 9: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

<@ij1iao>JIT流簡報

4

Page 10: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

兩難

5

Page 11: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

兩難

⚁ 有兩場演講

5

Page 12: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

兩難

⚁ 有兩場演講

⚁ 要先做哪份簡報?

5

Page 13: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

兩難

⚁ 有兩場演講

⚁ 要先做哪份簡報?

⚁ 糟:拿不定主意!

5

Page 14: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

6

Page 15: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

7

Page 16: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

7

Page 17: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

8

Page 18: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

鬆了一口氣

9

Page 19: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

鬆了一口氣

⚁ 坐等大家幫我下決定

9

Page 20: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

鬆了一口氣

⚁ 坐等大家幫我下決定

⚁ 完全不急著準備簡報了

9

Page 21: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

鬆了一口氣

⚁ 坐等大家幫我下決定

⚁ 完全不急著準備簡報了

⚁ 閒來無事,幫別人做決定吧!

9

Page 22: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Pick!

10

Page 23: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Pick!

“偽兩難”

10

Page 24: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Pick!

11

Page 25: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Pick!

11

Page 26: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Pick!

12

Page 27: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Pick!

12

Page 28: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Pick!

13

Page 29: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Pick!

13

Page 30: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Pick!

14

Page 31: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

一小時過去了...

15

Page 32: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

...開票!

16

Page 33: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

♨17

Page 34: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty

18

Page 35: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty

♨網站應用程式框架

18

Page 36: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty

♨網站應用程式框架♨簡單的事情=輕鬆完成

18

Page 37: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty

♨網站應用程式框架♨簡單的事情=輕鬆完成

♨複雜的事情=輕鬆完成

18

Page 38: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty=JFDI

19

Page 39: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty=JFDI

♨ JustF*ckingDoIt

19

Page 40: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty=JFDI

♨ JustF*ckingDoIt

♨讓大家JFDI

19

Page 41: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty=JFDI

♨ JustF*ckingDoIt

♨讓大家JFDI

♨直接來寫Doxory!

19

Page 42: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

20

Page 43: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$cpan

20

Page 44: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$cpan•cpan>notestinstallJifty

20

Page 45: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$cpan•cpan>notestinstallJifty

“notest”可以省一小時的時間.

20

Page 46: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

21

Page 47: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftyapp‐‐nameDoxory

21

Page 48: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftyapp‐‐nameDoxory• CreatingnewapplicationDoxory

CreatingdirectorylibCreatingdirectorylib/DoxoryCreatingdirectorybinCreatingdirectoryetcCreatingdirectorydocCreatingdirectorylogCreatingdirectoryvarCreatingdirectoryvar/masonCreatingdirectoryshareCreatingdirectoryshare/poCreatingdirectoryshare/webCreatingdirectoryshare/web/templatesCreatingdirectoryshare/web/staticCreatingdirectorylib/Doxory/ModelCreatingdirectorylib/Doxory/ActionCreatingdirectorytCreatingconfigurationfileDoxory/etc/config.yml

21

Page 49: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

三份檔案

22

Page 50: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

三份檔案

♨ bin/jifty

22

Page 51: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

三份檔案

♨ bin/jifty

♨ etc/config.yml

22

Page 52: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

三份檔案

♨ bin/jifty

♨ etc/config.yml

♨ Makefile.PL

22

Page 53: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

23

Page 54: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftyserver

23

Page 55: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftyserver• INFO‐Youcanconnecttoyourserverat

http://localhost:8888/

23

Page 56: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

動了!

24

Page 57: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

動了!

這並不是Doxory.使用者(Users)在哪裡?

24

Page 58: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

25

Page 59: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$cdDoxory

25

Page 60: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$cdDoxory

•$jiftymodel‐‐nameUser

25

Page 61: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$cdDoxory

•$jiftymodel‐‐nameUser•Writingfilet/00‐model‐User.tWritingfilelib/Doxory/Model/User.pm

25

Page 62: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$cdDoxory

•$jiftymodel‐‐nameUser•Writingfilet/00‐model‐User.tWritingfilelib/Doxory/Model/User.pm

•$vimlib/Doxory/Model/User.pm

25

Page 63: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::User;• useJifty::DBI::Schema;• • useDoxory::Recordschema{•

• • };

26

Page 64: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::User;• useJifty::DBI::Schema;• • useDoxory::Recordschema{• • columnname=>• labelis'Username',• hintsis'Otherpeopleseethiswhenyouaskquestions.',• isdistinct,• ismandatory;• • columnemail=>• labelis'Email',• hintsis'Wewillnotsellittoanybody.Honest.',• defaultis'',• isdistinct,• isimmutable;• • };

27

Page 65: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

28

Page 66: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftyschema‐‐setup

28

Page 67: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftyschema‐‐setup• INFO‐GeneratingSQLforapplicationDoxory...

INFO‐UsingDoxory::Model::UserINFO‐UsingJifty::Model::SessionINFO‐UsingJifty::Model::MetadataINFO‐Setupversionv0.0.1,jiftyversion0.701170

28

Page 68: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftyschema‐‐setup• INFO‐GeneratingSQLforapplicationDoxory...

INFO‐UsingDoxory::Model::UserINFO‐UsingJifty::Model::SessionINFO‐UsingJifty::Model::MetadataINFO‐Setupversionv0.0.1,jiftyversion0.701170

•$jiftyserver&

28

Page 69: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftyschema‐‐setup• INFO‐GeneratingSQLforapplicationDoxory...

INFO‐UsingDoxory::Model::UserINFO‐UsingJifty::Model::SessionINFO‐UsingJifty::Model::MetadataINFO‐Setupversionv0.0.1,jiftyversion0.701170

•$jiftyserver&

• INFO‐Youcanconnecttoyourserverathttp://localhost:8888/

28

Page 70: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftyschema‐‐setup• INFO‐GeneratingSQLforapplicationDoxory...

INFO‐UsingDoxory::Model::UserINFO‐UsingJifty::Model::SessionINFO‐UsingJifty::Model::MetadataINFO‐Setupversionv0.0.1,jiftyversion0.701170

•$jiftyserver&

• INFO‐Youcanconnecttoyourserverathttp://localhost:8888/

• $openhttp://localhost:8888/

28

Page 71: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

29

Page 72: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

29

Page 73: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

30

Page 74: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

30

Page 75: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

31

Page 76: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

31

Page 77: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

32

Page 78: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

32

Page 79: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

33

Page 80: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

AudreyT

33

Page 81: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

AudreyT

33

Page 82: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

34

Page 83: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

接著來寫選擇題(Choice)模型.

34

Page 84: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

35

Page 85: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$jiftymodel‐‐nameChoice

35

Page 86: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$jiftymodel‐‐nameChoice•Writingfilet/00‐model‐Choice.tWritingfilelib/Doxory/Model/Choice.pm

35

Page 87: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$jiftymodel‐‐nameChoice•Writingfilet/00‐model‐Choice.tWritingfilelib/Doxory/Model/Choice.pm

•$vimlib/Doxory/Model/Choice.pm

35

Page 88: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Choice;• useJifty::DBI::Schema;• useDoxory::Recordschema{• • columnname=>• labelis'Ineedhelpdeciding...',• renderas'textarea';• • columna=>• labelis'Ontheonehand',• renderas'textarea',ismandatory;

• columnb=>• labelis'Ontheotherhand',• renderas'textarea',ismandatory;

• columnasked_by=>• labelis'Askedby',• defaultisdefer{Jifty‐>web‐>current_user‐>id},• referencesDoxory::Model::User;• • };

36

Page 89: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

37

Page 90: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftyschema‐‐drop‐database‐‐setup

37

Page 91: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftyschema‐‐drop‐database‐‐setup• INFO‐GeneratingSQLforapplicationDoxory...

INFO‐UsingDoxory::Model::UserINFO‐UsingDoxory::Model::ChoiceINFO‐UsingJifty::Model::SessionINFO‐UsingJifty::Model::MetadataINFO‐Setupversionv0.0.1,jiftyversion0.701170

37

Page 92: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftyschema‐‐drop‐database‐‐setup• INFO‐GeneratingSQLforapplicationDoxory...

INFO‐UsingDoxory::Model::UserINFO‐UsingDoxory::Model::ChoiceINFO‐UsingJifty::Model::SessionINFO‐UsingJifty::Model::MetadataINFO‐Setupversionv0.0.1,jiftyversion0.701170

• $openhttp://localhost:8888/

37

Page 93: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

38

Page 94: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

38

Page 95: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

39

Page 96: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

39

Page 97: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

40

Page 98: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

40

Page 99: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

41

Page 100: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

41

Page 101: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

42

Page 102: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

42

Page 103: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

43

Page 104: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

做完了!...可是使用者要怎麼登入呢?

43

Page 105: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

✍44

Page 106: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

45

Page 107: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimetc/config.yml

45

Page 108: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimetc/config.yml

這裡要加兩列設定.

45

Page 109: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•‐‐‐•framework:•Plugins:•‐SkeletonApp:{}•‐REST:{}•‐Halo:{}•‐ErrorTemplates:{}•‐CompressedCSSandJS:{}••

•46

Page 110: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•‐‐‐•framework:•Plugins:•‐SkeletonApp:{}•‐REST:{}•‐Halo:{}•‐ErrorTemplates:{}•‐CompressedCSSandJS:{}•‐Authentication::Password:{}•SkipAccessControl:1

•47

Page 111: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•‐‐‐•framework:•Plugins:•‐SkeletonApp:{}•‐REST:{}•‐Halo:{}•‐ErrorTemplates:{}•‐CompressedCSSandJS:{}•‐Authentication::Password:{}•SkipAccessControl:1

• 懶得定義存取權限規則(ACL).

47

Page 112: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

48

Page 113: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/Model/User.pm

48

Page 114: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/Model/User.pm

為User.pm加上兩個mixin.

48

Page 115: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::User;• useJifty::DBI::Schema;• useDoxory::Recordschema{• • columnname=>• labelis'Username',• hintsis'Otherpeopleseethiswhenyouaskquestions.',• isdistinct,• ismandatory;• • columnemail=>• labelis'Email',• hintsis'Wewillnotsellittoanybody.Honest.',• defaultis'',• isdistinct,• isimmutable;

• };

•49

Page 116: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::User;• useJifty::DBI::Schema;• useDoxory::Recordschema{• • columnname=>• labelis'Username',• hintsis'Otherpeopleseethiswhenyouaskquestions.',• isdistinct,• ismandatory;• • columnemail=>• labelis'Email',• hintsis'Wewillnotsellittoanybody.Honest.',• defaultis'',• isdistinct,• isimmutable;

• };

• useJifty::Plugin::User::Mixin::Model::User;• useJifty::Plugin::Authentication::Password::Mixin::Model::User;

50

Page 117: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

51

Page 118: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

51

Page 119: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

52

Page 120: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

52

Page 121: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

53

Page 122: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

From: Doxory <>Date: April 3, 2007 5:43:07 PM JSTTo: [email protected]: 歡迎光臨 Doxory!

您 (或自稱是您的某人) 在 Doxory 申請註冊新帳號.

請點擊以下鏈結, 以確認您的電郵位址:

http://127.0.0.1:8888/let/jesse%40bestpractical.com/confirm_email/78f28e934cf6c058

53

Page 123: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

From: Doxory <>Date: April 3, 2007 5:43:07 PM JSTTo: [email protected]: 歡迎光臨 Doxory!

您 (或自稱是您的某人) 在 Doxory 申請註冊新帳號.

請點擊以下鏈結, 以確認您的電郵位址:

http://127.0.0.1:8888/let/jesse%40bestpractical.com/confirm_email/78f28e934cf6c058

53

Page 124: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

54

Page 125: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

54

Page 126: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

55

Page 127: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

登入成功了...(網頁界面呢?)

55

Page 128: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

❁56

Page 129: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

57

Page 130: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/Dispatcher.pm

57

Page 131: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/Dispatcher.pm

Dispatcher負責將網址對映到頁面(View).

57

Page 132: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

58

Page 133: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Dispatcher;useJifty::Dispatcher‐base;

58

Page 134: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Dispatcher;useJifty::Dispatcher‐base;

•before'*'=>run{if(Jifty‐>web‐>current_user‐>id){

58

Page 135: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Dispatcher;useJifty::Dispatcher‐base;

•before'*'=>run{if(Jifty‐>web‐>current_user‐>id){

• my$top=Jifty‐>web‐>navigation;$top‐>child('Choices'=>url=>'/choices');

58

Page 136: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Dispatcher;useJifty::Dispatcher‐base;

•before'*'=>run{if(Jifty‐>web‐>current_user‐>id){

• my$top=Jifty‐>web‐>navigation;$top‐>child('Choices'=>url=>'/choices');

• }

58

Page 137: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Dispatcher;useJifty::Dispatcher‐base;

•before'*'=>run{if(Jifty‐>web‐>current_user‐>id){

• my$top=Jifty‐>web‐>navigation;$top‐>child('Choices'=>url=>'/choices');

• }• elsif($1!~/^login|^signup/){

tangent'login';}};

58

Page 138: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Dispatcher;useJifty::Dispatcher‐base;

•before'*'=>run{if(Jifty‐>web‐>current_user‐>id){

• my$top=Jifty‐>web‐>navigation;$top‐>child('Choices'=>url=>'/choices');

• }• elsif($1!~/^login|^signup/){

tangent'login';}};

• #on'/'=>show'/';

58

Page 139: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Dispatcher;useJifty::Dispatcher‐base;

•before'*'=>run{if(Jifty‐>web‐>current_user‐>id){

• my$top=Jifty‐>web‐>navigation;$top‐>child('Choices'=>url=>'/choices');

• }• elsif($1!~/^login|^signup/){

tangent'login';}};

• #on'/'=>show'/';• #on'/choices'=>show'choices';

58

Page 140: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

59

Page 141: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

接著來寫“/”頁面.

59

Page 142: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

60

Page 143: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/View.pm

60

Page 144: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/View.pm

TT2退散!Mason退散!

60

Page 145: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

61

Page 146: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

61

Page 147: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

•template'/'=>page{h1{'Askaquestion!'}

61

Page 148: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

•template'/'=>page{h1{'Askaquestion!'}

• show'new_choice';

61

Page 149: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

•template'/'=>page{h1{'Askaquestion!'}

• show'new_choice';• };

61

Page 150: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

•template'/'=>page{h1{'Askaquestion!'}

• show'new_choice';• };

• privatetemplatenew_choice=>sub{div{form{

61

Page 151: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

•template'/'=>page{h1{'Askaquestion!'}

• show'new_choice';• };

• privatetemplatenew_choice=>sub{div{form{

• my$action=new_action(class=>'CreateChoice');

61

Page 152: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

•template'/'=>page{h1{'Askaquestion!'}

• show'new_choice';• };

• privatetemplatenew_choice=>sub{div{form{

• my$action=new_action(class=>'CreateChoice');• render_action($action=>['name','a','b']);

61

Page 153: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

•template'/'=>page{h1{'Askaquestion!'}

• show'new_choice';• };

• privatetemplatenew_choice=>sub{div{form{

• my$action=new_action(class=>'CreateChoice');• render_action($action=>['name','a','b']);• form_submit(label=>'AsktheCrowd!');

61

Page 154: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

•template'/'=>page{h1{'Askaquestion!'}

• show'new_choice';• };

• privatetemplatenew_choice=>sub{div{form{

• my$action=new_action(class=>'CreateChoice');• render_action($action=>['name','a','b']);• form_submit(label=>'AsktheCrowd!');• }}

61

Page 155: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

•template'/'=>page{h1{'Askaquestion!'}

• show'new_choice';• };

• privatetemplatenew_choice=>sub{div{form{

• my$action=new_action(class=>'CreateChoice');• render_action($action=>['name','a','b']);• form_submit(label=>'AsktheCrowd!');• }}• };

61

Page 156: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

62

Page 157: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

62

Page 158: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

63

Page 159: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

columna=>labelis'Ontheonehand',renderas'textarea',ismandatory;

63

Page 160: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

64

Page 161: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

64

Page 162: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

65

Page 163: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

然後輪到“choices”頁面.

65

Page 164: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/View.pm

66

Page 165: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

67

Page 166: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

67

Page 167: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

• template'/'=>page{...};privatetemplatenew_choice=>sub{...};

67

Page 168: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

• template'/'=>page{...};privatetemplatenew_choice=>sub{...};

• templatechoices=>page{

67

Page 169: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

• template'/'=>page{...};privatetemplatenew_choice=>sub{...};

• templatechoices=>page{• h1{'MyChoices'}

dl{

67

Page 170: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

• template'/'=>page{...};privatetemplatenew_choice=>sub{...};

• templatechoices=>page{• h1{'MyChoices'}

dl{• my$choices=Doxory::Model::ChoiceCollection‐>new;

$choices‐>limit(column=>'asked_by',value=>Jifty‐>web‐>current_user‐>id,);

67

Page 171: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

• template'/'=>page{...};privatetemplatenew_choice=>sub{...};

• templatechoices=>page{• h1{'MyChoices'}

dl{• my$choices=Doxory::Model::ChoiceCollection‐>new;

$choices‐>limit(column=>'asked_by',value=>Jifty‐>web‐>current_user‐>id,);

• while(my$c=$choices‐>next){dt{$c‐>name,'(',$c‐>asked_by‐>name,')'}dd{b{$c‐>a}em{'vs'}b{$c‐>b}}}}};

67

Page 172: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

68

Page 173: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

等等...要怎麼投票啊?

68

Page 174: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

☑69

Page 175: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

70

Page 176: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$jiftymodel‐‐nameVote

70

Page 177: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$jiftymodel‐‐nameVote•Writingfilet/00‐model‐Vote.tWritingfilelib/Doxory/Model/Vote.pm

70

Page 178: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$jiftymodel‐‐nameVote•Writingfilet/00‐model‐Vote.tWritingfilelib/Doxory/Model/Vote.pm

•$vimlib/Doxory/Model/Vote.pm

70

Page 179: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Vote;• useJifty::DBI::Schema;

• useDoxory::Recordschema{• • columnchoice=>• referencesDoxory::Model::Choice;• • columnvoter=>• referencesDoxory::Model::User;

• columnsuggestion=>• validareqw(abskip);

• columncomments=>• labelis'Comments?',• renderas'textarea’;• • };

71

Page 180: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

72

Page 181: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

72

Page 182: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

73

Page 183: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

接著來寫“pick”頁面.

73

Page 184: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/Dispatcher.pm

74

Page 185: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/Dispatcher.pm

先將/pick加進導覽列.

74

Page 186: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Dispatcher;useJifty::Dispatcher‐base;

•before'*'=>run{if(Jifty‐>web‐>current_user‐>id){

• my$top=Jifty‐>web‐>navigation;

• $top‐>child('Pick!'=>url=>'/pick');

• $top‐>child('Choices'=>url=>'/choices');• }• elsif($1!~/^login|^signup/){• tangent'login';

}• };•

on'/'=>show'new_choice';

75

Page 187: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Dispatcher;• ...• onpick=>run{• my$choices=Doxory::Model::ChoiceCollection‐>new;• my$votes=$choices‐>join(• type=>'left',• alias1=>'main',column1=>'id',• table2=>'votes',column2=>'choice',• );• $choices‐>limit(• leftjoin=>$votes,column=>'voter',• value=>Jifty‐>web‐>current_user‐>id,• );• $choices‐>limit(• alias=>$votes,column=>'voter',• operator=>'IS',value=>'NULL',• );• if(my$c=$choices‐>first){• setchoice=>$c;• }• else{• show'nothing_to_pick';• }• };

76

Page 188: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Dispatcher;• ...• onpick=>run{• my$choices=Doxory::Model::ChoiceCollection‐>new;• my$votes=$choices‐>join(• type=>'left',• alias1=>'main',column1=>'id',• table2=>'votes',column2=>'choice',• );• $choices‐>limit(• leftjoin=>$votes,column=>'voter',• value=>Jifty‐>web‐>current_user‐>id,• );• $choices‐>limit(• alias=>$votes,column=>'voter',• operator=>'IS',value=>'NULL',• );• if(my$c=$choices‐>first){• setchoice=>$c;• }• else{• show'nothing_to_pick';• }• };

“頭一道我還沒投票的選擇題”

76

Page 189: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/View.pm

77

Page 190: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

78

Page 191: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;

78

Page 192: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;• useJifty::View::Declare‐base;

template''=>page{...};privatetemplatechoices=>sub{...};

78

Page 193: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;• useJifty::View::Declare‐base;

template''=>page{...};privatetemplatechoices=>sub{...};

• templatepick=>page{

78

Page 194: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;• useJifty::View::Declare‐base;

template''=>page{...};privatetemplatechoices=>sub{...};

• templatepick=>page{• my$choice=get('choice');

78

Page 195: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;• useJifty::View::Declare‐base;

template''=>page{...};privatetemplatechoices=>sub{...};

• templatepick=>page{• my$choice=get('choice');• my$action=new_action(class=>'CreateVote');

78

Page 196: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;• useJifty::View::Declare‐base;

template''=>page{...};privatetemplatechoices=>sub{...};

• templatepick=>page{• my$choice=get('choice');• my$action=new_action(class=>'CreateVote');• my$redir=new_action(

class=>"Jifty::Action::Redirect",arguments=>{url=>'/pick'},);

78

Page 197: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;• useJifty::View::Declare‐base;

template''=>page{...};privatetemplatechoices=>sub{...};

• templatepick=>page{• my$choice=get('choice');• my$action=new_action(class=>'CreateVote');• my$redir=new_action(

class=>"Jifty::Action::Redirect",arguments=>{url=>'/pick'},);

• my%args=(choice=>$choice‐>id,voter=>Jifty‐>web‐>current_user‐>id,);

78

Page 198: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;• useJifty::View::Declare‐base;

template''=>page{...};privatetemplatechoices=>sub{...};

• templatepick=>page{• my$choice=get('choice');• my$action=new_action(class=>'CreateVote');• my$redir=new_action(

class=>"Jifty::Action::Redirect",arguments=>{url=>'/pick'},);

• my%args=(choice=>$choice‐>id,voter=>Jifty‐>web‐>current_user‐>id,);

• h1{$choice‐>asked_by‐>name,':',$choice‐>name}

78

Page 199: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;• useJifty::View::Declare‐base;

template''=>page{...};privatetemplatechoices=>sub{...};

• templatepick=>page{• my$choice=get('choice');• my$action=new_action(class=>'CreateVote');• my$redir=new_action(

class=>"Jifty::Action::Redirect",arguments=>{url=>'/pick'},);

• my%args=(choice=>$choice‐>id,voter=>Jifty‐>web‐>current_user‐>id,);

• h1{$choice‐>asked_by‐>name,':',$choice‐>name}• div{form{

78

Page 200: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;• useJifty::View::Declare‐base;

template''=>page{...};privatetemplatechoices=>sub{...};

• templatepick=>page{• my$choice=get('choice');• my$action=new_action(class=>'CreateVote');• my$redir=new_action(

class=>"Jifty::Action::Redirect",arguments=>{url=>'/pick'},);

• my%args=(choice=>$choice‐>id,voter=>Jifty‐>web‐>current_user‐>id,);

• h1{$choice‐>asked_by‐>name,':',$choice‐>name}• div{form{• my($x,$y)=map{$action‐>button(

submit=>[$action,$redir],label=>$choice‐>$_,arguments=>{suggestion=>$_,%args},)}((rand>0.5)?('a','b'):('b','a'));

78

Page 201: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;• useJifty::View::Declare‐base;

template''=>page{...};privatetemplatechoices=>sub{...};

• templatepick=>page{• my$choice=get('choice');• my$action=new_action(class=>'CreateVote');• my$redir=new_action(

class=>"Jifty::Action::Redirect",arguments=>{url=>'/pick'},);

• my%args=(choice=>$choice‐>id,voter=>Jifty‐>web‐>current_user‐>id,);

• h1{$choice‐>asked_by‐>name,':',$choice‐>name}• div{form{• my($x,$y)=map{$action‐>button(

submit=>[$action,$redir],label=>$choice‐>$_,arguments=>{suggestion=>$_,%args},)}((rand>0.5)?('a','b'):('b','a'));

• span{$x}em{'or'}span{$y}em{'or'}span{$action‐>button(submit=>[$action,$redir],label=>'Noneoftheabove',arguments=>{suggestion=>'skip',%args},);}

p{render_param($action=>'comments')}}}};

78

Page 202: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

79

Page 203: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

template''=>page{...};privatetemplatenew_choice=>sub{...};templatechoices=>page{...};templatepick=>page{...};

79

Page 204: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

template''=>page{...};privatetemplatenew_choice=>sub{...};templatechoices=>page{...};templatepick=>page{...};

• templatenothing_to_pick=>page{h1{"There'snothingforyoutopick."}

79

Page 205: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

template''=>page{...};privatetemplatenew_choice=>sub{...};templatechoices=>page{...};templatepick=>page{...};

• templatenothing_to_pick=>page{h1{"There'snothingforyoutopick."}

•p{"Nooneyouknowisangstingaboutanything.Everybodyknowswherethey'regoingtodinner,whattodoontheirnextdateandwhethertodropthatclass.Youhavesuchlovelyandwelladjustedfriends."}

79

Page 206: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

template''=>page{...};privatetemplatenew_choice=>sub{...};templatechoices=>page{...};templatepick=>page{...};

• templatenothing_to_pick=>page{h1{"There'snothingforyoutopick."}

•p{"Nooneyouknowisangstingaboutanything.Everybodyknowswherethey'regoingtodinner,whattodoontheirnextdateandwhethertodropthatclass.Youhavesuchlovelyandwelladjustedfriends."}

• h2{"Maybeit'stimetoaskforsomeadvice..."};

79

Page 207: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

template''=>page{...};privatetemplatenew_choice=>sub{...};templatechoices=>page{...};templatepick=>page{...};

• templatenothing_to_pick=>page{h1{"There'snothingforyoutopick."}

•p{"Nooneyouknowisangstingaboutanything.Everybodyknowswherethey'regoingtodinner,whattodoontheirnextdateandwhethertodropthatclass.Youhavesuchlovelyandwelladjustedfriends."}

• h2{"Maybeit'stimetoaskforsomeadvice..."};

• show'new_choice';};

79

Page 208: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

80

Page 209: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

81

Page 210: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

81

Page 211: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

82

Page 212: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

最後來改choices頁面,顯示目前統計的票數.

82

Page 213: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/Model/Choice.pm

83

Page 214: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Choice;• useJifty::DBI::Schema;• useDoxory::Recordschema{...}

• subin_favor_of_a{• my$self=shift;• $self‐>in_favor_of('a');• }

• subin_favor_of_b{• my$self=shift;• $self‐>in_favor_of('b');• }

• subin_favor_of{• my($self,$x)=@_;• my$votes=Doxory::Model::VoteCollection‐>new;• $votes‐>limit(column=>'choice',value=>$self‐>id);• $votes‐>limit(column=>'suggestion',value=>$x);• return$votes;• }•

84

Page 215: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/View.pm

85

Page 216: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

86

Page 217: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

86

Page 218: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;...

86

Page 219: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;...

• templatechoices=>page{h1{'MyChoices'}

86

Page 220: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;...

• templatechoices=>page{h1{'MyChoices'}

• dl{

86

Page 221: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;...

• templatechoices=>page{h1{'MyChoices'}

• dl{• my$choices=Doxory::Model::ChoiceCollection‐>new;

$choices‐>limit(column=>'asked_by',value=>Jifty‐>web‐>current_user‐>id,);

86

Page 222: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;...

• templatechoices=>page{h1{'MyChoices'}

• dl{• my$choices=Doxory::Model::ChoiceCollection‐>new;

$choices‐>limit(column=>'asked_by',value=>Jifty‐>web‐>current_user‐>id,);

• while(my$c=$choices‐>next){dt{$c‐>name,'(',$c‐>asked_by‐>name,')'}dd{

86

Page 223: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;...

• templatechoices=>page{h1{'MyChoices'}

• dl{• my$choices=Doxory::Model::ChoiceCollection‐>new;

$choices‐>limit(column=>'asked_by',value=>Jifty‐>web‐>current_user‐>id,);

• while(my$c=$choices‐>next){dt{$c‐>name,'(',$c‐>asked_by‐>name,')'}dd{

• b{$c‐>a,'(',$c‐>in_favor_of_a‐>count,')'}

86

Page 224: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;...

• templatechoices=>page{h1{'MyChoices'}

• dl{• my$choices=Doxory::Model::ChoiceCollection‐>new;

$choices‐>limit(column=>'asked_by',value=>Jifty‐>web‐>current_user‐>id,);

• while(my$c=$choices‐>next){dt{$c‐>name,'(',$c‐>asked_by‐>name,')'}dd{

• b{$c‐>a,'(',$c‐>in_favor_of_a‐>count,')'}• em{'vs'}

86

Page 225: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;...

• templatechoices=>page{h1{'MyChoices'}

• dl{• my$choices=Doxory::Model::ChoiceCollection‐>new;

$choices‐>limit(column=>'asked_by',value=>Jifty‐>web‐>current_user‐>id,);

• while(my$c=$choices‐>next){dt{$c‐>name,'(',$c‐>asked_by‐>name,')'}dd{

• b{$c‐>a,'(',$c‐>in_favor_of_a‐>count,')'}• em{'vs'}• b{$c‐>b,'(',$c‐>in_favor_of_b‐>count,')'}

86

Page 226: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;...

• templatechoices=>page{h1{'MyChoices'}

• dl{• my$choices=Doxory::Model::ChoiceCollection‐>new;

$choices‐>limit(column=>'asked_by',value=>Jifty‐>web‐>current_user‐>id,);

• while(my$c=$choices‐>next){dt{$c‐>name,'(',$c‐>asked_by‐>name,')'}dd{

• b{$c‐>a,'(',$c‐>in_favor_of_a‐>count,')'}• em{'vs'}• b{$c‐>b,'(',$c‐>in_favor_of_b‐>count,')'}

• }}}};

86

Page 227: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

87

Page 228: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

隨堂練習:顯示投票時的留言.☺

87

Page 229: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

大功告成!

88

Page 230: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

大功告成!♨ lib/Doxory/Model/User.pm

88

Page 231: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

大功告成!♨ lib/Doxory/Model/User.pm

♨ lib/Doxory/Model/Choice.pm

88

Page 232: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

大功告成!♨ lib/Doxory/Model/User.pm

♨ lib/Doxory/Model/Choice.pm

♨ lib/Doxory/Model/Vote.pm

88

Page 233: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

大功告成!♨ lib/Doxory/Model/User.pm

♨ lib/Doxory/Model/Choice.pm

♨ lib/Doxory/Model/Vote.pm

♨ lib/Doxory/Dispatcher.pm

88

Page 234: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

大功告成!♨ lib/Doxory/Model/User.pm

♨ lib/Doxory/Model/Choice.pm

♨ lib/Doxory/Model/Vote.pm

♨ lib/Doxory/Dispatcher.pm

♨ lib/Doxory/View.pm

88

Page 235: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

大功告成!♨ lib/Doxory/Model/User.pm

♨ lib/Doxory/Model/Choice.pm

♨ lib/Doxory/Model/Vote.pm

♨ lib/Doxory/Dispatcher.pm

♨ lib/Doxory/View.pm

88

Page 236: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

☈89

Page 237: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

網路分級

90

Page 238: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

網路分級

☈ Doxory是普級網站

90

Page 239: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

網路分級

☈ Doxory是普級網站

☈ 不能帶有色情暴力字樣

90

Page 240: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

網路分級

☈ Doxory是普級網站

☈ 不能帶有色情暴力字樣☈ ...英文髒話也不行

90

Page 241: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Doxory言論管制

91

Page 242: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Doxory言論管制

☈ 沒問題!

91

Page 243: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Doxory言論管制

☈ 沒問題!

☈ 改一小段就行了

91

Page 244: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Doxory言論管制

☈ 沒問題!

☈ 改一小段就行了☈ vimlib/Doxory/Model/Choice.pm

91

Page 245: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

92

Page 246: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Choice;

92

Page 247: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Choice;

• useRegexp::Common'profanity_us';

92

Page 248: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Choice;

• useRegexp::Common'profanity_us';

• subvalidate_name{my($self,$name)=@_;

92

Page 249: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Choice;

• useRegexp::Common'profanity_us';

• subvalidate_name{my($self,$name)=@_;

•if($name=~/$RE{profanity}/i){return(0,'Wouldyouspeaklikethat'.'infrontofyourmother?*cough*');}

92

Page 250: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Choice;

• useRegexp::Common'profanity_us';

• subvalidate_name{my($self,$name)=@_;

•if($name=~/$RE{profanity}/i){return(0,'Wouldyouspeaklikethat'.'infrontofyourmother?*cough*');}

•return1;}

92

Page 251: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

93

Page 252: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

檢查器(Validator)

94

Page 253: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

檢查器(Validator)

☈ 效果差強人意

94

Page 254: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

檢查器(Validator)

☈ 效果差強人意☈ 使用者覺得要一直改很煩

94

Page 255: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

檢查器(Validator)

☈ 效果差強人意☈ 使用者覺得要一直改很煩☈ 直接清乾淨就是了!

94

Page 256: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Choice;useRegexp::Common'profanity_us';

• subcanonicalize_name{• my($self,$name)=@_;

• $name=~s/$RE{profanity}/**expletives**/gi;• return$name;• }

95

Page 257: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

96

Page 258: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

正規化(Canonicalizer)

97

Page 259: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

正規化(Canonicalizer)

☈ 屬於Model的一部份

97

Page 260: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

正規化(Canonicalizer)

☈ 屬於Model的一部份

☈ 自動補完(Autocompleter)亦同

97

Page 261: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

正規化(Canonicalizer)

☈ 屬於Model的一部份

☈ 自動補完(Autocompleter)亦同

☈ 下一個題目:中文版Doxory

97

Page 262: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

文98

Page 263: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/Dispatcher.pm

99

Page 264: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/Dispatcher.pm

先標明選單裡要國際化的字串.

99

Page 265: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Dispatcher;useJifty::Dispatcher‐base;

•before'*'=>run{if(Jifty‐>web‐>current_user‐>id){

• my$top=Jifty‐>web‐>navigation;

• $top‐>child('Pick!'=>url=>'/pick');• $top‐>child('Choices'=>url=>'/choices');

• }• elsif($1!~/^login|^signup/){• tangent'login';

}• };

• ...

100

Page 266: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Dispatcher;useJifty::Dispatcher‐base;

•before'*'=>run{if(Jifty‐>web‐>current_user‐>id){

• my$top=Jifty‐>web‐>navigation;

• $top‐>child(_('Pick!')=>url=>'/pick');• $top‐>child(_('Choices')=>url=>'/choices');

• }• elsif($1!~/^login|^signup/){• tangent'login';

}• };

• ...

101

Page 267: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/Model/*.pm

102

Page 268: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/Model/*.pm

再將各欄位的label,hints等標明.

102

Page 269: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Choice;• useJifty::DBI::Schema;• useDoxory::Recordschema{• • columnname=>• labelis_('Ineedhelpdeciding...'),• renderas'textarea';• • columna=>• labelis_('Ontheonehand'),• renderas'textarea',ismandatory;

• columnb=>• labelis_('Ontheotherhand'),• renderas'textarea',ismandatory;

• columnasked_by=>• labelis_('Askedby'),• defaultisdefer{Jifty‐>web‐>current_user‐>id},• referencesDoxory::Model::User;• • };

103

Page 270: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::User;• useJifty::DBI::Schema;• • useDoxory::Recordschema{• • columnname=>

• labelis_('Username'),• hintsis_('Otherpeopleseethiswhenyouaskquestions.'),

• isdistinct,• ismandatory;• • columnemail=>

• labelis_('Email'),• hintsis_('Wewillnotsellittoanybody.Honest.'),

• defaultis'',• isdistinct,• isimmutable;• • };

104

Page 271: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Vote;• useJifty::DBI::Schema;

• useDoxory::Recordschema{• • columnchoice=>• referencesDoxory::Model::Choice;• • columnvoter=>• referencesDoxory::Model::User;

• columnsuggestion=>• validareqw(abskip);

• columncomments=>• labelis_('Comments?'),• renderas'textarea’;• • };

105

Page 272: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/View.pm

106

Page 273: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•$vimlib/Doxory/View.pm

最後再標明頁面裡要翻譯的部份.

106

Page 274: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::View;useJifty::View::Declare‐base;

template'/'=>page{h1{_('Askaquestion!')}

• show'new_choice';• };

• privatetemplatenew_choice=>sub{div{form{

• my$action=new_action(class=>'CreateChoice');• render_action($action=>['name','a','b']);• form_submit(label=>_('AsktheCrowd!'));• }}• };

• ...

107

Page 275: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

108

Page 276: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftypo‐‐languagezh_tw

108

Page 277: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftypo‐‐languagezh_tw

產生正體中文字典檔.

108

Page 278: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftypo‐‐languagezh_tw• INFO‐Extractingmessagesfrom'lib/Doxory/Dispatcher.pm'

INFO‐Extractingmessagesfrom'lib/Doxory/View.pm'INFO‐Extractingmessagesfrom'lib/Doxory/Model/Choice.pm'INFO‐Extractingmessagesfrom'lib/Doxory/Model/User.pm'INFO‐Extractingmessagesfrom'lib/Doxory/Model/Vote.pm'INFO‐Extractingmessagesfrom'bin/jifty'INFO‐Updatingmessagecatalog'share/po/zh_tw.po'

產生正體中文字典檔.

108

Page 279: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftypo‐‐languagezh_tw• INFO‐Extractingmessagesfrom'lib/Doxory/Dispatcher.pm'

INFO‐Extractingmessagesfrom'lib/Doxory/View.pm'INFO‐Extractingmessagesfrom'lib/Doxory/Model/Choice.pm'INFO‐Extractingmessagesfrom'lib/Doxory/Model/User.pm'INFO‐Extractingmessagesfrom'lib/Doxory/Model/Vote.pm'INFO‐Extractingmessagesfrom'bin/jifty'INFO‐Updatingmessagecatalog'share/po/zh_tw.po'

• $vimshare/po/zh_tw.po

產生正體中文字典檔.

108

Page 280: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $jiftypo‐‐languagezh_tw• INFO‐Extractingmessagesfrom'lib/Doxory/Dispatcher.pm'

INFO‐Extractingmessagesfrom'lib/Doxory/View.pm'INFO‐Extractingmessagesfrom'lib/Doxory/Model/Choice.pm'INFO‐Extractingmessagesfrom'lib/Doxory/Model/User.pm'INFO‐Extractingmessagesfrom'lib/Doxory/Model/Vote.pm'INFO‐Extractingmessagesfrom'bin/jifty'INFO‐Updatingmessagecatalog'share/po/zh_tw.po'

• $vimshare/po/zh_tw.po

產生正體中文字典檔.

編輯正體中文字典檔.

108

Page 281: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• msgid""• msgstr""• "Content‐Type:text/plain;

charset=CHARSET\n"

• #:lib/Doxory/View.pm:8• msgid"Askaquestion!"• msgstr""

• #:lib/Doxory/View.pm:16• msgid"Askthecrowd!"• msgstr""

• #:lib/Doxory/Model/Choice.pm:23• msgid"Askedby"• msgstr""

• #:lib/Doxory/Dispatcher.pm:10• msgid"Choices"• msgstr""

• #:lib/Doxory/Model/Vote.pm:18• msgid"Comments?"• msgstr""

• #:lib/Doxory/Model/Choice.pm:9• msgid"Ineedhelpdeciding..."• msgstr""

• #:lib/Doxory/Model/Choice.pm:13• msgid"Ontheonehand"• msgstr""

• #:lib/Doxory/Model/Choice.pm:18• msgid"Ontheotherhand"• msgstr""

• #:lib/Doxory/Dispatcher.pm:9• msgid"Pick!"• msgstr""•

109

Page 282: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• msgid""• msgstr""• "Content‐Type:text/plain;

charset=UTF‐8\n"

• #:lib/Doxory/View.pm:8• msgid"Askaquestion!"• msgstr"我有問題!"

• #:lib/Doxory/View.pm:16• msgid"Askthecrowd!"• msgstr"聽聽鄉民怎麼說!"

• #:lib/Doxory/Model/Choice.pm:23• msgid"Askedby"• msgstr"提問人"

• #:lib/Doxory/Dispatcher.pm:10• msgid"Choices"• msgstr"開票紀錄"

• #:lib/Doxory/Model/Vote.pm:18• msgid"Comments?"• msgstr"有何指教?"

• #:lib/Doxory/Model/Choice.pm:9• msgid"Ineedhelpdeciding..."• msgstr"幫幫我,該怎麼辦..."

• #:lib/Doxory/Model/Choice.pm:13• msgid"Ontheonehand"• msgstr"我應該...?"

• #:lib/Doxory/Model/Choice.pm:18• msgid"Ontheotherhand"• msgstr"或者...?"

• #:lib/Doxory/Dispatcher.pm:9• msgid"Pick!"• msgstr"投票!"

110

Page 283: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

111

Page 284: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

现在译成简体中文看看...

111

Page 285: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

112

Page 286: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $b2g.pl‐p‐ushare/po/zh_tw.po>share/po/zh_cn.po

112

Page 287: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $b2g.pl‐p‐ushare/po/zh_tw.po>share/po/zh_cn.po

先用Encode::HanConvert转成简体.

112

Page 288: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $b2g.pl‐p‐ushare/po/zh_tw.po>share/po/zh_cn.po

• $vimetc/config.yml

先用Encode::HanConvert转成简体.

112

Page 289: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $b2g.pl‐p‐ushare/po/zh_tw.po>share/po/zh_cn.po

• $vimetc/config.yml

先用Encode::HanConvert转成简体.

然后强制设定语系.

112

Page 290: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•‐‐‐•framework:•L10N:•PoDir:share/po

•113

Page 291: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

•‐‐‐•framework:•L10N:•PoDir:share/po•Lang:zh‐cn

•114

Page 292: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

115

Page 293: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

国际化完成!

115

Page 294: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

∀116

Page 295: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

開發工具

117

Page 296: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

開發工具

∀ 內建HTTP伺服器

117

Page 297: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

開發工具

∀ 內建HTTP伺服器

∀ Module::Install

117

Page 298: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

開發工具

∀ 內建HTTP伺服器

∀ Module::Install

∀ 自動生成PAR安裝套件

117

Page 299: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

加持光輪(Halo)

118

Page 300: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

加持光輪(Halo)

∀ 頁面顯示紀錄

118

Page 301: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

加持光輪(Halo)

∀ 頁面顯示紀錄∀ 線上即時編輯

118

Page 302: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

加持光輪(Halo)

∀ 頁面顯示紀錄∀ 線上即時編輯∀ ...還有更多更多!

118

Page 303: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Halo

119

Page 304: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Halo

∀ SQL查詢紀錄

119

Page 305: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Halo

∀ SQL查詢紀錄

∀ SQL效能分析

119

Page 306: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Halo

∀ SQL查詢紀錄

∀ SQL效能分析

∀ 頁面效能分析

119

Page 307: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Halo

∀ SQL查詢紀錄

∀ SQL效能分析

∀ 頁面效能分析

119

Page 308: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

開發模式(DevelMode)

120

Page 309: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

開發模式(DevelMode)

∀ Module::Refresh

120

Page 310: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

開發模式(DevelMode)

∀ Module::Refresh

∀ Log4Perl事件紀錄

120

Page 311: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

開發模式(DevelMode)

∀ Module::Refresh

∀ Log4Perl事件紀錄

∀ 線上管理界面

120

Page 312: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

建置支援

121

Page 313: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

建置支援

∀ Lighttpd/Apache

121

Page 314: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

建置支援

∀ Lighttpd/Apache

∀ CSS::Squish壓縮器

121

Page 315: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

建置支援

∀ Lighttpd/Apache

∀ CSS::Squish壓縮器

∀ JavaScript::Squish壓縮器

121

Page 316: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

還有很多有趣的...

122

Page 317: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

還有很多有趣的...

∀ 完善的I18N支援

122

Page 318: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

還有很多有趣的...

∀ 完善的I18N支援

∀ 用戶端Session

122

Page 319: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

還有很多有趣的...

∀ 完善的I18N支援

∀ 用戶端Session

∀ 事件(Event)訂閱

122

Page 320: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

✈123

Page 321: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

未來計劃

124

Page 322: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

未來計劃

✈WikiUI線上互動編輯器

124

Page 323: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

未來計劃

✈WikiUI線上互動編輯器

✈打更少字,做更多事

124

Page 324: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

未來計劃

✈WikiUI線上互動編輯器

✈打更少字,做更多事

✈有聲書,教學光碟,MTV...

124

Page 325: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

範例程式

125

Page 326: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

範例程式

✈Wifty

125

Page 327: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

範例程式

✈Wifty

✈ CommitBit

125

Page 328: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

範例程式

✈Wifty

✈ CommitBit

✈ BabelBee

125

Page 329: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

範例程式

✈Wifty

✈ CommitBit

✈ BabelBee

✈ Ping

125

Page 330: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

範例程式

✈Wifty

✈ CommitBit

✈ BabelBee

✈ Ping

✈ Chat

125

Page 331: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

範例程式

✈Wifty

✈ CommitBit

✈ BabelBee

✈ Ping

✈ Chat

✈ Clock

125

Page 332: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

範例程式

✈Wifty

✈ CommitBit

✈ BabelBee

✈ Ping

✈ Chat

✈ Clock

✈ Doxory!

125

Page 333: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

下載Jifty

126

Page 334: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

下載Jifty

✈ cpanJifty

126

Page 335: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

下載Jifty

✈ cpanJifty

✈ http://svn.jifty.org/svn/jifty.org

126

Page 336: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

下載Jifty

✈ cpanJifty

✈ http://svn.jifty.org/svn/jifty.org

✈ http://jifty.org/

126

Page 337: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

社群支援

127

Page 338: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

社群支援

✈ Jifty::Manual::Tutorial

127

Page 339: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

社群支援

✈ Jifty::Manual::Tutorial

✈ irc.freenode.net#jifty

127

Page 340: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

社群支援

✈ Jifty::Manual::Tutorial

✈ irc.freenode.net#jifty

✈ jifty‐[email protected]

127

Page 341: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

fin.128

Page 342: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Bonus Slides(來不及譯成中文)

129

Page 343: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

☺130

Page 344: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

AnatomyofaJiftyApp

131

Page 345: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

AnatomyofaJiftyApp

☺Model:Columns

131

Page 346: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

AnatomyofaJiftyApp

☺Model:Columns

☺Action:Parameters

131

Page 347: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

AnatomyofaJiftyApp

☺Model:Columns

☺Action:Parameters

☺ Template:Fragments

131

Page 348: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

MoreComponents

132

Page 349: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

MoreComponents

☺Dispatcher

132

Page 350: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

MoreComponents

☺Dispatcher

☺ ClassLoader

132

Page 351: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

MoreComponents

☺Dispatcher

☺ ClassLoader

☺ Continuations

132

Page 352: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

䷗133

Page 353: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI

134

Page 354: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI

∅ CREATETABLE

134

Page 355: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI

∅ CREATETABLE

∅ ALTERTABLE

134

Page 356: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI

∅ CREATETABLE

∅ ALTERTABLE

∅ CREATEFOREIGNKEY

134

Page 357: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ObjectRelationalMapper

135

Page 358: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ObjectRelationalMapper

∅ SELECT

135

Page 359: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ObjectRelationalMapper

∅ SELECT

∅ INSERT

135

Page 360: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ObjectRelationalMapper

∅ SELECT

∅ INSERT

∅ UPDATE

135

Page 361: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ObjectRelationalMapper

∅ SELECT

∅ INSERT

∅ UPDATE

∅ DELETE

135

Page 362: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Handle

136

Page 363: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Handle

䷗SQLite

136

Page 364: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Handle

䷗SQLite

䷗Postgres

136

Page 365: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Handle

䷗SQLite

䷗Postgres

䷗MySQL

136

Page 366: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Handle

䷗SQLite

䷗Postgres

䷗MySQL

䷗Oracle

136

Page 367: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Collection

137

Page 368: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Collection

䷗ JoinsandLimits

137

Page 369: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Collection

䷗ JoinsandLimits

䷗ Paging=Data::Page

137

Page 370: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Collection

䷗ JoinsandLimits

䷗ Paging=Data::Page

䷗ Caching=Memcached

137

Page 371: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Schema

138

Page 372: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Schema

䷗ DeclarativeColumns

138

Page 373: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Schema

䷗ DeclarativeColumns

䷗ RememberourDoxory?

138

Page 374: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::DBI::Schema

䷗ DeclarativeColumns

䷗ RememberourDoxory?

䷗ Timefor0.0.2!

138

Page 375: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

139

Page 376: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Comment;useJifty::DBI::Schema;useDoxory::Recordschema{

since'0.0.2';

139

Page 377: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Comment;useJifty::DBI::Schema;useDoxory::Recordschema{

since'0.0.2';•

columnUser=>referstoDoxory::Model:User;columnauthor=>referstoDoxory::Model::User;

139

Page 378: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Comment;useJifty::DBI::Schema;useDoxory::Recordschema{

since'0.0.2';•

columnUser=>referstoDoxory::Model:User;columnauthor=>referstoDoxory::Model::User;

•columnbody=>labelis'Content',typeis'Text',renderas'Textarea',defaultis'FirstPost!';

139

Page 379: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Comment;useJifty::DBI::Schema;useDoxory::Recordschema{

since'0.0.2';•

columnUser=>referstoDoxory::Model:User;columnauthor=>referstoDoxory::Model::User;

•columnbody=>labelis'Content',typeis'Text',renderas'Textarea',defaultis'FirstPost!';

•columntitle=>ismandatory,labelis'Title',lengthis40,hintsis'40bytesmax';

139

Page 380: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageDoxory::Model::Comment;useJifty::DBI::Schema;useDoxory::Recordschema{

since'0.0.2';•

columnUser=>referstoDoxory::Model:User;columnauthor=>referstoDoxory::Model::User;

•columnbody=>labelis'Content',typeis'Text',renderas'Textarea',defaultis'FirstPost!';

•columntitle=>ismandatory,labelis'Title',lengthis40,hintsis'40bytesmax';

•};

139

Page 381: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

DatabaseUpgrade

140

Page 382: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

DatabaseUpgrade

䷗ Usedtobepainful

140

Page 383: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

DatabaseUpgrade

䷗ Usedtobepainful

䷗ Notanymore

140

Page 384: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

DatabaseUpgrade

䷗ Usedtobepainful

䷗ Notanymore

䷗ Jiftyfixedit!

140

Page 385: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

141

Page 386: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml

141

Page 387: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml• (Setversionto0.0.2)

141

Page 388: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml• (Setversionto0.0.2)

• $jiftyserver

141

Page 389: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml• (Setversionto0.0.2)

• $jiftyserver• Applicationschemaversionindatabase(v0.0.1)

doesn'tmatchapplicationschemaversion(0.0.2)Pleaserun`bin/jiftyschema‐‐setup`toupgradethedatabase.

141

Page 390: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml• (Setversionto0.0.2)

• $jiftyserver• Applicationschemaversionindatabase(v0.0.1)

doesn'tmatchapplicationschemaversion(0.0.2)Pleaserun`bin/jiftyschema‐‐setup`toupgradethedatabase.

•$jiftyschema‐‐setup

141

Page 391: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml• (Setversionto0.0.2)

• $jiftyserver• Applicationschemaversionindatabase(v0.0.1)

doesn'tmatchapplicationschemaversion(0.0.2)Pleaserun`bin/jiftyschema‐‐setup`toupgradethedatabase.

•$jiftyschema‐‐setup

• Jiftyversion0.605070uptodate.INFO‐GeneratingSQLtoupgradeDoxoryv0.0.1databasetov0.0.2INFO‐Upgradedtoversionv0.0.2

141

Page 392: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml• (Setversionto0.0.2)

• $jiftyserver• Applicationschemaversionindatabase(v0.0.1)

doesn'tmatchapplicationschemaversion(0.0.2)Pleaserun`bin/jiftyschema‐‐setup`toupgradethedatabase.

•$jiftyschema‐‐setup

• Jiftyversion0.605070uptodate.INFO‐GeneratingSQLtoupgradeDoxoryv0.0.1databasetov0.0.2INFO‐Upgradedtoversionv0.0.2

•$jiftyserver

141

Page 393: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml• (Setversionto0.0.2)

• $jiftyserver• Applicationschemaversionindatabase(v0.0.1)

doesn'tmatchapplicationschemaversion(0.0.2)Pleaserun`bin/jiftyschema‐‐setup`toupgradethedatabase.

•$jiftyschema‐‐setup

• Jiftyversion0.605070uptodate.INFO‐GeneratingSQLtoupgradeDoxoryv0.0.1databasetov0.0.2INFO‐Upgradedtoversionv0.0.2

•$jiftyserver

• INFO‐Youcanconnecttoyourserverathttp://localhost:8888/

141

Page 394: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

142

Page 395: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• columntags=>since'0.0.3',referstoDoxory::Model::TagCollectionby'User';

142

Page 396: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• columntags=>since'0.0.3',referstoDoxory::Model::TagCollectionby'User';

•columnmood=>since'0.0.4',defaultis'happy',validare{display=>'Sad',value=>'sad'},{display=>'Happy',value=>'happy'};

142

Page 397: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• columntags=>since'0.0.3',referstoDoxory::Model::TagCollectionby'User';

•columnmood=>since'0.0.4',defaultis'happy',validare{display=>'Sad',value=>'sad'},{display=>'Happy',value=>'happy'};

•columncreated=>since'0.0.5',isimmutable,typeis'timestamp',defaultisliteral'now()',filtersare'Jifty::DBI::Filter::DateTime';

142

Page 398: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

143

Page 399: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml

143

Page 400: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml• (Setversionto0.0.5)

143

Page 401: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml• (Setversionto0.0.5)•

$jiftyschema‐‐setup

143

Page 402: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml• (Setversionto0.0.5)•

$jiftyschema‐‐setup• Jiftyversion0.605070uptodate.

INFO‐GeneratingSQLtoupgradeDoxoryv0.0.2databasetov0.0.5INFO‐Upgradedtoversionv0.0.5

143

Page 403: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml• (Setversionto0.0.5)•

$jiftyschema‐‐setup• Jiftyversion0.605070uptodate.

INFO‐GeneratingSQLtoupgradeDoxoryv0.0.2databasetov0.0.5INFO‐Upgradedtoversionv0.0.5

•$jiftyserver

143

Page 404: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $vimetc/config.yml• (Setversionto0.0.5)•

$jiftyschema‐‐setup• Jiftyversion0.605070uptodate.

INFO‐GeneratingSQLtoupgradeDoxoryv0.0.2databasetov0.0.5INFO‐Upgradedtoversionv0.0.5

•$jiftyserver

• INFO‐Youcanconnecttoyourserverathttp://localhost:8888/

143

Page 405: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

⇛144

Page 406: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Action=APIs

145

Page 407: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Action=APIs

⇛ MethodCalls

145

Page 408: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Action=APIs

⇛ MethodCalls

⇛ Typednamedarguments

145

Page 409: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Action=APIs

⇛ MethodCalls

⇛ Typednamedarguments

⇛ Returnsresultsorerrors

145

Page 410: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Action≠URLs

146

Page 411: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Action≠URLs

⇛ Manyactionsononepage

146

Page 412: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Action≠URLs

⇛ Manyactionsononepage

⇛ Calledwithwebforms

146

Page 413: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Action≠URLs

⇛ Manyactionsononepage

⇛ Calledwithwebforms

⇛ SoundslikeRPC?

146

Page 414: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Action=RPC

147

Page 415: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Action=RPC

⇛ Webformencoding

147

Page 416: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Action=RPC

⇛ Webformencoding

⇛ XML/YAMLencoding

147

Page 417: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Action=RPC

⇛ Webformencoding

⇛ XML/YAMLencoding

⇛ Webservicesforfree!

147

Page 418: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Model⇛Action

148

Page 419: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Model⇛Action⇛ Doxory::Action::CreateUser

148

Page 420: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Model⇛Action⇛ Doxory::Action::CreateUser

⇛ Doxory::Action::SearchUser

148

Page 421: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Model⇛Action⇛ Doxory::Action::CreateUser

⇛ Doxory::Action::SearchUser

⇛ Doxory::Action::UpdateUser

148

Page 422: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Model⇛Action⇛ Doxory::Action::CreateUser

⇛ Doxory::Action::SearchUser

⇛ Doxory::Action::UpdateUser

⇛ Doxory::Action::DeleteUser

148

Page 423: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

MakeyourownActions

149

Page 424: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

150

Page 425: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageHello::Action::SayHi;useJifty::Param::Schema;useJifty::Actionschema{paramname=>labelis'Yourname?';};

150

Page 426: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• packageHello::Action::SayHi;useJifty::Param::Schema;useJifty::Actionschema{paramname=>labelis'Yourname?';};

•subtake_action{my$self=shift;my$name=$self‐>argument_value('name');$self‐>result‐>message("Hello,$name");}

150

Page 427: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

151

Page 428: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• <%init>my$action=Jifty‐>web‐>new_action(class=>'SayHi');</%init>

151

Page 429: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• <%init>my$action=Jifty‐>web‐>new_action(class=>'SayHi');</%init>

•<&|/_elements/wrapper&><%Jifty‐>web‐>form‐>start%><%$action‐>form_field('name')%><%Jifty‐>web‐>form‐>submit%><%Jifty‐>web‐>form‐>end%></&>

151

Page 430: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• <%init>my$action=Jifty‐>web‐>new_action(class=>'SayHi');</%init>

•<&|/_elements/wrapper&><%Jifty‐>web‐>form‐>start%><%$action‐>form_field('name')%><%Jifty‐>web‐>form‐>submit%><%Jifty‐>web‐>form‐>end%></&>

151

Page 431: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• <%init>my$action=Jifty‐>web‐>new_action(class=>'SayHi');</%init>

•<&|/_elements/wrapper&><%Jifty‐>web‐>form‐>start%><%$action‐>form_field('name')%><%Jifty‐>web‐>form‐>submit%><%Jifty‐>web‐>form‐>end%></&>

151

Page 432: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

152

Page 433: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $curl\http://localhost:8888/__jifty/webservices/yaml?\J:A‐1=SayHi;J:A:F‐name‐1=Jesse

152

Page 434: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• $curl\http://localhost:8888/__jifty/webservices/yaml?\J:A‐1=SayHi;J:A:F‐name‐1=Jesse

•1:!!perl/hash:Jifty::Result_content:{}action_class:Hello::Action::SayHifailure:0field_errors:name:~field_warnings:name:~message:'Hello,Jesse'

152

Page 435: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

☸153

Page 436: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::Dispatcher

154

Page 437: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Dispatcher=Kernel

155

Page 438: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Dispatcher=Kernel

☸ Simple

155

Page 439: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Dispatcher=Kernel

☸ Simple

☸ Declarative

155

Page 440: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Dispatcher=Kernel

☸ Simple

☸ Declarative

☸ Encapsulatesviewlogic

155

Page 441: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ThreeStages

156

Page 442: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ThreeStages

☸ Before:Setsupstate

156

Page 443: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ThreeStages

☸ Before:Setsupstate

☸ On:Showsyourpages

156

Page 444: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ThreeStages

☸ Before:Setsupstate

☸ On:Showsyourpages

☸ After:Cleansupstate

156

Page 445: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Jifty::ClassLoader

157

Page 446: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ScaffoldingBad

158

Page 447: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ScaffoldingBad

☸ Ugly

158

Page 448: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ScaffoldingBad

☸ Ugly

☸ Redundant

158

Page 449: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ScaffoldingBad

☸ Ugly

☸ Redundant

☸ Fragile

158

Page 450: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ScaffoldingBad

☸ Ugly

☸ Redundant

☸ Fragile

☸ Annoying

158

Page 451: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ScaffoldingBad

☸ Ugly

☸ Redundant

☸ Fragile

☸ Annoying

☸ Redundant

158

Page 452: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

ScaffoldingBad

☸ Ugly

☸ Redundant

☸ Fragile

☸ Annoying

☸ Redundant

☸ Redundant

158

Page 453: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

WhyEmptyClasses?

159

Page 454: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

WhyEmptyClasses?

☸ Jifty::ClassLoader

159

Page 455: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

WhyEmptyClasses?

☸ Jifty::ClassLoader

☸ Auto‐createsclasses

159

Page 456: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

WhyEmptyClasses?

☸ Jifty::ClassLoader

☸ Auto‐createsclasses

☸ Neverwritesthemtodisk

159

Page 457: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses

160

Page 458: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory

160

Page 459: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory☸ Doxory::Record

160

Page 460: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory☸ Doxory::Record☸ Doxory::Collection

160

Page 461: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory☸ Doxory::Record☸ Doxory::Collection☸ Doxory::Bootstrap

160

Page 462: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory☸ Doxory::Record☸ Doxory::Collection☸ Doxory::Bootstrap☸ Doxory::Upgrade

160

Page 463: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory☸ Doxory::Record☸ Doxory::Collection☸ Doxory::Bootstrap☸ Doxory::Upgrade☸ Doxory::Dispatcher

160

Page 464: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory☸ Doxory::Record☸ Doxory::Collection☸ Doxory::Bootstrap☸ Doxory::Upgrade☸ Doxory::Dispatcher☸ Doxory::CurrentUser

160

Page 465: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory☸ Doxory::Record☸ Doxory::Collection☸ Doxory::Bootstrap☸ Doxory::Upgrade☸ Doxory::Dispatcher☸ Doxory::CurrentUser

☸ Doxory::Model::UserCollection

160

Page 466: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory☸ Doxory::Record☸ Doxory::Collection☸ Doxory::Bootstrap☸ Doxory::Upgrade☸ Doxory::Dispatcher☸ Doxory::CurrentUser

☸ Doxory::Model::UserCollection

☸ Doxory::Action::CreateUser

160

Page 467: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory☸ Doxory::Record☸ Doxory::Collection☸ Doxory::Bootstrap☸ Doxory::Upgrade☸ Doxory::Dispatcher☸ Doxory::CurrentUser

☸ Doxory::Model::UserCollection

☸ Doxory::Action::CreateUser☸ Doxory::Action::SearchUser

160

Page 468: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory☸ Doxory::Record☸ Doxory::Collection☸ Doxory::Bootstrap☸ Doxory::Upgrade☸ Doxory::Dispatcher☸ Doxory::CurrentUser

☸ Doxory::Model::UserCollection

☸ Doxory::Action::CreateUser☸ Doxory::Action::SearchUser☸ Doxory::Action::UpdateUser

160

Page 469: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory☸ Doxory::Record☸ Doxory::Collection☸ Doxory::Bootstrap☸ Doxory::Upgrade☸ Doxory::Dispatcher☸ Doxory::CurrentUser

☸ Doxory::Model::UserCollection

☸ Doxory::Action::CreateUser☸ Doxory::Action::SearchUser☸ Doxory::Action::UpdateUser☸ Doxory::Action::DeleteUser

160

Page 470: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Auto‐createdClasses☸ Doxory☸ Doxory::Record☸ Doxory::Collection☸ Doxory::Bootstrap☸ Doxory::Upgrade☸ Doxory::Dispatcher☸ Doxory::CurrentUser

☸ Doxory::Model::UserCollection

☸ Doxory::Action::CreateUser☸ Doxory::Action::SearchUser☸ Doxory::Action::UpdateUser☸ Doxory::Action::DeleteUser☸ ...etcetera

160

Page 471: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

☯161

Page 472: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Continuation=JobControl

162

Page 473: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Continuation=JobControl

☯ ContinuationsinPerl?

162

Page 474: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Continuation=JobControl

☯ ContinuationsinPerl?

☯ NotFullContinuations

162

Page 475: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Continuation=JobControl

☯ ContinuationsinPerl?

☯ NotFullContinuations

☯ DelimitedContinuations

162

Page 476: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

FullContinuations

163

Page 477: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

FullContinuations

☯ Serializeseverything

163

Page 478: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

FullContinuations

☯ Serializeseverything

☯ %ENV,STDIN,STDOUT

163

Page 479: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

FullContinuations

☯ Serializeseverything

☯ %ENV,STDIN,STDOUT

☯ DBIHandle,LogHandle

163

Page 480: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

FullContinuations

☯ Serializeseverything

☯ %ENV,STDIN,STDOUT

☯ DBIHandle,LogHandle

☯ Phaseofthemoon

163

Page 481: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

JiftyContinuations

164

Page 482: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

JiftyContinuations

☯ Onlytheapplicationstate

164

Page 483: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

JiftyContinuations

☯ Onlytheapplicationstate

☯ RequestsandActions

164

Page 484: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

JiftyContinuations

☯ Onlytheapplicationstate

☯ RequestsandActions

☯ That’sallweneed

164

Page 485: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

WhyContinuations?

165

Page 486: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

WhyContinuations?

☯ ThewebisbuiltonGOTO

165

Page 487: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

WhyContinuations?

☯ ThewebisbuiltonGOTO

☯ DoyoulikeGOTO?

165

Page 488: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

WhyContinuations?

☯ ThewebisbuiltonGOTO

☯ DoyoulikeGOTO?

☯ ContinuationsareGOSUB

165

Page 489: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

WhyContinuations?

☯ ThewebisbuiltonGOTO

☯ DoyoulikeGOTO?

☯ ContinuationsareGOSUB

☯ WelcometoCivilization!

165

Page 490: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

❀166

Page 491: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Templates=View

167

Page 492: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Templates=View

❀ Template::Declare

167

Page 493: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Templates=View

❀ Template::Declare

❀ HTML::Mason

167

Page 494: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Templates=View

❀ Template::Declare

❀ HTML::Mason

❀MasonhasComponents

167

Page 495: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Templates=View

❀ Template::Declare

❀ HTML::Mason

❀MasonhasComponents

❀ Server‐sideinclusion

167

Page 496: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Fragments

168

Page 497: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Fragments

❀ Components2.0

168

Page 498: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Fragments

❀ Components2.0

❀ Client‐sideforAJAX

168

Page 499: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Fragments

❀ Components2.0

❀ Client‐sideforAJAX

❀ Server‐sideforLynx

168

Page 500: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

• <%Jifty‐>web‐>region(• name=>"myweDoxory‐posts",• path=>"/fragments/page_of_posts"• )%>

169

Page 501: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Chat

170

Page 502: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Chat

❀ Server‐push(Comet)

170

Page 503: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Chat

❀ Server‐push(Comet)

❀ Refreshedfragments

170

Page 504: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

Chat

❀ Server‐push(Comet)

❀ Refreshedfragments

❀ LiveDemo!

170

Page 505: Jifty - pugs.blogs.com · ⚁ 明天飛日本 ⚁ 在 YAPC::Asia ... ♨簡單的事情 = 輕鬆完成 18. Jifty ♨網站應用程式框架 ♨簡單的事情 = 輕鬆完成 ♨複雜的事情

!ank y"!♨

171