ข้ามไปที่เนื้อหาหลัก

บทความ

กำลังแสดงโพสต์จาก 2018

Predictable Network Interface Names #3

Predictable Network Interface Names ภาคสุดท้ายปิดตำนานยาจกซูกับไม้ตีสุนัข ไม่ใช่ละ อันนี้มันเกี่ยวกับระบบปฏิบัติการ จิงต้องบอกว่ามันไม่เกี่ยวกับหัวข้อเลยที่กล่าวถึง แต่ขอมัดรวมเป็นเรื่องเดียวกันหน่อยครับ เพราะมันมีบางส่วนที่ทำต่อเนื่องกัน โดยในบทความนี้ จะกล่าวถึงการตั้งชื่อ อินเตอร์เฟสแลนการ์ด โดยแมฟกับ MAC Address จากตอนที่แล้วจะเห็นว่าอินเตอร์เฟสมันไม่เรียงเลย ถึงแม้เราจะเปลี่ยนชื่อเป็นแบบเก่า ก็จะยังเป็นแบบตามรูปด้านล่างที่ยังมีปัญหาอยู่ขึ้นอยู่ ทำให้ตอนใช้งานก็จะยังลำบากเหมือนเดิม ปัญหาที่ตามมาคงไม่ต้องบอกกันนะ คนเขียนโปรแกรมถึงกลับร้องไห้ ผมจะเขียนยังไงอะพี่ โดยในลีนุกส์จะใช้การเรียงลำดับจากเลข MAC Address พอ chip คนละตัว และเลขน้อยกว่า ทำให้มันไปพอร์ตที่ 5 เป็น eth0 ตามด้านบน  วิธีแก้ไขจะมีอยู่ 2 แบบ ขึ้นกับว่าโอเอสที่ใช้ แบบเก่า UDEV (Dynamic Device Management)     ขั้นตอน      - export INTERFACE=eth0      - export MATCHADDR=xx:xx:xx:xx:xx:xx      - /lib/udev/write_net_rules     คำสั่ง   /lib/udev/write_net_rules จะทำการไปสร้างไฟล์  /etc/udev/

Predictable Network Interface Names #2

Predictable Network Interface Names มาต่อกันจากประเด็นตอนที่แล้วทำให้ผู้เขียนต้องหาวิธีให้ระบบปฏิบัติการที่ผู้เขียนใช้เปลี่ยนกลับเป็นแบบเดิม เช่น eno1 เป็น eth0 ฯลฯ  และเหตุผลหลักที่ผมต้องการเปลี่ยนเป็นแบบเดิม ผมทำอุปกรณ์ network appliance ของ lanner ลิงค์รุ่น FW-7525 ตามรูปด้านล่าง ซึ่งจริงดูเหมือนว่าจะเป็น onboard ทั้งหมดนิ ไม่ยากอะไร แต่จริงแล้วตัวอุปกรณ์มี chipset การ์ดแลนคนละแบบกัน  ตัวอย่างชื่ออินเตอร์เฟส ens3,  ens4,  eno1,  eno2,  eno3,  eno4 ปัญหาที่เกิดขึ้น คือ มันจะแสดงแบบด้านบน แล้วผมจะเขียนโปรแกรมยังไงว่าพอร์ตซ้าย คือ พอร์ต manage พอเปลี่ยน hardware อีกชื่อก็เปลี่ยนอีก ผู้เขียนเลยต้องการเปลี่ยนให้เขียนโปรแกรมง่าย และเรียงลำดับพอร์ตเองได้อย่างถูกต้อง ไม่ต้องเหนื่อยคนเขียนโปรแกรม ขั้นตอนแก้ไขเปลี่ยนกลับแบบเดิม OS: Debian 9.0 - 9.4 (Stretch) nano /etc/default/grub หาบรรทัด GRUB_CMDLINE_LINUX ทำการเพิ่ม net.ifnames=0 biosdevname=0 บันทึกไฟล์ และทำการ update-grub OS: Ubuntu 14.04.X แก้เป็น net.ifnames=1 biosdevname=0 OS: Ubuntu 16.

Predictable Network Interface Names #1

Predictable Network Interface Names พูดถึงชื่อหัวข้อก่อนเดิมผู้เขียนก็คิดว่าเขียนเป็นภาษาไทยเลย แต่เดี่ยวคนอ่านจะงงหาไม่เจอในเน็ต เพราะเชื่อว่าเรื่องนี้ไม่มีใครเขียนถึง โดยสรุปหัวข้อ คือ " ชื่อเรียกของเน็ตเวิร์กอินเตอร์เฟสสามารถคาดเดาได้ว่าเป็นแบบไหน "  โดยจากเดิม ตัวอย่าง ถ้าเป็นการ์ดแลน ชื่อเรียกจะเป็น ethX เช่น eth0, eth1 ฯลฯ หรือถ้าเป็นการ์ดไวเลส จะเป็น wlanX เช่น wlan0, wlan1 ฯลฯ แต่คราวนี้ทางกลุ่มพัฒนาระบบปฏิบัติการ มองว่ามันแยกยากว่าเป็นแบบไหน โดยเบื้องต้น ชื่อจะเปลี่ยนตามรูปแบบของ Interface และรูปแบบการเชื่อมต่อ เป็น onboard, pci เช่น en -- ethernet wl -- wlan ww -- wwan ยกตัวอย่าง เป็นแลนการ์ดออนบอร์ด จะชื่อว่า eno1 หรือถ้าเป็น แลนการ์ด pci มาเสียบเพิ่ม จะชื่อว่า ens1  (s มาจากคำว่า slot) แต่ปัญหา คือ มันกลายเป็นว่ายากต่อการจำโดยความคิดเห็นส่วนตัวของผู้เขียน เช่น ens33 ฯลฯ ไม่เรียงให้ตูเลย ทำให้ยิ่งเขียนโปรแกรมจัดการยากขึ้น ซึ่งจริงมันมีคำสั่งดูอยู่แล้วว่า interface นั้นเป็นแบบไหน แต่เมื่อกระแสโลกต้องการแบบนั้นเราก็เปลี่ยนก็ต้องใช้ไป ปล. เรื

WARNING : Failed to connect to lvmetad. Falling back to device scanning

WARNING : Failed to connect to lvmetad. Falling back to device scanning เมื่อวานลง Debian 9.4 (Stretch) บนเครื่อง Lanner รุ่น FW-7525 ผ่าน Serial Console Port โดยเราเปลี่ยน Partition แบบเก่ามาใช้แบบ LVM เลยเจอข้อความขึ้นแจ้งเตือนตามหัวข้อ หลังจากบูตเข้าเครื่อง ซึ่งจริงก็ไม่มีปัญหาอะไรมาก เพราะเป็นบักที่ไม่สำคัญหรือร้ายแรงอะไร จะปล่อยไว้ก็ได้ แต่แค่ผู้เขียนไม่ชอบอะไรไม่ Clean ก็เลยจะทำการปิด Warning นี้ไปสะ ขั้นตอน เปิดไฟล์ /etc/lvm/lvm.conf เช่น nano /etc/lve/lvm.conf หาคำว่า use_lvmetad=1 และทำการแก้เป็น use_lvmetad=0 และทำการ update initramfs ของ kernel version ปัจจุบัน ตามนี้ update-initramfs -k $(uname -r) -u; sync แล้วก็ทำการรีบูตเครื่อง ก็จะไม่แสดงข้อความแจ้งเตือน เป็นอันจบเรียบร้อย

Dynamic Kernel Module Support (DKMS) ภาค 3

Dynamic Kernel Module Support เกริ่นมา 2 บทความแล้ว หวังว่าผู้อ่านจะเข้าใจนะครับ สรุปง่ายๆ คือ เจ้าพระเอกของเรา DKMS คำสั่งนี้จะช่วยให้เราจะทำการไฟล์ติดตั้งไดว์เวอร์ให้เราอัตโนมัติ เมื่อมีการอัพเดต kernel ให้เรา ทำให้เราไม่เจอปัญหาเวลาอัพเดตระบบปฏิบัติการแล้วใช้งานไดว์เวอร์การ์ดแลนได้ ปล. มันไม่ใช้แค่ช่วยเรื่องไดว์เวอร์ ยังช่วยทำให้เราเพิ่มความสามารถให้กับ kernel อีกด้วย ขั้นตอนการทำดังนี้ ก่อนทำ เราจะเช็คดูก่อนเพื่อสำรองไฟล์เดิมหรือทำการเช็คเวอร์ชั่นที่ใช้อยู่ได้ เช่น modinfo e1000e (เช็คตำแหน่งที่เก็บไฟล์ไดว์เวอร์) ethtool eth0 (ดูเวอร์ชั่นของไดว์เวอร์) ฯลฯ สามารถใช้ผู้ใช้งาน root ในการทำได้  และก่อนทำบนเครื่องต้องมีคำสั่งและ kernel header ด้วยในที่นี้ผู้เขียนทำตัวอย่างบนระบบปฏิบัติการ Debian ก็ได้ทำการติดตั้งดังนี้  apt-get install dkms deb-helper build-essential linux-headers-$(uname -r) make  cd /usr/src/ sudo wget https://downloadmirror.intel.com/15817/eng/e1000e-3.4.0.2.tar.gz sudo tar xvfz e1000e-3.4.0.2.tar.gz cd e1000e-3.4.0.2 sudo nano dkms.conf

Dynamic Kernel Module Support (DKMS) ภาค 2

Dynamic Kernel Module Support เขียนต่อกันเลย เพราะผู้เขียนเองอยากจดเอาไว้ว่าทำอย่างไงกันลืม เข้าเรื่องต่อเลยกับ DKMS นี้และ พระเอกของเรา แต่ลืมไปนิดอีกละทำไมต้องทำ DKMS ละ ก็แค่คอนไพล์สิ่งที่เราทำเพิ่มที่เราต้องการก็จบแล้วนิ  ยกตัวอย่าง ผมมีซอฟต์แวร์งานตัวหนึ่งที่ทำบนอุปกรณ์ตัวนึงเมื่อ 3 ปีก่อน แต่เมื่อเวลาผ่านไปอุปกรณ์ตัวนั้นเลิกขาย และออกอุปกรณ์ตัวใหม่มา พอผมเอาระบบปฏิบัติการตัวเดิมที่ใช้กับอุปกรณ์ใหม่ พบว่าไม่สามารถใช้งานกับ LAN Card ที่อุปกรณ์ใหม่ได้ ซึ่งผมมี ทางเลือกดังนี้ ลงปฏิบัติการเป็นเวอร์ชั่นใหม่ล่าสุด เพราะไงก็รองรับ LAN Card ตัวใหม่แน่นอน แต่ปัญหาที่ตามมาคือ ผมต้องทดสอบระบบปฏิบัติการใหม่ทั้งหมดว่าสามารถใช้งานซอฟต์แวร์เดิมได้อย่างมีประสิทธิภาพรึไม่ ลงเฉพาะไดว์เวอร์การ์ดแลนเป็นเวลาใหม่ แน่นอนว่าแค่เอาระบบปฏิบัติการเดิมที่เคยใช้มา Clone ลงแล้วแค่ลง Driver ก็เรียบร้อย ไม่ต้องทดสอบการทำงานระบบใหม่ทั้งหมด ซึ่งจะเห็นว่าใครก็จะเลือกวิธีที่สอง เพราะไม่ต้องทดสอบระบบใหม่ทั้งหมด ซึ่งจะเห็นว่าวิธีการทำนั้นเราแค่ไปดาวน์โหลดไฟล์ Driver ใส่ USB  แล้วนำไปเสียบลงบนอุปกรณ

Dynamic Kernel Module Support (DKMS) ภาค 1

Dynamic Kernel Module Support ถ้าให้เล่าย้อนความเกี่ยวกับเจ้า DKMS ก็หลายปีมากเลยละ แต่จะสรุปให้ผู้อ่านดังนี้ คือ สมัยก่อนสำหรับคนเล่นลีนุกส์เวลาที่เราจะเพิ่มเติม ความสามารถ (feature) ให้กับ kernel นั้น เราจะต้อง patch kernel แล้วทำการคอมไพล์ Kernel ใหม่ทำการดาวน์โหลดไฟล์ kernel ที่ต้องการใช้ได้จาก https://www.kernel.org/ ซึ่ง kernel จากเว็บนี้เราจะเรียกกันว่า Vanilla Kernel  ถ้าไม่เกริ่นเกี่ยวกับ Vanilla Kernel เดี่ยวจะงงสรุปสั้นคือ กลุ่มโปรแกรมเมอร์ที่พัฒนา kernel ให้เราใช้นี้และ โดยมีคุณไลนัส ทอร์วัลด์ส (Linus Benedict Torvalds) เป็นแกนนำ แล้วมัน แตกต่างกับ Kernel ที่เราใช้บนระบบปฏิบัติการอื่นอย่างไร เช่น Debian, Redhat ฯลฯ ความแตกต่างง่ายๆ ดังนี้ การเลือก Vanilla Kernel มาใช้นั้น แต่ละระบบปฏิบัติการมีแนวคิดต่างกัน ในการเลือกนำมาใช้โดยดูการ support ของแต่ละเวอร์ชั่น โดยพวกระบบปฏิบัติการต่างๆ จะมีการวิธีการเลือกต่างๆ กัน เช่น เน้นรองรับความสามารถใหม่, รองรับฮาวด์แวร์ใหม่ ก็จะเลือกใช้ Kernel เวอร์ชั่นใหม่, เน้นความเสถียร ก็จะเลือก Kernel เวอร์ชั่นเก่า พวกระบบปฏิบ

ขั้นตอนการเก็บรวบรวมความต้องการ Waterfall step 2

Waterfall Model ขั้นตอนที่ 2 การเก็บรวบรวมความต้องการระบบ หัวข้อก็บอกต้องอธิบายกันดีรึเปล่าครับ คือ ก่อนที่เราจะสร้างระบบหรือซอฟต์แวร์ เราก็ต้องการรู้ก่อนว่าความต้องการที่จะได้ซอฟต์แวร์แบบไหนออกมาให้ตรงความต้องการลูกค้าหรือผู้ใช้งาน งานหลักๆ ของ System Analyst (SA) ในขั้นตอนนี้ คือ หาความต้องการของระบบ โดยจะมีวิธีอยู่หลายๆอย่าง เบื้องต้น การทำแบบสอบถาม การสัมภาษณ์   การขอเอกสารของระบบงาน กรณีต้องการเอาระบบงานเดิมที่ทำงานโดยใช้เอกสารเปลี่ยนมาเป็นระบบงานโดยใช้ไอที โดยข้อมูลเบื้องต้นที่ผมได้กล่าวถึงนี้ ซึ่งก็เพียงพอต่อการทราบถึงข้อมูลความต้องการของระบบ ซึ่งในส่วนนี้เป็นอะไรที่สำคัญมากๆ เพราะการที่ SA มีประสบการณ์งานเยอะจะได้เปรียบในการรวบรวมข้อมูลต่างๆ รวมถึงการตั้งคำถาม การหาข้อมูลเชิงลึกสำคัญที่เกี่ยวกับระบบที่พัฒนา ผมลืมพูดถึงไปนิดเกี่ยวกับของการจัดทำในส่วนของแบบสอบถาม หรือการสัมภาษณ์นั้น ซึ่ง SA ที่ชำนาญและมีประสบการณ์ระบบงานมากๆ นั้น จะมีการใช้คำถามปิด และคำถามเปิด เพื่อให้ได้มาของความต้องการของระบบ คำถามปิด คือ คำถามที่บังคับให้ผู้ตอบ ตอบคำถ

ขั้นตอนวางแผนการทำงาน Waterfall step 1

Waterfall Model ขั้นตอนที่ 1 การวางแผนการทำงาน กำหนดหัวข้อในการทำงาน โดยส่วนนี้เราจะเน้นหัวข้อสำคัญใหญ่ๆ เท่านั้น กำหนดผู้รับผิดชอบในการทำงานเบื้องต้น กำหนดระยะเวลาการทำงาน เป็นไปไม่ได้เลยที่เราจะทำงานไปเรื่อยๆ ไม่มีกำหนดเวลาเสร็จ เพราะการใช้ระยะเวลาทำงานยิ่งนานก็ยิ่งมีต้นทุนค่าใช้จ่ายมากขึ้น จากรูปด้านบนจะเป็นแผนภาพแกรนท์ (Gantt Chart) จะเป็นแผนผังควบคุมกิจกรรมต่างๆ ให้ทำงานอยู่ในกรอบเวลาที่กำหนด ซึ่งในส่วนนี้ทาง  System Analyst (SA) จะได้รับข้อมูลจากทาง SALE / Project Manager ในเรื่องขอบเขตของระยะเวลาในการทำงานและการส่งมอบงาน เพื่อใช้ในการวางแผน ประชุม กับทีมงานพัฒนาเพื่อกำหนดหัวข้อ ระยะเวลา และผู้รับผิดชอบ อ่านตอน 2 ได้ที่  https://thaidevnote.blogspot.com/2018/04/waterfall-step-2.html

โคตรโบราณกับการพัฒนาระบบด้วย Waterfall Model

ไหนว่าจะพูดถึงเรื่อง  Software Development Life Cycle (SDLC) ต่อ แล้วไหนถึงกลายเป็น Waterfall Model ละมันคืออะไร แล้วทำไมถึงโบราณ แล้วยังมีใครพัฒนาในรูปแบบนี้กันอยู่เปล่านะ มาเข้าเรื่องกันดีกว่า Waterfall Model จะเป็นการพัฒนาซอฟต์แวร์ในรูปแบบโมเดลน้ำตก คือ ทำที่ละขั้นตอนลงมาเรื่อยๆ จนพัฒนาซอฟต์แวร์เสร็จ พูดถึงข้อเสียกันเลย ผู้ใช้ซอฟต์แวร์หรือระบบจะเห็นระบบเมื่อผ่านขั้นตอนการพัฒนาไปแล้ว ทำให้กลับมาแก้ไขได้ลำบากหรือเสียเวลา ถ้าเกิดไม่ตรงตามความต้องการ การพัฒนาในรูปแบบนี้ไม่รองรับความต้องการของลูกค้าที่เปลี่ยนแปลงอย่างรวดเร็วได้ อ้าวมีข้อเสียแถมเป็นการพัฒนาซอฟต์แวร์โบราณจะไปสนใจทำไมกันละ แล้วทุกวันนี้ยังมีใช้กันอยู่รึเปล่า ผมสรุปให้เลยว่ามีและประสบความสำเร็จด้วย แต่กับระบบที่ไม่ใหญ่มากและไม่มีความซับซ้อนจนเกิดไป และก็ต้องวางแผนดีๆ ด้วยละ เอาละมาดูกันเลยดีกว่าจากรูปด้านบนจะเห็นว่ามีการทำทีละขั้นตอนลงมาเรื่อยๆ จนติดตั้งใช้งานระบบจริงๆ มาเริ่มกันเลยดีกว่า ขั้นตอนการพัฒนาตามรูปแบบ Waterfall Model ขั้นตอนการวางแผนการทำงาน ขั้นตอนเก็บรวบรวมความต้องการระบบ ขั้นต

Software Development Life Cycle

ตอนที่แล้วพูดถึงเกี่ยวกับงานของ System Analyst แล้วมีคำศัพท์ว่า System Development Lifecycle (SDLC) ไหนๆ ก็มีคำนี้ขึ้นมาก็ขอเขียนถึงสะหน่อย  ก่อนเข้าเรื่อง ผู้เขียน จบมาจากคณะบริหารธุรกิจ สาขาการจัดการสารสนเทศคอมพิวเตอร์ มหาลัยเซนต์จอห์น ปัจจุบันดำรงตำแหน่งผู้ช่วยผู้อำนวยการฝ่ายพัฒนาผลิตภัณฑ์ โดยบริษัทที่ทำงานอยู่เกี่ยวกับพัฒนาผลิตภัณฑ์ด้าน IT Security ทำไมถึงออกนอกเรื่อง แค่จะบอกว่าจริงๆ สาขาที่ผู้เขียนบทความเรียนเป็นสาขาที่จบออกมาเพื่อมาเป็น System Analyst โดยเฉพาะๆ เลย ด้วยที่ว่าเรียนเกี่ยวกับสายวิชาเกี่ยวกับธุรกิจ ไม่ว่าจะเป็นบัญชีการเงิน ภาษี การตลาด เศรษฐศาตร์ สถิติ และวิชาทางสายไอทีไม่ว่าโปรแกรมมิ่ง ฐานข้อมูล เครือข่าย และวิชาการวิเคราะห์และออกแบบ ซึ่งวิชาการวิเคราะห์และออกแบบนี้และที่จะมาพูดถึง เพราะวิชานี้จะทำให้คุณรู้จักขั้นตอนการพัฒนาซอฟต์แวร์ หรือที่เรียกว่า  System Development Lifecycle (SDLC)

System Analyst สำคัญฉะไหน

ถ้าคุณเจอปัญหาเหล่านี้ มาลองให้ความสำคัญกับ System Analyst แล้วจะรู้ว่าคุณเข้าใจผิดเกี่ยวกับหน้าที่ของ SA โปรเจคที่พัฒนาล้มเหลว โปรเจคที่พัฒนาออกแบบไม่ตรงตามความต้องลูกค้า โปรเจคที่พัฒนาไม่เสร็จตามกำหนดเวลา โปรเจคที่พัฒนาต้นทุนบานปลาย โปรเจคที่พัฒนาเลือกใช้เทคโนโลยีผิด และอื่นๆ อีกมากมายที่ซอฟต์แวร์หรือระบบที่พัฒนาไม่ประสบความสำเร็จ สิ่งที่ System Analyst ต้องมี ประสบการณ์ (เจ้าข้อนี้และที่เข้าใจผิดกันเยอะ) SA ที่ดีต้องเคยเขียนหรือพัฒนาโปรแกรมมาก่อนหรือก็คือ เป็นโปรแกรมเมอร์มาก่อน SA ที่ดีต้องเคยต้องเคยออกแบบฐานข้อมูล SA ที่ดีต้องเคยวิเคราะห์และออกแบบระบบงานเกี่ยวกับธุรกิจมาเยอะพอสมควร SA ที่ดีต้องเขียนและอธิบายเอกสารได้ ตามหลักสากลนะ รอบรู้  มีความรู้เกี่ยวกับเทคโนโลยีต่างๆ แค่รู้ไม่จำเป็นต้องชำนาญ มีความเข้าใจเกี่ยวกับระบบงานของธุรกิจต่างๆ เป็นอย่างดี เข้าใจขั้นตอนการพัฒนาซอฟต์แวร์ตามหลักการพัฒนา System development Life Cycle (SDLC) เข้าใจขั้นตอนการพัฒนาซอฟต์แวร์แบบอื่นๆ เช่น Agile เป็นต้น รอบคอบและเฉลียวฉลาด ข้อนี้จะเกิดได้ ก็จากสองอันแรก สรุปสิ่งท

ยินดีต้อนรับสู่ Thai Dev Note

กลับมาอีกครั้งจากในอดีต จาก blog เก่า thaidevcafe.blogspot.com โดยผู้เขียนบทความลืมรหัสผ่าน รวมถึงอยากได้ชื่อใหม่ด้วย จากเดิมกะจะทำจาก facebook page แต่รู้สึกว่ามันเขียนบทความได้ไม่ค่อยสะดวก เลยพยายามหาและสรุปมาได้ทั้ง blogger, medium เทียบกันแล้ว รู้สึกชอบของทาง blogger มากกว่า เลยเป็นการกลับมาใช้อีกครั้ง ฝากติดตามผลงานกันด้วยนะครับ รับประกันบทความมีประโยชน์ต่อผู้มาติดตามแน่นอนครับ