ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ื•ื•ื™ ืงืึธื“, ืึธื“ืขืจ ืคืืจื•ื•ืืก ืื™ืš ื ื™ื˜ ืžืขืจ ื ื•ืฆืŸ ืคึผืึธื•ื•ืขืจืคึผืึธื™ื ื˜

ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ื•ื•ื™ ืงืึธื“, ืึธื“ืขืจ ืคืืจื•ื•ืืก ืื™ืš ื ื™ื˜ ืžืขืจ ื ื•ืฆืŸ ืคึผืึธื•ื•ืขืจืคึผืึธื™ื ื˜

ืื™ืš ื˜ืจืึทื›ื˜ืŸ ืื™ืš ื”ืึธื‘ืŸ ื’ืขื’ืขื‘ืŸ ื“ืึทื–ืึทื ื– ืคื•ืŸ ืคึผืจืขื–ืึทื ื˜ื™ื™ืฉืึทื ื– ืฆื• ืงืึธืœืขื’ืขืก, ืงืœื™ื™ืึทื ืฅ ืื•ืŸ ืฆื™ื‘ื•ืจ ืจืขื“ืŸ ืื™ืŸ ืžื™ื™ืŸ IT ืงืึทืจื™ืขืจืข. ืคึฟืึทืจ ืคื™ืœืข ื™ืึธืจืŸ, Powerpoint ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื ืึทื˜ื™ืจืœืขืš ืื•ืŸ ืคืึทืจืœืึธื–ืœืขืš ื‘ืจื™ืจื” ืคึฟืึทืจ ืžื™ืจ ื•ื•ื™ ืึท ืจื•ืง ืคึผืจืึธื“ื•ืงืฆื™ืข ื’ืขืฆื™ื™ึทื’. ืื‘ืขืจ ื“ืขื ื™ืึธืจ ื“ื™ ืกื™ื˜ื•ืึทืฆื™ืข ื”ืื˜ ื’ืขื‘ื™ื˜ืŸ ืงื•ื•ืึทืœืึทื˜ื™ื™ื˜ื™ื•ื•ืœื™. ืคื• ืŸ ืคืขื‘ืจื•ื ืจ ื‘ื™ ื– ืžืื™ , ื”ื ื‘ ืื™ ืš ื’ืขื”ื ื˜ ื“ ื™ ืžืขื’ืœืขื›ืงืฒ ื˜ ืฆ ื• ืจืขื“ืข ืŸ ืื•ื™ ืฃ ืคื™ื  ืฃ ืงืื ืคืขืจืขื ืฆืŸ , ืื• ืŸ ื“ ื™ ืจื•ืง ื˜ ืคื• ืŸ ื“ ื™ ืจืขืคืืจื˜ืŸ , ื”ื ื˜ ืžืข ืŸ ื’ืขืžื•ื– ื˜ ืฆื•ื’ืจืฒื˜ ืŸ ืื™ ืŸ ื ืงื•ืจืฆืข ืจ ืฆืฒื˜ , ืื‘ืข ืจ ืžื™ ื˜ ื”ื•ื™ื›ืข ืจ ืงืฐืืœื™ื˜ืขื˜ . ื“ื™ ืงืฉื™ื ืื™ื– ืื•ื™ืคื’ืขืฉื˜ืื ืขืŸ ื•ื•ืขื’ืŸ ื“ืขืœืึทื’ื™ื™ื˜ื™ื ื’ ื“ืขื ื˜ื™ื™ืœ ืคื•ืŸ ื“ืขืจ ืึทืจื‘ืขื˜ ื•ื•ืขื’ืŸ ื“ื™ ื•ื•ื™ื–ืฉืึทื•ื•ืึทืœ ืคึผืœืึทืŸ ืคื•ืŸ ื“ื™ ืกืœื™ื™ื“ื– ืฆื• ืื ื“ืขืจืข ืžืขื ื˜ืฉืŸ. ืื™ืš ื”ืื‘ ืืžืืœ ื’ืขืคืจื•ืื•ื•ื˜ ืฆื• ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื ื“ื™ื–ื™ื™ื ืขืจ, ืฉื™ืงืŸ .pptx ื˜ืขืงืขืก ื“ื•ืจืš ืคึผืึธืกื˜, ืึธื‘ืขืจ ื“ื™ ืึทืจื‘ืขื˜ ืื™ื– ื’ืขื•ื•ืืจืŸ ื›ืึทืึธืก: ืงื™ื™ืŸ ืื™ื™ื ืขืจ ื’ืขื•ื•ืื•ืกื˜ ื•ื•ืึธืก ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืกืœื™ื™ื“ื– ืื™ื– ื“ื™ "ื ื™ื™ึทืึทืกื˜", ืื•ืŸ ื“ืขืจ ืื•ื™ืกืœื™ื™ื’ ืื™ื– ื’ืขื•ื•ืขืŸ "ืžืึธื•ื•ื™ื ื’" ืจืขื›ื˜ ืฆื• ื“ืขืจ ื—ื™ืœื•ืง ืื™ืŸ ืคึผืึธื•ื•ืขืจืคึผืึธื™ื ื˜ ื•ื•ืขืจืกื™ืขืก ืื•ืŸ ืคืึทื ืฅ ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ืžืืฉื™ื ืขืŸ. ืื•ืŸ ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ืขืคึผืขืก ื ื™ื™ึท. ืื™ืš ื’ืขืคืจื•ืื•ื•ื˜ ืขืก, ืื•ืŸ ื–ื™ื ื˜ ื“ืขืžืึธืœื˜ ืื™ืš ื”ืึธื‘ืŸ ื ื™ืฉื˜ ื’ืขื“ืึทื ืง ื•ื•ืขื’ืŸ ื’ื™ื™ืŸ ืฆื•ืจื™ืง ืฆื• ืคึผืึธื•ื•ืขืจืคึผืึธื™ื ื˜.

ื•ื•ืึธืก ื˜ืึธืŸ ืžื™ืจ ื•ื•ืขืœืŸ

