Sublime Text Editor

 

การติดตั้ง Sublime Text Editor เครื่องมือสำหรับพัฒนาโปรแกรมบน Ubuntu

Type the following commands in the terminal, for Sublime Text 2 :

For Sublime Text 3 :

Python Virtual Environments

 

Virtual Environments

การจำลองระบบ

 

 

Install virtualenv via pip:

Basic Usage

  1. Create a virtual environment for a project:

 

You can also use a Python interpreter of your choice.

This will use the Python interpreter in /usr/bin/python2.7

  1. To begin using the virtual environment, it needs to be activated:

The name of the current virtual environment will now appear on the left of the prompt (e.g. (venv)Your-Computer:your_project UserName$) to let you know that it’s active. From now on, any package that you install using pip will be placed in the venv folder, isolated from the global Python installation.

Install packages as usual, for example:

  1. If you are done working in the virtual environment for the moment, you can deactivate it:

This puts you back to the system’s default Python interpreter with all its installed libraries.

อ้างอิง : http://docs.python-guide.org/en/latest/dev/virtualenvs/

cephhero

Ceph Storage: Unified Storage

 

Ceph เป็น software opensource สำหรับสร้างพื้นที่สำหรับการเก็บข้อมูลชนิดที่เป็น unified storage ที่มีลักษณะแบบกระจายการเก็บข้อมูล (Distributed Object Store) มีความน่าเชื่อถือ ประสิทธิภาพสูงสามารถรองรับขนาดข้อมูลที่มีจำนวน petebytes หรือ exabyte และสามารถรองรับจำนวนผู้ใช้จำนวนมากได้ เนื่องจาก Ceph เป็น software ดังนั้นสามารถทำงานได้บนอุปกรณ์ Hardware พื้นฐานทั่วไป (commodity hardware) พื้นฐานการทำงานของ Ceph คือ RADOS (Reliable Autonomic Distributed Object Store) ทำหน้าที่เก็บข้อมูลที่ส่งผ่านมาจากผู้ใช้ โดยที่ข้อมูลที่ส่งมานั้นสามารถผ่านมาทาง RADOSGW, RBD, CephFS และถูกแปลงเป็น Object โดยใช้ Library ที่ชื่อว่า Librados ต่อมา object จะถูกส่งผ่านไปสู่ RADOS เพื่อจะทำหน้าจัดเก็บใน Cluster stack

RADOS จะทำหน้าที่จัดเก็บแบบมีสร้างสำเนาของข้อมูล (Raplication) และจะทำการตรวจสอบว่าข้อมูลที่จัดเก็บนั้นมีความสูญหายไปหรือไม่ หากมีการสูญหายไปก็จะทำหน้าสร้างทดแทน เพื่อให้ข้อมูลที่จัดเก็บนั้นไม่มีการสูญหาย หากในบางกรณีที่ hardisk เสียหาย RADOS จะหน้าที่กระจายข้อมูลที่เก็บอยู่ใน hardisk ที่เสียไปยัง hardisk ลูกอื่น ด้วยตนเอง
จากรูปข้างบน Ceph ได้เปิดช่องทางการเชื่อมต่อ (storage interface) ไว้หลายช่องทางได้แก่
1). RADOSGW (RADOS GATEWAY) สำหรับการให้บริการ Object Storage ผ่าน  RESTFULL Gateway หลักการนี้จะเหมือนกับการให้บริการของ Amazon S3 หรือ Swift การใช้งานแบบนี้ Application จะเรียกใช้งานผ่านทาง URI ที่กำหนดให้
2). RBD (Rados Block Device) เป็นการให้บริการรูปแบบที่เป็น Block Device ใช้สำหรับการเก็บข้อมูลเหมือนกับการเก็บข้อมูลใน Storage ทั่วไป โดยข้อมูลจะถูกแบ่งออกเป็นส่วนๆ และกระจายไปเก็บไว้ใน OSDs (Ceph Object Storage Daemons)
3) CephFS รองรับการใช้งานในรูปแบบที่เป็น  Filesystem แต่การใช้งานต้องมีการติดตั้ง MDS (Metedata Server) โดยMDS จะทำหน้าเก็บโครงสร้างของFile ตามมาตรฐาน POSIX-Compliant
Ceph storage cluster หรือ RADOS cluster ที่สร้างนั้นจะทำให้มอง Harddisk ทั้งหมดเป็นกลุ่มก้อนเดียวกัน เมื่อมีการใช้งานจาก Application ต่างๆ เช่นมีการใช้งานมาจาก Openstack จะให้สามารถเข้าถึงได้จาก ทุกๆ Service ใน Openstack  ดังรูปด้านล่าง
ceph-openstack

