Igbejade bi koodu, tabi Idi ti Emi ko lo Powerpoint mọ

Igbejade bi koodu, tabi Idi ti Emi ko lo Powerpoint mọ

Mo ro pe Mo ti fun ọpọlọpọ awọn ifarahan si awọn ẹlẹgbẹ, awọn alabara, ati sisọ ni gbangba ni iṣẹ IT mi. Fun ọpọlọpọ ọdun, Powerpoint ti jẹ yiyan adayeba ati igbẹkẹle fun mi bi ohun elo iṣelọpọ ifaworanhan. Ṣugbọn ni ọdun yii ipo naa ti yipada ni didara. Lati Kínní si May, Mo ni aye lati sọrọ ni awọn apejọ marun, ati awọn ifaworanhan fun awọn iroyin ni lati pese sile ni igba diẹ, ṣugbọn pẹlu didara giga. Ibeere naa dide nipa fifi apakan iṣẹ naa ranṣẹ nipa apẹrẹ wiwo ti awọn ifaworanhan si awọn eniyan miiran. Mo gbiyanju lẹẹkan lati ṣiṣẹ pẹlu onise apẹẹrẹ, fifiranṣẹ awọn faili .pptx nipasẹ meeli, ṣugbọn iṣẹ naa yipada si idarudapọ: ko si ẹnikan ti o mọ iru ẹya ti awọn kikọja naa jẹ "tuntun", ati iṣeto naa jẹ "gbigbe" nitori iyatọ ninu Powerpoint. awọn ẹya ati awọn nkọwe lori awọn ẹrọ wa. Mo si pinnu lati gbiyanju nkankan titun. Mo gbiyanju rẹ, ati pe lati igba naa Emi ko ronu nipa lilọ pada si Powerpoint.

Kini a fẹ

Nipa ọdun kan ati idaji sẹyin, ile-iṣẹ wa duro ni lilo Ọrọ lati ṣẹda iwe iṣẹ akanṣe, ti o ti pade awọn iṣoro kanna: bi o tilẹ jẹ pe Ọrọ dara fun titẹ iwe kekere kan, bi iwọn didun ti n dagba, awọn iṣoro dide pẹlu ifowosowopo ati gbigba didara giga ati ti iṣọkan oniru. Aṣayan wa ṣubu lori AsciiDokita, ati awọn ti a ko gba sile lati yọ ni yi wun, sugbon yi ni a koko fun lọtọ article. Ni akoko kanna, a kọ ẹkọ imunadoko ti ọkan ninu awọn ipilẹ DevOps ti “ohun gbogbo bi koodu”, nitorinaa yiyan awọn ibeere fun imọ-ẹrọ tuntun fun ṣiṣẹda awọn ifaworanhan igbejade jẹ ohun ti o han gedegbe:

  1. Igbejade gbọdọ jẹ faili ọrọ itele ni ede isamisi kan.
  2. Awọn ifaworanhan wa jẹ nipa awọn iṣẹ akanṣe idagbasoke, nitorinaa isamisi yẹ ki o jẹ ki o rọrun lati fi sii, laisi lilo si awọn eto ita
    • awọn ajẹkù koodu pẹlu afihan sintasi,
    • awọn aworan atọka ti o rọrun ni irisi awọn apẹrẹ jiometirika ti o sopọ nipasẹ awọn ọfa,
    • Awọn aworan atọka UML, awọn aworan sisan ati diẹ sii.
  3. Ilana igbejade gbọdọ wa ni ipamọ sinu eto iṣakoso ẹya.
  4. Ifọwọsi ati apejọ ti awọn ifaworanhan ti pari yẹ ki o ṣee ṣe ni eto CI kan.

Loni, awọn aṣayan ipilẹ meji wa fun ṣiṣẹda awọn kikọja ni awọn ede isamisi: package tan ina fun LaTeX tabi ọkan ninu awọn ilana fun ṣiṣẹda awọn kikọja nipa lilo HTML/CSS (IfihanJS, alaye, dekini.js ati ọpọlọpọ awọn miiran).

Botilẹjẹpe ẹmi mi wa ni LaTeX, ọkan mi sọ pe yiyan ojutu kan ti Emi kii yoo jẹ ọkan nikan ti o lo yẹ ki o wa ni ẹgbẹ ti ojutu kan ti o mọmọ si agbegbe eniyan ti o gbooro. Kii ṣe gbogbo eniyan mọ LaTeX, ati pe ti iṣe ojoojumọ rẹ ko ba ni ibatan si kikọ awọn nkan onimọ-jinlẹ, lẹhinna o ko ṣeeṣe lati ni akoko lati fi ararẹ bọmi ni agbaye nla, intricate ti eto yii.

