$30 off During Our Annual Pro Sale. View Details »

Go Modules and Proxy Walkthrough

ktr
August 06, 2019

Go Modules and Proxy Walkthrough

#godo_miniconf

ktr

August 06, 2019
Tweet

More Decks by ktr

Other Decks in Programming

Transcript

  1. CyberAgent & Merpay BackendEngineer’s Go ಉ miniConf
    Go Modules and Proxy 

    Walkthrough

    View Slide

  2. w LUS Ωλϩʔɺ!LUS@

    w ϝϧϖΠ৽ଔ

    όοΫΤϯυΤϯδχΞ
    w $PEF1BZNFOU5FBN
    XIPBNJ

    View Slide

  3. CyberAgent & Merpay BackendEngineer’s Go ಉ miniConf
    Go Modules and Proxy 

    Walkthrough

    View Slide

  4. 8IBUJT(P.PEVMFT

    View Slide

  5. w (PͷόʔδϣχϯάγεςϜ
    w 3VTT$PYͷ(P7FSTJPOJOHͱWHPͰొ৔
    w (P͔Βݶఆతͳαϙʔτ
    (P.PEVMFT

    View Slide

  6. w ϦϙδτϦͷϞδϡʔϧԽ
    w ηϚϯςΟοΫόʔδϣχϯά
    w HPNPEʹΑΔґଘ؅ཧ
    w HPTVNʹΑΔνΣοΫαϜͷ؅ཧ
    (P.PEVMFTͷಛ௃

    View Slide

  7. DSD UMW
    NQN NQNKQRS
    UPPMT
    ϦϙδτϦͷϞδϡʔϧԽ
    go.mercari.io/go-emv-code
    .
    ᵓ── crc16
    ᵓ── mpm
    │ └── jpqr
    ᵓ── tlv
    └── tools

    View Slide

  8. DSD UMW
    NQN NQNKQRS
    UPPMT
    HPNPEUJEZ
    go.mercari.io/go-emv-code
    .
    ᵓ── crc16
    ᵓ── go.mod
    ᵓ── go.sum
    ᵓ── mpm
    │ └── jpqr
    ᵓ── tlv
    └── tools
    go.mercari.io/go-emv-code

    View Slide

  9. DSD
    go.mercari.io/go-emv-code
    UMW
    NQN NQNKQRS
    UPPMT • v0.1.1
    • v0.1.0
    Ϟδϡʔϧ୯ҐͰόʔδϣχϯά
    "v" ͸͚ͭΔඞཁ͕͋Δʂ

    View Slide

  10. WQBDLBHFT
    go.mercari.io/go-emv-code/v2
    • v2.0.0
    ޙํޓ׵ੑ͕อͯͳ͍࣌

    View Slide

  11. w (PNPEVMFTΛ༗ޮԽ͢Δ͔Ͳ͏͔ઃఆͰ͖Δ
    w PO༗ޮԽ
    w P⒎ແޮԽ
    w BVUP σϑΥϧτ

    w (01"5)TSDͷ֎͔ͭHPNPE͕͋Ε͹༗ޮ
    (0.0%6-&

    View Slide

  12. View Slide

  13. w (PͰ΋BVUP͕σϑΥϧτͷ··
    w ͨͩ͠ɺ(01"5)TSDͷதͰ͋ͬͯ΋HPNPE͕

    ͋Ε͹༗ޮԽ͞ΕΔ
    (0.0%6-& (P

    View Slide

  14. w (PNPEVMFT͕༗ޮͩͱHPHFUͷڍಈ͕มΘΔ
    w (01"5)TSDʹ഑ஔ͞Εͳ͘ͳΔ
    w HPNPEͱHPTVNͷॻ͖׵͑
    w όʔδϣϯͳͲΛࢦఆͯ͠ͷऔಘ
    NPEVMFBXBSFHPHFU

    View Slide

  15. $ export GO111MODULE=on
    $ go get go.mercari.io/go-emv-code # latest (v0.1.1)
    $ go get go.mercari.io/[email protected] # version
    $ go get go.mercari.io/go-emv-code@670be75 # commit hash
    $ go get -u=patch go.mercari.io/go-emv-code # v0.1.1
    NPEVMFBXBSFHPHFU

    View Slide

  16. (P.PEVMF&DPTZTUFN

    View Slide

  17. w .PEVMF*OEFY
    w .PEVMF"VUIFOUJDBUJPO
    w .PEVMF.JSSPST
    w .PEVMF1SPYZ
    (P.PEVMF&DPTZTUFN

    View Slide

  18. w ύϒϦοΫʹར༻ՄೳͳϞδϡʔϧΛ

    ΫΤϦΛ࢖ͬͯݕࡧͰ͖ΔαʔϏε
    w ࣮૷͸JOEFYHPMBOHPSHͷΈ
    .PEVMF*OEFY

    View Slide

  19. View Slide

  20. View Slide

  21. w (01"5)HPHFU͸தؒऀ߈ܸʹରͯ͠੬ऑ
    .PEVMF"VUIFOUJDBUJPO

    View Slide

  22. w (01"5)HPHFU͸தؒऀ߈ܸʹରͯ͠੬ऑ
    w NPEVMFBXBSFHPHFUͰ͸HPTVNͰ

    ਖ਼͍͠Ϟδϡʔϧ͔ΛݕূՄೳʹʂ
    .PEVMF"VUIFOUJDBUJPO

    View Slide

  23. w Ҏલʹऔಘͨ͠ϞδϡʔϧͷνΣοΫαϜΛอ࣋
    HPTVNͷ໰୊

    View Slide

  24. w Ҏલʹऔಘͨ͠ϞδϡʔϧͷνΣοΫαϜΛอ࣋
    ॳճऔಘ࣌ʹਅਖ਼ੑΛ֬ೝͰ͖ͳ͍
    HPTVNͷ໰୊

    View Slide

  25. w ͋ΒΏΔϞδϡʔϧͷνΣοΫαϜΛ

    ू໿͢ΔαʔϏε
    w ࣮૷͸TVNHPMBOHPSHͷΈ
    (PDIFDLTVNEBUBCBTF TVNEC

    View Slide

  26. w Ϟδϡʔϧͷίʔυ΍νΣοΫαϜͷΩϟογϡΛߦ͏
    w ಛఆͷαʔόͷՄ༻ੑ΍ϨΠςϯγʹӨڹ͞ΕΔͷΛ๷͙
    .PEVMF.JSSPST

    View Slide

  27. w Ϟδϡʔϧͷίʔυ΍νΣοΫαϜͷΩϟογϡΛߦ͏
    w ಛఆͷαʔόͷՄ༻ੑ΍ϨΠςϯγʹӨڹ͞ΕΔͷΛ๷͙
    w Ұ౓Ωϟογϡ͞ΕͨϞδϡʔϧ͸جຊతʹ࡟আ͞Εͳ͍
    .PEVMF.JSSPST

    View Slide

  28. w Ϟδϡʔϧͷίʔυ΍νΣοΫαϜͷΩϟογϡΛߦ͏
    w ಛఆͷαʔόͷՄ༻ੑ΍ϨΠςϯγʹӨڹ͞ΕΔͷΛ๷͙
    w Ұ౓Ωϟογϡ͞ΕͨϞδϡʔϧ͸جຊతʹ࡟আ͞Εͳ͍
    w ϦϙδτϦ࡟আʹରॲ͢ΔͨΊ FHHPCJOEBUB

    .PEVMF.JSSPST

    View Slide

  29. w .PEVMFQSPYZQSPUPDPMΛ࣮૷͢ΔαʔϏε
    w QSPYZHPMBOHPSHɺ"UIFOTͳͲ
    w (P͔Β͸HPίϚϯυ͸ΦϦδϯαʔόͰ
    ͸ͳ͘QSPYZ΁ίʔυΛऔಘ͠ʹ͍͘
    .PEVMF1SPYZ

    View Slide

  30. w (&5(01309:NPEVMF!WMJTU
    w (&5(01309:NPEVMF!WWFSTJPOJOGP
    w (&5(01309:NPEVMF!WWFSTJPONPE
    w (&5(01309:NPEVMF!WWFSTJPO[JQ
    .PEVMFQSPYZQSPUPDPM

    View Slide

  31. View Slide

  32. (01309:ͱ(046.%#
    $ export GOPROXY="https://proxy.golang.org,direct" # default
    $ export GOPROXY="off" # disable proxies
    $ export GOSUMDB="sum.golang.org" # default
    $ export GOSUMDB="off" # disable sumdb

    View Slide

  33. HP
    ίϚϯυ
    QSPYZ
    QSPYZHPMBOHPSH
    TVNEC
    TVNHPMBOHPSH
    JOEFY
    JOEFYHPMBOHPSH
    NPEVMFͷऔಘ
    DIFDLTVNͷऔಘ
    (P%PD
    NPEVMF৘ใͷऔಘ
    (JU)VC
    #JUCVDLFU FUD

    View Slide

  34. w JOEFYͳ͠
    w TVNECҰ෦ͷΈHPMBOHPSHYNPETVNECʹଘࡏ
    w NJSSPSͳ͠
    w QSPYZͳ͠
    ֤αʔϏεͷެ࣮ࣜ૷

    View Slide

  35. w ͍ͣΕHPMBOHPSHYNPEͰެ։͞Ε͍ͯ͘
    w ͦΕͧΕͷ࣮૷͸DNEHPJOUFSOBMҎԼͰ

    ։ൃ͞Ε͍ͯΔ
    w (P·Ͱʹ͢΂ͯެ։͞Εͦ͏ʜʁ
    ֤αʔϏεͷެ࣮ࣜ૷

    View Slide

  36. 1SJWBUF.PEVMFT

    View Slide

  37. 1SJWBUF.PEVMFT
    HP
    ίϚϯυ
    ϓϥΠϕʔτ

    ϦϙδτϦ
    QSPYZ
    QSPYZHPMBOHPSH

    View Slide

  38. 1SJWBUF.PEVMFT
    HP
    ίϚϯυ
    ϓϥΠϕʔτ

    ϦϙδτϦ
    QSPYZ
    QSPYZHPMBOHPSH

    View Slide

  39. w (PͰ͸σϑΥϧτͰQSPYZHPMBOHPSH

    Λܦ༝͢Δ
    w ηΩϡϦςΟతͳ໰୊͔ΒϞδϡʔϧͷऔಘʹ

    ࣦഊͨ͠৔߹͸ίϚϯυͷ࣮ߦ͕ࢭ·Δ
    1SJWBUF.PEVMFT

    View Slide

  40. w (PͰ͸σϑΥϧτͰQSPYZHPMBOHPSH

    Λܦ༝͢Δ
    w ηΩϡϦςΟతͳ໰୊͔ΒϞδϡʔϧͷऔಘʹ

    ࣦഊͨ͠৔߹͸ίϚϯυͷ࣮ߦ͕ࢭ·Δ
    w ୯७ʹ(PͷόʔδϣϯΛ্͛Δ͚ͩͩͱϏϧυ͕௨Βͳ͘ͳΔ
    1SJWBUF.PEVMFT

    View Slide

  41. (0/01309:
    $ export GONOPROXY="github.com/ktr0731/priv-mod"
    $ go get github.com/ktr0731/priv-mod

    View Slide

  42. w ·ͩ೉ͦ͠͏ʜ
    w ެࣜͷ࣮૷͕ͳ͍
    w #BTJDೝূ͔͠࢖͑ͳ͍
    1SPYZͷηϧϑϗετ

    View Slide

  43. ·ͱΊ

    View Slide

  44. w (0.0%6-&͸(PͰ΋มΘΒͣBVUP
    w (PNPEVMFT͕༗ޮͩͱHPHFUͷڍಈ͕มΘΔ
    w ηϚϯςΟοΫόʔδϣχϯάͰόʔδϣχϯά
    (P.PEVMFT

    View Slide

  45. w JOEFYΫΤϦʹΑΔϞδϡʔϧͷݕࡧ
    w TVNEC͋ΒΏΔϞδϡʔϧͷνΣοΫαϜΛू໿
    w NJSSPSϞδϡʔϧ΍νΣοΫαϜͷΩϟογϡ
    w QSPYZHPίϚϯυ΁Ϟδϡʔϧ৘ใΛఏڙ
    (P.PEVMF&DPTZTUFN

    View Slide

  46. w QSPYZHPMBOHPSH͸ϓϥΠϕʔτϦϙδτϦ΁

    ΞΫηεͰ͖ͳ͍
    w (0/01309:Λద੾ʹઃఆ͢Δ
    1SJWBUF.PEVMFT

    View Slide

  47. w(P7FSTJPOJOHIUUQTSFTFBSDITXUDIDPNWHP
    w.PEVMFT8JLJIUUQTHJUIVCDPNHPMBOHHPXJLJ.PEVMFT
    w(P.PEVMFTJOIUUQTCMPHHPMBOHPSHNPEVMFT
    w1SPQPTBM4FDVSFUIF1VCMJD(P.PEVMF&DPTZTUFN

    IUUQTHPHPPHMFTPVSDFDPNQSPQPTBMNBTUFSEFTJHOTVNECNE
    wJOEFY TVNEC QSPYZIUUQTJOEFYHPMBOHPSH
    w(P3FMFBTF/PUFTIUUQTUJQHPMBOHPSHEPDHPNPEVMFT
    w(P%PDIUUQTHPEPDPSHHJUIVCDPNHPMBOHHPTSDDNEHPJOUFSOBM
    wUJQHPMBOHPSHIUUQTUJQHPMBOHPSHDNEHP
    w(PQIFS$PO(P.PEVMF1SPYZ-JGFPGBRVFSZ

    IUUQTBCPVUTPVSDFHSBQIDPNHPHPQIFSDPOHPNPEVMFQSPYZMJGFPGBRVFSZ
    wQSPQPTBMYNPEOFXSFQPGPSNPEVMFNFDIBOJDTIUUQTHJUIVCDPNHPMBOHHPJTTVFT
    wDNEHPEFpOF)551BVUIFOUJDBUJPOFYUFOTJPONFDIBOJTNIUUQTHJUIVCDPNHPMBOHHPJTTVFT
    wDNEHPEFGBVMUUP(0.0%6-&BVUP XJUIDIBOHFT
    GPS(PIUUQTHJUIVCDPNHPMBOHHP
    JTTVFT
    ࢀߟ

    View Slide

  48. 5IBOLZPVGPSMJTUFOJOH

    View Slide