Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WCSTL12

Joshua Ray
September 22, 2012

 WCSTL12

WordCamp St. Louis presentation

Joshua Ray

September 22, 2012
Tweet

More Decks by Joshua Ray

Other Decks in Programming

Transcript

  1. Wo
    r
    d
    C
    a
    mp
    S
    t
    .
    L
    o
    u
    i
    s
    2
    0
    1
    2
    T
    h
    e
    me
    D
    e
    v
    e
    l
    o
    p
    me
    n
    t
    B
    e
    s
    t
    P
    r
    a
    c
    t
    i
    c
    e
    s
    a
    n
    d A
    d
    mi
    n C
    u
    s
    t
    o
    mi
    z
    a
    t
    i
    o
    n

    View Slide

  2. A
    l
    e
    x
    R
    o
    d
    r
    i
    g
    u
    e
    z “
    A
    r
    o
    d

    @a
    r
    o
    d
    2
    6
    3
    4
    a
    r
    o
    d
    @i
    n
    t
    e
    g
    r
    i
    t
    y
    s
    t
    l
    .
    c
    o
    m
    J
    o
    s
    h
    u
    a
    R
    a
    y
    @p
    d
    x
    O
    l
    l
    o
    j
    o
    s
    h
    u
    a
    @i
    n
    t
    e
    g
    r
    i
    t
    y
    s
    t
    l
    .
    c
    o
    m

    View Slide

  3. D
    o
    n

    t Ma
    k
    e
    Me
    T
    h
    i
    n
    k
    !
    !

    View Slide

  4. View Slide

  5. r
    e
    q
    u
    i
    r
    e
    _
    o
    n
    c
    e
    (

    i
    n
    c
    l
    u
    d
    e
    s
    /
    f
    i
    l
    e
    n
    a
    m
    e
    .
    p
    h
    p

    )
    ;
    mi
    n
    i
    ma
    l
    i
    s
    m:
    r
    e
    f
    e
    r
    s
    t
    o
    t
    h
    e
    a
    p
    p
    l
    i
    c
    a
    t
    i
    o
    n
    o
    f
    mi
    n
    i
    ma
    l
    i
    s
    t
    p
    h
    i
    -
    l
    o
    s
    o
    p
    h
    i
    e
    s
    a
    n
    d
    p
    r
    i
    n
    c
    i
    p
    l
    e
    s
    i
    n
    h
    a
    r
    d
    w
    a
    r
    e
    a
    n
    d
    s
    o
    f
    t
    w
    a
    r
    e
    d
    e
    s
    i
    g
    n
    a
    n
    d
    u
    s
    a
    g
    e
    .

    View Slide

  6. E
    n
    q
    u
    e
    u
    e
    s
    a
    r
    e
    y
    o
    u
    r
    f
    r
    i
    e
    n
    d :
    )

    View Slide

  7. D
    o
    n

    t a
    d
    d t
    o h
    e
    a
    d
    e
    r
    .
    p
    h
    p :
    <
    s
    c
    r
    i
    p
    t s
    r
    c
    =

    <
    ?
    p
    h
    p b
    l
    o
    g
    i
    n
    f
    o
    (

    t
    e
    m
    p
    l
    a
    t
    e
    _
    u
    r
    l

    )
    ?
    >
    /
    j
    s
    /
    s
    c
    r
    i
    p
    t
    .
    j
    s

    >
    U
    s
    e e
    n
    q
    u
    e
    u
    e
    s
    :
    w
    p
    _
    r
    e
    g
    i
    s
    t
    e
    r
    _
    s
    c
    r
    i
    p
    t ( ‘
    $
    h
    a
    n
    d
    l
    e

    ,

    $
    s
    r
    c

    ,

    $
    d
    e
    p
    s

    ,

    $
    v
    e
    r

    ,

    $
    i
    n
    _
    f
    o
    o
    t
    e
    r
    ’ )
    ;
    w
    p
    _
    e
    n
    q
    u
    e
    u
    e
    _
    s
    c
    r
    i
    p
    t ( ‘
    $
    h
    a
    n
    d
    l
    e
    ’ )
    ;
    T
    h
    i
    s
    f
    u
    n
    c
    t
    i
    o
    n i
    n
    c
    l
    u
    d
    e
    s
    t
    h
    e
    s
    c
    r
    i
    p
    t
    i
    f
    i
    t
    h
    a
    s
    n
    '
    t
    a
    l
    r
    e
    a
    d
    y
    b
    e
    e
    n i
    n
    c
    l
    u
    d
    e
    d
    ,
    a
    n
    d s
    a
    f
    e
    l
    y
    h
    a
    n
    d
    l
    e
    s
    d
    e
    p
    e
    n
    d
    e
    n
    c
    i
    e
    s
    .

    View Slide

  8. I
    f
    y
    o
    u
    r
    c
    l
    i
    e
    n
    t
    i
    s
    n

    t
    p
    a
    y
    i
    n
    g
    f
    o
    r
    a
    b
    l
    o
    g
    ,
    d
    o
    n

    t
    f
    o
    r
    c
    e
    t
    h
    e
    m t
    o
    u
    s
    e
    P
    o
    s
    t
    s
    a
    n
    d P
    a
    g
    e
    s
    .

    View Slide

  9. <
    ?
    p
    h
    p r
    e
    g
    i
    s
    t
    e
    r
    _
    p
    o
    s
    t
    _
    t
    y
    p
    e
    ( $
    p
    o
    s
    t
    _
    t
    y
    p
    e
    , $
    a
    r
    g
    s ) ?
    >
    Wo
    r
    d
    P
    r
    e
    s
    s
    i
    s
    p
    o
    we
    r
    f
    u
    l
    .
    B
    u
    i
    l
    d i
    t
    t
    o f
    i
    t
    t
    h
    i
    e
    r
    n
    e
    e
    d
    s
    .
    I
    t
    wi
    l
    l
    t
    a
    k
    e
    l
    e
    s
    s
    t
    o t
    r
    a
    i
    n
    ,
    a
    n
    d y
    o
    u
    r
    c
    l
    i
    e
    n
    t
    s
    wi
    l
    l
    L
    O
    V
    E Y
    O
    U
    !
    !

    View Slide

  10. View Slide

  11. Ma
    k
    e
    i
    t
    s
    i
    mp
    l
    e
    f
    o
    r
    t
    h
    e
    u
    s
    e
    r
    .
    .
    .
    .

    View Slide

  12. I
    f
    t
    h
    e
    p
    o
    s
    t
    n
    e
    e
    d
    s
    s
    p
    e
    c
    i
    f
    i
    c
    c
    o
    n
    t
    e
    n
    t
    ,
    p
    r
    o
    v
    i
    d
    e
    s
    p
    e
    c
    i
    f
    i
    c
    f
    i
    e
    l
    d
    s

    View Slide

  13. a
    d
    d
    _
    m
    e
    t
    a
    _
    b
    o
    x (
    $
    i
    d
    ,
    $
    t
    i
    t
    l
    e
    ,
    $
    c
    a
    l
    l
    b
    a
    c
    k
    ,
    $
    p
    o
    s
    t
    _
    t
    y
    p
    e
    ,
    $
    c
    o
    n
    t
    e
    x
    t
    ,
    $
    p
    r
    i
    o
    r
    i
    t
    y
    ,
    $
    c
    a
    l
    l
    b
    a
    c
    k
    _
    a
    r
    g
    s
    )
    ;

    View Slide

  14. C
    u
    s
    t
    o
    m f
    i
    e
    l
    d
    s
    r
    e
    mo
    v
    e
    t
    h
    e
    g
    u
    e
    s
    s
    wo
    r
    k
    .

    View Slide

  15. T
    h
    e
    A
    d
    mi
    n i
    s
    c
    o
    n
    f
    u
    s
    i
    n
    g
    i
    f
    y
    o
    u d
    o
    n

    t
    b
    l
    o
    g
    .

    View Slide

  16. mi
    n
    i
    ma
    l
    i
    s
    m:
    r
    e
    f
    e
    r
    s
    t
    o
    t
    h
    e
    a
    p
    p
    l
    i
    c
    a
    t
    i
    o
    n
    o
    f
    mi
    n
    i
    ma
    l
    i
    s
    t
    p
    h
    i
    -
    l
    o
    s
    o
    p
    h
    i
    e
    s
    a
    n
    d
    p
    r
    i
    n
    c
    i
    p
    l
    e
    s
    i
    n
    h
    a
    r
    d
    w
    a
    r
    e
    a
    n
    d
    s
    o
    f
    t
    w
    a
    r
    e
    d
    e
    s
    i
    g
    n
    a
    n
    d
    u
    s
    a
    g
    e
    .

    View Slide

  17. J
    u
    s
    t
    b
    e
    c
    a
    u
    s
    e
    we
    c
    a
    n
    ,
    d
    o
    e
    s
    n
    o
    t
    me
    a
    n we
    s
    h
    o
    u
    l
    d
    .
    .
    .

    View Slide

  18. L
    o
    w
    e
    r
    T
    h
    e
    L
    e
    a
    r
    n
    i
    n
    g
    C
    u
    r
    v
    e
    .
    .
    .

    View Slide

  19. S
    i
    mp
    l
    i
    f
    y
    i
    n
    g
    Wo
    r
    d
    P
    r
    e
    s
    s
    A
    d
    mi
    n
    i
    s
    t
    r
    a
    t
    i
    o
    n
    .
    .
    .
    1
    .
    C
    l
    e
    a
    n
    i
    n
    g
    u
    p
    t
    h
    e
    a
    d
    mi
    n
    me
    n
    u
    s
    a
    n
    d
    o
    p
    t
    i
    o
    n
    s
    2
    .
    Ma
    k
    i
    n
    g
    t
    h
    e
    e
    d
    i
    t
    o
    r
    mo
    r
    e
    u
    s
    e
    r
    f
    r
    i
    e
    n
    d
    l
    y
    3
    .
    C
    u
    s
    t
    o
    m b
    r
    a
    n
    d
    i
    n
    g

    View Slide

  20. O
    n
    l
    y
    l
    o
    a
    d
    i
    t
    i
    f
    y
    o
    u
    n
    e
    e
    d
    i
    t
    .
    .
    .
    i
    f
    (
    i
    s
    _
    a
    d
    mi
    n
    (
    )
    )
    {
    r
    e
    q
    u
    i
    r
    e
    _
    o
    n
    c
    e
    (
    '
    i
    n
    c
    l
    u
    d
    e
    s
    /
    c
    u
    s
    t
    o
    m-
    a
    d
    mi
    n
    /
    c
    u
    s
    t
    o
    m-
    a
    d
    mi
    n
    .
    p
    h
    p
    '
    )
    ;
    }

    View Slide

  21. View Slide

  22. View Slide

  23. a
    d
    d
    _
    a
    c
    t
    i
    o
    n (

    w
    p
    _
    d
    a
    s
    h
    b
    o
    a
    r
    d
    _
    s
    e
    t
    u
    p ‘
    ,

    a
    d
    d
    _
    d
    a
    s
    h
    b
    o
    a
    r
    d
    _
    w
    i
    d
    g
    e
    t
    ’ )
    ;
    f
    u
    n
    c
    t
    i
    o
    n d
    i
    s
    a
    b
    l
    e
    _
    d
    e
    f
    a
    u
    l
    t
    _
    d
    a
    s
    h
    b
    o
    a
    r
    d
    _
    w
    i
    d
    g
    e
    t
    s (
    ) {
    r
    e
    m
    o
    v
    e
    _
    m
    e
    t
    a
    _
    b
    o
    x
    (
    '
    d
    a
    s
    h
    b
    o
    a
    r
    d
    _
    r
    e
    c
    e
    n
    t
    _
    c
    o
    m
    m
    e
    n
    t
    s
    '
    ,
    '
    d
    a
    s
    h
    b
    o
    a
    r
    d
    '
    , '
    c
    o
    r
    e
    '
    )
    ;
    r
    e
    m
    o
    v
    e
    _
    m
    e
    t
    a
    _
    b
    o
    x
    (
    '
    d
    a
    s
    h
    b
    o
    a
    r
    d
    _
    i
    n
    c
    o
    m
    i
    n
    g
    _
    l
    i
    n
    k
    s
    '
    ,
    '
    d
    a
    s
    h
    b
    o
    a
    r
    d
    '
    , '
    c
    o
    r
    e
    '
    '
    d
    a
    s
    h
    b
    o
    a
    r
    d
    '
    , '
    c
    o
    r
    e
    '
    )
    ;
    r
    e
    m
    o
    v
    e
    _
    m
    e
    t
    a
    _
    b
    o
    x
    (
    '
    d
    a
    s
    h
    b
    o
    a
    r
    d
    _
    q
    u
    i
    c
    k
    _
    p
    r
    e
    s
    s
    '
    ,
    '
    d
    a
    s
    h
    b
    o
    a
    r
    d
    '
    , '
    c
    o
    r
    e
    '
    )
    ;
    }
    D
    o
    w
    l
    o
    a
    d A F
    u
    l
    l E
    x
    a
    m
    p
    l
    e @
    h
    t
    t
    p
    s
    :
    /
    /
    g
    i
    s
    t
    .
    g
    i
    t
    h
    u
    b
    .
    c
    o
    m
    /
    3
    7
    5
    9
    4
    9
    5

    View Slide

  24. View Slide

  25. i
    f ( c
    u
    r
    r
    e
    n
    t
    _
    u
    s
    e
    r
    _
    c
    a
    n
    (
    '
    e
    d
    i
    t
    o
    r
    '
    ) ) {
    }
    a
    d
    d
    _
    a
    c
    t
    i
    o
    n (
    '
    a
    d
    m
    i
    n
    _
    m
    e
    n
    u
    '
    , '
    m
    y
    _
    r
    e
    m
    o
    v
    e
    _
    m
    e
    n
    u
    _
    p
    a
    g
    e
    s
    '
    )
    ;
    f
    u
    n
    c
    t
    i
    o
    n m
    y
    _
    r
    e
    m
    o
    v
    e
    _
    m
    e
    n
    u
    _
    p
    a
    g
    e
    s (
    ) {
    r
    e
    m
    o
    v
    e
    _
    m
    e
    n
    u
    _
    p
    a
    g
    e
    (
    '
    l
    i
    n
    k
    -
    m
    a
    n
    a
    g
    e
    r
    .
    p
    h
    p
    '
    )
    ;
    r
    e
    m
    o
    v
    e
    _
    m
    e
    n
    u
    _
    p
    a
    g
    e
    (
    '
    e
    d
    i
    t
    -
    c
    o
    m
    m
    e
    n
    t
    s
    .
    p
    h
    p
    '
    )
    ;
    }
    }
    a
    d
    d
    _
    a
    c
    t
    i
    o
    n (
    '
    _
    a
    d
    m
    i
    n
    _
    m
    e
    n
    u
    '
    , '
    r
    e
    m
    o
    v
    e
    _
    t
    h
    e
    m
    e
    _
    e
    d
    i
    t
    o
    r
    _
    m
    e
    n
    u
    '
    , 1
    )
    ;
    f
    u
    n
    c
    t
    i
    o
    n r
    e
    m
    o
    v
    e
    _
    t
    h
    e
    m
    e
    _
    e
    d
    i
    t
    o
    r
    _
    m
    e
    n
    u (
    ) {
    r
    e
    m
    o
    v
    e
    _
    a
    c
    t
    i
    o
    n
    (
    '
    a
    d
    m
    i
    n
    _
    m
    e
    n
    u
    '
    , '
    _
    a
    d
    d
    _
    t
    h
    e
    m
    e
    s
    _
    u
    t
    i
    l
    i
    t
    y
    _
    l
    a
    s
    t
    '
    , 1
    0
    1
    )
    ;
    }

    View Slide

  26. a
    d
    d
    _
    a
    c
    t
    i
    o
    n (
    '
    a
    d
    m
    i
    n
    _
    m
    e
    n
    u
    '
    , '
    r
    e
    m
    o
    v
    e
    _
    s
    u
    b
    m
    e
    n
    u
    s
    '
    )
    ;
    f
    u
    n
    c
    t
    i
    o
    n r
    e
    m
    o
    v
    e
    _
    s
    u
    b
    m
    e
    n
    u
    s (
    ) {
    g
    l
    o
    b
    a
    l $
    s
    u
    b
    m
    e
    n
    u
    ;
    u
    n
    s
    e
    t
    (
    $
    s
    u
    b
    m
    e
    n
    u
    [
    '
    i
    n
    d
    e
    x
    .
    p
    h
    p
    '
    ]
    [
    1
    0
    ]
    )
    ; /
    / R
    e
    m
    o
    v
    e
    s U
    p
    d
    a
    t
    e
    s
    u
    n
    s
    e
    t
    (
    $
    s
    u
    b
    m
    e
    n
    u
    [
    '
    e
    d
    i
    t
    .
    p
    h
    p
    '
    ]
    [
    1
    0
    ]
    )
    ; /
    / A
    d
    d n
    e
    w p
    o
    s
    t
    u
    n
    s
    e
    t
    (
    $
    s
    u
    b
    m
    e
    n
    u
    [
    '
    u
    p
    l
    o
    a
    d
    .
    p
    h
    p
    '
    ]
    [
    1
    0
    ]
    )
    ; /
    / A
    d
    d t
    o M
    e
    d
    i
    a l
    i
    b
    r
    a
    r
    y
    u
    n
    s
    e
    t
    (
    $
    s
    u
    b
    m
    e
    n
    u
    [
    '
    e
    d
    i
    t
    .
    p
    h
    p
    ?
    p
    o
    s
    t
    _
    t
    y
    p
    e
    =
    p
    a
    g
    e
    '
    ]
    [
    1
    0
    ]
    )
    ; /
    / A
    d
    d N
    e
    w p
    a
    g
    e
    u
    n
    s
    e
    t
    (
    $
    s
    u
    b
    m
    e
    n
    u
    [
    '
    t
    h
    e
    m
    e
    s
    .
    p
    h
    p
    '
    ]
    [
    5
    ]
    )
    ; /
    / R
    e
    m
    o
    v
    e
    s '
    T
    h
    e
    m
    e
    s
    '
    u
    n
    s
    e
    t
    (
    $
    s
    u
    b
    m
    e
    n
    u
    [
    '
    p
    l
    u
    g
    i
    n
    s
    .
    p
    h
    p
    '
    ]
    [
    1
    0
    ]
    )
    ; /
    / A
    d
    d N
    e
    w P
    l
    u
    g
    i
    n
    s
    u
    n
    s
    e
    t
    (
    $
    s
    u
    b
    m
    e
    n
    u
    [
    '
    p
    l
    u
    g
    i
    n
    s
    .
    p
    h
    p
    '
    ]
    [
    1
    5
    ]
    )
    ; /
    / P
    l
    u
    g
    i
    n E
    d
    i
    t
    o
    r
    u
    n
    s
    e
    t
    (
    $
    s
    u
    b
    m
    e
    n
    u
    [
    '
    u
    s
    e
    r
    s
    .
    p
    h
    p
    '
    ]
    [
    1
    0
    ]
    )
    ; /
    / A
    d
    d n
    e
    w u
    s
    e
    r
    u
    n
    s
    e
    t
    (
    $
    s
    u
    b
    m
    e
    n
    u
    [
    '
    u
    s
    e
    r
    s
    .
    p
    h
    p
    '
    ]
    [
    1
    5
    ]
    )
    ; /
    / E
    d
    i
    t y
    o
    u
    r p
    r
    o
    f
    i
    l
    e
    u
    n
    s
    e
    t
    (
    $
    s
    u
    b
    m
    e
    n
    u
    [
    '
    t
    o
    o
    l
    s
    .
    p
    h
    p
    '
    ]
    [
    5
    ]
    )
    ; /
    / T
    o
    o
    l
    s a
    r
    e
    a
    }
    }
    D
    o
    w
    l
    o
    a
    d A F
    u
    l
    l E
    x
    a
    m
    p
    l
    e @
    h
    t
    t
    p
    s
    :
    /
    /
    g
    i
    s
    t
    .
    g
    i
    t
    h
    u
    b
    .
    c
    o
    m
    /
    3
    7
    5
    9
    5
    2
    5

    View Slide

  27. View Slide

  28. a
    d
    d
    _
    a
    c
    t
    i
    o
    n (
    '
    w
    i
    d
    g
    e
    t
    s
    _
    i
    n
    i
    t
    '
    , '
    r
    e
    m
    o
    v
    e
    _
    s
    o
    m
    e
    _
    w
    p
    _
    w
    i
    d
    g
    e
    t
    s
    '
    ,
    1
    )
    ;
    f
    u
    n
    c
    t
    i
    o
    n r
    e
    m
    o
    v
    e
    _
    s
    o
    m
    e
    _
    w
    p
    _
    w
    i
    d
    g
    e
    t
    s (
    ) {
    u
    n
    r
    e
    g
    i
    s
    t
    e
    r
    _
    w
    i
    d
    g
    e
    t
    (
    '
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    M
    e
    t
    a
    '
    )
    ;
    u
    n
    r
    e
    g
    i
    s
    t
    e
    r
    _
    w
    i
    d
    g
    e
    t
    (
    '
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    C
    a
    l
    e
    n
    d
    a
    r
    '
    )
    ;
    u
    n
    r
    e
    g
    i
    s
    t
    e
    r
    _
    w
    i
    d
    g
    e
    t
    (
    '
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    R
    e
    c
    e
    n
    t
    _
    C
    o
    m
    m
    e
    n
    t
    s
    '
    )
    ;
    }
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    P
    a
    g
    e
    s = P
    a
    g
    e
    s W
    i
    d
    g
    e
    t
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    P
    a
    g
    e
    s = P
    a
    g
    e
    s W
    i
    d
    g
    e
    t
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    A
    r
    c
    h
    i
    v
    e
    s = A
    r
    c
    h
    i
    v
    e
    s W
    i
    d
    g
    e
    t
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    L
    i
    n
    k
    s = L
    i
    n
    k
    s W
    i
    d
    g
    e
    t
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    S
    e
    a
    r
    c
    h = S
    e
    a
    r
    c
    h W
    i
    d
    g
    e
    t
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    T
    e
    x
    t = T
    e
    x
    t W
    i
    d
    g
    e
    t
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    C
    a
    t
    e
    g
    o
    r
    i
    e
    s = C
    a
    t
    e
    g
    o
    r
    i
    e
    s W
    i
    d
    g
    e
    t
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    R
    e
    c
    e
    n
    t
    _
    P
    o
    s
    t
    s = R
    e
    c
    e
    n
    t P
    o
    s
    t
    s W
    i
    d
    g
    e
    t
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    R
    S
    S = R
    S
    S W
    i
    d
    g
    e
    t
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    R
    S
    S = R
    S
    S W
    i
    d
    g
    e
    t
    W
    P
    _
    W
    i
    d
    g
    e
    t
    _
    T
    a
    g
    _
    C
    l
    o
    u
    d = T
    a
    g C
    l
    o
    u
    d W
    i
    d
    g
    e
    t
    W
    P
    _
    N
    a
    v
    _
    M
    e
    n
    u
    _
    W
    i
    d
    g
    e
    t = M
    e
    n
    u
    s W
    i
    d
    g
    e
    t
    D
    o
    w
    l
    o
    a
    d A F
    u
    l
    l E
    x
    a
    m
    p
    l
    e @
    h
    t
    t
    p
    s
    :
    /
    /
    g
    i
    s
    t
    .
    g
    i
    t
    h
    u
    b
    .
    c
    o
    m
    /
    3
    7
    6
    3
    4
    8
    0

    View Slide

  29. View Slide

  30. View Slide

  31. a
    d
    d
    _
    a
    c
    t
    i
    o
    n (
    '
    a
    d
    m
    i
    n
    _
    m
    e
    n
    u
    ' ,
    '
    r
    e
    m
    o
    v
    e
    _
    e
    x
    t
    r
    a
    _
    m
    e
    t
    a
    _
    b
    o
    x
    e
    s
    '
    )
    ;
    f
    u
    n
    c
    t
    i
    o
    n r
    e
    m
    o
    v
    e
    _
    e
    x
    t
    r
    a
    _
    m
    e
    t
    a
    _
    b
    o
    x
    e
    s (
    ) {
    r
    e
    m
    o
    v
    e
    _
    m
    e
    t
    a
    _
    b
    o
    x
    ( '
    t
    r
    a
    c
    k
    b
    a
    c
    k
    s
    d
    i
    v
    ' , '
    p
    o
    s
    t
    ' , '
    n
    o
    r
    m
    a
    l
    ' )
    ;
    r
    e
    m
    o
    v
    e
    _
    m
    e
    t
    a
    _
    b
    o
    x
    ( '
    t
    r
    a
    c
    k
    b
    a
    c
    k
    s
    d
    i
    v
    ' , '
    p
    a
    g
    e
    ' , '
    n
    o
    r
    m
    a
    l
    ' )
    ;
    r
    e
    m
    o
    v
    e
    _
    m
    e
    t
    a
    _
    b
    o
    x
    ( '
    c
    o
    m
    m
    e
    n
    t
    s
    t
    a
    t
    u
    s
    d
    i
    v
    ' , '
    p
    o
    s
    t
    ' , '
    n
    o
    r
    m
    a
    l
    ' )
    ;
    r
    e
    m
    o
    v
    e
    _
    m
    e
    t
    a
    _
    b
    o
    x
    ( '
    c
    o
    m
    m
    e
    n
    t
    s
    t
    a
    t
    u
    s
    d
    i
    v
    ' , '
    p
    a
    g
    e
    ' , '
    n
    o
    r
    m
    a
    l
    ' )
    ;
    r
    e
    m
    o
    v
    e
    _
    m
    e
    t
    a
    _
    b
    o
    x
    (
    '
    s
    l
    u
    g
    d
    i
    v
    '
    ,
    '
    p
    o
    s
    t
    '
    ,
    '
    n
    o
    r
    m
    a
    l
    '
    )
    ;
    r
    e
    m
    o
    v
    e
    _
    m
    e
    t
    a
    _
    b
    o
    x
    (
    '
    s
    l
    u
    g
    d
    i
    v
    '
    ,
    '
    p
    a
    g
    e
    '
    ,
    '
    n
    o
    r
    m
    a
    l
    '
    )
    ;
    }
    D
    o
    w
    l
    o
    a
    d A F
    u
    l
    l E
    x
    a
    m
    p
    l
    e @
    h
    t
    t
    p
    s
    :
    /
    /
    g
    i
    s
    t
    .
    g
    i
    t
    h
    u
    b
    .
    c
    o
    m
    /
    3
    7
    6
    3
    7
    7
    9

    View Slide

  32. C
    u
    s
    t
    o
    m
    i
    z
    e T
    i
    n
    y
    M
    C
    E E
    d
    i
    t
    o
    r

    View Slide

  33. a
    d
    d
    _
    f
    i
    l
    t
    e
    r
    (
    '
    t
    i
    n
    y
    _
    m
    c
    e
    _
    b
    e
    f
    o
    r
    e
    _
    i
    n
    i
    t
    '
    , '
    m
    a
    k
    e
    _
    m
    c
    e
    _
    a
    w
    e
    s
    o
    m
    e
    '
    )
    ;
    f
    u
    n
    c
    t
    i
    o
    n m
    a
    k
    e
    _
    m
    c
    e
    _
    a
    w
    e
    s
    o
    m
    e
    ( $
    i
    n
    i
    t
    ) {
    $
    i
    n
    i
    t
    [
    '
    t
    h
    e
    m
    e
    _
    a
    d
    v
    a
    n
    c
    e
    d
    _
    b
    l
    o
    c
    k
    f
    o
    r
    m
    a
    t
    s
    '
    ] = '
    h
    2
    ,
    h
    3
    ,
    h
    4
    ,
    p
    '
    ;
    $
    i
    n
    i
    t
    [
    '
    t
    h
    e
    m
    e
    _
    a
    d
    v
    a
    n
    c
    e
    d
    _
    b
    u
    t
    t
    o
    n
    s
    1
    _
    a
    d
    d
    '
    ] = '
    c
    o
    p
    y
    , c
    u
    t
    , p
    a
    s
    t
    e
    , r
    e
    d
    o
    , u
    n
    d
    o
    '
    ;
    $
    i
    n
    i
    t
    [
    '
    t
    h
    e
    m
    e
    _
    a
    d
    v
    a
    n
    c
    e
    d
    _
    b
    u
    t
    t
    o
    n
    s
    2
    _
    a
    d
    d
    '
    ] = '
    a
    n
    c
    h
    o
    r
    , h
    r
    , s
    u
    b
    , s
    u
    p
    '
    ;
    $
    i
    n
    i
    t
    [
    '
    t
    h
    e
    m
    e
    _
    a
    d
    v
    a
    n
    c
    e
    d
    _
    d
    i
    s
    a
    b
    l
    e
    '
    ] = '
    w
    p
    _
    h
    e
    l
    p
    '
    ;
    r
    e
    t
    u
    r
    n $
    i
    n
    i
    t
    ;
    r
    e
    t
    u
    r
    n $
    i
    n
    i
    t
    ;
    }
    a
    d
    d
    _
    f
    i
    l
    t
    e
    r
    ( '
    m
    c
    e
    _
    b
    u
    t
    t
    o
    n
    s
    _
    2
    '
    , '
    m
    y
    _
    m
    c
    e
    _
    b
    u
    t
    t
    o
    n
    s
    _
    2
    ' )
    ;
    f
    u
    n
    c
    t
    i
    o
    n m
    y
    _
    m
    c
    e
    _
    b
    u
    t
    t
    o
    n
    s
    _
    2
    ( $
    b
    u
    t
    t
    o
    n
    s ) {
    a
    r
    r
    a
    y
    _
    u
    n
    s
    h
    i
    f
    t
    ( $
    b
    u
    t
    t
    o
    n
    s
    , '
    s
    t
    y
    l
    e
    s
    e
    l
    e
    c
    t
    ' )
    ;
    r
    e
    t
    u
    r
    n $
    b
    u
    t
    t
    o
    n
    s
    ;
    }

    View Slide

  34. a
    d
    d
    _
    f
    i
    l
    t
    e
    r
    (
    '
    t
    i
    n
    y
    _
    m
    c
    e
    _
    b
    e
    f
    o
    r
    e
    _
    i
    n
    i
    t
    '
    , '
    m
    y
    _
    m
    c
    e
    _
    b
    e
    f
    o
    r
    e
    _
    i
    n
    i
    t
    '
    )
    ;
    f
    u
    n
    c
    t
    i
    o
    n m
    y
    _
    m
    c
    e
    _
    b
    e
    f
    o
    r
    e
    _
    i
    n
    i
    t
    ( $
    s
    e
    t
    t
    i
    n
    g
    s ) {
    $
    s
    t
    y
    l
    e
    _
    f
    o
    r
    m
    a
    t
    s = a
    r
    r
    a
    y
    (
    a
    r
    r
    a
    y
    (
    '
    t
    i
    t
    l
    e
    ' =
    > '
    B
    u
    t
    t
    o
    n
    '
    ,
    '
    s
    e
    l
    e
    c
    t
    o
    r
    ' =
    > '
    a
    '
    ,
    '
    c
    l
    a
    s
    s
    e
    s
    ' =
    > '
    b
    t
    n
    '
    )
    ,
    a
    r
    r
    a
    y
    (
    '
    t
    i
    t
    l
    e
    ' =
    > '
    C
    a
    l
    l
    o
    u
    t B
    o
    x
    '
    ,
    '
    b
    l
    o
    c
    k
    ' =
    > '
    d
    i
    v
    '
    ,
    '
    c
    l
    a
    s
    s
    e
    s
    ' =
    > '
    c
    a
    l
    l
    o
    u
    t
    '
    ,
    '
    w
    r
    a
    p
    p
    e
    r
    ' =
    > t
    r
    u
    e
    )
    )
    )
    ;
    $
    s
    e
    t
    t
    i
    n
    g
    s
    [
    '
    s
    t
    y
    l
    e
    _
    f
    o
    r
    m
    a
    t
    s
    '
    ] = j
    s
    o
    n
    _
    e
    n
    c
    o
    d
    e
    ( $
    s
    t
    y
    l
    e
    _
    f
    o
    r
    m
    a
    t
    s )
    ;
    r
    e
    t
    u
    r
    n $
    s
    e
    t
    t
    i
    n
    g
    s
    ;
    }
    a
    d
    d
    _
    e
    d
    i
    t
    o
    r
    _
    s
    t
    y
    l
    e
    (
    '
    p
    a
    t
    h
    /
    t
    o
    /
    c
    u
    s
    t
    o
    m
    /
    a
    d
    m
    i
    n
    -
    s
    t
    y
    l
    e
    s
    .
    c
    s
    s
    '
    )
    ;
    D
    o
    w
    l
    o
    a
    d A F
    u
    l
    l E
    x
    a
    m
    p
    l
    e @
    h
    t
    t
    p
    s
    :
    /
    /
    g
    i
    s
    t
    .
    g
    i
    t
    h
    u
    b
    .
    c
    o
    m
    /
    3
    7
    6
    4
    9
    6
    2
    h
    t
    t
    p
    s
    :
    /
    /
    g
    i
    s
    t
    .
    g
    i
    t
    h
    u
    b
    .
    c
    o
    m
    /
    3
    7
    6
    4
    9
    6
    2

    View Slide

  35. C
    u
    s
    t
    o
    m D
    a
    s
    h
    b
    o
    a
    r
    d W
    i
    d
    g
    e
    t
    .
    .
    .
    f
    u
    n
    c
    t
    i
    o
    n c
    u
    s
    t
    o
    m
    _
    w
    i
    d
    g
    e
    t (
    ) {
    e
    c
    h
    o ‘ <
    h
    1
    > W
    e
    l
    c
    o
    m
    e t
    o y
    o
    u
    r n
    e
    w W
    o
    r
    P
    r
    e
    s
    s
    t
    h
    e
    m
    e b
    u
    i
    l
    t b
    y a
    n a
    w
    e
    s
    o
    m
    e d
    e
    v
    e
    l
    o
    p
    e
    r
    <
    /
    h
    1
    >
    <
    p
    >
    I
    f y
    o
    u h
    a
    v
    e q
    u
    e
    s
    t
    i
    o
    n
    s e
    m
    a
    i
    l m
    e a
    t
    d
    e
    v
    e
    l
    o
    p
    e
    r
    @
    a
    w
    e
    s
    o
    m
    e
    d
    e
    v
    .
    c
    o
    m
    <
    /
    p
    >

    }
    }
    f
    u
    n
    c
    t
    i
    o
    n a
    d
    d
    _
    d
    a
    s
    h
    b
    o
    a
    r
    d
    _
    w
    i
    d
    g
    e
    t (
    ) {
    w
    p
    _
    a
    d
    d
    _
    d
    a
    s
    h
    b
    o
    a
    r
    d
    _
    w
    i
    d
    g
    e
    t ( ’
    c
    u
    s
    t
    o
    m
    _
    w
    i
    d
    g
    e
    t
    ’ ,

    W
    e
    l
    c
    o
    m
    e t
    o W
    o
    r
    d
    P
    r
    e
    s
    s
    ’ , ‘
    c
    u
    s
    t
    o
    m
    _
    w
    i
    d
    g
    e
    t
    ’ )
    ;
    }
    a
    d
    d
    _
    a
    c
    t
    i
    o
    n (

    w
    p
    _
    d
    a
    s
    h
    b
    o
    a
    r
    d
    _
    s
    e
    t
    u
    p ‘
    ,

    a
    d
    d
    _
    d
    a
    s
    h
    b
    o
    a
    r
    d
    _
    w
    i
    d
    g
    e
    t
    ’ )
    ;

    View Slide

  36. C
    u
    s
    t
    o
    m A
    d
    m
    i
    n F
    o
    o
    t
    e
    r
    .
    .
    .
    a
    d
    d
    _
    f
    i
    l
    t
    e
    r
    (
    '
    a
    d
    m
    i
    n
    _
    f
    o
    o
    t
    e
    r
    _
    t
    e
    x
    t
    '
    , '
    m
    o
    d
    i
    f
    y
    _
    f
    o
    o
    t
    e
    r
    _
    a
    d
    m
    i
    n
    '
    )
    ;
    f
    u
    n
    c
    t
    i
    o
    n m
    o
    d
    i
    f
    y
    _
    f
    o
    o
    t
    e
    r
    _
    a
    d
    m
    i
    n
    ( ) {
    e
    c
    h
    o '
    C
    r
    e
    a
    t
    e
    d b
    y a
    n a
    w
    e
    s
    o
    m
    e d
    e
    v
    e
    l
    o
    p
    e
    r
    '
    ;
    }
    a
    d
    d
    _
    f
    i
    l
    t
    e
    r
    (
    '
    u
    p
    d
    a
    t
    e
    _
    f
    o
    o
    t
    e
    r
    '
    , '
    c
    h
    a
    n
    g
    e
    _
    f
    o
    o
    t
    e
    r
    _
    v
    e
    r
    s
    i
    o
    n
    '
    , 9
    9
    9
    9
    )
    ;
    f
    u
    n
    c
    t
    i
    o
    n
    f
    u
    n
    c
    t
    i
    o
    n c
    h
    a
    n
    g
    e
    _
    f
    o
    o
    t
    e
    r
    _
    v
    e
    r
    s
    i
    o
    n
    ( ) {
    r
    e
    t
    u
    r
    n '
    V
    e
    r
    s
    i
    o
    n 1
    .
    0
    '
    ;
    }
    D
    o
    w
    l
    o
    a
    d A F
    u
    l
    l E
    x
    a
    m
    p
    l
    e @
    h
    t
    t
    p
    s
    :
    /
    /
    g
    i
    s
    t
    .
    g
    i
    t
    h
    u
    b
    .
    c
    o
    m
    /
    3
    7
    6
    5
    0
    1
    5

    View Slide

  37. B
    r
    a
    n
    d t
    h
    e l
    o
    g
    i
    n s
    c
    r
    e
    e
    n
    .
    .
    .
    N
    o
    t i
    n
    .
    .
    .
    i
    f ( i
    s
    _
    a
    d
    m
    i
    n
    (
    ) ) {
    r
    e
    q
    u
    i
    r
    e
    _
    o
    n
    c
    e
    (
    '
    i
    n
    c
    l
    u
    d
    e
    s
    /
    c
    u
    s
    t
    o
    m
    -
    a
    d
    m
    i
    n
    /
    c
    u
    s
    t
    o
    m
    -
    a
    d
    m
    i
    n
    .
    p
    h
    p
    '
    )
    ;
    }
    h
    o
    w a
    b
    o
    u
    t
    .
    .
    .
    r
    e
    q
    u
    i
    r
    e
    _
    o
    n
    c
    e
    (
    '
    i
    n
    c
    l
    u
    d
    e
    s
    /
    c
    u
    s
    t
    o
    m
    -
    l
    o
    g
    i
    n
    .
    p
    h
    p
    '
    )
    ;
    r
    e
    q
    u
    i
    r
    e
    _
    o
    n
    c
    e
    (
    '
    i
    n
    c
    l
    u
    d
    e
    s
    /
    c
    u
    s
    t
    o
    m
    -
    l
    o
    g
    i
    n
    .
    p
    h
    p
    '
    )
    ;
    a
    d
    d
    _
    f
    i
    l
    t
    e
    r
    (
    '
    l
    o
    g
    i
    n
    _
    h
    e
    a
    d
    e
    r
    u
    r
    l
    '
    , '
    m
    y
    _
    l
    o
    g
    i
    n
    _
    l
    o
    g
    o
    _
    u
    r
    l
    '
    )
    ;
    f
    u
    n
    c
    t
    i
    o
    n m
    y
    _
    l
    o
    g
    i
    n
    _
    l
    o
    g
    o
    _
    u
    r
    l
    ( ) {
    r
    e
    t
    u
    r
    n h
    o
    m
    e
    _
    u
    r
    l
    (
    )
    ;
    }
    a
    d
    d
    _
    f
    i
    l
    t
    e
    r
    (
    '
    l
    o
    g
    i
    n
    _
    h
    e
    a
    d
    e
    r
    t
    i
    t
    l
    e
    '
    , '
    m
    y
    _
    l
    o
    g
    i
    n
    _
    l
    o
    g
    o
    _
    u
    r
    l
    _
    t
    i
    t
    l
    e
    '
    )
    ;
    f
    u
    n
    c
    t
    i
    o
    n m
    y
    _
    l
    o
    g
    i
    n
    _
    l
    o
    g
    o
    _
    u
    r
    l
    _
    t
    i
    t
    l
    e
    ( ) {
    r
    e
    t
    u
    r
    n g
    e
    t
    _
    b
    l
    o
    g
    i
    n
    f
    o
    ( '
    t
    i
    t
    l
    e
    ' )
    ;
    }

    View Slide

  38. B
    r
    a
    n
    d t
    h
    e l
    o
    g
    i
    n s
    c
    r
    e
    e
    n
    .
    .
    .
    a
    d
    d
    _
    f
    i
    l
    t
    e
    r
    (
    '
    l
    o
    g
    i
    n
    _
    h
    e
    a
    d
    '
    , '
    c
    u
    s
    t
    o
    m
    _
    l
    o
    g
    i
    n
    _
    s
    t
    y
    l
    e
    s
    '
    )
    ;
    f
    u
    n
    c
    t
    i
    o
    n c
    u
    s
    t
    o
    m
    _
    l
    o
    g
    i
    n
    _
    s
    t
    y
    l
    e
    s
    ( ) {
    e
    c
    h
    o '
    <
    s
    t
    y
    l
    e t
    y
    p
    e
    =
    "
    t
    e
    x
    t
    /
    c
    s
    s
    "
    >
    .
    l
    o
    g
    i
    n h
    1 a { b
    a
    c
    k
    g
    r
    o
    u
    n
    d
    -
    i
    m
    a
    g
    e
    :
    u
    r
    l
    (
    '
    .
    g
    e
    t
    _
    t
    e
    m
    p
    l
    a
    t
    e
    _
    d
    i
    r
    e
    c
    t
    o
    r
    y
    _
    u
    r
    i
    (
    )
    .
    '
    /
    i
    m
    a
    g
    e
    s
    /
    l
    o
    g
    o
    .
    p
    n
    g
    ) ;
    t
    e
    x
    t
    -
    a
    l
    i
    g
    n
    : c
    e
    n
    t
    e
    r
    ;
    w
    i
    d
    t
    h
    : 3
    5
    0
    p
    x
    ;
    b
    a
    c
    k
    g
    r
    o
    u
    n
    d
    -
    s
    i
    z
    e
    : 2
    3
    4
    p
    x
    ; 8
    2
    p
    x
    ;
    }
    b
    o
    d
    y { b
    a
    c
    k
    g
    r
    o
    u
    n
    d
    -
    c
    o
    l
    o
    r
    : #
    F
    6
    F
    6
    F
    6
    ;
    }
    <
    /
    s
    t
    y
    l
    e
    >
    '
    ;
    }
    }
    D
    o
    w
    l
    o
    a
    d A F
    u
    l
    l E
    x
    a
    m
    p
    l
    e @
    h
    t
    t
    p
    s
    :
    /
    /
    g
    i
    s
    t
    .
    g
    i
    t
    h
    u
    b
    .
    c
    o
    m
    /
    3
    7
    6
    5
    0
    3
    3

    View Slide

  39. R
    e
    c
    a
    p
    .
    .
    .
    -
    Mi
    n
    i
    ma
    l
    i
    s
    m i
    s
    t
    h
    e
    k
    e
    y
    t
    o
    ma
    k
    i
    n
    g
    y
    o
    u
    r
    c
    l
    i
    e
    n
    t
    s
    l
    i
    v
    e
    s
    e
    a
    s
    i
    e
    r
    .
    -
    A
    l
    w
    a
    y
    s
    s
    p
    e
    n
    d
    s
    o
    me
    e
    x
    t
    r
    a
    t
    i
    me
    c
    l
    e
    a
    n
    i
    n
    g
    u
    p
    .
    .
    .
    -
    T
    h
    e
    D
    a
    s
    h
    b
    o
    a
    r
    d
    -
    T
    h
    e
    Me
    n
    u
    s
    & S
    u
    b
    Me
    n
    u
    s
    -
    Wi
    d
    g
    e
    t
    s
    -
    E
    d
    i
    t
    o
    r
    Me
    t
    a
    B
    o
    x
    e
    s
    -
    A
    d
    d
    i
    n
    g
    c
    u
    s
    t
    o
    m s
    t
    y
    l
    e
    s
    t
    o
    t
    h
    e
    e
    d
    i
    t
    o
    r
    w
    i
    l
    l
    s
    a
    v
    e
    y
    o
    u
    r
    c
    l
    i
    e
    n
    t
    f
    r
    o
    m g
    e
    t
    t
    i
    n
    g
    h
    e
    a
    d
    a
    c
    h
    e
    s
    .
    -
    A
    d
    d
    i
    n
    g
    s
    o
    me
    c
    u
    s
    t
    o
    m b
    r
    a
    n
    d
    i
    n
    g
    w
    i
    l
    l
    g
    i
    v
    e
    y
    o
    u
    r
    s
    i
    t
    e
    s
    a
    l
    i
    t
    t
    l
    e
    u
    mp
    h
    a
    n
    d
    u
    n
    i
    q
    u
    n
    e
    s
    s
    !

    View Slide

  40. Qu
    e
    s
    t
    i
    o
    n
    s
    ?

    View Slide

  41. T
    h
    a
    n
    k
    Y
    o
    u
    !
    !

    View Slide