Presentasi minangka kode, utawa Napa aku ora nggunakake Powerpoint maneh
Aku rumangsa wis menehi puluhan presentasi kanggo kolega, klien, lan pamicara umum ing karir IT. Wis pirang-pirang taun, Powerpoint wis dadi pilihan alami lan dipercaya kanggo aku minangka alat produksi slide. Nanging ing taun iki kahanan wis diganti qualitatively. Saka Februari nganti Mei, aku duwe kesempatan kanggo ngomong ing limang konferensi, lan slide kanggo laporan kudu disiapake ing wektu sing cendhak, nanging kanthi kualitas dhuwur. Pitakonan muncul babagan delegasi bagean saka karya kasebut babagan desain visual slide menyang wong liya. Aku tau nyoba nggarap desainer, ngirim file .pptx liwat mail, nanging karya dadi kekacauan: ora ana sing ngerti versi slide sing "paling anyar", lan tata letak "obah" amarga bedane ing Powerpoint. versi lan fonts ing mesin kita. Lan aku mutusake kanggo nyoba sing anyar. Aku nyoba, lan wiwit iku aku wis ora mikir bab bali menyang Powerpoint.
Apa sing dikarepake
Kira-kira setengah taun kepungkur, perusahaan kita mandheg nggunakake Word kanggo nggawe dokumentasi proyek, amarga nemoni masalah sing padha: sanajan Word apik kanggo ngetik dokumen cilik, amarga volume mundhak, kesulitan muncul kanthi kolaborasi lan entuk kualitas lan desain manunggal. Pilihan kita tiba ing AsciiDoctor, lan kita ora bakal mandheg bungah ing pilihan iki, nanging iki minangka topik kanggo artikel sing kapisah. Ing wektu sing padha, kita sinau efektifitas salah sawijining prinsip DevOps "kabeh minangka kode", saengga pilihan syarat kanggo teknologi anyar kanggo nggawe slide presentasi cukup jelas:
Presentasi kudu file teks biasa ing basa markup.
Slide kita babagan proyek pangembangan, mula markup kudu gampang dilebokake, tanpa nggunakake sistem eksternal
fragmen kode kanthi nyorot sintaks,
diagram prasaja ing wangun geometris disambungake dening panah,
diagram UML, diagram alur lan liya-liyane.
Draf presentasi kudu disimpen ing sistem kontrol versi.
Validasi lan perakitan slide rampung kudu ditindakake ing sistem CI.
Saiki, ana rong pilihan dhasar kanggo nggawe slide ing basa markup: paket proyektor kanggo LaTeX utawa salah sawijining kerangka kanggo nggawe slide nggunakake HTML/CSS (MbukakJS, Tetembungane, dek.js lan akeh liyane).
Senajan nyawaku dumunung ing LaTeX, pikiranku ndhikte yen pilihan solusi sing ora mung aku gunakake kudu ana ing sisih solusi sing akrab karo wong sing luwih akeh. Ora saben wong ngerti LaTeX, lan yen praktik saben dina ora ana hubungane karo nulis artikel ilmiah, mula sampeyan ora bakal duwe wektu kanggo nyemplungake dhewe ing jagad gedhe lan rumit saka sistem iki.
Nanging, penguasaan HTML/CSS ora persis minangka katrampilan sing nyebar: Aku, umpamane, adoh saka pakaryan kasebut. Begjanipun, AsciiDoctor sing wis akrab teka kanggo ngluwari: konverter asciidoctor-revealjs ngidini sampeyan nggawe slide RevealJS nggunakake markup AsciiDoctor. Lan gampang sinau lan bisa diakses kabeh wong!
Cara nggawe kode slide
Kanggo mangerteni inti saka slide coding ing AsciiDoctor, cara paling gampang yaiku menehi conto tartamtu. Iki kabeh saka slide nyata sing digawe kanggo presentasi konferensi taun iki.
Slide kanthi judhul lan dhaptar item sing mbukak siji-sijine:
== ΠΠΈΡΠ΅ΠΌ β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;}
}
-----
asil
Ing kasus nalika perlu kanggo ngowahi caption ing tokoh, ngganti arah panah, etc., iki bisa rampung langsung ing kode presentation, tinimbang redrawing gambar nang endi wae lan reinserting menyang geser. Iki kanthi signifikan nambah kacepetan nggarap slide.
Miturut cara, iku trep kanggo eksprimen karo Graphviz lan debug gambar ing kaca Graphviz online.
Pungkasan, yen sampeyan kudu nglebokake flowchart, diagram kelas utawa diagram standar liyane menyang slide, banjur sistem liyane sing terintegrasi karo AsciiDoctor bisa nylametake, PlantUML. Kolegaku Nikolai Potashnikov nulis babagan kemampuan ekstensif PlantUML kiriman kapisah.
Sumber teks biasa apik banget, nanging kepiye carane sampeyan ngumpulake menyang presentasi kasebut?
AsciiDoctor minangka proyek sing ditulis ing Ruby, lan ana sawetara cara kanggo mbukak. Pisanan, sampeyan bisa nginstal basa Ruby lan mbukak asciidoctor langsung, sing mbokmenawa paling cedhak karo pangembang Ruby.
Yen sampeyan ora pengin kekacoan karo nginstal Ruby, sampeyan bisa nggunakake gambar docker asciidoctor/docker-asciidoctor, menyang ngendi, nalika diluncurake, sampeyan bisa nyambungake folder kasebut karo sumber proyek liwat VOLUME lan entuk asil ing lokasi tartamtu.
Opsi sing dakpilih bisa uga katon ora dikarepke, nanging sing paling trep kanggo aku minangka pangembang Jawa. Ora mbutuhake instalasi Ruby utawa docker, nanging ngidini sampeyan ngasilake slide nggunakake skrip Maven.
Intine yaiku proyek kasebut JRuby - Implementasine Jawa saka basa Ruby apik banget sing ngijini sampeyan kanggo mbukak meh kabeh digawe kanggo Ruby ing mesin Jawa, lan mlaku AsciiDoctor iku salah siji saka nggunakake paling umum saka JRuby.
Senajan versi HTML saka slide cukup mandhiri, nanging isih kudu duwe versi PDF saka slide kasebut. Kaping pisanan, kedadeyan yen ing sawetara konferensi sing ora menehi speaker kesempatan kanggo nyambungake laptop dhewe, dheweke mbutuhake slide "kanthi ketat ing format pptx utawa pdf," tanpa ngarep-arep manawa uga ana ing HTML. Kapindho, luwih becik ngirim para panitia versi slide sing ora diowahi kaya sing ditampilake ing laporan kasebut, ing format PDF kanggo publikasi file ing bahan konferensi.
Untunge, sarana Node.js nangani tugas iki. decktape, dibangun ing basis Dalang - sistem otomatis kanggo ngatur browser Chrome. Sampeyan bisa ngowahi presentasi RevealJS dadi PDF kanthi prentah
Loro trik nalika ngluncurake decktape, sing kudu ditindakake liwat nyoba lan kesalahan:
resolusi liwat parameter -s kudu ditemtokake kanthi wates kaping pindho, yen ora ana masalah karo asil konversi
ing URL saka versi HTML saka presentation sampeyan kudu pass parameter ?fragments=true, sing bakal nggawe kaca PDF sing kapisah kanggo saben status penengah slide sampeyan (contone, limang kaca kanggo limang titik peluru yen ditampilake siji-sijine). Iki bakal ngidini sampeyan nggunakake PDF kasebut dhewe minangka presentasi sajrone laporan.
Iku trep nalika minger dikompilasi kanthi otomatis nalika owah-owahan digawe kanggo sistem kontrol versi, lan malah luwih trep nalika minger otomatis nyawiji dikirim ing Internet kanggo panggunaan umum. Geser saka Internet bisa gampang "diputer" ing ngarep pamirsa saka mesin apa wae sing disambungake menyang Internet lan proyektor.
Amarga kita nggunakake GitHub ing karya kita, pilihan alami sistem CI yaiku TravisCI, lan kanggo hosting presentasi siap-digawe - github.io. Ide ing github.io yaiku konten statis sing dikirim menyang cabang gh-pages proyek sampeyan ing GitHub, kasedhiya ing <Π²Π°ΡΠ΅ ΠΈΠΌΡ>.gihub.io/<Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ>.
Rampung file konfigurasi TravisCI, kalebu kompilasi versi HTML saka kaca nggunakake Maven, ngowahi menyang PDF nggunakake decktape, lan ngunggah asil menyang thread gh-pages kanggo publikasi ing github.io, katon kaya supaya.
Kanggo mbangun proyek kasebut ing sisih TravisCI, sampeyan kudu ngatur variabel lingkungan
GH_REF - Nilai kaya github.com/inponomarev/csa-hb
GH_TOKEN - Token akses GitHub. Sampeyan bisa entuk saka GitHub ing setelan profil, Setelan Pangembang -> Token Akses Pribadi. Yen sampeyan ngunggah presentasi menyang repositori umum, banjur kanggo token iki cukup kanggo nemtokake tingkat akses mung "Akses repositori umum".
GH_USER_EMAIL / GH_USER_NAME - jeneng / pasangan email atas jenenge push kanggo thread bakal digawa metu gh-pages.
Mangkono, saben kode presentasi ing GitHub ngasilake slide kanthi otomatis dibangun maneh ing format HTML lan PDF lan diunggah maneh menyang github.io. (Mesthi wae, sampeyan mung kudu ngunggah menyang github.io presentasi kasebut sing pungkasane pengin digawe umum.)
Conto proyek
Pungkasan, ana pranala menyang sawetara conto proyek presentasi kanthi skrip Maven sing disesuaikan lan konfigurasi CI kanggo Travis-CI, sing bisa dikloning lan digunakake nalika nggawe proyek presentasi sampeyan dhewe: