นับเป็นเวลากว่าสองปีแล้วตั้งแต่ Gangnam Style ได้รับการเผยแพร่ไปบน YouTube คลิปนี้ก็คงครองตำแหน่งคลิปที่มียอดวิวสูงสุดตลอดกาลของ YouTube มาอย่างยาวนานและในที่สุดคลิปนี้ก็ได้ทำสถิติอีกครั้งด้วยการทำยอดวิวทะลุค่าสูงสุดของตัวนับยอดวิว 2,147,483,647 ครั้งไปแล้ว
คนที่เรียนเขียนโปรแกรมมาอาจจะพอเข้าใจว่าเกิดอะไรขึ้น หากอธิบายง่ายๆ ก็คือก่อนหน้านี้ YouTube ได้เก็บค่าของยอดวิวไว้ด้วยตัวแปรประเภท signed int ขนาด 32 บิตซึ่งจะให้ค่าในช่วง -2,147,483,648 ถึง 2,147,483,647 ยอดวิวที่มากเกินกว่านี้จะทะลุช่วงดังกล่าวไปจะเกิดการโอเวอร์โฟลว์ส่งผลให้ค่าของยอดวิวกลับไปเป็นติดลบได้
ในตอนแรก YouTube ไม่คาดคิดว่าจะมีคลิปใดที่มียอดวิวสูงขนาดนี้จึงเก็บยอดวิวในตัวแปรแบบ signed int แต่ก็ได้แก้ไขระบบเพื่อป้องกันปัญหานี้ไปหลังจากคลิป Gangnam Style ได้รับความนิยมมากขึ้นจนมีแนวโน้มว่าจะทะลุช่วงดังกล่าวได้โดยไม่มีการเปิดเผยรายละเอียดในการแก้ไขแต่อย่างใด
เพื่อเป็นของขวัญเล็กๆ น้อยๆ ทาง YouTube ก็ได้ใส่ลูกเล่นไว้ในตัวนับยอดวิวของคลิปนี้ไว้ด้วย หากใครอยากรู้ว่าเป็นอะไรก็ลองเอาเมาส์ไปวางไว้เหนือตัวนับยอดวิวดูครับ
สุดท้ายนี้ใครเคยมีความทรงจำทั้งดีและไม่ดีเกี่ยวกับ integer overflow นี่ก็เอามาแบ่งปันกันในคอมเม้นท์ได้นะครับ
ที่มา: YouTube Google+
Comments
โอ้วววววว (- -)d
พูดถึง Integer Overflow ฝันร้ายของผมตอนเจอโปรแกรมบึ้มเมื่อใส่ค่าเยอะๆ ก็กลับมา T-T
มีครับ ทำข้อสอบผิด เพราะนับ overflow ผิด TT
หลายครั้งผมก็ต้องเลี่ยงมาทำ Big number แต่ผมก็เกลียดมันมากๆ เลยล่ะ เซ็งแปป T___T
บล็อกส่วนตัวที่อัพเดตตามอารมณ์และความขยัน :P
ยอดวิวขนาดนี้ ได้เงินกี่บาทครับ
งงว่ายอดวิวมันน่าจะเป็นจำนวนเต็มบวกทั้งหมดนี่ครับ (ยอดวิวไม่น่าจะเป็นจำนวนติดลบได้) ทำไมถึงไม่ใช่ Unsigned Int ล่ะ? อย่างน้อยก็เพิ่มได้อีกเท่าตัวนึง
มีคนเดาว่าเพราะ Google ไม่ชอบ unsigned int ครับ
http://google-styleguide.googlecode.com/svn/trunk/cppguide.html#Integer_Types
onedd.net
ที่จริงผู้เชี่ยวชาญส่วนใหญ่ก็ไม่แนะนำให้ใช้
unsigned int
กัน (เป็น premature optimization ประเภทนึง) เพราะหลาย ๆ ครั้งเราก็ไม่รู้ว่าเราจะต้องใช้ค่าลบกับตัวแปรตัวนั้นเมื่อไหร่ในขณะที่แค่แก้จาก int เป็น long มีผลกระทบน้อยกว่าครับ
จริงครับ ตั้งแต่โดนครั้งแรก ก็จำไว้เลยว่า ตัวไหนติดลบไม่ได้ใช้ unsign
ถ้า memory ไม่ได้มีจำกัดมากๆๆๆ การประหยัดพื้นที่ไปแค่ 1 บิต ดูจะไม่ค่อยคุ้มแลกกับการต้องมาคอยระวังการกรณีพิเศษของการใช้ unsigned ครับ อีกอย่างคือถ้าว่ากันยาวๆแล้ว การได้พื้นที่เพิ่มมาแค่ 1 บิต ถึงจะดูเหมือนเป็นเท่าตัวนึง แต่ถ้าระบบโตเร็วแบบก้าวกระโดดก็คงซื้อเวลาได้ไม่นานเท่าไหร่ ถ้าคิดว่าจะแตะขอบ int32 แน่ๆ ก็ใช้ int64 ไปเลยดีกว่า
(จำๆเค้ามาตอบอ่ะนะ)
ชาบูววววววว
onedd.net
ผมเคยเจอตอนเล่น Transport Tycoon แล้วมีเงินเยอะเกิน กลายเป็นเงินติดลบ สร้างทางรถไฟมาตั้งนานเกมโอเวอร์ไปเลยในเดือนเดียว
onedd.net
คิดถึงสมั้ยแฮกเกมเฟสบุ๊ก แฮกคะแนน แฮกเงินกันจนเลขติดลบ 555555
The Dream hacker..
ถึงจะมียอดวิวเยอะ แต่เพลงนี้ก็ดับไปแล้ว
แต่ ... ยอด view ยังคงเพิ่มอยู่ แปลว่ายังสร้างรายใด้อยู่ครับ
โลกนี้มีเกิดย่อมมีดับเป็นปรกติครับ
samsung ใหญ่แค่ใหน ?
https://youtu.be/6Afpey7Eldo
ทำตัวเลขหลายๆ ชุด เมื่อชุดแรกถึงที่กำหนดให้ต่อด้วยชุดถัดไปเรื่อยๆ
Long, double, bigdecimal จัดซะ
แต่ก่อน YouTube มีหน้าให้เข้าไปดูยอดวิวสูงสุดตลอดกาล
ทำไมเดี๋ยวนี้ถึงไม่มีแล้วครับ หรือมีทางเข้าทางอื่นเหรอครับ รบกวนขอวาร์ปทีครับ
อยากจะรู้ว่า อันดับ 2 3 4 5 6 7 8 9 10 คือคลิปอะไร
ขอบคุณฮะ
ปล. หลังจากข่าวนี้ออกไป ยอดวิวคงกระฉู๊ดขึ้นอย่างแน่นอน
อันดับสองก็คือเพลง Baby ของจัสติน อดีตที่หนึ่ง อันดับสามคือ on the floor
Gangnam Style พิมพ์แบบนี้นะคะ ไม่ใช่ Gangnum Style
แก้แล้วครับ ขอบคุณมากครับ
onedd.net
อยากให้รองรับได้เยอะๆ ใช้ text ไปเลย 55+
นับแบบดั้งเดิมเลยครับ หนึ่งวิวหนึ่งขีด ;)
ทะลุขอบจอจนสกรอลล์ไม่เจอจุดจบกันเลยทีนี้
Dream high, work hard.