ืžื™ื˜ ืึท ื™ืึธืจ ืื•ืŸ ืึท ื”ืึทืœื‘ ืฆื•ืจื™ืง, ืื•ื ื“ื–ืขืจ ืคื™ืจืžืข ืคืืจืฉื˜ืืคื˜ ื ื™ืฆืŸ Word ืฆื• ืฉืึทืคึฟืŸ ืคึผืจื•ื™ืขืงื˜ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ, ื–ื™ื™ ื”ืึธื‘ืŸ ื’ืขืคึผืœืึธื ื˜ืขืจื˜ ื“ื™ ื–ืขืœื‘ืข ืคึผืจืึธื‘ืœืขืžืก: ื›ืึธื˜ืฉ Word ืื™ื– ื’ื•ื˜ ืคึฟืึทืจ ื˜ื™ื™ืคึผื™ื ื’ ืึท ืงืœื™ื™ืŸ ื“ืึธืงื•ืžืขื ื˜, ื•ื•ืขืŸ ื“ืขืจ ื‘ืึทื ื“ ื•ื•ืืงืกื˜, ืขืก ื–ืขื ืขืŸ ืฉื•ื•ืขืจื™ืงื™ื™ื˜ืŸ ืžื™ื˜ ืžื™ื˜ืึทืจื‘ืขื˜ ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ ื”ื•ื™ืš ืงื•ื•ืึทืœื™ื˜ืขื˜ ืื•ืŸ ื™ื•ื ืึทืคื™ื™ื“ ืคึผืœืึทืŸ. ืื•ื ื“ื–ืขืจ ื‘ืจื™ืจื” ืื™ื– ื’ืขืคืืœืŸ ืื•ื™ืฃ ืึทืกืกื™ ื“ืึธืงื˜ืึธืจ, ืื•ืŸ ืžื™ืจ ื”ืขืจื˜ ืงื™ื™ื ืžืืœ ื ื™ืฉื˜ ืื•ื™ืฃ ื–ื™ืš ืฆื• ืคืจื™ื™ืขืŸ ืคื•ืŸ ื“ืขื ืื•ื™ืกื•ื•ืืœ, ืื‘ืขืจ ื“ืืก ืื™ื– ื ื˜ืขืžืข ืคืืจ ื ื‘ืื–ื•ื ื“ืขืจืŸ ืืจื˜ื™ืงืœ. ืึทืจื•ื ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืžื™ืจ ื’ืขืœืขืจื ื˜ ื“ื™ ื™ืคืขืงื˜ื™ื•ื•ื ืึทืก ืคื•ืŸ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ DevOps ืคึผืจื™ื ืกืึทืคึผืึทืœื– ืคื•ืŸ "ืึทืœืฅ ื•ื•ื™ ืงืึธื“", ืึทื–ื•ื™ ื“ื™ ื‘ืจื™ืจื” ืคื•ืŸ ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ ืคึฟืึทืจ ื“ื™ ื ื™ื™ึทืข ื˜ืขื›ื ืึธืœืึธื’ื™ืข ืคึฟืึทืจ ืฉืืคืŸ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืกืœื™ื™ื“ื– ืื™ื– ื’ืขื•ื•ืขืŸ ื’ืึทื ืฅ ืงืœืึธืจ ื•ื•ื™ ื“ืขืจ ื˜ืึธื’:

  1. ื“ื™ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืžื•ื–ืŸ ื–ื™ื™ืŸ ืึท ืงืœืึธืจ ื˜ืขืงืกื˜ ื˜ืขืงืข ืื™ืŸ ืึท ืžืึทืจืงืึทืคึผ ืฉืคึผืจืึทืš.
  2. ืื•ื ื“ื–ืขืจ ืกืœื™ื™ื“ื– ื–ืขื ืขืŸ ื•ื•ืขื’ืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคึผืจืึทื“ื–ืฉืขืงืก, ืึทื–ื•ื™ ื“ื™ ืžืึทืจืงืึทืคึผ ื–ืึธืœ ืžืึทื›ืŸ ืขืก ื’ืจื™ื ื’ ืฆื• ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ, ืึธืŸ ืจื™ื–ืึธืจื˜ื™ื ื’ ืฆื• ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืกื™ืกื˜ืขืžืขืŸ
    • ืงืึธื“ ืคืจืึทื’ืžืึทื ืฅ ืžื™ื˜ ืกื™ื ื˜ืึทืงืก ื›ื™ื™ืœื™ื™ื˜ื™ื ื’,
    • ืคึผืฉื•ื˜ ื“ื™ื™ืึทื’ืจืึทืžื– ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ื“ื–ืฉื™ืึทืžืขื˜ืจื™ืง ืฉืึทืคึผืขืก ืคืืจื‘ื•ื ื“ืŸ ื“ื•ืจืš ืึทืจืึธื•ื–,
    • UML ื“ื™ื™ืึทื’ืจืึทืžื–, ืคืœืึธื•ื˜ืฉืึทืจืฅ ืื•ืŸ ืžืขืจ.
  3. ื“ื™ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืคึผืœืึทืŸ ืžื•ื–ืŸ ื–ื™ื™ืŸ ืกื˜ืึธืจื“ ืื™ืŸ ืึท ื•ื•ืขืจืกื™ืข ืงืึธื ื˜ืจืึธืœ ืกื™ืกื˜ืขื.
  4. ื•ื•ืึทืœืึทื“ื™ื™ืฉืึทืŸ ืื•ืŸ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืคื•ืŸ ืคืึทืจื˜ื™ืง ืกืœื™ื™ื“ื– ื–ืึธืœ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืื™ืŸ ืึท ืกื™ ืกื™ืกื˜ืขื.

ื”ื™ื™ึทื ื˜, ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ื™ืงืขืจื“ื™ืง ืึธืคึผืฆื™ืขืก ืคึฟืึทืจ ืฉืืคืŸ ืกืœื™ื™ื“ื– ืื™ืŸ ืžืึทืจืงืึทืคึผ ืฉืคึผืจืึทื›ืŸ: ืคึผืขืงืœ ื‘ื™ืžืขืจ ืคึฟืึทืจ LaTeX ืึธื“ืขืจ ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืคืจืึทืžืขื•ื•ืึธืจืงืก ืคึฟืึทืจ ืงืจื™ื™ื™ื˜ื™ื ื’ ืกืœื™ื™ื“ื– ื ื™ืฆืŸ HTML / CSS (ืจืขื•ื•ืขืึทืœื“ื–ืฉืก, ื‘ืึทืžืขืจืงื•ื ื’, deck.js ืื•ืŸ ืคื™ืœืข ืื ื“ืขืจืข).

