- SVG เป็นฟอร์แมตกราฟิกเวกเตอร์แบบ XML ที่เรียบง่าย รองรับแทบทุกแพลตฟอร์ม และสามารถ ฝังสคริปต์เพื่อสร้างการแสดงผลเชิงโต้ตอบ ได้
- เครื่องมือแสดงผลแบบ SVG ที่สร้างขึ้นจากงานวิจัย เครือข่ายไมซีเลียม ในอดีต ยังทำงานได้อย่างสมบูรณ์บนเบราว์เซอร์สมัยใหม่แม้เวลาจะผ่านไปแล้ว 20 ปี ซึ่งพิสูจน์ให้เห็นถึง ความทนทานของฟอร์แมต
- เพียงไฟล์ SVG แบบพึ่งพาตนเองได้ครบถ้วน ไฟล์เดียว ก็สามารถทำการโหลดข้อมูล ประมวลผล สร้างภาพ และโต้ตอบทั้งหมดได้ฝั่งไคลเอนต์
- ในความเชื่อมโยงกับแนวคิด “4P” ของ Anil (Permanence, Provenance, Permission, Placement) จึงเน้นย้ำถึงความคงทน ความเข้ากันได้กับระบบจัดการเวอร์ชัน การแยกสิทธิ์ และพลังในการแสดงผลเชิงพื้นที่ของ SVG
- ด้วยสมรรถนะการประมวลผลของเบราว์เซอร์ยุคใหม่ที่ดีขึ้น จึงเปิดทางให้ สามารถสร้างไปป์ไลน์การวิเคราะห์ข้อมูลทั้งชุดภายใน SVG ได้ และทำให้มันเป็นเครื่องมือสำคัญต่อการเผยแพร่งานวิจัยและการทำซ้ำผลลัพธ์
ศักยภาพของ SVG และอุดมคติของการตีพิมพ์งานวิทยาศาสตร์
- SVG เป็นกราฟิกเวกเตอร์ในฟอร์แมต XML ที่เรียบง่าย แสดงผลได้คมชัดบนทุกอุปกรณ์ และสามารถ ฝังสคริปต์เพื่อสร้างคอนเทนต์แบบโต้ตอบ ได้
- มันมี ความสามารถทรงพลัง ที่ผู้ใช้ส่วนใหญ่ไม่ทันสังเกต และยังสามารถนำไปใช้ให้เต็มศักยภาพได้มากกว่านี้
- มีการเสนออุดมคติว่า บทความวิชาการ ควรมี สภาพแวดล้อมเชิงโต้ตอบที่สมบูรณ์ เพื่อรองรับการสำรวจข้อมูลและการทำซ้ำการทดลอง
- แม้บางการทดลองจะทำซ้ำได้ยากทันทีเพราะข้อจำกัดด้านต้นทุนและเวลา แต่สำหรับ บทความด้านวิทยาการคอมพิวเตอร์ แนวคิดนี้สามารถทำให้เกิดขึ้นได้จริงเพียงพอ
การค้นพบเครื่องมือแสดงผล SVG จากเมื่อ 20 ปีก่อนอีกครั้ง
- ระหว่างทำวิจัยหลังปริญญาเอกที่ภาควิชาพฤกษศาสตร์ มหาวิทยาลัยเคมบริดจ์ ได้สร้างเครื่องมือแสดงผลบน SVG สำหรับงานวิจัย ปฏิสัมพันธ์ร่วมของเครือข่ายไมซีเลียม
- ออกแบบมาเพื่อให้สามารถสำรวจข้อมูลเครือข่ายไมซีเลียมที่เติบโตจริงในจานเพาะเชื้อเพทรีได้
- เมื่อลองรัน SVG ดังกล่าวอีกครั้งในช่วงหลัง พบว่า โค้ดจากยุคที่ต้องใช้ Firefox 1.5 หรือ Adobe SVG plugin ยังทำงานได้สมบูรณ์บนเบราว์เซอร์สมัยใหม่
- นี่เป็นตัวอย่างที่แสดงให้เห็นถึง ความเข้ากันได้ระยะยาวและความเสถียร ของฟอร์แมต SVG
โครงสร้างของ SVG แบบพึ่งพาตนเองได้อย่างสมบูรณ์
- เพียงไฟล์ SVG ไฟล์เดียว ก็สามารถทำการโหลดข้อมูล ประมวลผล สร้างภาพ และโต้ตอบได้ทั้งหมด
- สามารถดึงข้อมูลจากที่เก็บเวอร์ชันภายนอก หรือฝังไว้ภายในไฟล์โดยตรงก็ได้
- การประมวลผลทั้งหมดเกิดขึ้นใน เบราว์เซอร์ฝั่งไคลเอนต์ และ ไม่จำเป็นต้องมีลอจิกฝั่งเซิร์ฟเวอร์
- สามารถเผยแพร่และแชร์ได้ง่ายผ่านเว็บเซิร์ฟเวอร์แบบสแตติก
ความเชื่อมโยงกับ “4P” ของ Anil
- Permanence (ความคงทน) : SVG สามารถ กำหนด DOI ได้ เช่นเดียวกับบทความหรือชุดข้อมูล และไฟล์ที่สร้างเมื่อ 20 ปีก่อนยังคงใช้งานได้ก็เป็นหลักฐานของเรื่องนี้
- Provenance (การติดตามที่มา) : SVG เป็น ข้อความล้วน จึงเข้ากันได้กับระบบจัดการเวอร์ชันอย่าง Git และหากใช้ข้อมูลภายนอกก็สามารถใช้แนวทางติดตามที่มาแบบเดียวกันได้
- Permission (การจัดการสิทธิ์) : ข้อมูลและลอจิกการประมวลผลแยกจากกัน จึงสามารถใช้ โมเดลสิทธิ์ แบบเดียวกับข้อมูลทั่วไปได้
- Placement (มิติของพื้นที่) : SVG มี การแสดงผลเชิงพื้นที่โดยเนื้อแท้ เช่น สามารถสร้างภาพ แผนที่โลก ได้อย่างง่ายดาย
พลังประมวลผลของเบราว์เซอร์ที่สูงขึ้นและความเป็นไปได้ใหม่
- SVG ที่สร้างขึ้นเมื่อ 20 ปีก่อนเป็นเพียงเครื่องมือแสดงผลอย่างง่าย แต่ด้วย พลังการประมวลผลของเบราว์เซอร์สมัยใหม่ที่สูงขึ้น ปัจจุบันจึง สามารถสร้างไปป์ไลน์การวิเคราะห์ข้อมูลทั้งชุด ไว้ภายใน SVG ได้แล้ว
- แม้เป็นการประมวลผลเบา ๆ ระดับที่พัดลมโน้ตบุ๊กแทบไม่ต้องหมุนก็ยังเพียงพอ
SVG ในระบบนิเวศการแบ่งปันงานวิจัย
- ร่วมกับ Jupyter โน้ตบุ๊ก, Marimo botebooks, slipshow/x-ocaml, Forester, และ โปรเจกต์โน้ตบุ๊กส่วนตัว
- SVG ได้กลายเป็นอีกหนึ่ง เครื่องมือที่ช่วยให้แชร์และนำผลการวิจัยไปประกอบใช้ใหม่ได้ง่าย
- เครื่องมือเหล่านี้ล้วนเป็นส่วนหนึ่งของความพยายามต่อเนื่องเพื่อสร้าง สภาพแวดล้อมการวิจัยที่ทำงานร่วมกันได้และทำซ้ำผลลัพธ์ได้
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
โดยเรนเดอร์ UI ทั้งหมดด้วย SVG และมันทำงานได้ดีเกินคาด
โปรเจกต์นี้ชื่อ StageKeep เดิมทีทำด้วย React Three Fiber ก่อนจะรีแฟกเตอร์มาเป็น SVG
ได้แรงบันดาลใจจากแนวคิด Signed Distance Function และชอบไอเดียของ ฟังก์ชันเชิงอะตอม ที่รับอินพุตแล้วส่งออกเป็น SVG
ด้วย SVG + CSS + JavaScript เราทำแทบทุกอย่างที่ Flash เคยทำได้ แต่ไม่มี เครื่องมือสร้างงาน ที่ดีเท่า Flash
สุดท้าย Flash ก็หายไป และก็ยังไม่มีอะไรมาแทนที่ตำแหน่งนั้นได้อย่างสมบูรณ์
เช่นวิเคราะห์แล้วนำเข้าท่าเต้นจากวิดีโอของ Project21 หรือ Avantgardey
วิธีแก้คือมี SVG สองเวอร์ชัน: เวอร์ชันต้นฉบับสำหรับ Inkscape และ เวอร์ชันสำหรับแจกจ่าย ที่แปลงข้อความเป็นเส้นโค้งแล้ว
การเรนเดอร์ต่างกันระหว่างเบราว์เซอร์ทำให้ได้ผลลัพธ์ที่สม่ำเสมอยาก และ SVG ที่ซับซ้อนก็มักมีปัญหา memory leak หรือ ความเร็วในการเรนเดอร์ตกลงมาก
นอกจาก Inkscape แล้ว บนลินุกซ์ก็แทบไม่มีเอดิเตอร์ที่ใช้การได้
ถึงอย่างนั้นก็ยังใช้ SVG อยู่เพราะไม่มีทางเลือกที่ดีกว่า แต่พยายามทำให้มันเรียบง่ายที่สุดเท่าที่ทำได้
<foreignObject>ก็จะ ตัดบรรทัดข้อความ ได้ใน SVG 2 มีแผนจะแก้ด้วยพร็อพเพอร์ตี
inline-sizeการฝังฟอนต์ก็มีอยู่แล้วผ่านองค์ประกอบ
<font>หรือการใส่ WOFF เป็น data URIแต่เรื่องอย่างเส้นฐานของข้อความหรือการควบคุมสเกลยังคงเป็น สเปกที่ไม่สมบูรณ์
เอกสารที่เกี่ยวข้อง: SVG2 InlineSizeProperty, SVG11 Fonts
@font-faceใน<style>ได้แต่ไม่แนะนำเพราะขนาดไฟล์จะใหญ่ขึ้นมาก
บน Safari สามารถเลือกได้ถ้าใช้
<text>ดังนั้นไม่ว่าทางไหนก็ยังไม่ใช่คำตอบที่สมบูรณ์บล็อก Illustrated Evo2 ของ NVIDIA ก็น่าประทับใจมาก
รูปทั้งหมดเชื่อมกับเว็บไซต์ และสามารถทำซ้ำในเบราว์เซอร์ได้ด้วย DuckDB + WebR + ggplot
ตัวอย่าง: เดโม Figure 1
แต่การเปิดให้สำรวจข้อมูลได้จากหลายมุมมองก็เป็นไอเดียที่น่าสนใจ
PDF มีข้อจำกัดด้าน interactive และทั้ง Word กับ PDF ก็อ่อนเรื่อง การฝังมัลติมีเดีย
ถ้าต้องการแค่เวกเตอร์กราฟิก PostScript ก็อาจเป็นทางเลือกได้
เพราะไม่ชอบเครื่องมือทำกราฟแบบ JS/PHP เดิม ๆ อย่าง pCharts, HighCharts ฯลฯ เลยเขียนเอง และมันก็ทำงานได้ดีอย่างน่าประหลาด
คุณสร้าง SVG ที่สะอาดสวยได้ด้วยคณิตศาสตร์ล้วน ๆ และยังได้ การขยายแบบไร้ขีดจำกัด เป็นของแถม
เป็นเครื่องมือจากผู้สร้าง D3 ที่กระชับและมี การใช้งาน API ที่ยอดเยี่ยม
ไม่มี animation แต่เพียงพอมากสำหรับกราฟในงานวิจัย
ในอีกเส้นเวลา มันอาจกลายเป็นมาตรฐานแทน HTML หรือ SVG ก็ได้
เป็นตัวอย่างของการใส่ interaction แบบน้อยที่สุดด้วย D3.js บน SVG และเป็นครั้งแรกที่เห็นสไตล์ของ Shan Carter แล้วอยากไปร่วมทีมของเขา
ผ่าน HTTP server แบบฝังตัว จึงแสดงกราฟอุณหภูมิและหน้าปัดผ่าน เว็บ UI ที่ใช้ SVG ได้ ซึ่งทำงานร่วมกับ JS ได้ดี
โค้ดอื่นที่เขียนในยุคนั้นส่วนใหญ่ต้องแก้ แต่ SVG ยังใช้ได้เหมือนเดิม
แต่ตอนนี้แม้แต่ SVG เมื่อ 20 ปีก่อนก็ยังทำงานได้ในเบราว์เซอร์ส่วนใหญ่โดยไม่มีปัญหา
ถ้าเป็น QR code หรือแผนที่ซับซ้อนที่มี DOM element เกิน 100 ตัวก็จะเริ่มช้า และ animation ก็ช้ากว่า canvas หรือ Lottie
ลิงก์โปรเจกต์
ในงานศิลปะจัดวางของเพื่อน มีการฉาย SVG กระดานหมากรุกหลายสิบอันพร้อมกัน และขีดจำกัดที่เบราว์เซอร์รับไหวก็ค่อนข้างต่ำ
แต่ก็ต้องแลกกับการเสียความสามารถบางอย่างของ SVG ไป
ตอนทำ visualization ของโมเดล CAD กำลังมองหาวิธี สะท้อนเฉพาะการเปลี่ยนแปลงบางส่วน โดยไม่ต้องส่งออกไฟล์ .step ทั้งหมด
ลิงก์ตัวอย่าง
ทำด้วย Inkscape และทำงานได้ทันทีในเบราว์เซอร์