Esitlused kui kood, vÔi Miks ma enam ei kasuta Powerpointi

Esitlused kui kood, vÔi Miks ma enam ei kasuta Powerpointi

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 AsciiDoctor, 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:

  1. Esitlus peab olema puhtteksti fail mÀrgistuskeeles.
  2. 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.
  3. Esitluse projekt peab olema versioonihaldussĂŒsteemis.
  4. Valideerimine ja valmis slaidide kogumine peab toimuma CI-sĂŒsteemis.

Praegu on kaks pÔhilist vÔimalust slaidide loomiseks mÀrgistuskeeltes: pakett beamer LaTeX-i jaoks vÔi mÔni HTML/CSS slaidide loomise raamistik (RevealJS, remark, deck.js 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 asciidoctor-revealjs 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 skaleerimine

Tulemus

Esitlused kui kood, vÔi Miks ma enam ei kasuta Powerpointi

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

Esitlused kui kood, vÔi Miks ma enam ei kasuta Powerpointi

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 tabelis):

== 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

Esitlused kui kood, vÔi Miks ma enam ei kasuta Powerpointi

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

Esitlused kui kood, vÔi Miks ma enam ei kasuta Powerpointi

Sageli on mĂ”te vajalik toetada lihtsa diagrammiga, kujul "kastid, mis on ĂŒhendatud nooltega". Õnneks on AsciiDoctor integreeritud sĂŒsteemiga Graphviz — 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

Esitlused kui kood, vÔi Miks ma enam ei kasuta Powerpointi

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

Esitlused kui kood, vÔi Miks ma enam ei kasuta Powerpointi

Muide, eksperimenteerimine Graphviziga ja piltide silumine on mugav lehe peal Graphviz veebis.

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. PlantUML-i ulatuslike vĂ”imaluste kohta on mu kolleeg Nikolai Potashnikov kirjutanud erineva postituse.

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 selle gifiga — 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 asciidoctor/docker-asciidoctor, 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 JRuby — 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 asciidoctor-maven-plugin 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 nÀidis monument, 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 decktape, mis on ehitatud Puppeteer — 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 -s tuleb 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 TravisCI, ja valmis esitlustena hostimiseks — github.io. 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 nii.

Selle projekti kogumiseks TravisCIs on vajalik keskkonnamuutujate seadistamine

  • GH_REF — vÀÀrtus vormingus github.com/inponomarev/csa-hb
  • GH_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Ă”ukamine gh-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:

HĂŒvasti, Powerpoint! Ma ei arva, et mul oleks sind kunagi vaja tehniliste esituste jaoks 🙂

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster