Slide 1

Slide 1 text

Wo rd P re s s Ͱ ࠔ ͬ ͨ ࣌ ʹ ΍ Δ ΂ ͖ ͜ ͱ ͱ ɺ ࠔ Β ͳ ͍ ͨ Ί ʹ උ ͑Δ ͜ ͱ Wo rd B e n c h N a g a n o S p e c i a l 2 0 1 8 ! ! !

Slide 2

Slide 2 text

H i d e t a k a O k a m o t o • Digitalcube Co. Ltd. • αϙʔτϑΥʔϥϜੈ࿩໾ • WordBenchͷதͷਓ • ͜Θ͘ͳ͍

Slide 3

Slide 3 text

A M I M O T O h t t p s : / / j a . a m i m o t o - a m i . c o m /

Slide 4

Slide 4 text

$ 5 / S i t e ͷ ੩ త αΠ τ ϗ ε ςΟ ϯ ά h t t p s : / / g e t s h i f t e r. i o /

Slide 5

Slide 5 text

ࠓ ೔ ͷ ࿩ • τϥϒͬͨ࣌ʹ΍Δ΂͖͜ͱ • ཧ૝తͳϫʔΫϑϩʔ • ศརͳϓϥάΠϯɾαʔϏε • ༧๷ࡦͱͯ͠ͷίϛϡχςΟࢀՃ

Slide 6

Slide 6 text

ࠓ ೔ ͷ ࿩ ʹ ग़ ͳ ͍ ͜ ͱ • ؔ਺ͷॻ͖ํ • ςʔϚɾϓϥάΠϯͷ࡞Γํ • ઈରτϥϒϧΛى͜͞ͳ͍ํ๏

Slide 7

Slide 7 text

ࠓ ೔ ͷ ࿩ • τϥϒͬͨ࣌ʹ΍Δ΂͖͜ͱ • ཧ૝తͳϫʔΫϑϩʔ • ศརͳϓϥάΠϯɾαʔϏε • ༧๷ࡦͱͯ͠ͷίϛϡχςΟࢀՃ

Slide 8

Slide 8 text

· ͣ ࠷ ॳ ʹ΍ Δ ΂ ͖ ͜ ͱ

Slide 9

Slide 9 text

· ͣ ࠷ ॳ ʹ΍ Δ ΂ ͖ ͜ ͱ → ਂ ݺ ٵ

Slide 10

Slide 10 text

߄ ͯ ͯ ಈ ͘ ͱ ϩ Ϋ ͳ ͜ ͱ ʹ ͳ Β ͳ ͍ • ߄ͯͯίʔυΛݟฦͯ͠΋ɺϛε͸ݟ͔ͭΒͳ͍ • ߄ͯͯॻ͍ͨίʔυ͸େମόάΔ • τϥϒͬͨ࣌ͦ͜ฏৗ৺

Slide 11

Slide 11 text

Ͳ ͏ ͯ͠ ΋ མ ͪ ண ͔ ͳ ͍

Slide 12

Slide 12 text

Ͳ ͏ ͯ͠ ΋ མ ͪ ண ͔ ͳ ͍ → ৸ Ζ

Slide 13

Slide 13 text

τ ϥ ϒ ͬ ͨ ࣌ ͷ ର Ԡ • ߄ͯͳ͍ • ຊ൪؀ڥ͸·ͣόοΫΞοϓͰ෮ݩ͢Δ • ։ൃ؀ڥͰόάΛ࠶ݱͤ͞Δ • όάΛमਖ਼͢Δ • σϓϩΠ͢Δ

Slide 14

Slide 14 text

։ ൃ ؀ ڥ ͋ Γ · ͢Α Ͷ ʁ

Slide 15

Slide 15 text

ͳ ͥ ։ ൃ ؀ ڥ ͕ ඞ ཁ ͔ • Ϳ͚ͬͭຊ൪Ͱ෣୆ཱͪ·͔͢ʁ • ͪΌΜͱಈ͔͘Λςετ͔ͯ͠Βຊ൪΁ • ؀ڥΛ؆୯ʹ༻ҙ͢Δํ๏͸͋Δ • ։ൃ؀ڥ͸ʮյͨ͢Ίͷ΋ͷʯ https://wckr.github.io/ http://vccw.cc/ https://local.getflywheel.com/

