Prezentācija kā kods jeb Kāpēc es vairs neizmantoju Powerpoint

Prezentācija kā kods jeb Kāpēc es vairs neizmantoju Powerpoint

Es domāju, ka savā IT karjerā esmu sniedzis desmitiem prezentāciju kolēģiem, klientiem un publiski uzstājies. Jau daudzus gadus Powerpoint man ir bijusi dabiska un uzticama izvēle kā priekÅ”metstikliņu izgatavoÅ”anas rÄ«ks. Taču Å”ogad situācija ir kvalitatÄ«vi mainÄ«jusies. No februāra lÄ«dz maijam man bija iespēja uzstāties piecās konferencēs, un referātu slaidi bija jāsagatavo Ä«sā laikā, bet kvalitatÄ«vi. Radās jautājums par slaidu vizuālā noformējuma darba daļas deleģēŔanu citiem. Reiz mēģināju strādāt ar dizaineru, sÅ«tot .pptx failus pa pastu, taču darbs izvērtās haosā: neviens nezināja, kura slaidu versija ir ā€œjaunākāā€, un izkārtojums ā€œkustējāsā€ Powerpoint atŔķirÄ«bu dēļ. versijas un fonti mÅ«su iekārtās. Un es nolēmu izmēģināt kaut ko jaunu. Es to izmēģināju, un kopÅ” tā laika neesmu domājis atgriezties pie Powerpoint.

Ko mēs gribam

Apmēram pirms pusotra gada mÅ«su uzņēmums pārtrauca lietot Word projektu dokumentācijas veidoÅ”anai, saskāroties ar tām paŔām problēmām: lai gan Word ir piemērots neliela dokumenta ierakstÄ«Å”anai, pieaugot apjomam, rodas grÅ«tÄ«bas sadarboties un iegÅ«t augstas kvalitātes un vienots dizains. MÅ«su izvēle krita AsciiDoctor, un mēs nebeidzam priecāties par Å”o izvēli, taču Ŕī ir atseviŔķa raksta tēma. Aptuveni tajā paŔā laikā mēs uzzinājām par viena no DevOps principiem ā€œviss kā kodsā€ efektivitāti, tāpēc prasÄ«bu izvēle jaunajai prezentācijas slaidu veidoÅ”anas tehnoloÄ£ijai bija diezgan acÄ«mredzama:

  1. Prezentācijai ir jābÅ«t vienkārÅ”a teksta failam iezÄ«mÄ“Å”anas valodā.
  2. MÅ«su slaidi ir par izstrādes projektiem, tāpēc marķējumam vajadzētu atvieglot ievietoÅ”anu, neizmantojot ārējās sistēmas
    • koda fragmenti ar sintakses izcelÅ”anu,
    • vienkārÅ”as diagrammas Ä£eometrisku formu veidā, kas savienotas ar bultiņām,
    • UML diagrammas, blokshēmas un daudz kas cits.
  3. Prezentācijas melnraksts ir jāsaglabā versiju kontroles sistēmā.
  4. Gatavo priekÅ”metstikliņu validācija un montāža jāveic CI sistēmā.

MÅ«sdienās slaidu izveidei iezÄ«mÄ“Å”anas valodās ir divas pamata iespējas: pakotne Beamer par LaTeX vai kādu no ietvariem slaidu izveidei, izmantojot HTML/CSS (AtklātJS, PiezÄ«me, deck.js un daudzi citi).

Lai gan mana dvēsele slēpjas LaTeX, mans prāts noteica, ka izvēlei risinājumam, kuru es nebÅ«tu vienÄ«gais, ir jābÅ«t plaŔākam cilvēku lokam pazÄ«stama risinājuma pusē. Ne visi zina LaTeX, un, ja jÅ«su ikdienas prakse nav saistÄ«ta ar zinātnisku rakstu rakstÄ«Å”anu, tad diez vai jums bÅ«s laiks iegremdēties Ŕīs sistēmas milzÄ«gajā, sarežģītajā pasaulē.

Tomēr HTML/CSS pārzināŔana nav gluži plaÅ”i izplatÄ«ta prasme: es, piemēram, ne tuvu nepārzinu to. Par laimi, palÄ«gā nāk jau pazÄ«stamais AsciiDoctor: pārveidotājs asciidoctor-revealjs ļauj izveidot RevealJS slaidus, izmantojot AsciiDoctor marķējumu. Un tas ir viegli apgÅ«stams un pieejams ikvienam!

Kā kodēt slaidus

Lai saprastu AsciiDoctor slaidu kodÄ“Å”anas bÅ«tÄ«bu, vienkārŔākais veids ir sniegt konkrētus piemērus. Tie visi ir no faktiskajiem slaidiem, ko veidoju savām Ŕī gada konferences prezentācijām.

