SBSubs

(note to self: เพิ่งจด menome.in.th)

อยู่ดีๆ อยากทำแฟนซับ คือตอนม. 4 ตอนเลือกวิชาเลือกม. 5 ตอนนั้นผมยังไม่ได้ดูอนิเมะหรอก “วิน ถ้าติดศิลป์ญี่ปุ่นเปิดค่ายแฟนซับกันแล้วให้วินเป็น encoder” ผมก็ว่าเออโอเคตามนั้น ปรากฎว่าติดอันดับ 1 ที่เลือกคือไฟฟ้า ส่วนเพื่อนมันอยู่ห้องข้างๆ เลยเรียนวิชาเลือกกันคนละเทอม ปรากฎเพื่อนก็ได้ไฟฟ้าบ้างญี่ปุ่นบ้าง

เวลาล่วงเลยมาถึงตอนเราติดอนิเมะแล้ว วันดีคืนดี Steins;Gate 25 ออก ผมเลยโหลดของ Commie มาแล้วดูแล้วแบบว่าเออมันเจ๋งมาก และซับไทยยังไม่ออก ผมเลยตัดสินใจว่าพรุ่งนี้ตื่นมาจะแปล และก็ได้ [Steins;Gate OVA](http://alive.in.th/watch_video.php?v=5DX3GHUN7B1D) มา (ปรากฎซับไทย pandoramon ออกก่อนผมอีก)

ตอนแปลซับ คือผมติดใจ Danshi Koukousei no Nichijou ค่าย KOD มาก แปลเถื่อนๆ แต่มันฮา คือผมดูเรื่องนี้ค่ายอื่นมาหลายค่ายผมแบบว่ามันแย่จนดรอป จนนึกได้ว่าลองซับอังกฤษบ้างก็โอเคก็ดูได้ เลยเข้าใจถึงว่าถ้าแปลมันแบบสุภาพเรียบร้อยมันจะไม่เข้าถึงอรรถรส

วันดีคืนดีอีก ผมดู Another 10 แล้วติดใจมาก เลยทวิตว่า “มีใครสนใจ Another 10 ซับนรกมั้ย” ปรากฎว่ามีสองคนตอบมาผมก็โอเคทำก็ดี ตอนนั้นซับไทยก็ยังไม่ออกเหมือนกัน

พอแปลๆ ไปมันเริ่มไม่ซับนรกหรอกครับ สาระมันก็อยู่บางตอนที่หยอดมุขอะไรไม่ได้ แต่อย่างตอนต้นเรื่องผมเปลี่ยนเนื้อหาใหม่หมดเลย แล้วก็ได้ออกมาเป็น [Another 10](http://alive.in.th/watch_video.php?v=GB67MGD2NHN8) และผมได้ประสบการณ์ว่าไฟล์ raw หลายๆ อันที่ผมใช้แล้วมัน encode ภาพเละ มันคือ 10bit ซึ่ง mplayer ที่ผมใช้ encode นั้นไม่รองรับ วิธีแก้ของผมคือใช้ ffmpeg recode เป็น H.264 8bit ไม่มีเสียงก่อน แล้ว mplayer encode แล้วค่อย mix เสียงกลับเข้าไป

(สำหรับ script ที่ผมใช้ hardsub จะประมาณนี้ครับ [mkhardsub.sh](https://gist.github.com/1779474) แต่เวอร์ชั่นที่ผมใช้เป็น close source จะใช้ option ที่คมกว่านี้, ใช้ ASS file source ได้และไม่บังคับฟอนต์)

ถึงวันนี้ผมว่ามันเริ่มสนุกแล้วอะ คิดว่า Another อีกสองตอนที่เหลือ ผมคงจะทำให้หมดแต่มุขอาจจะลดลงเพราะหมดมุข ทีนี้ผมไปนอนคิดมาแล้วว่า distribution term มันเป็นยังไง

ตอนผมออกซับอันแรก ผมมองข้ามไป term ไปเลย ผมอัพขึ้น alive/nyaa โดยไม่ได้เขียนแปะไว้ว่าเอาไปใช้ได้อย่างไรบ้าง แต่พออันต่อมาผมก็เริ่มคิดบ้างแล้ว

(ที่เอาลง nyaa ไม่ใช่ bakadetsu เพราะมันไม่ใช่ open tracker ครับ ใช้ DHT ไม่ได้ และห้ามใช้ tracker นอก ผมเลยประท้วงโดยการเอาลง nyaatorrents ที่ผมเข้าประจำ ส่วน tokyotoshokan ผมไม่ได้เข้าก็เลยไม่ได้ลง)

ผมชอบ term ของ [Commie](http://commiesubs.com/about/) มาก ผมเลยเขียน term ไว้ใน Another 10 release ดังนี้

“ซับผมเป็นไปได้ก็เพราะว่าซับอังกฤษที่เขา softsub มาให้ผมดึงไฟล์ไปแปลต่อได้ ฉะนั้นผมเลยเลือกที่จะ softsub เช่นเดียวกัน ผมเข้าใจว่าคนไทยก็มีที่เอาแฟนซับไปขาย อันนี้ผมว่าช่างมันแล้วกัน ที่สำคัญคือผมขอแค่ว่าถ้าคุณจะเอาไปแก้หรือไปแจกต่อ อย่าฮาร์ดซับ ถ้าจำเป็นก็ขอให้มีไฟล์ ASS หรือไฟล์ต้นฉบับมาให้ด้วย”

(พูดง่ายๆ คือมันเหมือน GPL ในซอฟต์แวร์ที่สรุปความง่ายๆ ว่า “คุณมีเสรีภาพในการแจกจ่ายและได้รับซอร์ส และคนที่รับจากคุณไปก็ต้องมีเสรีภาพดังนี้ด้วย”)

อันนี้คือสิ่งที่ประกาศไปแล้ว แต่ที่ผมคิดเมื่อคืนคือ:

Torrent ผม ตอนแรกว่าจะ seed จนถึง ratio นึงแล้วหยุด แต่ก็ไม่รู้เท่าไรดี ก็คงเปิดไปตลอดกระมังจนกว่ามันจะเยอะไปจนผม seed เองไม่ไหวหรือ disk ไม่พอ คำว่าเปิดตลอดนี้คงต้องบอกว่า “รวมถึง” เรื่องที่ LC ไปแล้ว

ถ้าคุณคิดว่า LC แล้วควรจะเลิกแจก โอเค คุณก็กดปุ่มหยุด seed ในเครื่องคุณ ผมไม่บังคับ แต่สำหรับผม ผมเปิด ถ้าสนับสนุนผม ก็เปิด

ถามว่าทำไม? เหตุผลเดิมครับ ซับอังกฤษหลายเรื่องมาจาก HorribleSubs เอามาแก้ต่อ ซึ่งต้นตอมันมาจาก Crunchyroll ที่ LC อนิเมะมานั่นแหละ ฉะนั้นเท่ากับว่าเขายอมแจกเถื่อนมาให้เราได้ชม ถ้าไม่มีฮอริเบิล แฟนซับคงออกกันช้ากว่านี้ คงมีค่ายน้อยกว่านี้ คุณภาพคงน้อยกว่านี้ ผมก็ต้องขอบคุณด้วย

ไว้จนกว่าแผ่นแท้ LC ไทยจะมีคำแปลขึ้นบนฉลากยา ป้ายชื่อนักเรียน ป้ายโรงเรียน ตัวหนังสือบนกระดาน ไว้ค่อยพิจารณาใหม่

ปล. ชื่อ SBSubs นี่อาจจะมีการเปลี่ยนแปลงเพราะเหมือนผมตัดสินใจทุกอย่างและทำงานทุกอย่าง

Forum

เหมือนว่า Facebook เราจะกลายเป็น Blog ไปแล้ว (แต่อันไหนมีสาระมากๆ ก็จะพยายามไปใส่ใน [Google+](https://plus.google.com/108003073552145737788/posts) ด้วย)

ช่วงปิดเทอมนี้กำลังจะพยายามเขียนเว็บบอร์ดใน [menome](http://menome.sunburn.in.th) อยู่ มันเป็นความคิดชั่ววูบว่าน่าจะเขียนบอร์ดเองและใส่แนวคิดแปลกใหม่ลงไปบ้าง

ผมเองเห็นบอร์ดที่ไอเดียดีมากๆ มาจาก Pantip3G เป็นตัวแรก ตอนนี้มันยังไม่ออก แต่ผมชอบไอเดียของเขาที่ว่ากระทู้ไม่ได้มีแค่กระทู้ไล่ลงมา แต่มันมีกระทู้รายงานสด กระทู้โพสต์รูป ฯลฯ อีก แต่ละแบบการแสดงผลหัวข้อ และโพสต์คำตอบมันต่างกันออกไป

ตอนผมทำ bd2.in.th ก็เคยได้โจทย์นี้ อยากทำ gallery ผมว่ามันเกะกะเลยไม่ทำแล้วทำเป็น gallery tag ไปในบอร์ดแทน ซึ่งจะมีการแสดงที่สวยกว่าเอา img tag เรียงๆ กันทั่วไป แต่นั่นคือสิ่งที่เราทำได้ในเว็บบอร์ดแบบทั่วๆ ไป (traditional forum software)

ต่อมาผมเปลี่ยน bd2.in.th ไปใช้ Vanilla Forum ซึ่งผมเห็นไอ้นี่มานานแล้ว แต่ตอนได้ลองเอง มันเป็นบอร์ดที่ความคิดสดใหม่มาก คือมันเหมือนเฟสบุ๊คในรูปแบบของบอร์ด

– หน้ารวมกระทู้ อันนี้บอร์ดทั่วไปไม่ค่อยมี คือแสดงทุกหมวดรวมกัน
– Profile มี Wall
– ระบบ Messaging มันสุดยอด! เวลา PM มันจะจัดกลุ่มเป็น thread แล้ว thread นึงมีมากกว่า 2 คนได้ สามารถลากคนเพิ่มเข้าไปได้ด้วย
– Notification มันก็เด็ด เหมือนเฟสบุ๊ค เวลามีอะไรมันจะเด้งด้านล่าง หรือจะกดไปดูย้อนหลังก็ได้ สามารถตั้งได้ว่าเด้งแค่ไหน เช่นกระทู้นี้มีคนตอบให้เด้ง อันนี้ผมเอาไปต่อยอดใน bd2.in.th ทำ site wide notification ([บล็อคเก่า](/node/876))
– ระบบ user ยืดหยุ่นมาก LDAP ก็ได้ แต่ที่เจ๋งคือ Facebook/Twitter ก็ได้ แล้วก็ยังมีแบบ Connect plugin ให้ระบบอื่นเป็น auth source เลยก็ได้ (เราใช้กับ WordPress)
– Wall ของเว็บ มีคนเปลี่ยน avatar มีกระทู้ก็จะขึ้น หรือจะไปเขียนเองก็ได้
– Wall comment เป็นแบบเฟส คือ threaded ชั้นเดียว

ผมว่าไอ้นี่อะมันคือชุมชนขนาดย่อมได้เลย โดยเฉพาะ wall ที่ทำให้ชุมชนมันใกล้ขึ้น แต่เสียงส่วนมากจากผุ้ใช้ที่ผมได้ยินคือมันใช้ยาก อันนี้ผมเถียงตายเลย มันไม่ใช่บอร์ดที่คุณชินในฟอร์แมตที่คุณเคยใช้ แต่ผมว่ามันใช้ง่ายกว่าเยอะมาก

ทีนี้มาถึง menome ผมนึกไปถีง Google Wave แล้วว่าเออ ไอ้นี่มันเจ๋ง เหมาะมาทำบอร์ด แต่จะทำแบบนั้นก็ยากไป ผมก็ไม่ไหว (Wave ใช้เวลาเขียนสองปีนะครับ และมันคือเวลาอิสระ 40% ของ Full-time engineer ส่วนผมตอนทำงานชอบคิดว่ามีเวลาแบบนั้นทั้งๆ ที่ไม่มี) ก็เมื่อกี้ผมก็เลยไปสำรวจบอร์ดอนิเมะที่ดังๆ อย่าง tirkx แล้วผมเห็นดังนี้

– หัวกระทู้มักจะยาวและมีสาระ (แต่จากประสบการณ์บางกระทู้หัวกระทู้มีแค่คำว่า “เหมือนหัวข้อ”)
– comment 60% จะเข้ามาโฮกกกกกกแล้วก็จากไป หรือเป็น comment ที่แบบว่าไม่อ่านก็ได้
– comment ที่เหลือจะไม่ค่อยมีสาระเท่าหัวข้อกระทู้
– “คิดว่า” การตอบกระทู้ใช้แค่ @mention พอแล้ว ไม่ต้องขนาด quote
– คนจะตอบกระทู้กันประมาณ 2-4 บรรทัด แต่จริงๆ แล้วคิดว่าเอามารวมกันก็อ่านได้ เพียงแต่ที่เขาเหลือเยอะ เลยกดให้มันอ่านง่าย
– category ที่มีสาระกว่าอนิเมะหน่อยอย่างห้องไอทีจะต่างจากนี้สิ้นเชิง comment น้อยแต่สาระเยอะ

ปัญหาที่ผมเห็นชัดๆ คือทำไมเข้ามาโฮกกกกกซายากะะะะะแค่นี้ทำไมต้องแสดงโพสต์ขนาด 400px ทั้งๆ ที่ใช้เวลาอ่านประมาณ 500ms ฉะนั้น ผมเลยได้ spec บอร์ดตัวเองแบบนี้

– หัวกระทู้เป็นแบบ traditional (แบบชาวบ้านเขาใช้กัน)
– comment ผมใช้ระบบ quick reply ถ้าใช้ quick ตอบต้องจบใน 1 บรรทัด ความยาวอาจจะสัก 500 ตัว และจะแสดงเป็น comment เล็กๆ แบบใน stackoverflow
– upvote comment ได้ และต่อไปอาจจะมีการตั้ง threshold
– comment มีโหมดพิมพ์ยาว 10k ตัว comment ที่เขียนในโหมดนี้จะแสดงผลแบบปกติ คือมีชื่อคนโพสต์ avatar และใช้ที่แสดงผลมากกว่า

ทีนี้เลยคิดว่าอีกจุดขายนึงของ Wave คือ realtime ฉะนั้นผมกำลังชอบ ก็เลยจัด socket.io server มาตัวแล้วทำให้ comment รับส่งกันแบบ realtime ไปเลย! ระบบ quick reply ก็จะกลายเป็น chat ไปในตัว ช่วยให้การสนทนาน่าสนใจไปอีก

พอมาเป็น chat ปัญหาที่จะเกิดคือ

– message มันจะเก็บไว้ถาวร เพราะมันคือ comment ในกระทู้ ไม่ใช่ห้องแชทที่เขียนแล้วหายไป ฉะนั้นมันจะรกมาก อันนี้กำลังคิดว่าจะดูจาก upvote ถ้าไม่ถึงก็ hide แต่ comment ในสตรีมให้มันไหลไปเลยไม่มี filter
– message ใหม่มันมาข้างล่าง ซึ่งมันคือหน้าสุดท้าย แต่ถ้าจะอ่านหน้าแรกของกระทู้สิบหน้าต้องกด load more เก้าครั้ง อันนี้คงไม่ใช่ วิธีที่คิดออกตอนนี้คือ unread อยู่ไหนก็โหลดจากหน้านั้นไป ถ้าไม่ถึงหน้าล่าสุดสตรีมจะยังไม่โหลด
– reply แบบเต็มอาจจะไม่ซ่อน
– flooding อันนี้คิดว่า rate limit อาจจะคิดตามความยาวของ post เพราะแน่นอนว่าโพสต์ยาวก็ต้องใช้เวลาพิมพ์มาก ถ้าคุณจะ copy paste ยาวๆ มาฟลัดมันจะติดลิมิตแต่คนทั่วไปถ้าไม่พิมพ์เร็วมากก็ไม่ควรติด
– เมื่อกี้ทดสอบแชทมา พบว่าพอเป็น realtime สิ่งต่อมาที่ต้องมีคือ “user online”

ไม่รู้จะจบโพสต์นี้ยังไงดี เอาเป็นว่าจบห้วนๆ แบบนี้แล้วกัน เพราะบอร์ดเองก็ยังไม่เสร็จ ไว้เขียนแล้วเจออะไรจะเก็บมาเล่าอีกแล้วกันนะครับ

ปล. unread ยังคิดไม่ออกเลยว่าเก็บยังไงดี คือเก็บอะได้ แต่ยังไงให้ efficient