์ฝ”๋“œ๋กœ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋˜๋Š” ๋” ์ด์ƒ Powerpoint๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ 

์ฝ”๋“œ๋กœ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋˜๋Š” ๋” ์ด์ƒ Powerpoint๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ 

์ €๋Š” IT ๊ฒฝ๋ ฅ์„ ์Œ“์œผ๋ฉด์„œ ๋™๋ฃŒ, ๊ณ ๊ฐ์—๊ฒŒ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์„ ํ•˜๊ณ  ๊ณต๊ฐœ ์—ฐ์„ค์„ ์ˆ˜์‹ญ ๋ฒˆ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ˆ˜๋…„ ๋™์•ˆ Powerpoint๋Š” ์Šฌ๋ผ์ด๋“œ ์ œ์ž‘ ๋„๊ตฌ๋กœ์„œ ์ €์—๊ฒŒ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ์•ˆ์ •์ ์ธ ์„ ํƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ฌํ•ด ์ƒํ™ฉ์€ ์งˆ์ ์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค. XNUMX์›”๋ถ€ํ„ฐ XNUMX์›”๊นŒ์ง€ XNUMX๋ฒˆ์˜ ์ปจํผ๋Ÿฐ์Šค์—์„œ ์—ฐ์„คํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ์—ˆ๊ณ , ๋ณด๊ณ ์„œ์šฉ ์Šฌ๋ผ์ด๋“œ๋Š” ์งง์€ ์‹œ๊ฐ„ ๋‚ด์— ์ค€๋น„ํ•ด์•ผ ํ–ˆ์ง€๋งŒ ๋†’์€ ํ’ˆ์งˆ์„ ๊ฐ–์ถฐ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด๋“œ์˜ ์‹œ๊ฐ์  ๋””์ž์ธ์— ๊ด€ํ•œ ์ž‘์—… ์ค‘ ํ•ด๋‹น ๋ถ€๋ถ„์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์œ„์ž„ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์˜๋ฌธ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ํ•œ๋ฒˆ์€ ๋””์ž์ด๋„ˆ์™€ ํ•จ๊ป˜ ์ž‘์—…ํ•˜์—ฌ .pptx ํŒŒ์ผ์„ ๋ฉ”์ผ๋กœ ๋ณด๋‚ด๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์ž‘์—…์ด ํ˜ผ๋ž€์— ๋น ์กŒ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ๋ฒ„์ „์˜ ์Šฌ๋ผ์ด๋“œ๊ฐ€ "์ตœ์‹ "์ธ์ง€ ์•„๋ฌด๋„ ๋ชจ๋ฅด๊ณ  Powerpoint์˜ ์ฐจ์ด๋กœ ์ธํ•ด ๋ ˆ์ด์•„์›ƒ์ด "์›€์ง์ด๋Š”" ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ์ปดํ“จํ„ฐ์˜ ๋ฒ„์ „๊ณผ ๊ธ€๊ผด. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์‹œ๋„ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ–ˆ๊ณ  ๊ทธ ์ดํ›„๋กœ Powerpoint๋กœ ๋Œ์•„๊ฐˆ ์ƒ๊ฐ์€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฌด์—‡์„ ์›ํ•˜๋Š”๊ฐ€

