Writing BAHTTEXT() in PHP

เมื่อวันก่อนมีคนมาโพสต์ถามใน LINE ว่า จะเขียนโค้ด PHP เพื่อแปลงค่าเงินเป็นตัวหนังสือให้สั้นๆ เหมือนโค้ด FoxPro ที่แปะให้ดูเป็นตัวอย่างได้ไหม

FUNCTION spell

PARAMETER Vn
Va = STRT(TRAN(Vn,'@R G9A9B9C9D9E9F9A9B9C9D9E9F9.9F9S'),' F0.','')

RETURN STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(;
STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(STRT(;
SUBS(Va,RAT(' ',Va)+2,35),'1','หนึ่ง'),'2','สอง'),'3','สาม'),'4','สี่'),;
'5','ห้า'),'6','หก'),'7','เจ็ด'),'8','แปด'),'9','เก้า'),'.0F0S','บาทถ้วน'),;
'0F',''),'0E',''),'0D',''),'0C',''),'0B',''),'0',''),'A','ล้าน'),;
'B','แสน'),'C','หมื่น'),'D','พัน'),'E','ร้อย'),'F','สิบ'),'.','บาท'),;
'หนึ่งสิบ','สิบ'),'สองสิบ','ยี่สิบ'),'สิบหนึ่ง','สิบเอ็ด'),'S','สตางค์')

รู้สึกว่าน่าสนใจดีเลยลองเขียนดู แน่นอนว่าออกมาไม่ใกล้เคียงกับคำว่าสั้น 😅 แต่ก็สนุกดีและใช้งานได้ เลยขอจดเก็บไว้หน่อย รูปแบบการทำงานของฟังก์ชันพยายามลอกของ Excel มา คือปัดทศนิยมเป็นสองตำแหน่ง รองรับค่าลบ ค่าศูนย์ และตัวเลขยาวๆ ได้ (เท่าที่ทดสอบด้วย PHPUnit คือที่ระดับ 1×1012 ยังโอเคอยู่) หน้าตาโค้ดก็ประมาณนี้

[Read More]
php  bahttext  rant  code 

Using SDN May Help Improve ICS Security

พอดีช่วงนี้เริ่มอ่านข้อมูลเกี่ยวกับ OT/ICS Security มากขึ้น และมีเรื่องน่าสนใจหลายอย่าง เลยคิดว่าทำเป็นโน้ตไว้ให้หาง่ายๆ และคอยอัพเดตเรื่อยๆ น่าจะเข้าท่าดี 🤔

เรื่อง SDN (Software-Defined Network) อันนี้น่าสนใจเพราะด้วยแนวโน้มของเทคโนโลยี องค์กรส่วนใหญ่น่าจะมีแผนการย้ายระบบขึ้นคลาวด์กันแล้ว ซึ่งโดยปกติมันก็จะมาพร้อม SDN ด้วย

Disclaimer: ณ เวลาที่เขียนโน้ตนี้ ความรู้เกี่ยวกับ SDN ของผมมีน้อยมาก ดังนั้นข้อความข้างล่างคือการสรุปจาก discussion ตามความเข้าใจของผมเอง อาจจะมีผิดพลาดหรือมั่วบ้าง ต้องขออภัยไว้ล่วงหน้า 😆

[Read More]

How to Upgrade npm on Windows

ถ้าใครใช้ Node.js บนวินโดวส์ น่าจะเคยเจอข้อความที่บอกว่า npm เวอร์ชันที่คุณใช้มันเก่าแล้วนะ ให้อัพเกรดโดยใช้คำสั่ง npm install -g npm ซึ่งถ้าลองรันดูก็จะพบว่า… มันอัพเกรดไม่ได้ 🙄 ที่ตลกคือ ถึงจะอัพเกรด Node.js เป็นเวอร์ชันล่าสุด npm ตัวที่มากับแพ็กเกจก็ยังไม่ใช่เวอร์ชันล่าสุดอยู่ดี 😒

ลอง Google ดูก็พบว่ามีคนทำ tools ไว้ให้ชื่อ npm-windows-upgrade ผมเคยลองใช้แล้วเวิร์กอยู่ แต่ล่าสุดมาลองอีกทีเมื่อประมาณเดือนที่แล้ว พบว่าใช้ไม่ได้ 😑 เดาว่าสาเหตุอาจจะเกิดจากตามที่เค้าเตือนไว้ในหน้า GitHub

Chances are that you attempted to upgrade npm before, it somehow failed, and you then went looking for this tool. If the tool fails to upgrade, it may be troubled by partial changes done during npm install npm or npm upgrade npm.

[Read More]
nodejs  npm 

Let’s Encrypt Wildcard Certificate

วันนี้เพิ่งเห็นว่า Let’s Encrypt เปิดให้ใช้งาน Certificate แบบ Wildcard แล้ว เลยบ้าเห่อรีบเปลี่ยนอย่างไว (จริงๆ suksit.com ยังไม่มี subdomain จะเปลี่ยนทำไม 🤣)

การใช้ Wildcard Certificate มีเงื่อนไขนิดหน่อย คือต้องใช้ Client ที่รองรับ ACME v2 และจะเปลี่ยนจากการ validate แบบเดิม ไปใช้ DNS-01 Challenge แทน อย่างผมใช้ Certbot คำสั่งที่ใช้ในการสร้าง Wildcard Certificate จะเป็นประมาณนี้

[Read More]

Open Graph Protocol

เมื่อวานเพิ่งค้นพบว่ามันมีสิ่งที่เรียกว่าโปรโตคอล Open Graph อยู่ด้วย (เชยโคตรๆ 😅)

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

ทีแรกเข้าใจว่า LINE มันเอารูปแรกที่เจอในเว็บมาเป็น preview เลยพยายามเอารูปที่จะใช้ไปใส่ไว้บนๆ ของหน้าเว็บ แล้วตั้ง display: none; ไว้… แน่นอนว่าไม่เวิร์ก 😆 เลยลองวิธีต่อมา คือเอารูปไปใส่ไว้ตรง branding ของ navigation bar ด้านบนสุดเลย กะว่าถ้ามันอ่านมา ยังไงเจอรูปนี้ก่อนแน่นอน แต่ก็ยังไม่ได้ผลอยู่ดี

[Read More]

2018 Resolutions

  • Learn Go
  • Learn Kotlin to build Android app
  • Learn Python (network programming and pentesting)
  • Finish at least a book per month
  • Improve management skills
  • Contribute to open source projects
  • Dunno, may be added later… 😑

Udemy Notify

จริงๆ อันนี้ทำไว้และใช้งานมาประมาณเดือนนึงแล้ว เพิ่งจะหายขี้เกียจเลยมาอัพบล็อก 😅

เรื่องของเรื่องคือช่วงนี้เป็นสมาชิกกลุ่ม LINE หลายกลุ่มมาก หนึ่งในนั้นคือกลุ่ม Udemy Courses Free สำหรับไว้ติดตามคอร์สฟรีหรือคอร์สที่ลดราคาเหลือ $0 (100% Off) ใน Udemy โดยข้อมูลหลักๆ จะมาจากเว็บ Online Courses Update ของคุณ Tawatchai Saekuai (Boo) ประมาณว่าพออัพเดตเว็บแล้วคุณ Boo ก็จะก๊อปลิงก์มาแปะในกลุ่ม LINE ให้ด้วย 🤩

ทีนี้มีขาประจำกลุ่มอยู่คนนึง เห็นว่าผมทำ Packtpub Notify ไว้ น่าจะเอามาประยุกต์ใช้กับการแจ้งเตือนคอร์สฟรีได้ด้วย เลยไปคุยกับคุณ Boo แล้วได้ URL ของ RSS feed ของเว็บ Online Courses Update มาให้ผมลองทำ notification ดู

[Read More]

Packtpub Notify

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

พอดีช่วงนี้กำลังหัดเขียนภาษา Go เลยอยากลองทำโปรแกรมง่ายๆ ที่มีประโยชน์ในชีวิตประจำวัน คิดไปคิดมาก็ออกมาเป็น Packtpub Notify นี่แหละ คอนเซปต์ก็ไม่มีอะไร แค่อ่านหน้าเว็บของ Packt แล้วส่ง notification ด้วย LINE Notify มาให้ผมทุกเช้า ว่าวันนี้มีหนังสืออะไร เป็นหน้าปก กับรายละเอียดนิดหน่อย ให้ตัดสินใจได้ว่าจะโหลดไหม 😆

[Read More]

Changing Docker Bridge Network IP

ตอนนี้เริ่มใช้งาน Docker แบบจริงจัง โดยตั้งเซิร์ฟเวอร์ Gogs สำหรับเก็บซอร์สโค้ดของทีมงาน แต่ปรากฏว่ามีบางหน่วยงานที่ไม่สามารถเรียกหน้าเว็บได้ ทีแรกนึกว่าเป็นที่ระบบเน็ตเวิร์ก แต่เช็คไปเช็คมาปรากฏว่าเป็นเพราะ Docker มันไปสร้าง bridge network interface เป็น IP วงเดียวกับที่ใช้ในอินทราเน็ตของที่ทำงาน 😑

จากที่ Google มาได้ความประมาณว่า default bridge network interface ของ Docker ในลินุกซ์ จะใช้ชื่อ docker0 และจะเป็นวง private IP ที่เริ่มจาก 172.17.0.0 (เดาว่าน่าจะกำหนดให้อยู่ใน private IPv4 address space) ซึ่งถ้ามีเครื่องจากภายนอกที่ใช้ IP วง 172.17.x.x พยายามติดต่อเข้ามา เซิร์ฟเวอร์จะงงและไม่ตอบกลับ

[Read More]

Redpill 2017

เมื่อวานมีโอกาสไปร่วมงานสัมมนา Redpill 2017 ที่ห้องประชุม 117 ตึก 3 คณะวิศวกรรมศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย ปีนี้เป็นการจัดงานร่วมกันระหว่าง 2600Thailand และสมาคมโปรแกรมเมอร์ไทย โดยมีธีมของงานคือ “Offensive Security” หัวข้อทั้งหมดในงานและรายชื่อ speaker ดูได้ในตารางท้ายบล็อกครับ

แน่นอนว่าไปสายตามระเบียบ 😅 ไปถึงก็กลางๆ session 3 เข้าไปแล้ว แถมเป็นเรื่องแนวที่ผมไม่ค่อยมีความรู้ด้วย เท่าที่พอจับใจความมาได้ก็ประมาณนี้

[Read More]