Slaids ar nosaukumu un sarakstu elementos, kas tiek atvērti viens pēc otra:

== Š—Š°Ń‡ŠµŠ¼ Š½Š°Š¼ Streams API?

[%step]
* Real-time stream processing
* Stream-like API (map / reduce)
* ŠŸŠ¾Š“ ŠŗŠ°ŠæŠ¾Ń‚Š¾Š¼:
** ŠŠ²Ń‚Š¾Š¼Š°Ń‚ŠøчŠµŃŠŗŠøŠ¹ offset commit
** Š ŠµŠ±Š°Š»Š°Š½ŃŠøрŠ¾Š²ŠŗŠ°
** Š’Š½ŃƒŃ‚Ń€ŠµŠ½Š½ŠµŠµ сŠ¾ŃŃ‚Š¾ŃŠ½ŠøŠµ Š¾Š±Ń€Š°Š±Š¾Ń‚чŠøŠŗŠ¾Š²
** Š›ŠµŠ³ŠŗŠ¾Šµ Š¼Š°ŃŃˆŃ‚Š°Š±ŠøрŠ¾Š²Š°Š½ŠøŠµ

Piedzīvojiet efektīvu rezultātu spēku

Prezentācija kā kods jeb Kāpēc es vairs neizmantoju Powerpoint

Galvene un avota koda fragments ar sintakses izcelŔanu:

== Kafka Streams API: Š¾Š±Ń‰Š°Ń струŠŗтурŠ° KStreams-ŠæрŠøŠ»Š¾Š¶ŠµŠ½Šøя

[source,java]
----
StreamsConfig config = ...;
//Š—Š“ŠµŃŃŒ устŠ°Š½Š°Š²Š»ŠøŠ²Š°ŠµŠ¼ Š²ŃŃŠŗŠøŠµ Š¾ŠæцŠøŠø

Topology topology = new StreamsBuilder()
//Š—Š“ŠµŃŃŒ стрŠ¾ŠøŠ¼ тŠ¾ŠæŠ¾Š»Š¾Š³Šøю
....build();
----

Piedzīvojiet efektīvu rezultātu spēku

Prezentācija kā kods jeb Kāpēc es vairs neizmantoju Powerpoint

Gatavojoties runai, koda demonstrācijas tiek atkārtoti pārskatÄ«tas un uzlabotas, tāpēc iespēja ātri kopēt un ielÄ«mēt ā€œneapstrādāto koduā€ tieÅ”i slaidā ir nenovērtējama, nodroÅ”inot, ka demonstrācija ir atjaunināta, neuztraucoties par sintakses izcelÅ”anu.

Virsraksts, ilustrācija un teksts (izkārtojums slaidā tiek veikts Ŕūnās AsciiDoctor tabulas):

== Kafka Streams in Action

[.custom-style]
[cols="30a,70a"]
|===
|image::KSIA.jpg[]
|
* **William Bejeck**, +
ā€œKafka Streams in Actionā€, November 2018
* ŠŸŃ€ŠøŠ¼ŠµŃ€Ń‹ ŠŗŠ¾Š“Š° Š“Š»Ń Kafka 1.0
|===

Piedzīvojiet efektīvu rezultātu spēku

Prezentācija kā kods jeb Kāpēc es vairs neizmantoju Powerpoint

Dažreiz virsraksts nav nepiecieÅ”ams, un, lai ilustrētu savu viedokli, jums vienkārÅ”i nepiecieÅ”ams pilnekrāna attēls:

[%notitle]
== Š–Šøть Š² Š»ŠµŠ³Š°ŃŠø Š½ŠµŠ»ŠµŠ³ŠŗŠ¾

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

Piedzīvojiet efektīvu rezultātu spēku

Prezentācija kā kods jeb Kāpēc es vairs neizmantoju Powerpoint

Bieži vien ideja ir jāatbalsta ar vienkārÅ”u diagrammu, kas izpaužas kā ā€œkvadrāti, kas savienoti ar bultiņāmā€. Par laimi, AsciiDoctor ir integrēts sistēmā Graphviz ā€” valoda, kas ļauj aprakstÄ«t grafu diagrammas, pamatojoties uz virsotņu un savienojumu starp tām aprakstu. Graphviz ņem mācÄ«Å”anās lÄ«kni, taču, pamatojoties uz sniegtajiem piemēriem, tas ir diezgan vienkārÅ”i izdarāms! Tas izskatās Ŕādi:

== ŠŸŠøшŠµŠ¼ ā€œ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;}
}
-----

Piedzīvojiet efektīvu rezultātu spēku

Prezentācija kā kods jeb Kāpēc es vairs neizmantoju Powerpoint