ื›ืึธื˜ืฉ ืžื™ื™ืŸ ื ืฉืžื” ืœื™ื’ื˜ ืื™ืŸ ืœื™ื™ื˜ืขืงืก, ืžื™ื™ืŸ ืžื™ื™ื ื•ื ื’ ื“ื™ืงื˜ื™ื™ื˜ื™ื“ ืึทื– ื“ื™ ื‘ืจื™ืจื” ืคื•ืŸ ืึท ืœื™ื™ื–ื•ื ื’ ื•ื•ืึธืก ืื™ืš ื•ื•ืึธืœื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ื“ืขืจ ื‘ืœื•ื™ื– ืื™ื™ื ืขืจ ื–ืึธืœ ื–ื™ื™ืŸ ืื•ื™ืฃ ื“ื™ ื–ื™ื™ึทื˜ ืคื•ืŸ ืึท ืœื™ื™ื–ื•ื ื’ ื‘ืึทืงืึทื ื˜ ืฆื• ืึท ื‘ืจื™ื™ื˜ ืงืจื™ื™ึทื– ืคื•ืŸ ืžืขื ื˜ืฉืŸ. ื ื™ื˜ ืึทืœืขืžืขืŸ ื•ื•ื™ื™ืกื˜ LaTeX, ืื•ืŸ ืื•ื™ื‘ ื“ื™ื™ืŸ ื˜ืขื’ืœืขืš ืคื™ืจ ืื™ื– ื ื™ืฉื˜ ืฉื™ื™ืš ืฆื• ืฉืจื™ื™ื‘ืŸ ื•ื•ื™ืกื ืฉืืคื˜ืœืขื›ืข ืึทืจื˜ื™ืงืœืขืŸ, ืขืก ืื™ื– ืึทื ืœื™ื™ืงืœื™ ืฆื• ื”ืึธื‘ืŸ ืฆื™ื™ื˜ ืฆื• ื™ื™ึทื ื˜ื•ื ืงืขืŸ ื–ื™ืš ืื™ืŸ ื“ื™ ืจื™ื–ื™ืง, ื™ื ื˜ืจืึทืงืึทื˜ ื•ื•ืขืœื˜ ืคื•ืŸ ื“ืขื ืกื™ืกื˜ืขื.

ืึธื‘ืขืจ, ืžืึทืกื˜ืขืจื™ ืคื•ืŸ HTML / CSS ืื™ื– ื ื™ืฉื˜ ืคึผื•ื ืงื˜ ืึท ื•ื•ื™ื™ื“ืกืคึผืจืขื“ ื‘ืงื™ืขืก: ืื™ืš, ืœืžืฉืœ, ื‘ื™ืŸ ื•ื•ื™ื™ึทื˜ ืคื•ืŸ ื’ืึธืจ ื’ืขื ื™ื˜ ืื™ืŸ ืขืก. ืฆื•ืž ื’ืœื™ืง, ื“ืขืจ ืฉื•ื™ืŸ ื‘ืึทืงืึทื ื˜ AsciiDoctor ืงื•ืžื˜ ืฆื• ืจืึทื˜ืขื•ื•ืขืŸ: ืึท ืงืึทื ื•ื•ืขืจื˜ืขืจ ืึทืกืกื™ื™ื“ืึธืงื˜ืึธืจ-ืจืขื•ื•ืขืึทืœื™ื– ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืฉืึทืคึฟืŸ RevealJS ืกืœื™ื™ื“ื– ืžื™ื˜ AsciiDoctor ืžืึทืจืงืึทืคึผ. ืื•ืŸ ืขืก ืื™ื– ื’ืจื™ื ื’ ืฆื• ืœืขืจื ืขืŸ ืื•ืŸ ืฆื•ื˜ืจื™ื˜ืœืขืš ืคึฟืึทืจ ืึทืœืขืžืขืŸ!

ื•ื•ื™ ืฆื• ืงืึธื“ ืกืœื™ื™ื“ื–

ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื“ื™ ืขืกืึทื ืก ืคื•ืŸ ืงืึธื“ื™ืจื•ื ื’ ืกืœื™ื™ื“ื– ืื•ื™ืฃ AsciiDoctor, ื“ื™ ื™ื–ื™ืึทืกื˜ ื•ื•ืขื’ ืื™ื– ืฆื• ื’ืขื‘ืŸ ืกืคึผืขืฆื™ืคื™ืฉ ื‘ื™ื™ืฉืคื™ืœืŸ. ื“ื™ ื–ืขื ืขืŸ ืึทืœืข ืคื•ืŸ โ€‹โ€‹ืคืึทืงื˜ื™ืฉ ืกืœื™ื™ื“ื– ืื™ืš ื’ืขืžืื›ื˜ ืคึฟืึทืจ ืžื™ื™ืŸ ืงืึธื ืคึฟืขืจืขื ืฅ ืคึผืจืขื–ืึทื ื˜ื™ื™ืฉืึทื ื– ื“ืขื ื™ืึธืจ.

ื ืจื•ืง ืžื™ื˜ ืึท ื˜ื™ื˜ืœ ืื•ืŸ ืึท ืจืฉื™ืžื” ืื™ืŸ ื–ืื›ืŸ ืขืคืŸ ืื™ื™ื ืขืจ ื ืึธืš ื“ื™ ืื ื“ืขืจืข:

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

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

ื˜ืึทื›ืœืขืก

ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ื•ื•ื™ ืงืึธื“, ืึธื“ืขืจ ืคืืจื•ื•ืืก ืื™ืš ื ื™ื˜ ืžืขืจ ื ื•ืฆืŸ ืคึผืึธื•ื•ืขืจืคึผืึธื™ื ื˜

ื›ืขื“ืขืจ ืื•ืŸ ืžืงื•ืจ ืงืึธื“ ืกื ื™ืคึผืึทื˜ ืžื™ื˜ ืกื™ื ื˜ืึทืงืก ื›ื™ื™ืœื™ื™ื˜ื™ื ื’:

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

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

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

ื˜ืึทื›ืœืขืก

ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ื•ื•ื™ ืงืึธื“, ืึธื“ืขืจ ืคืืจื•ื•ืืก ืื™ืš ื ื™ื˜ ืžืขืจ ื ื•ืฆืŸ ืคึผืึธื•ื•ืขืจืคึผืึธื™ื ื˜

ืื™ืŸ ืฆื•ื’ืจื™ื™ื˜ื•ื ื’ ืคึฟืึทืจ ืึท ืฉืžื•ืขืก, ืงืึธื“ ื“ืขืžืึธืก ื“ื•ืจื›ื’ื™ื™ืŸ ืจื™ืคึผื™ื˜ื™ื“ ืจื™ื•ื•ื™ื–ืฉืึทื ื– ืื•ืŸ ื™ืžืคึผืจื•ื•ื•ืžืึทื ืฅ, ืึทื–ื•ื™ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ื’ืขืฉื•ื•ื™ื ื“ ื ืึธื›ืžืึทื›ืŸ ืื•ืŸ ืคึผืึทืคึผ ื“ื™ "ืจื•ื™ ืงืึธื“" ื’ืœื™ื™ึทืš ืื™ืŸ ืึท ืจื•ืง ืื™ื– ื™ื ื•ื•ืึทืœื™ืึทื‘ืึทืœ, ื™ื ืฉื•ืจื™ื ื’ ืึทื– ื“ื™ ื“ืขืžืึธ ืื™ื– ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ืึธืŸ ื–ืึธืจื’ ื•ื•ืขื’ืŸ ืกื™ื ื˜ืึทืงืก ื›ื™ื™ืœื™ื™ื˜ื™ื ื’.

