วันพฤหัสบดีที่ 22 ตุลาคม พ.ศ. 2558

Docker - Command & Dockerfile reference

Command

https://docs.docker.com/reference/run/

  • docker run [option...] <image> [command]
    • -p <external-port>:<container-port> - expose container port to host
    • -d - รัน container ไว้เบื้องหลัง (daemon)
    • --name <container-name> - ตั้งชื่อ container
    • -v <src>:<dest> - mount ไฟล์ที่ <src> ของ host กับ <dest> ของ container
    • --link <container>:<hostname>
    • -it - i=interactive, t=pseudo tty ใช้เมื่อต้องการทำงานแบบ interactive เช่นใช้ bash
      • eg. docker run hello-world - รัน image hello-world
      • docker run -it ubuntu /bin/bash - สร้าง container จาก image ubuntu แล้วรัน bash
      • docker run -d --name my-nginx -p 8000:80 nginx - สร้าง container ชื่อ my-nginx จาก image nginx แล้ว expose port 80 ของ container ไปยัง port 8000 ของเครื่อง host
  • docker ps [option]
    • docker ps - ดูรายการ container 
    • docker ps -a - ดูรายการ container ทุกรายการรวมถึง container ที่ stop อยู่
  • docker images [option] [repository]
    • docker images - ดูรายการ image ที่มี
  • docker pull <image>
    • docker pull nginx - โหลด image nginx ลงในเครื่อง
  • docker push <image>
    • docker push my-usernam/my-image - อัพโหลด image ไปยัง docker hub (registry)
  • docker build [option] <dockerfile-path>
    • docker build -t my-image . - สร้าง image จาก Dockerfile ในตำแหน่งปัจจุบัน แล้วตั้งชื่อ image ที่ได้ว่า myimage
  • docker stop <container> [container...]
    • docker stop my-laravel - หยุดการทำงานของ container my-laravel
  • docker start <container> [container...]
    • docker start my-laravel - ให้ container my-laravel ที่หยุด เริ่มทำงานอีกครั้ง
  • docker rm <container> [container...]
    • docker rm my-laravel - ลบ container my-laravel (ต้อง stop ก่อน)
  • docker rmi <image> [image...]
    • docker rmi laravel - ลบ image ชื่อ laravel ออก
  • docker inspect <container|image>
    • docker inspect laravel - (image) ดูรายละเอียดของ image laravel
    • docker inspect my-laravel - (container) ดูรายละเอียดของ container my-laravel
  • docker exec [option] <container>
    • docker exec -it my-nginx /bin/bash - เรียกใช้ bash จาก container my-nginx (ใส่ -it  เพื่อให้ใช้งานแบบ interactive ได้)

Dockerfile

https://docs.docker.com/reference/builder/

  • FROM <image>
    • ระบบุ base image ที่จะนำมาใช้ทำงาน
  • COPY <src> <dest>
  • ADD <src> <dest>
    • คัดลอกไฟล์จาก <src> ไปเก็บไว้ใน container ที่ <dest>
  • RUN <command>
    • คำสั่งที่ต้องการให้ทำในขณะที่กำลังสร้าง image ( จะสร้าง Layer ใหม่ )
  • CMD <command>
    • คำสั่งที่ต้องการให้รันเมื่อ image ถูกรัน สามารถถูกแทนที่ด้วย [command] จากคำสั่ง docker run ได้
  • ENTRYPOINT <command>
    • คำสั่งที่ต้องการให้รันเมื่อ image ถูกรัน
  • EXPOSE <port,...>
    • ระบบว่าจะ container นี้ใช้งาน port อะไรบ้าง

วันพุธที่ 21 ตุลาคม พ.ศ. 2558

Docker - เตรียมความพร้อม


เนื่องจาก Docker ทำงานบน Linux เท่านั้น จึงได้แบ่งวิธีการติดตั้งออกเป็น 2 กลุ่มคือ Non-Linux และ Linux
  1. Non-Linux
    • Windows User ให้ติดตั้ง Docker toolbox โดยทำตามนี้
    • Mac User ให้ติดตั้ง Docker toolbox โดยทำตามนี้ 
     ขั้นตอนโดยสรุปคือให้ติดตั้ง Docker toolbox แล้วทดสอบว่าใช้งานได้ไหม โดยใช้คำสั่ง ( ปัจจุบัน docker toolbox มีปัญหากับ Windows10 )
    docker run hello-world

    สำหรับผู้ที่ทำตามวิธีตามในลิงค์แล้วไม่สามารถใช้งานได้ให้ติดตั้ง  VirtualBox  version ใหม่ (>=5.0.8) หากยังใช้ docker toolbox ไม่ได้ ให้ Import image นี้ใส่เข้าไปใน VirtualBox


  2.  Linux
    • Linux User ให้ติดตั้ง Docker โดยทำตามนี้ (Debian based) สำหรับกรณีอื่นๆทำตามด้านล่าง
      • CentOS - yum install docker
      • ArchOS - pacman -S docker

