Prezantimi si kod, ose Pse nuk përdor më Powerpoint-in

Prezantimi si kod, ose Pse nuk përdor më Powerpoint-in

Duket se kam realizuar dhjetëra prezantime për kolegët, klientët dhe përpara publikut gjatë karrierës sime në IT. Më shumë vite, PowerPoint si mjet për përgatitjen e slajdeve ka qenë një zgjedhje natyrale dhe e besueshme për mua. Por këtë vit situata ka ndryshuar ndjeshëm. Nga shkurti deri në maj, pata mundësinë të flas në pesë konferenca, dhe slajdet e prezantimeve duhej të përgatiteshin në kohë të shpejtë, por me cilësi. U ngrit një pyetje për delegimin e asaj pjese të punës që kishte të bëjë me dizajnin vizual të slajdeve, te njerëz të tjerë. Një herë, përpiqem të punoj me një dizajner, duke dërguar skedarë .pptx përmes postës, por puna u shndërrua në kaos: askush s'e dinte se cila version e slajdeve ishte 'më e reja', dhe renditja 'në ikje' për shkak të ndryshimeve në versionet e PowerPoint dhe fontet në makinat tona. Dhe vendosa të provoj diçka të re. E provova, dhe që nga atëherë nuk mendoj të kthehem në PowerPoint.

ÇfarĂ« do tĂ« duam

Rreth një vit e gjysmë më parë, ne në kompani u dorëzuam nga përdorimi i Word për përgatitjen e dokumentacionit të projekteve, duke u përballur me të njëjtat probleme: ndërsa Word është i mirë për të shkruar një dokument të vogël, me rritjen e volumit, shfaqen vështirësi me punën e përbashkët dhe marrjen e një paraqitjeje cilësore dhe të unifikuar. Zgjedhja jonë ishte AsciiDoctor, dhe për këtë zgjedhje ne nuk kemi pushuar së kënaquri, por kjo është një temë për një artikull të veçantë. Rreth atij kohe, ne mësuam për efikasitetin e një nga parimet DevOps 'çdo gjë si kod', kështu që zgjedhja e kërkesave për teknologjinë e re të krijimit të slajdeve të prezantimit ishte shumë e qartë:

  1. Prezentimi duhet të jetë një skedë plain text në një gjuhë markup.
  2. Slajdet tanë janë për projektet e zhvillimit, prandaj markup duhet të lejojë lehtësisht, pa ndihmën e sistemeve të jashtme, të futen
    • fragmente kodi me ndriçim sintaksor,
    • diagrama tĂ« thjeshta si figura gjeometrike tĂ« lidhura me shigjeta,
    • diagrama UML, skema dhe tĂ« tjera.
  3. Projekti i prezantimit duhet të ruhet në një sistem kontrolli versioni.
  4. Validimi dhe ndërtimi i slajdeve të gatshme duhet të kryhet në një sistem CI.

Sot ekzistojnë dy mundësi themelore për krijimin e slajdeve në gjuhët markup: paketa beamer për LaTeX ose një nga frameworkët për krijimin e slajdeve në HTML/CSS (RevealJS, remark, deck.js dhe shumë të tjera).

Megjithëse shpirtin tim e ka të lidhur me LaTeX, arsyetimi më sugjeronte se zgjidhja që do të përdorej jo vetëm nga unë, duhej të ishte në anën e një zgjidhjeje të njohur për një grup më të gjerë njerëzish. LaTeX-i nuk dihet nga të gjithë, dhe nëse praktika juaj e përditshme nuk është e lidhur me shkruajten e artikujve shkencorë, atëherë është e pamundur të gjeni kohë për të hyrë në botën e madhe dhe të ndërlikuar të këtij sistemi.

MegjithatĂ«, edhe njohja e HTML/CSS — nuk Ă«shtĂ« njĂ« aftĂ«si qĂ« Ă«shtĂ« e zakonshme pĂ«r tĂ« gjithĂ«: unĂ«, pĂ«r shembull, e njoh atĂ« larg nga masa. PĂ«r fatin tonĂ«, kĂ«tu ndihmon njĂ« mjet qĂ« na Ă«shtĂ« bĂ«rĂ« i njohur tashmĂ« AsciiDoctor: konvertuesi asciidoctor-revealjs lejon krijimin e slajdeve RevealJS, duke pĂ«rdorur markup-asciidoctor. Dhe ajo Ă«shtĂ« e thjeshtĂ« pĂ«r t'u mĂ«suar dhe e aksesueshme pĂ«r tĂ« gjithĂ«!

Si të kodifikoni slajdet

