Aurkezpena kode gisa, edo Zergatik ez dut gehiago Powerpoint erabiltzen

Aurkezpena kode gisa, edo Zergatik ez dut gehiago Powerpoint erabiltzen

Nire IT karreran lankideei, bezeroei eta jendaurrean hizketan hamaika aurkezpen eman dizkiedala uste dut. Urte askotan, Powerpoint aukera natural eta fidagarria izan da niretzat diapositibak ekoizteko tresna gisa. Baina aurten egoera kualitatiboki aldatu da. Otsailetik maiatzera, bost hitzalditan hitz egiteko aukera izan nuen, eta txostenetarako diapositibak denbora gutxian prestatu behar izan ziren, baina kalitate handiarekin. Galdera sortu zen diapositiben diseinu bisualari buruzko lanaren zati hori beste pertsona batzuen esku uzteari buruz. Behin diseinatzaile batekin lanean saiatu nintzen, .pptx fitxategiak postaz bidaltzen, baina lana kaos bihurtu zen: inork ez zekien diapositiben zein bertsio zen "berriena", eta diseinua "mugitzen" ari zen Powerpoint-en ezberdintasunagatik. bertsioak eta letra tipoak gure makinetan. Eta zerbait berria probatzea erabaki nuen. Probatu nuen, eta ordutik ez dut pentsatu Powerpointera itzultzea.

Zer nahi dugu

Duela urte eta erdi inguru, gure enpresak Word erabiltzeari utzi zion proiektuaren dokumentazioa sortzeko, arazo berdinak aurkitu baitzituzten: Word dokumentu txiki bat idazteko egokia den arren, bolumena hazi ahala, zailtasunak sortzen dira lankidetzarekin eta kalitate handiko eta lortzeko. diseinu bateratua. Gure hautua erori egin zen AsciiDoctor, eta sekula ez diogu pozten uzten aukera honekin, baina hau aparteko artikulu baterako gaia da. Aldi berean, DevOps printzipioetako baten eraginkortasuna ezagutu genuen "dena kode gisa", beraz, aurkezpen-diapositibak sortzeko teknologia berriaren eskakizunen aukera nahiko nabaria zen:

  1. Aurkezpenak testu arrunteko fitxategi bat izan behar du markatze-lengoaia batean.
  2. Gure diapositibak garapen-proiektuei buruzkoak dira, beraz, markaketak erraz txertatu behar du, kanpoko sistemetara jo gabe
    • kode-zatiak sintaxia nabarmenduta,
    • diagrama sinpleak gezien bidez loturiko forma geometrikoen forman,
    • UML diagramak, fluxu-diagramak eta gehiago.
  3. Aurkezpen zirriborroa bertsio-kontrol sistema batean gorde behar da.
  4. Amaitutako diapositiben baliozkotzea eta muntatzea CI sisteman egin behar da.

Gaur egun, oinarrizko bi aukera daude diapositibak markatze lengoaietan sortzeko: paketea proiektorea LaTeX-erako edo HTML/CSS erabiliz diapositibak sortzeko esparruetako bat (Agerrarazi JS, komentarioen, bizkarreko.js eta beste asko).

Nire arima LaTeX-en dagoen arren, nire gogoak erabaki zuen nik bakarrik erabiliko ez nukeen irtenbide baten aukerak jende zirkulu zabalago bati ezaguna den irtenbide baten alde egon behar zuela. Denek ez dute LaTeX ezagutzen, eta zure eguneroko jarduna ez badago artikulu zientifikoak idaztearekin lotuta, orduan nekez izango duzu denbora sistema honen mundu korapilatsu eta erraldoian murgiltzeko.

Hala ere, HTML/CSS menperatzea ez da hain hedatuta dagoen trebetasun bat: ni, adibidez, urrun nago horretan guztiz trebetasunetik. Zorionez, dagoeneko ezaguna den AsciiDoctor erreskatatzera dator: bihurgailu bat asciidoctor-errevealjs AsciiDoctor marka erabiliz RevealJS diapositibak sortzeko aukera ematen du. Eta ikasteko erraza da eta guztientzako eskuragarria!

Diapositibak nola kodetu

AsciiDoctor-en diapositibak kodetzearen funtsa ulertzeko, modurik errazena adibide zehatzak ematea da. Hauek guztiak aurten kongresuaren aurkezpenetarako egin ditudan benetako diapositibak dira.

Bata bestearen atzetik irekitzen diren elementuen izenburua eta zerrenda dituen diapositiba bat:

== Π—Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ Streams API?

[%step]
* Real-time stream processing
* Stream-like API (map / reduce)
* Под ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ:
** АвтоматичСский offset commit
** РСбалансировка
** Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ состояниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²
** Π›Π΅Π³ΠΊΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Emaitza

Aurkezpena kode gisa, edo Zergatik ez dut gehiago Powerpoint erabiltzen

Goiburua eta iturburu-kode zatia sintaxia nabarmenduta:

== Kafka Streams API: общая структура KStreams-прилоТСния

[source,java]
----
StreamsConfig config = ...;
//Π—Π΄Π΅ΡΡŒ устанавливаСм всякиС ΠΎΠΏΡ†ΠΈΠΈ

Topology topology = new StreamsBuilder()
//Π—Π΄Π΅ΡΡŒ строим Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡŽ
....build();
----

Emaitza

Aurkezpena kode gisa, edo Zergatik ez dut gehiago Powerpoint erabiltzen

Hitzaldi baterako prestatzeko, kode-demoek behin eta berriz berrikuspen eta hobekuntzak jasaten dituzte, beraz, "kode gordina" zuzenean diapositiba batean azkar kopiatu eta itsatsi ahal izatea ezinbestekoa da, demoa eguneratuta dagoela ziurtatuz sintaxia nabarmentzeaz kezkatu gabe.

Izenburua, ilustrazioa eta testua (diapositibako diseinua gelaxkatan egiten da AsciiDoctor taulak):

== Kafka Streams in Action

[.custom-style]
[cols="30a,70a"]
|===
|image::KSIA.jpg[]
|
* **William Bejeck**, +
β€œKafka Streams in Action”, November 2018
* ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° для Kafka 1.0
|===

Emaitza

Aurkezpena kode gisa, edo Zergatik ez dut gehiago Powerpoint erabiltzen

Batzuetan ez da titulurik behar, eta zure iritzia ilustratzeko pantaila osoko irudia besterik ez duzu behar:

[%notitle]
== Π–ΠΈΡ‚ΡŒ Π² лСгаси Π½Π΅Π»Π΅Π³ΠΊΠΎ

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

Emaitza

Aurkezpena kode gisa, edo Zergatik ez dut gehiago Powerpoint erabiltzen

Askotan ideia bat diagrama sinple baten bidez lagundu behar da, "gezien bidez konektatutako karratuen" forman. Zorionez, AsciiDoctor sistemarekin integratuta dago Graphviz β€” Diagrama grafikoak deskribatzeko aukera ematen duen lengoaia, erpinen deskribapenean eta haien arteko konexioetan oinarrituta. Graphviz-ek ikasteko kurba hartzen du, baina emandako adibideetan oinarrituta, nahiko erraza da egitea! Honela dirudi:

== ПишСм β€œ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;}
}
-----

Emaitza

Aurkezpena kode gisa, edo Zergatik ez dut gehiago Powerpoint erabiltzen

Irudiaren epigrafea editatu, geziaren norabidea eta abar aldatu behar denean, aurkezpen-kodean zuzenean egin daiteke, irudia nonbait berriro marraztu eta diapositiban berriro sartu beharrean. Horrek nabarmen handitzen du diapositibetan lan egiteko abiadura.

Adibide konplikatuagoa:

== НСвоспроизводимая сборка
[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;}
}
-----

Emaitza

Aurkezpena kode gisa, edo Zergatik ez dut gehiago Powerpoint erabiltzen

