วันศุกร์ที่ 31 กรกฎาคม พ.ศ. 2558

Review Micro SD card 32GB Transcend Ultimate UHS-I U3 @ 95/85

ก็กลับมาอีกแล้วนะครับ กับ Hardware Review รอบนี้ เป็น Micro SD card ยี่ห้อ Transcend ความจุ 32GB ในรุ่น Ultimate 633x ตัวการ์ดใช้มาตรฐาน UHS U3 เครมความเร็วในการอ่านข้อมูลสูงสุดไว้ที่ 95 MB/s และความเร็วในการเขียนข้อมูลสูงสุดไว้ที่ 85 MB/s

O_o
ไม่ผิดครับ อ่าน 95 เขียน 85

หน้าตาแพ็กเกจ เป็นแบบนี้ครับ


ก่อนที่จะเข้าเรื่อง Review ขออธิบายก่อนว่า มาตรฐาน UHS นี่มันคืออะไร

Speed Class

ก็ต้องท้าวความกันก่อนว่า เรื่องความเร็วของ SD Card นี่มันมีความเป็นมาอย่างไรนะ
โดยปกติความเร็วของ SD Card จะถูกกำหนดเป็น Class เช่น Class 2, 4, 6 หรือ 10 ซึ่งตัวเลขที่เห็น จะเป็นความเร็วการเขียนข้อมูล การันตีขั้นต่ำตามตัวเลข เช่น SD Card Class 2 จะมีความเร็วการเขียนข้อมูลขั้นต่ำแน่ๆ ที่ 2 MB/s (Megabytes per second)


Big and More Big Content

ในปัจจุบันเรามาถึงจุดที่ ไฟล์รูปภาพ 1 ภาพ อาจจะมีขนาดถึง 20 MB ซึ่งถ้าเรายังใช้ SD Card Class 2 เราจะต้องใช้เวลารอบันทึกข้อมูลถึง 10 วินาที คงไม่สนุกนักถ้าต้องถ่ายภาพ 1 ภาพ แล้วต้องรอไป 10 วินาที จึงจะ ถ่ายรูปต่อไปได้ แล้วลองนึกภาพถึงการบันทึกวีดีโอ 4K ว่าไม่มีทางทำได้แน่นอน

Big Content Need Faster Speed

ด้วยเหตุผลข้างต้น ทางกลุ่มที่ดูแลมามาตรฐาน SD Card จึงได้ออกมาตรฐานความเร็วใหม่ในชื่อว่า UHS (Ultra High Speed) ณ ปัจจุบัน ก็มี U1 และ U3 ซึ่ง U1 นี่มีความเร็วขั้นต่ำที่ 10 MB/s ส่วน U3 มีความเร็วขั้นต่ำที่ 30 MB/s นั่นเอง



เอาละเรื่องมาตรฐานก็ประมาณนี้ เลขยิ่งมายิ่งไว เข้าใจง่ายๆ กลับมาที่ ตัว Review ดีกว่า

Great Performance come with Little Body

ก็อย่างที่บอกว่า เจ้า Micro SD Card ตัวนี้ ทำความเร็วในการอ่านข้อมูลสูงสุดไว้ที่ 95 MB/s และความเร็วในการเขียนข้อมูลสูงสุดไว้ที่ 85 MB/s เรียกได้ว่าเป็นตัวเลขที่สูงงงงงงงงงงงงงมากเลยทีเดียว

ก่อนที่จะดูเรื่องประสิทธิภาพ เรามาดูหน้าตากันก่อน ว่าหน้าตาเป็นยังไงนะ จิ๋วแต่แจ๋ว สุดติ่งกระดิ่งแมวกันเลยทีเดียว


Performance Test
ในการทดสอบจะแบ่งเป็น

  1. ทดสอบกับ Card Reader ติดตัว Macbook Pro Retina 2013 Late 2013
  2. ทดสอบกับ Card Reader ติดตัว Dell Inspiron 5448, Early 2015
  3. ทดสอบกับ Card Reader Transcend USB3 บน Dell Inspiron 5448, Early 2015



ทดสอบกับ Card Reader ติดตัว Macbook Pro Retina 2013 Late 2013



ทดสอบกับ Card Reader ติดตัว Dell Inspiron 5448, Early 2015




ทดสอบกับ Card Reader Transcend TS-RDF8K USB3 บน Dell Inspiron 5448, Early 2015






สรุปผล

จากผลที่ออกมาจะเห็นได้ว่า ความเร็วมันสุดติ่งกันเลยมีเดียว ทำได้ตามสเป็คที่เครมไว้เลย ทั้งบน Mac และ Windows ก็เหมาะกับการที่จะเอาไปใช้งานกับงานที่ต้องการความเร็วสูงอย่างพวก Video 4K ประมาณนั้น




ข้อมูลเพิ่มเติม
https://www.sdcard.org/developers/overview/speed_class/

วันอาทิตย์ที่ 12 กรกฎาคม พ.ศ. 2558

ลอง NoSQL ง่ายๆ กับ IBM Cloudant (มีสาระ)

สวัสดีครับ ก็กลับมาอีกแล้วกับ Blog สาระเน้นๆ รอบนี้จะนำเสนอในท้องเรื่อง ลอง NoSQL ง่ายๆ กับ IBM Cloudant ติดตามรับชมได้เลยครับ

เรื่องของเรื่องมันมีอยู่ว่า เมื่อวันที่ 13-14 มิถุนายน 2558 ที่ผ่านมาได้มีโอกาศมีเข้างาน AngelHack Bangkok 2015 พอดีในงานมี Engineer จาก IBM มาแนะนำ Cloud ของ IBM ที่ชื่อว่า IBM Bluemix จากที่ฟังมาก็เข้าใจได้ทันทีเลยว่า IBM ตั้งใจทำโปรดักตัวนี้มาก ตอนที่เค้า Mini Workshop ให้ ก็พบว่าระบบเค้าก็เข้าใจได้ง่ายดี แล้วตัว Platform ก็สมบูรณ์ในระดับที่ใช้งานได้เต็มรูปแบบเลยทีเดียว




Bluemix คืออะไร

Bluemix ก็คือ Cloud Platform ตัวหนึ่งของ IBM ที่มีทั้งส่วนที่เป็น IaaS, PaaS และ SaaS ลักษณะเดียวกับ AWS: Amazon Web Service ของ Amazon หรือ Azure ของ Microsoft นั่นเอง แต่อาจจะยังเทียบกับเจ้าตลาดในตอนนี้ไม่ได้ เพราะว่าตัว Server พึ่งมีแค่ 2 โซน คือ อเมริกาและยุโรป (เราอยู่เอเซียก็มองตาปริบๆ ไกลเกิน) เอาน่า ไม่เป็นไร เดี๋ยวเค้าก็ต้องขยายมาเอง ไม่งั้นไม่มีคนใช้แน่นอน

ทีนี้เราจะโพกัสไปที่ IBM Cloudant ตัวเดียวก่อน เพราะว่าตัวอื่นยังไม่ได้ลองอะไรมาก ก็ต้องบอกเหตุผลก่อนว่าทำไมถึงเจาะจงที่จะใช้ Cloudant ก่อนนะ

ก็พอดีว่า ตอนนี้เทรนเรื่อง Big Data เนี่ยมาแล้ว แล้วพวก SQL ที่ใช้กันอยู่ทุกวันนี้ Performance มันไม่ไหวกับข้อมูลขนาดนั้น เค้าก็เลยคิดค้น NoSQL ขึ้นมา โดยเน้นไปที่เรื่อง Performance กับ Unstructured Data แล้ว.......... เอาไงล่ะทีนี้ ก็ตอนใช้ SQL เราก็จะคุ้นๆกับคำสั่ง SELECT FROM WHERE แล้วถ้าเป็น NoSQL ล่ะมันเป็นยังไง




NoSQL VS SQL

เรามาดูคำจำกัดความของ NoSQL กันก่อน
NoSQL นั้น คือ Not Only SQL มันหมายถึงเมื่อเราทำการออกแบบระบบใดๆ ขึ้นมาก็ตาม ให้จำไว้ว่า รูปแบบการจัดเก็บข้อมูลนั้นมีมากกว่าหนึ่งแบบ ดังนั้น ต้องเลือกวิธีการให้เหมาะสมกับความต้องการ
ขอยกข้อความนี้มาจาก http://www.somkiat.cc/note-overview-nosql-database/

ก็คือ NoSQL ถูกออกแบบมาเพื่อ เก็บข้อมูลที่มีรูปแบบหลากหลาย และปริมาณมาก เพื่อให้เราโฟกัสไปที่การสนใจว่าจะเก็บข้อมูลอะไรดี มากกว่าจะเสียเวลาโฟกัสตรงที่ว่า เราควรจะเก็บข้อมูลอย่างไรดี ถ้าจะเอาให้ชัดๆก็คือ ถ้าเราพูดเรื่อง NoSQL vs SQL ก็หมายถึง Schema-less vs Schema นั่นเอง ..... อย่าพึ่งงงนะ

ทีนี้ในการนำไปใช้งาน เจ้า NoSQL นี่ก็มีคนทำหลายเจ้ามาก ที่ดังๆก็คือ MongoDB, Hadoop และอีกหลายๆตัว




Schema-less !== NonType

อันนี้ไม่ขออธิบายนะครับ น่าจะเข้าใจกันดี
ถึงแม้ว่าโครงสร้างการเก็บข้อมูลของ NoSQL จะไม่ใช้เรื่องสำคัญ แต่กับเรื่องชนิดมันสำคัญนะ

ชนิดการเก็บข้อมูลของ NoSQL มันก็มีเป็นแบบหลักๆอยู่ตามนี้


  • Column
  • Document
  • Key-value
  • Graph
  • Multi-model

เอาละ เกริ่นมาระดับนี้แล้วก็น่าจะพอมองออกละนะว่า NoSQL มันเป็นยังไง (มาถึงตรงนี้ถ้าไม่เข้าใจ ก็บังคับเข้าใจนะ!) กลับมาเข้าเรื่องหลักดีกว่า





ลอง NoSQL ง่ายๆ กับ IBM Cloudant

IBM Cloudant
เจ้า Cloudant เนี่ยมันเก็บข้อมูลในลักษณะ Document ถ้าถามว่าการเก็บข้อมูลในลักษณะ Document มันเป็นยังไง ก็ให้นึกถึง JSON อ่ะ แบบนั้นแหละ

แล้วทำไมต้อง Cloudant ล่ะ ก็มันฟรีระดับหนึ่งครับ แถมยังไม่ต้องเซ็ทอะไรให้วุ่นวายด้วยนะ


Let's Play

ต่อไปนี้จะเป็น How To แบบง่ายๆนะ

สิ่งที่ต้องเตรียม


  • JAVA SDK
  • Eclipse
  • IBM Bluemix Account
  • Cloudant libs
  • ความพยายาม
  • ความตั้งใจ



ขั้นแรก

ก็เตรียมตัว จัดการ Eclipse ให้รัน Java ได้ ก็เป็นอันจบ


ขั้นสอง

โหลด Cloudant libs มาซะ เอาเอาไปใส่ใน Project บน Eclipse จะด้วยวิธีการใดก็แล้วแต่ เอาให้ใช้ได้ก็แล้วกัน


ขั้นสาม

ติต่างว่ามี IBM Bluemix Account แล้วนะ ถ้าไม่มีก็สมัครนะ ฟรี

เข้าไปที่ Dashboard ของ Bluemix นะ แล้ว แล้วสังเกตุที่เมนูด้านบน จะเห็นคำว่า CATALOG คลิ๊กเข้าไปเลย


จากนั้นก็จะมีทั้ง Service ทั้ง Application ขึ้นมาให้เลือก อันนี้ให้เราหา หัวข้อ Data Management แล้วเลือก Cloudant NoSQL DB


จากนั้นเราจะต้องตั้งชื่อให้กับ Service นะ ก็ตั้งไป เสร็จแล้วก็กด CREATE แล้วรอแปปนึง


พอระบบสร้าง Service เสร็จ ระบบจะพาเราไปที่ Dashboard ของ Cloudant ให้เราสังเกตุที่เมนูด้านบนจะมีช่องให้สร้าง Database ใหม่ได้ ในที่นี้ให้ใส่ ว่า Test ก่อนนะ จะได้ตรงกัน


รอแปปนึง ระบบจะสร้าง Database เสร็จ ให้คลิ๊กที่ชื่อ Database ที่พึ่งสร้าง แล้วไปที่หัวข้อ Permission เพื่อที่เราจะได้สร้าง Key ให้ใช้ตัว Database ผ่าน API ได้


ก็ให้ Gen Key ขึ้นมานะ ตรงนี้อย่าลืมจดเอาไวนะ เพราะมันจะแสดง password แค่ตรงนี้ ถ้าเรา refresh หน้านี้ มันจะไม่แสดง password แล้ว ในภาพคือตัวอย่างเวลาที่แสดง password พอได้ password แล้วอย่าลืม เปิดสิทธิ์ด้วยล่ะ


ต่อมาให้เข้าไปที่หน้า ACCOUNT ทางเมนูด้านซ้าย จด Account Name มานะ ต้องใช้


ทีนี้ทางฝั่ง Server ก็พร้อมแล้ว ต่อมาเรามาต่อกันที่ฝั่ง Client ก็สร้างโปรเจ็คขึ้นมา 1 โปรเจ็คนะ เป็น Java Console ธรรมดานี่แหละ จัดการ Import Libs ให้พร้อมแล้วก็มาลองกันเลย

ก็เหมือนกับการใช้งานพวก Database ตามปกติ ก็คือสร้าง Connection ขึ้นมา
CloudantClient client = new CloudantClient(API.CLOUDANT_ACCOUNT,API.CLOUDANT_KEY,API.CLOUDANT_PASSWORD);
System.out.println("Connected to Cloudant");
System.out.println("Server Version: " + client.serverVersion());
สังเกตุ Constructor CloudantClient() ที่รับพารามิเตอร์ 3 ตัว ตัวที่หนึ่ง คือ Account ที่เราได้มาจาก Account Name ส่วนตัวที่สองคือ Key ที่เราได้มาจากการ Generate และตัวที่สามคือ Password ที่ได้มาจากการ Generate เช่นกัน