Për të kuptuar thelbin e kodifikimit të slajdeve në AsciiDoctor, më e lehtë është të japësh shembuj konkretë. Të gjithë ata janë nga slajdet reale që kam përgatitur për prezantimet e mia në këtë vit.

Një slajd me titull dhe një listë me pika që hapen njëra pas tjetrës:

== Pse na nevojitet Streams API?

[%step]
* Procesim real-time të rrjedhave
* API të ngjashëm me rrjedhën (map / reduce)
* Nën kapot:
** Komitet automatik i offsetit
** Ribalancimi
** Gjendja e brendshme e procesorëve
** Zhvillim i lehtë

Rezultati

Prezantimi si kod, ose Pse nuk përdor më Powerpoint-in

Titulli dhe një fragment kodi me ndriçim sintaksor:

== Kafka Streams API: struktura e përgjithshme e aplikacionit KStreams

[source,java]
----
StreamsConfig config = ...;
//Këtu vendosim opsione të ndryshme

Topology topology = new StreamsBuilder()
//Këtu ndërtojmë topologjinë
....build();
----

Rezultati

Prezantimi si kod, ose Pse nuk përdor më Powerpoint-in

Në procesin e përgatitjes për prezantim, shembujt demonstrues të kodit ndryshojnë disa herë dhe përmirësohen, kështu që mundësia për të kopjuar dhe ngjitur shpejt 'kodin e papërfunduar' direkt në slajd, është e paçmuar për të siguruar aktualitetin e shembujve dhe pa u shqetësuar për ndriçimin sintaksor.

Titulli, ilustrimi dhe teksti (ndërsa e organizojmë slajdin në qeliza të tabelës AsciiDoctor):

== Kafka Streams in Action

[.custom-style]
[cols="30a,70a"]
|===
|image::KSIA.jpg[]
|
* **William Bejeck**, +
“Kafka Streams in Action”, NĂ«ntor 2018
* Shembuj kodi për Kafka 1.0
|===

Rezultati

Prezantimi si kod, ose Pse nuk përdor më Powerpoint-in

Ndonjëherë titulli nuk është i nevojshëm, ndërsa për ilustruar idenë tuaj mjafton vetëm një imazh që mbulon të gjithë ekranin:

[%notitle]
== Të jetosh në legacë nuk është e lehtë

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

Rezultati

Prezantimi si kod, ose Pse nuk përdor më Powerpoint-in

Shpesh, ideja duhet tĂ« mbĂ«shtetet me njĂ« diagram tĂ« thjeshtĂ«, si 'kufizime tĂ« lidhura me shigjeta'. FatmirĂ«sisht, AsciiDoctor Ă«shtĂ« i integruar me sistemin Graphviz — njĂ« gjuhĂ« qĂ« lejon pĂ«rshkrimin e diagrameve grafike bazuar nĂ« pĂ«rshkrimin e skajeve dhe lidhjeve midis tyre. Duhet mĂ«suar Graphviz, por duke u bazuar nĂ« shembujt ekzistues, Ă«shtĂ« mjaft e lehtĂ«! Ja si duket:

== ShkruajmĂ« “Bet Totalling App”

Sa është shuma e pagesave për bastet e bëra, nëse rezultati është i tillë?

[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;}
}
-----

Rezultati

Prezantimi si kod, ose Pse nuk përdor më Powerpoint-in

NĂ« rastin kur Ă«shtĂ« e nevojshme tĂ« redaktohet etiketimi nĂ« figurĂ«, tĂ« ndryshohet drejtimi i shenjĂ«s etj. — kjo mund tĂ« bĂ«het direkt nĂ« kodin e prezantimit, nĂ« vend qĂ« tĂ« tĂ«rhiqni diku imazhin dhe ta ri-insertoni atĂ« nĂ« slajd. Kjo e rrit ndjeshĂ«m shpejtĂ«sinĂ« e punĂ«s mbi slajdet.

Shembulli më i komplikuar:

== Ndërtimi i papërsëritshëm
[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;}
}
-----

Rezultati

Prezantimi si kod, ose Pse nuk përdor më Powerpoint-in

Për më tepër, është e lehtë të eksperimentoni me Graphviz dhe të rregulloni imazhet në faqen Graphviz online.

Në fund, nëse dëshiron të vendosësh një diagram fluksi, diagram klasash apo një diagram tjetër të standardizuar në slajd, mund të ndihmojë një tjetër sistem i integruar me AsciiDoctor, PlantUML. Në lidhje me mundësitë e mëdha të PlantUML, kolegu im Nikolai Potashnikov shkroi një postim të veçantë.

