IT ã®ãã£ãªã¢ã®äžã§ãååã顧客ã«å¯ŸããŠãã¬ãŒã³ããŒã·ã§ã³ãè¡ã£ããã人åã§è¬æŒãããããããšã¯æ°ååãããšæããŸãã é·å¹Žã«ããããPowerPoint ã¯ã¹ã©ã€ãäœæããŒã«ãšããŠç§ã«ãšã£ãŠèªç¶ã§ä¿¡é Œã§ããéžæè¢ã§ããã ãããä»å¹Žã¯ç¶æ³ã質çã«å€ãã£ãã XNUMXæããXNUMXæã«ãããŠXNUMXã€ã®åŠäŒã§è¬æŒããæ©äŒããããå ±åçšã®ã¹ã©ã€ãã¯çæéã§ãããã質ã®é«ããã®ãäœæããå¿ èŠããããŸããã ã¹ã©ã€ãã®èŠèŠçãªãã¶ã€ã³ã«é¢ããäœæ¥ã®éšåãä»ã®äººã«å§ä»»ããããšã«ã€ããŠçåãçããŸããã 以åããã¶ã€ããŒãšååã㊠.pptx ãã¡ã€ã«ãã¡ãŒã«ã§éä¿¡ããããšããããšããããŸããããäœæ¥ã¯æ··ä¹±ã«é¥ããŸãããã©ã®ããŒãžã§ã³ã®ã¹ã©ã€ãããææ°ãã§ããã誰ãããããããã¯ãŒãã€ã³ãã®éãã«ããã¬ã€ã¢ãŠãããåããŠãããŸããŸãããç§ãã¡ã®ãã·ã³äžã®ããŒãžã§ã³ãšãã©ã³ãã ãããŠãäœãæ°ããããšãè©ŠããŠã¿ãããšã«ããŸããã ç§ã¯ãããè©ŠããŠã¿ãŸãããããã以æ¥ãPowerPoint ã«æ»ãããšã¯èããŠããŸããã
ç§éã¯äœã欲ããã®ã
çŽ XNUMX 幎ååãåœç€Ÿã¯åãåé¡ã«çŽé¢ããããããããžã§ã¯ã ããã¥ã¡ã³ãã®äœæã« Word ã䜿çšããã®ããããŸãããWord ã¯å°ããªããã¥ã¡ã³ããå
¥åããã®ã«ã¯é©ããŠããŸãããéãå¢ãããšãã³ã©ãã¬ãŒã·ã§ã³ãé«å質ã®ããã¥ã¡ã³ãã®å
¥æãå°é£ã«ãªããŸããçµ±äžããããã¶ã€ã³ã ç§ãã¡ã®éžæã¯åœãã£ã
- ãã¬ãŒã³ããŒã·ã§ã³ã¯ããŒã¯ã¢ããèšèªã®ãã¬ãŒã³ ããã¹ã ãã¡ã€ã«ã§ããå¿ èŠããããŸãã
- ç§ãã¡ã®ã¹ã©ã€ãã¯éçºãããžã§ã¯ãã«é¢ãããã®ã§ãããããå€éšã·ã¹ãã ã«é Œããã«ããŒã¯ã¢ãããç°¡åã«æ¿å
¥ã§ããããã«ããå¿
èŠããããŸãã
- æ§æã匷調衚瀺ããã³ãŒããã©ã°ã¡ã³ãã
- ç¢å°ã§çµã°ãã幟äœåŠç圢ç¶ã®åçŽãªå³ã
- UML å³ããããŒãã£ãŒããªã©ã
- ãã¬ãŒã³ããŒã·ã§ã³ã®ãã©ããã¯ããŒãžã§ã³ç®¡çã·ã¹ãã ã«ä¿åããå¿ èŠããããŸãã
- å®æããã¹ã©ã€ãã®æ€èšŒãšçµã¿ç«ãŠã¯ CI ã·ã¹ãã ã§è¡ãå¿ èŠããããŸãã
çŸåšãããŒã¯ã¢ããèšèªã§ã¹ã©ã€ããäœæããã«ã¯ XNUMX ã€ã®åºæ¬çãªãªãã·ã§ã³ããããŸãã ããã±ãŒãž
ç§ã®é㯠LaTeX ã«ãããŸãããç§ã®å¿ã®äžã§ã¯ãç§ã ãã䜿çšããã®ã§ã¯ãªããããå€ãã®äººã ã«éŠŽæã¿ã®ãããœãªã¥ãŒã·ã§ã³ãéžæããå¿ èŠããããšèããŸããã 誰ãã LaTeX ãç¥ã£ãŠããããã§ã¯ãããŸããããŸããæ¥åžžæ¥åãç§åŠè«æã®å·çã«é¢ä¿ããŠããªãå Žåããã®ã·ã¹ãã ã®å·šå€§ã§è€éãªäžçã«æ²¡é ããæéã¯ãããããããŸããã
ãã ããHTML/CSS ãç¿åŸããããšã¯å¿
ãããåºãæ®åããŠããã¹ãã«ã§ã¯ãããŸãããããšãã°ãç§ã¯ HTML/CSS ã«å®å
šã«ç¿çããŠãããšã¯èšããŸããã 幞ããªããšã«ããã§ã«ããªãã¿ã® 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 ã¯ã·ã¹ãã ã«çµ±åãããŠããŸã
== ÐОÑеЌ â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 ãšçµ±åãããå¥ã®ã·ã¹ãã ã圹ã«ç«ã¡ãŸãã
ãã¬ãŒã³ããŒã·ã§ã³ ãããžã§ã¯ããããŒãžã§ã³ç®¡çã·ã¹ãã ã«ä¿åãããã³ãŒãã«å€æãããšããã¬ãŒã³ããŒã·ã§ã³ã«é¢ããå
±åäœæ¥ãçµç¹ãããŸãã³ã³ãã³ãäœæãšãã¶ã€ã³ã®ã¿ã¹ã¯ãåé¢ããããšãã§ããŸãã RevealJS ã®ã¹ã©ã€ãã®ãã¶ã€ã³ïŒãã©ã³ããèæ¯ãã€ã³ãã³ãïŒã¯ CSS ã䜿çšããŠèšè¿°ãããŸãã CSS ã«é¢ããç§ã®å人çãªã¹ãã«ãæãããäŒããã®ã¯ã
ã¹ã©ã€ããå«ã HTML ããŒãžã®æ§ç¯
ãã¬ãŒã³ ããã¹ã ãœãŒã¹ã¯çŽ æŽãããã§ãããããããã¬ãŒã³ããŒã·ã§ã³èªäœã«ã©ã®ããã«ã³ã³ãã€ã«ããŸãã?
AsciiDoctor 㯠Ruby ã§æžããããããžã§ã¯ãã§ããããããå®è¡ããã«ã¯ããã€ãã®æ¹æ³ããããŸãã ãŸããRuby èšèªãã€ã³ã¹ããŒã«ã㊠asciidoctor ãçŽæ¥å®è¡ã§ããŸããããã¯ãããããRuby éçºè ã«ãšã£ãŠæãè¿ãæ¹æ³ã§ãã
Ruby ã®ã€ã³ã¹ããŒã«ã«æéããããããªãå Žåã¯ãdocker ã€ã¡ãŒãžã䜿çšã§ããŸãã
ç§ãéžæãããªãã·ã§ã³ã¯ããäºæ³å€ã«æãããããããŸããããJava éçºè ãšããŠã¯ãããæã䟿å©ã§ãã Ruby ã Docker ã®ã€ã³ã¹ããŒã«ã¯å¿ èŠãããŸããããMaven ã¹ã¯ãªããã䜿çšããŠã¹ã©ã€ããçæã§ããŸãã
ãã€ã³ããšãªãã®ã¯ããã®ãããžã§ã¯ãã
å¯çšæ§ graphviz
ããã¯ãGraphViz ãŸã㯠PlantUML ã°ã©ãã£ãã¯ã¹ã䜿çšããå Žåã«å¿
èŠã§ãã) .adoc ãã¡ã€ã«ããã©ã«ããŒã«é
眮ããã ãã§ãã src/main/asciidoc/
ã ããã«
ã¹ã©ã€ãã PDF ã«å€æãã
ã¹ã©ã€ãã® HTML ããŒãžã§ã³ã¯ååã«ååã§ãããã¹ã©ã€ãã® PDF ããŒãžã§ã³ãå¿ èŠã§ãã ãŸããè¬æŒè ã«èªåã®ã©ããããããæ¥ç¶ããæ©äŒãäžããããªãäžéšã®ã«ã³ãã¡ã¬ã³ã¹ã§ã¯ãã¹ã©ã€ãã HTML 圢åŒã§ããããšãæåŸ ããã«ããå³å¯ã« pptx ãŸã㯠pdf 圢åŒãã§èŠæ±ãããããšããããŸãã 次ã«ãäŒè°è³æã§ãã¡ã€ã«ãå ¬éããããã«ãã¬ããŒãã§è¡šç€ºãããã¹ã©ã€ãã®æªç·šéããŒãžã§ã³ã PDF 圢åŒã§äž»å¬è ã«éä¿¡ããã®ãè¯ãæ¹æ³ã§ãã
幞ããªããšã«ãNode.js ãŠãŒãã£ãªãã£ããã®ã¿ã¹ã¯ãåŠçããŸãã
node decktape.js -s 3200x1800 --slides 1-500
reveal "file:///index.html?fragments=true" slides.pdf
ãããããŒããç«ã¡äžããéã«è©Šè¡é¯èª€ããŠèŠã€ããXNUMXã€ã®ã³ãã
-
ãã©ã¡ãŒã¿ã«ãã解å床
-s
XNUMX åã®ããŒãžã³ãæã£ãŠæå®ããå¿ èŠããããŸããããããªããšãå€æçµæã«åé¡ãçºçããå¯èœæ§ããããŸãã -
ãã¬ãŒã³ããŒã·ã§ã³ã® HTML ããŒãžã§ã³ã® URL ã§ã¯ãã©ã¡ãŒã¿ãæž¡ãå¿ èŠããããŸã
?fragments=true
, ããã«ãããã¹ã©ã€ãã®äžéç¶æ ããšã«åå¥ã® PDF ããŒãžãäœæãããŸã (ããšãã°ãç®æ¡æžãã次ã ã«è¡šç€ºãããå Žåã¯ãXNUMX ã€ã®ç®æ¡æžãã«å¯Ÿã㊠XNUMX ããŒãž)ã ããã«ããããã®ãã㪠PDF ãã¬ããŒãäžã®ãã¬ãŒã³ããŒã·ã§ã³ãšããŠåç¬ã§äœ¿çšã§ããããã«ãªããŸãã
èªåçµã¿ç«ãŠãšWebäžã§ã®å ¬é
ããŒãžã§ã³ç®¡çã·ã¹ãã ã«å€æŽãå ãããããšãã«ã¹ã©ã€ããèªåçã«ã³ã³ãã€ã«ããããšäŸ¿å©ã§ãããèªåã§ã³ã³ãã€ã«ãããã¹ã©ã€ããã€ã³ã¿ãŒãããäžã«å ¬éãããŠå ¬éããããšããã«äŸ¿å©ã§ãã ã€ã³ã¿ãŒãããããã®ã¹ã©ã€ãã¯ãã€ã³ã¿ãŒãããã«æ¥ç¶ãããä»»æã®ãã·ã³ãšãããžã§ã¯ã¿ãŒããèŽè¡ã®åã§ç°¡åã«ãåçãã§ããŸãã
ä»äºã§ GitHub ã䜿çšããŠãããããCI ã·ã¹ãã ã®èªç¶ãªéžæã¯æ¬¡ã®ãšããã§ãã gh-pages
GitHub äžã®ãããžã§ã¯ãã¯ã次ã®å Žæã§å©çšå¯èœã«ãªããŸãã <ваÑе ОЌÑ>.gihub.io/<Ð²Ð°Ñ Ð¿ÑПекÑ>
.
Maven ã䜿çšããããŒãžã® HTML ããŒãžã§ã³ã®ã³ã³ãã€ã«ããããããŒãã䜿çšãã 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 æ§æãå«ããã¬ãŒã³ããŒã·ã§ã³ ãããžã§ã¯ãã®äŸãžã®ãªã³ã¯ãããã€ã瀺ããŸãããããã¯ãç¬èªã®ãã¬ãŒã³ããŒã·ã§ã³ ãããžã§ã¯ããäœæãããšãã«è€è£œããŠäœ¿çšã§ããŸãã
-
https://github.com/inponomarev/kstreams-examples (JPoint 2019 ã§ã®ç§ã®è¬æŒ) -
https://github.com/inponomarev/csa-hb (ãã€ãŒã³ãã°2019ã®ã¬ããŒã)
ãããªããã¯ãŒãã€ã³ãïŒ æè¡çãªãã¬ãŒã³ããŒã·ã§ã³ã«ããªããå¿ èŠãšããããšã¯ãªããšæããŸã:)
åºæïŒ habr.com