กำลังสร้างเฟรมเวิร์ก JavaScript/TypeScript สำหรับ Baekjoon
(github.com/lumirlumir)สวัสดีครับ/ค่ะ!
เพื่อแก้ปัญหาความไม่สะดวกหลายอย่างที่ผม/ฉันพบขณะทำโจทย์อัลกอริทึมของ Baekjoon ด้วย JavaScript และ TypeScript ตอนนี้ผม/ฉันกำลังพัฒนาโอเพนซอร์สเฟรมเวิร์กสำหรับ Baekjoon โดยเฉพาะในชื่อ 'bananass' อยู่ครับ/ค่ะ
สมัยเรียนปริญญาตรีก่อนหน้านี้ ผม/ฉันมักแก้โจทย์ด้วย C++ เป็นหลัก จึงไม่ได้รู้สึกว่า environment ของ Baekjoon นั้นไม่สะดวกมากนัก แต่เมื่อมาทำงานเป็นนักพัฒนา frontend แล้วอยากลองแก้โจทย์ด้วย JavaScript และ TypeScript พอเริ่มทำจริงกลับพบว่ามีข้อจำกัดเล็กใหญ่หลายอย่าง ไม่ว่าจะเป็นการจัดการ input ที่ซับซ้อนทุกครั้ง ข้อจำกัดของไวยากรณ์ใหม่ ๆ และการที่ทดสอบได้ยาก
ดังนั้นเพื่อปรับปรุงความไม่สะดวกเหล่านี้ ผม/ฉันจึงได้แรงบันดาลใจจากแนวทางการพัฒนาของ Next.js และคำสั่ง CLI ที่หลากหลายของโปรเจกต์ boj-cli แล้วตั้งใจจะสร้าง environment สำหรับการแก้โจทย์อัลกอริทึมที่กระชับและใช้งานเข้าใจง่าย ซึ่งเหมาะกับ ecosystem ของ JavaScript ขึ้นมาด้วยตัวเอง
โดยอาศัยประสบการณ์ที่ได้จากการมีส่วนร่วมโดยตรงกับโปรเจกต์โอเพนซอร์สฝั่ง frontend หลายตัว เช่น React, ESLint และ Next.js ผม/ฉันกำลังทำมันอย่างใส่ใจในรายละเอียดมากที่สุด และอยากให้มันเป็นเครื่องมือที่ช่วยผู้ใช้ JavaScript/TypeScript ได้จริง
ฟีเจอร์หลักที่พัฒนาไว้จนถึงตอนนี้มีดังนี้
- รองรับ JavaScript และ TypeScript
- รองรับระบบโมดูล ESM (ECMAScript Module) และ CommonJS
- รองรับไวยากรณ์สมัยใหม่ เช่น ES16/ES2025 โดยไม่ยึดติดกับ environment Node.js ของ Baekjoon
- รองรับการนำเข้าโมดูลที่ผู้ใช้กำหนดเองและไลบรารีภายนอก เช่น lodash
- รองรับการเริ่มต้นด้วยฟังก์ชัน
solutionเพียงตัวเดียวเหมือน Programmers - รองรับการเขียนและรัน test case
- รองรับการเริ่มต้นด้วย
create-bananass - รองรับ input/output ที่เร็วขึ้นผ่านโมดูล
fs - รองรับคำสั่ง CLI ที่หลากหลายเพื่อความสะดวก
- รองรับ ESLint และ Prettier ในตัว
ตอนนี้กำลังทำงานกับ test code และเอกสารก่อนปล่อยเวอร์ชันทางการ และมีแผนจะเปิดตัวเวอร์ชันเบต้าในเร็ว ๆ นี้
ถ้าคุณเคยรู้สึกไม่สะดวกตอนแก้โจทย์ Baekjoon ด้วย JavaScript หรือ TypeScript หรือมีไอเดียประมาณว่า “ถ้ามีฟีเจอร์แบบนี้ก็น่าจะดี” สามารถฝากไว้ได้อย่างอิสระผ่าน GitHub Issues, Discussions หรือคอมเมนต์ในโพสต์นี้ได้เลยครับ/ค่ะ!
แม้จะเป็นความเห็นเล็ก ๆ ก็ช่วยได้มากจริง ๆ ครับ/ค่ะ! ผม/ฉันอยากนำไปปรับใช้ให้ได้มากที่สุด เพื่อช่วยกันสร้าง environment สำหรับการแก้โจทย์ที่ดียิ่งขึ้น
ลิงก์ที่เกี่ยวข้องกับโปรเจกต์
-
เอกสารทางการ: https://bananass.lumir.page
ยังไม่มีความคิดเห็น