3 คะแนน โดย GN⁺ 2024-03-04 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

แนวคิดใหม่ของ Observable Framework

  • Observable Framework เป็นเครื่องมือสร้างเว็บไซต์แบบสแตติกที่คอมไพล์ Markdown และ JavaScript เข้าด้วยกันเป็นหน้าแบบอินเทอร์แอ็กทีฟที่โหลดได้รวดเร็ว
  • มีเซิร์ฟเวอร์ hot reloading ที่ให้แก้ไขและบันทึกไฟล์แบบเรียลไทม์ พร้อมดูการเปลี่ยนแปลงในเบราว์เซอร์ได้ทันที
  • เมื่อทำงานเสร็จแล้ว สามารถแปลงเป็นไฟล์สแตติกเพื่อนำไป deploy บนเซิร์ฟเวอร์ หรือ deploy ตรงไปยังแพลตฟอร์มแชร์ของ Observable ได้

JavaScript ภายใน Markdown

  • โค้ดบล็อกใน Markdown ที่ติดแท็ก js จะถูกรันเป็น JavaScript บนเบราว์เซอร์ของผู้ใช้
  • ตัวแปรพิเศษชื่อ now จะให้เวลาปัจจุบันเป็นมิลลิวินาทีนับจาก epoch และอัปเดตอย่างต่อเนื่อง
  • Observable Framework รวม Markdown และ JavaScript ไว้ในเอกสารข้อความเดียวเพื่อสร้างเอกสารแบบอินเทอร์แอ็กทีฟ

ทุกอย่างยังคงเป็น reactive

  • Observable Framework ยังคงความเป็น reactive แบบเดียวกับ Observable notebook และจะรีเฟรชอัตโนมัติเมื่อเซลล์อื่นที่อ้างอิงมีการเปลี่ยนแปลง
  • มีประโยชน์อย่างยิ่งเมื่อทำงานร่วมกับ input ของฟอร์ม และช่วยเพิ่มความอินเทอร์แอ็กทีฟแบบเรียลไทม์ลงในเอกสารได้ง่าย

รวมเฉพาะโค้ดที่ใช้งาน

  • Observable Framework ใช้ lazy loading ในโหมดพัฒนา เพื่อโหลดเฉพาะโค้ดที่ถูกใช้งาน
  • เมื่อ build และ deploy แอปพลิเคชัน ระบบจะโหลดเฉพาะโค้ดของไลบรารีที่ถูกอ้างอิงจาก jsdelivr CDN โดยอัตโนมัติ

แคชข้อมูลในช่วง build

  • Framework ใช้กลไก data loader เพื่อสร้างข้อมูลแดชบอร์ดในช่วง build และ bundle เป็นไฟล์สแตติก
  • data loader คือสคริปต์ที่สามารถเขียนได้ด้วยภาษาโปรแกรมใดก็ได้ โดยจะรันในช่วง build และบันทึกผลลัพธ์เป็นไฟล์

เปรียบเทียบกับ Observable notebook

  • Observable Framework นำแนวคิดและโค้ดจาก Observable notebook กลับมาใช้ซ้ำ แต่ประกอบด้วยไฟล์ข้อความเพียงไฟล์เดียว และเป็นโอเพนซอร์สทั้งหมด
  • ใช้ JavaScript มาตรฐาน และสามารถเช็กอินเข้า Git ได้ด้วยรูปแบบไฟล์ที่เรียบง่ายกว่า

การเปลี่ยนแปลงของกลยุทธ์

  • Observable Framework สะท้อนการเปลี่ยนแปลงเชิงกลยุทธ์ของบริษัท Observable ที่หันไปเน้นพื้นที่เครื่องมือสำหรับนักพัฒนามากขึ้น
  • Observable Framework แสดงถึงการให้คุณค่ากับเทคโนโลยีของ Observable notebook พร้อมทั้งแก้ปัญหาที่เคยจำกัดการใช้งานจากความเป็นแพลตฟอร์มแบบปิดและข้อจำกัดของบัญชีฟรี

ความเห็นของ GN⁺

  • Observable Framework เป็นเครื่องมือใหม่สำหรับการทำ data visualization และสร้างแดชบอร์ด ที่มีศักยภาพในการช่วยให้นักพัฒนาทำงานร่วมกันได้ดีขึ้นและมีประสิทธิภาพมากขึ้น
  • แพลตฟอร์มนี้ช่วยให้สร้างเอกสารและแดชบอร์ดแบบอินเทอร์แอ็กทีฟเพื่อสนับสนุนการตัดสินใจบนฐานข้อมูลได้ง่าย จึงน่าจะมีประโยชน์ทั้งกับนักวิทยาศาสตร์ข้อมูลและนักพัฒนา
  • อย่างไรก็ตาม ความสำเร็จของ Observable Framework จะขึ้นอยู่มากกับการยอมรับจากชุมชนนักพัฒนาและระดับการผสานรวมกับเครื่องมือที่มีอยู่เดิม
  • โปรเจ็กต์อื่นที่มีความสามารถคล้ายกัน ได้แก่ Jupyter Notebook และ R Shiny ซึ่งการเปรียบเทียบกับเครื่องมือเหล่านี้จะช่วยให้เข้าใจจุดแข็งและจุดอ่อนของ Observable Framework ได้ดีขึ้น
  • เมื่อนำ Observable Framework มาใช้ ควรพิจารณาปัจจัยอย่างความเข้ากันได้กับ data pipeline เดิม การปรับแต่งประสิทธิภาพ และการสนับสนุนจากชุมชน

1 ความคิดเห็น

 
GN⁺ 2024-03-04
ความคิดเห็นบน Hacker News
  • เปรียบ Observable Framework ว่าเป็น "Avengers: Endgame" ในจักรวาลภาพยนตร์ของ Mike Bostock

    • อธิบายว่าเป็นการผสาน d3, Observable, Observable Plot และ HTL เข้าด้วยกัน พร้อมเพิ่มไอเดียใหม่ ๆ เข้าไป
  • มีการกล่าวถึงปัญหาเมื่อใช้ Observable Framework ในฐานะแหล่งตัวอย่างของ d3

    • เนื่องจากถูกออกแบบมาให้รันได้เฉพาะในเฟรมเวิร์กนั้น จึงไม่สามารถคัดลอกแล้ววางโค้ดไปใช้ตรง ๆ ได้
    • ตัว d3 เองก็ไม่ได้ใช้งานง่ายนัก และมีปัญหาความเข้ากันได้ระหว่างเวอร์ชัน แต่ก็สามารถพบกราฟิกที่น่าทึ่งได้บนเว็บไซต์
  • มีการกล่าวว่าสามารถเผยแพร่ Observable Framework ไปยัง GitHub Pages ได้อย่างง่ายดาย

    • มีการให้ลิงก์ไปยังโน้ตที่เขียนขั้นตอนการเผยแพร่และตัวอย่าง GitHub Action ไว้
  • มีการแชร์ประสบการณ์การทำโปรเจ็กต์แรกให้เสร็จโดยใช้ Observable notebook

    • ใช้พลังงานไปมากในการเรียนรู้เครื่องมือต่าง ๆ เช่น Observable Plot, Arquero, การทบทวน JavaScript บางส่วนใหม่อีกครั้ง และการผสานเข้ากับ simulator ที่สร้างด้วย Rust
    • การใช้ Markdown และความเป็น reactive ทำให้ notebook รู้สึกว่านำไปใช้งานได้จริง
    • ช่วยแก้ปัญหาเรื่องการจัดการเวอร์ชันจากฟอร์แมตแบบกำหนดเองของ Jupyter รวมถึงความสับสนจากการไม่มีความเป็น reactive และการอิงสถานะ
    • เคยลองผสาน Observable เข้ากับ Quarto ด้วย แต่ให้ความรู้สึกว่ายังไม่สมบูรณ์และกระจัดกระจาย
    • เป็นประสบการณ์ที่สนุกและน่าตื่นเต้นมากในการเขียนและแชร์ notebook และจะยังใช้เป็นเครื่องมืออันดับแรกต่อไป
  • มีการแชร์ประสบการณ์เชิงบวกเกี่ยวกับ Observable Framework

    • กล่าวว่าการตั้งค่า interactive plot และกระบวนการพล็อตข้อมูลทำได้ง่ายมาก
    • ระบุว่าอยากให้สามารถตั้งค่า Python data loader ให้ใช้ virtualenvs ได้
  • มีการตั้งคำถามว่าควรย้ายจาก Jupyter notebook ไปใช้ Observable หรือไม่

  • อธิบายว่าเมื่อมีคำใบ้เนื้อหา js ภายใน code block โค้ดจะถูกรันทันทีในเบราว์เซอร์ของผู้ใช้

    • หากต้องการแสดงโค้ด ควรใช้คำใบ้ js echo
    • ตั้งประเด็นถึงปัญหาที่ต้องจัดการการรันเมื่อผสาน renderer เข้าไปในแอปที่มีอยู่เดิม
  • มีการกล่าวว่า Observable ผสานกับ REST API ของ ClickHouse ได้ดี และตัวอย่างการ query ฐานข้อมูลแบบเรียลไทม์ก็น่าสนใจ

    • หวังว่าการ preload และ cache ข้อมูลจะไม่ใช่ทางเลือกเดียว เพราะแอปจำเป็นต้องมีความโต้ตอบได้
  • มีการตั้งค่า Codespace devcontainers ที่มีการตั้งค่า environment ของ Node และ Python อัตโนมัติ เพื่อให้สามารถทดลองและปรับแต่ง Framework ได้อย่างรวดเร็วในเบราว์เซอร์

  • มีความเห็นว่า Observable จำกัดฐานผู้ใช้ด้วยการรองรับเฉพาะ JavaScript

    • แม้ JavaScript จะเป็นภาษาจำเป็นสำหรับการแสดงผลแบบโต้ตอบในเบราว์เซอร์ แต่ถูกมองว่าเป็นภาษาที่ไม่สะดวกสำหรับ data science และ data analysis เมื่อเทียบกับ Python หรือ R