
Tundub, et olen oma IT-karjÀÀri jooksul teinud kĂŒmneid esitlusmaterjale kolleegidele, klientidele ja avalikeks esinemisteks. Palju aastaid oli Powerpoint minu jaoks loomulik ja usaldusvÀÀrne valik slaidide valmistamiseks. Kuid sel aastal muutus olukord dramaatiliselt. Februari ja mai vahel esinesin viiel konverentsil ning slaidid tuli valmistada kiiresti, kuid kvaliteetselt. KĂŒsisin endalt, kuidas delegeerida visuaalse disaini osa teistele inimestele. Ăks kord pĂŒĂŒdsin töötada disaineriga, saates .pptx faile e-posti teel, kuid töö muutus kaoseks: keegi ei teadnud, milline versioon slaididest on "uusim", ja kujundus "kippus minema" meie arvutite Powerpointi versioonide ja fontide erinevuste tĂ”ttu. Ja otsustasin proovida midagi uut. Proovisin, ja sellest ajast alates ei mĂ”tle ma tagasi Powerpointi peale.
Mida me soovime
KĂ€ibpoolteist aastat tagasi loobusime me ettevĂ”ttes Wordi kasutamisest projektidokumentatsiooni koostamiseks, seistes silmitsi nende samade probleemidega: kuigi Word on hea vĂ€ikeste dokumentide koostamiseks, tekivad mahu suurenedes koostöö ja kvaliteetsete ning ĂŒhtsete vormindamisraskustega. Meie valik langes , mille ĂŒle me ei lakka rÔÔmustamast, kuid see on eraldi teema. Umbes sel ajal avastasime ĂŒhe DevOps-printsiibi efektiivsuse "kĂ”ik on kood" ning seetĂ”ttu oli uue esitlusdiatoodete tehnoloogia nĂ”uete valik ĂŒsna ilmne:
- Esitlus peab olema puhtteksti fail mÀrgistuskeeles.
- Meie slaidid kĂ€sitlevad arendusprojekte, seega peab mĂ€rgistus vĂ”imaldama hĂ”lpsasti, ilma vĂ€liste sĂŒsteemide abita, sisestada
- kodeeritud fragmente sĂŒntaksi esitlemisega,
- lihtsaid diagramme geomeetriliste kujundite ja nende vaheliste nooltega,
- UML-diagramme, vooskeeme jne.
- Esitluse projekt peab olema versioonihaldussĂŒsteemis.
- Valideerimine ja valmis slaidide kogumine peab toimuma CI-sĂŒsteemis.
Praegu on kaks pÔhilist vÔimalust slaidide loomiseks mÀrgistuskeeltes: pakett LaTeX-i jaoks vÔi mÔni HTML/CSS slaidide loomise raamistik (, , ja paljusid teisi).
Kuigi mu sĂŒdames on LaTeX, ĂŒtles mĂ”istus, et lahenduse valik, millega ma ei jÀÀ ĂŒksi, peaks olema tuntuma lahenduse poole. LaTeXi ei tunne kĂ”ik ja kui teie igapĂ€evane praktika ei ole teadusartiklite kirjutamisega seotud, siis tĂ”enĂ€oliselt ei ole teil aega selle keerulise sĂŒsteemi sĂŒvitsi minemiseks.
Siiski ei ole ka HTML/CSS valdamine just laialdaselt levinud oskus: mina nĂ€iteks ei valda seda tĂ€ielikult. Ănneks tuleb appi juba tuttav AsciiDoctor: konverter mis vĂ”imaldab luua RevealJS slaide, kasutades AsciiDoctor'i mĂ€rgistuskeelt. Ja see on tĂ”epoolest lihtne Ă”ppida ja kĂ”igile kergesti kĂ€ttesaadav!
Kuidas slaide kodeerida
Slaidide kodeerimise olemuse mÔistmiseks on kÔige lihtsam tuua konkreetsed nÀited. KÔik need on reaalsed slaidid, mille ma olen teinud oma konverentsiettekannete jaoks sel aastal.
Pealkirjaga slaid ja loetelu, kus punktid avanevad ĂŒksteise jĂ€rel:
== Miks on meil vaja Streams API-d?
[%step]
* Reaalaja voogude töötlemine
* Voogudele sarnane API (map / reduce)
* Tarkvaras:
** Automaatne offset'i kinnitamine
** Uuesti tasakaalustamine
** Töötlejate sisemine olek
** Lihtne skaleerimineTulemus

Pealkiri ja koodilĂ”ik, millel on sĂŒntaksihĂ”lma:
== Kafka Streams API: KStreams-rakenduse ĂŒldstruktuur
[source,java]
----
StreamsConfig config = ...;
//Siin seadistame erinevaid valikuid
Topology topology = new StreamsBuilder()
//Siin ehitame topoloogia
....build();
----Tulemus

Ettevalmistuse kĂ€igus esitlusele (demo) koodinĂ€ited lĂ€bivad pidevalt ĂŒmbertegemisi ja tĂ€iustusi, seetĂ”ttu on ÀÀretult vÀÀrtuslik vĂ”imalus kiiresti «toore koodi» slaidile kopeerida ja kleepida, tagades demo nĂ€ite ajakohasuse ilma sĂŒntaksihĂ”lma pĂ€rast muretsemata.
Pealkiri, illustreeriv pilt ja tekst (slaidi paigutust teeme AsciiDoctori tabelites ):
== Kafka Streams Action'is
[.custom-style]
[cols="30a,70a"]
|===
|image::KSIA.jpg[]
|
* **William Bejeck**, +
âKafka Streams Action'isâ, november 2018
* KoodinÀited Kafka 1.0 jaoks
|===Tulemus

MÔnikord pealkiri pole vajalik, ja sinu mÔtte illustreerimiseks on lihtsalt vajalik suur pilt:
[%notitle]
== Elu legacy's in the hard
image::swampman.jpg[canvas, size=cover]Tulemus

Sageli on mĂ”te vajalik toetada lihtsa diagrammiga, kujul "kastid, mis on ĂŒhendatud nooltega". Ănneks on AsciiDoctor integreeritud sĂŒsteemiga â keel, mis vĂ”imaldab kirjeldada graafdiagramme tĂ€ppide ja nendevaheliste seoste pĂ”hjal. Graphvizi kasutamine nĂ”uab harjutamist, kuid olemasolevate nĂ€idiste pealt on seda ĂŒsna lihtne Ă”ppida! Nii see vĂ€lja nĂ€eb:
== Kirjutame "Bet Totalling App"
Mis on panuste summa, kui tulemus lÀheb korda?
[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;}
}
-----Tulemus

Kui on vajalik kujutise sildi redigeerimine, noole suuna muutmine jms â saab seda teha otse esituse koodis, selle asemel et joonistada kuskil pilt ĂŒmber ja uuesti slaidile lisada. See kiirus tĂ”stab oluliselt slaidide töötamise efektiivsust.
NĂ€ide keerulisem:
== Reproduktiivne kogumik
[graphviz, "unstable-update.png"]
-----
digraph G {
rankdir="LR";
graph [ dpi = 150 ];
u -> r0;
u[shape=plaintext; label="linter updaten+ 13 hoiatused"]
r0[shape=point, width = 0]
r1 -> r0[ arrowhead = none, label="master branch" ];
r0-> r2 []; b1 -> b4; r1->b1
r1[label="150nhoiatused"]
b1[label="± 0nhoiatused"]
b4[label="± 0nhoiatused"]
b4->r2
r2[label="163nhoiatused", color="red", xlabel=<ĂŒhendamine blokeeritud>]
{rank = same; u; r0; b4;}
}
-----Tulemus

Muide, eksperimenteerimine Graphviziga ja piltide silumine on mugav lehe peal .
LĂ”puks, kui on vaja lisada slaidi vooskeemi, klassidiagrammi vĂ”i mĂ”ne muu standarditud diagrammi, siis selle puhul vĂ”ib abiks olla veel ĂŒks AsciiDoctoriga integreeritud sĂŒsteem, . PlantUML-i ulatuslike vĂ”imaluste kohta on mu kolleeg Nikolai Potashnikov kirjutanud .
Prezentatsiooni projekti muutmine koodiks, mis salvestatakse versioonihaldussĂŒsteemi, vĂ”imaldab korraldada koostööd presentatsiooniga, eeskĂ€tt jagades sisuloomise ja kujundamise ĂŒlesandeid. Slaidide kujundamine (kirj fonts, taustad, vahed) RevealJS-is kirjeldatakse CSS-i abil. Minu isiklik oskus CSS-iga toimetada antud kontekstis edastatakse kĂ”ige paremini â aga see pole hirmutav, kui on inimesi, kes töötavad CSS-i kallal palju osavamalt ja kiiremini kui mina. LĂ”puks tĂ€hendab see, et kiirelt lĂ€heneva esitluskuupĂ€eva tingimustes saame töötada samaaegselt erinevate failide kallal Git'i abil ja suurendada koostöö kiirus, mis oleks vĂ”imatu, kui jagada faile .pptx e-postiga.
HTML-lehe koostamine slaididega
Tavalised tekstifailid on suurepÀrased, kuid kuidas need esitluseks kokku panna?
AsciiDoctor on Ruby keeles kirjutatud projekt, mida saab kÀivitada mitmel moel. Esiteks, vÔite installida Ruby keele ja kÀivitada asciidoctor otse, mis tÔenÀoliselt sobib kÔige rohkem Ruby arendajatele.
Kui te ei soovi Ruby installimisega vaeva nĂ€ha, vĂ”ite kasutada docker-pilti , mille kĂ€ivitamisel saate VOLUME kaudu ĂŒhendada projekti lĂ€htefailide kausta ja mÀÀratud kohas tulemuse saada.
Variant, millele ise jÀin, vÔib tunduda veidi ootamatu, kuid see on mulle Java arendajana kÔige mugavam. See ei nÔua Ruby installimist ega dockerit, kuid vÔimaldab slaide genereerida Maven-skripti abil.
Asi on nii, et projekt â Ruby keele Java rakendus â on nii hea, et vĂ”imaldab kĂ€ivitada Java masinas praktiliselt kĂ”ike, mis on loodud Ruby jaoks, ning AsciiDoctori kĂ€itamine on ĂŒks JRuby kĂ”ige levinumaid rakendusi.
Olemasolu aitab kokku panna AsciiDoctori dokumentatsiooni, mis on osa Java projektist (mida me aktiivselt kasutame). Samuti laaditakse AsciiDoctor ja JRuby Maven'i kaudu automaatselt alla ning AsciiDoctor kÀivitub JRuby keskkonnas: ei ole vaja midagi masinale installida! (VÀlja arvatud pakett graphviz, mis on vajalik, kui soovite kasutada GraphVizi vÔi PlantUML-i graafikat.) Piisab, kui asetate oma .adoc-failid kausta src/main/asciidoc/. Siin , mis kogub slaide diagrammidega.
Slaidide konverteerimine PDF-iks
Kuigi HTML-i vorming esitluspiltidest on tĂ€iesti iseseisev, on vahel siiski vajalik omada ka PDF-vormi. Esiteks juhtub, et mĂ”nedes konverentsides, mis ei paku esinejale vĂ”imalust oma sĂŒlearvutit ĂŒhendada, nĂ”utakse slaide "rangelt vormingus pptx vĂ”i pdf", unustades, et need vĂ”ivad olla ka HTML formaadis. Teiseks on hea, et saata korraldajatele teie slaidide muutumatu versioon sellisena, nagu need esitluse ajal nĂ€idati, PDF vormingus konverentsi materjalide avaldamiseks.
Ănneks tegeleb selle probleemiga Node.js utiliit , mis on ehitatud â Chrome'i brauseri automaatse juhtimise sĂŒsteemi baasil. RevealJS esitluse PDF-iks konvertimiseks saab kasutada kĂ€sku
node decktape.js -s 3200x1800 --slides 1-500
reveal "file:///index.html?fragments=true" slides.pdf Kaks nipi decktape'i kÀivitamisel, millele tuli jÔuda katse-eksituse meetodil:
resolutsioon lÀbi parameetri
-stuleb seadistada kahekordse varu ĂŒle, vastasel juhul vĂ”ivad konverteerimisega olla probleemid.HTML-versiooni esitluse URL-is tuleb edastada parameeter
?fragments=true, mis vĂ”imaldab luua iga slaidi vahepealse oleku jaoks eraldi PDF-lehe (nĂ€iteks viis lehte viie punkti loendi jaoks, kui need kuvatakse ĂŒksteise jĂ€rel). See vĂ”imaldab kasutada sellist PDF-d iseseisvalt esitlusena esinemisel.
Automaatne koostamine ja avaldamine veebis
On mugav, kui slaidid koostatakse automaatselt, kui muudatused jĂ”uavad versioonihaldussĂŒsteemi, ja veelgi mugavam on, kui automaatselt koostatud slaidid avaldatakse internetis ĂŒldiseks kasutamiseks. Internetis olevaid slaide saab hĂ”lpsasti "esitada" publikule igalt seadmel, mis on internetiga ja projektoriga ĂŒhendatud.
Kuna me kasutame oma töös GitHubi, on loogiline valik CI-sĂŒsteemiks , ja valmis esitlustena hostimiseks â . GitHubi idee on see, et igasugune staatiline sisu, mis on paigutatud teie projekti harusse gh-pages , on saadaval aadressil .gihub.io/.
TÀielik TravisCI konfiguratsioonifail, mis hÔlmab lehe HTML versiooni kompileerimist Maveniga, PDF-i konverteerimist decktape'i abil ja tulemuste laadimist harusse gh-pages publikatsiooniks github.io, nÀeb vÀlja nagu .
Selle projekti kogumiseks TravisCIs on vajalik keskkonnamuutujate seadistamine
GH_REFâ vÀÀrtus vormingus github.com/inponomarev/csa-hbGH_TOKENâ GitHub'i juurdepÀÀsutoken. Selle saab hankida oma GitHubi profiili seadetes, Developer Settings -> Personal Access Tokens. Kui laadite esitlust avalikku hoidlasse, piisab, kui mÀÀrata sellele tokenile ainult ĂŒks juurdepÀÀsutase âAccess public repositoriesâ.GH_USER_EMAIL/GH_USER_NAMEâ paar nimi/e-post, mille nimel toimub haru tĂ”ukaminegh-pages.
Nii toimib iga esituse koodi commit GitHubis automaatse slaidide uuesti koostamise ja nende laadimisega HTML ja PDF formaatides github.io-le. (Muidugi tuleks github.io-le laadida ainult need esitused, mida soovite lÔpuks avalikku teha.)
Projektide nÀited
LĂ”petuseks â lingid paarile nĂ€itprojekti esitlusest, millel on seadistatud Maven-skripti ja CI-konfiguratsioon Travis-CI jaoks, mida saab kloonida ja kasutada oma esitluste loomisel:
(minu ettekanne JPoint 2019)
(minu ettekanne Heisenbug 2019)
HĂŒvasti, Powerpoint! Ma ei arva, et mul oleks sind kunagi vaja tehniliste esituste jaoks đ
Allikas: habr.com