ื˜ื™ื˜ืœ, ื’ืขืžืขืœ ืื•ืŸ ื˜ืขืงืกื˜ (ืื•ื™ืกืœื™ื™ื’ ืื•ื™ืฃ ื“ื™ ืจื•ืง ืื™ื– ื’ืขื˜ืืŸ ืื™ืŸ ืกืขืœื– ืึทืกืกื™ื™ื“ืึธืงื˜ืึธืจ ื˜ื™ืฉืŸ):

== Kafka Streams in Action

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

ื˜ืึทื›ืœืขืก

ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ื•ื•ื™ ืงืึธื“, ืึธื“ืขืจ ืคืืจื•ื•ืืก ืื™ืš ื ื™ื˜ ืžืขืจ ื ื•ืฆืŸ ืคึผืึธื•ื•ืขืจืคึผืึธื™ื ื˜

ืžืืœ ืึท ื˜ื™ื˜ืœ ืื™ื– ื ื™ื˜ ื“ืืจืฃ, ืื•ืŸ ืฆื• ืื™ืœื•ืกื˜ืจื™ืจืŸ ื“ื™ื™ืŸ ืคื•ื ื˜ ืื™ืจ ื ืึธืจ ื“ืึทืจืคึฟืŸ ืึท ืคื•ืœ ืคืึทืจืฉื˜ืขืœืŸ ื‘ื™ืœื“:

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

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

ื˜ืึทื›ืœืขืก

ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ื•ื•ื™ ืงืึธื“, ืึธื“ืขืจ ืคืืจื•ื•ืืก ืื™ืš ื ื™ื˜ ืžืขืจ ื ื•ืฆืŸ ืคึผืึธื•ื•ืขืจืคึผืึธื™ื ื˜

ืึธืคื˜ ืึท ื’ืขื“ืึทื ืง ื“ืึทืจืฃ ื–ื™ื™ืŸ ื’ืขืฉื˜ื™ืฆื˜ ื“ื•ืจืš ืึท ืคึผืฉื•ื˜ ื“ื™ืึทื’ืจืึทืžืข, ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ "ืกืงื•ื•ืขืจื– ืคืืจื‘ื•ื ื“ืŸ ื“ื•ืจืš ืึทืจืึธื•ื–." ืฆื•ืž ื’ืœื™ืง, 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;}
}
-----

ื˜ืึทื›ืœืขืก

ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ื•ื•ื™ ืงืึธื“, ืึธื“ืขืจ ืคืืจื•ื•ืืก ืื™ืš ื ื™ื˜ ืžืขืจ ื ื•ืฆืŸ ืคึผืึธื•ื•ืขืจืคึผืึธื™ื ื˜

ืื™ืŸ ื“ืขื ืคืึทืœ ื•ื•ืขืŸ ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ืงืขืคึผืœ ืื•ื™ืฃ ื“ื™ ืคื™ื’ื•ืจ, ื˜ื•ื™ืฉืŸ ื“ื™ ืจื™ื›ื˜ื•ื ื’ ืคื•ืŸ ื“ื™ ืคื™ื™ึทืœ, ืืื–"ื• ื•, ื“ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ื’ืœื™ื™ืš ืื™ืŸ ื“ื™ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืงืึธื“, ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ื‘ื™ืœื“ ืขืจื’ืขืฅ ืื•ืŸ ืจืขื™ื ืกืขืจื˜ื™ื ื’ ืขืก ืื™ืŸ ื“ื™ ืจื•ืง. ื“ืขื ื‘ืื˜ื™ื™ื˜ื™ืง ื™ื ืงืจื™ืกื™ื– ื“ื™ ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ืืจื‘ืขื˜ืŸ ืื•ื™ืฃ ืกืœื™ื™ื“ื–.

ื ืžืขืจ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ื‘ื™ื™ึทืฉืคึผื™ืœ:

== ะะตะฒะพัะฟั€ะพะธะทะฒะพะดะธะผะฐั ัะฑะพั€ะบะฐ
[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;}
}
-----

ื˜ืึทื›ืœืขืก

ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ื•ื•ื™ ืงืึธื“, ืึธื“ืขืจ ืคืืจื•ื•ืืก ืื™ืš ื ื™ื˜ ืžืขืจ ื ื•ืฆืŸ ืคึผืึธื•ื•ืขืจืคึผืึธื™ื ื˜

ื“ื•ืจืš ื“ืขื ื•ื•ืขื’, ืขืก ืื™ื– ื‘ืึทืงื•ื•ืขื ืฆื• ืขืงืกืคึผืขืจื™ืžืขื ื˜ ืžื™ื˜ Graphviz ืื•ืŸ ื“ื™ื‘ืึทื’ ื‘ื™ืœื“ืขืจ ืื•ื™ืฃ ื“ืขื ื‘ืœืึทื˜ ื’ืจืึทืคื™ืง ืึธื ืœื™ื™ืŸ.

ืฆื•ื ืกื•ืฃ, ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทืจื™ื™ึทื ืœื™ื™ื’ืŸ ืึท ืคืœืึธื•ื•ื˜ืฉืึทืจื˜, ืงืœืึทืก ื“ื™ืึทื’ืจืึทืžืข ืึธื“ืขืจ ืื ื“ืขืจืข ืกื˜ืึทื ื“ืขืจื“ื™ื™ื–ื“ ื“ื™ืึทื’ืจืึทืžืข ืื™ืŸ ืึท ืจื•ืง, ืืŸ ืื ื“ืขืจ ืกื™ืกื˜ืขื ื™ื ืึทื’ืจื™ื™ื˜ื™ื“ ืžื™ื˜ AsciiDoctor ืงืขื ืขืŸ ืงื•ืžืขืŸ ืฆื• ืจืึทื˜ืขื•ื•ืขืŸ, PlantUML. ืžื™ื™ึทืŸ ืงืึธืœืขื’ืข ื ื™ืงืึธืœืึทื™ ืคึผืึธื˜ืึทืฉื ื™ืงืึธื•ื• ื’ืขืฉืจื™ื‘ืŸ ื•ื•ืขื’ืŸ ื“ื™ ื‘ืจื™ื™ื˜ ืงื™ื™ืคึผืึทื‘ื™ืœืึทื˜ื™ื– ืคื•ืŸ PlantUML ื‘ืึทื–ื•ื ื“ืขืจ ืคึผืึธืกื˜ืŸ.

ื˜ื•ืจื ื™ื ื’ ื“ื™ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืคึผืจื•ื™ืขืงื˜ ืื™ืŸ ืงืึธื“ ืกื˜ืึธืจื“ ืื•ื™ืฃ ืึท ื•ื•ืขืจืกื™ืข ืงืึธื ื˜ืจืึธืœ ืกื™ืกื˜ืขื ืžืื›ื˜ ืขืก ืžืขื’ืœืขืš ืฆื• ืึธืจื’ืึทื ื™ื–ื™ืจืŸ ืฉืœืึธืก ืึทืจื‘ืขื˜ ืื•ื™ืฃ ื“ื™ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’, ืขืจืฉื˜ืขืจ ืคื•ืŸ ืึทืœืข, ืฆื• ื‘ืึทื–ื•ื ื“ืขืจ ื“ื™ ื˜ืึทืกืงืก ืคื•ืŸ ืงืจื™ื™ื™ื˜ื™ื ื’ ืื™ื ื”ืึทืœื˜ ืื•ืŸ ืคึผืœืึทืŸ. ื“ื™ ืคึผืœืึทืŸ ืคื•ืŸ ืกืœื™ื™ื“ื– (ืคืึทื ืฅ, ื‘ืึทืงื’ืจืึทื•ื ื“ื–, ื™ื ื“ืขื ืฅ) ืื™ืŸ RevealJS ืื™ื– ื“ื™ืกืงืจื™ื™ื‘ื“ ืžื™ื˜ CSS. ืžื™ื™ึทืŸ ืคืขืจื–ืขื ืœืขื›ืข ื‘ืงื™ืขืก ืžื™ื˜ CSS ืื™ื– ื‘ืขืกื˜ืขืจ ืงืึทื ื•ื•ื™ื™ื“ ื“ื•ืจืš ื“ืขื ื’ื™ืฃ - ืึธื‘ืขืจ ืขืก ืื™ื– ื ื™ืฉื˜ ืกืงืขืจื™ ื•ื•ืขืŸ ืขืก ื–ืขื ืขืŸ ืžืขื ื˜ืฉืŸ ื•ื•ืึธืก ืึทืจื‘ืขื˜ ืžื™ื˜ CSS ืคื™ืœ ืžืขืจ ื“ืขืงืกื˜ืขืจืึธื•ืกืœื™ ืื•ืŸ ืคืึทืกื˜ืขืจ ื•ื•ื™ ืžื™ืจ. ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ืขืก ื˜ื•ืจื ืก ืื•ื™ืก ืึทื– ืžื™ื˜ ืึท ืจืึทืคึผืึทื“ืœื™ ืึทืคึผืจืึธื•ื˜ืฉื™ื ื’ ื˜ืขืจืžื™ืŸ ืคึฟืึทืจ ืึท ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’, ืžื™ืจ ืงืขื ืขืŸ ืึทืจื‘ืขื˜ืŸ ืื•ื™ืฃ ืคืึทืจืฉื™ื“ืขื ืข ื˜ืขืงืขืก ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืกืœื™ ื“ื•ืจืš ื’ื™ื˜ ืื•ืŸ ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ืึท ื’ื™ื›ืงื™ื™ึทื˜ ืคื•ืŸ ืžื™ื˜ืึทืจื‘ืขื˜ ื•ื•ืึธืก ืื™ื– ืื•ืžืžืขื’ืœืขืš ื•ื•ืขืŸ ืฉื™ืงืŸ .ืคึผืคึผื˜ืงืก ื˜ืขืงืขืก ื“ื•ืจืš ืคึผืึธืกื˜.

ื‘ื•ื™ืขืŸ ืึท HTML ื‘ืœืึทื˜ ืžื™ื˜ ืกืœื™ื™ื“ื–

ืงืœืึธืจ ื˜ืขืงืกื˜ ืงื•ื•ืืœืŸ ื–ืขื ืขืŸ ื’ืจื•ื™ืก, ืึธื‘ืขืจ ื•ื•ื™ ื˜ืึธืŸ ืื™ืจ ืฆื•ื ื•ื™ืคื ืขืžืขืŸ ื–ื™ื™ ืื™ืŸ ื“ื™ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ื–ื™ืš?

AsciiDoctor ืื™ื– ืึท ืคึผืจื•ื™ืขืงื˜ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ Ruby, ืื•ืŸ ืขืก ื–ืขื ืขืŸ ืขื˜ืœืขื›ืข ื•ื•ืขื’ืŸ ืฆื• ืœื•ื™ืคืŸ ืขืก. ืขืจืฉื˜ืขืจ, ืื™ืจ ืงืขื ืขืŸ ื™ื ืกื˜ืึทืœื™ืจืŸ ื“ื™ Ruby ืฉืคึผืจืึทืš ืื•ืŸ ืœื•ื™ืคืŸ ืึทืกืกื™ื™ื“ืึธืงื˜ืึธืจ ื’ืœื™ื™ืš, ื•ื•ืึธืก ืื™ื– ืžื™ืกื˜ืึธืžืข ื“ื™ ืงืœืึธื•ืกืึทืกื˜ ื–ืึทืš ืฆื• Ruby ื“ืขื•ื•ืขืœืึธืคึผืขืจืก.

ืื•ื™ื‘ ืื™ืจ ื˜ืึธืŸ ื ื™ืฉื˜ ื•ื•ืขืœืŸ ืฆื• ื‘ืึทืœืึทื’ืึทืŸ ืžื™ื˜ ื™ื ืกื˜ืึธืœื™ื ื’ ืจื•ื‘ื™, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื“ื™ ื“ืึธืงืงืขืจ ื‘ื™ืœื“ ืึทืกืกื™ื™ื“ืึธืงื˜ืึธืจ / ื“ืึทืงืขืจ-ืึทืกืกื™ื™ื“ืึธืงื˜ืึธืจ, ืื™ืŸ ื•ื•ืึธืก, ื•ื•ืขืŸ ืœืึธื ื˜ืฉื˜, ืื™ืจ ืงืขื ืขืŸ ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ื˜ืขืงืข ืžื™ื˜ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืงื•ื•ืืœืŸ ื“ื•ืจืš VOLUME ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ืŸ ืึท ื’ืขื’ืขื‘ืŸ ืึธืจื˜.

ื“ื™ ืึธืคึผืฆื™ืข ืื™ืš ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ืงืขืŸ ื•ื™ืกืงื•ืžืขืŸ ืขืคึผืขืก ืื•ืžื’ืขืจื™ื›ื˜, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื“ื™ ืžืขืจืกื˜ ื‘ืึทืงื•ื•ืขื ืคึฟืึทืจ ืžื™ืจ ื•ื•ื™ ืึท Java ื“ืขื•ื•ืขืœืึธืคึผืขืจ. ืขืก ื˜ื•ื˜ ื ื™ืฉื˜ ื“ืึทืจืคืŸ ื™ื ืกื˜ืึทืœื™ืจื•ื ื’ ืคื•ืŸ ืจื•ื‘ื™ ืึธื“ืขืจ ื“ืึธืงืงืขืจ, ืึธื‘ืขืจ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื“ื–ืฉืขื ืขืจื™ื™ื˜ ืกืœื™ื™ื“ื– ืžื™ื˜ ืึท ืžืึทื•ื•ืขืŸ ืฉืจื™ืคื˜.

ื“ื™ ืคื•ื ื˜ ืื™ื– ืึทื– ื“ื™ ืคึผืจื•ื™ืขืงื˜ JRuby - ื“ื™ Java ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ Ruby ืฉืคึผืจืึทืš ืื™ื– ืึทื–ื•ื™ ื’ื•ื˜ ืึทื– ืขืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืœื•ื™ืคืŸ ื›ึผืžืขื˜ ืึทืœืฅ ื‘ืืฉืืคืŸ ืคึฟืึทืจ Ruby ืื™ืŸ ืึท Java ืžืึทืฉื™ืŸ, ืื•ืŸ AsciiDoctor ืื™ื– ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืžืขืจืกื˜ ืคึผืจืึธืกื˜ ื ื•ืฆืŸ ืคื•ืŸ JRuby.

Availability ืึทืกืกื™ื™ื“ืึธืงื˜ืึธืจ-ืžืึทื•ื•ืขืŸ-ืคึผืœืึทื’ื™ืŸ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื–ืึทืžืœืขืŸ AsciiDoctor ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ื•ื•ืึธืก ืื™ื– ื˜ื™ื™ืœ ืคื•ืŸ ืึท Java ืคึผืจื•ื™ืขืงื˜ (ื•ื•ืึธืก ืžื™ืจ ืึทืงื˜ื™ื•ื•ืœื™ ื ื•ืฆืŸ). ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, AsciiDoctor ืื•ืŸ JRuby ื–ืขื ืขืŸ ื“ืึทื•ื ืœืึธื•ื“ื™ื“ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื“ื•ืจืš Maven, ืื•ืŸ AsciiDoctor ืœื•ื™ืคื˜ ืื™ืŸ ื“ื™ JRuby ืกื•ื•ื™ื•ื•ืข: ืขืก ืื™ื– ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ ืขืคึผืขืก ืื•ื™ืฃ ื“ื™ ืžืึทืฉื™ืŸ! (ืขืงืกืงืœื•ื“ื™ื ื’ ืคึผืขืงืœ graphviz, ื•ื•ืึธืก ืื™ื– ื“ืืจืฃ ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื ื•ืฆืŸ GraphViz ืึธื“ืขืจ PlantUML ื’ืจืึทืคื™ืงืก.) ืคืฉื•ื˜ ืฉื˜ืขืœืŸ ื“ื™ื™ืŸ .ืึทื“ืึธืง ื˜ืขืงืขืก ืื™ืŸ ืึท ื˜ืขืงืข src/main/asciidoc/. ื“ืึธ ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ืึท ืคึผืึธืžื ื™ืงืงืึทืœืขืงื˜ื™ื ื’ ืกืœื™ื™ื“ื– ืžื™ื˜ ื“ื™ื™ืึทื’ืจืึทืžื–.

ื’ืขืจ ืกืœื™ื™ื“ื– ืฆื• ืคึผื“ืฃ

ื›ืึธื˜ืฉ ื“ื™ HTML ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืกืœื™ื™ื“ื– ืื™ื– ื’ืึทื ืฅ ื–ื™ืš-ื’ืขื ื•ื’, ืขืก ืื™ื– ื ืึธืš ื ื™ื™ื˜ื™ืง ืฆื• ื”ืึธื‘ืŸ ืึท ืคึผื“ืฃ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืกืœื™ื™ื“ื–. ืขืจืฉื˜ืขืจ, ืขืก ื›ืึทืคึผืึทื ื– ืึทื– ืื™ืŸ ืขื˜ืœืขื›ืข ืงืึทื ืคืจืึทื ืกืึทื– ื•ื•ืึธืก ื˜ืึธืŸ ื ื™ื˜ ื’ืขื‘ืŸ ื“ื™ ืจืขื“ื ืขืจ ื“ื™ ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ื–ื™ื™ืŸ ืื™ื™ื’ืŸ ืœืึทืคึผื˜ืึทืคึผ, ื–ื™ื™ ื“ืึทืจืคืŸ ืกืœื™ื™ื“ื– "ืฉื˜ืจืขื ื’ ืื™ืŸ ืคึผืคึผื˜ืงืก ืึธื“ืขืจ ืคึผื“ืฃ ืคึฟืึธืจืžืึทื˜," ืึธืŸ ื“ืขืจื•ื•ืึทืจื˜ืŸ ืึทื– ื–ื™ื™ ื–ืขื ืขืŸ ืื•ื™ืš ืื™ืŸ HTML. ืฆื•ื•ื™ื™ื˜ื ืก, ืขืก ืื™ื– ืึท ื’ื•ื˜ ืคืึธืจืขื ืฆื• ืฉื™ืงืŸ ื“ื™ ืึธืจื’ืึทื ื™ื™ื–ืขืจื– ืึทืŸ ืึทื ืขื“ื™ื˜ื™ื“ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ื™ืŸ ืกืœื™ื™ื“ื– ื•ื•ื™ ื–ื™ื™ ื–ืขื ืขืŸ ื’ืขื•ื•ื™ื–ืŸ ืื™ืŸ ื“ืขื ื‘ืึทืจื™ื›ื˜, ืื™ืŸ PDF ืคึฟืึธืจืžืึทื˜ ืคึฟืึทืจ ืืจื•ื™ืกื’ืขื‘ืŸ ื“ื™ ื˜ืขืงืข ืื™ืŸ ื“ื™ ืงืึธื ืคึฟืขืจืขื ืฅ ืžืึทื˜ืขืจื™ืึทืœืก.

ืฆื•ืž ื’ืœื™ืง, ื“ื™ Node.js ื ื•ืฆืŸ ื›ืึทื ื“ืึทืœื– ื“ืขื ืึทืจื‘ืขื˜. ื“ืขืงืงื˜ื™ื™ืคึผ, ื’ืขื‘ื•ื™ื˜ ืื•ื™ืฃ ื“ืขืจ ื‘ืื–ืข ืœื™ืึทืœืงืข - ืึธื˜ืึทืžื™ื™ืฉืึทืŸ ืกื™ืกื˜ืขืžืขืŸ ืคึฟืึทืจ ืึธื ืคื™ืจื•ื ื’ ื“ื™ ืงืจืึธื•ื ื‘ืœืขื˜ืขืจืขืจ. ืื™ืจ ืงืขื ืขืŸ ื’ืขืจ ืจืขื•ื•ืขืึทืœื“ื–ืฉืก ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืฆื• PDF ืžื™ื˜ ื“ื™ ื‘ืึทืคึฟืขืœ

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

ืฆื•ื•ื™ื™ ื˜ืจื™ืงืก ื•ื•ืขืŸ ืœืึธื ื˜ืฉื™ื ื’ ื“ืขืงื˜ื™ื™ืคึผ, ื•ื•ืึธืก ืžื™ืจ ื”ืึธื‘ืŸ ืฆื• ืงื•ืžืขืŸ ืึทืจื•ื™ืฃ ืžื™ื˜ ื“ื•ืจืš ืคึผืจืึธืฆืขืก ืื•ืŸ ื˜ืขื•ืช:

  • ื”ืึทื›ืœืึธื˜ืข ื“ื•ืจืš ืคึผืึทืจืึทืžืขื˜ืขืจ -s ืžื•ื–ืŸ ื–ื™ื™ืŸ ืกืคึผืขืกื™ืคื™ืขื“ ืžื™ื˜ ืึท ืฆื•ื•ื™ื™ืคืึธื•ืœื“ ื’ืจืขื ืขืฅ, ืึทื ื“ืขืจืฉ ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืคึผืจืึธื‘ืœืขืžืก ืžื™ื˜ ื“ื™ ืงืึทื ื•ื•ืขืจื–ืฉืึทืŸ ืจืขื–ื•ืœื˜ืึทื˜ืŸ

  • ืื™ืŸ ื“ื™ URL ืคื•ืŸ ื“ื™ HTML ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืคืึธืจืŸ ืึท ืคึผืึทืจืึทืžืขื˜ืขืจ ?fragments=true, ื•ื•ืึธืก ื•ื•ืขื˜ ืžืึทื›ืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืคึผื“ืฃ ื‘ืœืึทื˜ ืคึฟืึทืจ ื™ืขื“ืขืจ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ื™ืŸ ืจื•ืง (ืœืžืฉืœ, ืคื™ื ืฃ ื‘ืœืขื˜ืขืจ ืคึฟืึทืจ ืคื™ื ืฃ ืงื•ื™ืœ ื•ื•ื™ื™ื–ื˜ ืื•ื™ื‘ ื–ื™ื™ ื–ืขื ืขืŸ ื’ืขื•ื•ื™ื–ืŸ ืื™ื™ื ืขืจ ื ืึธืš ื“ื™ ืื ื“ืขืจืข). ื“ืึธืก ื•ื•ืขื˜ ืœืึธื–ืŸ ืื™ืจ ืฆื• ื ื•ืฆืŸ ืึทื–ืึท ืึท ืคึผื“ืฃ ืึทืœื™ื™ืŸ ื•ื•ื™ ืึท ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ื‘ืขืฉืึทืก ืึท ื‘ืึทืจื™ื›ื˜.

ืึธื˜ืึทืžืึทื˜ื™ืง ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืื•ืŸ ืืจื•ื™ืกื’ืขื‘ืŸ ืื•ื™ืฃ ื“ื™ ื•ื•ืขื‘

ืขืก ืื™ื– ื‘ืึทืงื•ื•ืขื ื•ื•ืขืŸ ืกืœื™ื™ื“ื– ื–ืขื ืขืŸ ืงืึทืžืคึผื™ื™ืœื“ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ื•ื•ืขืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ื–ืขื ืขืŸ ื’ืขืžืื›ื˜ ืื™ืŸ ื“ื™ ื•ื•ืขืจืกื™ืข ืงืึธื ื˜ืจืึธืœ ืกื™ืกื˜ืขื, ืื•ืŸ ืืคื™ืœื• ืžืขืจ ื‘ืึทืงื•ื•ืขื ื•ื•ืขืŸ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืงืึทืžืคึผื™ื™ืœื“ ืกืœื™ื™ื“ื– ื–ืขื ืขืŸ ืึทืจื™ื™ึทื ื’ืขืฉื™ืงื˜ ืื•ื™ืฃ ื“ื™ ืื™ื ื˜ืขืจื ืขื˜ ืคึฟืึทืจ ืฆื™ื‘ื•ืจ ื ื•ืฆืŸ. ืกืœื™ื™ื“ื– ืคื•ืŸ ื“ืขืจ ืื™ื ื˜ืขืจื ืขืฅ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื™ื™ื›ื˜ "ื’ืขืฉืคื™ืœื˜" ืื™ืŸ ืคืจืึธื ื˜ ืคื•ืŸ ืึท ื•ื™ืœืขื ืคื•ืŸ ืงื™ื™ืŸ ืžืึทืฉื™ืŸ ืงืึธื ื ืขืงื˜ืขื“ ืฆื• ื“ื™ ืื™ื ื˜ืขืจื ืขื˜ ืื•ืŸ ืึท ืคึผืจืึทื“ื–ืฉืขืงื˜ืขืจ.

ื–ื™ื ื˜ ืžื™ืจ ื ื•ืฆืŸ GitHub ืื™ืŸ ืื•ื ื“ื–ืขืจ ืึทืจื‘ืขื˜, ื“ื™ ื ืึทื˜ื™ืจืœืขืš ื‘ืจื™ืจื” ืคื•ืŸ ืึท ืกื™ ืกื™ืกื˜ืขื ืื™ื– ื˜ืจืึทื•ื•ื™ืกืกื™, ืื•ืŸ ืคึฟืึทืจ ื”ืึธืกื˜ื™ื ื’ ืคืึทืจื˜ื™ืง ืคึผืจืขื–ืึทื ื˜ื™ื™ืฉืึทื ื– - github.io. ื“ืขืจ ื’ืขื“ืึทื ืง ื”ื™ื ื˜ืขืจ github.io ืื™ื– ืึทื– ืงื™ื™ืŸ ืกื˜ืึทื˜ื™ืง ืื™ื ื”ืึทืœื˜ ืคึผืึธืกื˜ืขื“ ืฆื• ืึท ืฆื•ื•ื™ื™ึทื’ gh-pages ืคื•ืŸ ื“ื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜ ืื•ื™ืฃ GitHub, ืื™ื– ื‘ื ื™ืžืฆื ืื™ืŸ <ะฒะฐัˆะต ะธะผั>.gihub.io/<ะฒะฐัˆ ะฟั€ะพะตะบั‚>.

