เอา Nexus ไว้หลัง Proxy

ทรัพยากรมีจำกัดต้องใช้ให้คุ้ม

เมื่ออยู่เป็นแผนกวิจัยพัฒนาหลายคนคงคิดว่ามันคงจะมีทรัพยากรมากมายให้คุณใช้สอยเหมือนในหนัง จริงๆมันก็มีแหละในบริษัทใหญ่ๆที่มีเงินเหลือกินเหลือใช้มีฝ่ายวิจัยและพัฒนาแบบจริงจัง แต่ในบริษัทที่ไม่ใหญ่มากไม่ได้มีเงินทุนมหาศาล ทรัพยากรต้องใช้อย่างเต็มเม็ดเต็มหน่วยที่สุด อะไรประหยัดได้ต้องประหยัดเพื่อให้ได้เงินสูงสุดแล้วแปรเปลี่ยนมาเป็นโบนัสของเรา

เอา Nexus ไว้หลัง Proxy

หลังจากนอกเรื่องมานานมาเข้าเรื่องกันดีกว่า คือจริงๆผมต้องการสร้าง Nexus ไว้เป็น Lib กลางให้คนในบริษัทใช้ ถ้าได้ติดตาม Blog ผมจะมีการสอนการติดตั้งเบื้องต้นใน Environment Test ซึ่งจากการทดลองเป็นไปได้สวย ผมต้องการเอามันขึ้น Server จริงๆ พอเอาขึ้นก็เจอปัญหาเลยซึ่งปัญหาที่ว่าก็คือมันต้องวางไว้หลัง Proxy แต่ตอนที่ผมทดลองผมไม่ได้วางหลัง Proxy มันเลยมีปัญหา หลังจากปลุกปล้ำกับมันนานอยู่นานทำยังไงก็ไม่ได้ จนพี่ทำงานไปอ่าน Manual ของ Docker nexus ได้ซึ่งทำแค่บรรทัดเดียว

ซึ่งบรรทัดที่ว่าคือ

1
docker run -d -p 8081:8081 --name nexus --ulimit nofile=65536:65536 -e NEXUS_CONTEXT=nexus sonatype/nexus3

โดยตรง -e NEXUS_CONTEXT=nexus นั้นหมายถึงจะกำหนด Web context ให้กับตัว Docker Nexus ที่เรากำลังจะสร้างขึ้นมา ซึ่งจากตัวอย่างเรากำหนดเป็น nexus เวลาเข้า Nexus ก็จะเข้าเป็น 192.168.56.101:8081/nexus จากก่อนหน้านี้ต้องเข้าเป็น 192.168.56.101:8081/

_* 192.168.56.101 เป็น VM จำลองเครื่อง Server ในเครื่องผมเอง

ส่วน –ulimit nofile=65536:65536 เป็นความต้องการค่าที่ตัว nexus ต้องการโดยค่า nofile เป็นการกำหนดค่าว่า process สามารถเปิดไฟล์ได้สูงสุดได้เท่าไหร่ โดยตัว Nexus ต้องการอย่างน้อย 65536

จากนั้นก็ไปตั้งค่าให้กับ Proxy ดังนี้ (อันนี้ผมมีตัว Proxy เป็น apache)

1
2
3
4
<Location "/nexus" >
ProxyPass "http://192.168.56.101:8081/nexus"
ProxyPassReverse "http://192.168.56.101:8081/nexus"
</Location>

* ในส่วนของการตั้งค่านั้นผมลง Docker ให้อยู่ที่เครื่องเดียวกับ Server แล้วให้มันเปิด Port 8081 กับตัวเครื่อง เวลา Request เข้ามาก็ให้มัน Route เข้า Port ข้างในของตัวเครื่องเอง แต่ไม่ต้องตกใจเครื่องผมตั้ง firewall เปิดแค่ 80 กับ 443 ดังนั้นคนนอกเข้าตรงๆผ่าน port 8081 ไม่ได้

พอตั้งค่าเสร็จก็รันได้ขึ้นมาอย่างสวยงามโดยเข้าที่ url : http://192.168.56.101/nexus

จากรูปจะเข้าแบบ HTTP ได้ แต่ปัญหาก็มาอีกเพราะต้องการใช้ HTTPS พอเข้าผ่าน https://192.168.56.101/nexus แล้วได้หน้าแบบนี้

หลังจากนั่งงมหาอยู่นานมากๆก็เจอว่าแค่เพิ่มค่า config ใน apache อีก 1 บรรทัดเท่านั้น พอมานึกถึงตรงนี้แล้วนึกถึงคำอาจารย์ที่สอนวิชา Unix ว่าบางครั้งคุณจะเจออะไรแบบที่มัน magic มากๆ คือแบบเพิ่ม Config บรรทัดเดียว แก้ค่า config จากเลขนึงเป็นเลขนึง ระบบที่มีปัญหาจะกลับมาทำงานได้อย่างปกติยังกะร่ายเวทมนตร์

1
2
3
4
5
<Location "/nexus" >
ProxyPass "http://192.168.56.101:8081/nexus"
ProxyPassReverse "http://192.168.56.101:8081/nexus"
RequestHeader set X-Forwarded-Proto "https"
</Location>

หลังจากเสียเวลาไป 1 วันเต็มๆซึ่งเสียไปกับความอ่อนแอด้านการ Config ติดตั้งเครื่องและความเข้าใจเรื่องทฤษฏีต่างๆทำให้นึกถึงตอนเรียนที่ตัวเองไม่ค่อยชอบยุ่งเรื่องการ Config เพื่อนไปลงเรียนวิชาพวก Config ก็ไม่สนใจไปเรียน จริงๆกลัวเกรดตกเพราะวิชามันแข่งกับเวลาในการปฏิบัติ แต่มานึกอีกทีไป Sit in เรียนไม่เอาเกรดก็ได้นี่นา มานึกตอนนี้ก็เสียดายที่ตอนมีโอกาสใกล้ชิดกับผู้เชี่ยวชาญกลับไม่สนใจใฝ่รู้ พอถึงวันที่ทำงานจริงมันเหมือนเราอยู่กลางทะเลจะไปทางไหนก็ไม่รู้ จะเริ่มหาจากตรงไหนก็ไม่รู้เพราะไม่เข้าใจพื้นฐาน หากได้เรียนมาสักนิดอย่างน้อยก็จะพอเข้าใจและรู้ Key word ที่ใช้ในการค้นหา

ปล. ที่เห็น HTTPS เป็นสีแดงเพราะผมสร้าง cert ขึ้นมาเองตัว Browser มันเลยบอกไม่น่าเชื่อถือ

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

ref :
https://serverfault.com/questions/577437/what-is-the-impact-of-increasing-nofile-limits-in-etc-security-limits-conf
https://help.sonatype.com/repomanager3/system-requirements

Return Early Style

คุณเบื่อไหมกับการอ่าน Code

หลังจากเป็น Programmer มาได้ 3 ปีกว่าๆ สิ่งหนึ่งที่เจอแล้วน่าเบื่อสุดๆในชีวิตการทำงานคือ “การอ่าน Code” หลายคนบอกว่าเฮ้ยมันก็เขียนโปรแกรมเหมือนกัน ตอนเรียนอยู่ปี 1 ก็คิดอย่างงั้นนะ แต่พอผ่านชีวิตการเป็น Programmer แล้วมันต่างกันแบบสุดๆ การเขียน Code คือการสร้างอะไรบางอย่างขึ้นมาโดยเราเป็นคนสร้าง เราเข้าใจว่าต้องเอาอะไรไปทำอะไรและจุดมุ่งหมายของการทำงานคืออะไร แต่การอ่าน Code คือการพยายามทำความเข้าใจว่า Programmer คนที่เขียนซึ่งอาจจะเป็นคนอื่นหรือตัวเราเมื่อ 1 ปี หรือ 1 สัปดาห์ที่แล้วกำลังจะทำอะไร เคยมีคนพูดบ่อยๆว่า การเขียน Code ง่ายกว่าการอ่าน Code ตอนนี้เริ่มเข้าใจแล้วว่ามันเป็นยังไง

Programmer แต่ละคนมี Style การเขียน Code ของตัวเอง อันนี้เรื่องจริงๆมาก เพื่อนร่วมงานผมเมื่อมาอ่าน Code ที่ผมเขียนมันสามารถรู้ได้เลยว่าผมเป็นคนเขียน เนื่องจากรูปแบบการประกาศตัวแปร การเว้นวรรค การ Comment ต่างๆ เช่นกัน ถ้าผมไปอ่าน Code ของเพื่อนก็จะรู้ทันทีว่าเพื่อนผมเขียน แต่ประเด็นปัญหามันเกิดจาก Style การเขียนเนี่ยแหละ ต่อจากนี้จะเป็นการเล่าประสบการณ์การเจอ Code แบบนึงตอนทำงานที่เจอแล้วจะร้องไห้ และมาบอกวิธีการแก้ไขกันครับ