ทดสอบการติดตั้งการใช้งาน

ออกแบบการใช้งานนั้น สามารถเริ่มต้นได้โดยออกแบบให้มีเครื่องจำนวน 9  เครื่อง ได้แก่ ceph-admin จำนวน 1 เครื่องเพื่อใช้สำหรับการติดตั้งเครื่องอื่นๆ metadata server  หรือ mds จำนวน 2 เครื่องเพื่อใช้งาน CephFS   ต่อมาคือ monitor server (mon) จำนวน 3 เครื่อง การกำหนดจำนวนเครื่องของ mon จะกำไหนดจำนวนให้เป็นจำนวนคี่ {1,3,5,..} สุดท้ายคือ osd เพื่อเก็บข้อมูลจำนวน 4 เครื่อง ดังรูป

selection_022
ขั้นตอนการทดสอบ
ให้ทำการ clone project ที่ เป็นการติดตั้ง  Ceph บน Centos7

ตั้งค่า ssh key และ copy key ไปทุกเครื่อง

ตั้งค่าเวลา
กำหนดให้เครื่อง adminnode ทำหน้าที่เป็น Time server ส่วนที่เหลีือ จะทำหน้าที่เป็น client

ติดตั้ง Ceph

คำอธิบาย
1). สร้างระบบด้วย vagrant ที่ทำงานบน kvm เมื่อ vagrant ทำงานจะสร้าง instance ตาม “servers.yaml”  กำหนดให้ front end network (publick_address) บน subnet 192.168.20.x/24 และ Backend network (Cluster_addr) บน subnet 192.168.10.x/24

2). เมื่อมีการสร้าง แล้ว vagrant run master_script.sh โดยมีการทำงานดังนี้
2.1). ตั้งค่า local dns ใน /etc/hosts
2.2). ตั้งค่า vagrant box กำหนด password ให้ root และตั้งค่า PasswordAuthentication
2.3). ปรับแต่ง kernel
2.4). เพิ่ม repository – Ceph jewel
2.5). เพิ่ม user “ceph-deploy” ให้มีสิทธิ
2.6). ตั้งค่า firewall และ Reboot เครื่อง

credit : http://www.control4.com/blog/2014/03/the-internet-of-things-and-the-connected-home

Internet of Things คือ

 

Internet of Things หรือ IoT คือ สภาพแวดล้อมอันประกอบด้วยสรรพสิ่งที่สามารถสื่อสารและเชื่อมต่อกันได้ผ่านโพรโทคอลการสื่อสารทั้งแบบใช้สายและไร้สาย โดยสรรพสิ่งต่าง ๆ มีวิธีการระบุตัวตนได้ รับรู้บริบทของสภาพแวดล้อมได้ และมีปฏิสัมพันธ์โต้ตอบและทำงานร่วมกันได้ ความสามารถในการสื่อสารของสรรพสิ่งนี้จะนำไปสู่นวัตกรรมและบริการใหม่อีกมากมาย ตัวอย่างเช่น เซ็นเซอร์ภายในบ้านตรวจจับการเคลื่อนไหวของผู้อยู่อาศัย และส่งสัญญาณไปสั่งเปิด/ปิดสวิตซ์ไฟตามห้องต่าง ๆ ที่มีคนหรือไม่มีคนอยู่ อุปกรณ์วัดสัญญาณชีพของผู้ป่วย/ผู้สูงอายุและส่งข้อมูลไปยังบุคลากรทางการแพทย์ หรือส่งข้อความเรียกหน่วยกู้ชีพหรือรถฉุกเฉิน เป็นต้น

นอกจากนี้ IoT จะเปลี่ยนรูปแบบและกระบวนการผลิตในภาคอุตสาหกรรมไปสู่ยุคใหม่ หรือที่เรียกว่า Industry 4.0 ที่จะอาศัยการเชื่อมต่อสื่อสารและทำงานร่วมกันระหว่างเครื่องจักร มนุษย์ และข้อมูล เพื่อเพิ่มอำนาจในการตัดสินใจที่รวดเร็วและมีความถูกต้องแม่นยำสูง โดยที่ข้อมูลทั้งหลายที่เก็บจากเซ็นเซอร์ที่ใช้ตรวจวัดตัวอุปกรณ์และสภาพแวดล้อมจะถูกนำมาวิเคราะห์ ให้ได้ผลลัพธ์เพื่อนำไปปรับปรุงกระบวนการผลิตได้อย่างทันที นอกจากการข้ามขีดจำกัดเรื่องเวลาแล้ว ระบบควบคุมหรือระบบวิเคราะห์ข้อมูล อาจไม่ได้อยู่ในที่เดียวกันกับเครื่องจักร แต่สามารถควบคุมสั่งการได้โดยไร้ขีดจำกัดเรื่องสถานที่

เทคโนโลยีที่ทำให้ IoT เกิดขึ้นได้จริงและสร้างผลกระทบในวงกว้างได้ แบ่งออกเป็นสามกลุ่มได้แก่ 1) เทคโนโลยีที่ช่วยให้สรรพสิ่งรับรู้ข้อมูลในบริบทที่เกี่ยวข้อง เช่น เซ็นเซอร์ 2) เทคโนโลยีที่ช่วยให้สรรพสิ่่งมีความสามารถในการสื่อสาร เช่น ระบบสมองกลฝังตัว รวมถึงการสื่อสารแบบไร้สายที่ใช้พลังงานต่ำ อาทิ Zigbee, 6LowPAN, Low-power Bluetooth และ 3) เทคโนโลยีที่ช่วยให้สรรพสิ่งประมวลผลข้อมูลในบริบทของตน เช่น เทคโนโลยีการประมวลผลแบบคลาวด์ และเทคโนโลยีการวิเคราะห์ข้อมูลขนาดใหญ่ หรือ Big Data Analytics

ในด้านสถานะการพัฒนา เทคโนโลยีในกลุ่มเซ็นเซอร์ในปัจจุบันมีความแม่นยำสูง และราคาถูกมาก ศูนย์เทคโนโลยีไมโครอิเล็กทรอนิกส์ (TMEC) มีความเชี่ยวชาญด้านการผลิตเซ็นเซอร์คุณภาพสูงสำหรับงานด้านการเกษตร และอุตสาหกรรม ส่วนเทคโนโลยีระบบสมองกลฝังตัวก็มีความสามารถสูงขึ้นในราคาที่ถูกลง แผงวงจรไมโครคอนโทรลเลอร์ขนาดเล็กที่มีความสามารถสูงเทียบเท่าคอมพิวเตอร์ ปัจจุบันมีราคาตั้งแต่สามร้อยบาท อีกทั้งมีฮาร์ดแวร์แบบโอเพ่นซอร์สมากขึ้น ทำให้ต้นทุนการผลิตอุปกรณ์ IoTต่ำลงมาก นักพัฒนาชาวไทยสามารถนำฮาร์ดแวร์เปิดเหล่านี้ไปดัดแปลงและขายเป็นบอร์ดเฉพาะทาง หรือสามารถสร้างผลิตภัณฑ์ใหม่ของตนเองได้อย่างรวดเร็ว ส่วนเทคโนโลยีการประมวลผลแบบคลาวด์ และเทคโนโลยีการวิเคราะห์ข้อมูลขนาดใหญ่ ในต่างประเทศผ่านจุดของการวิจัยมาสู่บริการเชิงพาณิชย์แล้ว ในประเทศไทย ศูนย์เทคโนโลยีอิเล็กทรอนิกส์และคอมพิวเตอร์แห่งชาติ (NECTEC) มีบริการคลาวด์แพลตฟอร์ม NETPIE สำหรับให้บริการเชื่อมต่อสื่อสารในรูปแบบ IoT

ดังนั้นจึงเป็นโอกาสของผู้พัฒนาชาวไทยและประเทศไทยที่จะเข้ามามีบทบาท ไม่ใช่ในฐานะผู้ใช้เท่านั้น แต่ยังสามารถมีส่วนกำหนดทิศทาง สร้างนวัตกรรม บริการ ผลิตภัณฑ์หรือมาตรฐานใหม่ เพื่อก้าวขึ้นไปเป็นผู้นำด้าน IoT ของโลกได้

Technology roadmap 

internet_of_things-svg

Design architecture of cyber-physical systems-enabled manufacturing system

 

cps_for_manufacturing

Design architecture of cyber-physical systems-enabled manufacturing system[3]

:

[1] http://www.ar.co.th/kp/th/15

[2] https://en.wikipedia.org/wiki/Internet_of_thing

[3] Lee, Jay; Bagheri, Behrad; Kao, Hung-An (2015). “A cyber-physical systems architecture for industry 4.0-based manufacturing systems”. Manufacturing Letters.3: 18–23. doi:10.1016/j.mfglet.2014.12.001.

 

big-data-makes-for-exceptional-machine-learning

Machine Learning คือ อะไร

 

การเรียนรู้ของเครื่องเป็นสาขาหนึ่งของปัญญาประดิษฐ์ (AI) ที่พัฒนามาจากการศึกษาการรู้จำแบบเกี่ยวข้องกับการศึกษาและการสร้างอัลกอริทึม (Algorithm) ที่สามารถเรียนรู้จากข้อมูลและทำนายข้อมูล อัลกอริทึมนั้นจะทำงานโดยอาศัยโมเดลที่สร้างมาจากชุดข้อมูลตัวอย่าง เพื่อการทำนายหรือตัดสินใจใน อาเธอร์ ซามูเอล [1] นักวิทยาศาสตร์คอมพิวเตอร์ชาวอเมริกันได้ให้นิยามของการเรียนรู้ของเครื่องจักรไว้ในปี ค.ศ. 1959 ว่า “เป็นสาขาที่ให้คอมพิวเตอร์มีความสามารถในการเรียนรู้โดยไม่ต้องโปรแกรมให้ชัดเจน”  ทอม เอ็ม. มิตเชลล์ [2] ได้นิยามไว้ว่า “เราจะเรียกคอมพิวเตอร์โปรแกรมว่าได้เรียนรู้จากประสบการณ์ E เพื่อทำงาน T ได้โดยมีประสิทธิผล P เมื่อโปรแกรมนั้นสามารถทำงาน T ที่วัดผลด้วย P แล้วพัฒนาขึ้นจากประสบการณ์ E”  คำนิยามนี้เป็นข้อจำกัดความที่มีชื่อเสียง เพราะเป็นการนิยามการเรียนรู้ของเครื่องจักรในแง่ของการดำเนินการมากกว่าในแง่ของความรู้สึกนึกคิดเปรียบเทียบ คือ เป็น การเปลี่ยนคำถามของ แอลันทัวริง ที่เคยถามว่า [3] “เครื่องจักรคิดได้หรือไม่” เป็นคำถามที่ว่า “เครื่องจักรจะทำงานที่พวกเราทำได้หรือไม่”  ลักษณะการเรียนรู้ของเครื่องจักรแสดงได้ดังรูปที่ 1 เทคนิคการเรียนรู้ของเครื่องจักร

machine_learning_technique

รูปที่ 1 เทคนิคการเรียนรู้ของเครื่องจักร

ประเภทของการเรียนรู้
การเรียนรู้ของเครื่อง สามารถแบ่งโดยกว้างๆ ได้เป็น 3 ประเภท ตามประเภทของ “ข้อมูลฝึก” หรือ “ข้อมูลขาเข้า” ได้ดังนี้
1. การเรียนรู้แบบมีผู้สอน (supervised learning) [7] – ข้อมูลตัวอย่างและผลลัพธ์ที่ “ผู้สอน” ต้องการถูกป้อนเข้าสู่คอมพิวเตอร์คือ การสร้างกฎทั่วไปที่สามารถเชื่อมโยงข้อมูลขาเข้ากับขาออกได้ เป็นเทคนิคการเรียนรู้ของเครื่องซึ่งสร้างฟังก์ชันจากข้อมูลสอน(training data) ข้อมูลสอนประกอบด้วยวัตถุเข้า (มักจะเป็น เวกเตอร์) และผลที่ต้องการ ผลจากการเรียนรู้จะเป็นฟังก์ชันที่อาจจะให้ค่าต่อเนื่อง (จะเรียกวิธีการว่า การถดถอย – regression) หรือใช้ทำนายประเภทของวัตถุ (เรียกว่า การแบ่งประเภท – classification) ภารกิจของเครื่องเรียนรู้แบบมีผู้สอนคือการทำนายค่าของฟังก์ชันจากวัตถุเข้าที่ถูกต้องโดยใช้ตัวอย่างสอนจำนวนน้อย (training examples – คู่ของข้อมูลเข้าและผลที่เป็นเป้าหมาย) โดยเครื่องเรียนรู้จะต้องวางนัยทั่วไป (generalize) จากข้อมูลที่มีอยู่ไปยังกรณีที่ไม่เคยพบอย่างมีเหตุผล การแก้ปัญหาการเรียนรู้แบบมีผู้สอน (เช่น การเรียนรู้เพื่อรู้จำลายมือ)
2. การเรียนรู้แบบไม่มีผู้สอน (unsupervised learning) [8] – เป็นเทคนิคหนึ่งของการเรียนรู้ของเครื่อง โดยการสร้างโมเดลที่เหมาะสมกับข้อมูล การเรียนรู้แบบนี้แตกต่างจากการเรียนรู้แบบมีผู้สอน คือ จะไม่มีการระบุผลที่ต้องการหรือประเภทไว้ก่อน การเรียนรู้แบบนี้จะพิจารณาวัตถุเป็นเซตของตัวแปรสุ่ม แล้วจึงสร้างโมเดลความหนาแน่นร่วมของชุดข้อมูล การเรียนรู้แบบไม่มีผู้สอนสามารถนำไปใช้ร่วมกับการอนุมานแบบเบย์ เพื่อหาความน่าจะเป็นแบบมีเงื่อนไขของตัวแปรสุ่มโดยกำหนดตัวแปรที่เกี่ยวข้องให้ นอกจากนี้ยังสามารถนำไปใช้ในการบีบอัดข้อมูล ซึ่งโดยพื้นฐานแล้ว ขั้นตอนวิธีการบีบอัดข้อมูลจะขึ้นอยู่กับ การแจกแจงความน่าจะเป็นของข้อมูลไม่อย่างชัดแจ้งก็โดยปริยาย การเรียนรู้แบบไม่มีผู้สอนในอีกรูปแบบหนึ่งคือการแบ่งกลุ่มข้อมูล โดยจะไม่เกี่ยวข้องกับความน่าจะเป็น
3. การเรียนรู้แบบเสริมกำลัง (reinforcement learning) – คอมพิวเตอร์มีปฏิสัมพันธ์กับสิ่งแวดล้อมที่เปลี่ยนไปตลอดเวลาโดยคอมพิวเตอร์จะต้องทำงานบางอย่าง (เช่น ขับรถ) โดยที่ไม่มี”ผู้สอน”คอยบอกอย่างจริงจังว่าวิธีการที่ทำอยู่นั้นเข้าใกล้เป้าหมายแล้วหรือไม่ ตัวอย่างเช่น การเรียนรู้เพื่อเล่นเกม

 

credit wikipedia

อ้างอิง

[1] P. Simon. Too Big to Ignore: The Business Case for Big Data. Wiley and SAS Business Series. Wiley,2013.
[2] Tom M. Mitchell. Machine Learning. McGraw-Hill, New York, 1997.
[3] Stevan Harnad. The annotation game: On turing (1950) on computing, machinery, and intelligence(published version bowdlerized). Chapter: 3 Commentary On: Turing, A.M. (1950) ComputingMachinery and Intelligence. Mind 49 433-460 Address: Amsterdam, 2008.