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

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

Tundub, et olen oma IT-karjÀÀri jooksul pidanud tegema kĂŒmneid esitlust kolleegidele, klientidele ja avalikke kĂ”nesid. Paljude aastate jooksul oli PowerPoint minu jaoks loomulik ja usaldusvÀÀrne valik slaidide loomiseks. Kuid sel aastal muutus olukord oluliselt. KĂ”ikide veebikonverentside korral oleks mul veebruarist maini olnud viis ettekannet, ja slaidid pidid olema kvaliteetselt ning lĂŒhikese ajaga valmis. TĂ”status kĂŒsimus delegeerimise kohta, mis puudutas slaidide visuaalset disaini teistele inimestele. Kord proovisin töötada disaineriga, edastades .pptx faile e-posti teel, kuid töö muutus kaoseks: keegi ei teadnud, milline slaidide versioon on „uusim”, ja vormindamine „lĂ€ks Ă€ra”, sest PowerPointi versioonide ja meie masinatel olevate fondide erinevused tekitasid probleeme. Otsustasin proovida midagi uut. Proovisin ja sellest ajast peale ei mĂ”tle ma tagasi PowerPointile.

Mida me soovime

Kumbki poolteist aastat tagasi loobusime ettevĂ”ttes Wordi kasutamisest projektidokumentatsiooni loomisel, silmitsi seistes sama probleemiga: kuigi Word on hea vĂ€ikeste dokumentide koostamiseks, tekivad mahukamaid dokumente luues raskused koostöö ja kvaliteetse ning ĂŒhtse vormistuse saavutamisel. Meie valik langes AsciiDoctor, ja me ei lakka selle ĂŒle rÔÔmustamast, kuid see on teema eraldi artikli jaoks. Umbes sel ajal mĂ”istsime ĂŒhe DevOps-pĂ”himĂ”tte „kĂ”ik on kood” efektiivsust, seega oli slaidide loomiseks uue tehnoloogia valik ĂŒsna ilmne:

  1. Esitlus peab olema tavaline tekstifail mÀrgistuskeeles.
  2. Meie slaidid kĂ€sitlevad arendusprojekte, seega peab mĂ€rgistus vĂ”imaldama hĂ”lpsasti, ilma vĂ€liste sĂŒsteemide abita, lisada
    • koodilĂ”ike sĂŒntaksi rĂ”hutamisega,
    • lihtsaid diagramme geomeetriliste kujundite kujul, mis on ĂŒhendatud nooltega,
    • UML-diagramme, vooskeeme ja muud.
  3. Esitluse projekt peab olema versioonihalduse sĂŒsteemis.
  4. Valideerimine ja valmis slaidide koostamine peab toimuma CI-sĂŒsteemis.

TÀnapÀeval on kahte pÔhivÔimalust slaidide loomiseks mÀrgistuskeeltes: paketid beamer LaTeXile vÔi mÔni raamistiku, et luua slaide HTML/CSSiga (RevealJS, remark, deck.js ja paljusid teisi).

Kuigi mu hing kaldub LaTeX-i poole, ĂŒtles mĂ”istus, et pean valima lahenduse, mida kasutan mitte ainult mina, vaid ka teised. LaTeX ei ole kĂ”igile tuttav ja kui teie igapĂ€evane praktika ei ole seotud teadusartiklite kirjutamisega, siis tĂ”enĂ€oliselt ei leia te aega, et sukelduda selle sĂŒsteemi tohutusse ja keerukasse maailma.

Sellegipoolest ei ole HTML/CSS oskus ka just kĂ”ige levinum: mina ei valda seda kaugeltki tĂ€ielikult. Õnneks tuleb appi juba tuttav AsciiDoctor: konverter, asciidoctor-revealjs mis vĂ”imaldab luua RevealJS esitlusi, kasutades AsciiDoctor-i mĂ€rgendust. Ja see on tĂ”esti lihtne Ă”ppida ja kergesti kĂ€ttesaadav igaĂŒhele!

Kuidas slaide kodeerida

Slaidide kodeerimise olemuse mÔistmiseks on kÔige lihtsam tuua konkreetsed nÀited. KÔik need on reaalsed slaidid, mida ma tegin selle aasta oma konverentsil esitluste jaoks.

Slaid koos pealkirja ja jÀrjestikku avanevate punktidega:

== Miks on meil vaja Streams API-d?

[%step]
* Reaalajas voogude töötlemine
* Voolu-sarnane API (map / reduce)
* TagakĂŒljel:
** Automaatne offset commit
** Taaskaalumine
** Töötlejate sisemine olek
** Lihtne skaleerimine

Tulemus

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

Pealkiri ja koodilĂ”ik sĂŒntaksi rĂ”hutamisega:

== Kafka Streams API: KStreams rakenduse ĂŒldine struktuur

[source,java]
----
StreamsConfig config = ...;
// Siin seadistame erinevad valikud

Topology topology = new StreamsBuilder()
// Siin ehitame topoloogiat
....build();
----

Tulemus

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