์•ฝ XNUMX๋…„ ๋ฐ˜ ์ „์— ์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๋ฉด์„œ Word๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. Word๋Š” ์ž‘์€ ๋ฌธ์„œ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฐ๋Š” ์ข‹์ง€๋งŒ ์–‘์ด ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ ๊ณต๋™ ์ž‘์—…๊ณผ ๊ณ ํ’ˆ์งˆ ๋ฌธ์„œ ํ™•๋ณด์— ์–ด๋ ค์›€์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ†ต์ผ๋œ ๋””์ž์ธ. ์šฐ๋ฆฌ์˜ ์„ ํƒ์€ ๋–จ์–ด์กŒ๋‹ค Ascii์˜์‚ฌ, ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ์ด ์„ ํƒ์— ๋Œ€ํ•ด ๊ฒฐ์ฝ” ๊ธฐ๋ปํ•˜์ง€ ์•Š์ง€๋งŒ ์ด๊ฒƒ์€ ๋ณ„๋„์˜ ๊ธฐ์‚ฌ์— ๋Œ€ํ•œ ์ฃผ์ œ์ž…๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ์‹œ๊ธฐ์— ์šฐ๋ฆฌ๋Š” "๋ชจ๋“  ๊ฒƒ์„ ์ฝ”๋“œ๋กœ"๋ผ๋Š” DevOps ์›์น™ ์ค‘ ํ•˜๋‚˜์˜ ํšจ์œจ์„ฑ์„ ๋ฐฐ์› ์œผ๋ฏ€๋กœ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์Šฌ๋ผ์ด๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋ถ„๋ช…ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ํ”„๋ ˆ์  ํ…Œ์ด์…˜์€ ๋งˆํฌ์—… ์–ธ์–ด๋กœ ๋œ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํŒŒ์ผ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ์šฐ๋ฆฌ ์Šฌ๋ผ์ด๋“œ๋Š” ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ์— ๊ด€ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋งˆํฌ์—…์„ ์‚ฌ์šฉํ•˜๋ฉด ์™ธ๋ถ€ ์‹œ์Šคํ…œ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ ๋„ ์‰ฝ๊ฒŒ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๊ตฌ๋ฌธ ๊ฐ•์กฐ๊ฐ€ ํฌํ•จ๋œ ์ฝ”๋“œ ์กฐ๊ฐ,
    • ํ™”์‚ดํ‘œ๋กœ ์—ฐ๊ฒฐ๋œ ๊ธฐํ•˜ํ•™์  ๋ชจ์–‘์˜ ๊ฐ„๋‹จํ•œ ๋‹ค์ด์–ด๊ทธ๋žจ,
    • UML ๋‹ค์ด์–ด๊ทธ๋žจ, ์ˆœ์„œ๋„ ๋“ฑ.
  3. ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์ดˆ์•ˆ์€ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ์ €์žฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  4. ์™„์„ฑ๋œ ์Šฌ๋ผ์ด๋“œ์˜ ๊ฒ€์ฆ ๋ฐ ์กฐ๋ฆฝ์€ CI ์‹œ์Šคํ…œ์—์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ๋งˆํฌ์—… ์–ธ์–ด๋กœ ์Šฌ๋ผ์ด๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ๋Š” ๋‘ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋จธ LaTeX์šฉ ๋˜๋Š” HTML/CSS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šฌ๋ผ์ด๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ํ•˜๋‚˜(RevealJS, ๋น„๋‚œํ•˜๋‹ค, Deck.js ๊ทธ๋ฆฌ๊ณ  ๋งŽ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค).

๋‚ด ์˜ํ˜ผ์€ LaTeX์— ์žˆ์ง€๋งŒ, ๋‚˜๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์†”๋ฃจ์…˜์„ ์„ ํƒํ•  ๋•Œ๋Š” ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์นœ์ˆ™ํ•œ ์†”๋ฃจ์…˜์„ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ์ด LaTeX๋ฅผ ์•„๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ์ผ์ƒ ์—…๋ฌด๊ฐ€ ๊ณผํ•™ ๊ธฐ์‚ฌ ์ž‘์„ฑ๊ณผ ๊ด€๋ จ์ด ์—†๋‹ค๋ฉด ์ด ์‹œ์Šคํ…œ์˜ ๊ฑฐ๋Œ€ํ•˜๊ณ  ๋ณต์žกํ•œ ์„ธ๊ณ„์— ๋ชฐ์ž…ํ•  ์‹œ๊ฐ„์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ HTML/CSS๋ฅผ ์ˆ™๋‹ฌํ•˜๋Š” ๊ฒƒ์€ ๋„๋ฆฌ ๋ณด๊ธ‰๋œ ๊ธฐ์ˆ ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ €๋Š” HTML/CSS์— ์™„์ „ํžˆ ๋Šฅ์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์ด๋ฏธ ์นœ์ˆ™ํ•œ AsciiDoctor๊ฐ€ ๊ตฌ์ถœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. asciidoctor-revealjs AsciiDoctor ๋งˆํฌ์—…์„ ์‚ฌ์šฉํ•˜์—ฌ RevealJS ์Šฌ๋ผ์ด๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์šฐ๊ธฐ ์‰ฝ๊ณ  ๋ˆ„๊ตฌ๋‚˜ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

์Šฌ๋ผ์ด๋“œ ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•

AsciiDoctor์—์„œ ์ฝ”๋”ฉ ์Šฌ๋ผ์ด๋“œ์˜ ๋ณธ์งˆ์„ ์ดํ•ดํ•˜๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ๊ตฌ์ฒด์ ์ธ ์˜ˆ๋ฅผ ์ œ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์€ ๋ชจ๋‘ ์ œ๊ฐ€ ์˜ฌํ•ด ์ปจํผ๋Ÿฐ์Šค ํ”„๋ ˆ์  ํ…Œ์ด์…˜์„ ์œ„ํ•ด ๋งŒ๋“  ์‹ค์ œ ์Šฌ๋ผ์ด๋“œ์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ๋ชฉ๊ณผ ํ•ญ๋ชฉ ๋ชฉ๋ก์ด ์ฐจ๋ก€๋กœ ์—ด๋ฆฌ๋Š” ์Šฌ๋ผ์ด๋“œ:

== ะ—ะฐั‡ะตะผ ะฝะฐะผ Streams API?

[%step]
* Real-time stream processing
* Stream-like API (map / reduce)
* ะŸะพะด ะบะฐะฟะพั‚ะพะผ:
** ะะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธะน offset commit
** ะ ะตะฑะฐะปะฐะฝัะธั€ะพะฒะบะฐ
** ะ’ะฝัƒั‚ั€ะตะฝะฝะตะต ัะพัั‚ะพัะฝะธะต ะพะฑั€ะฐะฑะพั‚ั‡ะธะบะพะฒ
** ะ›ะตะณะบะพะต ะผะฐััˆั‚ะฐะฑะธั€ะพะฒะฐะฝะธะต

๊ฒฐ๊ณผ

์ฝ”๋“œ๋กœ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋˜๋Š” ๋” ์ด์ƒ Powerpoint๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ 

๊ตฌ๋ฌธ ๊ฐ•์กฐ๊ฐ€ ํฌํ•จ๋œ ํ—ค๋” ๋ฐ ์†Œ์Šค ์ฝ”๋“œ ์กฐ๊ฐ:

== Kafka Streams API: ะพะฑั‰ะฐั ัั‚ั€ัƒะบั‚ัƒั€ะฐ KStreams-ะฟั€ะธะปะพะถะตะฝะธั

[source,java]
----
StreamsConfig config = ...;
//ะ—ะดะตััŒ ัƒัั‚ะฐะฝะฐะฒะปะธะฒะฐะตะผ ะฒััะบะธะต ะพะฟั†ะธะธ

Topology topology = new StreamsBuilder()
//ะ—ะดะตััŒ ัั‚ั€ะพะธะผ ั‚ะพะฟะพะปะพะณะธัŽ
....build();
----

๊ฒฐ๊ณผ

์ฝ”๋“œ๋กœ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋˜๋Š” ๋” ์ด์ƒ Powerpoint๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ 

๊ฐ•์—ฐ์„ ์ค€๋น„ํ•˜๋ฉด์„œ ์ฝ”๋“œ ๋ฐ๋ชจ๋Š” ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜์ • ๋ฐ ๊ฐœ์„ ๋˜๋ฏ€๋กœ "์›์‹œ ์ฝ”๋“œ"๋ฅผ ์Šฌ๋ผ์ด๋“œ์— ์ง์ ‘ ๋น ๋ฅด๊ฒŒ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ๋Š” ๊ธฐ๋Šฅ์€ ๊ตฌ๋ฌธ ๊ฐ•์กฐ์— ๋Œ€ํ•œ ๊ฑฑ์ • ์—†์ด ๋ฐ๋ชจ๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ œ๋ชฉ, ๊ทธ๋ฆผ ๋ฐ ํ…์ŠคํŠธ(์Šฌ๋ผ์ด๋“œ์˜ ๋ ˆ์ด์•„์›ƒ์€ ์…€์—์„œ ์ˆ˜ํ–‰๋จ) AsciiDoctor ํ…Œ์ด๋ธ”):

== Kafka Streams in Action

[.custom-style]
[cols="30a,70a"]
|===
|image::KSIA.jpg[]
|
* **William Bejeck**, +
โ€œKafka Streams in Actionโ€, November 2018
* ะŸั€ะธะผะตั€ั‹ ะบะพะดะฐ ะดะปั Kafka 1.0
|===

๊ฒฐ๊ณผ

์ฝ”๋“œ๋กœ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋˜๋Š” ๋” ์ด์ƒ Powerpoint๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ 

์ œ๋ชฉ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋„ ์žˆ์œผ๋ฉฐ ์š”์ ์„ ์„ค๋ช…ํ•˜๋ ค๋ฉด ์ „์ฒด ํ™”๋ฉด ์ด๋ฏธ์ง€๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

[%notitle]
== ะ–ะธั‚ัŒ ะฒ ะปะตะณะฐัะธ ะฝะตะปะตะณะบะพ

image::swampman.jpg[canvas, size=cover]

๊ฒฐ๊ณผ

์ฝ”๋“œ๋กœ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋˜๋Š” ๋” ์ด์ƒ Powerpoint๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ 

์ข…์ข… ์•„์ด๋””์–ด๋Š” "ํ™”์‚ดํ‘œ๋กœ ์—ฐ๊ฒฐ๋œ ์‚ฌ๊ฐํ˜•" ํ˜•ํƒœ์˜ ๊ฐ„๋‹จํ•œ ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ๋’ท๋ฐ›์นจ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ AsciiDoctor๋Š” ์‹œ์Šคํ…œ๊ณผ ํ†ตํ•ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ๋น„์ฆˆ โ€” ์ •์ ๊ณผ ์ •์  ์‚ฌ์ด์˜ ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ทธ๋ž˜ํ”„ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค. Graphviz๋Š” ํ•™์Šต ๊ณก์„ ์„ ์ทจํ•˜์ง€๋งŒ ์ œ๊ณต๋œ ์˜ˆ์ œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉด ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค! ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

== ะŸะธัˆะตะผ โ€œBet Totalling Appโ€

ะšะฐะบะพะฒะฐ ััƒะผะผะฐ ะฒั‹ะฟะปะฐั‚ ะฟะพ ัะดะตะปะฐะฝะฝั‹ะผ ัั‚ะฐะฒะบะฐะผ, ะตัะปะธ ัั‹ะณั€ะฐะตั‚ ะธัั…ะพะด?

[graphviz, "counting-topology.png"]
-----
digraph G {
graph [ dpi = 150 ];
rankdir="LR";
node [fontsize=18; shape="circle"; fixedsize="true"; width="1.1"];
Store [shape="cylinder"; label="Local Store"; fixedsize="true"; width="1.5"]
Source -> MapVal -> Sum -> Sink
Sum -> Store [dir=both; label=" n "]
{rank = same; Store; Sum;}
}
-----

๊ฒฐ๊ณผ

์ฝ”๋“œ๋กœ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋˜๋Š” ๋” ์ด์ƒ Powerpoint๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ 

๊ทธ๋ฆผ์˜ ์บก์…˜ ํŽธ์ง‘, ํ™”์‚ดํ‘œ ๋ฐฉํ–ฅ ๋ณ€๊ฒฝ ๋“ฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ทธ๋ฆผ์„ ์–ด๋”˜๊ฐ€์— ๋‹ค์‹œ ๊ทธ๋ ค ์Šฌ๋ผ์ด๋“œ์— ๋‹ค์‹œ ์‚ฝ์ž…ํ•˜๋Š” ๋Œ€์‹  ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์ฝ”๋“œ์—์„œ ์ง์ ‘ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์Šฌ๋ผ์ด๋“œ ์ž‘์—… ์†๋„๊ฐ€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

๋” ๋ณต์žกํ•œ ์˜ˆ:

== ะะตะฒะพัะฟั€ะพะธะทะฒะพะดะธะผะฐั ัะฑะพั€ะบะฐ
[graphviz, "unstable-update.png"]
-----
digraph G {
  rankdir="LR";
  graph [ dpi = 150 ];
  u -> r0;
  u[shape=plaintext; label="linter updaten+ 13 warnings"]
  r0[shape=point, width = 0]
  r1 -> r0[ arrowhead = none, label="master branch" ];
  r0-> r2 [];   b1 -> b4;  r1->b1
  r1[label="150nwarnings"]
  b1[label="ยฑ 0nwarnings"]
  b4[label="ยฑ 0nwarnings"]
  b4->r2
  r2[label="163nwarnings", color="red", xlabel=<<font color="red">merge blocked</font>>]
  {rank = same; u; r0; b4;}
}
-----

๊ฒฐ๊ณผ

์ฝ”๋“œ๋กœ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋˜๋Š” ๋” ์ด์ƒ Powerpoint๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ 

๊ทธ๋Ÿฐ๋ฐ Graphviz๋ฅผ ์‹คํ—˜ํ•˜๊ณ  ํŽ˜์ด์ง€์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋””๋ฒ„๊ทธํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋น„์ฆˆ ์˜จ๋ผ์ธ.

๋งˆ์ง€๋ง‰์œผ๋กœ, ์ˆœ์„œ๋„, ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ๋˜๋Š” ๊ธฐํƒ€ ํ‘œ์ค€ํ™”๋œ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์Šฌ๋ผ์ด๋“œ์— ์‚ฝ์ž…ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ AsciiDoctor์™€ ํ†ตํ•ฉ๋œ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋žœํŠธUML. ๋‚ด ๋™๋ฃŒ Nikolai Potashnikov๋Š” PlantUML์˜ ๊ด‘๋ฒ”์œ„ํ•œ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ผ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ๊ฒŒ์‹œ๋ฌผ.

ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ์ €์žฅ๋œ ์ฝ”๋“œ๋กœ ์ „ํ™˜ํ•˜๋ฉด ํ”„๋ ˆ์  ํ…Œ์ด์…˜์— ๋Œ€ํ•œ ๊ณต๋™ ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๊ณ  ์šฐ์„  ์ฝ˜ํ…์ธ  ์ƒ์„ฑ ์ž‘์—…๊ณผ ๋””์ž์ธ ์ž‘์—…์„ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. RevealJS์˜ ์Šฌ๋ผ์ด๋“œ ๋””์ž์ธ(๊ธ€๊ผด, ๋ฐฐ๊ฒฝ, ๋“ค์—ฌ์“ฐ๊ธฐ)์€ CSS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค. CSS์— ๋Œ€ํ•œ ๋‚˜์˜ ๊ฐœ์ธ์ ์ธ ๊ธฐ์ˆ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ€์žฅ ์ž˜ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด gif - ํ•˜์ง€๋งŒ CSS๋ฅผ ์ €๋ณด๋‹ค ํ›จ์”ฌ ๋Šฅ์ˆ™ํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๋‹ค๋ฃจ๋Š” ๋ถ„๋“ค์ด ๊ณ„์‹œ๋‹ค๋ฉด ๋ฌด์„ญ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋งˆ๊ฐ์ผ์ด ๋น ๋ฅด๊ฒŒ ๋‹ค๊ฐ€์˜ค๋Š” ์ƒํ™ฉ์—์„œ Git์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ๋™์‹œ์— ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๊ณ , .pptx ํŒŒ์ผ์„ ๋ฉ”์ผ๋กœ ๋ณด๋‚ผ ๋•Œ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ํ˜‘์—… ์†๋„๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

์Šฌ๋ผ์ด๋“œ๋กœ HTML ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

์ผ๋ฐ˜ ํ…์ŠคํŠธ ์†Œ์Šค๋Š” ํ›Œ๋ฅญํ•˜์ง€๋งŒ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์ž์ฒด๋กœ ์–ด๋–ป๊ฒŒ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๊นŒ?

AsciiDoctor๋Š” Ruby๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ์ ํŠธ์ด๋ฉฐ ์ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, Ruby ์–ธ์–ด๋ฅผ ์„ค์น˜ํ•˜๊ณ  asciidoctor๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ์•„๋งˆ๋„ Ruby ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ผ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Ruby ์„ค์น˜๋ฅผ ๋ฐฉํ•ดํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด docker ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Asciidoctor/๋„์ปค-asciidoctor, ์‹คํ–‰ ์‹œ VOLUME์„ ํ†ตํ•ด ํด๋”๋ฅผ ํ”„๋กœ์ ํŠธ ์†Œ์Šค์™€ ์—ฐ๊ฒฐํ•˜๊ณ  ์ง€์ •๋œ ์œ„์น˜์—์„œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์„ ํƒํ•œ ์˜ต์…˜์€ ๋‹ค์†Œ ์˜์™ธ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ Java ๊ฐœ๋ฐœ์ž์ธ ๋‚˜์—๊ฒŒ๋Š” ๊ฐ€์žฅ ํŽธ๋ฆฌํ•œ ์˜ต์…˜์ด๋‹ค. Ruby๋‚˜ docker๋ฅผ ์„ค์น˜ํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ Maven ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šฌ๋ผ์ด๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์ ์€ ํ”„๋กœ์ ํŠธ๊ฐ€ JRuby - Ruby ์–ธ์–ด์˜ Java ๊ตฌํ˜„์€ ๋งค์šฐ ํ›Œ๋ฅญํ•˜์—ฌ Ruby์šฉ์œผ๋กœ ์ž‘์„ฑ๋œ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ Java ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ AsciiDoctor๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ JRuby์˜ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์šฉ๋„ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

๊ฐ€์šฉ์„ฑ asciidoctor-maven-ํ”Œ๋Ÿฌ๊ทธ์ธ Java ํ”„๋กœ์ ํŠธ(์šฐ๋ฆฌ๊ฐ€ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”)์˜ ์ผ๋ถ€์ธ AsciiDoctor ๋ฌธ์„œ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— AsciiDoctor์™€ JRuby๋Š” Maven์— ์˜ํ•ด ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋˜๊ณ  AsciiDoctor๋Š” JRuby ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋จธ์‹ ์— ์•„๋ฌด๊ฒƒ๋„ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค! (ํŒจํ‚ค์ง€ ์ œ์™ธ graphviz, GraphViz ๋˜๋Š” PlantUML ๊ทธ๋ž˜ํ”ฝ์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.) .adoc ํŒŒ์ผ์„ ํด๋”์— ๋„ฃ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. src/main/asciidoc/. ์—ฌ๊ธฐ์— ํผ๋‹‰์˜ ์˜ˆ๋‹ค์ด์–ด๊ทธ๋žจ์ด ํฌํ•จ๋œ ์Šฌ๋ผ์ด๋“œ๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.

์Šฌ๋ผ์ด๋“œ๋ฅผ PDF๋กœ ๋ณ€ํ™˜

