ืื ื ืืืฉื ืฉืืขืืจืชื ืขืฉืจืืช ืืฆืืืช ืืขืืืชืื, ืืงืืืืช ืืืืืืจ ืืคื ื ืงืื ืืงืจืืืจืช ื-IT ืฉืื. ืืืฉื ืฉื ืื ืจืืืช, Powerpoint ืืืืชื ืขืืืจื ืืืืจื ืืืขืืช ืืืืื ื ืืืื ืืืืฆืืจ ืฉืงืคืื. ืืื ืืฉื ื ืืืฆื ืืฉืชื ื ืืืืื ื ืืืืืชืืช. ืืคืืจืืืจ ืขื ืืื ืืืืื ืื ืื ืืื ืืืืืฉื ืื ืกืื, ืืืช ืืฉืงืืคืืืช ืืืืืืช ืืื ืฆืืจื ืืืืื ืืืื ืงืฆืจ, ืื ืืืืืืช ืืืืื. ืขืืชื ืืฉืืื ืืืื ืืืฆืืช ืืืง ืื ืฉื ืืขืืืื ืื ืืืข ืืขืืฆืื ืืืืืชื ืฉื ืืฉืงืืคืืืช ืืื ืฉืื ืืืจืื. ืคืขื ื ืืกืืชื ืืขืืื ืขื ืืขืฆื, ืืฉืืื ืงืืฆื .pptx ืืืืืจ, ืืื ืืขืืืื ืืคืื ืืืืืก: ืืฃ ืืื ืื ืืืข ืืืื ืืจืกื ืฉื ืืฉืงืืคืืืช ืืื "ืืืืฉื ืืืืชืจ", ืืืคืจืืกื "ืืื" ืืืื ืืืืื ื-Powerpoint ืืจืกืืืช ืืืืคื ืื ืืืืื ืืช ืฉืื ื. ืืืืืืชื ืื ืกืืช ืืฉืื ืืืฉ. ื ืืกืืชื ืืช ืื, ืืืื ืื ืืฉืืชื ืืืืืจ ื-Powerpoint.
ืื ืื ืื ื ืจืืฆืื
ืืคื ื ืืฉื ื ืืืฆื ืืืืจื ืฉืื ื ืืคืกืืงื ืืืฉืชืืฉ ื-Word ืืืฆืืจืช ืชืืขืื ืคืจืืืงืืื, ืืืืจ ืฉื ืชืงืื ืืืืชื ืืขืืืช: ืืืจืืช ืฉ-Word ืืื ืืืงืืืช ืืกืื ืงืื, ืืื ืฉืื ืคื ืืื, ื ืืฆืจืื ืงืฉืืื ืืฉืืชืืฃ ืคืขืืื ืืงืืืช ืืืืืช ืืืืื ืขืืฆืื ืืืืื. ืืืืืจื ืฉืื ื ื ืคืื ืขื
- ืืืฆืืช ืืืืืช ืืืืืช ืงืืืฅ ืืงืกื ืจืืื ืืฉืคืช ืกืืืื.
- ืืฉืงืคืื ืฉืื ื ืขืืกืงืื ืืคืจืืืงืื ืคืืชืื, ืื ืฉืืกืืืื ืืืืจ ืืืงื ืขื ืืืื ืกื, ืืืื ืืืืืงืง ืืืขืจืืืช ืืืฆืื ืืืช
- ืงืืขื ืงืื ืขื ืืืืฉืช ืชืืืืจ,
- ืืืืืจืืืช ืคืฉืืืืช ืืฆืืจื ืฉื ืฆืืจืืช ืืืืืืืจืืืช ืืืืืืจืืช ืืืฆืื,
- ืืืืืจืืืช UML, ืชืจืฉืืื ืืจืืื ืืขืื.
- ืืฉ ืืืืกื ืืช ืืืืืช ืืืฆืืช ืืืขืจืืช ืืงืจืช ืืจืกืืืช.
- ืืืืืช ืืืจืืื ืฉื ืฉืงืืคืืืช ืืืืืจืืช ืฆืจืื ืืืืขืฉืืช ืืืขืจืืช CI.
ืืืื, ืงืืืืืช ืฉืชื ืืคืฉืจืืืืช ืืกืืกืืืช ืืืฆืืจืช ืฉืงืืคืืืช ืืฉืคืืช ืกืืืื: ืืืืื
ืืืจืืช ืฉืื ืฉืื ืฉืื ืืืื ื ื-LaTeX, ืืขืชื ืืืชืืื ืฉืืืืืจื ืืคืชืจืื ืฉืื ืืืื ืืืืื ืฉืืฉืชืืฉ ืื ืฆืจืืื ืืืืืช ืืฆื ืฉื ืคืชืจืื ืืืืืจ ืืืขืื ืจืื ืืืชืจ ืฉื ืื ืฉืื. ืื ืืืื ืืืืจืื ืืช LaTeX, ืืื ืืชืจืืื ืืืืืืืื ืฉืื ืืื ื ืงืฉืืจ ืืืชืืืช ืืืืจืื ืืืขืืื, ืื ืกืืืจ ืฉืืืื ืื ืืื ืืืืื ืืช ืขืฆืื ืืขืืื ืืขื ืง ืืืืืจืื ืฉื ืืืขืจืืช ืืื.
ืขื ืืืช, ืฉืืืื ื-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 ืืืืคืขืื ืืช asciidoctor ืืฉืืจืืช, ืืื ืื ืจืื ืืืืจ ืืื ืงืจืื ืืืคืชืื Ruby.
ืื ืืชื ืื ืจืืฆื ืืืชืขืกืง ืขื ืืชืงื ืช Ruby, ืืชื ืืืื ืืืฉืชืืฉ ืืชืืื ืช docker
ืืืคืฉืจืืช ืฉืืืจืชื ืืืื ื ืจืืืช ืงืฆืช ืื ืฆืคืืื, ืืื ืืื ืืื ื ืืื ืื ืืืคืชื ื'ืืืื. ืื ืื ืืืจืฉ ืืชืงื ื ืฉื Ruby ืื docker, ืืื ืืืคืฉืจ ืื ืืืฆืืจ ืฉืงืืคืืืช ืืืืฆืขืืช ืกืงืจืืคื ืฉื Maven.
ืื ืงืืื ืืื ืฉืืคืจืืืงื
ืืืื ืืช graphviz
, ืืืจืืฉ ืื ืืจืฆืื ื ืืืฉืชืืฉ ืืืจืคืืงื ืฉื GraphViz ืื PlantUML.) ืคืฉืื ืืงื ืืช ืงืืืฆื ื-.adoc ืฉืื ืืชืืงืืื src/main/asciidoc/
. ืืื
ืืืจืช ืฉืงืืคืืืช ื-PDF
ืืืจืืช ืฉืืจืกืช ื-HTML ืฉื ืืฉืงืืคืืืช ืื ืขืฆืืืืช, ืขืืืื ืืฉ ืฆืืจื ืืืจืกืช PDF ืฉื ืืฉืงืืคืืืช. ืจืืฉืืช, ืงืืจื ืฉืืืื ืื ืกืื ืฉืืื ื ืืกืคืงืื ืืืืืจ ืืช ืืืคืฉืจืืช ืืืืจ ืืช ืืืืฉื ืื ืืื ืฉืื, ืื ืืืจืฉืื ืฉืงืืคืืืช "ืืคืืจืื pptx ืื pdf ืืืื", ืืืื ืืฆืคืืช ืฉืื ืื ื-HTML. ืฉื ืืช, ืืื ืืฉืืื ืืืืจืื ืื ืืจืกื ืื ืขืจืืื ืฉื ืืฉืงืืคืืืช ืฉืื ืืคื ืฉืืืฆืื ืืืื, ืืคืืจืื PDF ืืคืจืกืื ืืงืืืฅ ืืืืืจื ืืื ืก.
ืืืจืื ืืืื, ืืื ืืฉืืจืืช Node.js ืืืคื ืืืฉืืื ืื.
node decktape.js -s 3200x1800 --slides 1-500
reveal "file:///index.html?fragments=true" slides.pdf
ืฉื ื ืืจืืงืื ืืขืช ืืฉืงืช ืงืืืช, ืฉืืืื ื ืฆืจืืืื ืืืืฆืื ืืืืฆืขืืช ื ืืกืื ืืืขืืื:
-
ืจืืืืืฆืื ืืืืฆืขืืช ืคืจืืืจ
-s
ืืฉ ืืฆืืื ืขื ืฉืืืืื ืืคืืืื, ืืืจืช ืขืืืืืช ืืืืืช ืืขืืืช ืืชืืฆืืืช ืืืืจื -
ืืืชืืืช ื-URL ืฉื ืืจืกืช ื-HTML ืฉื ืืืฆืืช ืืชื ืฆืจืื ืืืขืืืจ ืคืจืืืจ
?fragments=true
, ืฉืืืฆืืจ ืืฃ PDF ื ืคืจื ืขืืืจ ืื ืืฆื ืืื ืืื ืฉื ืืฉืงืฃ ืฉืื (ืืืืืื, ืืืืฉื ืขืืืืื ืขืืืจ ืืืฉ ื ืงืืืืช ืชืืืืืื ืื ืื ืืืฆืืื ืืื ืืืจ ืื). ืื ืืืคืฉืจ ืื ืืืฉืชืืฉ ื-PDF ืืื ืืคื ื ืขืฆืื ืืืฆืืช ืืืืื ืืื.
ืืจืืื ืืคืจืกืื ืืืืืืื ืืืื ืืจื ื
ืื ื ืื ืืืฉืจ ืฉืงืืคืืืช ืืงืืคืืืช ืืืืืืืืช ืืืฉืจ ืืชืืฆืขืื ืฉืื ืืืื ืืืขืจืืช ืืงืจืช ืืืจืกืืืช, ืืขืื ืืืชืจ ื ืื ืืืฉืจ ืฉืงืืคืืืช ืืงืืคืืืช ืืืืืืืืช ืืชืคืจืกืืืช ืืืื ืืจื ื ืืฉืืืืฉ ืฆืืืืจื. ืฉืงืืคืืืช ืืืืื ืืจื ื ื ืืชื ืืช ื"ื ืืืื" ืืงืืืช ืืื ืงืื ืืื ืืืื ื ืืืืืืจืช ืืืื ืืจื ื ืืืงืจื.
ืืืืืื ืฉืื ื ืืฉืชืืฉืื ื-GitHub ืืขืืืื ืฉืื ื, ืืืืืจื ืืืืขืืช ืฉื ืืขืจืืช CI ืืื gh-pages
ืฉื ืืคืจืืืงื ืฉืื ื-GitHub, ืืืคื ืืืื ื- <ะฒะฐัะต ะธะผั>.gihub.io/<ะฒะฐั ะฟัะพะตะบั>
.
ืงืืืฅ ืชืฆืืจื ืืื ืฉื TravisCI, ืืืื ืงืืืคืืืฆืื ืฉื ืืจืกืช ื-HTML ืฉื ืืืฃ ืืืืฆืขืืช Maven, ืืืจื ื-PDF ืืืืฆืขืืช decktape, ืืืขืืืช ืืชืืฆืืืช ืืฉืจืฉืืจ gh-pages
ืืคืจืกืื ื-github.io, ื ืจืื ืืื
ืืื ืืื ืืช ืคืจืืืงื ืืื ืืฆื TravisCI, ืขืืื ืืืืืืจ ืืฉืชื ื ืกืืืื
GH_REF
- ืขืจื ืืื github.com/inponomarev/csa-hbGH_TOKEN
- ืืกืืืื ืืืฉื ืฉื GitHub. ืืชื ืืืื ืืงืื ืืช ืื ื-GitHub ืืืืืจืืช ืืคืจืืคืื ืฉืื, ืืืืจืืช ืืคืชื -> ืืกืืืื ื ืืืฉื ืืืฉืืื. ืื ืืชื ืืขืื ืืฆืืช ืืืืืจ ืฆืืืืจื, ืื ืืฉืืื ืืืกืืืื ืืื ืืกืคืืง ืืฆืืื ืืช ืจืืช ืืืืฉื ืืืืืื "ืืืฉื ืืืืืจืื ืฆืืืืจืืื".GH_USER_EMAIL
/GH_USER_NAME
โ ืืื ืฉื/ืืืืืื ืฉืืฉืื ืชืชืืฆืข ืืืืืคื ืืฉืจืฉืืจgh-pages
.
ืืคืืื, ืื ืืชืืืืืืช ืฉื ืงืื ืืืฆืืช ื-GitHub ืืืจืืช ืืื ืฉืืฉืงืืคืืืช ื ืื ืืช ืืืืืืืืช ืืืืฉ ืืคืืจืืืื ืฉื HTML ื-PDF ืืืืขืืื ืืืืฉ ื-github.io. (ืืืืื, ืขืืื ืืืขืืืช ื-github.io ืจืง ืืช ืืืฆืืืช ืฉืืกืืคื ืฉื ืืืจ ืชืจืฆื ืืคืจืกื.)
ืืืืืืืช ืืคืจืืืงืืื
ืืืกืืฃ, ืื ื ืงืืฉืืจืื ืืืื ืืืืืืืช ืืคืจืืืงืื ืืฆืืช ืขื ืกืงืจืืคืืื ืืืชืืืื ืืืฉืืช ืฉื Maven ืืชืฆืืจืช CI ืขืืืจ Travis-CI, ืฉื ืืชื ืืฉืืคื ืืืืฉืชืืฉ ืืื ืืขืช ืืฆืืจืช ืคืจืืืงืื ืืฆืืช ืืฉืื:
-
https://github.com/inponomarev/kstreams-examples (ืืืจืฆืื ืฉืื ืขืืืจ JPoint 2019) -
https://github.com/inponomarev/csa-hb (ืืืื ืฉืื ืขืืืจ Heisenbug 2019)
ืืืชืจืืืช Powerpoint! ืื ื ืื ืืืฉื ืฉืื ืคืขื ืืืืงืง ืื ืืืฆืืืช ืืื ืืืช :)
ืืงืืจ: www.habr.com