อันนี้มันของ If ไหนวะ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public int SomeFunction(bool cond1, string name, int value, AuthInfo perms)
{
int retval = SUCCESS;
if (someCondition)
{
if (name != null && name != "")
{
if (value != 0)
{
if (perms.allow(name)
{
// Do Something
}
else
{
reval = PERM_DENY;
}
}
else
{
retval = BAD_VALUE;
}
}
else
{
retval = BAD_NAME;
}
}
else
{
retval = BAD_COND;
}
return retval;
}

ตอนที่ได้รับ Project หนึ่งจากบริษัทแล้วต้องไปแก้การทำงานของโปรแกรมให้ทำงานตามความต้องการใหม่ของลูกค้า ซึ่งแน่นอนว่ามันต้องเข้าไปอ่าน Code แล้วก็โดนรับน้องด้วย Code แบบนี้เลย คุณอ่านแล้วรู้สึกยังไงครับ สำหรับผม “เหี้ยเอ้ย ไอ else ตรงเนี่ยมันของ if ไหนวะ” แถมอันนี้เป็นแค่ Code สาธิตนะครับ(อันนี้เอามาจาก web ตัวอย่าง) ของจริง Code ตรง if มันยาวมาก ยาวประมาณ 100 - 200 กว่าบรรทัด เอาเป็นว่าคุณสามารถ scroll เมาส์ได้ 4 - 5 ครั้ง พร้อมสบถได้อีกหลายคำกว่าจะจบ if นึง

ถามว่า Code มันทำงานได้ถูกต้องไหม ก็ต้องบอกเลยว่าถูกต้องครับ แต่ถามหน่อยว่าคนมาอ่านเขาจะรู้สึกยังไง ซึ่งคนอ่านอะอาจจะเป็นตัวเองในอีก 1 ปี 10 ปีข้างหน้าก็ได้ แทนที่จะเอาเวลาไปทำอย่างอื่น ต้องมานั่งหาว่านี่มันของ if ไหนวะ

ถ้าอ่าน Code ดีๆแล้วมันไม่ได้ทำอะไรเลยครับ มันแค่ Validate ข้อมูลที่ส่งเข้ามาตามเงื่อนไขต่างๆแล้ว Return กลับออกไป ซึ่งถ้าเอามาเขียนใหม่ใน Style ที่เรียกว่า “Return Early” จะได้ออกมาเป็นแบบนี้

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public int SomeFunction(bool cond1, string name, int value, AuthInfo perms)
{
if (!someCondition)
return BAD_COND;

if (name == null || name == "")
return BAD_NAME;

if (value == 0)
return BAD_VALUE;

if (!perms.allow(name))
return PERM_DENY;

// Do something
return SUCCESS;
}

ทุกอย่างทำงานเหมือนกันหมดแต่อ่านง่ายสบายตากว่า เข้าใจง่ายกว่า แค่มันมี return เพิ่มขึ้นซึ่งในบางที่บอกว่ามันไม่ดีเพราะจะทำให้ตกหล่นเวลาไล่ Code เพราะคนเขียนจะสนใจเฉพาะกรณีส่วนที่ต้องแก้หรือทำการเพิ่ม if อีก if นึงไว้ก่อนแล้วให้ return ทำให้ไม่สนใจ Logic โดยรวม แต่ถ้าถามผมผมชอบ Style return มากกว่าเพราะมันทำให้ Code อ่านง่ายดูเป็นกรณีกรณีไป

สรุปโดยใช้ความเห็นส่วนตัว

โดยใช้ความคิดเห็นส่วนตัวแล้วผมแนะนำให้ใช้ Return Early กับ Code ที่มีการเช็คเงื่อนไขก่อนจะทำส่วนหลัก เช่น validate data ก่อนทำการแก้ไขข้อมูล หรือ ทำการ Check state ของสินค้าก่อนจะทำการอนุมัติให้ทำขั้นตอนต่อไปได้ เพราะทำให้เข้าใจเงื่อนไขต่างๆได้ง่ายในระดับสายตาเดียว ซึ่งดีกว่าการไล่ดู if แต่ละ if ที่ห่างกันโคตรๆแล้วก็ลืมต้องเลื่อนไปเลื่อนมา 10 กว่ารอบกว่าจะเข้าใจเงื่อนไขทั้งหมด แต่ขอให้พึงระลึกเสมอว่าถ้าคุณใช้วิธีการเขียนแบบ Return Early คุณต้องอ่าน Code ทุกเงื่อนไขและทำความเข้าใจที่มาของแต่ละเงื่อนไข และอย่าสร้างเงื่อนไขที่ไม่จำเป็นขึ้นมาครับ

หนังสือแนะนำให้อ่าน

มีหนังสือเล่มนึงที่ผมแนะนำให้อ่านคือ The Art of Readable Code เล่มนี้อ่านง่าย สนุก มีรูปประกอบที่ฮาช่วยให้เข้าใจเพิ่มขึ้นอีกด้วย ตัวอย่างภาพ

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

ref :
https://softwareengineering.stackexchange.com/questions/18454/should-i-return-from-a-function-early-or-use-an-if-statement

Foundation - สถาบันสถาปนา

สถาบันสถาปนา

Foundation - สถาบันสถาปนา

ใครๆคงเคยอ่านนิยายไม่ว่าจะเป็นแนวแฟนตาซี เวทย์มนต์ สืบสวนสอบสวน และอีกหลายๆแนว ยิ่งแนวแฟนตาซีนี่ผมเห็นเพื่อนสมัยมัธยมอ่านกันเป็นว่าเล่นชนิดสัปดาห์ละเรื่องเลยทีเดียว อย่างที่คุ้นหูเลยคือ หัวขโมยแห่งบารามอส แต่ผมดันไปอ่านนิยายกำลังภายในที่เล่าเรื่องคุณธรรมน้ำมิตรที่ประหัตประหารกันด้วยวรยุทธ์เลยคุยกับชาวบ้านไม่รู้เรื่อง พอโตหน่อยก็เริ่มไปอ่านนิยายแนววิทยาศาสตร์เพราะดู Series ต่างประเทศเรื่อง Doctor who ซึ่งดูแล้วมันเจ๋งดีทำให้จินตนาการไปถึงเอเลี่ยน การเดินทางข้ามเวลา และเรื่องนึงที่ได้อ่านแล้วรู้สึกสนุกมาๆคือ สถาบันสถาปนา

ทำนายอนาคตแบบคณิตศาสตร์

เรื่องเล่าถึงยุคที่มนุษย์ได้สร้างอารยธรรมในอวกาศและถูกปกครองโดยจักรวรรดิซึ่งตอนนั้นเทคโนโลยีต่างๆก้าวไปถึงขีดสุด แต่ว่าไม่มีสิ่งใดจะรุ่งเรืองได้ตลอด ตัวเอกของเรื่อง ฮาริ เซลดอน (จะว่าตัวเอกก็ไม่ถูกเสียทีเดียว) ได้พัฒนาวิชา อนาคตประวัติศาสตร์ ซึ่งใช้คณิตศาสตร์คำนวณโดยใส่ตัวแปรต่างๆของสภาพสังคม การเมือง และอื่นๆเข้าไปเพื่อจำลองอนาคตที่อาจเกิดขึ้นมา คืออ่านถึงตรงนี้แล้วผมแบบ เฮ้ยนี่ดิ จะบอกว่าทำนายอนาคตได้มันต้องแบบนี้ ไม่ใช่ใครคนนั้นนั่งสมาธิแล้วกลับมาบอกว่าเป็นแบบนี้ และยิ่งพีคกว่านั้น มันเป็นแบบจำลองที่ทำนายระดับมวลชนไม่ได้ทำนายระดับบุคคลซึ่งตอกย้ำให้คิดว่าเฮ้ยในอนาคตมันอาจจะเป็นไปได้ ซึ่งด้วยวิชานี้ ฮาริ เซลดอน ได้พบว่าถ้าเป็นแบบนี้ต่อไปจักรวรรดิจะล่มสลายและเข้าสู่ยุคมืดที่เทคโนโลยี ความรู้ทางวิทยาศาสตร์ และต่างๆนาๆจะถดถอยหายไป ซึ่งกินเวลา 1 หมื่นปี กว่ามนุษย์จะกลับมารุ่งเรืองเท่าปัจจุบัน อย่ากระนั้นเลยเมื่อมีสูตรคำนวณที่พอจะทำนายอนาคตได้แล้ว ฮาริ เซลดอน เลยพยายามสร้างหนทางที่จะย่นย่อการล่มสลายจาก 1 หมื่นปี เหลือแค่ 1000 ปีเท่านั้น โดยการจะทำอย่างนั้นได้นั้นเขาจึงสร้าง สถาบันสถาปนา เพื่อทำการสร้างตัวแปรต่างๆเพื่อทำให้อนาคตเป็นไปตามที่ได้ใช้สูตรคณิตศาสตร์คำนวณไว้

เทคโนโลยี ศาสนา การค้า จิตวิทยา หักเหลี่ยม จริยธรรม ทุกอย่างทีว่ามีในเรื่องนี้

มันเป็นความสุดยอดของสุดยอดที่ได้อ่านนิยายวิทยาศาสตร์แต่ดันมีเรื่องพวก ศาสนา การค้า การเมือง และอื่นๆที่ว่าอยู่ในนั้น คืออ่านแล้วบอกว่า เฮ้ย เอาจริงดิ ไม่ว่าจะเป็นการที่ทำให้เห็นว่าการมีเทคโนโลยีที่ก้าวหน้ามันได้เปรียบกว่ายังไง การใช้ศาสนาที่แบบนี่ล้อเล่นกันใช่ไหม การค้าที่เคยมองว่าแค่ซื้อขายของแต่เรื่องนี้ทำเอาอ้าปากค้าง การแก้ปัญหาจากหลายๆมุม ซึ่งแต่ละมุมมีเหตุผลรองรับมากกว่าเป็นเพราะนิสัยความชอบส่วนตัว

ความทันสมัย

เชื่อไหมว่านิยายเรื่องนี้ตีพิมพ์ตั้งแต่ ค.ศ. 1942 แบบเฮ้ยยุคนั้นคอมพิวเตอร์ยังเครื่องยังเท่าบ้าน แต่คนเขียนสามารถเขียนบรรยายเทคโนโลยีต่างๆที่คนยุค 2000 อ่านแล้วอินว่ามันอาจเกิดขึ้นได้ ปัญหาเรื่องหุ่นยนต์ที่พึ่งเป็นกระแสมาเมื่อไม่นานนั้น เรื่องนี้ทำได้ล้ำลึกกว่าแค่ฆ่าล้างเผ่าพันธุ์มนุษย์อย่างในคนเหล็ก มันเป็นอะไรทีอ่านแล้วแบบมันถูกตามหลักเหตุผล จริยธรรม แต่มันเป็นทางเลือกที่เลือกได้ยากจริงๆ

อ่านแล้วได้อะไร

อ่านแล้วก็ได้ความสนุก ซึ่งเป็นความสนุกที่ไม่ได้มาจากฉากรักหวือหวา การต่อสู้ด้วยวรยุทธ์ แต่มันสนุกด้วยเหตุด้วยผลที่ทำให้เราตกใจ การหักมุมที่ The sixth sensee เป็นเด็กไปเลย อ่านเรื่องนี้แล้วทำให้เราเห็นเรื่องต่างๆที่เราคิดว่าไม่เกี่ยวกันแต่มันเกี่ยวโยงกันแบบไม่น่าเชื่อ เรื่อง สถาบันสถาปนา นี้เแต่งโดย Isaac Asimov ซึ่งมารู้ที่หลังว่าเขาคือนักเขียนนิยายวิทยาศาสตร์ระดับตำนาน อีกทั้งสถาบันสถาปนาเนี่ยมีจักรวาลของมันด้วยนะ เหมือน marvel dc เลย ก็แอบคิดเหมือนกันว่าจะมีค่ายภาพยนตร์ค่ายไหนซื้อมาแล้วเอาไปทำไหมนะ แต่ประเด็นคือคนจะดูรึเปล่าเพราะสนุกด้วยเหตุผลไม่ได้สนุกด้วยการต่อสู้ สุดท้ายขอปิดด้วยคำคมของเรื่องทีว่า

Never let your sense of morals prevent you from doing what is right.

SonarQube Part 2

มาต่อ ต่อมา กับ SonarQube

ตอนที่แล้วตัดจบ (ยังกะหนังทุนต่ำเพื่อกะเอารายได้หลายๆภาค) ตอนลงโปรแกรม SonarQube เสร็จแล้ว ตอนนี้เรามาต่อที่วิธีการใช้งานกันเลยดีกว่าว่า SonarQube ทำอะไรได้บ้าง

ผมเขียนเกี่ยวกับ Sonarqube ไว้หลายตอน คุณสามารถกด Link ด้านล่างเพื่ออ่านที่เกี่ยวกับ Sonarqube ตอนต่างๆได้เลย

ใครๆก็ต้องผ่านหน้า Login

User password Default ของ SonarQube คือ

1
2
user: admin
pass: admin

พอ Login ปุ๊ปก็ตัวโปรแกรมก็มี Guide มาแนะนำให้เรา (ไม่ต้องอธิบายแล้วมััง) ซึ่งอธิบายได้ดีเลยทีเดียว

  1. ส่วนแรกโดยตัว SonarQube จะให้เรากรอกข้อมูลเพื่อสร้างเป็น Token ที่ใช้ในการ Authen ส่งผลการ scan กลับมาที่ server โดยมีกดสร้างมันจะไปแสดงด้านขวาดังรูป
  2. ส่วนถัดมาจะเป็นส่วนที่เป็นจะให้เลือกว่า Source code ที่เราต้องการ Scan นั้นเป็นภาษาอะไร โดยในที่นี้ผมเลือกเป็น Other เพราะต้องการ Scan code ที่เป็นภาษา javascript
  3. สว่นถัดมาจะเป็นการ OS ที่เราใช้อยู่ อันนี้หมายถึง เครื่องของเราที่กำลังเขียนโปรแกรมอยู่นะครับ (ไม่ใช่เครื่องที่ลง SonarQube server นะครับ) โดยของผมเป็น Windows ครับ

เมื่อเลือกทั้งหมดเสร็จตัว SonarQube จะทำการสร้าง cmd ขึ้นมาให้ทางด้านขวาซึง่เราสามารถทำไปใช้ scan code ของเราได้ในทันที (ง่ายจริงๆ)

เริ่ม scan code กันเลยดีกว่า

  1. ขั้นแรกต้องไป Download ตัว SonarQubeScaner มาก่อนครับ โดยกด Download ตามที่ตัวโปรแกรมแนะนำเลย ต่อจากนั้นทำการ Set Path environment เลยครับ โดยทำได้ตามลิ้งด้านแล้วแต่ OS เลย

  2. ลองหา Source code project มาสัก Project เพื่อทำการ scan กัน ซึ่งผมไปเอา Project ฮาๆที่เคยเขียนกับเพื่อนมาทดลอง scan ละกัน

    1
    git clone https://github.com/serm-tape/loveteller

    เมื่อ clone เสร็จก็จะได้ directory : loverteller มา จากนั้นเปิด cmd ขึ้นมาจากนั้นสั่งใช้ command

    1
    2
    3
    4
    5
    6
    #ย้าย current directory ไปที่ที่อยู่่ใน directory loveteller
    cd path/to/loveteller

    #อันนี้ของ Window นะครับ ถ้า Linux อาจไม่ได้สั่งอย่างนี้

    sonar-scanner.bat -Dsonar.projectKey=loveletter -Dsonar.sources=. -Dsonar.host.url=http://192.168.56.101:9000 -Dsonar.login=e096e94d061625ef1a0e515462a08bb9e7891fe2 -Dsonar.sourceEncoding=UTF-8

    สังเกตตรง -Dsonar นั้นคือ parameter ที่ส่งเข้าไปในตัว scaner ได้ โดยมีรายละเอียด Parameter ของตัว Scaner ตามลิ้งนี้

    • sonar.projectKey คือชื่อ project ที่จะไปสร้างใน sonarqube
    • sonar.sources คือตำแหน่งที่เราจะให้ตัว scaner ทำการ scan โดยในตัวอย่างจะใช้ . แปลว่าเอาตั้งแต่ current directory ลงไปเลย
    • sonar.host.url คือ ที่อยู่ของ server SonarQube
    • sonar.login คือ ข้อมูลที่ใช้ในการ Login โดยอันนี้ผมใช้เป็น token ที่ได้จากการ gen ตรง guide (จริงสามารถใช้ user เป็น username ได้แต่ต้องส่ง sonar.password ไปด้วย)
    • sonar.sourceEncoding คือ การเข้ารหัส Source code อันนี้ set ตาม source code ของคุณครับว่าเข้ารหัสด้วยอะไร

ไปดูที่ Server ว่าได้อะไรบ้าง

ที่ Server จะมีข้อมูล Project ที่เราพึ่ง scan เมื่อกี้โผล่ขึ้นมา ลองกดเข้าไปจะพบว่าตัวโปรแกรม SonarQube ได้สรุปว่าเจออะไรที่สุ่มเสี่ยงใน Code ที่เขียนไปบ้าง โดยข้างผมเจอ Code smell ไป 8 ตัว เมื่อกดเข้าไปดูจะเห็นดังภาพข้างล่าง

โดยตัว SonarQube จะบอกเหตุผลด้วยว่าทำไม Code ถึงถูกจัดอยู่ในกลุ่ม Code ที่ไม่ดี อีกทั้งยังบอกวิธีแก้ไขด้วย (โดยการกดที่ …) ด้านหลัง

ตั้งค่าให้เป็น Private สิ คนนอกจะได้เข้ามาใช้ไม่ได้

เมื่อ Login เข้ามาด้วยสิทธิ์ admin แล้วให้ไปที่ส่วนการจัดการด้าน Security ดังภาพและกำหนดค่า Force authentication ให้เป็น True เพื่อบังคับให้การส่ง Code มาทำการ Scan นั้นต้องทำการ Authentication เข้ามาทำ (โดยปกติ SonarQube เปิดให้ใครเข้ามาก็ได้ )

จบ Part 2 End credit ขึ้น

ก็ถ้าทำตาม Part นี้ทั้งหมดเราก็จะสามารถทำการ scan code แล้วส่งไปให้ตัว SonarQube server ทำการวิเคราะห์หาส่วนที่สุ่มเสี่ยงจะสร้างปัญหาในอนาคต สำหรับผมตัว SonarQube นี่เหมือนด่านแรกในการเขียน Code ให้มีคุณภาพเลยนะ คือถ้า Code ที่เขียนแล้วโดย scan ด้วยกฏธรรมดาๆยังไม่ผ่าน จะให้สิ่งมีชีวิตมา Review ไปทำไมให้เสียเวลา อีกทั้งทุกครั้งที่เราเขียน Code แล้วตัว SonarQube มันฟ้องว่าผิดอะไร เราก็จะได้เรียนรู้ว่าที่เราเขียนมันไม่ดีตรงไหนพร้อมบอกวิธีแก้ไข ซึ่งมันเร็วกว่ารอให้คนอื่นมาบอกมาสอนและมันสามารถทำผิดเท่าไหร่ก็ได้ตามที่เราต้องการ (กับมนุษย์คงมีขีดจำกัด ลองโดนถามสัก 10 รอบ คงจะเริ่มมีอารมณ์ )

แต่ SonarQube ช่วยได้แค่บอกจุดสุ่มเสี่ยงนะครับ ส่วนที่เป็น Flow การเขียนแบบ if ซ้อนกันสัก 10 ชั้น ประกาศตัวแปรแบบห่างไกลกับจุดที่ใช้มากๆ การเขียน Function ทำแม่งทุกอย่างตั้งแต่ต่อ connection ยัน response การประกาศชื่อตัวแปรไม่สื่อความหมาย การเขียนบรรทัดเดียวๆยาวๆแบบโคตร complex การ Design ที่อาจจะสร้างปัญหา อันนี้ SonarQube อาจจะช่วยไม่ได้ ต้องใช้มนุษย์ด้วยกันมาลองอ่าน Code แล้วติชมแก้ไขกัน

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

SonarQube Part 1

SonarQube คืออะไร

ผมเขียนเกี่ยวกับ Sonarqube ไว้หลายตอน คุณสามารถกด Link ด้านล่างเพื่ออ่านที่เกี่ยวกับ Sonarqube ตอนต่างๆได้เลย

เอ่อจะบอกว่ามันคืออะไรแบบคำนิยามจริงจังก็ลำบาก สำหรับใครที่อยากได้คำนิยามจริงจังก็ตามลิ้งนี้ไปเลย sonarqube แต่ถ้าเอาง่ายๆแบบที่ผมเข้าใจมันก็คือตัวโปรแกรมที่ไว้เช็คคุณภาพของ Code ตรวจสอบว่า Code ของเราเนี่ยมีส่วนไหนที่มันดูสุ่มเสี่ยงที่จะสร้างปัญหาไหม คือคนที่มาเป็นโปรแกรมเมอร์เขียน Code เนี่ยเขียน Code เป็นอยู่ละไม่ว่าจะเป็น For loop if else แต่การเขียน Code ที่ดีนั้นต้องใช้เวลา ประสบการณ์ ซึ่งไอประสบการณ์ส่วนใหญ่เนี่ยมันแลกมาด้วยการเอาขึ้น Production แล้วเกิดปัญหา หรือ ต้องมีผู้หลักผู้ใหญ่ (เรียกซะใหญ่โต) หรือ senior มา Review code ให้เพื่อบอกข้อเสียและปัญหาที่จะตามมาถ้าเขียน Code แบบนี้

ทำอย่างถูกบีบด้วยเวลา

การ Review code เป็นเรื่องที่ดีครับ จริงๆผมอยากให้มีคนมา Review code เสียเหลือเกิน แต่น่าเสียดายด้วยจำนวนโปรแกรมเมอร์ที่น้อยอีกทั้งต่างคนต่างยุ่งกับงานของตัวเอง ผมล่ะฝันอยากให้บริษัททำแค่ Service เดียวแล้วช่วยกันเขียน Code ช่วยกัน Review ขายมัน Service เดียว แต่ในความเป็นจริงมันไม่ใช่แบบนั้นบริษัทต้องหารายได้ให้มากที่สุด บริษัทก็รับงานมาอย่างมหาศาล โปรแกรมเมอร์ก็เร่งกันเขียน Code ให้มันขึ้น Production ทัน ไม่มีใครเหลือเวลามาสั่งสอน ส่งต่อความรู้

ในเมื่อคนสอนไม่มีคงต้องช่วยเหลือตัวเอง

ในสถานการณ์บีบคั้นแบบนี้คงต้องช่วยเหลือตัวเองดังคำที่ว่า

ตนแลเป็นที่พึ่งแห่งตน

หรือถ้าใครเคยดู Eureka Seven ก็น่าจะคุ้นกับคำว่า

อย่าอ้อนขอ จงไขว่คว้ามา ไม่อย่างนั้นก็ไม่มีทางประสบความสำเร็จ

ตัวช่วยที่ง่ายพอจะทำได้ไม่ต้องพึ่งคนอื่นมาก ไม่ต้องใช้เวลานานก็เห็นจะเป็น SonarQube ตัวนี้นี่แหละครับ

ลงเลยละกัน

หลังจากฝอยมานานมาเริ่มลงเลยละกัน ตามเคยครับสมัยนี้มีเทคโนโลยีที่เรียกว่า container แล้วทำให้เราไม่ต้อง install โปรแกรมลงที่เครื่องจริงๆ ทดลองเล่นอะไรแล้วพังก็แค่ลบ container แล้วสร้าง container ใหม่มาเล่นได้เรื่อยๆ ดังนั้นเรามาลง SonarQube ด้วย Docker กันครับ ใครไม่เคยใช้ไปลองเล่นได้ที่ https://www.codeschool.com/courses/try-docker

การ Install มี 2 แบบ

  1. ลงแบบไม่ต้องมี Database

    ลงแบบนี้เน้นไว้ใช้คนเดียว หรือใช้ทดลองอะไรบางอย่าง ไม่เหมาะเอาขึ้นไปใช้เป็น Centralize Quality หรือไปใช้เป็นอุปกรณ์ในการทำ DevOps แบบจริงจัง แต่จริงๆก็ทำได้นะถ้าไม่ได้กะทำใหญ่โตรองรับ Concurrent หรือมี Project เป็นร้อยเป็นพันกะ Scale

    1
    docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube

    แค่บรรทัดเดียวท่านจะได้ SonarQube มาให้ใช้งานแล้วครับ

  2. ลงแบบมี Database

อันนี้สำหรับลงแล้วกะเอาไปใช้สำหรับเป็นเครื่องมือ DevOps เผื่อสำหรับ scale หรือเก็บข้อมูลแบบ Persistent ไว้บน Database ถ้า container หายไปอะไรที่ Config ไว้ก็จะยังอยู่บน Database ครับ อันนี้ Database ที่ทาง SonarQube เป็น Postgres นะครับ (รูปช้าง)

วิธีลง Database อันนี้แล้วแต่เลยนะครับ จะลงแบบเป็นเครื่องจริงๆหรือจะลงแบบ Docker ก็ได้ อันนี้ผมขอลงเป็นแบบ Docker ละกันเพื่อง่ายเผื่อเสียเผื่อพังจะได้ลบแล้วสร้างใหม่ง่าย

1
2
# ลง Database ก่อนนะครับ
docker run --name sonar_postgres -d -p 5432:5432 -e "POSTGRES_PASSWORD=root" -e "POSTGRES_USER=root" -e "POSTGRES_DB=sonarqube" postgres

รายละเอียดการ Config ค่าอื่นๆเกี่ยวกับ docker postgres สามารถอ่านได้ที่ https://hub.docker.com/_/postgres/

ต่อไปทำการลง App อันนี้จะวุ่นๆนิดหน่อยเพราะต้องเชื่อมต่อระหว่าง Database กับ App ด้วย

1
2
3
4
5
6
# ลง App ต่อกันเลย
docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 --link sonar_postgres:postgres \
-e SONARQUBE_JDBC_USERNAME=root \
-e SONARQUBE_JDBC_PASSWORD=root \
-e SONARQUBE_JDBC_URL=jdbc:postgresql://postgres/sonarqube \
sonarqube

รายละเอียดการ Config ค่าอื่นๆเกี่ยวกับ docker sonar สามารถอ่านได้ที่ https://hub.docker.com/_/sonarqube/

สรุปที่ผมทำไปข้างบนคือ ขั้นแรกทำการสร้าง docker ที่เป็น postgres sql จากนั้นสร้าง sonarqube ขึ้นมาแล้วต่อเข้ากับ postgres ที่พึ่งสร้างไปตรงส่วนที่เชื่อมต่อคือตรง –link sonar_postgres:postgres ส่วน -e เป็นการกำหนด Environment จะเห็นว่าผมตั้งค่า environment ที่เป็น username password ตรงกับที่ตั้งใน container ของ postgres ส่วนตรง SONARQUBE_JDBC_URL นั้นกำหนดค่า url ตามที่กำหนดตรง link : –link sonar_postgres:postgres

ลองเข้าไปดูสิว่าใช้งานได้จริงรึเปล่า

ก็ลองเข้าใช้งานตาม ip ของเครื่องเลยครับ ตอนที่ผมลงนั้นผมจะลงให้มัน bind port เข้ากับเครื่องที่ Run docker ไปด้วย หากใครลง Docker กับเครื่องตัวเองเลยก็สามารถเข้าได้ที่ http://127.0.0.1:9000 แต่เครื่องของผม ผมลง docker บน VirtualBox อีก ip ของผมจะแตกจากของคนที่ลงบนเครื่องของผมจะเป็น http://192.168.56.101:9000 (เผื่อเห็นภาพแล้วจะสงสัย)

ขอตัดจบแค่นี้ก่อน

เขียนไปเขียนมาผมว่ามันเริ่มยาวละ ยาวมากไปก็ไม่ค่อยดีเลยขอตัดจบตรงนี้ละกัน (ไรวะยังไม่ได้ใช้งานเลย) ตอนหน้าเดี๋ยวมาอธิบายวิธีการใช้งานตัว SonarQube กันครับ

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

กล้าที่จะถูกเกลียด - Fumitake Koga and Ichiro Kishimi

ชื่อหนังสือโคตรไม่น่าอ่าน

กล้าที่จะถูกเกลียด - Fumitake Koga and Ichiro Kishimi

ตอนสั่งหนังสือเล่มนี้นี่ลังเลมากเพราะชื่อปกมันชวนไม่น่าซื้อมาก ประมาณว่าเฮ้ยจะให้เรากลายเป็นคนไม่ใส่ใจคนอื่นเหรอ แต่สุดท้ายก็ตัดสินใจซื้อมาเพราะอยากลองดูว่ามันจะกล้าแบบไหนถึงจะยอมรับการโดนเกลียดได้

แผลใจ อดีต ข้ออ้าง

หนังสือเริ่มเรื่องโดยเล่าถึงชายหนุ่มที่มาพบกับนักปรัชญาเพื่อถกเถียงเกี่ยวกับปรัชญาเรื่องความเรียบง่าย ความสุข การเปลี่ยนแปลงตัวเอง พออ่านไปเรื่อยๆแล้วมันโดนมาก อันนี้ชอบเทคนิคการนำเสนอของหนังสือเล่มนี้มากที่สร้างตัวชายหนุ่มขึ้นมาเป็นตัวแทนของคนอ่าน และนักปรัชญาคือสิ่งที่หนังสืออยากให้เรารู้ ถ้าใครเคยดู “มิลินทปัญหา” ก็แนวนั้นเลย โดยส่วนตัวผมว่าถ้าเอามิลินทปัญหามาสอนแทนเรื่องการขี่ม้าข้ามแม่น้ำ การเกิดแล้วเดินได้ 7 ก้าว หรือเรื่องปาฏิหารย์ต่างๆนี่น่าจะเป็นประโยชน์กับผู้ศึกษาพระพุทธศาสนา ผมมาลองคิดๆแล้วผมเรียนพระพุทธศาสนาตั้งแต่ “ป.1 - ม.6” บอกตามตรงว่ารู้เรื่อง“ปาฏิหารย์”ต่างๆนาๆมากกว่าหลักธรรมที่ควรจะเป็นสิ่งทีควรเน้น หรือวิธีการนำเอาหลักธรรมมาปฏิบัติแบบจริงๆจังๆเสียอีก (คนมักเน้นแต่จะนั่งสมาธิคือมันเอามาอย่างอื่นก็ได้มั้งครับ) อ่านไปเรื่อยๆมีการพูดถึงเรื่อง แผลใจ หรือเรื่องในอดีตทีฝังใจ อันนี้โดนมากคือ ตัวชายหนุ่มยกตัวอย่างเรื่องแผลใจว่าคนเราเป็นอย่างนี้เพราะแผลใจนี่แหละ ซึ่งมันตรงกับการปลูกฝังและจิตสำนึกของคนทั่วไป แบบ โดนพ่อแม่กดดันไงเลยเป็นแบบนี้ โดนแบบนั้นแบบนี้เลยเป็นแบบนั้นนี้ แต่เมื่อนักปรัชญาอธิบายแนวคิดของ Alfred Adler ที่ว่าตัวเรานั่นแหละที่เลือกจะเป็นแบบนี้ คนเราสามารถเปลี่ยนแปลงตัวเองได้ตั้งแต่วินาทีนี้ ตอนนี้ ไม่เกี่ยวกับอดีตที่เป็นตัวกำหนดปัจจุบันหรืออนาคต

ตอนอ่านครั้งแรกแบบ “นี่ล้มกระดาน ทำลายทุกสิ่งที่เข้าใจหมดเลยนะ” แต่พอลองเอาแนวคิดของเขามาเทียบกับเหตุการณ์จริงๆมันสามารถอธิบายได้ดีเลยนะ ตัวอย่างเช่น คนที่บอกว่าเป็นโรคติดห้องไม่กล้าออกไปไหนเพราะพ่อแม่เคยตี เคยถูกต่อว่า เลยไม่กล้าออกไปไหน คือจริงๆแล้วเขาเลือกที่จะเป็นแบบนั้น เพราะเขาต้องการให้พ่อแม่ของเขาเป็นห่วง ไม่ทำร้ายเขา ทำดีกับเขา ซึ่งถึงแม้เขาจะไม่ได้ออกไปไหนแต่ก็คุ้มกับการที่พ่อแม่เป็นห่วงเขา ใส่ใจเขา หรือเรื่องการที่คนส่วนใหญ่ชอบบอกว่าเปลี่ยนลักษณะการใช้ชีวิตไม่ได้ ชอบบอกว่าเพราะอย่างนั้นอย่างโน้นอย่างงี้ทั้งที่ใจตัวเองอยากเป็นใจจะขาด ทั้งหมดนั้นมันแค่ข้ออ้าง จริงๆคุณไม่อยากจะเปลี่ยนการใช้ชีวิตของตัวเองเพราะรู้สึกไม่ปลอดภัย คือใช้ชีวิตแบบเก่าคุณรู้ว่ามันต้องเจออะไรบ้าง คุณสามารถจะควบคุมมันได้ แต่ถ้าคุณเลือกที่จะเปลี่ยนแปลงคุณจะต้องเจออะไรที่ควบคุมไม่ได้ อาจทำให้เสียใจ เสียความรู้สึกต่างๆนาๆ คุณเลยไม่กล้าที่จะเปลี่ยน พอไม่กล้าที่จะเปลี่ยนคุณเลยต้องหาอะไรมาเป็นข้ออ้างเพื่อให้ตัวเองรู้สึกสบายใจ

มันคือคำตอบที่เรารู้อยู่แล้ว แค่ไม่กล้ายอมรับมัน

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

อ่านแล้วได้อะไร

อ่านหนังสือเล่มนี้เหมือนได้เปิดโลก เปิดใจ ยอมรับสิ่งที่เป็นอยู่ และเข้าใจตัวเองมากยิ่งขึ้น ในหนังสือยังมีอีกหลายส่วนที่จัดว่าเด็ดมากในหลายๆเรื่อง ไม่ว่าจะเป็นเรือง ความทุกข์ทั้งหลายเกิดจากความสัมพันธ์ ความรู้สึกต่ำต้อย การอยากเหนือกว่า สังคม และอื่นๆอีกมากมาย สำหรับใครที่ว่างไม่มีอะไรทำ หรืออยากอ่านหนังสือจิตวิทยาเบื้องต้นก็ขอแนะนำหนังสือเล่มนี้เลยครับ ราคาประมาณ 240 บาท สุดท้ายแล้ว “เราเปลี่ยนแปลงได้ตั้งแต่ตอนนี้วินาทีนี้”

ข้อมูลที่รั่วนั้นคือบัตรประชาชนนะ

อ่านข่าวแล้วตกใจ

ไม่กี่วันที่ผ่านมามีข่าวเรื่องข้อมูลบัตรประชาชนรั่วจากบริษัทดังในประเทศ ตอนอ่านข่าวแล้วแบบ “โอ้เอาจริงดิ” ในตอนนั้นคิดว่า บริษัทนั้นคงโดนรัฐถล่มยับแน่นอน แต่พอมานั่งดูข่าวต่อก็ร้องเพลงขึ้นมาเลย

แถมอ่านข่าวต่อๆไปที่ผู้ใหญ่ในบ้านในเมืองออกมาบอกอีกว่าข้อมูลที่หลุดอะแค่หน้าบัตรประชาชนเอง ข้อมูลเชิงลึกอะไม่เป็นไรยังเก็บดี ตอนนั้นนี่เหมือนโดนไม้ฟาดหน้าเข้าไปเต็มๆ โอ้ท่านลองปรึกษาพวกนักวิจัย อาจารย์มหาวิทยาลัย ที่ปรึกษาด้านเทคโนโลยีก่อนไหมครับ คือพลาดแล้วท่านอาจโดนล้อยันอีก 100 ปีได้เลยนะ คือสมัยก่อนข้อมูลหนังสือพิมพ์ถูกเก็บไว้ในไมโครฟิล์มซึ่งคนรุ่นเราสามารถไปขออ่านได้ที่หอสมุดแห่งชาติ แต่สมัยนี้อาจมีฐานข้อมูลเก็บข้อมูลหนังสือพิมพ์ไว้ให้อ่านแล้วก็ได้ ไม่แน่เด็กในปี พ.ศ. 2761 อาจมาอ่านข่าวนี้แล้วทำรายงานเกี่ยวกับความปลอดภัยของข้อมูลเมื่อปี พ.ศ. 2561 แล้วหัวเราะก๊ากได้นะ

ออกตัวก่อนเลยว่าผมไม่ได้เป็น Hacker หรือผู้เชี่ยวชาญด้านความปลอดภัยของข้อมูล ผมเป็นแค่ Programmer ธรรมดาๆคนหนึ่งเท่านั้นที่ได้มีโอกาสได้เรียนวิชา Computer security (เราเรียกมันว่าคอมสีเขียว) ซึ่งในคาบวิชาอาจารย์ได้สอนให้ตระหนักรู้เกี่ยวกับเรื่องความปลอดภัยของข้อมูล เรื่องที่จะพูดต่อไปนี้เป็นเรื่องพื้นฐานมากๆในวิชานั้น ต่อไปเรามาลองดูดีกว่ามีข้อมูลบัตรประชาชนเราเอาไปทำอะไรได้บ้าง อันแรกเรามาลองอะไรแบบโดนไปก็งั้นๆก่อน

เฮ้ยสมัครเกมส์ไม่ได้ว่ะ มันบอกมีคนใช้เลขบัตรประชาชนไปแล้ว

อันนี้ตอนผมอายุไม่เยอะเป็นเด็กเล่นเกมส์อยู่ เวลาเข้าไปบอร์ดเกมส์ออนไลน์มักจะเห็นคนโพสด่า GM ( ไม่เข้าใจว่าไปด่าทำไม) ว่าเฮ้ยสมัครไอดีไม่ได้ มีคนเอาเลขบัตรประชาชนไปใช้แล้ว ถ้าผมจำไม่ผิดสมัยนั้นมันต้องใช้เลขบัตรประจำตัวประชาชนในการสมัครไอดีเล่นเกมส์ (น่าจะมีปัญหาเรื่องห้ามเล่นเกมหลังสี่ทุ่ม) ซึ่งถ้าสมมุติข้อมูลบัตรประชาชนผมรั่วไป นั่นแปลว่าอาจมีคนเอาเลขบัตรประจำตัวประชาชนผมไปสมัคร Id เกมส์แล้วก็เป็นได้ ซึ่งนั้นแปลว่า ผมอดเล่นเกมส์ออนไลน์เกมนึงไปเลยนะ

ตอนนี้หลายคนอาจคิดว่าไร้สาระน่าแค่เล่นเกมส์ไม่ได้เองนี่นาทำเป็นเรื่องใหญ่ไปได้ “เดี๋ยวเอาเสาค้ำสมุทรทุ่มเข้าให้” แต่รู้ไหมครับคุณกำลังโดนแอบอ้างความเป็นตัวตนของคุณไปแล้ว ใช่คุณอาจไม่เสียอะไรเพราะมันแค่เกมส์ แต่ลองเป็นอะไรที่คอขาดบาดตายดูเช่น สมัครรับตั๋ว BNK48 ได้จับมือน้องเฌอปรางนาน 3 ชั่วโมงไรงี้มันจะเป็นยังไง ถ้ามองในมุมมองแง่ร้ายมากๆหน่อยคือ ไอคนที่เอาบัตรประชาชนคุณไปสมัครเกมส์ พออยู่ในเกมส์มันไปทำอะไรบางอย่างที่รุนแรงมากเช่น ยุยงให้เกิดความแตกแยกในสังคมโดยใช้เกมส์เป็นแหล่งชุมนุมติดต่อแลกเปลี่ยนข่าวสาร หรือเป็นตั้งกลุ่มก่อการร้าย คราวนี้ทางบริษัทเกมส์จับได้ ทีนี้เขาต้องการหาว่าตัวตนคนที่ใช้ไอดีนั้นคือใคร คราวนี้เขาก็สาวหาตัวตนจริงๆด้วยการใช้บัตรประชาชนซึ่งมันเป็นของใครล่ะ “ก็ของคุณไงล่ะ” คราวนี้คุณก็ซวยตำรวจบุกไปถึงบ้านพร้อมพาคุณไปสอบปากคำต่างๆนาๆ ซึ่งคุณไม่ได้ทำอะไรเลย แต่ตำรวจมีหลักฐานสาวตัวมาถึงคุณไงล่ะ คุณอาจจะพ้นผิดแต่สิ่งที่คุณเสียไปคือเวลาที่เอาคืนมาไม่ได้ ต้องเสียสุขภาพจิต ครอบครัวเป็นห่วง และอื่นๆตามแต่คุณจะคิดได้ตอนนี้ อันนี้ผมอาจมโนเพ้อฝันไปเยอะหน่อยแต่มันก็อาจเกิดขึ้นได้นะ

คราวนี้ลองอะไรเป็นจริงเป็นจังหน่อย

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

แต่อย่าพึ่งดีใจไปนะ

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

สมัครไปแล้วรอดแล้ว

ขอบอกว่าไม่ครับ จริงๆมันตรงส่วนลืมรหัสผ่านอยู่นะซึ่งมันมีให้ใส่ข้อมูลที่อยู่บนบัตรประชาชมและคำถามที่คุณตั้งไว้ ซึ่งคำถามพวกนี้เขาสามารถไปหาข้อมูลได้ไม่อยากผ่านfacebook เช่น สถานที่เกิด สัตว์เลี้ยงที่ชอบ บลาๆ ซึ่งถ้าถูกคุณก็เสีย account นั้นให้คนอื่นไปแล้ว เช่นกันถ้าเขาขี้เกียจเดาเขาขอรหัสผ่านใหม่ สิ่งที่เขาต้องทำคือใส่เลขหลังบัตรซึ่งก็สามารถใช้วิธีเดิมดังที่ผมเคยกล่าวไป อันนี้ก็อยู่ที่ทางผู้พัฒนาโปรแกรมนี่แล้วล่ะครับว่าเขาได้ทำกันเรื่องพวกนี้ไว้ไหม ในมุมมองแบบแง่ร้ายเลยนะ ผมคิดว่าไม่น่ากันเพราะเขาคิดว่า ข้อมูลที่ต้องกรอกคือ ชื่อ นามสกุล วันเดือนปีเกิด เลขบัตรประชาชน คำถาม นี่ ความน่าจะเป็นที่ต้องที่ต้องเดานี่มันแทบจะทำให้สิ้นหวังเลย เขาเลยไม่น่าจะกันไว้ แต่ตอนนี้สถานการณ์มันเปลี่ยนไปเพราะมีข้อมูลหน้าบัตรประชาชนแล้ว ความน่าจะเป็นที่ต้องเดาที่แทบจะสิ้นหวังกลับมีโอกาสทำได้แค่มีเวลา

มีน่ากลัวกว่านั้นอีกนะ

มันมีหน้านึงผมพึ่งโดนไปไม่นานนี้คือหน้าส่งข้อมูลเพิ่มเติมเกี่ยวกับภาษี คือเวลาเรายื่นลดหย่อนเนี่ยทางรัฐเขาก็ไม่เชื่อใจเราร้อยเปอร์เซ็นบางทีเขาก็ขอหลักฐานเพิ่ม ซึ่งไอหน้าขอหลักฐานเพิ่มเนี่ยมันเข้าผ่านหน้านี้ เห็นอะไรไหม แค่มีเลขบัตรประชาชนแล้วก็ชื่อ นามสกุลก็สามารถเข้าได้แล้วจ้า จริงๆถ้าคุณไม่มีข้อมูลอะไรเลย มันเป็นการยากมากที่จะเดาสุ่มเรื่อยๆแล้วเจอ แต่นี่เขามีข้อมูลพร้อมไงครับ มันก็เลยเข้าไปได้แบบสบายๆเลย จริงๆมันก็ไม่มีอะไรนะคือมันแค่ให้ Tracking สถานะว่าการยื่นภาษีของเราไปถึงไหนแล้ว แต่มันพีคของพีคตรงที่ถ้าใครต้องส่งเอกสารเพิ่มมันจะมีลิ้งให้กดหลังกรอกข้อมูลข้างบนถูกเลยครับ (อันนี้ไม่รู้จะแสดงยังไงให้ดูเพราะผมแนบเอกสารไปแล้ว แต่ถ้าใครยังไม่แนบลองทำดูได้) ซึ่งสามารถเข้าไปแนบเอกสารได้เลย ถ้าโชคร้ายมีผู้ไม่หวังดีมาแนบเอกสารแทนผมโดยแนบรูปภาพหมิ่นประมาท หรือ ภาพบางอย่าง เอกสารปลอม ซึ่งแปลว่าอะไรครับ แปลว่าผมอาจโดนเรียกพบ โดนจับ หรือต่างๆนาๆซึ่งผมไม่ได้ทำเลย และผมต้องหาทางยืนยันความบริสุทธิ์ให้ตัวเองอีกด้วย (ไม่ได้ทำแถมต้องแก้ต่างให้ตัวเองอีกต่างหาก) หรือกรณีโชคดีหน่อยก็ต้องแนบเอกสารใหม่เสียเวลานานขึ้นอีกกว่าจะได้ภาษีคืนแล้วเอาเงินไปซื้อ Photo set ของ BNK48

มีอีกหลาย Service เลยนะที่ใช้ข้อมูลบนบัตรประชาชน

ผมเห็น Service นี้ของประกันสังคมเคยมีพี่ที่ทำงานมาให้ลองเล่น

https://ssoconnect.mywallet.co/

จะเห็นว่าแค่กรอกบัตรประชาชนกับเบอร์มือถือ ซึ่งผมไม่แน่ใจว่าเขาลิ้งข้อมูลกันด้วยรึเปล่าว่า เบอร์โทรศัพท์นั้นต้องเป็นเบอร์ที่ลงทะเบียนโดยคนเดียวกับเลขบัตรประชาชนนั้น แต่ถ้าให้ผมเดาคิดว่าน่าจะไม่นะ เพราะมันคงยุ่งยากระดับนึงกับผู้ใช้เลย หรืออาจจะเป็นเพราะรัฐไม่เปิดการเชื่อมต่อภายในระหว่างประกันสังคมกับฐานข้อมูลซิมที่จดทะเบียน จึงทำให้เช็คไม่ได้ อันนี้ใครเคยลองก็บอกได้นะ และในอนาคตถ้ารัฐเปิด Service ต่างๆให้ประชาชนเข้าใช้งาน ผมเชื่อข้อมูลบนบัตรประชาชนจะเป็นส่วนหนึ่งในการสมัคร ประเด็นมันอยู่ที่คนที่ข้อมูลหลุดไปแล้วจะมีความเสี่ยงโดนสวมรอย ซึ่งอาจยาวนานไปจนถึงเขาตายหรือเขาเปลี่ยนชื่อ นามสกุล

งั้นให้สิทธิพิเศษกับคนพวกนี้สิ

อันนี้ผมว่าก็น่าจะทำไม่ได้นะ เกิดคนพวกนั้นเขาทำผิดจริงๆตั้งใจทำความผิดจริงๆ แต่เขาใช้ข้ออ้างว่าข้อมูลเขารั่วในเหตุการณ์นั้น ไปๆมาๆเขาหลุดคดีเฉยๆทั้งๆที่เขาทำ คือพอมาถึงตรงนี้ผมว่าหลายๆคนคงมองเห็นภาพว่า แม่งเป็นปัญหาจริงๆนะ คือจะบอกว่าเขาบริสุทธ์ก็ไม่กล้าพูดเพราะไม่มีอะไรมายืนยัน จะบอกว่าเขาผิดก็ยากอีกเพราะไม่แน่เขาอาจสวมรอย คราวนี้ก็ต้องวิ่งเต้นหาหลักฐานมาเพื่อตรวจสอบ ซึ่งเราได้ประโยชน์อะไรจากการทำอะไรแบบนี้ แทนที่จะเอาเวลาไปทำอย่างอื่นเช่น ดู Live สดวง BNK48 เปิดช่อง 9 ดูพริตตี้เคียว ออกไปออกกำลังกาย เขียนโปรแกรมดีๆสักโปรแกรม หรือ หากใช้เครื่องในการตรวจสอบก็เสีย CPU GPU ไปกับงานไร้สาระแบบนี้ แทนที่จะเอาคอมไปร่วมโครงการ SETI@home

มีอีกหลายเรื่องที่น่ากลัว


อันนี้คนอาจจะเริ่มรู้แล้ว แต่บางคนอาจจะไม่รู้ ในกรณีนี้คือมีคนทำข้อมูลคุณหลุด แต่มันมีหลายกรณีที่คุณให้ข้อมูลกับคนอื่นเอง ตัวอย่างง่ายๆคือ facebook อันนี้ผมจะไม่พูดถึง APP นะ อันนี้พูดถึงประวัติส่วนตัวเพียวๆเลยคือ เห็นหลายคนบอกวันเกิดตัวเองเลยจ้า คือแบบ โอ้ใจท่านกล้ามากอะ คือวันเดือนปีเกิดมันถูกใช้กับการยืนยันตัวตนบางที่ หรือเป็นรหัสผ่านบางอย่างเลยนะ ตัวอย่างล่าสุดที่ผมเห็นเขาใช้วันเดือนปีเกิดเป็นรหัสผ่านคือ ใบรายงานเกี่ยวกับกองทุนรวมในปัจจุบันอันนี้ใช้วันเดือนปีเกิดเป็นรหัสผ่านเปิดดูไฟล์ PDF เลยนะ หรือ อาจจะเป็นการบอกที่อยู่ บ้านเกิด ของที่ชอบ โรงเรียนแรกทีเรียน คุณคุ้นๆอะไรแบบนี้ไหม ใช่ครับ มันคือคำถามในหน้าลืมรหัสผ่านตอนยื่นภาษีไง และหลายๆที่เขาก็ใช้คำถามแบบนี้ด้วยนะ ถ้าจำไม่ผิด paypal เคยใช้ด้วยมั้ง ซึ่งเท่ากับว่าคุณเปิดเผยข้อมูลของคุณให้ทุกคนรู้เลยจ้า หรือบางคนเปิด public สะแบบ ตามติดชีวิตได้เลย รู้ตั้งแต่เรียนที่ไหน ได้เกรดอะไร พ่อแม่เป็นใคร ต่างๆนาๆซึ่งผมไม่เคยรู้จักเขาเลย ผมว่าแม่งโคตรน่ากลัวเลยนะที่คนอื่นรู้ชีวิตของคุณทั้งๆที่คุณไม่รู้จักเขาเลย

งั้นก็ไม่ให้ข้อมูลอะไรเลย ทำทุกอย่างแบบ Offline ให้หมดเลย

จริงๆมันก็ทำได้นะ แต่คุณจะยอมรับได้เหรอเพราะมันเท่ากับเป็นการตัดความสะดวกสบายในชีวิตคุณไปมากมายมหาศาลเลยนะ คุณอาจจะทำ Internet banking ไม่ได้เพราะมันต้องสมัครด้วย ข้อมูลบนบัตรประชาชน คุณอาจยื่นภาษีออนไลน์ไม่ได้เพราะไม่ได้สมัครสมาชิก คุณคุย Facebook กับเพื่อนไม่ได้เพราะคุณไม่กล้าให้ข้อมูล คุณเล่น tinder หาคู่ไม่ได้เพราะไม่มีบัญชี facebook คุณทำอะไรบน Internet ไม่ได้เพราะคุณไม่ให้ข้อมูลอะไรที่จำเป็นกับ Application นั้น คุณยอมรับมันได้ไหม อาจารย์ท่านหนึ่งเคยให้ข้อสรุปเกี่ยวกับเรื่องพวกนี้กับผมซึ่งคมมาก แต่ผมจำคำพูดนั้นแบบคมๆไม่ได้ละ จำได้ประมาณว่า “คุณต้องเจอมันแน่นอน คุณจึงต้องตระหนักรู้เกี่ยวกับมัน”

เธอ ฉัน ดาวฤกษ์

A Stellar Collision

รอบนี้เป็นรอบที่ 4 ของการดูละครฟรีที่จุฬา รอบนี้โชคดีหน่อยที่มีเพื่อนมาดูด้วย (จริงๆรอบที่ 2 เพื่อนคนนี้ก็มาดูด้วย) สำหรับเรื่องนี้ไม่ได้อ่านคำโปรยของเรื่องเลย เห็นชื่อเรื่องเกี่ยวกับอวกาศ ใกล้เคียงกับวิทยาศาสตร์เลยคิดว่าน่าจะต้องเป็นอะไรที่ล้ำมาก พอไปถึงคนเยอะมากๆ มากพอๆกับเรื่อง Equus เลย ในใจตอนนั้นคิดว่ามันจะเล่น 3 ชั่วโมงอีกรึเปล่าวะ ถ้าสามชั่วโมงนี่ 5 ทุ่มเลยนะ ยังเข็ดกับการเดินในจุฬาตอน 5 ทุ่มอยู่เลย แต่พอเจ้าหน้าที่ประกาศว่าแค่ชั่วโมงครึ่งเลยโล่งใจ

นักแสดงแค่สองคน

ทุ่มครึ่งโรงเปิดคนแห่กันเข้าโรง วันนี้คนนั่งหน้าเยอะเลยได้นั่งแถว 3 แทน ละครเริ่มด้วยนักแสดงสองคน ชายหนึ่งหญิงหนึ่ง เรื่องเล่าถึงนักเขียน 2 คนมาเจอกัน เรื่องเล่าไปกลับระหว่างปัจจุบัน อดีต ไล่กลับไปกลับมา นักแสดงสองคนนี่เล่นได้ดีนะ แต่ปัญหาคือ ละครมันต้องการจะบอกอะไรเราวะคือนั่งดูแล้ว เชี่ยคืออะไร คือละครเล่นให้เราเห็นว่า สองคนนี้ใช้ชีวิตคู่แล้วมีปัญหา แต่พวกคุณมีปัญหาอะไรกันวะ คนนึงไม่พูด คนนึงพยายามพูด คนนึงพยายามแก้ คนนึงบอกว่าตัวเองไม่เป็นอะไร คือตกลงตัวพระเอกมันเป็นอะไร มึงมีปัญหาอะไรวะ คือเขียนนิยายไม่ได้แต่มึงเป็นอะไร ยิ่งดูก็ยิ่งงง ไม่เข้าใจ เรื่องที่จะสื่อเกี่ยวกับดวงดาว มันเกี่ยวอะไรวะดูดาววะ คือนั่งดูแล้วก็ยิ่งงง

ประโยคเดียวที่กินใจ

ในเรื่องที่นั่งดูนั้นมีประโยคนึงที่โดนมาก มันพูดประมาณว่า “เขากำลังเขียนเรื่องที่ไม่มีอยู่จริงเหมือนอยู่ในอีกโลกนึงแต่ก็กำลังเขียนมันขึ้นมา” ประโยคไม่ใช่แบบนี้ 100 เปอร์เซ็นต์แต่ใจความประมาณนี้ พอได้ฟังประโยคนี้แล้วเออมันเป็นประโยคที่ทำให้หนังสือทั้งเรื่องจบลงได้สวยงาม ตรงกับที่ตัวนางเอกชมพระเอกว่า ประโยคนี้ประโยคเดียวก็ทำให้หนังสือจบได้ ซึ่งผมก็เห็นด้วยว่าประโยคนี้ประโยคเดียวที่ทำให้ผมประทับใจกับละครเรื่องนี้

ละครจบแต่คนไม่จบ

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

วิธีพาตัวเองออกจากกล่องใบเล็ก - Leadership and Self-Deception

เขาแนะนำเลยอ่าน

วิธีพาตัวเองออกจากกล่องใบเล็ก - Leadership and Self-Deception
วันนี้มาแนะนำหนังสือชื่อ “วิธีพาตัวเองออกจากกล่องใบเล็ก” จริงๆใช้คำว่าแนะนำไม่ถูกต้องใช้คำว่าบอกต่อจะถูกกว่าเพราะผมไปอ่านรีวิวหนังสือที่เพจ tactschool ตอนแรกอ่านชื่อหนังสือแล้วแบบ มันต้องเป็นหนังสือที่บอกประมาณว่า “เฮ้ยต้องกล้าที่จะแตกต่าง ต้องเปลี่ยนตัวเอง เปลี่ยนแนวคิด บลาๆๆๆ” แน่ๆเลย แต่ช่วงนั้นอยู่ใน Promotion ที่ซื้อหนังสือแล้วได้ส่วนลดเลยซื้อมาแบบไม่คิดมาก

ติดอยู่ในกล่อง

หลังจากใจจดใจจ่อรอหนังสือมาส่งที่บ้านเพราะอยู่ในช่วงเคว้งไม่มีอะไรทำ พอหนังสือมาปุ๊ปก็หยิบเล่มนี้มาอ่านก่อนเลยเพราะถ้าไม่ถูกใจจะได้ย้ายไปอ่านเล่มอื่นก่อน พออ่านปุ๊ป เฮ้ยมันไม่ใช่หนังสือ How to เป็นข้อๆนี่หว่า มันเป็นนิยายนี่นา พอเริ่มอ่านแล้วสนุกมาก ตัวละครหลักที่ดำเนินเรื่องเปรียบเสมือนตัวเราที่กำลังทำความเข้าใจเกี่ยวกับไอกล่องที่ทำให้เกิดปัญหา โดยกล่องที่ว่าเนี่ยเป็นอะไรที่น่าตกใจมากแบบตอนแรกนึกว่ากล่องเป็นแบบโลกทัศน์อะไรประมาณนี้ แต่กล่องในเรื่องนี้นี่สุดยอดกว่าเรื่องโลกทัศน์ที่คนชอบพูดว่าให้มองโลกกว้างๆเป็นไหนๆ ซึ่งถ้าเอามาเทียบกับชีวิตจริงแล้วแม่งใช่มาก ใช่แบบสุดๆ ในเรื่องมีการพูดถึงการทรยศตัวเองซึ่งตรงมาก ตรงแบบไอสาด พี่เข้ามาอ่านความคิดผมตอนนั้นรึเปล่า พอได้อ่านแล้วก็ทำให้รู้ว่าตอนนี้เรากำลังติดอยู่ในกล่องแถมเป็นกล่องที่น่ากลัวด้วย

อ่านแล้วได้อะไร

สำหรับเล่มนี้อ่านแล้วได้เห็นมุมมองที่ไม่เคยคิด ไอปัญหาที่เกิดในชีวิตเนี่ยบางส่วนเกิดจากเราอยู่ในกล่อง ทรยศตัวเอง ไปๆมาก็สมรู้ร่วมคิดกันสร้างปัญหา (งงล่ะสิ ต้องอ่านถึงจะเข้าใจ) อ่านแล้วมองเห็นวิธีแก้ปัญหาที่ง่ายในแนวคิดแต่ยากในการปฏิบัติเสียจริงๆ แต่ใช่ว่าจะทำไม่ได้นะ โดยในมุมมองผมนั้นผมว่ามันทำได้แน่แค่ต้องเลิกทรยศตัวเองกับต้องคิดว่าเขาเป็นมนุษย์เหมือนกับเรา อีกอย่างผมว่าคนไทยสามารถเอาวิธีนี้ไปทำได้ไม่ยากเลยนะ แค่คนไทยชอบคิดเอาเองว่าการทำงานคือการแข่งขัน (หรือจริงๆไปได้แนวคิดนี้มาจากใครสักคน) ทั้งๆที่นิสัยคนไทยแม่งโคตรชอบช่วยเหลือกันจนน่าตกใจ

หนังสือเล่มนี้ราคา 160 บาทเท่านั้น โดยส่วนตัวคิดว่าคุ้มมากเพราะทำให้เห็นมุมมองใหม่และเห็นวิธีการแก้ปัญหาที่เป็นไปได้แถมยังเล่าได้สนุกกว่าหนังสือ How to ที่บอกว่าต้องทำตัวอย่างโน้นอย่างนี้เป็นไหนๆ

ขุมทรัพย์สุดปลายฝัน - The Alchemist

โปรแกรมเมอร์ กับ หนังสือ

ขุมทรัพย์สุดปลายฝัน - The Alchemist

เรื่องมันเริ่มจากถึงจุดอิ่มตัวในการหาความรู้ด้วยตัวเองว่าง่ายๆคือมองไปทางไหนก็ไม่รู้จะอ่านอะไร เลยลองไป Search ว่าโปรแกรมเมอร์คนอื่นๆเขาหาหนังสืออะไรมาอ่านบ้างจนเจอคนโพสถามที่ stackoverflow ไล่อ่านคำตอบไปเรื่อยๆส่วนใหญ่เป็นหนังสือเกี่ยวกับการเขียนโปรแกรม เทคนิค วิธีการเก็บความต้องการ ต่างๆนาๆ จนมาเจอชื่อหนังสือ The Alchemist by Paulo Coelho ตอนนั้นนี่แบบ เฮ้ยเกี่ยวอะไรกับการเขียนโปรแกรมวะ เลยไปลองหาหนังสือ คำโปรย มาอ่านดู เออน่าสนใจดีถึงขนาดจะไปหาซื้ออ่านเลย แต่ประเด็นคืออ่านภาษาอังกฤษไม่ออกโว้ย คือจริงๆพออ่านออกแต่ไม่เข้าใจบริบทและศัพท์มันอยู่นอกสายที่เราเรียน แต่สุดท้ายก็หาที่แปลไทยเจอ

คนเลี้ยงแกะ

เรื่องเล่าถึงคนเลี้ยงแกะ อ้าวเฮ้ยทำไมคนเป็นโปรแกรมเมอร์ต้องอ่านวะ แต่พอค่อยๆอ่านแล้วก็ค่อยๆเข้าใจหนังสือเล่มนี้ไม่ได้จำกัดว่าอาชีพไหนควรอ่านคือใครๆก็สามารถอ่านได้ หลายตอนนี่ตอกใจมากเช่น หลายคนอยากเป็นนักเดินทางเขารู้ว่าต้องทำอะไรและมันก็ไม่ยากแต่เขาก็ไม่ทำ พอมาดูกับตัวเอง อยากเป็นโปรแกรมเมอร์ที่เก่งแต่ยังไม่อ่านไม่เขียนไม่กล้าทำอะไรสักอย่าง ได้แต่นั่งทำอะไรที่ไม่เข้าไปหาจุดหมายเลย หนังสือเล่มนี้ใช้เวลาอ่านประมาณ 4 ชั่วโมง หลายตอนสนุก หลายตอนน่าเบื่อ แต่ที่น่าเบื่อส่วนใหญ่เป็นเรื่องการพูดถึงสิ่งที่ไม่มีตัวตน การที่ชีวิตถูกลิขิตโดยสิ่งที่ไม่มีตัวตนซึ่งขัดแย้งกับแนวคิดของตัวคนอ่านทำให้ยิ่งอ่านยิ่งต่อต้าน แต่พอมองถึงจุดประสงค์ว่าหนังสือนี่เป็นนิยายสร้างแรงบันดาลใจ อคติที่มีก็ค่อยๆลดลง จนทำให้อ่านแบบเหมือนอ่านการ์ตูนเลยสนุกขึ้นมาเป็นอย่างมาก ตอนท้ายนี่โคตรลุ้นว่าจะถึงเป้าหมายไหม

อ่านจบแล้วเป็นไง

อ่านจบแล้วก็พบว่าเรามี ตำนานชีวิต อยู่ เราควรจะทำตำนานชีวิตของเราให้เป็นจริงหรือใช้ชีวิตอย่างปกติสุขแบบนี้ต่อไปเป็นคำถามที่ยังไม่ได้คำตอบ สำหรับใครที่อยากได้แรงบันดาลใจหรือแรงอะไรบางอย่างก็แนะนำให้ลองไปหามาอ่านดู หนังสือแปลไทยราคาประมาณ 155 บาท ส่วนใครไม่อยากเสียเงินผมเห็นมีอันที่เป็นภาษาต่างประเทศที่เป็น PDF อยู่ก็ลองไปหาอ่านได้ สุดท้าย ตำนานชีวิต ของเรา เราต้องทำเองไม่มี พระเจ้าองค์ใด มาบังคับให้เราทำได้