Show HN: Nash - โน้ตแบบสแตนด์อโลนที่สร้างเป็นไฟล์ HTML เดียว
(keepworking.github.io)- Nash คือ โน้ตแบบสแตนด์อโลนบน HTML ที่เปิดและแก้ไขได้ในเว็บเบราว์เซอร์ โดยไม่ต้องใช้บริการแยกต่างหาก
- โน้ตที่บันทึกไว้สามารถแก้ไขแบบออฟไลน์ได้ จึงมุ่งให้ใช้งานในลักษณะ เหมือนไฟล์เอกสาร แทน Notion หรือ Word
- สามารถใช้สร้าง คอนเทนต์รูปแบบเอกสาร HTML เช่น บล็อกแบบสแตติก คอนเทนต์หน้าเดียว หรือแนบรูปพิซซ่าจากแกลเลอรีได้
- เมื่อส่งผ่านเมสเซนเจอร์ จะดูได้จากพรีวิว ทำให้สามารถแชร์คอนเทนต์ยาว ๆ ในรูปแบบเหมือนไฟล์ได้
- Nash เผยแพร่เป็น โอเพนซอร์ส และสามารถแก้ไขหน้าโน้ตเปล่าเพื่อนำไปใช้งานได้อย่างอิสระ
โน้ต HTML ที่เขียนได้ด้วยเบราว์เซอร์เท่านั้น
- Nash คือโน้ตแบบสแตนด์อโลนที่มุ่งแนวคิด note as HTML
- ไม่ต้องใช้ซอฟต์แวร์หรือบริการแยกต่างหาก เพียงมี เว็บเบราว์เซอร์ ที่โดยทั่วไปติดตั้งอยู่แล้วก็ใช้งานได้
- โน้ตที่บันทึกไว้รองรับ การแก้ไขแบบออฟไลน์
- สามารถเปิดโน้ตเปล่าได้ที่ nash.html
คอนเทนต์ที่สร้างได้และวิธีแชร์
- ใช้สร้างบล็อกแบบสแตติกหรือ คอนเทนต์หน้าเดียว ได้
- สามารถเขียนคอนเทนต์ในลักษณะแนบรูปจากแกลเลอรีได้ด้วย
- เมื่อส่งผ่านเมสเซนเจอร์ จะดูได้เป็น พรีวิว จึงใช้แชร์คอนเทนต์ยาว ๆ ได้
- เริ่มต้นจากประสบการณ์การทำ POC ไอเดียง่าย ๆ ด้วย HTML ไฟล์เดียว และเป็นความพยายามแรกในการสร้างไฟล์เอกสารที่ทำงานได้โดยไม่ต้องพึ่งบริการหรือซอฟต์แวร์แยกต่างหาก
- Nash เผยแพร่เป็น โอเพนซอร์ส จึงสามารถแก้ไขและใช้งานได้อย่างอิสระ
2 ความคิดเห็น
Nash, โน้ตที่ทำงานด้วย HTML ไฟล์เดียว
เห็นว่าที่เคยโพสต์ใน Show GN ได้นำไปโพสต์บน Hacker News ด้วย และได้รับโหวตเยอะเลยนะครับ ขอแสดงความยินดีด้วย!
ความคิดเห็นจาก Hacker News
งานหนักส่วนใหญ่ถูกจัดการได้ด้วย แอตทริบิวต์ HTML ที่เรียบง่ายแต่ทรงพลัง เพียงตัวเดียว แต่น่าแปลกที่ดูเหมือนนักพัฒนาจำนวนมากไม่รู้จักสิ่งนี้
เป็นฟีเจอร์ที่มีมานานมากแล้ว
Writely คือสตาร์ทอัพที่ต่อมากลายเป็น Google Docs และผมพูดในฐานะหนึ่งในผู้ก่อตั้ง
ส่วนอีก 90% ที่เหลือคือโค้ดแบ็กเอนด์ที่ต้องเขียนเพื่อซิงก์เนื้อหาที่แก้ไขให้ถูกต้อง เพราะแต่ละเบราว์เซอร์มี บั๊ก implementation ของ contenteditable แปลก ๆ ต่างกันไป :-)
แต่ (1) การแต่งสไตล์ WP น่ารำคาญมากและไม่อยากดูแลต่อ, (2) ไม่อยากพึ่งฟีเจอร์ของปลั๊กอินกับการอัปเกรด WP, และ (3) อยากให้คนที่มีสิทธิ์เข้าถึงต่างกันสามารถแก้ไขคนละส่วนในหน้าเดียวกันได้ ซึ่งใน CMS ส่วนใหญ่แทบเป็นไปไม่ได้
เลยสร้าง CMS แทบจะตั้งแต่ศูนย์ โดยอิงแค่ contenteditable กับ TinyMCE แล้วติดแท็กนั้นให้กับพื้นที่ที่แก้ไขได้ แน่นอนว่าก่อนบันทึก แบ็กเอนด์จะตรวจว่าใครแก้อะไรได้บ้าง
เมื่อลูกค้าหรือพนักงานล็อกอิน ก็แก้ไขได้ทันทีเฉพาะส่วนของหน้าที่ตนมีสิทธิ์ และ CMS จะแสดงเส้นขอบประรอบส่วนที่แก้ไขได้ ฟอนต์และสีเก็บไว้ในการตั้งค่า TinyMCE จึงไม่ต้องไปค้นหรือแตะ HTML ถ้าต้องการจะแก้เองก็ทำได้
สำหรับลูกค้าแล้วมันให้ความรู้สึกค่อนข้างเหมือนเวทมนตร์ เพราะไม่ต้องไปหน้าแก้ไขแยกต่างหากเพื่อดูว่าหลังเปลี่ยนแล้วเป็นอย่างไร แค่ แก้ไขตรงตำแหน่งเดิม บนหน้าแล้วบันทึก ก็เผยแพร่ทันที
เว็บไซต์เหล่านี้ส่วนใหญ่ผ่านไป 5–10 ปีแล้วก็ยังใช้งานอยู่ และแทบไม่ต้องให้ผมดูแลฝั่งของผมเลย
https://news.ycombinator.com/item?id=43179649
contenteditable="true"ใน div ระดับบนสุดผมว่าผมเคยทำงานกับสิ่งนี้เมื่อ 20 ปีก่อนด้วยซ้ำ
ContentEditable ถูกนำเข้ามาครั้งแรกใน IE 5.5 เมื่อปี 2000 และภายในปี 2007 ก็ใช้ได้ในเบราว์เซอร์หลักทั้งหมดแล้ว
ชอบมาก และยิ่งดีขึ้นเมื่อดูซอร์สแล้วเห็นว่ากำลังเขียนด้วย JavaScript ล้วน
ทุกวันนี้ความจริงที่ว่าเราสามารถสร้างเว็บแอปที่มีการโต้ตอบค่อนข้างมากได้โดยไม่ต้องใช้ไลบรารีหรือเฟรมเวิร์กยังถูกประเมินค่าต่ำไป
ไอเดียการทำเว็บแอปโลคัลแบบง่าย ๆ เป็น หน้า HTML ไฟล์เดียว ก็ดีมากเช่นกัน ก่อนหน้านี้เคยไปพิพิธภัณฑ์วิทยาศาสตร์กับลูกแล้วได้ลองใช้แอนิเมเตอร์ stop-motion ง่าย ๆ จากนั้นผมทำเว็บแอปคล้าย ๆ กันแล้วคัดลอกเป็นไฟล์ HTML ไฟล์เดียวลงแล็ปท็อปของลูก ทำให้ใช้ได้แม้ไม่มีอินเทอร์เน็ต
แต่ผมขี้เกียจเขียน JavaScript ล้วนเอง เลยทำด้วย React กับ bundler และผลลัพธ์ถูกรวมเป็นไฟล์ HTML ไฟล์เดียว สักวันอาจเอาไปลง Show HN
ด้วย JavaScript ล้วนธรรมดา ๆ และฝีมือที่ดี คุณทำแทบทุกอย่างให้สะอาดกว่าและดูแลรักษาง่ายกว่าได้
หลังจากดูแลของที่คนอื่นทำมาหลายสิบปี ผมพบว่า การออกแบบที่เรียบง่ายจนเหมือนโง่ จากคนฉลาดเอาชนะชุดผสมแบบอื่น ๆ ได้
ทำได้ดี
น่าลองพิจารณาเปลี่ยนพฤติกรรมให้เมื่อเปิดหน้าจากดิสก์ในเครื่องด้วยเบราว์เซอร์ ก็เข้าสู่โหมดแก้ไขโดยอัตโนมัติ แต่เมื่อถูกโพสต์บนเว็บไซต์ของใครบางคนและเข้าถึงจากเว็บสาธารณะ ก็เป็น มุมมองอ่านอย่างเดียว ตามปกติ แค่ตรวจว่าที่อยู่เป็น http/https หรือไม่ก็พอ
แน่นอนว่าควรมีวิธีเลี่ยงอย่างพารามิเตอร์ query string หรือ magic URL fragment เพื่อให้ยังดูในโหมดแก้ไขได้
และควรตั้งข้อยกเว้นให้โดเมนหรือ prefix URL บางรายการได้ ค่าเริ่มต้นอาจเป็น keepworking.github.io หรือ <https://keepworking.github.io/nash/> เพื่อให้โหมดแก้ไขเปิดบนไซต์นั้นด้วย จะได้ไม่ต้องทำอะไรเพิ่มเพื่อเดโม
ถ้าผู้ใช้แก้ไขข้อยกเว้นนี้ได้จะยิ่งดี เช่น คนอื่นก็จะได้พฤติกรรมเดียวกันโดยไม่ต้องใช้ทริกข้อ 1
ส่วนตัวคิดว่ามันยอดเยี่ยม จึงอยากให้คงวิธีปัจจุบันไว้
ใช้ https://rpdillon.net/redbean-tiddlywiki-saver.html จะทำให้มันเป็น แอปพกพาแบบพึ่งพาตัวเอง ที่บันทึกได้ “จริง ๆ”
แบบนั้นจะเข้าใกล้ฟีเจอร์ที่มี บุ๊กมาร์กส่วนตัว ได้ตามต้องการมากขึ้น
ดี มีการพูดคุยก่อนหน้านี้ที่กล่าวถึงไอเดียนี้กับ TiddlyWiki
https://news.ycombinator.com/item?id=43179649
อยากให้เบราว์เซอร์รองรับ เว็บแอปโลคัล ได้ดีกว่านี้
ถ้าไฟล์โลคัลเข้าถึงพื้นที่จัดเก็บถาวรได้ง่าย ๆ ก็จะเปิดโอกาสมากมายสำหรับแอป GUI ที่เร็วและทำง่าย โดยพื้นฐานแล้วเป็นทิศทางตรงข้ามกับ Electron
เจ๋งดี อาจเป็นเพราะผมคุ้นเคยกับการเขียนส่วน JavaScript ของเว็บไซต์ไว้นอก HTML จริง ๆ มากเกินไป ตอนเห็นครั้งแรกเลยคิดว่า “ว้าว แปลกดีที่ทำแบบนี้ได้ด้วย HTML อย่างเดียว”
แต่พอดูซอร์สแล้วเห็นว่า JavaScript อยู่ในแท็ก
scriptธรรมดา ๆ เลยทำให้นึกขึ้นมาอีกครั้งว่า มันก็ทำแบบนั้นได้เหมือนกันหน้าจอส่วนใหญ่ที่เราเห็นทุกวัน แม้แต่ตัวแก้ไขโค้ด ก็เป็น หน้า HTML
ที่น่าประหลาดใจกว่านั้นคือ ผู้คนใช้เฟรมเวิร์กแล้วใส่สิ่งที่ไม่ใช่ JavaScript ลงไปใน HTML และใช้โครงสร้างที่ JavaScript ภายนอกค่อยมาต่อเข้าทีหลังหรือต้องทำ hydration ให้ความรู้สึกเหมือนเอาข้อเสียของทั้งสองฝั่งมารวมกัน
ผมค่อนข้างอยู่ฝั่งตรงข้าม คือให้ JavaScript เป็นศูนย์กลาง และนอกจาก
index.htmlแล้วก็ไม่มีไฟล์นามสกุล.htmlเลย ใน JavaScript ก็ไม่ได้ใส่ HTML ไว้ด้วย เทมเพลตย่อยทั้งหมดเป็น.htmและทำ hydration ก่อนเพิ่มเข้าไปใน DOMถ้ามีคำเตือนตอนพยายามปิดหน้าโดยยังไม่ได้บันทึกหลังแก้ไขก็น่าจะดี
น่าพิจารณาเพิ่มตัวจัดการ
onbeforeunloadชอบ เครื่องมือเรียบง่าย แบบนี้ ไม่นานมานี้ผมทำ “โฮมเพจ”/แดชบอร์ดแบบปรับแต่งเองง่าย ๆ ไว้: https://github.com/rcarmo/onepage-by-spec
ดีมากจริง ๆ ผมหงุดหงิดกับซอฟต์แวร์จำนวนมากขึ้นเรื่อย ๆ ที่เอาฟีเจอร์ซึ่งทำในเครื่องได้ง่าย ๆ และก็เคยทำกันอยู่แล้วไป ซ่อนไว้หลังการสมัครสมาชิก พร้อมใส่ข้อจำกัดเทียม ๆ
ผมกำลังทำตัวแก้ไข Markdown ฟรีที่ทำงานได้ในเบราว์เซอร์เท่านั้น และสามารถแก้ไขไฟล์ในเครื่องผ่าน File System Access API ใหม่ได้ API นี้ใช้ได้เฉพาะบนเบราว์เซอร์ตระกูล Chromium
https://zareith.github.io/chillmd/