Slide 16

Slide 16 text

ศ ར ͳ ։ ൃ ؀ ڥ ߏ ங α ʔ Ϗ ε • Local by Flywheel • Worker • VCCW • MAMP / XAMPP https://wckr.github.io/ http://vccw.cc/ https://local.getflywheel.com/

Slide 17

Slide 17 text

ࠓ ೔ ͷ ࿩ • τϥϒͬͨ࣌ʹ΍Δ΂͖͜ͱ • ཧ૝తͳϫʔΫϑϩʔ • ศརͳϓϥάΠϯɾαʔϏε • ༧๷ࡦͱͯ͠ͷίϛϡχςΟࢀՃ

Slide 18

Slide 18 text

τ ϥ ϒ ͬ ͨ ࣌ ͷ ର Ԡ • ߄ͯͳ͍ • ຊ൪؀ڥ͸·ͣόοΫΞοϓͰ෮ݩ͢Δ • ։ൃ؀ڥͰόάΛ࠶ݱͤ͞Δ • όάΛमਖ਼͢Δ • σϓϩΠ͢Δ

Slide 19

Slide 19 text

τ ϥ ϒ ͬ ͨ ࣌ ͷ ର Ԡ • ߄ͯͳ͍ • ຊ൪؀ڥ͸·ͣόοΫΞοϓͰ෮ݩ͢Δ • ։ൃ؀ڥͰόάΛ࠶ݱͤ͞Δ • όάΛमਖ਼͢Δ • σϓϩΠ͢Δ

Slide 20

Slide 20 text

ό ο Ϋ Ξ οϓ ͱ ͬͯ · ͢ ͔ʁ

Slide 21

Slide 21 text

ͦ ͷ ό ο Ϋ Ξ οϓ Ͱ ෮ ݩ Ͱ ͖ · ͢ ͔ʁ

Slide 22

Slide 22 text

ό ο Ϋ Ξ ο ϓ ͸ ෮ ݩ Ͱ ͖ ͳ ͍ ͱ ҙ ຯ ͕ ͳ ͍ • ։ൃ؀ڥ΍ઐ༻؀ڥͰ෮ݩखॱΛ֬ೝ͠Α͏ • ඞཁͳσʔλ͕όοΫΞοϓͰ͖͍ͯΔ͔֬ೝ͍ͯ͠Δʁ • Ϋϥ΢υαʔόʔͰ͋Ε͹ɺαʔόʔ͝ͱόοΫΞοϓͱ͍͏ख΋

Slide 23

Slide 23 text

τ ϥ ϒ ͬ ͨ ࣌ ͷ ର Ԡ • ߄ͯͳ͍ • ຊ൪؀ڥ͸·ͣόοΫΞοϓͰ෮ݩ͢Δ • ։ൃ؀ڥͰόάΛ࠶ݱͤ͞Δ • όάΛमਖ਼͢Δ • σϓϩΠ͢Δ

Slide 24

Slide 24 text

࠶ ݱ ੑ Λ ඞ ͣͱ Ζ ͏ • ຊ౰ʹόάͳͷ͔ʁ • ͨ·ͨ·ωοτϫʔΫ౳ʹ໰୊͕ى͖͍͚͔ͯͨͩ΋ • ΫϥΠΞϯτ͔Βདྷͨ৔߹͸ɺ࠶ݱखॱΛ΋Β͓͏ • τϥοΩϯάπʔϧͰ؂ࢹ͢Δͱ͍͏ํ๏΋

Slide 25

Slide 25 text

L o g R o c k e t : τ ϥ ο Ω ϯ ά α ʔ Ϗ ε h t t p s : / / l o g ro c k e t . c o m /

Slide 26

Slide 26 text

1 , 0 0 0 η ο γ ϣ ϯ · Ͱ ແ ྉ h t t p s : / / l o g ro c k e t . c o m /

Slide 27

Slide 27 text

τ ϥ ϒ ͬ ͨ ࣌ ͷ ର Ԡ • ߄ͯͳ͍ • ຊ൪؀ڥ͸·ͣόοΫΞοϓͰ෮ݩ͢Δ • ։ൃ؀ڥͰόάΛ࠶ݱͤ͞Δ • όάΛमਖ਼͢Δ • σϓϩΠ͢Δ

Slide 28

Slide 28 text

͜͏ ͍ ͏ ͷ ͪ Ό Μ ͱ ಡ ΜͰ · ͢ ʁ

Slide 29

Slide 29 text

Τ ϥ ʔ ϩ ά ͸ ͪ Ό Μ ͱ ಡ ΋ ͏ • ʮӳޠ͔ͩΒɾɾɾʯͱܟԕͯ͠·ͤΜ͔ʁ • ΤϥʔϝοηʔδʹʮͲ͜ͰɺԿ͕ى͖͍ͯΔ͔ʯ͕͋Δ • Warning / Notice΋ະདྷͷόάʹͭͳ͕Δ͔Βແࢹ͠ͳ͍

Slide 30

Slide 30 text

P a r s e e r ro r : s y n t a x e r ro r, u n e x p e c t e d ' } ' i n / v a r / w w w / w o rd p re s s / w p - c o n t e n t / p l u g i n s / h e l l o / i n d e x . p h p o n l i n e 2 1 ͞ ͬ ͖ ͷ Τϥ ʔ શ จ

Slide 31

Slide 31 text

P a r s e e r ro r : s y n t a x e r ro r, u n e x p e c t e d ' } ' i n / v a r / w w w / w o rd p re s s / w p - c o n t e n t / p l u g i n s / h e l l o / i n d e x . p h p o n l i n e 2 1 ͞ ͬ ͖ ͷ Τϥ ʔ શ จ P a r s e e r ro r : s y n t a x e r ro r ɹ ɹ ɹ → ߏ จ Τϥ ʔ ʢ ί ʔ υ ͕ ͓ ͔ ͠ ͍ ʣ / v a r / … / p l u g i n s / h e l l o / i n d e x . p h p → ϑ ΝΠϧ ໊ o n l i n e 2 1 ɹ ɹ ɹ ɹ ɹ ɹ ɹ ɹ ɹ ɹ ɹ → ߦ ਺

Slide 32

Slide 32 text

α ʔ όʔ ಺ ʹ Τ ϥ ʔ ϩ ά ͕ ͋ Δ • ϨϯλϧαʔόʔձࣾʹΑͬͯอଘ৔ॴ͕͕ͪ͏ • ϩά͕ؾʹͳΔํ͸ɺFAQ΍αϙʔτϖʔδ΁ߦͬͯΈΑ͏ • ϩάΛಡΉ͜ͱʹ఍߅ͳ͘ͳͬͨΒόά΁ͷා͕͍ͩ͞ͿݮΔ

Slide 33

Slide 33 text

τ ϥ ϒ ͬ ͨ ࣌ ͷ ର Ԡ • ߄ͯͳ͍ • ຊ൪؀ڥ͸·ͣόοΫΞοϓͰ෮ݩ͢Δ • ։ൃ؀ڥͰόάΛ࠶ݱͤ͞Δ • όάΛमਖ਼͢Δ • σϓϩΠ͢Δ

Slide 34

Slide 34 text

ࠓ ೔ ͷ ࿩ • τϥϒͬͨ࣌ʹ΍Δ΂͖͜ͱ • ཧ૝తͳϫʔΫϑϩʔ • ศརͳϓϥάΠϯɾαʔϏε • ༧๷ࡦͱͯ͠ͷίϛϡχςΟࢀՃ

Slide 35

Slide 35 text

D e b u g B a r - Ϋ Τ Ϧ ৘ ใ ͳ Ͳ Λ σό ο ά h t t p s : / / j a . w o rd p re s s . o rg / p l u g i n s / d e b u g - b a r /

Slide 36

Slide 36 text

H e a l t h C h e c k - σό ο ά ৘ ใ Λ ΤΫ ε ϙʔ τ h t t p s : / / j a . w o rd p re s s . o rg / p l u g i n s / h e a l t h - c h e c k /

Slide 37

Slide 37 text

T h e m e C h e c k - ς ʔϚ ͷ ί ʔ υ Λ Ϩ Ϗ ϡ ʔ h t t p s : / / j a . w o rd p re s s . o rg / p l u g i n s / t h e m e - c h e c k /

Slide 38

Slide 38 text

S h o w C u r re n t Te m p l a t e - ࠓ ͍ Δ ϖʔ δ ʹ ࢖ Θ Εͯ ͍ Δ ς ϯ ϓ Ϩ ʔ τϑ ΝΠϧ Λ ද ࣔ h t t p s : / / j a . w o rd p re s s . o rg / p l u g i n s / s h o w - c u r re n t - t e m p l a t e /

Slide 39

Slide 39 text

W P - C L I ͸ Ϛδ Ͱ ศ ར h t t p : / / w p - c l i . o rg / j a /

Slide 40

Slide 40 text

ӡ ༻ α ϙ ʔ τ Ͱ ศ ར ͳ ί Ϛ ϯ υ # Ϣʔ βʔ Λ ࡞ ੒ $ w p u s e r c re a t e a d m i n a d m i n @ e x a m p l e . c o m — ro l e = a d m i n i s t r a t o r # ύ εϫ ʔ υ Λ ม ߋ $ w p u s e r u p d a t e { u s e r _ i d } - - u s e r _ p a s s = m a r y p a s s # ϓ ϥ άΠ ϯ ͷ όʔ δ ϣ ϯ Λ μ ΢ ϯ ά Ϩ ʔ υ $ w p p l u g i n u p d a t e a k i s m e t — v e r s i o n = 3 . 1 . 3

Slide 41

Slide 41 text

w p d o c t o r - શ ൠ త ͳ ໰ ୊ ͷ ν Σ ο Ϋ $ w p d o c t o r c h e c k - - a l l — s p o t l i g h t R u n n i n g c h e c k s 1 0 0 % [ = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ] 0 : 0 3 / 0 : 0 3 + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | n a m e | s t a t u s | m e s s a g e | + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | p l u g i n - u p d a t e | w a r n i n g | 1 2 p l u g i n s h a v e u p d a t e s a v a i l a b l e . | | t h e m e - u p d a t e | w a r n i n g | 3 t h e m e s h a v e u p d a t e s a v a i l a b l e . | | l a n g u a g e - u p d a t e | w a r n i n g | 1 l a n g u a g e h a s a n u p d a t e a v a i l a b l e . | + - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

Slide 42

Slide 42 text

w p p ro f i l e - ύ ϑ Υ ʔ Ϛ ϯε ͷ ϓ ϩ ϑ Ν Π Ϧ ϯ ά $ w p p ro f i l e s t a g e - - f i e l d s = s t a g e , t i m e , c a c h e _ r a t i o + - - - - - - - - - - - - - - + - - - - - - - - - - - + - - - - - - - - - - - - - - - + | s t a g e | t i m e | c a c h e _ r a t i o | + - - - - - - - - - - - - - - + - - - - - - - - - - - + - - - - - - - - - - - - - - - + | b o o t s t r a p | 1 . 2 7 3 3 s | 9 5 . 4 9 % | | m a i n _ q u e r y | 0 . 0 0 5 6 s | 8 7 . 8 % | | t e m p l a t e | 0 . 1 4 4 8 s | 9 7 . 2 9 % | + - - - - - - - - - - - - - - + - - - - - - - - - - - + - - - - - - - - - - - - - - - + | t o t a l ( 3 ) | 1 . 4 2 3 7 s | 9 3 . 5 3 % | + - - - - - - - - - - - - - - + - - - - - - - - - - - + - - - - - - - - - - - - - - - +

Slide 43

Slide 43 text

ೲ ඼ ͠ ͨ ϓ ϥ άΠ ϯ ɾ ς ʔ Ϛ ʹ Τ ϥ ʔ τ ϥ ο Χ ʔ • ӡ༻࣌ʹͳͬͯݦࡏԽ͢Δόά΋͋Δ • ͦΜͳόάʹͳΔ΂͘ૣ͘ؾ͖͍ͮͨ • ΤϥʔΛ௨஌͢ΔαʔϏεΛ૊ΈࠐΉͱ͍͏ํ๏ • Rollbar / Faultline / aribrake.io / etc…

Slide 44

Slide 44 text

F a u l t l i n e : A W S ϕʔε ͷ O S S Τϥ ʔ τ ϥ ο Ω ϯ ά π ʔϧ h t t p s : / / s p e a k e rd e c k . c o m / k 1 l o w / p h p - c o n f e re n c e - f u k u o k a - 2 0 1 7

Slide 45

Slide 45 text

ͦ ΕͰ ΋ ղ ܾ ͠ ͳ ͍ ৔ ߹

Slide 46

Slide 46 text

೔ ຊ ޠ α ϙʔ τϑ Υ ʔ ϥϜ h t t p s : / / j a . w o rd p re s s . o rg / s u p p o r t /

Slide 47

Slide 47 text

໰ ୊ ղ ܾ ͷ ͨ Ί ͷ ν Σ ο Ϋ Ϧε τ h t t p : / / b i t . l y / 2 r S S n C C

Slide 48

Slide 48 text

͔ ͳ Γ ΞΫ ςΟ ϒ ͳ ϑ Υ ʔ ϥϜ h t t p s : / / j a . w o rd p re s s . o rg / s u p p o r t /

Slide 49

Slide 49 text

ϑ Υ ʔ ϥϜ Λ ༗ ޮ ׆ ༻ • ʮ໰୊ղܾͷͨΊͷνΣοΫϦετʯΛ·ͣಡ΋͏ • աڈͷ౤ߘΛݕࡧͯ͠ɺྨࣅέʔε͕ͳ͍͔ௐ΂Α͏ • Health CheckϓϥάΠϯͷग़͓ͯ͘͠ͱΑΓαϙʔτ͞Ε΍͍͢ • ฦ৴͕͜ͳͯ͘΋ౖΒͳ͍

Slide 50

Slide 50 text

࠷ ௿ ݶ ͷ ྱ ّ ͸ ΋ ͪ · ͠ ΐ ͏ • ฦ৴͕ͳ͍ɿϨΞέʔεͰΘ͔Δਓ͕͍ͳ͍ or ࣭໰͕Α͘Θ͔Βͳ͍ • B: ҎԼͷΑ͏ͳ౤ߘ͸ൃݟޙ௚ͪʹ࡟আ͞Ε·͢ɻ • ຊจͷͳ͍τϐοΫ΍ฦ৴ɻ • εύϜ΍SEO໨తͰͷ౤ߘΛͨ͠Ϣʔβʔ͸ϒϩοΫ͞ΕɺURL͸ฤू͞Ε·͢ɻ • τϐοΫ࡞੒ऀ΍ଞͷಡऀʹ༗ҙٛͳ৘ใΛఏڙͤͣɺඇݐஙతͳൃݴʢଞͷϢʔ βʔΛݟԼ͢ɺѱؾͷ͋Δൽ೑Λݴ͏ͳͲʣͷΈͷ౤ߘ͸࡟আ͞ΕΔ͜ͱ͕͋Γ· ͢ɻ http://bit.ly/2nsFLg6

Slide 51

Slide 51 text

༗ ྉ ς ʔ Ϛ ͷ p ro s / c o n s • ༗ྉςʔϚ͸ػೳ΍σβΠϯ͕ັྗత • ͨͩ͠ങͬͨਓ͔͠ίʔυΛݟΔ͜ͱ͕Ͱ͖ͳ͍ • αϙʔτϑΥʔϥϜͰ͸༗ྉςʔϚ͸αϙʔτͰ͖ͳ͍ • τϥϒͬͨ࣌ʹॿ͚ͯ͘ΕΔ૭ޱ͸͋Γ·͔͢ʁ • αϙʔτ͕ӳޠͷΈͷέʔε΋͋Δ

Slide 52

Slide 52 text

ࠓ ೔ ͷ ࿩ • τϥϒͬͨ࣌ʹ΍Δ΂͖͜ͱ • ཧ૝తͳϫʔΫϑϩʔ • ศརͳϓϥάΠϯɾαʔϏε • ༧๷ࡦͱͯ͠ͷίϛϡχςΟࢀՃ

Slide 53

Slide 53 text

ͳ ͥ ί ϛ ϡ χςΟ ʹ ࢀ Ճ ͢ Δʁ

Slide 54

Slide 54 text

ক དྷ త ʹ ࣗ ෼ ͕ ࠔ Β ͳ ͍ ͨ Ί

Slide 55

Slide 55 text

ͳ ͥ ί ϛ ϡ χ ς Ο ʹ ࢀ Ճ ͢ Δ ͱ ࠔ Β ͳ ͍ ͷ ʁ • ࣮ࡍʹWPͰ࢓ࣄ͍ͯ͠Δਓͨͪͱ࿩ͤΔ • ࠷ۙͷಈ޲΍τϥϒͬͨ࿩ͳͲ͕ฉ͚Δ • ศརͳπʔϧ΍ϓϥάΠϯͳͲ͕஌ΕΔ • දʹग़ͤͳ͍࿩΍৘ใ͕खʹೖΔ͜ͱ΋͋Δ • ϦΞϧͳ৘ใ͕͋ΔͱɺઌճΓ΍༧๷ࡦ͕ͱΓ΍͍͢

Slide 56

Slide 56 text

ྫ ͑ ͹ ͜ ͏ ͍ ͏ ࿩ ஌ ͬͯ · ͢ ͔ ʁ • WordPressͷਪ঑ར༻؀ڥ • PHPɹ • MySQLɹ • ɹ

Slide 57

Slide 57 text

ྫ ͑ ͹ ͜ ͏ ͍ ͏ ࿩ ஌ ͬͯ · ͢ ͔ ʁ • WordPressͷਪ঑ར༻؀ڥ • PHPɹ : 7.2 or greater • MySQL: 5.6 or greater or MariaDB 10.0 or greater • HTTPS support https://wordpress.org/about/requirements/

Slide 58

Slide 58 text

ଞ ʹ ΋ ͍ Ζ ͍ Ζ ͋ Δ ͷ Ͱɺ ஌ Γ ͨ ͍ ਓ ͸ ࠙ ਌ ձ ΁

Slide 59

Slide 59 text

Ұ ൪ ޮ ཰ త ʹ ৘ ใ Λ ख ʹ ೖ Ε Δ ํ ๏

Slide 60

Slide 60 text

Ұ ൪ ޮ ཰ త ʹ ৘ ใ Λ ख ʹ ೖ Ε Δ ํ ๏ ɹ ˠ લ Ͱ ࿩ ͢

Slide 61

Slide 61 text

લ Ͱ ࿩ ͢ ͜ ͱ ͕ Ұ ൪ ษ ڧ ʹ ͳ Δ • ొஃͷͨΊͷԼௐ΂Ͱษڧ͢Δ • ొஃ࣌ͷ࣭ٙԠ౴Ͱ৽͍͠ؾ͖͕ͮखʹ͸͍Δ • ొஃऀಉ࢜ͷࡶஊͰ͍ΖΜͳ࿩͕ฉ͚Δ • ొஃऀ͸਺ਓɺࢀՃऀ͸͍ͬͺ͍

Slide 62

Slide 62 text

̍ ̌ ̌ ճ ͷ ࢀ Ճ Α Γ ɺ ̍ ճ ͷ ొ ஃ

Slide 63

Slide 63 text

G e t I n v o l v e d w i t h Wo rd P re s s h t t p s : / / m a k e . w o rd p re s s . o rg /

Slide 64

Slide 64 text

G e t I n v o l v e d w i t h Wo rd P re s s • ࢀՃʹ͍͢͜͝ͱΛ͢Δ͜ͱͰ͸ͳ͍ • WPΛ࢖͍ͬͯΔͱݴ͏͜ͱ • ʮ͜͜Ͱࠔ͚ͬͯͨͲɺ͜͏ղܾͨ͠ʯͱϊ΢ϋ΢Λڞ༗͢Δ͜ͱ • ʮৄࡉ΋͏ͪΐͬͱڭ͑ͯʯͱ࣭໰ΛҾ͖ग़͢͜ͱ • ࣗ෼ͷ΍Γ͍ͨൣғͰࢀՃ͠Α͏

Slide 65

Slide 65 text

– J a m e s D a n f o r t h " D a n " Q u a y l e “The future will be better tomorrow.”