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

What is - Orange Pi Plus 2

Orange Pi คือ คอมพิวเตอร์ขนาดเล็ก ลักษณะภายนอก เหมือนกับ Rasberry Pi แต่ Orange Pi จะมีราคาถูกกว่าเยอะ ข้อเสียก็คือ community มีขนาดเล็กกว่า Rasberry Pi มาก  รุ่นที่สั่งซื้อมาใช้เป็นรุ่น Orange PI +2 


CPU
H3 Quad-core Cortex-A7 H.265/HEVC 4K
GPU
·Mali400MP2 GPU @600MHz
·Supports OpenGL ES 2.0
Memory (SDRAM)
2GB DDR3 (shared with GPU)
Onboard Storage
TF card (Max. 64GB) / MMC card slot , up to 2T on 2.5 SATA disk
16GB EMMC Flash
Onboard Network
10/100/1000M Ethernet RJ45
Onboard WIFI
Realtek RTL8189ETV, IEEE 802.11 b/g/n
Video Input
A CSI input connector Camera:

Supports 8-bit YUV422 CMOS sensor interface

Supports CCIR656 protocol for NTSC and PAL

Supports SM pixel camera sensor 

Supports video capture solution up to 1080p@30fps
Audio Input
MIC
Video Outputs
Supports HDMI output with HDCP 

Supports HDMI CEC

Supports HDMI 30 function

Integrated CVBS

Supports simultaneous output of HDMI and CVBS
Audio Output
3.5 mm Jack and HDMI
Power Source
DC input can supply power, but USB OTG input don’t supply power
USB 2.0 Ports
Four USB 2.0 HOST, one USB 2.0 OTG
Buttons
Power Button(SW4), Recovery Button(SW3), Uboot Button(SW2)
Low-level peripherals
40 Pins Header,compatible with Raspberry Pi B+
GPIO(1x3) pin
UART, ground.
LED
Power led & Status led
Other
IR input
Supported OS
Android, Ubuntu, Debian, Rasberry Pi Image
ข้อดี

  1. ราคาถูก เมื่อเทียบ spec  กับ RasberryPI
  2. มีหน่วยความจำ NAND มาให้ในบอร์ด 
  3. Lan Gb

ข้อเสีย  

  1. สายไฟ ต้องใช้ของ OrangePi เอง ไม่สามารถใช้ microUSB ได้ 
  2. community เล็ก หาข้อมูลลำบากเวลามีปัญหา แต่ปัจจุบันแก้ไขได้โดยใช้ community ของ Armbian