ถ้าโค้ดที่รันผ่าน น่าจะแสดงผลแบบนี้ได้
Connected to Cloudant
Server Version: 1.0.2


เอาละ ต่อมาเราจะลอง Insert ข้อมูลเข้าไปใน Database กันนะ
ขั้นแรกให้สร้าง Class ขึ้นมาซัก 1 Class แล้วให้มี Attribute ซัก 2 ตัว เอาเป็นตามนี้นะ
public class Person{
private String firstname;
private String lastname;
        // set/get
}


แล้วกลับไปที่ โค้ดชุดแรก แล้วสร้าง Person Instance ขึ้นมา
Person person= new Person();
person.setFirstname("Bill");
person.setLastname("Jobs");


ต่อมา ก็สั่งให้ client ติดต่อกับ Database ที่เราสร้างไว้ ผ่าน Method database()
Database db = client.database(API.CLOUDANT_DATABASE_NAME, false);


Method database() จะรับพารามิเตอร์ 2 ตัว ตัวแรกคือชื่อ Database ที่เราสร้างไว้ ก็ใส่ไปนะ ส่วนตัวที่สอง อย่างพึ่งสนใจ ใส่ False ไปก่อน
ตรงนี้ Method database() จะคืน Database Instance กลับมาให้ ต่อไปเวลาเราจะทำอะไรกับ Database นี้ก็ใช้งานผ่าน Instance ตัวนี้ได้เลย

ขั้นต่อมา เราจะลองใส่ข้อมูลไปใน Database จริงๆแล้วนะ ด้วยคำสั่ง
Response lastInserted = db.save(person);


ตรงนี้เราเรียก Method save() ผ่าน Database Instance แล้ว Method save จะคืน Response Instance มาให้ ซึ่งจะมี ID ของข้อมูลที่เราสั่ง save ไป ให้เราเก็บตัว ID นี้ไว้
ตรงนี้หลังจากที่เราสั่ง save ไปแล้ว ถ้าเรากลับไปดูใน Dashboard เราก็จะเห็นข้อมูลนี้ไปปรากฎอยู่ด้วย

ต่อมาเราจะลองเรียก ข้อมูลที่เราพึ่งจะบันทึกไปด้วย Method find()
Person p = db.find(Person.class, lastInserted.getId());


บรรทัดแรก เราใช้ Method find() โดยกำหนด Class Person ที่เราสร้างขึ้น เพื่อให้แปลงข้อมูลมาเป็น Class Person ให้อัตโนมัติ แบบนี้เวลาเอาไปใช้ต่อก็จะสะดวกหน่อย แต่ถ้าเราไม่ใส่ Class ไป มันจะตอบกลับมาเป็น InputStream นะ ก็เอาไปทำอะไรต่อกันเอง






เย่ เห็นมั้ย ไม่ยากเลย

ก็จบแล้วสำหรับ Blog นี้ จะเห็นได้ว่าไม่ยากเลย NoSQL เนี่ย แต่ยังไงก็อย่าลืมว่า ไอ้ที่อยู่ใน Blog นี่เนี่ย มันแค่ระดับ Starter เท่านั้น จริงๆแล้วยังมีอะไรให้เล่นอีกมากมาย อย่างที่ยกมาเขียนนี่คือในส่วนที่ใช้งานผ่าน Lib ของ JAVA แต่ถ้าจะทำผ่าน PHP ก็จะต้องใช้ผ่าน curl แทน ก็ถือว่าการใช้งานก็ยืดหยุ่นและง่ายพอสมควรดี แต่จะอย่างไนก็แล้วแต่ ยังก็ต้องฝึกฝน ฝึกใช้กันต่อไป อย่าหวั่นไหว แม้วันที่ไม่เป็นใจ

และที่สำคัญคือ



สวัสดี




อ้างอิง
http://www.somkiat.cc/note-overview-nosql-database/
https://console.ng.bluemix.net/home/
https://docs.cloudant.com/libraries.html#java
https://github.com/cloudant/java-cloudant
http://nuuneoi.com/blog/blog.php?read_id=831

วันพฤหัสบดีที่ 25 มิถุนายน พ.ศ. 2558

บอกลาปัญหารถสุดที่รัก ด้วย Drivebot โครงการ Startup ไทยที่ไปไกลระดับโลก

บอกลาปัญหารถสุดที่รัก ด้วย Drivebot โครงการ Startup ไทยที่ไปไกลระดับโลก


ก็กลับมาอีกครับกับการเขียน Blog ที่พยายามจะให้มีสาระ เท่าที่จะมากได้ ที่มาที่ไปของ Blog นี้ก็คือ เมื่อวันหนึ่งนานมาแล้ว อ่านข่าวเว็บ Blognone แล้วไปเห็นข่าวนี้ "Drivebot อุปกรณ์ช่วยดูแลรถยนต์ผ่านสมาร์ทโฟน เปิดโครงการระดมทุนกับ Indiegogo แล้ว" ก็เลยตามเข้าไปดูที่โครงการ พบว่า โครงการนี้ได้ผ่านโครงการ Dtac Accelrate #2 มา ซึ่งเราก็เห็นว่า โครงการแต่ละโครงการที่ผ่าน Dtac Accelrate มาได้นี่ไม่ธรรมดา คุณภาพคับแก้วมากๆ จากที่อ่านคุณสมบัติกับภาพในโครงการ ตอนแรกก็ "เอ่อ ดีนะ" แต่พอได้ดูวีดีโอที่เค้าทำมา โอ้พระเจ้า มันใช่เลย ใช่มากๆ กดซื้อทันทีไม่คิดเลย

ในวีดีโอก็ทำมาได้ดีเข้าใจง่ายเลยว่ามันทำอะไรได้บ้าง ช่วยอะไรเราได้บ้าง
หลักๆที่เจ้า Drivebot ทำก็คือ

  • แจ้งเตือนสถานะของรถ
  • Log การเดินทางในรูปแบบระยะทาง/การใช้พลังงาน


มาว่ากันที่ตัว Drivebot ก่อน

Drivebot และ Application บน iOS

ตัว Drivebot จะทำงานด้วยการเชื่อมต่อกับพอร์ท OBD-II แล้วสื่อสารกับ Application บนมือถือเราผ่าน Bluetooth โดยที่ตัว Drivebot มีหน่วยความจำในตัว ทำให้ ไม่จำเป็นต้องทำงานคู่กับโทรศัพท์ตลอดเวลา ง่ายๆก็คือ

  1. เอาเจ้า Drivebot ไปต่อกับรถ
  2. เซ็ทการใช้งานครั้งแรก
  3. เสร็จแล้ว !

เวลาใช้งานก็คือขับรถไป ปล่อยให้ Drivebot ทำงานไป เปิด Bluetooth ที่มือถือทิ้งไว้ แล้วเดี๋ยวมันจะ sync ข้อมูลกันเอง อยากดูข้อมูลก็เปิด Application ขึ้นมาดู ง่ายดีนะ ไม่ต้องอะไรกับมันมาก


Drivebot Application on iOS

ในส่วนนี้ขอเขียนเท่าที่ใช้ก่อนนะครับ เพราะยังใช้ความสามารถไม่ครบเลย

หน้าจอหลัก
ครั้งแรกที่ใช้งานก็งงๆ หน่อย ว่าเราจะดูข้อมูลรถเรายังไงหว่า มีแบบ Realtime ให้ดูมั้ย กดๆอยู่ซักพัก ก็ไม่มีอะไรขึ้นมา ก็เลยตีความว่า คงต้องรอให้ตัว Drivebot เก็บข้อมูลซักหน่อยถึงจะแสดงอะไรออกมาได้ อ่ะจัดให้ ก็ปล่อยให้มันเก็บข้อมูลไปซัก 1 สัปดาห์ ก็ลองมาเป็น Application ดู โอ้ยข้อมูลขึ้นมาแล้ววววววววววว






จากข้อมูลที่ได้มา ก็คิดว่ามันมีประโยชน์มากๆนะ หลายๆอย่างเป็นข้อมูลที่สำคัญ อย่างเช่น ความต่างศักย์ของแบต (คือถ้าต่ำไปสตาร์ทรถไม่ติดแน่ๆ) ก็โอเคเลย

นอกจากนี้มันยังเก็บ Log การขับรถของเราไว้ให้ด้วยนะ หน้าตาแบบนี้

ซึ่งข้อมูล Log เนี่ย สามารถ Export ออกมาได้ด้วย เผื่อว่าจะเอาไปทำสถิติหรืออะไรก็ว่าไป



Drivebot แหล่มมั้ย

ก็ถือว่าชอบเลยนะ ถ้ามันเตือนเราก่อนที่ปัญหามันจะใหญ่โต เพราะเราก็คงไม่ได้ไป Monitor มันแบบ Realtime ขนาดนั้น ก็ถือว่า Drivebot นี่ตอบโจทย์ได้ดีเลย

แต่ก็ยังมีหลาย Feature ที่เรารู้สึกว่าถ้ามีเนี่ยจะแจ่มมาก อย่างเช่นถ้าสามารถ ดู Log ต่างๆบนเว็บได้ก็น่าจะดี



ข้อมูลเพิ่มเติม
http://drivebot.io/
http://blog.drivebot.io/post/109187824422/the-drivebot-device-sample-from-our-manufacturer?utm_content=bufferf40a7&utm_medium=social&utm_source=facebook.com&utm_campaign=buffer
https://www.facebook.com/drivebotio
https://www.indiegogo.com/projects/drivebot-a-fitbit-for-your-car#/story
https://www.blognone.com/node/61881

วันศุกร์ที่ 22 พฤษภาคม พ.ศ. 2558

ทำให้ Gradle บน Android Studio ทำงานได้เร็วขึ้นกว่าเดิม ด้วย Gradle 2.4



Gradle มันช้า

เอาละ หลายคนน่าจะเจอปัญหาแบบเดียวกันเวลาใช้ Android Studio ทำงาน ว่าทำไมมัน Build ได้ช้าจัง ถึงแม้ว่าจะเปิดใช้ Deamon และ Parallel แล้วก็ตาม



ทำยังไงดีล่ะ 

จริงๆแล้วที่ทำได้เองเลยก็คือ ขั้นตอนมาตรฐานที่ทำกันตอนนี้ก็คือ เปิดใช้ Deamon และ Parallel ตามรูปนี้
เปิดใช้ Deamon และ Parallel


แต่ถึงจะเปิดใช้แล้วมันก็เร็วขึ้นมานิดนึง แต่ถ้าจะเอามากกว่านี้ล่ะ

จริงๆแล้ว คงเหลือแต่วิธีที่ต้องไปบอกคนที่ทำ Gradle ว่า "ช่วยทำให้มันเร็วกว่านี้ได้มั้ย" ซึ่งคนทำก็จะบอกว่า "ทำอยู่ และจะทำต่อไป" (คุ้นๆนะประโยคนี้) จึงได้มาเป็น Gradle 2.4 ที่เค้าเครมมาว่าเวลาที่ใช้ Build เร็วขึ้นกว่าเดิม 20% ถึง 40% เลยทีเดียว [1] ส่วนเรื่องอื่นๆที่ปรับปรุงไปอ่านใน Release Notes เอานะ


ของใหม่ออกมา แล้วยังไงต่อ

ก็เอามาใช้สิครับ รออะไรอยู่
"แล้วทำยังไง"
OK มีขึ้นตอนนิดหน่อยที่จะทำให้ Android Studio เปลี่ยนมาใช้ Gradle 2.4 ตามนี้เลย

ขั้นแรกให้ดาวน์โหลด Gradle 2.4 มาก่อนเลย แล้วจะได้ ไฟล์ zip มา จากนั้นก็แตกไฟล์ zip นี้ แล้วเอาไปไว้ในที่ที่ถูกต้อง ก็คือถ้าติดตั้ง Android Studio บน Mac ตามปกติ ก็จะอยู่ที่
Applications/Andriod Studio.app/Contents/gradle



ตามรูปที่เห็นจะมี Gradle 2.2.1 อยู่ก่อนแล้ว เอาไว้ด้วยกันเลย ไม่ผิดที่แน่นอน ส่วนใครที่ใช้ Windows ตัว Gradle ก็น่าจะอยู่ ภายใต้ Android Studio เหมือนกันนะ ลองดู

จากนั้นเราก็จะมาเซ็ทให้ตัว Android Studio ใช้งาน Gradle 2.4 ละนะ
เริ่มจาก เปิด Android Studio ขึ้นมา แล้วเข้าไปที่ 
Preferences -> Build, Execute, Deployment -> Build Tools -> Gradle
แล้วปรับ Gradle Home ให้ชี้ไปที่ Gradle 2.4 
จากนั้น ก็เปิด Module Settings ขึ้นมา แล้วแก้ Gradle version เป็น 2.4 ซะ ตามรูป



ได้เวลาเปลี่ยนแปลง แรงถึงใจ
เพียงเท่านี้ เวลาเรา Build หรือเวลาที่ Gradle ทำงาน มันก็จะเร็วขึ้น(เค้าบอกมาแบบนี้นะ) หลังจากที่ลองใช้แล้วระยะหนึ่ง พบว่ามันเร็วขึ้นจริงๆ แต่ก็ยังไม่เท่าเจ้าอื่นที่เร็วกว่าอยู่ดี ตรงนี้บางคินอาจจะไม่เข้าใจว่า แค่มันเร็วขึ้นทำไมมันถึงสำคัญ ก็เพราะว่าเวลาทำงานเนี่ยมันก็ต้อง Build ไป Test ไป ถ้ากระบวนการมันต่อเนื่องกัน การทำงานมันก็ลื่นไหลไม่สะดุด แต่ถ้ามีอะไรมาทำให้สะดุด หึหึ เสียรมณ์

โดยรวมแล้วก็ถือเป็นนิมิตหมายที่ดีว่าในเวอร์ชันต่อๆไปมันก็จะเร็วขึ้นได้อีกแน่นอน


อ้างอิง
[1] Gradle 2.4 Release Notes - https://docs.gradle.org/current/release-notes

https://medium.com/@erikhellman/boosting-the-performance-for-gradle-in-your-android-projects-6d5f9e4580b6

วันศุกร์ที่ 1 พฤษภาคม พ.ศ. 2558

Preview notebook Dell Inspiron 5448 เมื่อ Dell ก็ยังคงเป็น Dell

เมื่อ Dell ก็ยังคงเป็น Dell 


พอดีว่ามีเรื่องให้ต้องซื้อโน๊ทบุคใหม่ รอบนี้มีสเป็คง่ายๆ ก็คือ
  • เปิดเครื่องเพื่อทำความสะอาด และอัพเกรดง่าย
  • จอดีหน่อย
  • แรงพอตัวทั้ง CPU, GPU, HDD, RAM
  • หน้าตาเครื่อง เรียบหรู
  • เอา OpenCL

ทีนี้ ณ นาทีนี้เนี่ยที่แรงๆหน่อยมันก็มี Lenovo Y,  Asus G, MSI, DELL ที่พอจะมีของที่พอจะตรงใจ แต่ไม่ 100%
  • Lenovo Y หน้าตาไม่โดน
  • Asus G ศูนย์บริการดาวอังคาร
  • MSI สเป็คไม่โดน
  • DELL แพงเมื่อเทียบกับคนอื่น

ในเมื่อไม่มีที่ดีที่สุด ก็ต้องเอาที่มันใกล้เคียงที่สุด หวยเลยไปตกที่ DELL เพราะ
  • เปิดเครื่องเพื่อทำความสะอาด และอัพเกรดง่าย ผ่าน เพราะขันน็อต 2 ตัว เปิดฝาหลังได้ทั้งแผงเลย สะดวกดี แล้วเห็นหมดทุกอย่างด้วย
  • จอดีหน่อย ไม่ผ่าน เพราะไม่ Full HD + ไม่ IPS
  • แรงพอตัวทั้ง CPU, GPU, HDD, RAM ผ่าน 
  • หน้าตาเครื่อง เรียบหรู ผ่าน
  • เอา OpenCL ผ่าน เพราะ GPU ได้ AMD

ก็โอเคนะผ่าน 4 ข้อจาก 5 ข้อ ถึงราคาจะรู้สึกว่าแพงไปนิดหน่อย แต่ก็คิดซะว่าแลกกับประกันที่ดี ก็รับได้

หลังจากพิจารณา อย่างยาวนาน ก็ได้ DELL INSPIRON 5448 สำหรับสเป็คคร่าวๆก็คือ
CPU: Intel Core i7-5500U (2.40 GHz, 4MB L3 Cache, up to 3.00 GHz)
Graphic: AMD Radeon R7 M270 (4GB GDDR3)
DisplaySize: 14 inch (1366x768) HD
Memory: 8 GB DDR3L  Memory Bus 1600 MHz
Hard Disk: 1 TB 5400 RPM + 8GB SSD (SSHD)
 
 
 


เจาะลึกชิ้นส่วนสำคัญ 3 ชิ้นหลัก: CPU, GPU, HDD ที่ส่งผลกับประสิทธิภาพของระบบ

CPU: Intel® Core™ i7-5500U Processor

Intel® Core™ i7-5500U Processor (4M Cache, up to 3.00 GHz) ตัวนี้ถือว่าเป็นตัวต่ำสุดของ i7 ใน gen5 codename Broadwell ใช้กระบวนการผลิตแบบ 14 นาโนเมตรอย่างเต็มรูปแบบ แต่เมื่อเทียบกับพวก gen4 ประสิทธิภาพก็ดีขึ้นราวๆ 10% ได้

Ref
http://ark.intel.com/products/85214/Intel-Core-i7-5500U-Processor-4M-Cache-up-to-3_00-GHz
http://ark.intel.com/products/family/84979/5th-Generation-Intel-Core-i7-Processors#@All

GPU: AMD Radeon™ R7 M270

R7 m270 นี่ก็ถือได้ว่าเป็นตัว top ของ R7 mobile เลย ประสิทธิภาพนี่ก็คาบเกี่ยวกับ g840m g850m ก็ถือว่าเล่นเกมบนโน๊ทบุคแก้เบื่อได้สบายๆ แถมยังรองรับ API DirectX® 12 ด้วย

Ref
http://www.amd.com/en-us/products/graphics/notebook/r7-m200

HDD

เจ้า Seagate st1000lm014-1ej164 ตัวนี้มันมีดีอยู่ที่มันคือ SSHD: Solid State Hybrid Drive ที่ทาง Seagate เครมมาว่า SSD-like Speed. Large HDD Capacity. An Affordable Price. ซึ่งจาการใช้งานจริงพบว่ามันไวกว่า HDD ธรรมดา แต่ก็ยังไม่เท่า SSD ตามกลไกของมันเอง

Ref
http://www.seagate.com/as/en/internal-hard-drives/solid-state-hybrid/laptop-solid-state-hybrid-drive/#specs
http://hdd.userbenchmark.com/Seagate-Laptop-SSHD-25--1TB/Rating/1804

ทีนี้ก็มาถึงจุดสำคัญคือ ผล Benchmark

เน้นลองกับโปรแกรม 3D เป็นหลักคือ Unigine กับ 3D Mark
และโปรแกรมยอดนิยมอีกตัวก็คือ CINEBENCH


ตรงนี้เพิ่มผลเทียบกันกับ PC ตัวเก่าที่มีอยู่แล้ว โดย System 1 จะเป็น Dell 5448 ส่วน System 2 จะเป็น PC ใช้ AMD 7790
System 1
Platform: Windows NT 6.2 (build 9200) 64bit
CPU model: Intel(R) Core(TM) i7-5500U CPU @ 2.40GHz (2394MHz) x2
GPU model: Intel(R) HD Graphics 5500 10.18.10.3960/AMD Radeon R7 M270 14.301.1002.1001 (4095MB) x1
System 2
Platform: Windows NT 6.2 (build 9200) 64bit
CPU model: AMD FX(tm)-6100 Six-Core Processor (3322MHz) x3
GPU model: AMD Radeon HD 7700 Series 14.501.1003.0 (1024MB) x1

Unigine Valley Benchmark 1.0