Esitluse ettevalmistamise protsessis lĂ€bivad demonstreerimisnĂ€ited koodi korduvalt muutmise ja tĂ€iustamise, seetĂ”ttu on hindamatu vĂ”imalus kiiresti kopeerida ja kleebida "toores kood" otse slaidile, tagades demonstratsiooni nĂ€ite ajakohasuse ja mitte muretsedes sĂŒntaksi rĂ”hutamise pĂ€rast.

Pealkiri, illustreeriv pilt ja tekst (slaidi paigutus toimub AsciiDoctori tabeli rakkudes)):

== Kafka Streams Action'is

[.custom-style]
[cols="30a,70a"]
|===
|image::KSIA.jpg[]
|
* **William Bejeck**, +
"Kafka Streams Action", november 2018
* Koodi nÀited Kafka 1.0
|===

Tulemus

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

MÔnikord ei ole pealkiri vajalik, vaid lihtsalt pilt, mis illustreerib teie mÔtet ja katab kogu ekraani:

[%notitle]
== Elamine legacy-s ei ole lihtne

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

Tulemus

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

Tihti on mĂ”tte toetamiseks vajalik lihtne diagramm, milles "ruudud, mis on ĂŒhendatud nooledega". Õnneks on AsciiDoctor integreeritud sĂŒsteemiga Graphviz — keele, mis vĂ”imaldab kirjeldada graafikute diagramme, lĂ€htudes sĂ”lmede ja nendevaheliste seoste kirjeldust. Graphviz'i on vaja Ă”ppida, kuid olemasolevate nĂ€idiste pĂ”hjal on see ĂŒsna lihtne! Nii see vĂ€lja nĂ€eb:

== Kirjutame "Bet Totalling App"

Milline on maksete summa tehtud panuste pÔhjal, kui tulemus mÀngib?

[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="Kohalik kauplus"; fixedsize="true"; width="1.5"]
Source -> MapVal -> Sum -> Sink
Sum -> Store [dir=both; label=" n "]
{rank = same; Store; Sum;}
}
-----

Tulemus

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

Kui on vajalik diagrammi mÀrgistus redigeerida, noole suunda muuta jne, siis saab seda teha otse esituse koodis, selle asemel, et joonistada pilti uuesti ja lisada see slaidi. See tÔhustab slaidide koostamiseks vajalikku aega.

Veidi keerulisem nÀide:

== Reproduseerimata kogumine
[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=<merge blocked>]
  {rank = same; u; r0; b4;}
}
-----

Tulemus

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

Muide, Graphviz'iga katsetamine ja piltide silumine on mugav saidil Graphviz online.

LĂ”puks, kui on vajalik slaidi lisada vooskeem, klassidiagramm vĂ”i muu standardiseeritud diagramm, vĂ”ib abiks olla veel ĂŒks AsciiDoctor'iga integreeritud sĂŒsteem, PlantUML. PlantUML-i ulatuslike vĂ”imaluste kohta on mu kolleeg Nikolai Potashnikov kirjutanud eraldi postituse.

Esitlusprojekti muutmine versioonihaldussĂŒsteemi salvestatud koodiks vĂ”imaldab korraldada koostööd esitamise ĂŒle, eelkĂ”ige jagada sisu loomise ja kujundamise ĂŒlesandeid. Slaidide kujundamine (fondid, taustad, vahed) RevealJS-is kirjeldatakse CSS-i abil. Minu isiklik oskus CSS-i kasutada edastab kĂ”ige paremini see gif — kuid see ei ole hirmutav, kui on inimesi, kes töötavad CSS-i kallal palju osavamalt ja kiiremini kui mina. LĂ”ppkokkuvĂ”ttes saame esituse tĂ€htaega lĂ€henedes samal ajal töötada erinevate failide kallal lĂ€bi Git'i ja suurendada koostöö kiirus, mida me ei saaks saavutada .pptx-failide e-postiga saatmise kaudu.

HTML-lehe koostamine slaididega

Lihtne tekst-allergewĂŠr — see on suurepĂ€rane, kuid kuidas neid esitluseni koondada?

AsciiDoctor on Ruby keeles kirjutatud projekt ja selle kÀivitamiseks on mitmeid vÔimalusi. Esiteks saate installida Ruby ja kÀivitada asciidoctor otse, mis on ilmselt kÔige lÀhsem Ruby arendajatele.

Kui ei soovi Ruby installimisega tegeleda, saate kasutada docker-pilti asciidoctor/docker-asciidoctor, mille kĂ€ivitamisel saab VOLUME abil ĂŒhendada projekti lĂ€htefailide kausta ja mÀÀratud kohas saada tulemuse.

Variant, mille peale mina jÀÀn, vÔib tunduda veidi ootamatu, kuid see on mulle Java-arendajana kÔige mugavam. See ei nÔua ei Ruby installimist ega docker'i olemasolu, kuid vÔimaldab genereerida slaide Maven-skripti abil.

