Pages

วันอังคาร, เมษายน 21, 2558

[Blog] It's not a bug , It's a broken by design


ในการทำ software เรามักจะมีสำนวนขำขำไว้เป็นคำแก้ตัว ไว้บอกคนอื่น
อย่างเช่น "It is not a bug , It is a feature" หรือ คำศัพท์อื่นๆ ที่ยังนึกไม่ออกตอนนี้ #ฮา

แต่ถ้าเรามีสติแล้วมานั่งวิเคราะห์ปัญหาที่เกิดขึ้น 
ว่าจริงๆ แล้วมันเกิดจากอะไร ... เราจะพบว่า
ปัญหาทุกปัญหาเกี่ยวกับ Software Development 
ส่วนใหญ่นั้นก็หลุดมาจากมือ Developer เองทั้งนั้นแหละ 

จะไม่ขอพูดถึงว่า User Requirement เปลี่ยนบ่อยก็กระทบ 
เพราะปัญหาพวกนั้น มี process พวก Agile มาประยุกต์ใช้อยู่แล้ว  
Blog นี้เลยขออุทิศให้เฉพาะ Dev เลยแล้วกัน

Broken by Design คืออะไร ?

ในความเห็นส่วนตัว ขอนิยามว่า "ผิดตั้งแต่คิดจะเริ่มแล้ว" 
เริ่มในที่นี้หมายถึง เริ่มลงมือในการออกแบบ 
โดยเฉพาะอย่างยิ่งกับ ระบบงานที่เป็น Legacy แล้ว การที่จะทำอะไรใหม่ๆ นั้น ควรจะรู้ workflow ที่เป็นไปได้ให้ได้มากที่สุดเสียก่อน เพราะบางทีการออกแบบอะไรใหม่ๆ จะไปกระทบกับสิ่งที่มีอยู่ หรือแม้แต่ Bug ที่เค้าซ่อนๆ ไว้ก็จะโผล่ออกมา
มั่นใจที่จะแก้ != เข้าใจที่จะทำ


สุดท้าย "มักง่าย" กับ "ขี้เกียจ" มันมีความหมายต่างกันนะ 
มักง่าย = ทำส่งๆให้เสร็จเป็นพอ
ขี้เกียจ = ทำครั้งเดียวไม่ต้องมาแก้บ่อยๆ

หลายๆ คนมักเข้าใจความหมาย quote ของ Bill Gate แบบผิดๆ
แล้วไม่ไปอ่านคำอธิบายว่าทำไมเขาถึงพูดแบบนั้น ...

ถ้าแยกแยะคำสองคำนี้ไม่ออก ... 
ก็อย่าไปทำมันทั้งคู่ เป็นทางออกดีที่สุดครับ :)

รีวิว Final Fantasy XV : Episode Duscae


ในที่สุดก็ได้เล่น FFXV Demo version ที่เค้าบอกว่าใช้เวลา dev มานานกว่า 8 ปี ....

โดยส่วนตัวแล้วหลังจาก FFVIII แล้วก็ไม่ได้แตะเกมส์ตระกูล Final Fantasy ที่เป็นแนว RPG เลย
 FFXIV ไม่รวมเนอะเพราะมันเป็น MMORPG ... มันคนละแบบกัน

ซึ่ง Model แจก Demo เกมส์แบบนี้ กล่องอีนิกส์ ไม่ได้ทำครั้งนี้เป็นครั้งแรก
แต่เคยทำกับ FFVIII มาแล้ว เพียงแต่รอบนี้ เอามาขายกับ FF Type-0 HD นั่นเอง !!

เล่นแล้วเป็นไงบ้าง .... เป็นข้อๆ ละกัน !!


  • ภาพสวย เนียน ... ชอบ
  • เป็น 3rd person view ... เล่นแล้วปวดหัวน้อยหน่อย ...
  • มนต์อสูรอลังการ เอาไปเลย 5 ดาว .... 
  • ระบบต่อสู้ยังมั่วๆ .... AI ดูยุ่งเหยิง
  • นึกภาพตอนเป็นเกมส์ตัวเต็มไม่ออก ... ถ้าต้องเดินแบบใน demo ... คงเล่นแบบเหนื่อยๆ ..
  • บั๊กมีพอสมควร ... แต่ก็พอรับได้ (เหรอ)

สารภาพว่า Draft Blog นี้ไว้นาน จน feeling หมด lol

แถมเพลงในเกม 2 เพลง ...







วันจันทร์, มีนาคม 16, 2558

[HOW-TO] พ่วง PS4 เข้ากับ PC ที่จอไม่มี HDMI