# System 1 Settings System 2 settings
Render: Direct3D9
Mode: 1280x720 2xAA windowed
Preset: Basic
Render: Direct3D11
Mode: 1600x900 8xAA windowed
Preset: Extreme
Render: Direct3D11
Mode: 1920x1080 8xAA fullscreen
Preset: Extreme HD
Render: Direct3D9
Mode: 1280x720 2xAA windowed
Preset: Basic
Render: Direct3D11
Mode: 1600x900 8xAA windowed
Preset: Extreme
Render: Direct3D11
Mode: 1920x1080 8xAA fullscreen
Preset: Extreme HD
FPS 20.9 8.1 6.4 43.6 24.7 18.8
Score 876 338 268 1826 1033 788
Min FPS 12.7 5.3 4.0 14.1 11.8 7.9
Max FPS 36.2 14.0 11.2 79.7 45.3 36.0


Unigine Heaven Benchmark 4.0



# System 1 settings System 2 settings
Render: Direct3D9
Mode: 1280x720 2xAA windowed
Preset: Basic
Render: Direct3D11
Mode: 1600x900 8xAA windowed
Preset: Extreme
Render: Direct3D9
Mode: 1280x720 2xAA windowed
Preset: Basic
Render: Direct3D11
Mode: 1600x900 8xAA windowed
Preset: Extreme
FPS 23.7 7.2 69.5 22.1
Score 597 182 1750 557
Min FPS 7.0 4.8 19.2 13.8
Max FPS 44.1 15.0 123.0 49.6

3D Mark

Test Score Graphics Score Physics Score Combined Score
Ice Storm 57554 73162 32951
Cloud Gate 5954 8724 2821
Sky Diver 4624 4500 4840 5386
Fire Strike 1226 1323 4053 473

Cine Bench R15 & R11.5

 
 

เพิ่มผลเมื่อเทียบกับเครื่อง Macbook Pro มาให้ดูด้วย

สรุปคือ

ได้ Notebook งานประกอบดีมา 1 เครื่อง
ประสิทธิภาพ+งาน+ประกัน คุ้มกับราคา 29XXX จริงๆแล้วถ้าราคามัน 26XXX นี่จะเรียกได้ว่าคุ้มสุดๆเลยนะ

วันพุธที่ 5 พฤศจิกายน พ.ศ. 2557

เรามาใช้ GitHub กันนะ นะ นะ




จากคราวที่แล้วเขียนบทความเรื่อง GitHub แบบเบื่องต้นไป วันนี้เรามาเข้าสู่ภาคใช้งานจริงกันเถิด

ปล. ในบทความนี้เราจะไปพูดถึงแล้วนะ ว่า GitHub คืออะไรหน้า ตาเป็นไง ไปตามอ่านในบทความเก่ากันเองเน้อ

ปล๒. จะพูดถึงเรื่องจากใช้งานหลักๆนะ อะไรที่มัน advance มาก ควรไปลุยต่อเอง เข้าใจตรงกันนะ

ขอท้ายความนิดนึงนะ ในบทความที่แล้ว บอกไว้ว่า ตอนนี้ GitHub ออก Tool ที่เป็น GUI มาแล้ว พราะฉะนั้นถ้าใครไม่ชอบแบบ Command Line ก็ใช้ตัวนี้ก็ได้ ความสามารถ ไม่ต่างกัน

OK นะ อย่างที่บอกคือ GitHub นี่คือ Version Control ที่ช่วยเราทำงานอย่างมากมาย ประโยชน์มหาศาล ดังนั้นใครอ่านมาถึงตรงนี้แล้วก็ใช้กันเถอะนะ จะได้ไม่เดือดร้อนลูกหลานนะ

ตอนนี้ผมเข้าใจว่าทุกคนใช้ Commit / Push / Update กันเป็นแล้วนะ

ทีนี้เรื่องของเรื่องคือ ถ้าโปรเจ็คนี้มีคนทำแค่คนเดียว เท่าที่เราทำได้มันก็พอแล้ว แล้วถ้ามีหลายคนล่ะ แล้วถ้าทุกคนต้องการที่จะทำงานบน Repo เดียวกัน Branch เดียวกันล่ะ อืมมมมมมมมมมมมมมมม

1 Repo with X Collaborators

ตรงนี้นะ ก็คล้ายๆการเพิ่มสิทธิ์เข้ามาในตัว Repo คนที่เราเพิ่มเข้ามาก็ทำอะไรได้เหมือนเราเลย ณ จุดๆนี้ ผมนี่บอกเลยว่าต้องทำบนเว็บครับ เข้าไปที่เว็บ GitHub ครับ แล้วเลือกที่ Repo ของเราที่เราต้องการจะเพิ่ม Collaborator นะครับ

แล้วทางขวามือจะมี Menu Setting นะครับ คลิ๊กเลยครับ



ก็จะเข้ามาที่หน้า Setting นะครับ ทางซ้ายนะครับ มีเมนู Collaborators  นะครับ นั่นแหละครับ คลิ๊กครับ



คราวนี้ก็จะเห็นว่ามีช่องให้ใส่ username ที่เราต้องการเอาเข้ามาเป็น Collaborator นะครับ กี่คนก็ใส่ไปเลยครับไม่ต้องเกรงใจ



นั่นแหละครับ เท่านี้เราก็จะไม่เดียวดายอีกต่อไปแล้วใน Project เรา เย่


ต่อมานะครับ พอเรามี Collaborator เยอะๆ ต่างคนต่าง Commit นะครับ นึกภาพนะครับนึกภาพ ถ้ารัว Commit กันนะครับ เราจะรู้มั้ยครับ ว่าใคร Commit อะไร ตอนไหน โอวววววว จริงๆดูจาก History ได้นะ แต่มันไม่เท่ มันจะเท่นะถ้า มี Email แจ้งมาว่า ใคร Commit อะไร ตอนไหน โอววววววชีวิตแสนดี

Notification Email When Commit

ตัว GitHub รองรับความสามารถนี้เรียบร้อยแล้วครับ แต่ชีวิตไม่ง่ายครับ ยังไม่สามารถทำแบบว่าใน Setting ส่งให้ Collaborator คนไหนบ้าง

อ่ะ แล้วยังไงล่ะทีนี้ คือเราสามารถเซ็ทให้ GitHub ส่ง Email แจ้งเมื่อมี Commit ได้ แต่ได้แค่ 2 Email เท่านั้นนะ อ้าว แล้วถ้ามี Collaborator เป็น 10 คนทำยังไงล่ะทีนี้ ก็ต้องใช้ Mail Group สิครับ Group เดียว จะกี่คนๆก็ไหว Group รับได้

ขั้นตอนคร่าวๆก็คือ
1. สร้าง Mail Group
2. เอา Email ของ Collaborator เข้า Mail Group (แนะนำให้ใช้ Google Group)
3. เอา Mail Group ไปใส่ใน GitHub

ง่ายมะ ง่ายยยยยยยยยย แต่ชิวิตจริงไม่ได้โรยด้วยกรีบกุหราบ เพราะทำแค่นี้เหมือนจะพอ แต่ไม่พอ เราต้องเอา noreply@github.com มาใส่ใน Google Group ของเราด้วย


ส่วนขั้นตอนการเอา Mail Group ไปใส่ใน GitHub ก็ดูได้ที่
https://help.github.com/articles/receiving-email-notifications-for-pushes-to-a-repository/ และ
http://stackoverflow.com/questions/7015300/receiving-emails-on-git-push


ส่วนวิธีสมัคร Mail Group ไปลุยกันเองนะ

ปล๓. บทความนี้เน้นให้ลุยเองนะ ไม่บอกหมดแบบ 100%
ปล๔. ขอขอบคุณทุกคนที่อ่านมาจนจบนะครับ











วันอาทิตย์ที่ 7 กันยายน พ.ศ. 2557

มาเจาะลึก ASUS Zenfone 5 (Intel) กัน


พอดีว่าได้เจ้า ASUS Zenfone 5 ตัว 3G 2sims มาครอบครอง ตอนก่อนจะได้มาก็หาข้อมูลพอสมควรว่า มันใช้ CPU ของ Intel นะ ประสิทธิภาพมันเป็นยังไง แล้วใช้ VGA ตัวไหน ปรากฏว่า หาข้อมูลไม่ค่อยได้เลย (ได้แหละ แต่น้อยมาก) ประกอบกับพอมีโทรศัพท์อยู่หลายเครื่อง ก็เลยจะทำการทดสอบเพื่อเปรียบเทียบประสิทธิภาพเครื่อง จะได้รู้กันว่า เจ้า CPU Intel เนี่ยมันประมาณไหน

ปล. จะพูดแต่เรื่องที่ไม่เกี่ยวกับ ตัวเครื่องเป็นยังไง กล้องดีมั้ย เสียงดังฟังชัดมั้ย ...... พวกนี้ไม่พูดนะ มีคนทำรีวิวเยอะแล้ว




ก่อนอื่นก็ต้องมาดูที่สถาปัตยกรรมกันก่อนว่าเจ้า Intel Atom z2560 ที่ทำงานบน Zenfone 5 นี่เป็นยังไง
Essentials
StatusLaunched
Launch DateQ2'13
Processor NumberZ2560
# of Cores2
# of Threads4
Burst Frequency1.6 GHz
Intel® Smart Cache1 MB
Instruction Set32-bit
Instruction Set ExtensionsSSSE3, SSE3, SSE2
Embedded Options Available
No
Lithography32 nm
VID Voltage Range0.3-1.2V (Vcc)

เมื่อพิจารณาดูแล้วจะพบว่านี่มันตระกูล X86 นี่นา ไม่ใช่ ARM แบบชาวบ้านเค้า โอเคอันนี้ไม่เป็นไร ขอให้อัตราการใช้พลังงานต่อประสิทธิภาพมันอยู่ในเกณฑ์ที่จะมาอยู่ในมือถือได้ก็ใช้ได้แล้ว เข้าใจตรงกันนะ

อ้าวแล้วจะมีโปรแกรมอะไรที่ใช้ด้วยกันไม่ได้มั้ย ตอบเลยว่า ก็อาจจะมี แต่โอกาสที่จะเจอ ก็คงราวๆถูกเลขท้าย 3 ตัว ติดต่อกัน 2 ครั้งมั้ง




เข้าเรื่องละนะ

ว่ากันเรื่อง CPU ก่อน
เนื่องจาก ผลการทดสอบที่ออกมาเป็นตัวเลข มันบอกอะไรไม่ได้ 100% ฉะนั้นสรุปสั้นๆเลยว่าประสิทธิภาพของ Intel Atom z2560 เมื่อเทียบกับ Qualcomm Snapdragon 400 และ Qualcomm Snapdragon 600 จะได้ผลคือ

Qualcomm Snapdragon 400 < Intel Atom z2560 <<< Qualcomm Snapdragon 600


ย้ำว่าคะแนนที่เป็นตัวเลขจะประมาณนี้จริงๆ ส่วนเรื่องความรู้สึกนี่มันพูดยากนะ ที่จะบอกว่าลื่นหรือไม่ลื่น มันมีหลายอย่างประกอบกันมากมาย



มาต่อกันเรื่อง GPU
อันนี้แหละที่ถือได้ว่าเด็ดจริง อะไรจริง เพราะเจ้า Intel Atom z2560 นั้นมากับ PowerVR SGX544mp2
ถ้าถามว่าแรงขนาดไหน ก็ต้องเทียบกับพวก Adreno 305 ที่มากับ Qualcomm Snapdragon 400 และ Adreno 320 ที่มากับ Qualcomm Snapdragon 600 ผลก็คือ 

Adreno 305  < PowerVR SGX544mp2 <<< Qualcomm Snapdragon 600

ก็ประมาณเดียวกันกับตัว CPU (แน่อยู่แล้ว) แล้วทำไมถึงบอกว่ามันเด็ด มันเด็ดเพราะว่าเจ้า PowerVR SGX544mp2 ออกมาตั้งแต่ปี 2010 แล้ว แต่ Adreno 320 เนี่ยพึ่งมาตอนปี 2012 ก็นะ เกือบ 2 ปีถึงจะแซงกันได้ แล้วถ้าถามต่อว่า แล้ว VGA ของ PowerVR รุ่นใหม่ๆล่ะ ก็ตัวแรงสุดตอนนี้อยู่ใน iPad Air ไง นั่นแหละแรงสุดละ

ส่งท้ายด้วยผลจาก 3dMark หน่อยละกัน พอเป็นพิธี

ASUS Zenfone 5 + Intel Atom z2560 + PowerVR SGX544mp2









LG Nexus 4 + Qualcomm Snapdragon S4 Pro + Adreno 320











ตารางเปรียบเทียบ

mode / device Asus Zenfone 5 Nexus 4 SONY Z2
ICE STORM 6421 Maxed out! Maxed out!
ICE STORM EXTREME 5712 10832 Maxed out!
ICE STORM UNLIMITED 3615 7037 18504


ทีนี้สิ่งที่ควรกังวลคือ Intel จะออก Kernel ให้ไวขนาดไหน เพราะเรื่องนี้ส่งผลกับความเร็วในการอัพเดท version Android เต็มๆเลย


อ้างอิง

วันศุกร์ที่ 18 กรกฎาคม พ.ศ. 2557

GitHub 3 times โย่



GitHub 3 times โย่


เรื่องของเรื่องคือ ก็ใช้ GitHub มาซักพักใหญ่แล้ว ถึงจะไม่เข้าใจความสามารถทั้งหมดก็เถอะนะ แต่ว่าที่ใช้เป็นอยู่ก็น่าจะเพียงพอที่จะเป็นประโยชน์กับคนหลายๆที่ได้แล้ว






มาเริ่มกันที่ GitHub คืออะไร

GitHub คือ 1 ใน Git
แล้ว Git คืออะไร เอาง่ายๆมันคือ Version Control 

ความสามารถของมันก็ประมาณช่วยการการดูแล และจัดการการเปลี่ยนแปลงต่างที่เกิดขึ้นกับ ไฟล์ที่เราเลือกไว้ คือปกติเวลาเราแก้ไขไฟล์อะไรเราจะรู้ผลลัพท์สุดท้ายอย่างเดียว แต่เจ้า Git เนี่ยมันสามารถจดจำได้ว่าวันไหนเมื่อไรเราทำอะไรกับไฟล์นี้ไปบ้าง

