15 คะแนน โดย xguru 2022-12-05 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Fiberplane เป็นเครื่องมือโน้ตบุ๊กแบบทำงานร่วมกันสำหรับโครงสร้างพื้นฐาน (การรับมือเหตุขัดข้องและการดีบักโครงสร้างพื้นฐาน)
  • ช่วยแก้ปัญหาใหญ่ได้ 2 อย่าง

1. Operational Transformation

  • จำเป็นต้องมีวิธีแก้ความขัดแย้งในฟีเจอร์การทำงานร่วมกันของเอดิเตอร์
  • ได้ติดตั้งใช้อัลกอริทึม OT ที่ Google Docs ใช้งานอยู่ แต่ไม่ใช่งานที่ง่าย
  • สาเหตุหลักของความซับซ้อนคือ เมื่อจำนวน operation ที่รองรับเพิ่มขึ้น จำนวน transformation ที่ต้องติดตั้งใช้จะเพิ่มขึ้นแบบทวีคูณ
  • ตรรกะสำหรับนำการเปลี่ยนแปลงนี้ไปใช้ต้องมีอยู่ทั้งฝั่ง client/server ความไม่สอดคล้องกันระหว่างสองฝั่งอาจก่อให้เกิดผลข้างเคียงได้ (เช่น โน้ตบุ๊กของผู้ร่วมงานแต่ละคนไม่ตรงกัน)
  • การติดตั้งใช้สิ่งนี้แยกกันสองครั้งในทั้งสองฝั่งมีความเสี่ยง ทีมก็มีขนาดเล็ก และโค้ดที่ต้องทำซ้ำจะเพิ่มขึ้นมหาศาล
  • จึงติดตั้งใช้อัลกอริทึมฝั่งแบ็กเอนด์ด้วย Rust และใช้ WASM เพื่อรันโค้ดเดียวกันแบบตรงกันทุกประการในฝั่งฟรอนต์เอนด์ด้วย
  • วิธีนี้ช่วยประหยัดแรงพัฒนาและลดความเสี่ยงจากความไม่สอดคล้องกัน

2. Providers

  • อีกปัญหาหนึ่งคือการนำข้อมูลจากแหล่งข้อมูลภายนอกเข้าสู่โน้ตบุ๊ก
  • แหล่งข้อมูลมีรูปแบบและขนาดที่หลากหลาย และไม่ใช่ว่าจะเข้าถึงได้ง่ายจากเบราว์เซอร์ของผู้ใช้เสมอไป
  • เพื่อแก้ปัญหานี้ จึงสร้างปลั๊กอินบนพื้นฐาน WASM ชื่อ "Fiberplane Providers" ที่รันได้ทั้งในเบราว์เซอร์และพร็อกซีเซิร์ฟเวอร์ที่ลูกค้าโฮสต์เอง
  • เทคโนโลยีแบบนี้ทำได้ด้วย JavaScript เช่นกัน แต่ WASM มีข้อดีดังนี้
    • ประสิทธิภาพดีกว่า
    • สามารถเขียนปลั๊กอินได้ด้วยทุกภาษาที่ WASM รองรับ
    • ปลั๊กอิน WASM ทำงานใน sandbox จึงจำกัดความสามารถของ provider ที่เป็นอันตรายได้

fp-bindgen

  • WebAssembly มีประโยชน์ในหลายสถานการณ์
  • ช่วยทำให้การพัฒนาผลิตภัณฑ์ภายในง่ายขึ้น หรือรันโค้ดที่เข้าถึงโครงสร้างพื้นฐานของลูกค้าได้อย่างปลอดภัย
  • เนื่องจาก WASM มีความสำคัญและถูกใช้งานมาก จึงได้สร้างเครื่องมือของตัวเองแยกต่างหากด้วย
  • fp-bindgen เป็นตัวสร้าง binding ที่ทำงานกับซอร์สโค้ด Rust
  • ใช้เขียนปลั๊กอิน WASM ใน Rust และโฮสต์ในเบราว์เซอร์หรือสภาพแวดล้อม Wasmer ได้
  • fp-bindgen ถูกเผยแพร่เป็นโอเพนซอร์สแล้ว

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

 
xguru 2022-12-05

ฉันชอบบทความสตาร์ทอัปแนวนี้ครับ
ให้ความรู้สึกว่าพวกเขาจัดระเบียบปัญหาที่ตัวเองแก้ได้ไว้ให้เป็นประโยชน์กับคนอื่น พร้อมกับโปรโมตโอเพนซอร์สที่เกี่ยวข้องของตัวเองไปด้วย และยังดูเหมือนมีส่วนช่วยต่อระบบนิเวศอีกด้วย

ใน GeekNews Weekly #177 เคยแนะนำ QuickJS-emscripten : คอมไพล์และรัน QuickJS เป็น WASM ไว้ครับ
ที่นี่ก็ใช้แนวคิดปลั๊กอินผ่านการแซนด์บ็อกซ์ในลักษณะคล้ายกันเหมือนกันนะครับ ดูเหมือนว่าการใช้ WASM เป็นคอนเทนเนอร์สำหรับการแซนด์บ็อกซ์กำลังจะกลายเป็นพื้นฐานไปแล้ว