Transformimi i projektit tĂ« prezantimit nĂ« kod, i cili ruhet nĂ« sistemin e kontrollit tĂ« versioneve, mundĂ«son organizimin e punĂ«s sĂ« pĂ«rbashkĂ«t mbi prezantimin, kryesisht ndarjen e detyrave pĂ«r krijimin e pĂ«rmbajtjes dhe dizajnin. Dizajni i slajdeve (fonts, sfondet, mospĂ«rputhjet) nĂ« RevealJS pĂ«rshkruhet pĂ«rmes CSS. AftĂ«sia ime personale pĂ«r tĂ« punuar me CSS ilustrohet mĂ« sĂ« miri prej kĂ«saj gifke — por kjo nuk Ă«shtĂ« problematik, kur ka njerĂ«z qĂ« punojnĂ« me CSS shumĂ« mĂ« shpejt dhe mĂ« aftĂ« se unĂ«. Si rezultat, nĂ« kushtet e njĂ« afati tĂ« ngushtĂ« pĂ«r prezantimin, ne mund tĂ« punojmĂ« njĂ«kohĂ«sisht mbi dosje tĂ« ndryshme pĂ«rmes Git dhe tĂ« rrisim shpejtĂ«sinĂ« e punĂ«s sĂ« pĂ«rbashkĂ«t, e cila nuk Ă«shtĂ« e mundur me dĂ«rgimin e skedave .pptx pĂ«rmes emailit.

Krijimi i një faqe HTML me slajde

Burimet plain text janë të shkëlqyera, por si t'i kompilohet ato në prezantimin vetë?

AsciiDoctor është një projekt i shkruar në Ruby, dhe mund të niset në disa mënyra. Së pari, ju mund të instaloni gjuhën Ruby dhe të niste asciidoctor direkt, që ndoshta do të jetë më e afërt për ata që janë zhvillues Ruby.

Nëse nuk doni të angazhoheni me instalimin e Ruby, mund të përdorni imazhin docker asciidoctor/docker-asciidoctor, i cili në momentin e aktivizimit mund të lidhet me një folder të burimeve të projektit dhe në një vend të caktuar të merrni rezultatin.

Opsioni që kam zgjedhur mund të duket paksa befasues, por është më e përshtatshme për mua si zhvillues Java. Ai nuk kërkon as instalimin e Ruby, as praninë e docker, por lejon që të gjenerohen slajde përmes skenarit Maven.

Kjo Ă«shtĂ« pĂ«r shkak se projekti JRuby — implementimi Java i gjuhĂ«s Ruby — Ă«shtĂ« aq i mirĂ« sa lejon qĂ« tĂ« niset nĂ« makinĂ«n Java pothuajse çdo gjĂ« qĂ« Ă«shtĂ« krijuar pĂ«r Ruby, dhe nisja e AsciiDoctor Ă«shtĂ« njĂ« nga aplikimet mĂ« tĂ« zakonshme tĂ« JRuby.

Prania asciidoctor-maven-plugin lejon të mbledhim dokumentacionin AsciiDoctor, i cili është një pjesë e projektit Java (me të cilin ne jemi duke punuar aktivisht). Në të njëjtën kohë, AsciiDoctor dhe JRuby shkarkohen automatikisht nga Maven, dhe AsciiDoctor ekzekutohet në ambientin e JRuby: nuk ka nevojë të instaloni asgjë në makinë! (Përveç paketës graphviz, e cila kërkohet nëse dëshironi të përdorni grafikat GraphViz ose PlantUML.) Mjafton të vendosni skedat tuaja .adoc në dosjen src/main/asciidoc/. Ja shembulli i monumentit, që ndalon slajde me diagrame.

Konvertoni slajdet në PDF

Megjithëse versioni HTML i slajdeve është plotësisht i vetëqëndrueshëm, ndonjëherë është e nevojshme të kesh gjithashtu një variant PDF të slajdeve. Së pari, ndodhin raste kur në disa konferenca, që nuk u ofrojnë mundësinë folësit për të lidhur laptopin e tij, kërkojnë slajde "rrallë në formatin pptx ose pdf", pa pritur që ato janë edhe në HTML. Së dyti, është një normë e mirë të dërgosh organizatorëve një version të pandryshuar të slajdeve të tua ashtu siç u janë paraqitur në prezantim, në formatin PDF për të publikuar skedarin në materialet e konferencës.