ื’ืึทื ืฅ TravisCI ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื˜ืขืงืข, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ ืงืึทืžืคึผื™ื™ืœื™ื ื’ ื“ื™ HTML ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ื‘ืœืึทื˜ ื ื™ืฆืŸ Maven, ืงืึทื ื•ื•ืขืจื˜ื™ื ื’ ืฆื• PDF ืžื™ื˜ ื“ืขืงื˜ื™ื™ืคึผ ืื•ืŸ ื•ืคึผืœืึธืึทื“ื™ื ื’ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืฆื• ืึท ืคืึธื“ืขื gh-pages ืคึฟืึทืจ ืืจื•ื™ืกื’ืขื‘ืŸ ืื•ื™ืฃ github.io, ืงื•ืงื˜ ื•ื•ื™ ืึทื–ื•ื™.

ืฆื• ื‘ื•ื™ืขืŸ ืึทื–ืึท ืึท ืคึผืจื•ื™ืขืงื˜ ืื•ื™ืฃ ื“ื™ TravisCI ื–ื™ื™ึทื˜, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ืกื•ื•ื™ื•ื•ืข ื•ื•ืขืจื™ืึทื‘ืึทืœื–

  • GH_REF - ื•ื•ืขืจื˜ ื•ื•ื™ github.com/inponomarev/csa-hb
  • GH_TOKEN - ื’ื™ื˜ื”ื•ื‘ ืึทืงืกืขืก ืกื™ืžืขืŸ. ืื™ืจ ืงืขื ืขืŸ ื‘ืึทืงื•ืžืขืŸ ืขืก ืคึฟื•ืŸ GitHub ืื™ืŸ ื“ื™ื™ืŸ ืคึผืจืึธืคื™ืœ ืกืขื˜ื˜ื™ื ื’ืก, ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืกืขื˜ื˜ื™ื ื’ืก -> ืคืขืจื–ืขื ืœืขื›ืข ืึทืงืกืขืก ื˜ืึธืงืขื ืก. ืื•ื™ื‘ ืื™ืจ ื•ืคึผืœืึธืึทื“ ืึท ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืฆื• ืึท ืฆื™ื‘ื•ืจ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™, ืคึฟืึทืจ ื“ืขื ืกื™ืžืขืŸ ืขืก ืื™ื– ื’ืขื ื•ื’ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ื‘ืœื•ื™ื– ืึทืงืกืขืก ืžื“ืจื’ื” "ืฆื•ื˜ืจื™ื˜ ืขืคื ื˜ืœืขืš ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื–".
  • GH_USER_EMAIL / GH_USER_NAME - ื ืึธืžืขืŸ / E- ื‘ืจื™ื•ื• ืคึผืึธืจ ืื•ื™ืฃ ื‘ื™ื›ืึทืฃ ืคื•ืŸ ื•ื•ืึธืก ื“ื™ ืฉื˜ื•ืคึผืŸ ืฆื• ื“ื™ ืคืึธื“ืขื ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ื•ืจื›ื’ืขืงืึธื›ื˜ gh-pages.

ืื–ื•ื™, ื™ืขื“ืขืจ ื™ื‘ืขืจื’ืขื‘ืŸ ืคื•ืŸ ื“ื™ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืงืึธื“ ืื•ื™ืฃ GitHub ืจืขื–ื•ืœื˜ืื˜ืŸ ืึทื– ื“ื™ ืกืœื™ื™ื“ื– ื•ื•ืขืจืŸ ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืจื™ื‘ื™ืœื˜ ืื™ืŸ HTML ืื•ืŸ ืคึผื“ืฃ ืคึฟืึธืจืžืึทื˜ื™ืจื•ื ื’ืขืŸ ืื•ืŸ ืฉื™ื™ึทืขืš-ื•ืคึผืœืึธืึทื“ืขื“ ืฆื• github.io. (ื“ืึธืš, ืื™ืจ ื–ืึธืœ ื ืึธืจ ื•ืคึผืœืึธืึทื“ ืฆื• github.io ื“ื™ ืคึผืจืขื–ืึทื ื˜ื™ื™ืฉืึทื ื– ืึทื– ืื™ืจ ืœืขืกืึธืฃ ื•ื•ื™ืœืŸ ืฆื• ืžืึทื›ืŸ ืขืคื ื˜ืœืขืš.)

ื‘ื™ื™ืฉืคื™ืœืŸ ืคื•ืŸ ืคืจืื™ืขืงื˜ืŸ

ืฆื•ื ืกื•ืฃ, ื“ืึธ ื–ืขื ืขืŸ ืœื™ื ืงืก ืฆื• ืึท ืคึผืึธืจ ืคื•ืŸ ื‘ื™ื™ืฉืคื™ืœืŸ ืคื•ืŸ ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืคึผืจืึทื“ื–ืฉืขืงืก ืžื™ื˜ ืงืึทืกื˜ืึทืžื™ื™ื–ื“ ืžืึทื•ื•ืขืŸ ืกืงืจื™ืคึผืก ืื•ืŸ CI ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึฟืึทืจ Travis-CI, ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืœืึธื•ื ื“ ืื•ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื•ื•ืขืŸ ืื™ืจ ืฉืึทืคึฟืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืคึผืจืขื–ืขื ื˜ื™ืจื•ื ื’ ืคึผืจืึทื“ื–ืฉืขืงืก:

ื–ื™ื™ึท ื’ืขื–ื•ื ื˜ ืคึผืึธื•ื•ืขืจืคึผืึธื™ื ื˜! ืื™ืš ื˜ืึธืŸ ื ื™ื˜ ื˜ืจืึทื›ื˜ืŸ ืื™ืš ื•ื•ืขื˜ ืงื™ื™ื ืžืึธืœ ื“ืึทืจืคึฟืŸ ืื™ืจ ืคึฟืึทืจ ื˜ืขื›ื ื™ืฉ ืคึผืจืขื–ืึทื ื˜ื™ื™ืฉืึทื ื– :)

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’