อ่ะ อ่ะ อ่ะ นายคิดเหมือนที่เราคิดมั้ย
ถ้าเราใช้ Git มาเป็นตัวควบคุม เวลาที่เราทำงานกับไฟล์ๆเดียวกัน ที่ละหลายๆคน (งงมั้ย) เจ้า Git เนี่ย จะช่วยให้เรารู้ว่าไฟล์นี้ใครทำอะไรไว้บ้าง ลองนึกภาพดูนะ ว่าเรารู้ตัวการที่ก่อ Bug ได้ อืมมมมมมมมม เข้าท่า



OK เข้าเรื่อง GitHub ดีกว่า

เจ้า GitHub เวลาทำงาน มันก็จะคุมไฟล์ที่เราเลือกไว้ จะไฟล์เดียวหรือหลายไฟล์ก็ได้ เราเรียกทั้งก้อนของไฟล์ที่ GitHub คุมว่า Repository ก็เข้าใจง่ายๆว่าอะไรก็ตามที่อยู่ใน Repository เจ้า GitHub ดูแลให้หมด

ความเจ๋งของ GitHub คือความสามารถ Offline เราสามารถ Commit ได้ในขณะที่ไม่ได้ Online แล้วค่อยไป push แล้วตัว GitHub จะทำการ Merge ส่วนที่เราแก้ไข เข้ากับส่วนของคนอื่นให้เองเลย แต่ถ้ามันงงว่าจะ Merge ยังไงดี มันจะถามเราว่าจะ Merge ยังไง

พอเรารู้ว่ามีคนอื่นมาแก้ไขไฟล์เราก็ pull ลงมา ถ้าไฟล์ที่ pull ลงมามันมีส่วนที่แก้ไข เจ้า GitHub จะทำการ Merge ให้เอา และแน่นอนถ้ามันงง เราก็ต้อง Merge แบบอัตโนมือนะ





Commit, Push, Clone, Merge, Pull
คำเหล่านี้น่าจะเป็นคำหลักๆ ที่ใช้บ่อยๆๆๆๆๆๆๆๆๆๆ มาก ถามว่ามากขนาดไหน ก็เอาเป็นว่าขนาดใช้ Tool แบบ GUI ก็ยังจำได้แบบไม่ยาก





ทีนี้ในเรื่องการใช้งาน

จริงๆแล้วการใช้งาน GitHub จะทำผ่าน Command Line ซึ่ง.....(เข้าใจตรงกันนะ)....
มันก็เลยต้องมีคนทำ Tool ออกมาเป็น GUI ให้ใช้ง่ายๆๆๆๆๆ ขั้นตอนก็ไม่มีอะไรมาก ลองฝึกในเว็บของ GitHub ให้พอเห็นภาพ Commit, Push, Clone, Merge, Pull แล้วก็ใช้ Tool ได้เลย ไม่ยาก เมื่อเทียบกับการหัดใช้ Java หรือ obj C แน่นอน

ตัว Tool ที่เป็น GUI ก็มีทั้งของ GitHub เอง และของเจ้าอื่นๆอีกมากมาย เลือกใช้ได้ตามสะดวกเลยทีเดียว


ใช้ได้ฟรีมั้ย

เจ้า GitHub เนี่ย ใช้ฟรีครับ ฟรี ฟรี ฟรี แต่..... อะไรที่เราเอา Repository ไปฝากไว้กับ GitHub มันจะ Publish นะ ถ้าอยาก Private ต้องเสียเงิน

แต่ แต่ แต่ เราสามารถเปิด Server เองได้ ด้วย GitLab (คนเจ้ากับ GitHub นะ)  เท่าที่รู้ตัวที่ดังที่สุด คือ www.gitlab.com นี่แหละ



ภาคปฏิบัติ

สำหรับ Tool ที่ใช้กับ GitHub เราก็ใช้ Tool ของ GitHub นี่แหละง่ายดี (จริงๆแล้ว มีหลายตัวมาก แต่เลือกไม่ถูก เลยเอาตัวนี้) แต่ว่าหน้าตาของ Tool ที่รันบน Mac กับ Windows มันจะแตกต่างกันนิดๆ แต่ก็เข้าใจได้ไม่ยาก

หลักการใช้งานคือถ้าเรามีโปรเจ็คของเราอยู่แล้วเป็น Folder แล้วเราต้องการเอา Folder ขึ้นบน Repository เราก็จะต้องสร้าง Repository ขึ้นมาใหม่ โดยชี้ Path ไปที่ๆ Folder งานของเราอยู่ แล้วตั้งชื่อ Repository ให้ตรงกับ Folder งานของเรา แล้วตัว Tool จะอ่านไฟล์ทั้งหมดภายใต้ Folder งานของเรา แล้วเราก็จัดการ Commit + Push ได้เลย แต่ต้องไม่ลืมที่จะใส่ข้อความกำกับการ Commit ด้วยนะ ไม่งั้นมันจะไม่ยอม Commit

สำหรับข้อความกำกับการ Commit แค่บังคับว่าต้องมี แต่ก็ไม่มีการกำหนดตายตัวว่าต้องเป็นอะไร ดังนั้นหลักนิยมคือ บอกไปว่าเราทำอะไรไปบ้างก่อนการ Commit นี้ ประมาณนี้


ที่นี้ เรามาดูหน้าตาของ Tool กัน เริ่มที่



Mac OS

โหลดที่ https://mac.github.com/
จะเห็นว่า ใน Repository นี้ (mac.github.com) มีการ Commit โดยคนหลายคน หลายครั้งที่ผ่านมา และยังสามารถบอกได้ว่า การ Commit ครั้งนี้มีอะไรที่เปลี่ยนแปลง






Windows

โหลดที่ https://windows.github.com/
เนื่องการที่คือโปรแกรมที่เอาไว้ใช้งาน GitHub ถึงแม้จะรันบน OS ที่ต่างกัน แต่ความสามารถมันก็แบบเดียวกันนี่แหละ แต่สังเกตุมั้ยว่า หน้าตาโปรแกรมตัวนี้ออกแบบมาตาม Modern Design ที่ Microsoft ภูมิใจนักหนา เดะๆเลย จะว่าไป นี่เป็นโปรแกรมตัวแรกเลยนะ ที่เป็น Modern รันบน Desktop โหมด ธรรมดาได้ ที่ผู้เขียนได้ใช้ (ปกติ App ที่เป็น Modern จะบังคับให้รันใน Modern โหมด)





มาถึงตรงนี้แล้ว

ก็บอกได้เลยว่ามาใช้พวก Version Control กันเถิด ถึงจะบอกว่าทำคนเดียวไม่จำเป็นต้องใช้ แต่อย่างน้อยมันก็ช่วยเรื่อง Backup ได้ด้วย ยิ่งถ้าใน Project มีคนหลายคนอันนี้ยิ่งสำคัญใหญ่เลย

บทความนี้ได้แรงบรรดาลใจจาก
@nuuneoi - http://nuuneoi.com/blog/blog.php?read_id=704