GadÄ«jumā, ja ir nepiecieÅ”ams rediģēt attēla parakstu, mainÄ«t bultiņas virzienu utt., To var izdarÄ«t tieÅ”i prezentācijas kodā, nevis kaut kur pārzÄ«mēt attēlu un ievietot to slaidā. Tas ievērojami palielina darba ātrumu ar slaidiem.

Sarežģītāks piemērs:

== ŠŠµŠ²Š¾ŃŠæрŠ¾ŠøŠ·Š²Š¾Š“ŠøŠ¼Š°Ń сŠ±Š¾Ń€ŠŗŠ°
[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;}
}
-----

Piedzīvojiet efektīvu rezultātu spēku

Prezentācija kā kods jeb Kāpēc es vairs neizmantoju Powerpoint

Starp citu, ir ērti eksperimentēt ar Graphviz un atkļūdot attēlus lapā Graphviz tieÅ”saistē.

Visbeidzot, ja slaidā ir jāievieto blokshēma, klaÅ”u diagramma vai cita standartizēta diagramma, tad palÄ«gā var nākt cita sistēma, kas integrēta ar AsciiDoctor, AugsUML. Mans kolēģis Nikolajs PotaŔņikovs rakstÄ«ja par PlantUML plaÅ”ajām iespējām atseviŔķs ieraksts.

Prezentācijas projekta pārvērÅ”ana par kodu, kas glabājas versiju kontroles sistēmā, ļauj organizēt kopÄ«gu darbu pie prezentācijas, pirmkārt, nodalÄ«t satura veidoÅ”anas un dizaina uzdevumus. Slaidu dizains (fonti, foni, atkāpes) programmā RevealJS ir aprakstÄ«ts, izmantojot CSS. Manas personÄ«gās prasmes ar CSS vislabāk atspoguļo Å”is gifs - bet tas nav biedējoÅ”i, ja ir cilvēki, kas ar CSS strādā daudz veiklāk un ātrāk nekā es. Rezultātā izrādās, ka strauji tuvojoties prezentācijas termiņam, caur Git varam vienlaicÄ«gi strādāt pie dažādiem failiem un attÄ«stÄ«t tādu sadarbÄ«bas ātrumu, kāds nav iespējams, sÅ«tot .pptx failus pa pastu.

HTML lapas izveide ar slaidiem

VienkārŔa teksta avoti ir lieliski, bet kā tos apkopot paŔā prezentācijā?

AsciiDoctor ir Ruby valodā rakstÄ«ts projekts, un ir vairāki veidi, kā to palaist. Pirmkārt, jÅ«s varat instalēt Ruby valodu un tieÅ”i palaist asciidoctor, kas, iespējams, ir vistuvāk Ruby izstrādātājiem.

Ja nevēlaties sajaukt ar Ruby instalÄ“Å”anu, varat izmantot doka attēlu asciidoctor/docker-asciidoctor, kurā, palaižot, caur VOLUME var savienot mapi ar projekta avotiem un iegÅ«t rezultātu noteiktā vietā.

Manis izvēlētais variants var Ŕķist nedaudz negaidÄ«ts, taču man kā Java izstrādātājam tā ir visērtākā. Tam nav nepiecieÅ”ama Ruby vai docker instalÄ“Å”ana, taču tā ļauj Ä£enerēt slaidus, izmantojot Maven skriptu.

Lieta tāda, ka projekts Džubijs - Ruby valodas Java ievieŔana ir tik laba, ka tā ļauj Java maŔīnā palaist gandrīz visu, kas ir izveidots Ruby, un AsciiDoctor palaiŔana ir viens no visizplatītākajiem JRuby lietojumiem.

pieejamÄ«ba asciidoctor-maven-plugin ļauj apkopot AsciiDoctor dokumentāciju, kas ir daļa no Java projekta (ko mēs aktÄ«vi izmantojam). Tajā paŔā laikā Maven automātiski lejupielādē AsciiDoctor un JRuby, un AsciiDoctor darbojas JRuby vidē: maŔīnā nekas nav jāinstalē! (Izņemot iepakojumu graphviz, kas ir nepiecieÅ”ams, ja vēlaties izmantot GraphViz vai PlantUML grafiku.) VienkārÅ”i ievietojiet savus .adoc failus mapē src/main/asciidoc/. Å eit pomnika piemērsslaidu vākÅ”ana ar diagrammām.

Konvertējiet slaidus uz PDF