วันเสาร์ที่ 12 กันยายน พ.ศ. 2558

[Idea Are Cheap] iTruemart กับกระบวนการส่ง

     วันนี้เห็นตัวระบบ Logistic ของ iTruemart น่าสนใจเลยจะมาเล่าให้ฟังเป็นไอเดียวสำหรับต่อยอดทำอย่างอื่นในอนาคต



  • ในการขนส่งบริษัทจะแจ้งลูกค้าผ่านทางอีเมลล์ และมีการโทรติดต่อลูกค้าก่อนส่ง
  • ระบบในการรับสินค้าใช้เป็น Application บน Android หน้าจอ 5.5 - 6 นิ้ว




  • ในการ Track เลข Barcode ใช้ตัว Image Processing อ่าน มีความแม่นยำในระดับหนึ่ง และมีการตรวจสอบกับฐานข้อมูลก่อนที่พนักงานจะกดยืนยันการส่ง
  • ใช้การเซ็นชื่อลงบนหน้าจอเพื่อเป็นหลักฐานการรับสินค้า 


ปล. MicroSD ถูกมาก อันละ 99 บาท สายชาร์จเส้นละ 19 บาท

วันอังคารที่ 8 กันยายน พ.ศ. 2558

วิธีสร้าง Private/Public Key ด้วย msys2

แนะนำการสร้าง Key สำหรับใช้งาน

สำหรับผู้ใช้ Windows ใครที่ยังไม่มี msys2 ให้ติดตั้งก่อน ที่นี่ ทำตามเว็บให้ครบทุกขั้นตอนด้วยนะ
เริ่มจากใช้คำสั่ง สร้าง Key ขึ้นมา ผ่าน Terminal
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# Creates a new ssh key, using the provided email as a label
# Generating public/private rsa key pair.
บันทึกค่าใน Default Directory ที่ได้มา
Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
หากต้องการเข้ารหัสให้ทำการกรอกรหัส แต่หากไม่ต้องการให้ Enter ข้ามไป
Enter passphrase (empty for no passphrase): [Type a passphrase]
# Enter same passphrase again: [Type passphrase again]
หลังจากเราผ่านขั้นตอนก่อนหน้ามาแล้ว จะมีการแสดง key fingerprint ให้เราดู (ดูเฉยๆ ไม่ต้องทำอะไร)
Your identification has been saved in /Users/you/.ssh/id_rsa.
# Your public key has been saved in /Users/you/.ssh/id_rsa.pub.
# The key fingerprint is:
# 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com
ใช้งาน ssh-agent
# start the ssh-agent in the background
$ eval "$(ssh-agent -s)"
# Agent pid 59566
สั่งให้ใช้งาน SSH Key (หากเราใช้ชื่อไฟล์ตามที่ระบบตั้งให้มา "~/.ssh/id_rsa" จะใช้โดยอัตโนมัติอยู่แล้ว (หาก private key ไม่ได้ใส่ passphrase))
$ ssh-add ~/.ssh/id_rsa
หา Public key ได้จากไฟล์ id_rsa.pub โดยใช้คำสั่ง
$ cat .ssh/id_rsa.pub
คัดลอก Public Key ที่ได้ ไปใช้งาน :)
ตัวอย่าง Public key
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDzy4taGIcxi2S477iRiPY0ts+4Zz37ZA7NNmMs11vf/kyfyduA0SR3LKFzfoUItwYoQkU+BHGl42zvJkPR2B7YtmCtgmKmzz1yzY9nLmSXal/BvRoVHEkwBP2ROUvJQdWqDjxoQEbdVXV/2ku/YuYU131MVlusUzPNAnWgtXeIY1u/6oCxDcQSBn/u9Xk+m983h2CqE57YQBnS17QiOVPXMlk/oTO6yD1DhhoB+WXG63uWZLLX9/SMbfQf60UVhXPzJ0H7GbJxvPw8ArSaY8VOZqRQ9km2oFOn0Dgd0vIFEHzvTqtuuOHI8IEq8Ih0marCmaa7j30Zto/i3+guIL0h Extraterrestrial@DESKTOP
อ้างอิงจาก : https://help.github.com/articles/generating-ssh-keys/

วันอังคารที่ 7 เมษายน พ.ศ. 2558

To be Android developer

ซอฟต์แวร์ที่ต้องเตรียมมา

  1. Android Studio developer.android.com/sdk/index.html
  2. Genymotion www.genymotion.com/#!/download ( ต้องสมัครสมาชิก )


Genymotion
  1. เมื่อเปิดขึ้นมาครั้งแรกจะพบข้อความว่า Do you want to add a new one? ให้ตอบ yes
  2. จากนั้น Login
  3. แล้วเลือกสร้าง Custom Phone - 4.1.1
  4. เมื่อ Download เสร็จ ให้ลอง Start Device นั้นขึ้นมา
Android Studio
  ทดลองสร้างโปรเจ็ค Hello World แล้วกด Run แล้วดูผลที่ Genymotion

วันพุธที่ 1 เมษายน พ.ศ. 2558

[Prerequisite] Wow Such Image Processing Amaze

โปรแกรมที่ต้องเตรียมมา


  1. Eclipse ที่ใช้งานได้
  2. OpenCV 2.4.11 หรือ 3.0.0 beta ก็ได้นะ ดาวน์โหลดได้ตามนี้เลยจ้า
    OpenCV 2.4.11 หรือ OpenCV 3.0.0 beta
  3. อาจจะทดลอง set-up environment โดยการแตกไฟล์ opencv ออกมา แล้ว Add External Archives เป็นไฟล์ opencv-xxx.jar เมื่อ xxx เป็นเลขเวอร์ชั่นของ opencv เช่น
    opencv-300.jar
    ซึ่งพบได้ใน directory
    opencv/build/java
  4. create project แล้วทดลองใส่โค้ด
    import org.opencv.core.Core;
    import org.opencv.core.Mat;
    import org.opencv.core.CvType;
    import org.opencv.core.Scalar;
    
    public class DogeImage {
    
        // แทน path ของบรรทัดข้างล่างด้วย path ไปหาไฟล์ dll ของเครื่องตนเอง
       static{ System.load("E:\\OpenCV\\opencv\\build\\java\\x64\\opencv_java300.dll"); }
    
       public static void main(String[] args) {
         System.out.println("Welcome to OpenCV " + Core.VERSION);
         Mat m = new Mat(5, 10, CvType.CV_8UC1, new Scalar(0));
         System.out.println("OpenCV Mat: " + m);
         Mat mr1 = m.row(1);
         mr1.setTo(new Scalar(1));
         Mat mc5 = m.col(5);
         mc5.setTo(new Scalar(5));
         System.out.println("OpenCV Mat data:\n" + m.dump());
       }
    }
    
    
  5. ทดลองรันดู ถ้าผ่านก็ถือว่าโอเค ถ้าไม่ผ่านก็ไม่เป็นไร หรือใจร้อนอาจจะลองหาวิธีแก้จาก stackoverflow ก่อนได้เช่นกัน

วันเสาร์ที่ 21 มีนาคม พ.ศ. 2558

To Be Developer Series :: Web development with Laravel 5

Course จัดขึ้นเพื่อให้น้องๆตาม Technology ในปัจจุบันได้ทัน และ สามารถสร้าง web application เบื้องต้น เพื่อที่จะสามารถนำไปต่อยอดได้อีกต่อไป ในส่วนของ Course จะมีรายละเอียดหัวข้อดังนี้

    ครึ่งแรก ( ~ 3 hours) 


  • client server model and HTTP request
  • web server & LAMP
  • Framework 
  • MVC structure
  • Composer
  • Artisan
  • Laravel 5 Structure & Important files
  • Routing
  • View & Blade ( Control structure & Template )
  • Controller & Form and Data Retrieval ( GET & POST concept )

  ครั้งหลัง  ( ~ 3 hours)

  • Database & mySQL & phpmyadmin
  • Laravel Eloquent  (Create, Modifier , Drop)
  • Migration (migrate & rollback)
  • Eloquent ( ORM & Data Retrieval )

วันอังคารที่ 17 มีนาคม พ.ศ. 2558

[Train] Data mining + Weka

โปรแกรมที่ต้องเตรียมมา

  1. Orange - Data mining tool
  2. Weka - ถ้าใช้ Linux ถ้าสามารถใช้คำสั่ง
    yum install weka หรือ
    apt-get install weka 
  3. Weka.jar
  4. Eclipse (ทดลองเปิดดูด้วยนะว่าใช้ได้มั้ย ถ้าไม่ได้ให้ลง JDK ก่อน)  

ไฟล์ข้อมูล
https://drive.google.com/file/d/0B8aY_vjbNGZvNDRsZTRYV1FadjA/view?usp=sharing

- https://drive.google.com/file/d/0B8aY_vjbNGZvVVl5S1ZBakJ5cG8/view?usp=sharing

https://raw.githubusercontent.com/ce-saig/ducking-spice/master/crop_price.arff


โค้ดของวันนี้

https://github.com/ce-saig/ducking-spice