Skip to content

Latest commit

ย 

History

History
158 lines (107 loc) ยท 7.21 KB

opening-ceremony.md

File metadata and controls

158 lines (107 loc) ยท 7.21 KB

contributhon ๊ธฐ๋ก (2018. 08. 16 ~)

> ๊ฐœ๊ด„์ ์ธ ๋‚ด์šฉ

KOSSLAB(์„ ๋ฆ‰์—ญ) - ์ •๊ธฐ๋ชจ์ž„ ๋งŽ์œผ๋ฉด ์ผ์ฃผ์ผ์— 1๋ฒˆ // ์ฒซ๋ชจ์ž„ 8์›” 20์ผ(ํ™”) 7์‹œ ๋ฐ˜

Mission : ์ค‘๊ฐ„๋‹จ๊ณ„๋ฅผ ๋‘ฌ์„œ ์Šคํ…์„ ๋ฐŸ์•„ ์–ด๋Š์ •๋„ ์ˆ˜์ค€๊นŒ์ง€ ์ด๋Œ์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก

kosslab-kr

Offline & Online ์„ž์–ด์„œ // info / chatroom

** ์ž‘๊ฒŒ๋‚˜๋งˆ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์—์„œ์˜ trouble shooting

> ์•ž์œผ๋กœ ํ•  ์ผ

  • ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ๋ฌธ์„œ
  • ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์„ฑ๋ฌธ์„œ
  • ์ปค๋ฐ‹ ๋ถ„์„ ๋ณด๊ณ ์„œ
  • ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ ์ง„ํ–‰์ƒํ™ฉ
  • Issue ๋“ฑ๋ก
  • Perf contribution
1. Git/Github ํ˜‘์—…๋ฐฉ์‹ ํ›ˆ๋ จ
- Git/Github ์˜ ๊ธฐ๋ณธ์‹ค์Šต
- ํ˜‘์—… ์‹œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น ๋ฐ ์ด์Šˆ ํ•ด๊ฒฐ๋ฒ• ์ดํ•ด (rebase ๋“ฑ)
- ์˜คํ”ˆ์†Œ์Šค ๊ฐœ๋ฐœ๋ฐฉ์‹ ์ดํ•ด

2. uftrace ํ”„๋กœ์ ํŠธ ์ดํ•ด์™€ ์ •๋ฆฌ
- ํ”„๋กœ์ ํŠธ ๋ช…
- ๋ถ„์•ผ ๋ฐ ํ•œ ์ค„ ์ •์˜
- ์‚ฌ์šฉ์–ธ์–ด
- ์ฃผ์š” feature ์— ๋Œ€ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค 1 ๊ฐœ
- ์ด ๋ผ์ธ ์ˆ˜, ํด๋” ๋‚˜๋‰œ ๊ตฌ์กฐ(depth 2-3)
- ์†Œ์Šค โ†’ ( ์ปดํŒŒ์ผ / ์„ธํŒ… ) โ†’ ์‹คํ–‰ ๊ณผ์ •

3. ์„ ์ •๋œ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœํ™˜๊ฒฝ๊ตฌ์„ฑ
- ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ : IDE ๋ฐ ํŽธ์ง‘๊ธฐ์™€ debugging ํˆด ์„ธํŒ…
- ์ปดํŒŒ์ผ / ์‹คํ–‰ ํ…Œ์ŠคํŠธ : โ€œhello worldโ€ ๋ฐ ์ž„์˜ ๋‚ด์šฉ ํฌํ•จ ํ…Œ์ŠคํŠธ
- Git ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ : local, remote repo, upstream ๊ตฌ์กฐ ์žก๊ธฐ

4. Linux ๊ธฐ๋ฐ˜ Tracing ๋„๊ตฌ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์Šคํ„ฐ๋””
- ELF, PLT/GOT, x86 calling convention ๋“ฑ background knowledge
- uftrace ์ฃผ์š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์†Œ์Šค๋ฆฌ๋”ฉ(๋ถ„์„)

5. ์‹œ๋‚˜๋ฆฌ์˜ค ๊ธฐ๋ฐ˜ ์†Œ์Šค ๋ถ„์„
- ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์„ ์„ ์ •ํ•ด์„œ ๊ทธ๊ฒƒ์ด ์‹คํ–‰๋˜๋Š” ๊ณผ์ •์„ ๋ถ„์„
- ๊ทธ์™€ ๊ด€๋ จ๋œ class, data structure, function, call-graph ๋“ฑ์„ ๋ถ„์„

6. ํ”„๋กœ์ ํŠธ์— ๊ธฐ์—ฌํ•˜๊ธฐ (Contribution)
- ๋ฒ„๊ทธ/๋ฆฌํŒฉํ† ๋ง/minor feature PATCH ๊ฑฐ๋ฆฌ ์ˆ˜์ƒ‰ํ•˜๊ธฐ
- ๋ถ„์„ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค๊ฐ๋„๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉฐ ๋ถ„์„์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
- ๋ถ„์„ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์†Œ์Šค์˜ ๋ฆฌํŒฉํ† ๋ง ๊ฐ€๋Šฅ์—ฌ๋ถ€๋ฅผ ์‚ดํŽด๋ณด๋ฉฐ ๋ถ„์„ํ•œ๋‹ค.
- ์ด์™ธ์˜ ๋‹ค๊ฐ๋„ ์‹œ๋‚˜๋ฆฌ์˜ค๋กœ ์ด์šฉํ•˜๋ฉฐ ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ๊ณ ๋ฏผํ•˜๊ณ  ๊ตฌํ˜„ํ•ด ๋ณธ๋‹ค.
- pull-request ์ „์†ก
- pull-request ์ „์— ์ฝ”๋“œ์ปจ๋ฒค์…˜ ํ™•์ธ ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ํ•„์ˆ˜์ ์œผ๋กœ ํ•œ๋‹ค.
- ์™„์„ฑํ•œ ๋‹ค์–‘ํ•œ ์ˆ˜์ •์‚ฌํ•ญ(commit)์„ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์— pull-request ํ•œ๋‹ค.

> ์†Œ๊ฐœ

namhyung๋‹˜ - ๋ฉ”์ธํ…Œ์ด๋„ˆ

1. ๋ฐ•ํ•œ๋ฒ” ๋ฉ˜ํ† ๋‹˜

์ž‘๋…„์—” ์ฐธ๊ฐ€์ž์˜€์ง€๋งŒ 32bit ๋Œ€์‘์„ ํ•˜๋Š”๊ฑธ๋กœ ์ง€๊ธˆ์€ ์ปค๋ฏธํ„ฐ๊ฐ€ ๋จ

๋ญ˜ ๋นก ํ•˜๊ฒ ๋‹ค ํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ์žฅ๊ธฐ์ ์œผ๋กœ ํŽธ์•ˆํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š”๊ฒŒ ๋„์›€์ด ๋œ๋‹ค

  • uftrace : ํŠธ๋ ˆ์ด์‹ฑ์„ ํ•ด์ฃผ๋Š” ํˆด / C, C++, Go, Rust 'Hello World' ํŠธ๋ ˆ์ด์‹ฑ ๊ฒฐ๊ณผ ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ - Go์—์„œ๋Š” functioncall์ด 1000๋ฒˆ์€ ์ผ์–ด๋‚˜์•ผํ•จ..

Dalvik ๋ถ„์„ํ•˜๊ธฐ

์†Œ์Šค์ฝ”๋“œ ๋ผ์ธ์ด ๋ถ„์„ํ•  ์ˆ˜ ์—†์„์ •๋„๋กœ ๋งŽ๋‹ค.

cscope, ctag๋ฅผ ๊ณผ๊ฑฐ์—” ์ป์Œ - ๋‹ต์ด ์—†๋‹ค..

Android os์—์„œ๋Š” hello world ์ฐ๋Š”๋ฐ 11๋งŒ๋ฒˆ์˜ functioncall์ด ์ผ์–ด๋‚จ

LLVM, GCC๋“ฑ์— ๋Œ€ํ•ด์„œ๋„ ๋” ์ž˜ ์•Œ๊ณ ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์— ๊ธฐ์—ฌ๋ฅผ ํ•˜๊ณ ์žˆ์Œ

uftrace๋ผ๋Š” ํˆด์„ ์ด์šฉํ•ด์„œ ๊ฐœ์ธ์˜ ๋ชฉ์ ์„ ์ด๋ฃจ๋Š” ๊ฒƒ ๋˜ํ•œ ์ข‹์€ ๊ธฐ์—ฌํ™œ๋™์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

2016๋…„์—๋Š” Rust๋กœ ์ฐธ์—ฌํ–ˆ์—ˆ๋‹ค. PR์„ ๋‚ ๋ ธ๋Š”๋ฐ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ณ ์•ก๊ณผ์™ธ๋ฅผ ๋ฐ›๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ์นœ์ ˆํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ์—ˆ๋‹ค.

๋น„์˜๋ฆฌ ํ™œ๋™์ด์ง€๋งŒ ๊ฐ€์น˜์žˆ๋Š” ์ผ

2. ์†กํƒœ์›… ๋ฉ˜ํ† ๋‹˜ - taeung@kosslab.kr

1) Opensource Software Development - ์˜คํ”ˆ์†Œ์Šค ๊ฐœ๋ฐœ ๋ฐฉ์‹์˜ ์ดํ•ด

๊ฐ์ข… ์˜คํ”ˆ์†Œ์Šค(OS, framework, lib)์˜ ๊ธฐ์ˆ ๋‚ด์šฉ์ด ์•„๋‹Œ ๊ฐœ๋ฐœ ๋งค์ปค๋‹ˆ์ฆ˜(์˜คํ”ˆ์†Œ์Šค ๊ฐœ๋ฐœ ๋ฐฉ์‹)

How to develop with Git? - Git์€ ํžˆ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ(log : ์™œ ํ–ˆ๋Š”๊ฐ€?, ๋ญ๊ฐ€ ๋‹ฌ๋ผ์กŒ๋Š”๊ฐ€?)

Git์€ Collaboration Tool - ํ˜‘์—…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•  ๊ฒƒ์ธ๊ฐ€?

rebase, blame ๋“ฑ์— ๋Œ€ํ•ด์„œ ํ˜‘์—…์œผ๋กœ์„œ์˜ ์ƒํ™ฉ์ƒ์˜ ๋ฐฐ๊ฒฝ์„ ์•Œ์•„์„œ ์ดํ•ดํ•ด์•ผ ํ•จ.

rebase๋ฅผ ์“ฐ๊ณ ์žˆ๋Š”๊ฑฐ ์ž์ฒด๊ฐ€ ํ˜‘์—…์„ ์—„์ฒญ ํ•˜๊ณ ์žˆ๋‹ค๋Š” ์ฆ๊ฑฐ

rebase : upstream์„ ์ซ“์•„๊ฐ€๋Š” ๊ฒƒ - ์ถฉ๋Œ๋‚˜๋Š” ์‹œ์ (fork ๋– ์„œ clone์„ ๋ฐ›๊ณ  Patch๋ฅผ ํ–ˆ๋Š”๋ฐ ๊ทธ์ƒˆ ๋‹ค๋ฅธ๊ฒŒ merge๊ฐ€ ๋˜์–ด์žˆ๋Š” ์ƒํ™ฉ -> upstream์˜ base๋ฅผ ๊ต์ฒดํ•˜๋Š”๊ฒŒ rebase) // ์ƒํ™ฉ์†์—์„œ ๊ฒช์–ด๋ด์•ผ์ง€ ๊ทธ๊ฑธ ์ง„์ •์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Œ

Commit ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰?

utfrace needs

gcc์— -pc์˜ต์…˜์„ ์ฃผ๋ฉด ๊ฐ๊ฐ์˜ ํ•จ์ˆ˜ ์ค‘๊ฐ„์— ncount functioncall ํ•˜๋Š”๊ฒƒ ์ฒ˜๋Ÿผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Œ

uftrace <- functioncall ์ถ”์  ๊ฐ€๋Šฅ, ์ฝ”๋“œ์˜ ํ˜ธ์ถœ ๋“ฑ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ // ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์งฐ์„ ๋•Œ ์ œ๋Œ€๋กœ ๋‚ด ์˜๋„๋Œ€๋กœ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ

callback์ด ๋งŽ์€๊ฒฝ์šฐ ํ˜น์€ event handler๊ฐ€ ๋งŽ์„๊ฒฝ์šฐ <- ์†Œ์Šค์ฝ”๋“œ๋งŒ ์ฝ๋Š”๊ฑฐ๋กค ์ดํ•ด๊ฐ€ ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

kernalfunction <- ์ธ์ž์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ

๊ฒฐ๊ณผ๋ฅผ json์œผ๋กœ ๋ฝ‘์•„๋‚ด์„œ chrome์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Œ // chrome://tracing

namhyung๋‹˜

์ปค๋„์— ๊ธฐ์—ฌ ํ•œ๊ตญ top, ํ•ด์™ธ์—์„œ๋„ ์ƒ์œ„๊ถŒ

์†Œ์Šค๊ฐ€ ์˜คํ”ˆ์ด ๋˜์–ด์žˆ๋Š”๊ฐ€์™€ ์˜คํ”ˆ์†Œ์Šค๋Š” ๋‹ค๋ฅด๋‹ค. ๋ฆฌ๋ทฐ์™€ discussion์ด ์žˆ๋Š”๊ฐ€ ์—†๋Š”๊ฐ€๊ฐ€ ์˜คํ”ˆ์†Œ์Šค๊ฐ€ ์‚ด์•„์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ค€

์ปค๋„์ชฝ ๋‚ด๊ณต์„ ๊ฐ€์ง€๊ณ  uftrace๋ฅผ ํ”„๋กœํŽ˜์…”๋„ํ•˜๊ฒŒ ์šด์˜ํ•˜๊ณ  ๊ณ„์‹ฌ

Honggyu Kim <- advancedํ•œ testcase๋ฅผ ์ž˜ ๋ฝ‘์•„๋‚ด์‹œ๊ณ  ํ•˜๋“œํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž˜ ํ•ด์ฃผ์‹ฌ(ex-etherium ๋“ฑ), ๋‹ค๋ฅธ ํˆด์—๋Œ€ํ•ด์„œ๋„ ์กฐ์˜ˆ๊ธฐ ๊นŠ์œผ์‹ฌ

๊ฐ€์น˜๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ = ์‹ค์งˆ์ ์ธ ๋‹ˆ์ฆˆ์— ๋”ฐ๋ผ ๊ตฌํ˜„

2) ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ uftrace: Pull request / Review ๊ณผ์ • ์˜ˆ์‹œ

๊ธฐ์—ฌ ์ข…๋ฅ˜ : 1. pull request / 2. documentation

pull request

๋‚ด๊ฐ€๋งŒ๋“  ์ปค๋ฐ‹์„ ์ œ์ถœํ•˜๋Š” ๊ฒƒ(๋‚จ์˜ ํ”„๋กœ์ ํŠธ์ผ ๊ฒฝ์šฐ) - github ์ž…์žฅ์—์„œ๋Š” issue์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฒŒ์‹œ๊ธ€ ํ•˜๋‚˜ ์˜ฌ๋ผ์˜ค๋Š”๊ฑฐ๋ž‘ ๊ฐ™์Œ

ex) Support a float time value for trigger

๋‚ด๊ฐ€ ๋งŒ๋“  ์ฝ”๋“œ์— ๋Œ€ํ•œ Description์˜ ์ „๋žต๋„ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋‹ค - ์ด๋Ÿฐ๊ฒƒ์— ๋Œ€ํ•ด ๋งŽ์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์„ ๊ฒƒ // ์–ด๋–ป๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์„ค๋“ํ•  ๊ฒƒ์ธ๊ฐ€?, ์™œํ–ˆ๋Š”์ง€ ์ ๋Š” ๊ฒƒ

ํ•˜์ง€๋งŒ ๋ฆฌ๋ทฐ์—๋Œ€ํ•ด์„œ ์–ด๋–ป๊ฒŒ ๋ฐ›์•„๋“ค์ด๋Š”์ง€๋„ ์ค‘์š” - ์ชฝํŒ”๋ ค ํ•  ๊ฒƒ์ธ๊ฐ€? ์•„๋‹ˆ๋ฉด ๋ฐฐ์šฐ๋Š” ์ž์„ธ๋กœ ๊ณ„์† ํ•ด๋‚˜๊ฐˆ ๊ฒƒ์ธ๊ฐ€? // ๋ฒ„์ „(๋ฆฌ๋ทฐ์ˆ˜)์ด ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก ๋ช…์˜ˆ๋กญ๊ฒŒ ์ƒ๊ฐํ•ด์•ผ ํ•จ

Issue - pr์ด๋ž‘ ์ƒ๊ธด๊ฑด ๋น„์Šทํ•˜๋‹ค but ๋ฒ„๊ทธ๋ฆฌํฌํŠธ

๋ฒ„๊ทธ์— ๋”ฐ๋ผ์„œ critical ๋ผ๋ฒจ์ด ๋ถ™์€๊ฑด ๋” ๋นจ๋ฆฌ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š”๊ฑธ ์•Œ๋ฆผ

๋ฌธ์ œ์ƒํ™ฉ์ด ๋งŒ๋“ค์–ด์กŒ๋˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ญ”์ง€ ์•Œ๋ ค์ค˜์•ผ ํ•จ

FYI <- for your information

๋ฉ”์ธํ…Œ์ด๋„ˆ๊ฐ€ ๋งŒ๋“  Issue -> Review ๋ผ๋ฒจ์ด ๋‹ฌ๋ฆผ ๊ทผ๋ฐ ์™œ? ๋ณดํ†ต์€ rfc๋ฅผ ๋‹ฌ์•„์„œ ๋…ผํ‰์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ

3) uftrace ์‹ค์Šต

sudo apt install libelf-dev

sudo dnf install elfutils-libelf-devel

git clone https://github.com/namhyung/uftrace.git

cd uftrace

make

sudo make install

tutorial - nmap //

** ์Šค์ผ€์ฅด๋ง์ด ์–ธ์ œ๋˜๋Š”์ง€๋„ ์•Œ ์ˆ˜ ์žˆ์Œ

3. ๊น€์žฌ์ค‘ ๋ฉ˜ํ† ๋‹˜

bsp(๋ฆฌ๋ˆ…์Šค ๋“œ๋ผ์ด๋ฒ„) / ํ˜„์žฌ๋Š” ์ฐจ๋Ÿ‰์šฉ

๋ฆฌ๋ˆ…์Šค ์ปค๋„์€ ๋น„์ฅฌ์–ผํ•˜์ง€ ์•Š๊ณ  ์˜ฌ๋“œํ•˜๊ณ  ๋ชจ๋“  ํŒจ์น˜๊ฐ€ ๋ฉ”์ผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ๋ชจ๋“ ๊ฒƒ์ด ํ…์ŠคํŠธ๋กœ ์ด๋ฃจ์–ด์ง // ๋ฌผ๋ก  ๋„ค์ด๋ฐ์ด๋‚˜ ๋ฃฐ ๋“ฑ์ด ์žˆ์Œ

๋„ˆ๋ฌด ์ซ„์ง€๋งˆ๋ผ


  • ๋ช…๋ น์–ด๋ฅผ ์น˜๋ฉด ํฌ๋กฌ์œผ๋กœ ํŠธ๋ ˆ์ด์‹ฑ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๋„๋ก ํ•˜๋Š” ์˜ต์…˜