Lai gan slaidu HTML versija ir diezgan paÅ”pietiekama, tomēr ir nepiecieÅ”ama slaidu PDF versija. Pirmkārt, gadās, ka dažās konferencēs, kurās runātājam netiek nodroÅ”ināta iespēja pieslēgt savu klēpjdatoru, ir nepiecieÅ”ami slaidi ā€œstingri pptx vai pdf formātāā€, negaidot, ka tie ir arÄ« HTML formātā. Otrkārt, ir laba forma nosÅ«tÄ«t organizatoriem savu slaidu nerediģētu versiju, kā tie tika parādÄ«ti ziņojumā, PDF formātā faila publicÄ“Å”anai konferences materiālos.

Par laimi, ar Å”o uzdevumu tiek galā utilÄ«ta Node.js. klāja lente, bÅ«vēta uz bāzes LellÄ«te ā€” automatizācijas sistēmas pārlÅ«ka Chrome pārvaldÄ«Å”anai. Ar komandu RevealJS prezentāciju var pārvērst PDF formātā

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

Divi triki, palaižot klāja lenti, kas mums bija jāizdomā, izmantojot izmēģinājumus un kļūdas:

  • izŔķirtspēja, izmantojot parametru -s jānorāda ar divkārÅ”u rezervi, pretējā gadÄ«jumā var rasties problēmas ar konvertÄ“Å”anas rezultātiem

  • prezentācijas HTML versijas URL ir jānodod parametrs ?fragments=true, kas izveidos atseviŔķu PDF lapu katram jÅ«su slaida starpstāvoklim (piemēram, piecas lappuses pieciem aizzÄ«mju punktiem, ja tie tiek rādÄ«ti viens pēc otra). Tas ļaus jums izmantot Ŕādu PDF failu kā prezentāciju atskaites laikā.

Automātiska montāža un publicÄ“Å”ana tÄ«meklÄ«

Tas ir ērti, ja slaidi tiek apkopoti automātiski, kad tiek veiktas izmaiņas versiju kontroles sistēmā, un vēl ērtāk, kad automātiski apkopoti slaidi tiek ievietoti internetā publiskai lietoÅ”anai. Slaidus no interneta var viegli ā€œatskaņotā€ auditorijas priekŔā no jebkuras iekārtas, kas ir savienotas ar internetu, un projektora.

Tā kā mēs savā darbā izmantojam GitHub, CI sistēmas dabiskā izvēle ir TravisCI, un gatavu prezentāciju rÄ«koÅ”anai - github.io. Github.io ideja ir tāda, ka jebkurÅ” statisks saturs tiek ievietots filiālē gh-pages no jÅ«su projekta GitHub, kļūst pieejams vietnē <Š²Š°ŃˆŠµ ŠøŠ¼Ń>.gihub.io/<Š²Š°Ńˆ ŠæрŠ¾ŠµŠŗт>.

Pabeigt TravisCI konfigurācijas failu, tostarp lapas HTML versijas apkopoÅ”anu, izmantojot Maven, konvertÄ“Å”anu uz PDF, izmantojot decktape, un rezultātu augÅ”upielādi pavedienā gh-pages publicÄ“Å”anai vietnē github.io, izskatās tā.

Lai izveidotu Ŕādu projektu TravisCI pusē, jums ir jākonfigurē vides mainÄ«gie

  • GH_REF ā€” vērtÄ«ba, piemēram, github.com/inponomarev/csa-hb
  • GH_TOKEN ā€” GitHub piekļuves pilnvara. Varat to iegÅ«t no GitHub sava profila iestatÄ«jumos, Izstrādātāja iestatÄ«jumi -> Personiskās piekļuves pilnvaras. Ja augÅ”upielādējat prezentāciju publiskajā repozitorijā, Å”im marÄ·ierim pietiek norādÄ«t vienÄ«go piekļuves lÄ«meni ā€œPiekļuve publiskajiem repozitorijiemā€.
  • GH_USER_EMAIL / GH_USER_NAME ā€” vārds/e-pasta pāris, kura vārdā tiks veikta nosÅ«tÄ«Å”ana uz pavedienu gh-pages.

Tādējādi katra prezentācijas koda ievieÅ”ana vietnē GitHub noved pie tā, ka slaidi tiek automātiski pārbÅ«vēti HTML un PDF formātos un atkārtoti augÅ”upielādēti vietnē github.io. (Protams, vietnē github.io vajadzētu augÅ”upielādēt tikai tās prezentācijas, kuras galu galā vēlaties publiskot.)

Projektu piemēri

Visbeidzot, Å”eit ir saites uz dažiem prezentācijas projektu piemēriem ar pielāgotiem Maven skriptiem un CI konfigurāciju Travis-CI, ko var klonēt un izmantot, veidojot savus prezentācijas projektus:

Ardievu Powerpoint! Es nedomāju, ka man kādreiz būsi vajadzīgs tehniskajām prezentācijām :)

Avots: www.habr.com

Pievieno komentāru