์Šฌ๋ผ์ด๋“œ์˜ HTML ๋ฒ„์ „์€ ๋งค์šฐ ์ž๊ธ‰์ž์กฑ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์Šฌ๋ผ์ด๋“œ์˜ PDF ๋ฒ„์ „์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ, ๋ฐœํ‘œ์ž์—๊ฒŒ ์ž์‹ ์˜ ๋…ธํŠธ๋ถ์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ์ผ๋ถ€ ํšŒ์˜์—์„œ๋Š” ์Šฌ๋ผ์ด๋“œ๊ฐ€ HTML๋กœ๋„ ๋  ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š๊ณ  "์—„๊ฒฉํžˆ pptx ๋˜๋Š” pdf ํ˜•์‹"์˜ ์Šฌ๋ผ์ด๋“œ๋ฅผ ์š”๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜์งธ, ํšŒ์˜ ์ž๋ฃŒ์— ํŒŒ์ผ์„ ๊ฒŒ์‹œํ•˜๊ธฐ ์œ„ํ•ด ๋ณด๊ณ ์„œ์— ํ‘œ์‹œ๋œ ์Šฌ๋ผ์ด๋“œ์˜ ํŽธ์ง‘๋˜์ง€ ์•Š์€ ๋ฒ„์ „์„ PDF ํ˜•์‹์œผ๋กœ ์ฃผ์ตœ์ž์—๊ฒŒ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋‹คํ–‰ํžˆ Node.js ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์ด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐํฌํ…Œ์ดํ”„, ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ• ์ธํ˜•๊ทน โ€” Chrome ๋ธŒ๋ผ์šฐ์ € ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ž๋™ํ™” ์‹œ์Šคํ…œ. ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ RevealJS ํ”„๋ ˆ์  ํ…Œ์ด์…˜์„ PDF๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

node decktape.js -s 3200x1800 --slides 1-500 
  reveal "file:///index.html?fragments=true" slides.pdf  

๋ฐํฌํ…Œ์ดํ”„๋ฅผ ์ถœ์‹œํ•  ๋•Œ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฑฐ์ณ ๊ณ ์•ˆํ•ด์•ผ ํ–ˆ๋˜ ๋‘ ๊ฐ€์ง€ ํŠธ๋ฆญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•œ ๋ถ„ํ•ด๋Šฅ -s ๋‘ ๋ฐฐ์˜ ์—ฌ๋ฐฑ์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ณ€ํ™˜ ๊ฒฐ๊ณผ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ”„๋ ˆ์  ํ…Œ์ด์…˜์˜ HTML ๋ฒ„์ „ URL์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ?fragments=true๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์Šฌ๋ผ์ด๋“œ์˜ ๊ฐ ์ค‘๊ฐ„ ์ƒํƒœ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ PDF ํŽ˜์ด์ง€๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(์˜ˆ๋ฅผ ๋“ค์–ด ์ฐจ๋ก€๋Œ€๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ ๊ธ€๋จธ๋ฆฌ ๊ธฐํ˜ธ XNUMX๊ฐœ์— ๋Œ€ํ•ด XNUMXํŽ˜์ด์ง€). ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ณด๊ณ ์„œ ์ค‘์— ํ•ด๋‹น PDF๋ฅผ ํ”„๋ฆฌ์  ํ…Œ์ด์…˜์œผ๋กœ ์ž์ฒด์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›น์— ์ž๋™ ์กฐ๋ฆฝ ๋ฐ ๊ฒŒ์‹œ

๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์Šฌ๋ผ์ด๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ์ปดํŒŒ์ผ๋˜๋ฉด ํŽธ๋ฆฌํ•˜๊ณ , ์ž๋™์œผ๋กœ ์ปดํŒŒ์ผ๋œ ์Šฌ๋ผ์ด๋“œ๋ฅผ ์ธํ„ฐ๋„ท์— ์˜ฌ๋ ค ๊ณต๊ฐœํ•˜๋ฉด ๋”์šฑ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท์˜ ์Šฌ๋ผ์ด๋“œ๋Š” ์ธํ„ฐ๋„ท๊ณผ ํ”„๋กœ์ ํ„ฐ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๊ธฐ๊ณ„์—์„œ ์ฒญ์ค‘ ์•ž์—์„œ ์‰ฝ๊ฒŒ "์žฌ์ƒ"๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ž‘์—…์— GitHub๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— CI ์‹œ์Šคํ…œ์˜ ์ž์—ฐ์Šค๋Ÿฌ์šด ์„ ํƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํŠธ๋ž˜๋น„์Šค CI๋ฐ ๊ธฐ์„ฑ ํ”„๋ ˆ์  ํ…Œ์ด์…˜์„ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ ์œ„ํ•ด - github.io. github.io์˜ ๊ธฐ๋ณธ ์•„์ด๋””์–ด๋Š” ๋ชจ๋“  ์ •์  ์ฝ˜ํ…์ธ ๊ฐ€ ๋ธŒ๋žœ์น˜์— ๊ฒŒ์‹œ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. gh-pages GitHub์˜ ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <ะฒะฐัˆะต ะธะผั>.gihub.io/<ะฒะฐัˆ ะฟั€ะพะตะบั‚>.