Bide batez, komenigarria da Graphviz-ekin esperimentatzea eta orrialdeko irudiak araztea Graphviz sarean.

Azkenik, diapositiba batean fluxu-diagrama, klase-diagrama edo beste diagrama estandarizatu bat txertatu behar baduzu, AsciiDoctor-ekin integratutako beste sistema bat erreskatatu daiteke, PlantUML. Nire lankide Nikolai Potashnikov-ek PlantUMLren gaitasun zabalei buruz idatzi zuen aparteko mezua.

Aurkezpen-proiektua bertsio-kontrol-sistema batean gordetako kode bilakatzeak aukera ematen du aurkezpenaren lan bateratua antolatzea, lehenik eta behin, edukia eta diseinua sortzeko zereginak bereizteko. RevealJS-en diapositiben diseinua (letra-tipoak, atzeko planoak, koskak) CSS erabiliz deskribatzen da. CSS-rekin dudan trebetasun pertsonala ondoen transmititzen du gif hau - baina ez da beldurgarria CSSarekin ni baino askoz ere trebeago eta azkarrago lan egiten duen jendea dagoenean. Ondorioz, ematen da aurkezpen bat egiteko epea azkar hurbiltzen ari denean, Git bidez fitxategi desberdinak aldi berean lan egin ditzakegula eta .pptx fitxategiak postaz bidaltzean ezinezkoa den lankidetza-abiadura garatu.

HTML orri bat diapositibekin eraikitzea

Testu arrunteko iturriak bikainak dira, baina nola biltzen dituzu aurkezpenean bertan?

AsciiDoctor Ruby-n idatzitako proiektua da, eta exekutatzeko hainbat modu daude. Lehenik eta behin, Ruby hizkuntza instalatu eta zuzenean asciidoctor exekutatu dezakezu, hau da, ziurrenik, Ruby garatzaileengandik hurbilen dagoena.

Ruby instalatzearekin nahastu nahi ez baduzu, docker irudia erabil dezakezu asciidoctor/docker-asciidoctor, eta bertan, abiarazitakoan, karpeta proiektuaren iturriekin konekta dezakezu BOLUMENaren bidez eta emaitza toki jakin batean lor dezakezu.

Aukeratu dudan aukera ezusteko samarra dirudi, baina niretzat erosoena da Java garatzaile gisa. Ez du Ruby edo docker instalatu behar, baina Maven script bat erabiliz diapositibak sortzeko aukera ematen du.

Kontua da proiektua JRuby - Ruby hizkuntzaren Java inplementazioa hain da ona, non Rubyrentzat sortutako ia edozein gauza exekutatzeko aukera ematen baitu Java makina batean, eta AsciiDoctor exekutatzen JRuby-ren erabilera ohikoenetako bat da.

erabilgarritasuna asciidoctor-maven-plugin Java proiektu baten parte den AsciiDoctor dokumentazioa biltzeko aukera ematen du (aktiboki erabiltzen duguna). Aldi berean, AsciiDoctor eta JRuby automatikoki deskargatzen ditu Mavenek, eta AsciiDoctor JRuby ingurunean exekutatzen da: ez dago makinan ezer instalatu beharrik! (Paketea kenduta graphviz, beharrezkoa da GraphViz edo PlantUML grafikoak erabili nahi badituzu.) Jarri zure .adoc fitxategiak karpeta batean. src/main/asciidoc/. hemen pomnik baten adibideaDiapositibak eskemekin biltzea.

Bihurtu diapositibak PDFra

Diapositiben HTML bertsioa nahiko autosufizientea bada ere, oraindik beharrezkoa da diapositiben PDF bertsioa izatea. Lehenik eta behin, gertatzen da hizlariari bere ordenagailu eramangarria konektatzeko aukera ematen ez dioten hitzaldi batzuetan, diapositibak β€œzorrotz pptx edo pdf formatuan” eskatzen dituztela, HTMLan ere egotea espero gabe. Bigarrenik, egokia da antolatzaileei zure diapositiben bertsio editatu gabeko bat bidaltzea txostenean erakutsi ziren moduan, PDF formatuan fitxategia kongresuko materialetan argitaratzeko.

Zorionez, Node.js utilitateak kudeatzen du zeregin hau. bizkarreko zinta, oinarrian eraikia txotxongilo β€” Chrome arakatzailea kudeatzeko automatizazio-sistemak. RevealJS aurkezpena PDF bihur dezakezu komandoarekin

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

Decktape abiarazteko bi trikimailu, saiakeraren bidez asmatu behar izan genituenak:

  • parametro bidezko ebazpena -s marjina bikoitz batekin zehaztu behar da, bestela arazoak egon daitezke bihurketa-emaitzetan

  • aurkezpenaren HTML bertsioaren URLan parametro bat pasatu behar duzu ?fragments=true, eta horrek PDF orri bat sortuko du zure diapositibaren tarteko egoera bakoitzerako (adibidez, bost orri bost buletetarako, bata bestearen atzetik erakusten badira). Horri esker, horrelako PDF bat bere kabuz erabili ahal izango duzu txosten batean aurkezpen gisa.

Muntaketa automatikoa eta sarean argitaratzea

Erosoa da diapositibak automatikoki konpilatzen direnean bertsioak kontrolatzeko sisteman aldaketak egiten direnean, eta are erosoagoa automatikoki konpilatutako diapositibak Interneten erabilera publikorako argitaratzen direnean. Interneteko diapositibak erraz "erreproduzitu" daitezke ikusleen aurrean Internetera konektatutako edozein makinatik eta proiektore batetik.

Gure lanean GitHub erabiltzen dugunez, CI sistema baten aukera naturala da TravisCI, eta prest egindako aurkezpenak antolatzeko - github.io. Github.ioren atzean dagoen ideia da edozein eduki estatiko adar batean argitaratzen dela gh-pages zure proiektuaren GitHub-en eskuragarri dago hemen <вашС имя>.gihub.io/<ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚>.

TravisCI konfigurazio fitxategi osoa, orriaren HTML bertsioa Maven erabiliz konpilatzea barne, PDF bihurtzea decktape erabiliz eta emaitzak hari batera kargatzea. gh-pages github.io-n argitaratzeko, antza beraz,.

TravisCI aldean horrelako proiektu bat eraikitzeko, ingurune-aldagaiak konfiguratu behar dituzu

  • GH_REF β€” github.com/inponomarev/csa-hb bezalako balioa
  • GH_TOKEN β€” GitHub sarbide-tokena. GitHub-etik lor dezakezu zure profilaren ezarpenetan, Garatzaileen ezarpenetan -> Sarbide pertsonaleko tokenetan. Aurkezpen bat biltegi publiko batera kargatzen baduzu, token honetarako nahikoa da sarbide-maila bakarra zehaztea "Sartu biltegi publikoetan".
  • GH_USER_EMAIL / GH_USER_NAME β€” izena/posta elektroniko bikotea zeinaren izenean harirako bultzada egingo den gh-pages.

Horrela, GitHub-en aurkezpen-kodearen konpromiso bakoitzak diapositibak automatikoki berreraiki egiten ditu HTML eta PDF formatuetan eta github.io-ra berriro kargatzen dira. (Noski, github.io-ra soilik igo behar dituzu azkenean publiko egin nahi dituzun aurkezpenak.)

Proiektuen adibideak

Azkenik, hona hemen Maven script pertsonalizatuak eta Travis-CIrako CI konfigurazioa duten aurkezpen-proiektuen adibide pare batzuetarako estekak, zure aurkezpen-proiektuak sortzerakoan klonatu eta erabil daitezkeenak:

Agur Powerpoint! Ez dut uste aurkezpen teknikoetarako inoiz beharko zaitudanik :)

Iturria: www.habr.com

Gehitu iruzkin berria