ฉันคิดว่าฉันได้นำเสนอผลงานมากมายแก่เพื่อนร่วมงาน ลูกค้า และการพูดในที่สาธารณะในอาชีพไอทีของฉัน หลายปีที่ผ่านมา Powerpoint เป็นตัวเลือกที่เป็นธรรมชาติและเชื่อถือได้สำหรับฉันในฐานะเครื่องมือสร้างสไลด์ แต่ในปีนี้สถานการณ์มีการเปลี่ยนแปลงในเชิงคุณภาพ ตั้งแต่เดือนกุมภาพันธ์ถึงเดือนพฤษภาคม ฉันมีโอกาสพูดในการประชุม XNUMX ครั้ง และต้องเตรียมสไลด์สำหรับรายงานในเวลาอันสั้นแต่มีคุณภาพสูง คำถามเกิดขึ้นเกี่ยวกับการมอบหมายงานส่วนนั้นที่เกี่ยวข้องกับการออกแบบภาพสไลด์ให้กับผู้อื่น ครั้งหนึ่งฉันเคยพยายามทำงานร่วมกับนักออกแบบ โดยส่งไฟล์ .pptx ทางไปรษณีย์ แต่งานกลับกลายเป็นเรื่องยุ่งวุ่นวาย ไม่มีใครรู้ว่าสไลด์เวอร์ชันใดเป็น "ใหม่ล่าสุด" และเลย์เอาต์ "เคลื่อนไหว" เนื่องจากความแตกต่างใน Powerpoint เวอร์ชันและแบบอักษรบนเครื่องของเรา และฉันตัดสินใจลองอะไรใหม่ ๆ ฉันลองแล้ว และตั้งแต่นั้นมาฉันก็ไม่เคยคิดที่จะกลับไปใช้ Powerpoint อีกเลย
เราต้องการอะไร
ประมาณหนึ่งปีครึ่งที่แล้ว บริษัทของเราหยุดใช้ Word เพื่อสร้างเอกสารโครงการ โดยประสบปัญหาเดียวกัน แม้ว่า Word จะดีสำหรับการพิมพ์เอกสารขนาดเล็ก แต่เมื่อปริมาณเพิ่มขึ้น ปัญหาก็เกิดขึ้นกับการทำงานร่วมกันและการได้รับคุณภาพสูงและ การออกแบบแบบครบวงจร ทางเลือกของเราล้มลง
- งานนำเสนอจะต้องเป็นไฟล์ข้อความธรรมดาในภาษามาร์กอัป
- สไลด์ของเราเกี่ยวกับโครงการพัฒนา ดังนั้นมาร์กอัปควรทำให้ง่ายต่อการแทรก โดยไม่ต้องใช้ระบบภายนอก
- ส่วนของโค้ดที่มีการเน้นไวยากรณ์
- แผนภาพง่าย ๆ ในรูปแบบของรูปทรงเรขาคณิตที่เชื่อมต่อกันด้วยลูกศร
- ไดอะแกรม UML ผังงาน และอื่นๆ
- แบบร่างการนำเสนอจะต้องถูกจัดเก็บไว้ในระบบควบคุมเวอร์ชัน
- การตรวจสอบความถูกต้องและการประกอบสไลด์ที่เสร็จแล้วควรทำในระบบ CI
ปัจจุบัน มีสองตัวเลือกพื้นฐานสำหรับการสร้างสไลด์ในภาษามาร์กอัป: แพ็คเกจ
แม้ว่าจิตวิญญาณของฉันจะอยู่ใน LaTeX แต่ใจของฉันก็กำหนดว่าการเลือกโซลูชันที่ฉันจะไม่เป็นเพียงคนเดียวที่ใช้นั้น ควรอยู่เคียงข้างโซลูชันที่คุ้นเคยกับผู้คนในวงกว้าง ไม่ใช่ทุกคนที่รู้จัก LaTeX และหากการปฏิบัติประจำวันของคุณไม่เกี่ยวข้องกับการเขียนบทความทางวิทยาศาสตร์ คุณก็ไม่น่าจะมีเวลาดื่มด่ำในโลกอันใหญ่โตและซับซ้อนของระบบนี้
อย่างไรก็ตาม ความชำนาญในการใช้ HTML/CSS ไม่ใช่ทักษะที่แพร่หลายนัก ตัวอย่างเช่น ฉันยังไม่เชี่ยวชาญด้านนี้อย่างเต็มที่ โชคดีที่ AsciiDoctor ที่คุ้นเคยอยู่แล้วมาช่วยเหลือ: ตัวแปลง
วิธีเขียนโค้ดสไลด์
เพื่อทำความเข้าใจแก่นแท้ของการเขียนโค้ดสไลด์บน AsciiDoctor วิธีที่ง่ายที่สุดคือการยกตัวอย่างที่เฉพาะเจาะจง ทั้งหมดนี้มาจากสไลด์จริงที่ฉันจัดทำขึ้นเพื่อนำเสนอการประชุมในปีนี้
สไลด์ที่มีชื่อเรื่องและรายการในรายการที่เปิดทีละรายการ:
== Зачем нам Streams API?
[%step]
* Real-time stream processing
* Stream-like API (map / reduce)
* Под капотом:
** Автоматический offset commit
** Ребалансировка
** Внутреннее состояние обработчиков
** Легкое масштабирование
ผล
ข้อมูลโค้ดส่วนหัวและซอร์สโค้ดที่มีการเน้นไวยากรณ์:
== Kafka Streams API: общая структура KStreams-приложения
[source,java]
----
StreamsConfig config = ...;
//Здесь устанавливаем всякие опции
Topology topology = new StreamsBuilder()
//Здесь строим топологию
....build();
----
ผล
ในการเตรียมการเสวนา การสาธิตโค้ดจะต้องได้รับการแก้ไขและปรับปรุงซ้ำแล้วซ้ำเล่า ดังนั้น ความสามารถในการคัดลอกและวาง "โค้ดดิบ" ลงในสไลด์โดยตรงอย่างรวดเร็วจึงเป็นสิ่งที่ประเมินค่าไม่ได้ ทำให้มั่นใจได้ว่าการสาธิตจะเป็นปัจจุบันโดยไม่ต้องกังวลกับการเน้นไวยากรณ์
ชื่อเรื่อง ภาพประกอบ และข้อความ (เค้าโครงบนสไลด์เสร็จสิ้นในเซลล์
== Kafka Streams in Action
[.custom-style]
[cols="30a,70a"]
|===
|image::KSIA.jpg[]
|
* **William Bejeck**, +
“Kafka Streams in Action”, November 2018
* Примеры кода для Kafka 1.0
|===
ผล
บางครั้งไม่จำเป็นต้องใช้ชื่อเรื่อง และเพื่ออธิบายประเด็นของคุณ คุณเพียงแค่ต้องมีภาพเต็มหน้าจอ:
[%notitle]
== Жить в легаси нелегко
image::swampman.jpg[canvas, size=cover]
ผล
บ่อยครั้งที่แนวคิดต้องได้รับการสนับสนุนจากแผนภาพง่ายๆ ในรูปแบบของ "สี่เหลี่ยมที่เชื่อมต่อกันด้วยลูกศร" โชคดีที่ AsciiDoctor ถูกรวมเข้ากับระบบ
== Пишем “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;}
}
-----
ผล
ในกรณีที่จำเป็นต้องแก้ไขคำอธิบายภาพ เปลี่ยนทิศทางของลูกศร ฯลฯ สามารถทำได้โดยตรงในโค้ดการนำเสนอ แทนที่จะวาดภาพใหม่ที่ไหนสักแห่งแล้วใส่กลับเข้าไปในสไลด์ สิ่งนี้จะเพิ่มความเร็วในการทำงานบนสไลด์อย่างมาก
ตัวอย่างที่ซับซ้อนยิ่งขึ้น:
== Невоспроизводимая сборка
[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;}
}
-----
ผล
อย่างไรก็ตาม การทดลองกับ Graphviz และแก้ไขข้อบกพร่องรูปภาพบนหน้าเว็บนั้นสะดวก
สุดท้ายนี้ หากคุณต้องการแทรกผังงาน คลาสไดอะแกรม หรือไดอะแกรมมาตรฐานอื่นๆ ลงในสไลด์ ระบบอื่นที่รวมเข้ากับ AsciiDoctor ก็สามารถช่วยได้
การเปลี่ยนโปรเจ็กต์การนำเสนอให้เป็นโค้ดที่เก็บไว้ในระบบควบคุมเวอร์ชันทำให้สามารถจัดระเบียบการทำงานร่วมกันในการนำเสนอได้ ประการแรกคือแยกงานในการสร้างเนื้อหาและการออกแบบ การออกแบบสไลด์ (แบบอักษร พื้นหลัง การเยื้อง) ใน RevealJS ได้รับการอธิบายโดยใช้ CSS ทักษะส่วนตัวของฉันกับ CSS ถ่ายทอดออกมาได้ดีที่สุด
การสร้างหน้า HTML ด้วยสไลด์
แหล่งข้อความธรรมดานั้นดีมาก แต่คุณจะรวบรวมมันลงในงานนำเสนอได้อย่างไร
AsciiDoctor เป็นโปรเจ็กต์ที่เขียนด้วย Ruby และมีหลายวิธีในการรัน ขั้นแรก คุณสามารถติดตั้งภาษา Ruby และรัน asciidoctor ได้โดยตรง ซึ่งอาจเป็นสิ่งที่นักพัฒนา Ruby ใกล้เคียงที่สุด
หากคุณไม่ต้องการยุ่งกับการติดตั้ง Ruby คุณสามารถใช้อิมเมจนักเทียบท่าได้
ตัวเลือกที่ฉันเลือกอาจดูค่อนข้างคาดไม่ถึง แต่สะดวกที่สุดสำหรับฉันในฐานะนักพัฒนา Java ไม่จำเป็นต้องติดตั้ง Ruby หรือ docker แต่ช่วยให้คุณสร้างสไลด์โดยใช้สคริปต์ Maven
ประเด็นก็คือโครงการ
ความพร้อมใช้งาน graphviz
ซึ่งจำเป็นหากคุณต้องการใช้กราฟิก GraphViz หรือ PlantUML) เพียงวางไฟล์ .adoc ของคุณลงในโฟลเดอร์ src/main/asciidoc/
. ที่นี่
แปลงสไลด์เป็น PDF
แม้ว่าสไลด์เวอร์ชัน HTML จะค่อนข้างเพียงพอในตัวเอง แต่ก็ยังจำเป็นต้องมีสไลด์เวอร์ชัน PDF ประการแรก มันเกิดขึ้นว่าในการประชุมบางแห่งที่ไม่เปิดโอกาสให้วิทยากรเชื่อมต่อแล็ปท็อปของตัวเอง สไลด์นั้นต้องการ "ในรูปแบบ pptx หรือ pdf อย่างเคร่งครัด" โดยไม่ได้คาดหวังว่าจะเป็นไฟล์ HTML เช่นกัน ประการที่สอง เป็นรูปแบบที่ดีที่จะส่งสไลด์ของคุณในเวอร์ชันที่ไม่มีการแก้ไขตามที่ปรากฏในรายงานในรูปแบบ PDF ให้กับผู้จัดงานเพื่อเผยแพร่ในเอกสารการประชุม
โชคดีที่ยูทิลิตี้ Node.js จัดการงานนี้
node decktape.js -s 3200x1800 --slides 1-500
reveal "file:///index.html?fragments=true" slides.pdf
เคล็ดลับสองประการเมื่อเปิดตัวเด็คเทป ซึ่งเราต้องเกิดขึ้นจากการลองผิดลองถูก:
-
ความละเอียดผ่านพารามิเตอร์
-s
จะต้องระบุด้วยระยะขอบสองเท่า มิฉะนั้น อาจเกิดปัญหากับผลลัพธ์การแปลง -
ใน URL ของงานนำเสนอเวอร์ชัน HTML คุณต้องส่งพารามิเตอร์
?fragments=true
ซึ่งจะสร้างหน้า PDF แยกกันสำหรับแต่ละสถานะระหว่างกลางของสไลด์ของคุณ (เช่น ห้าหน้าสำหรับสัญลักษณ์แสดงหัวข้อย่อยห้าจุด หากแสดงทีละหน้า) ซึ่งจะทำให้คุณสามารถใช้ PDF ดังกล่าวเป็นการนำเสนอในระหว่างการรายงานได้
ประกอบและเผยแพร่บนเว็บอัตโนมัติ
สะดวกยิ่งขึ้นเมื่อมีการคอมไพล์สไลด์โดยอัตโนมัติเมื่อมีการเปลี่ยนแปลงระบบควบคุมเวอร์ชัน และสะดวกยิ่งขึ้นเมื่อมีการโพสต์สไลด์ที่คอมไพล์อัตโนมัติบนอินเทอร์เน็ตเพื่อการใช้งานสาธารณะ สไลด์จากอินเทอร์เน็ตสามารถ "เล่น" ต่อหน้าผู้ชมได้อย่างง่ายดายจากเครื่องใดก็ได้ที่เชื่อมต่อกับอินเทอร์เน็ตและโปรเจ็กเตอร์
เนื่องจากเราใช้ GitHub ในการทำงาน ตัวเลือกที่เป็นธรรมชาติของระบบ CI ก็คือ gh-pages
ของโครงการของคุณบน GitHub สามารถดูได้ที่ <ваше имя>.gihub.io/<ваш проект>
.
กรอกไฟล์การกำหนดค่า TravisCI รวมถึงการคอมไพล์เวอร์ชัน HTML ของเพจโดยใช้ Maven การแปลงเป็น PDF โดยใช้เด็คเทป และการอัพโหลดผลลัพธ์ไปยังเธรด gh-pages
สำหรับการเผยแพร่บน github.io ดูเหมือนว่า
หากต้องการสร้างโปรเจ็กต์ดังกล่าวบนฝั่ง TravisCI คุณต้องกำหนดค่าตัวแปรสภาพแวดล้อม
GH_REF
— ค่าเช่น github.com/inponomarev/csa-hbGH_TOKEN
— โทเค็นการเข้าถึง GitHub คุณสามารถรับได้จาก GitHub ในการตั้งค่าโปรไฟล์ การตั้งค่านักพัฒนา -> โทเค็นการเข้าถึงส่วนบุคคล หากคุณอัปโหลดงานนำเสนอไปยังพื้นที่เก็บข้อมูลสาธารณะ สำหรับโทเค็นนี้ก็เพียงพอที่จะระบุระดับการเข้าถึง "เข้าถึงพื้นที่เก็บข้อมูลสาธารณะ" เท่านั้นGH_USER_EMAIL
/GH_USER_NAME
— คู่ชื่อ/อีเมลในนามของการดำเนินการพุชไปยังเธรดgh-pages
.
ดังนั้น การคอมมิตโค้ดการนำเสนอแต่ละครั้งบน GitHub ส่งผลให้สไลด์ถูกสร้างขึ้นใหม่โดยอัตโนมัติในรูปแบบ HTML และ PDF และอัปโหลดอีกครั้งไปยัง github.io (แน่นอน คุณควรอัปโหลดงานนำเสนอที่คุณต้องการเปิดเผยต่อสาธารณะไปที่ github.io เท่านั้น)
ตัวอย่างโครงการ
สุดท้ายนี้ ต่อไปนี้เป็นลิงก์ไปยังตัวอย่างบางส่วนของโปรเจ็กต์การนำเสนอที่มีสคริปต์ Maven แบบกำหนดเองและการกำหนดค่า CI สำหรับ Travis-CI ซึ่งสามารถโคลนและนำไปใช้เมื่อสร้างโปรเจ็กต์การนำเสนอของคุณเอง:
-
https://github.com/inponomarev/kstreams-examples (คำพูดของฉันสำหรับ JPoint 2019) -
https://github.com/inponomarev/csa-hb (รายงานของฉันสำหรับ Heisenbug 2019)
ลาก่อนพาวเวอร์พอยต์! ฉันไม่คิดว่าจะต้องการคุณสำหรับการนำเสนอทางเทคนิคอีกต่อไป :)
ที่มา: will.com