Bibẹẹkọ, iṣakoso HTML/CSS kii ṣe ọgbọn ti o tan kaakiri: Emi, fun apẹẹrẹ, emi jinna lati ni kikun ninu rẹ. O da, AsciiDoctor ti o mọ tẹlẹ wa si igbala: oluyipada kan asciidokito-revealjs gba ọ laaye lati ṣẹda awọn ifaworanhan RevealJS nipa lilo isamisi AsciiDoctor. Ati pe o rọrun lati kọ ẹkọ ati wiwọle si gbogbo eniyan!

Bawo ni lati koodu kikọja

Lati loye pataki ti awọn ifaworanhan ifaminsi lori AsciiDoctor, ọna ti o rọrun julọ ni lati fun awọn apẹẹrẹ ni pato. Iwọnyi jẹ gbogbo lati awọn ifaworanhan gangan ti Mo ṣe fun awọn ifarahan apejọ mi ni ọdun yii.

Ifaworanhan pẹlu akọle ati atokọ kan ninu awọn nkan ti nsii ọkan lẹhin ekeji:

== Зачем нам Streams API?

[%step]
* Real-time stream processing
* Stream-like API (map / reduce)
* Под капотом:
** Автоматический offset commit
** Ребалансировка
** Внутреннее состояние обработчиков
** Легкое масштабирование

Esi

Igbejade bi koodu, tabi Idi ti Emi ko lo Powerpoint mọ

Akọsori ati snippet koodu orisun pẹlu afihan sintasi:

== Kafka Streams API: общая структура KStreams-приложения

[source,java]
----
StreamsConfig config = ...;
//Здесь устанавливаем всякие опции

Topology topology = new StreamsBuilder()
//Здесь строим топологию
....build();
----

Esi

Igbejade bi koodu, tabi Idi ti Emi ko lo Powerpoint mọ

Ni igbaradi fun ọrọ kan, awọn koodu demos ṣe atunṣe atunṣe ati awọn ilọsiwaju, nitorina agbara lati daakọ ni kiakia ati lẹẹmọ "koodu aise" taara sinu ifaworanhan jẹ ti koṣeye, ni idaniloju pe demo ti wa ni imudojuiwọn lai ṣe aniyan nipa fifi aami sintasi.

Akọle, apejuwe ati ọrọ (ipilẹṣẹ lori ifaworanhan jẹ ṣiṣe ni awọn sẹẹli AsciiDoctor tabili):

== Kafka Streams in Action

[.custom-style]
[cols="30a,70a"]
|===
|image::KSIA.jpg[]
|
* **William Bejeck**, +
“Kafka Streams in Action”, November 2018
* Примеры кода для Kafka 1.0
|===

Esi

Igbejade bi koodu, tabi Idi ti Emi ko lo Powerpoint mọ

Nigba miiran a ko nilo akọle kan, ati lati ṣe apejuwe aaye rẹ o kan nilo aworan iboju ni kikun:

[%notitle]
== Жить в легаси нелегко

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

Esi

Igbejade bi koodu, tabi Idi ti Emi ko lo Powerpoint mọ

Nigbagbogbo imọran kan nilo lati ni atilẹyin nipasẹ aworan atọka ti o rọrun, ni irisi “awọn onigun mẹrin ti a sopọ nipasẹ awọn ọfa.” O da, AsciiDoctor ti ṣepọ pẹlu eto naa Graphviz - ede ti o fun ọ laaye lati ṣapejuwe awọn aworan atọka ti o da lori ijuwe ti awọn inaro ati awọn asopọ laarin wọn. Graphviz gba ọna ikẹkọ, ṣugbọn da lori awọn apẹẹrẹ ti a pese, o rọrun pupọ! Eyi ni ohun ti o dabi:

== Пишем “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;}
}
-----

Esi

Igbejade bi koodu, tabi Idi ti Emi ko lo Powerpoint mọ

Ninu ọran naa nigbati o jẹ dandan lati satunkọ akọle lori nọmba naa, yi itọsọna ti itọka naa, ati bẹbẹ lọ, eyi le ṣee ṣe taara ni koodu igbejade, dipo atunkọ aworan ni ibikan ki o tun fi sii sinu ifaworanhan. Eyi ṣe pataki mu iyara ṣiṣẹ lori awọn kikọja.

Apeere idiju diẹ sii:

== Невоспроизводимая сборка
[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;}
}
-----

Esi

Igbejade bi koodu, tabi Idi ti Emi ko lo Powerpoint mọ

Nipa ọna, o rọrun lati ṣe idanwo pẹlu Graphviz ati awọn aworan yokokoro lori oju-iwe naa Graphviz lori ayelujara.

Lakotan, ti o ba nilo lati fi kaadi sisan kan sii, aworan atọka kilasi tabi aworan apewọn miiran sinu ifaworanhan, lẹhinna eto miiran ti a ṣepọ pẹlu AsciiDoctor le wa si igbala, ỌgbinUML. ẹlẹgbẹ mi Nikolai Potashnikov kowe nipa awọn agbara nla ti PlantUML lọtọ ifiweranṣẹ.

Yipada ise agbese igbejade sinu koodu ti o fipamọ sori eto iṣakoso ẹya jẹ ki o ṣee ṣe lati ṣeto iṣẹ apapọ lori igbejade, ni akọkọ, lati ya awọn iṣẹ ṣiṣe ti ṣiṣẹda akoonu ati apẹrẹ. Apẹrẹ ti awọn ifaworanhan (awọn nkọwe, awọn ipilẹ, awọn indents) ni RevealJS jẹ apejuwe nipa lilo CSS. Imọye ti ara ẹni pẹlu CSS ni o dara julọ nipasẹ gif yii - ṣugbọn kii ṣe idẹruba nigbati awọn eniyan ba wa ti o ṣiṣẹ pẹlu CSS pupọ diẹ sii ni itara ati yiyara ju mi ​​lọ. Bi abajade, o wa ni pe pẹlu akoko ipari ti o sunmọ ni kiakia fun igbejade, a le ṣiṣẹ lori awọn faili oriṣiriṣi nigbakanna nipasẹ Git ati idagbasoke iyara ti ifowosowopo ti ko ṣee ṣe nigbati fifiranṣẹ awọn faili .pptx nipasẹ meeli.

Ṣiṣe oju-iwe HTML kan pẹlu awọn kikọja

Awọn orisun ọrọ itele jẹ nla, ṣugbọn bawo ni o ṣe ṣajọ wọn sinu igbejade funrararẹ?

AsciiDoctor jẹ iṣẹ akanṣe ti a kọ ni Ruby, ati pe awọn ọna pupọ lo wa lati ṣiṣẹ. Ni akọkọ, o le fi ede Ruby sori ẹrọ ati ṣiṣe asciidoctor taara, eyiti o ṣee ṣe ohun ti o sunmọ julọ si awọn olupilẹṣẹ Ruby.

Ti o ko ba fẹ idotin pẹlu fifi Ruby sori ẹrọ, o le lo aworan docker asciidoctor/docker-ascii, sinu eyiti, nigba ti ṣe ifilọlẹ, o le so folda pọ pẹlu awọn orisun ise agbese nipasẹ VOLUME ati gba abajade ni ipo ti a fun.

Aṣayan ti Mo yan le dabi airotẹlẹ diẹ, ṣugbọn o rọrun julọ fun mi bi olupilẹṣẹ Java kan. Ko nilo fifi sori ẹrọ Ruby tabi docker, ṣugbọn ngbanilaaye lati ṣe ina awọn kikọja ni lilo iwe afọwọkọ Maven kan.

Awọn ojuami ni wipe ise agbese JRuby - Imuse Java ti ede Ruby dara pupọ ti o fun ọ laaye lati ṣiṣe fere ohunkohun ti a ṣẹda fun Ruby ni ẹrọ Java, ati ṣiṣiṣẹ AsciiDoctor jẹ ọkan ninu awọn lilo ti o wọpọ julọ ti JRuby.

Wiwa asciidoctor-maven-afikun gba ọ laaye lati gba awọn iwe aṣẹ AsciiDoctor ti o jẹ apakan ti iṣẹ akanṣe Java (eyiti a lo ni itara). Ni akoko kanna, AsciiDoctor ati JRuby ti wa ni igbasilẹ laifọwọyi nipasẹ Maven, ati AsciiDoctor nṣiṣẹ ni ayika JRuby: ko ​​si ye lati fi sori ẹrọ ohunkohun lori ẹrọ naa! (Laisi package graphviz, eyi ti o nilo ti o ba fẹ lo GraphViz tabi PlantUML eya aworan.) Nìkan gbe awọn faili .adoc rẹ sinu folda kan. src/main/asciidoc/... Nibi apẹẹrẹ ti pomnikgbigba awọn kikọja pẹlu awọn aworan atọka.

Yipada awọn ifaworanhan si PDF

Botilẹjẹpe ẹya HTML ti awọn ifaworanhan jẹ ohun ti ara ẹni, o tun jẹ dandan lati ni ẹya PDF ti awọn kikọja naa. Ni akọkọ, o ṣẹlẹ pe ni diẹ ninu awọn apejọ ti ko pese agbọrọsọ pẹlu aye lati sopọ kọǹpútà alágbèéká tirẹ, wọn nilo awọn kikọja “muna ni pptx tabi ọna kika pdf,” laisi nireti pe wọn tun wa ni HTML. Ni ẹẹkeji, o jẹ fọọmu ti o dara lati firanṣẹ awọn oluṣeto ẹya ti a ko ṣatunkọ ti awọn ifaworanhan rẹ bi wọn ṣe han ni ijabọ naa, ni ọna kika PDF fun titẹjade faili naa ni awọn ohun elo apejọ.

Da, awọn IwUlO Node.js kapa yi iṣẹ-ṣiṣe. dekitape, ti a ṣe lori ipilẹ puppeteer - awọn ọna ṣiṣe adaṣe fun ṣiṣakoso ẹrọ aṣawakiri Chrome. O le ṣe iyipada igbejade RevealJS si PDF pẹlu aṣẹ naa

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

Awọn ẹtan meji nigba ifilọlẹ decktape, eyiti a ni lati wa pẹlu nipasẹ idanwo ati aṣiṣe:

  • ipinnu nipasẹ paramita -s gbọdọ wa ni pato pẹlu ala meji-meji, bibẹẹkọ awọn iṣoro le wa pẹlu awọn abajade iyipada

  • ninu URL ti ẹya HTML ti igbejade o nilo lati kọja paramita kan ?fragments=true, eyi ti yoo ṣẹda oju-iwe PDF lọtọ fun ipo agbedemeji kọọkan ti ifaworanhan rẹ (fun apẹẹrẹ, awọn oju-iwe marun fun awọn aaye ọta ibọn marun ti wọn ba han ni ọkan lẹhin ekeji). Eyi yoo gba ọ laaye lati lo iru PDF kan funrararẹ bi igbejade lakoko ijabọ kan.

Apejọ aifọwọyi ati titẹjade lori oju opo wẹẹbu

O rọrun nigbati awọn ifaworanhan ti wa ni akopọ laifọwọyi nigbati awọn ayipada ba ṣe si eto iṣakoso ẹya, ati paapaa rọrun diẹ sii nigbati awọn ifaworanhan ti o ṣajọ laifọwọyi ni a fiweranṣẹ lori Intanẹẹti fun lilo gbogbo eniyan. Awọn ifaworanhan lati Intanẹẹti le ni irọrun “mu ṣiṣẹ” ni iwaju olugbo lati eyikeyi ẹrọ ti o sopọ si Intanẹẹti ati pirojekito kan.

Niwọn igba ti a lo GitHub ninu iṣẹ wa, yiyan adayeba ti eto CI jẹ TravisCI, ati fun gbigbalejo awọn igbejade ti a ti ṣetan - github.io. Ero ti o wa lẹhin github.io ni pe eyikeyi akoonu aimi ti a fiweranṣẹ si ẹka kan gh-pages ti ise agbese rẹ lori GitHub, di wa ni <ваше имя>.gihub.io/<ваш проект>.

Pari faili iṣeto TravisCI, pẹlu ikojọpọ ẹya HTML ti oju-iwe ni lilo Maven, iyipada si PDF nipa lilo decktape, ati ikojọpọ awọn abajade si okun kan gh-pages fun atejade lori github.io, wulẹ bi bẹ.

Lati kọ iru iṣẹ akanṣe kan ni ẹgbẹ TravisCI, o nilo lati tunto awọn oniyipada ayika

  • GH_REF - iye bi github.com/inponomarev/csa-hb
  • GH_TOKEN - GitHub wiwọle àmi. O le gba lati GitHub ninu awọn eto profaili rẹ, Awọn eto Olùgbéejáde -> Awọn ami Wiwọle Ti ara ẹni. Ti o ba gbe igbejade kan si ibi ipamọ gbogbo eniyan, lẹhinna fun ami-ami yii o to lati pato ipele iwọle nikan “Wiwọle si awọn ibi ipamọ gbogbo eniyan”.
  • GH_USER_EMAIL / GH_USER_NAME - orukọ / bata imeeli fun eyi ti titari si o tẹle ara yoo ṣee ṣe gh-pages.

Nitorinaa, olukaluku ti koodu igbejade lori awọn abajade GitHub ni awọn ifaworanhan ni a tun kọ laifọwọyi ni HTML ati awọn ọna kika PDF ati tun gbe si github.io. (Dajudaju, o yẹ ki o gbejade nikan si github.io awọn igbejade wọnyẹn ti o fẹ lati ṣe ni gbangba.)

Awọn apẹẹrẹ ti awọn iṣẹ akanṣe

Lakotan, eyi ni awọn ọna asopọ si awọn apẹẹrẹ meji ti awọn iṣẹ igbejade pẹlu awọn iwe afọwọkọ Maven ti adani ati iṣeto CI fun Travis-CI, eyiti o le ṣe cloned ati lo nigbati o ṣẹda awọn iṣẹ igbejade tirẹ:

O dabọ Powerpoint! Emi ko ro pe Emi yoo nilo rẹ lailai fun awọn ifarahan imọ-ẹrọ :)

orisun: www.habr.com

Fi ọrọìwòye kun