เพื่อการเล่นเกมอย่างมีความสุขแบบ "ไร้รอยต่อ" ...  
คงไม่พ้นการใช้ Monitor / TV ต่อเข้ากับ PC กับ PS4 ไว้สลับกันเล่นได้ ... 

แน่นอน ถ้างบเหลือเยอะ ... ซื้อ TV ใหม่ให้มันจบๆ ไปก็ง่ายดีออก ...
แต่ด้วยระดับความงก ที่มีมากเหลือ ... เลยต้องตีลังกาหาทางประหยัด(โดยไม่จำเป็น) กันหน่อย
หลายๆ คนคงเจอปัญหา อยากจะต่อจอคอมกับ PS4 ทำยังไง ... สามารถดูได้ตามกระทู้นี้ครับ
แต่บทความนี้จะเน้นอะไรที่ advance กว่านั้น (เหรอ) 

ด้วย Requirement ที่มีคือ ..

  • มีจอ IPS อยู่แล้ว ( DVI/DisplayPort/VGA) ...
    จะซื้อ TV/จอคอมใหม่ที่มี HDMI มาเลยทำไม ..
    ใช้ให้มันเจ๊งก่อนค่อยซื้อก็ได้ ..
  • อยากมี Mouse / Keyboard / ลำโพงชุดเดียว ใช้ได้กับ ทั้ง PC / PS4

ความปวดกะบาล เลยบังเกิด ....
เลยเป็นที่มาของ Diagram คร่าวๆ สำหรับการต่อ จอคอม + PC/PS4

สิ่งที่ต้องหาเหมือนจะหาง่าย ... แต่ใช้ได้จริงนั้น มีน้อยมาก ... 
เสียเวลาลองผิดลองถูกเยอะมาก จนอยากเอามาแชร์ ๕๕

  1. สำหรับการต่อ PS4 เข้า PC Monitor
     ขอแนะนำว่า ... ควรจะเป็นสายที่มียี่ห้อหน่อย ( HDMI-to-DVI Cable ) เพื่อความสบายใจ หรือหากเป็นไปได้ ยก PS4 ไปเทสที่ร้านเลย สบายใจหายห่วง .... ไม่แนะนำให้ซื้อเป็น Adaptor ครับ
    เพราะนอกจากจะใช้ไม่ได้แล้ว ... ยังเสียเงินฟรีด้วย


  2. ระบบเสียงเนื่องจากเราใช้สาย HDMI-to-DVI Cable ทำให้เราไม่สามารถนำสัญญาณเสียงจาก HDMI มาใช้ได้ ... แต่ PS4 ยังพอใจดีให้ optical audio มาให้ .... และ PC อย่างน้อยน่าจะมี coaxial port มาให้ .... สิ่งที่ต้องใช้คือ DAC (Digital to Analog Converter) เพื่อแปลงสัญญาณ digital ให้มาใช้กับลำโพงบ้านๆ ได้ .... ซึ่งถ้าเอาแบบแพง ของ sony ก็มีลำโพงไฮโซที่ รองรับ digital อยู่แล้วมาให้เลือกใช้กัน :)


  3. ส่วนสุดท้ายที่ขาดไม่ได้ คงเป็น USB Switch ที่อำนวยความสะดวกไม่ให้เราต้องถอดเปลี่ยนบ่อยๆ วิธีการหาซื้ออาจะจะต้อง ระวังในเรื่องของ input - output เพราะส่วนใหญ่จะเป็น 3 input - 1 output เป็นต้น รูปด้านล่างเป็น แบบ 1 input - 4 output


หลังจาก setup เสร็จ ชีวิตก็ง่ายแบบที่คิดไว้ครับ แต่กว่าจะหาอุปกรณ์ แต่ละชิ้นที่ "ใช้งานได้" นี่เล่นเอาเหนื่อย ... 

ค่าเสียหายสำหรับอุปกรณ์ที่ใช้ได้ทั้งหมดประเมิณคร่าวๆ ประมาณ 3000 - 4000 บาท ... 
ถ้าคุณกำลังประสบปัญหาเดียวกัน ... แนะนำให้ลองช่างใจไว้นิดนึงครับ :)


วันอังคาร, ตุลาคม 07, 2557

Lost in Eorzea - หายจากเขียน blog ไป 1 ปี(กว่าๆ)


ติดเกมส์ online จนงอมแงม รู้ตัวอีกทีก็ ปีกว่าๆ แล้ว lol .....

ยังสบายดีอยู่ครับ ... แม้ว่าจะเกิดอุบัติเหตุนิดหน่อย แต่ลูกสาวช่วยชีวิตไว้ก็เลยรอดมาได้ ...

ช่วงนี้ไม่ค่อยมี content อะไรเล่นแล้ว
หล่ง เหรด ก็ไม่มีบ่อย  ก็เลยมีเวลากลับมานั่ง Blog ซักหน่อย ...
เอาเป็นว่ายังไม่หนีหายไปไหนไกลนะ lol

จนแล้วจนรอด ตอนนี้ถอย PS4 มาแล้ว เด๋วได้จัดรีวิวหนักๆ ซักรอบ ...

วันศุกร์, เมษายน 18, 2557

on the job training (ให้ถูกเวลา)

การสอนงานคนที่เข้ามาใหม่ในทีมบางครั้ง 
เรามักจะเรียกว่า "หัดให้เด็กว่ายน้ำโดยจับโยนลงน้ำ" แม้จะเป็นการวัดผลที่เร็วที่สุด ( do or die ) แต่ในบางกรณี เราต้องกลับมาคิดให้ถี่ถ้วนด้วยว่า objective ของ assignment นั้นๆ คืออะไร

ยกตัวอย่างเช่น 
- ให้เด็กใหม่ upgrade system ที่เป็น production 
- ให้เด็กใหม่ แก้ constraint ใน DB ที่ใช้งานอยู่ทั้งองค์กร
- ให้เด็กใหม่ มานั่งแก้ urgent bugfixes
- ให้เด็กใหม่ migrate system โดยไม่ follow migration guide

ดังตัวอย่างข้างบน ถ้าเด็กใหม่คนนั้นทำได้ ก็ดูเหมือนทุกคนในทีมจะ happy แต่ถ้าเด็กคนนั้นทำไม่ได้ อะไรจะเกิดขึ้น ??? เรามี Risk management ที่ดีพอจะรับมือหรือไม่ ??

ตัวอย่างที่กล่าวด้านบน
มักเป็นปัญหาที่ต้องแก้ไขแบบมี dead line 
มันคงจะดี ถ้าเรามี instruction ที่แน่นอนที่ให้เด็กใหม่มานั่งทำมากกว่าจับโยนลงน้ำ แล้วต้องมาคอยปั้มหัวใจ หรือต้องมาคอยเปลี่ยนน้ำในสระ ในภายหลัง

วันอังคาร, ตุลาคม 15, 2556

รีวิว : Razer Sabertooth - จอยเทพสายสว่าง


เพื่อความเป็นเด็กติดเกมส์แบบเต็มขั้น ...
จึงหนีไม่พ้นกับการหา จอย มาใช้เพื่อเล่นเกมส์โดยเฉพาะ ครับ...
Razer Sabertooth เป็นจอยตัวแรงที่เพิ่งเคยได้ใช้เล่นเกมบนคอมครับ ปกติใช้แต่แบบของจีนถูกๆ แต่เพื่อเพิ่มอรรธรสในการเล่น X|V เลยตัดสินใจถอยจอยเทพนี้มา ....

หน้าตาหล่อเหลาเอาการ เป็นจอยที่ออกแบบมาใช้ได้ทั้งบน window และ xbox (ก็แหงล่ะ จอย xbox นี่) เพิ่งสังเกตุได้ว่าจอยเกมสมัยนี้ ตรง analog control สามารถกดลงไปได้เป็นปุ่มอีก 1 ปุ่มทั้งซ้ายและขวา ซึ่งในตอนแรกหลงคิดว่า ouya ทำได้เจ้าเดียว แต่กลับกลายเป็น ouya ลอกเค้ามาซะงั้น
(แถมปุ่มให้มาไม่ครบอีกตังหาก)



ปุ่ม macro ที่มีให้ มีให้มาถึง 6 ปุ่ม นับว่าเยอะพอสมควร
ที่บอกว่าเป็นจอยสายสว่างนั้นก็หมายถึง
ปุ่ม macro บนจอยสามารถตั้งค่าแทนได้เพียงปุ่มใดปุ่มหนึ่งบนจอยเท่านั้น
ไม่สามารถตั้งเป็นแบบ Combination Action ได้ หรือตั้งปุ่มกดแบบ turbo ได้.... นั่นคือเหตุผลที่ถึงเรียกว่าจอยนี้เป็นสายสว่าง 

ในส่วนการใช้งานผ่านไปเดือนกว่าๆ
สรุปได้ดังนี้ครับ

- ยางหุ้มปุ่ม analog ที่แถมมาเวลาใช้จะหลุดเป็นขลุยๆ เวลาโยก analog ... ไม่แน่ใจว่ามีให้ซื้อแยกไหมแต่ใช้แล้ว feeling ในการโยก analog ดีกว่าไม่ใส่ (มันกระชับ ไม่ลื่น)

- แม้ว่า package ภายนอกจะดูดี สมชื่อ razer แต่ build ของตัวจอยยังไม่ดีเท่าไหร่ ... เช่นปุ่ม L1 กดไม่มีเสียง แต่ปุ่ม R1 กดมีเสียง อนึ่ง อาจจะเพราะใช้ L1 มากไปจนมันหายแข็งก็ได้ .... 

- Rumble สั่นได้แรงมาก ... เล่นเอาจอยเกือบหลุดจากมือ ถ้าถือไม่ดี

- สาย USB เป็นสายถัก .... ออกมาจากกล่องไม่ติดกันแต่ด้วยเพราะงอในกล่องมานาน ... จะยืดให้มันไม่ม้วนหากันดูจะไม่เป็นผล

ไว้มีอะไรจะมา update เพิ่มครับ :)


วันอังคาร, ตุลาคม 08, 2556

[Java] 5 วิธีเขียน Code ให้อ่านง่าย

ช่วงนี้สำนวน แนวๆ "ทุบกำแพงเจอไททัน" ค่อนข้างจะได้ใช้บ่อยเนื่องมาจากที่ออฟฟิศกำลังพยามเอา TDD มาใช้ แต่ด้วยโครงสร้างของโปรแกรมที่พัฒนามาอย่างน้อยๆ ก็เกือบ 10 ปี เลยทำให้เกิดอาการของหายของพังไปบ้าง ครั้นจะเขียนใหม่ทั้งหมดก็แลดู over power มากเกินไป ... เลยแวปมาเขียน blog สั้นๆ เกี่ยวกับวิธีเขียน code ให้อ่านง่ายๆ ไว้หน่อยดีกว่า

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

1. อย่า code ถ้า Test ไม่ได้ ... กฎเหล็กอันหนักหน่วง ที่บางทีก็แอบแหก .... แต่ต้องเข้าใจว่ามันเป็นวิธีที่ดีที่เราควรคำนึงถึงการ Test ก่อนลงมือแก้ไขอะไรลงไป เพราะจะทำให้เราเข้าใจได้ว่า ถ้าเราจำเป็นต้องใช้ code นั้นในกรณีอื่นๆ เราจะมีชีวิตที่ดีขึ้นหรือไม่ สิ่งที่เขียนไปแล้วจะมีคนด่าลับหลังเหรอเปล่า ....

2. อย่าทำลาย Law of Demeter - จริงอยู่ว่า ในวงปาร์ตี้ที่เราจัดขึ้นโดยชวนผองเพื่อนมาร่วมงาน เราสามารถคุยกับทุกคนที่เข้ามาในปาร์ตี้ได้ แม้ว่าคนๆ นั้น จะเป็น เพื่อนของเพื่อนของเพื่อน ก็ตาม ... แต่ในเนื้อแท้แล้ว เราจะรู้จักคนๆ นั้น ได้ก็ต่อเมื่อ คนที่รู้จักเราพาเค้ามาในงานเท่านั้น ... เราจึงไม่ควรมีความสัมพันธ์กับคนๆ นั้นโดยตรงจนกว่าจะมั่นใจได้ว่า เราจำเป็นต้องรู้จักเค้าจริงๆ

3. จิตใจโลเลอย่าใช้ static - อันตรายมากสำหรับการใช้ static หากจิตใจไม่มั่นคง ... โลกคงจะปั่นป่วนไม่ใช่น้อยหากพระอาทิตย์ไม่ขึ้นทางทิศตะวันออกเสมอ ....

4. interface over subclass - อยากได้ "ยาม" อย่าจ้างลูกของ "ยาม" ควรจ้าง "ยาม" ไม่ใช่ลูกของคนที่เคยเป็น "ยาม" มันย้อนแย้งในหน้าที่ เพราะเราต้องการ "ยาม"  

5. Given When Then - วิธีเขียนโปรแกรมให้ง่ายที่สุดคือการคิดแบบเป็นระบบ input / process / output ... พื้นฐานง่ายๆแต่ตีความได้ลึกซึ้ง ... การใช้ Given when then ก็เป็นการขยายความเพื่อให้เราคิด logic ในการเขียนโปรแกรมให้ถี่ถ้วนก่อนลงมือทำจริงทำให้เราตอบสนองกับ scenario ที่คาดไม่ถึงได้

แลดูค่อนข้าง abstract แต่คิดว่าแค่ห้าข้อนี้น่าจะทำให้ชีวิต Java Dev อย่างเราๆ ท่านๆ สะดวกสบายมากยิ่งขึ้นครับ