Forum . Announcement . การปรับปรุงระบบ

ดูหน้านี้ใน รูปแบบเต็ม
tag: bug-fix improvement

(Updated 25 มิ.ย. 60)
ตั้งแต่ต้นเดือนที่ผ่านมาเราอาจจะสังเกตว่า มีหลายอย่างเปลี่ยนแปลงไปในระบบและเว็บไซต์ เช่น theme กับหน้าตาเปลี่ยนไป ผลตรวจมี T โผล่มาให้เห็นบ้างแล้ว ฯลฯ

นั่นเป็นเพราะทีมงานเราได้ทำการปรับปรุงซ่อมแซมระบบไปหลายส่วน ตามรายการดังต่อไปนี้
[list=1][*]ได้ทำการ upgrade ตัว server โดยการย้ายเครื่อง host ของเว็บนี้ ผลกระทบที่ชัดเจนคือโปรแกรมที่ส่งจะรันเร็วขึ้น ทำให้ระยะเวลาในการตรวจลงหลายเท่า (อย่างน้อย 2x)
[*]compiler standard ตอนนี้ได้ถูกตั้งเป็น C11 และ C++11 แล้ว ซึ่งอาจจะทำให้บางโปรแกรมที่เคยคอมไพล์ผ่านกับระบบเดิม มีปัญหากับระบบใหม่ได้ แต่นั่นก็เป็นเพราะโปรแกรมเหล่านั้นไม่ได้ผ่านมาตรฐานปัจจุบัน (C/C++11)
โดยในส่วนนี้ เรามีจุดประสงค์เพื่อที่จะให้ทุกคนเขียนโปรแกรมที่มีคุณภาพและมาตรฐานสูงขึ้น ที่จะยังสามารถใช้ได้ในอนาคต
สำหรับ compiler option ที่เราจะใช้ มีดังนี้:
[list][*]C: gcc -O2 -std=c11 ...
[*]C++: g++ -O2 -std=c++11 ...
[/list][*]ผลการตรวจโปรแกรม T เมื่อโปรแกรมรันไม่ทันเวลา (time limit exceeded - TLE) ถ้าสังเกตตั้งแต่หลายเดือนที่ผ่านมา บางผลตรวจมันจะแสดง X แทน T โดยมีเวลารันเกินกว่า time limit ของโจทย์
ตอนนี้เราได้แก้ไขบั๊กตัวนี้แล้ว (โดยสาเหตุของบั๊กมาจากการปรับปรุงตัว sandbox แต่ไม่ได้ทำการแก้ไข error message ที่มีการเปลี่ยนไปกับตัวใหม่)
[*]เพิ่มหน่วยความจำสำหรับโปรแกรมเริ่มต้น เนื่องจากมีบางข้อที่มี memory limit ให้ต่ำเพราะเป็นโจทย์เก่า (เช่น 64KB ก็ตั้งเป็น 1MB) ซึ่งจะเกิดปัญหากับโปรแกรมในปัจจุบันได้ เพราะแค่โปรแกรมเปล่า ๆ ก็อาจจะใช้หน่วยความจำเป็น MB แล้ว
ดังนั้นเราจึงเพิ่ม memory limit ให้ภายใน ซึ่งจะทำให้เราสามารถจองหน่วยความจำเพิ่มจากโปรแกรมเริ่มต้นได้มากที่สุดประมาณ x MB สำหรับโจทย์ที่ตั้ง memory limit ไว้ x MB เราคิดว่าการเปลี่ยนแปลงในส่วนนี้ไม่น่าจะมีผลต่อการทำโจทย์ส่วนมาก
[*]เปลี่ยนหน้าตา sample input / output ในหน้าแสดงโจทย์ โดยมีการเติมเส้นกรอบในแต่ละส่วนให้เราเห็นแยกกันอย่างชัดเจน และใช้ monospace font type (consolas) เพื่อให้เราสามารถสามารถอ่านหรือเทียบคำตอบได้ง่ายขึ้น (มันควรจะเป็นแบบนี้แต่แรกแล้วหละนะ)
[*]สามารถเปิดดูโค้ดที่ตัวเองส่งได้แล้ว โดยสามารถเข้าจากลิ้งค์ในหน้าผลตรวจ ซึ่งจะแสดงเป็นสีเขียว แต่ถ้าเป็นโค้ดที่เก่าระดับนึงอาจจะดูไม่ได้ และเป็นไปได้ว่าจะมีการลบโค้ดที่มีอายุหลายเดือน ถ้าหากเนื้อที่เก็บมันไม่เพียงพอ
[*]เวลาในเว็บนั้นตรงตามเวลาไทยแล้ว ซึ่งเดิมมันจะแสดงเวลาของ UTC/GMT ในการส่ง (หน้าผลตรวจ) และการโพสท์ในบอร์ด
[*]เปลี่ยน theme ใหม่ ให้สวยงามและสบายตามากขึ้น (ในความคิดของแอดมินบางคนเป็นอย่างน้อย) โดยสีโดยรวมจะมืดลงโดยเฉพาะข้อความ เดิมสีเทาอ่อนนั้นอ่านยากและไม่ค่อยสบายตา และพื้นหลังจะมี effect เวลาเลื่อนเมาส์ไปมาแล้ว (เดิมมันควรจะทำได้มานานแล้ว แต่ดันมีบั๊กใน script ซะงั้น -_-)
[/list]หวังว่าการปรับปรุงระบบในรอบนี้ จะเป็นผลดีต่อการใช้งานของทุก ๆ คนครับ ถ้ามีข้อเสนออะไรก็ตอบในกระทู้มาได้เลยครับ
แก้ไขล่าสุด 26 Jun 2560 06:48:14
โดย spnautilus เมื่อ 06 Jun 2560 19:43:43


#1 โดย ChimengSoso เมื่อ 07 Jun 2560 12:59:05
ขอเสนอให้มีระบบที่สามารถดูโค้ดของตัวเองที่เคยส่งครับ

#2 โดย arterkung เมื่อ 08 Jun 2560 12:05:22
ขอเสนอให้อัพโจทย์เพิ่มครับ

#3 โดย spnautilus เมื่อ 09 Jun 2560 10:50:03
จากความคิดของผมนะ:
[list][*]feature ที่ให้ดูโค้ดตัวเองได้นั้น ผมว่าน่าสนใจดีครับ แต่ไม่น่าจะง่ายเท่าไหร่เท่าที่ดูจากระบบตอนนี้ แล้วก็ต้องหาคนมาเขียนครับ คงต้องรออีกสักระยะ
[*]เรื่องการเพิ่มโจทย์ ตอนนี้ผมคิดว่าสำหรับโจทย์จากหลาย ๆ แหล่งนั้น เราควรจะเน้นไปใช้กับเว็บนั้น ๆ เลย เพราะมันอาจจะพร้อมกว่าแล้ว ยกเว้นว่าจะติดปัญหาเรื่องแปลภาษาครับ อันนี้ก็อีกเรื่องนึง ถ้าให้ดี อาจจะเป็นโจทย์ที่มีแต่ตัวโจทย์กับเทสเคสมาให้ โดยไม่มีระบบส่งตรวจ (online judge) ไม่ก็โจทย์เสกเอง ซึ่งก็อาจจะเอามาใส่เพิ่มเป็นระยะได้ครับ
[/list]ส่วนตอนนี้เสกข้อง่ายเพิ่มมาให้เล่นอีกสองข้อครับ 0040 กับ 0041

#4 โดย spnautilus เมื่อ 11 Jun 2560 11:35:35
ตอนนี้ได้เพิ่ม feature เปิดดูโค้ดตัวเองแล้วครับ แต่ยังเป็นช่วงทดลองอยู่ โดยเราจะเปิดโค้ดได้จากหน้าผลตรวจซึ่งจะแสดง link เป็นสีเขียวให้เห็น และจะเปิดได้แค่ของตัวเองเท่านั้นครับ
และเดี๋ยวจะมาอัพเกรดเพิ่มอีกทีครับ เช่นการใส่สี highlight
แก้ไขล่าสุด 15 Jun 2560 08:56:07

#5 โดย ChimengSoso เมื่อ 11 Jun 2560 11:50:25
ขอบคุณครับ สุดยอดมากเลยถึงแม้โจทย์เก่าที่เคยส่งจะดูโค้ดไม่รู้เรื่องก็ไม่เป็นไร ต่อจากนี้คนรุ่นหลังคงสะดวกขึ้นอีกนิด

#6 โดย arterkung เมื่อ 11 Jun 2560 15:23:05
spnautilus #3 ว่าไว้ ...

จากความคิดของผมนะ:
[list][*]feature ที่ให้ดูโค้ดตัวเองได้นั้น ผมว่าน่าสนใจดีครับ แต่ไม่น่าจะง่ายเท่าไหร่เท่าที่ดูจากระบบตอนนี้ แล้วก็ต้องหาคนมาเขียนครับ คงต้องรออีกสักระยะ
[*]เรื่องการเพิ่มโจทย์ ตอนนี้ผมคิดว่าสำหรับโจทย์จากหลาย ๆ แหล่งนั้น เราควรจะเน้นไปใช้กับเว็บนั้น ๆ เลย เพราะมันอาจจะพร้อมกว่าแล้ว ยกเว้นว่าจะติดปัญหาเรื่องแปลภาษาครับ อันนี้ก็อีกเรื่องนึง ถ้าให้ดี อาจจะเป็นโจทย์ที่มีแต่ตัวโจทย์กับเทสเคสมาให้ โดยไม่มีระบบส่งตรวจ (online judge) ไม่ก็โจทย์เสกเอง ซึ่งก็อาจจะเอามาใส่เพิ่มเป็นระยะได้ครับ
[/list]ส่วนตอนนี้เสกข้อง่ายเพิ่มมาให้เล่นอีกสองข้อครับ 0040 กับ 0041


ข้อ 0041 Output ตัวอย่างผิดครับ ผมนี่งงอยู่ตั้งนานว่าทำผิดตรงไหน จนต้องกลับไปอ่านโจทย์ถึงรู้ว่า Sample Output มันไม่ตรงกับข้อกำหนด

#7 โดย ouoam เมื่อ 11 Jun 2560 20:13:51
ช่วยแก้ตรงนี้ด้วยครับ ถึงแม้มันจะทำงานไม่ได้ แต้ถ้าใครเอามันไปใช้มันก็จะไม่ดี อันนี้มันเป็น backdoor
https://programming.in.th/userdata/avatars/1

แล้วก็ถ้าเป็นไปได้ช่วยเปลื่ยน timezone เป็น UTC+7:00 ด้วยครับ ในระบบตอนนี้มันเป็น UTC อยู่ครับ

แล้วข้อ 0041 Output ตัวอย่างผิดครับ ตรง
ข้อมูลนำเข้า 2
ข้อมูลส่งออกต้องเป็น 2.000000

แล้วผมรู้สึกว่าเวลาที่ใช้มันแกว่งครับ ส่งโค๊ดเดียวกัน เวลาไม่เท่ากัน

ถ้าเป็นไปได้อยากให้เพิ่มภาษาอื่นๆด้วยครับ เช่น php nodejs go python แต่ผมว่าทำยากพอสมควร
แก้ไขล่าสุด 11 Jun 2560 20:14:32

#8 โดย ouoam เมื่อ 11 Jun 2560 20:37:59
เพิ่มเติมอีกนิดนะครับ

น่าจะมีระบบโหลดผลการตรวจอัตโนมัติ
เช่นอาจจะใช้ websocket ในการโหลด
อย่างในเว็บ http://codeforces.com/problemset/status

ควรจะเพิ่มโจทย์ TOI ปีใหม่ๆเข้ามาด้วยครับ

น่าจะมีระบบโหวดความยากของโจทย์ด้วยครับ อย่างในเว็บ
https://www.codecube.in.th/
แต่อาจจะมีเกณฑ์ในการให้โหวด เพราะความยากง่ายของแต่ละคนต่างกัน
เช่นดูจากอันดับคะแนน

ระบบที่ทำสัญลักษณ์ว่าโจทย์นี้จะทำ หรือต้องทำ อย่างในเว็บ
https://www.proprog.tk/

ระบบที่ผมบอกด้านบนไม่ต้องทำทั้งหมดก็ได้ เพราะใช้เวลาพอสมควร แต่ถ้าได้ก็ดี


#9 โดย spnautilus เมื่อ 11 Jun 2560 21:55:53
Update ครับ:
[list][*]output ตัวอย่างข้อ 0041 ตอนนี้แก้ไขเรียบร้อยแล้วครับ ขอบคุณที่แจ้งครับ
[*]โค้ดที่ส่งมาเราไม่ได้เก็บไว้หมดนะครับ เพราะมันใช้เนื้อที่โดยรวมเยอะ และเคยมีปัญหาระบบล่มจากดิสก์เต็มด้วยครับ
[*]พวก feature เล็ก ๆ อื่น ๆ นั้นเดี๋ยวจะมาตามแก้หรือเพิ่มเติมเร็ว ๆ นี้ครับ ส่วนพวก feature ใหญ่ ๆ นั้นคงอาจจะไม่ได้ใส่ถ้าไม่จำเป็นมากครับ นอกนั้นจะใส่เท่าที่ไหวครับ ต้องใช้เวลา
[*]เรื่องเวลาแกว่งตอนนี้ผมยังช่วยอะไรไม่ค่อยได้ เพราะมันเป็นที่ server ปัจจุบันครับ ในอนาคตจะมีการย้ายเครื่อง แต่ผมเองก็ไม่ทราบว่าจะมีการย้ายเมื่อไหร่ครับ
[*]เรื่องเพิ่มภาษา ผมก็ว่าน่าสนใจครับ แต่คงไม่ได้ใส่เร็ว ๆ นี้จนกว่าจะศึกษาระบบให้ดีกว่านี้ก่อนครับ
[*]เรื่อง timezone ผิดเดี๋ยวจะรีบแก้ครับ ผมเองก็งงกับมันเหมือนกัน
[*]พวกช่องโหว่ผมจะลองอุดเท่าที่จะไหวครับ ข้างในมันรกครับ
[*]โจทย์ TOI ตอนนี้ผมหาพวก testdata ไม่ค่อยเจอครับ ค่อนข้างลำบากตรงนี้ ตอนนี้รบกวนไปส่งกับเว็บ proprog.tk ก่อนนะครับ เว็บเค้ามีโจทย์พร้อมกว่า
[*]ผมคิดว่า theme ปัจจุบันนี้มันไม่ค่อยสวยเท่าไหร่ และก็สว่างไปด้วย เวลาใช้ตอนกลางคืนแล้วแสบตา (ส่วนตัวผมชอบใช้แนว dark theme มากกว่า) ผมคิดว่าอาจจะมาเพิ่ม feature เปิด night mode ได้ครับ แต่มีโอกาสเละและต้องใช้เวลาครับ
[/list]ขอบคุณสำหรับคำแนะนำเพิ่มเติมครับ

#10 โดย spnautilus เมื่อ 15 Jun 2560 09:12:50
Update สำหรับวันที่ 15 มิ.ย. 60
ตอนนี้ได้มีการเพิ่มเติมและแก้ไขไปอีกระดับหนึ่งครับ:
[list][*]เปลี่ยน theme ใหม่ให้มืดลงเล็กน้อย เพื่อความอ่านง่ายสบายตามากขึ้น หวังว่าจะถูกใจหลาย ๆ คนครับ
[*]เวลาตอนนี้ได้แก้ให้ตรงตามเวลาไทยแล้ว (GMT+7)
[/list]