Asi on selles, et projekt JRuby — Java-implementatsioon Ruby keelest — on nii hea, et vĂ”imaldab Java-juhis kĂ€itada praktiliselt kĂ”ike, mis on loodud Ruby jaoks, ja AsciiDoctori kĂ€itamine on ĂŒks JRuby kĂ”ige levinumaid rakendusi.

Standardsete moodulite komplekti olemasolu asciidoctor-maven-plugin vÔimaldab koostada AsciiDoctori dokumentatsiooni, mis on osa Java projektist (mida me aktiivselt kasutame). Samuti allalaadib Maven automaatselt AsciiDoctori ja JRuby ning AsciiDoctor kÀib JRuby keskkonnas: midagi ei pea teie masinasse installima! (VÀlja arvatud pakett graphviz, mis on vajalik, kui soovite kasutada graafikat GraphViz vÔi PlantUML.) Piisab, kui asetate oma .adoc-failid kausta src/main/asciidoc/. Siin nÀide monument, mis kogub slaide diagrammidega.

Slaidide konverteerimine PDF-ks

Kuigi slaidide HTML-versioon on tĂ€iesti iseseisev, on siiski vajalik, et PDF-versioon slaididest oleks samuti olemas. Esiteks vĂ”ib juhtuda, et mĂ”nedes konverentsides, kus esinejale ei anta vĂ”imalust oma sĂŒlearvutit ĂŒhendama, nĂ”utakse slaide "rangelt pptx vĂ”i pdf formaadis", eeldades, et need vĂ”ivad olla ka HTML-is. Teiseks on hea komme saata korraldajatele teie slaidide muutumatu versioon just sellisena nagu need ettekanne ajal nĂ€idati, PDF-formaadis konverentsi materjalide avaldamiseks.

Õnneks teeb selle ĂŒlesande tĂ€itmiseks Ă€ra Node.js utiliit decktape, mis pĂ”hineb Puppeteeril — Chrome'i brauseri automaatika sĂŒsteemil. RevealJS esitlust PDF-ks konverteerimiseks vĂ”ib kasutada kĂ€sku

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

Kaks nippi decktape'i kÀivitamisel, mille poole ma kogemata jÔudsin:

  • resolutsioon parameetri kaudu -s tuleks seada kahekordse varuga, vastasel juhul vĂ”ivad konverteerimise tulemustes esineda probleemid.

  • HTML-versiooni URL-is tuleb edastada parameeter. ?fragments=true, mis vĂ”imaldab luua iga teie slaidi vahepealse oleku jaoks eraldi PDF-lehe (nĂ€iteks viis lehte viie loendi punkti jaoks, kui need kuvatakse ĂŒksikult). See vĂ”imaldab sellist PDF-i kasutada iseseisvalt esitlusena ettekande ajal.

Automaatne koostamine ja avaldamine veebis.

On mugav, kui slaidid koostatakse automaatselt, kui muudatused sisenevad versioonihaldussĂŒsteemi, ja veelgi mugavam, kui automaatselt koostatud slaidid avaldatakse internetis kĂ”igile kasutamiseks. Internetist pĂ€rit slaide saab hĂ”lpsasti „esitada” publikule mis tahes arvutist, mis on ĂŒhendatud internetiga ja projektoriga.

Kuna me kasutame töös GitHubi, siis on loogiline valik CI-sĂŒsteemi jaoks TravisCI, ja valmis esitluste majutamiseks — github.io. Ideoloogia github.io seisneb selles, et iga staatiline sisu, mis paigutatakse teie GitHubi projekti harusse gh-pages , on kergesti juurdepÀÀsetav aadressil .gihub.io/.

TĂ€ielik TravisCI konfiguratsioonifail, mis sisaldab HTML-versiooni lehe koostamist Maveniga, konverteerimist PDF-ks decktape abil ja tulemuste ĂŒleslaadimist harusse gh-pages avaldamiseks github.io, nĂ€eb vĂ€lja nii.

Selle projekti koostamiseks TravisCIs tuleb seadistada keskkonna muutujad

  • GH_REF — vÀÀrtus kujul github.com/inponomarev/csa-hb
  • GH_TOKEN — GitHubi juurdepÀÀsu token. Saa see GitHubis oma profiili seadetes, Developer Settings -> Personal Access Tokens. Kui laadite esitlust ĂŒles avalikku repositoriisse, piisab selle tokeni jaoks, kui mÀÀrate ainult ĂŒhe juurdepÀÀsu taseme "Access public repositories".
  • GH_USER_EMAIL / GH_USER_NAME — paar nimi/e-post, mille alt toimub push harusse gh-pages.

Seega toob iga esitluskaidi koodikommit GitHubis automaatse slaidide uuesti koostamise HTML- ja PDF-formaatides ning nende uuesti ĂŒleslaadimise github.io. (Muidugi tuleks github.io-sse ĂŒles laadida ainult need esitlus, mida soovite lĂ”puks avalikuks teha.)

Projektide nÀited

LĂ”petuseks — lingid paarile nĂ€itele projektidest, kus on seadistatud Maven-skriptid ja CI-konfiguratsioon Travis-CI jaoks, mida saab kloonida ja kasutada oma projektide loomiseks:

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

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster