Saturday, November 10, 2018

ขั้นตอนการ Install Ubuntu 18.04 และ amdgpu Pro สำหรับเครื่องขุดเหมือง (Crypto Currency Mining)


  1. ติดตั้ง Ubuntu 18.04  เลือกแค่ minimal install ก็พอ 
  2. ติดตั้ง amdgpu pro
    1. sudo apt-get update
    2. sudo apt-get dist-upgrade
    3. sudo reboot
    4. Download amdgpu pro จาก Download amdgpu-pro  โดยเลือกจากรุ่น Gpu ที่ใช้ 
    5. ** ถ้าไฟล์นามสกุล .xz xz -d amdgpu-pro-18.40-676022-ubuntu-18.04.tar.xz  
    6. tar -xvf amdgpu-pro-18.40-676022-ubuntu-18.04.tar.xz  
    7. cd amdgpu-pro-18.40-676022-ubuntu-18.04/
    8. สำหรับการ install ทั้วไป ใช้ ./amdgpu-installer -y
    9. สำหรับการ Gpu Vega10 ขึ้นไป ใช้ ./amdgpu-installer -y --opencl=pal
    10. สำหรับการ Gpu รุ่นตำ่กว่า vega10 เช่น Rx580, Rx570, Rx480 ฯลฯ ใช้ ./amdgpu-installer -y --opencl=legacy
    11. หลังจาก install เสร็จสิ้นก็ใช้คำสั่ง sudo adduser usernameX video เพื่อเพิ่ม usernameX ลงใน group video
    12. sudo reboot
  3. แก้ไขปรับเปลี่ยน config ใน Ubuntu ให้เหมาะสำหรับขุดเหมือง (Cryto Currency Mining)
    1. ปิด auto update 
      • แก้ไขไฟล์  /etc/apt/apt.conf.d/20auto-upgrades  
      • แก้ไขให้เป็น  APT::Periodic::Update-Package-Lists "0";
    2. Boot to text mode
      • $ sudo systemctl set-default runlevel3.target หรือ sudo systemctl start multi-user.target
    3. Boot to graphic mode (GUI) 
      • $ sudo systemctl set-default runlevel5.target หรือ sudo systemctl start graphical.target
    4. การ Run Background คำสั่ง โดย Screen
    5. การเปลี่ยน ttys ใน ssh client 
      • chvt # โดย # คือค่า ttys ที่ต้องการเปลี่ยน
    6. กรณีลืม password  Ubuntu 
      1. กดปุ่ม shift ค้างไว้ ตอน boot เครื่อง เพื่อแสดงเมนู grub 
      2. เลือก Recovery Mode > root
      3. mount -o remount,rw /
      4. passwd userXX

Wednesday, August 1, 2018

เรื่องวุ้น ๆ ของ Paratition สำหรับคนที่ใช้ทั้ง mac, linux และ windows10

    Paratition ไหนดีที่สุด? ถ้าเราต้องใช้งานร่วมกันกับเครื่องหลากหลาย Platform (linux, windows, mac)
      ที่มาของคำถามนี้คือ ที่บ้านของผมมีเครื่อง mac 2 เครื่อง linux 2 เครื่อง และปัจจุบัน (2018/07) ก็มี windows10 เพิ่มมาอีก 1 เครือง  ปัญหาที่เจอคือ

     ช่วงแรก - ใช้แต่เครื่อง mac เลย format external drive เป็น HFS+ (MAC)

     ช่วงที่สอง  -  เจอเครื่่อง notebook เก่า ๆ ของแฟน เลยเอามาชุบชีวิตใส่ linux เอาไว้เล่นเน็ต เขียน python    ช่วงนี้เริ่มเจอปัญหาละ ว่า linux มัน mount  HFS+ ไม่ค่อยเจอ ต้องสั่ง command line เอาเอง

     ช่วงที่สาม - น้องชายแฟน ซื้อ notebook ใหม่มา (windows10) พอจะเอา external drive ของเราไปต่อ ก็ต้องลงโปรแกรมเพิ่มให้สามารถอ่านได้  แล้วจะเอาไฟล์งาน กลับมาก็ไม่ได้ เนื่องจาก read only

     ช่วงที่สี่   -  เครื่อง mac เริ่มมีปัญหา เนื่องจากอายุอานามที่ใช้มานาน เลยจัด notebook ของตัวเองแต่รอบนี้ต้องทำงานกับ windows

เลยต้องทำการสังคยณาครั้งใหญ่  Paratition ที่เหมาะที่จะใช้กับหลาย Platform ที่สุดก็คือ exFat ครับ ตัวนี้ format ใน windows10 ได้เลย สามารถ read/write ผ่าน mac, linux และ windows ได้หมด 

Wednesday, July 26, 2017

vim in mac problem with python mode

ปัญหา: จะเขียนโปรแกรมภาษา python ผ่าน vim โดยใช้ python-mode เป็นตัวช่วยเขียน IDE 
พอ install เสร็จ แล้วเรียกไฟล์    .py มาแก้ไข ก็เกิดปัญหา 

Error detected while processing /.vim/bundle/python-mode/autoload/pymode/lint.vim
line  1:
สาเหตุ: เนื่องจาก vim ที่ mac ให้มาเป็น version 7.4  ซึ่ง complied โดย python 2.6 ทำให้เกิดปัญหาดังกล่าว   

การแก้ไข: ทำการ install vim ใหม่ โดยใช้คำสั่ง . 
   
    brew install vim --overide-system-vi

     จากนั้นก็ทำการแก้ไข alias ใหม่ 

    alias vim='/usr/local/Cellar/vim/8.0.0771_1/bin/vim'



Monday, July 10, 2017

แก้ไขปัญหา ถอดกุญแจไม่ออก ปุ่มเกียร์แข็งค้าง เบรคค้าง - Honda Civic

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

     แต่พอ start เครื่องอีกครั้ง เพื่อลองเข้าเกียร์ดูปรากฎว่า เกียร์ค้าง ไม่สามารถเข้าเกียร์ได้  เบรคก็แข็งค้างอีก เลยต้องติดต่อช่างฯ 

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


ขอบคุณร้านข้าวแกงแม่แสง (บางพระ) มากครับ ที่ช่วยติดต่อช่างให้   ใครไปบางพระแนะนำนะ ถ้ามาจากทาง ศรีราชา ขับรถผ่านตลาดบางพระ แล้วร้านจะอยู่ซ้ายมือ
     

Wednesday, July 5, 2017

Genetic Algorithm (ขั้นตอนวิธีเชิงพันธุกรรม)





Genetic Algorithm (ขั้นตอนวิธีเชิงพันธุ์กรรม)  

    ** เนื่องจากภาษาไทยมันยาวต่อไปจะเรียกย่อเป็น GA 
    GA เกิดขึ้นมาจาก 
  • ทฤษฎีวิวัฒนาการของ Charles Darwin มีรายละเอียดคราว ๆ ดังนี้  "การคัดเลือกสายพันธุ์ที่มีความเหมาะสม(Fitness) กับสภาพแวดล้อมจะมีโอกาสอยู่รอดได้มากและ มีโอกาสถ่ายทอดลักษณะทางพันธุกรรมไปสู่ลูกหลานรุ่นต่อไป ในขณะที่สายพันธุ์ที่ไม่เหมาะสมกับสภาพแวดล้อมจะมีโอกาสอยู่รอดได้น้อยและมีโอกาสสูญพันธุ์ไปในที่สุด " 
  • ทฤษฎีถ่ายทอดลักษณะทางพันธุกรรม Gregor Mendel  คือ ลูกจะได้รับลักษณะเด่น ลักษณะด้อยจากพ่อและแม่ ผ่านการสืบพันธ์ โดยมีอัตราส่วนที่แน่นอน สามารถคำนวณได้ เป็นอัตราส่วน  4:1   ตามลำดับ
GA ใช้ในการแก้ไขปัญหา Optimization, จัดตารางเวลาการผลิตที่มี Factor เยอะ ๆ, จัดตารางการเดินทาง (logistics), หรือคำตอบของ function อนุพันธ์ ต่าง ๆ ผ่านการวิวัฒนาการจนได้รับคำตอบที่ดีที่สุด (Finess)

ขั้นตอนการทำงานของ GA
  1. ออกแบบ "รูปแบบคำตอบ" หรือ โครโมโซม โดยรูปแบบโครโมโซมส่วนใหญ่แล้วจะสร้างขึ้นมาในรูปของตัวเลขฐาน 2 
  2. กำหนด โครโมโซม ใน รุ่นที่ 1, กำหนด "จำนวนรุ่นที่ต้องการสร้าง" , จำนวนของโครโมโซมที่ต้องการ  ** ถ้าไม่ต้องการกำหนดจำนวนรุ่นที่ต้องการสร้าง อาจจะกำหนดเป็นเงื่อนไขของ ค่า Fitness Function ก็ได้ 
  3. ออกแบบ "Fitnesss Function" สำหรับใช้ในการทดสอบความแข็งแรงของ โครโมโซมแต่ละตัว function นี้จะเป็น function หลักที่จะใช้ตรวจสอบว่า โครโมโซมไหนแข็งแรงเพียงพอ ที่จะเป็น พ่อ และแม่พันธ์ุ สำหรับ รุ่นที่ 2
  4. ออกแบบวิธีการวิวัฒนาการ พร้อมทั้งกำหนดอัตราส่วนสำหรับวิธีการต่าง ๆ 
    1. crossover การสืบพันธ์โดยผสมยีนส์ จากโคโมโซมของพ่อ และแม่ เพื่อสืบลักษณะเด่น 
      1. Single - Point CrossOver  คือ การนำยีสต์ ตัวที่เป็นหลักเลขคี่ของพ่อ มารวมกับหลักเลขคู่ของแม่ หรือสลับกันก็ได้ เพื่อให้ได้ โครโมโซมใหม่ (ลูก) 
      2. Two - Point CrossOver คล้ายกับแบบ Single แต่ดึงมารวมกับทีละ 2 ยีนส์
      3. Uniform Crossover กำหนดรูปแบบการรวมกับเอง 
    2. Reproduction เป็นการนำโครโมโซมของรุ่นก่อนหน้าที่มีค่า Fitness ที่ดี มาใช้ใน รุ่นต่อมา
    3. Mutation การสร้างโครโมโซมขึ้นมาโดยมีรูปแบบที่ไม่แน่นอน เช่น Random เป็นต้น 
  5. ทำการคัดกรอง โครโมโซม รุ่นที่ 1 ผ่าน Fitness Function คัดกรองโดยการเรียงลำดับความแข็งแรง
  6. ทำการวิวัฒนาการของโครโมโซม รุ่นที่ 2 โดยใช้ พ่อ แม่ จากรุ่นที่ 1 เมื่อได้จำนวนครบตามที่ต้องการแล้ว ก็กลับไปทำตามข้อ 5 ใหม่ 
  7. เมื่อครบ "จำนวนรุ่นที่ต้องการสร้าง" แล้วก็แสดงผลลัพธ์ค่าคำตอบที่ดีที่สุด 
อ้างอิง https://kapitaennem0.wordpress.com/2013/07/17/genetic-algorithm/

โจทก์ตัวอย่าง

   โรงงาน AAA  มีเครื่องจักรทั้งหมด 4 เครื่อง แต่ละเครื่องมีกำลังการผลิต และระยะเวลาทำงานแตกต่างกัน  รายละเอียดดังนี้

ชื่อเครื่องจักร กำลังการผลิต เวลาเปิดทำงาน ช.ม. ค่าไฟฟ้า
M-A 2500 24 1500
M-B 4000 12 2500
M-C 5000 18 3000
M-D 10000 24 10000
โดย มีวัสดุการผลิตเท่ากันทุกเครื่องจักร

มีคำสั่งซื้อ ดังนี้
บริษัท เวลารับสินค้าห่างจากวันปัจจุบัน (วัน)จำนวน
CA 3 2000
CB 5 30000
CC 12 100000
CD850000

ออกแบบตารางการผลิต (ระยะเวลา 14 วัน) ที่มีต้นทุนค่าไฟฟ้าถูกที่สุด และส่งของได้ครบภายในวันเวลาที่กำหนด

  1. ออกแบบ โครโมโซมจากโจทก์   ตารางการผลิต 14 วัน นับจากปัจจุบัน 










  2. กำหนดจำนวน ต่าง ๆ 
    1. จำนวนโครโมโซม ในแต่ละรุ่น  = 100
    2. .จำนวน Generation = 100 Gen 
  3. ออกแบบ Fitness Function มีเงื่อนไข 
    1. ต้องส่งสินค้าได้ัทันกำหนด อ่านข้อมูลจาก "ตารางคำสั่งซื้อ" โดย เทียบจำนวนที่ผลิตได้ในวันที่ต้องส่งสินค้า ว่าผลิตครบตามจำนวนนั้นหรือไม่  โดยกำหนดไว้กรณีแผนการผลิตที่ผลิตไม่่ทัน จะมีคะแนน FitnessScore = 0 ทันที 
    2. คำนวน ค่าไฟฟ้าของ แผนการที่มีค่า FitnessScore !=0 แล้วเรียงลำดับจาก ใช้ไฟฟ้าน้อย > ใช้ไฟฟ้ามาก > โครโมโซมที่มีค่า FitnessScore = 0  
  4. กำหนดรายละเอียดของการวิวัฒนาการ
    1. Re-production (30%) - นำโครโมโซม 30 อันดับแรกจาก ข้อ 3.2  
    2. Crossover (60%) -  นำโครโมโซมจากข้อ 4.1  มาเป็น พ่อ - แม่ พันธ์ุ
      1. single-point Crossover (25%)  
      2. two-point Crossover (25%)
      3. uniform Crossover (10%)
    3. Mutation (10%) -  Random ค่าโครโมโซมขึ้นมาให้ถูกต้องตามรูปแบบโครโมโซม 
  5. นำโครโมโซมรุ่นที่ 1 ทั้งหมดมาผ่าน Fitness Function ตามข้อ 3 
  6. ทำการวิวัฒนาการเพื่อสร้าง โครโมโซมรุ่นที่ 2  ตามข้อ 4
  7. กลับไปทำตามข้อ 5 ใหม่ จนกระทั้ง ครบจำนวน Gen ที่ต้องการ (100 gen) 



Thursday, June 22, 2017

Ubuntu เก่า ๆ แต่อยากจะ update เป็นของใหม่

การ update Ubuntu (16.04) --> 17.04 
     วันเบื่อ ๆ Ubuntu 16.04 ที่ค่อนข้างช้า (อาจจะเป็นเพราะเครื่องคอมฯ ตัวเอง ที่อายุ 10+)  เลย ทำการ update สักหน่อย รายละเอียดดังนี้

  1. ทำการ check ก่อนว่าใช้ Ubuntu version อะไร   
    1. คำสั่ง  lsb_release -a  
  2. ทำการ update ให้ใช้ package ใหม่ล่าสุดก่อนที่จะทำการ update 
    1. sudo apt update && apt upgrade
    2. sudo do-release-upgrade -d  
ป.ล. กรณี upgrade ข้ามหลายรุ่น จะต้องทำการ update ทีละขั้น 16.04 > 16.10 > 17.04 เป็นต้น 

Tuesday, January 17, 2017

adb, fastboot command สำหรับจัดการ android device

ก่อนใช้จะต้องเปิด USB Debug Mode ก่อน 
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot flash cache cache.img
fastboot flash userdata userdata.img
fastboot flash system system.img
fastboot reboot
fastboot oem unlock (for all Google-branded Nexus devices)
adb reboot bootloader
adb reboot recovery
fastboot devices
fastboot flash recovery your_recovery_image.img

$ adb backup -apk -shared -all
$ adb shell grep ro.product.name system/build.prop