Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Go Modules and Proxy Walkthrough
ktr
August 06, 2019
Programming
8
25k
Go Modules and Proxy Walkthrough
#godo_miniconf
ktr
August 06, 2019
Tweet
Share
More Decks by ktr
See All by ktr
Designing libraries in Go way
ktr_0731
6
1.3k
ソフトウェアの複雑さに立ち向かう技術 / Tackling software complexity
ktr_0731
0
140
Fuzzy finder as a Go library
ktr_0731
3
4.7k
つよくてニューゲーム / NewGame++
ktr_0731
0
800
やはり俺の Go アプリケーション設計はまちがっている。 / My Go Application Design Is Wrong, As I Expected
ktr_0731
13
3.2k
GopherCon2018
ktr_0731
2
1.5k
Evans: more expressive gRPC client
ktr_0731
2
330
自作 CLI ツールのワークフローとそれを支える技術 / the workflow of my CLI tool and technologies which supports it
ktr_0731
0
1.5k
Evans: more expressive gRPC client
ktr_0731
0
4.2k
Other Decks in Programming
See All in Programming
How to Fight Production Incidents?
asatarin
0
230
OSSから学んだPR Descriptionの書き方
fugakkbn
4
140
PHPアプリケーションにおけるアーキテクチャメトリクスについて / Architecture Metrics in PHP Applications
isanasan
1
290
[2023년 1월 세미나] 데이터 분석가 되면 어떤 일을 하나요?
datarian
0
650
Swift Expression Macros: a practical introduction
kishikawakatsumi
2
740
SwiftPMのPlugin入門 / introduction_to_swiftpm_plugin
uhooi
2
110
社会人 20 年目エンジニア、発信で技術学びなおしてる話
e99h2121
1
150
TokyoR#103_DataProcessing
kilometer
0
550
42tokyo-born2beroot-review
love42
0
120
Zynq MP SoC で楽しむエッジコンピューティング ~RTLプログラミングのススメ~
ryuz88
0
400
CDKでValidationする本当の方法 / cdk-validation
gotok365
1
230
Unity+C#で学ぶ! メモリレイアウトとvtableのすゝめ 〜動的ポリモーフィズムを実現する仕組み〜
rossam
1
360
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
10
1.3k
The Power of CSS Pseudo Elements
geoffreycrofte
52
4.3k
Creatively Recalculating Your Daily Design Routine
revolveconf
207
11k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
152
13k
Six Lessons from altMBA
skipperchong
15
2.3k
Testing 201, or: Great Expectations
jmmastey
25
5.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
317
22k
The Mythical Team-Month
searls
210
40k
The Language of Interfaces
destraynor
149
21k
Automating Front-end Workflow
addyosmani
1351
200k
Why You Should Never Use an ORM
jnunemaker
PRO
49
7.9k
The Art of Programming - Codeland 2020
erikaheidi
36
11k
Transcript
CyberAgent & Merpay BackendEngineer’s Go ಉ miniConf Go Modules and
Proxy Walkthrough
w LUS Ωλϩʔɺ
[email protected]
w ϝϧϖΠ৽ଔ όοΫΤϯυΤϯδχΞ w $PEF1BZNFOU5FBN XIPBNJ
CyberAgent & Merpay BackendEngineer’s Go ಉ miniConf Go Modules and
Proxy Walkthrough
8IBUJT(P.PEVMFT
w (PͷόʔδϣχϯάγεςϜ w 3VTT$PYͷ(P7FSTJPOJOHͱWHPͰొ w (P͔Βݶఆతͳαϙʔτ (P.PEVMFT
w ϦϙδτϦͷϞδϡʔϧԽ w ηϚϯςΟοΫόʔδϣχϯά w HPNPEʹΑΔґଘཧ w HPTVNʹΑΔνΣοΫαϜͷཧ (P.PEVMFTͷಛ
DSD UMW NQN NQNKQRS UPPMT ϦϙδτϦͷϞδϡʔϧԽ go.mercari.io/go-emv-code . ᵓ── crc16
ᵓ── mpm │ └── jpqr ᵓ── tlv └── tools
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
DSD go.mercari.io/go-emv-code UMW NQN NQNKQRS UPPMT • v0.1.1 • v0.1.0
Ϟδϡʔϧ୯ҐͰόʔδϣχϯά "v" ͚ͭΔඞཁ͕͋Δʂ
WQBDLBHFT go.mercari.io/go-emv-code/v2 • v2.0.0 ޙํޓੑ͕อͯͳ͍࣌
w (PNPEVMFTΛ༗ޮԽ͢Δ͔Ͳ͏͔ઃఆͰ͖Δ w PO༗ޮԽ w P⒎ແޮԽ w BVUP σϑΥϧτ
w (01"5)TSDͷ֎͔ͭHPNPE͕͋Ε༗ޮ (0.0%6-&
None
w (PͰBVUP͕σϑΥϧτͷ·· w ͨͩ͠ɺ(01"5)TSDͷதͰ͋ͬͯHPNPE͕ ͋Ε༗ޮԽ͞ΕΔ (0.0%6-& (P
w (PNPEVMFT͕༗ޮͩͱHPHFUͷڍಈ͕มΘΔ w (01"5)TSDʹஔ͞Εͳ͘ͳΔ w HPNPEͱHPTVNͷॻ͖͑ w όʔδϣϯͳͲΛࢦఆͯ͠ͷऔಘ NPEVMFBXBSFHPHFU
$ 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/
[email protected]
# commit hash $ go get -u=patch go.mercari.io/go-emv-code # v0.1.1 NPEVMFBXBSFHPHFU
(P.PEVMF&DPTZTUFN
w .PEVMF*OEFY w .PEVMF"VUIFOUJDBUJPO w .PEVMF.JSSPST w .PEVMF1SPYZ (P.PEVMF&DPTZTUFN
w ύϒϦοΫʹར༻ՄೳͳϞδϡʔϧΛ ΫΤϦΛͬͯݕࡧͰ͖ΔαʔϏε w ࣮JOEFYHPMBOHPSHͷΈ .PEVMF*OEFY
None
None
w (01"5)HPHFUதؒऀ߈ܸʹରͯ͠੬ऑ .PEVMF"VUIFOUJDBUJPO
w (01"5)HPHFUதؒऀ߈ܸʹରͯ͠੬ऑ w NPEVMFBXBSFHPHFUͰHPTVNͰ ਖ਼͍͠Ϟδϡʔϧ͔ΛݕূՄೳʹʂ .PEVMF"VUIFOUJDBUJPO
w Ҏલʹऔಘͨ͠ϞδϡʔϧͷνΣοΫαϜΛอ࣋ HPTVNͷ
w Ҏલʹऔಘͨ͠ϞδϡʔϧͷνΣοΫαϜΛอ࣋ ॳճऔಘ࣌ʹਅਖ਼ੑΛ֬ೝͰ͖ͳ͍ HPTVNͷ
w ͋ΒΏΔϞδϡʔϧͷνΣοΫαϜΛ ू͢ΔαʔϏε w ࣮TVNHPMBOHPSHͷΈ (PDIFDLTVNEBUBCBTF TVNEC
w ϞδϡʔϧͷίʔυνΣοΫαϜͷΩϟογϡΛߦ͏ w ಛఆͷαʔόͷՄ༻ੑϨΠςϯγʹӨڹ͞ΕΔͷΛ͙ .PEVMF.JSSPST
w ϞδϡʔϧͷίʔυνΣοΫαϜͷΩϟογϡΛߦ͏ w ಛఆͷαʔόͷՄ༻ੑϨΠςϯγʹӨڹ͞ΕΔͷΛ͙ w ҰΩϟογϡ͞ΕͨϞδϡʔϧجຊతʹআ͞Εͳ͍ .PEVMF.JSSPST
w ϞδϡʔϧͷίʔυνΣοΫαϜͷΩϟογϡΛߦ͏ w ಛఆͷαʔόͷՄ༻ੑϨΠςϯγʹӨڹ͞ΕΔͷΛ͙ w ҰΩϟογϡ͞ΕͨϞδϡʔϧجຊతʹআ͞Εͳ͍ w ϦϙδτϦআʹରॲ͢ΔͨΊ FHHPCJOEBUB .PEVMF.JSSPST
w .PEVMFQSPYZQSPUPDPMΛ࣮͢ΔαʔϏε w QSPYZHPMBOHPSHɺ"UIFOTͳͲ w (P͔ΒHPίϚϯυΦϦδϯαʔόͰ ͳ͘QSPYZίʔυΛऔಘ͠ʹ͍͘ .PEVMF1SPYZ
w (&5(01309:NPEVMF!WMJTU w (&5(01309:NPEVMF!WWFSTJPOJOGP w (&5(01309:NPEVMF!WWFSTJPONPE w (&5(01309:NPEVMF!WWFSTJPO[JQ .PEVMFQSPYZQSPUPDPM
None
(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
HP ίϚϯυ QSPYZ QSPYZHPMBOHPSH TVNEC TVNHPMBOHPSH JOEFY JOEFYHPMBOHPSH NPEVMFͷऔಘ DIFDLTVNͷऔಘ
(P%PD NPEVMFใͷऔಘ (JU)VC #JUCVDLFU FUD
w JOEFYͳ͠ w TVNECҰ෦ͷΈHPMBOHPSHYNPETVNECʹଘࡏ w NJSSPSͳ͠ w QSPYZͳ͠ ֤αʔϏεͷެ࣮ࣜ
w ͍ͣΕHPMBOHPSHYNPEͰެ։͞Ε͍ͯ͘ w ͦΕͧΕͷ࣮DNEHPJOUFSOBMҎԼͰ ։ൃ͞Ε͍ͯΔ w (P·Ͱʹͯ͢ެ։͞Εͦ͏ʜʁ ֤αʔϏεͷެ࣮ࣜ
1SJWBUF.PEVMFT
1SJWBUF.PEVMFT HP ίϚϯυ ϓϥΠϕʔτ ϦϙδτϦ QSPYZ QSPYZHPMBOHPSH
1SJWBUF.PEVMFT HP ίϚϯυ ϓϥΠϕʔτ ϦϙδτϦ QSPYZ QSPYZHPMBOHPSH ❌
w (PͰσϑΥϧτͰQSPYZHPMBOHPSH Λܦ༝͢Δ w ηΩϡϦςΟతͳ͔ΒϞδϡʔϧͷऔಘʹ ࣦഊͨ͠߹ίϚϯυͷ࣮ߦ͕ࢭ·Δ 1SJWBUF.PEVMFT
w (PͰσϑΥϧτͰQSPYZHPMBOHPSH Λܦ༝͢Δ w ηΩϡϦςΟతͳ͔ΒϞδϡʔϧͷऔಘʹ ࣦഊͨ͠߹ίϚϯυͷ࣮ߦ͕ࢭ·Δ w ୯७ʹ(PͷόʔδϣϯΛ্͛Δ͚ͩͩͱϏϧυ͕௨Βͳ͘ͳΔ 1SJWBUF.PEVMFT
(0/01309: $ export GONOPROXY="github.com/ktr0731/priv-mod" $ go get github.com/ktr0731/priv-mod
w ·ͩͦ͠͏ʜ w ެࣜͷ࣮͕ͳ͍ w #BTJDೝূ͔͑͠ͳ͍ 1SPYZͷηϧϑϗετ
·ͱΊ
w (0.0%6-&(PͰมΘΒͣBVUP w (PNPEVMFT͕༗ޮͩͱHPHFUͷڍಈ͕มΘΔ w ηϚϯςΟοΫόʔδϣχϯάͰόʔδϣχϯά (P.PEVMFT
w JOEFYΫΤϦʹΑΔϞδϡʔϧͷݕࡧ w TVNEC͋ΒΏΔϞδϡʔϧͷνΣοΫαϜΛू w NJSSPSϞδϡʔϧνΣοΫαϜͷΩϟογϡ w QSPYZHPίϚϯυϞδϡʔϧใΛఏڙ (P.PEVMF&DPTZTUFN
w QSPYZHPMBOHPSHϓϥΠϕʔτϦϙδτϦ ΞΫηεͰ͖ͳ͍ w (0/01309:Λదʹઃఆ͢Δ 1SJWBUF.PEVMFT
w(P7FSTJPOJOHIUUQTSFTFBSDITXUDIDPNWHP w.PEVMFT8JLJIUUQTHJUIVCDPNHPMBOHHPXJLJ.PEVMFT w(P.PEVMFTJOIUUQTCMPHHPMBOHPSHNPEVMFT w1SPQPTBM4FDVSFUIF1VCMJD(P.PEVMF&DPTZTUFN IUUQTHPHPPHMFTPVSDFDPNQSPQPTBM NBTUFSEFTJHOTVNECNE 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 ࢀߟ
5IBOLZPVGPSMJTUFOJOH