Maven์„ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€์˜ HTML ๋ฒ„์ „์„ ์ปดํŒŒ์ผํ•˜๊ณ , Decktape๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PDF๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์Šค๋ ˆ๋“œ์— ์—…๋กœ๋“œํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•˜์—ฌ ์™„์ „ํ•œ TravisCI ๊ตฌ์„ฑ ํŒŒ์ผ gh-pages github.io์— ๊ฒŒ์‹œํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ.

TravisCI ์ธก์—์„œ ์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๋ ค๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • GH_REF โ€” github.com/inponomarev/csa-hb์™€ ๊ฐ™์€ ๊ฐ’
  • GH_TOKEN โ€” GitHub ์•ก์„ธ์Šค ํ† ํฐ. ํ”„๋กœํ•„ ์„ค์ •, ๊ฐœ๋ฐœ์ž ์„ค์ • -> ๊ฐœ์ธ ์•ก์„ธ์Šค ํ† ํฐ์˜ GitHub์—์„œ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ์  ํ…Œ์ด์…˜์„ ๊ณต๊ฐœ ์ €์žฅ์†Œ์— ์—…๋กœ๋“œํ•˜๋Š” ๊ฒฝ์šฐ ์ด ํ† ํฐ์— ๋Œ€ํ•ด "๊ณต์šฉ ์ €์žฅ์†Œ ์•ก์„ธ์Šค" ์•ก์„ธ์Šค ์ˆ˜์ค€๋งŒ ์ง€์ •ํ•˜๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  • GH_USER_EMAIL / GH_USER_NAME โ€” ์Šค๋ ˆ๋“œ์— ๋Œ€ํ•œ ํ‘ธ์‹œ๊ฐ€ ์ˆ˜ํ–‰๋  ์ด๋ฆ„/์ด๋ฉ”์ผ ์Œ gh-pages.

๋”ฐ๋ผ์„œ GitHub์—์„œ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•  ๋•Œ๋งˆ๋‹ค ์Šฌ๋ผ์ด๋“œ๊ฐ€ HTML ๋ฐ PDF ํ˜•์‹์œผ๋กœ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑ๋˜๊ณ  github.io์— ๋‹ค์‹œ ์—…๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. (๋ฌผ๋ก , ๊ถ๊ทน์ ์œผ๋กœ ๊ณต๊ฐœํ•˜๊ณ  ์‹ถ์€ ํ”„๋ ˆ์  ํ…Œ์ด์…˜๋งŒ github.io์— ์—…๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

ํ”„๋กœ์ ํŠธ์˜ ์˜ˆ

๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค์Œ์€ ์‚ฌ์šฉ์ž ์ •์˜ Maven ์Šคํฌ๋ฆฝํŠธ์™€ Travis-CI์šฉ CI ๊ตฌ์„ฑ์ด ํฌํ•จ๋œ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ํ”„๋กœ์ ํŠธ์˜ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์— ๋Œ€ํ•œ ๋งํฌ์ž…๋‹ˆ๋‹ค. ์ด ๋งํฌ๋Š” ์ž์‹ ๋งŒ์˜ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ๋ณต์ œํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์›Œํฌ์ธํŠธ ์•ˆ๋…•! ๊ธฐ์ˆ  ํ”„๋ ˆ์  ํ…Œ์ด์…˜์— ๋‹น์‹ ์ด ํ•„์š”ํ•˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์•„์š” :)

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€