FatmirĂ«sisht, me kĂ«tĂ« detyrĂ« merret utilitarja Node.js decktape, e cila Ă«shtĂ« e ndĂ«rtuar mbi Puppeteer — njĂ« sistem automatizimi i menaxhimit tĂ« shfletuesit Chrome. TĂ« konvertohet prezantimi RevealJS nĂ« PDF mund tĂ« bĂ«het me komandon

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

Dy truk të shumtë gjatë ekzekutimit të decktape, me të cilat arrita pas metodave të provimit dhe gabimit:

  • rezolutĂ«n pĂ«rmes parametrave -s duhet caktuar me njĂ« rezerva dyfish, pĂ«rndryshe mund tĂ« ketĂ« probleme me rezultatet e konvertimit

  • nĂ« URL-nĂ« e versionit HTML tĂ« prezentimit duhet tĂ« kaloni parametrin ?fragments=true, i cili do tĂ« lejojĂ« krijimin e njĂ« faqe PDF tĂ« veçantĂ« pĂ«r çdo gjendje ndĂ«rmjetĂ«se tĂ« diapozitivit tuaj (pĂ«r shembull, pesĂ« faqe pĂ«r pesĂ« pika nĂ« listĂ«, nĂ«se ato tregohen njĂ« pas njĂ«). Kjo do tĂ« lejojĂ« qĂ« ky PDF tĂ« pĂ«rdoret vetĂ« si njĂ« prezentim gjatĂ« fjalimit.

Ndërtimi dhe publikimi automatik në web

ËshtĂ« e pĂ«rshtatshme kur diapozitivĂ«t ndĂ«rtohen automatikisht kur ndodhin ndryshime nĂ« sistemin e kontrollit tĂ« versioneve, dhe akoma mĂ« e pĂ«rshtatshme kur diapozitivĂ«t e pĂ«rgatitur automatikisht publikohen nĂ« internet pĂ«r pĂ«rdorim nga tĂ« gjithĂ«. DiapozitivĂ«t nga interneti mund tĂ« 'luajnĂ«' lehtĂ«sisht pĂ«rpara audiencĂ«s nga çfarĂ«do makine qĂ« Ă«shtĂ« e lidhur me internetin dhe projektorin.

PĂ«r sa kohĂ« qĂ« ne pĂ«rdorim GitHub nĂ« punĂ«n tonĂ«, zgjedhja e natyrshme e sistemit CI Ă«shtĂ« TravisCI, dhe pĂ«r hostimin e prezentimeve tĂ« gatshme — github.io. Ideja e github.io Ă«shtĂ« se çdo pĂ«rmbajtje statike e vendosur nĂ« degĂ«n gh-pages tĂ« projektit tuaj nĂ« GitHub bĂ«het e disponueshme nĂ« adresĂ«n .gihub.io/.

Skedari i plotë i konfigurimit TravisCI, i cili përfshin ndërtimin e versionit HTML të faqes duke përdorur Maven, konvertimin në PDF me ndihmën e decktape dhe ngarkimin e rezultateve në degën gh-pages për publikim në github.io, duket kështu.

Për ndërtimin e një projekti të tillë në anën e TravisCI, është e nevojshme të konfigurohen variablat e mjedisit

  • GH_REF — njĂ« vlerĂ« si github.com/inponomarev/csa-hb
  • GH_TOKEN — tokeni i qasjes nĂ« GitHub. Mund ta merrni nĂ« GitHub nĂ« parametrat e profilit tuaj, CilĂ«simet e Zhvilluesve -> Tokenet e Qasjes Personale. NĂ«se po publikoni prezentimin nĂ« njĂ« depo publike, pĂ«r kĂ«tĂ« token mjafton tĂ« jepni vetĂ«m nivelin 'Qasje nĂ« depo publike'.
  • GH_USER_EMAIL / GH_USER_NAME — njĂ« çift emĂ«r/email, nga i cili do tĂ« realizohet push nĂ« degĂ« gh-pages.

Kështu, çdo commit i kodit të prezentimit në GitHub çon në ndërtimin automatik të diapozitivëve në formatet HTML dhe PDF dhe ngarkimin e tyre në github.io. (Sigurisht, duhet të publikoni vetëm ato prezentime në github.io që dëshironi të bëni publike.)

Shembuj projektesh

E fundit - lidhje për disa shembuj të projekteve të prezentimeve me skriptet Maven dhe konfigurimin CI për Travis-CI, të cilat mund të klononi dhe përdorni për krijimin e projekteve tuaja të prezentimeve:

LamtumirĂ«, Powerpoint! Nuk mendoj se do tĂ« kem nevojĂ« pĂ«r ty ndonjĂ«herĂ« pĂ«r prezentimet teknike 🙂

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster