เราจะเป็น Rockstar

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

“I think everybody in this country should learn how to program a computer because it teaches you how to think.” — Steve Jobs, the Lost Interview

ตัวอย่าง Source code ในหนังสือ Objective-C

หลังจากเขียนหนังสือไปได้ ประมาณ 8 บท ( จริงๆแล้ว 7 เพราะบทที่ 6 ยังไม่ได้เขียน ) คิดอยู่นานว่าจะเอา Source Code ตัวอย่างให้ที่เขียนไว้ในหนังสือ ปล่อยให้โหลดด้วยดีหรือเปล่า  เพราะ กลัวว่าผู้อ่านจะโหลดไปแล้วไม่ได้ทดลองเขียน code ด้วยตัวเอง ทำไมต้องกลัวด้วย ? คำตอบผมคือว่า การเขียนโค้ดด้วยตัวเอง มันทำให้เราเข้าใจคุ้นเคยกับความผิดพลาดที่เกิดขึ้นระหว่างเขียนโค้ด ยกตัวอย่างเช่นเกิดคุ้นเคยกับ syntax error  เป็นต้นว่าอาจจะลืมเครื่องหมาย ; ปิดประโยค หรืออาจจะเขียนชื่อตัวแปรผิด แต่ในกรณีที่โหลดโค้ดไปนั่งดู และทดลองคอมไพล์อย่างเดียว เราจะไม่ได้ประสบการณ์การเจอ error เลย ซึ่งการเจอ bug หรือ error มันเป็นเรื่องปกติของการเขียนโปรแกรมากๆ และยิ่งถ้าหัดเขียนโปรแกรมด้วยภาษาที่ไม่คุ้นเคยด้วยแล้ว มันจำเป็นมากที่เราจะต้องคุ้นเคยกับสิ่งเหล่านี้  การเจอ error บ่อยๆจะเป็นประโยชน์ในระยะยาวครับเพราะเมื่อเราคุ้นเคยกับมัน ต่อไปเราก็จะสามารถแก้ปัญหาโปรแกรมที่เราเขียนขึ้นเองได้ นั่นเอง

อย่างไรก็ตามผมก็ตัดสินใจว่าจะเอา source code ให้ download เพราะมันสามารถเป็นตัวเปรียบเทียบ หรือเป็นตัวอย่างในการเรียนรู้ได้ และนอกจากนี้ในบทต่อไป source code จะมีขนาดใหญ่มากขึ้น ถ้าหากจะเอา source code ทุกๆบรรทัดมาเขียนในหนังสือ มันก็จะกลายเป็นเรื่องน่าเบื่อไป ผมจึงต้องตัดเอาโค้ดบางส่วนมาอธิบายและให้ผู้อ่านโหลดโค้ดทั้งหมดไปดูประกอบได้

Source Code ทั้งหมดผมเอาไว้ที่ Git hub ตาม link นี้นะครับ https://github.com/macfeteria/Objective-C-Demo ( ณ วันที่ผมเขียนจะมีแค่บทที่ 8 ส่วนบทที่ 1 – 7 จะตามมาทีหลัง )

สำหรับผู้ที่ไม่เคยใช้ Github มาก่อนผมมีวิธีการโหลด Source code อย่างง่ายๆดังขึ้นตอนต่อไปนี้

Git

เมื่อเปิด link ขึ้นมาก็จะพบกันหน้าเวปดังรูป หลังจากนั้นจะเห็นปุ่มด้านซ้ายมือที่เขียนว่า Zip ( อยู่ใกล้ๆกับ Clone in Mac) เพื่อทำการ  download หลังจากนั้นก็จะได้ source code เป็น zip ไฟล์มาครับ อย่างไรก็ตามวิธีการนี้ เมื่อผมทำการ update code เช่นเพิ่ม source code ของบทอื่นๆเข้าไป ก็ต้องโหลด source zip file ใหม่ครับ ( ดูเวลาได้ครับครับว่า update ล่าสุดเมื่อไหร่ )

ขอให้สนุกกับการเขียนโปรแกรมครับ 🙂

โปรแกรมฟรีที่นักพัฒนาควรมี

บน internet มีโปรแกรมฟรีมากมายและเป็นประโยชน์สำหรับนักพัฒนา Application โปรแกรมฟรีที่จะแนะนำในวันนี้มีหลายโปรแกรมด้วยกัน

VirtualBox
อยากใช้ Windows บนเครื่อง Mac ทำได้ไม่ยากด้วยโปรแกรมจำลองเครื่องหรือ Virtual Machine อย่าง VirtualBox เท่าที่ผมลองใช้งาน ฟีเจอร์บางอย่างอาจจะไม่เทียบเท่า VMWare Fusion หรือ Parallel Desktop เช่นการลากไฟล์ข้ามกันไปมาระหว่าง Host และ Client แต่ในการใช้งานทั่วๆไป VirtualBox ถือว่าทำงานได้ครบครันมากๆครับ ไม่จำเป็นต้องเสียเงินไปซื้อ VMWare Fusion หรือ Parallel Desktop ใช้ของฟรีอย่าง VirtualBox ก็ทำงานได้พอๆกัน

virtual

TextMate
โปรแกรม text editor มีสโลแกนเก๋ๆว่า The missing editor เป็นโปรแกรมแก้ไขเอกสารสำหรับ mac ที่ดีมากตัวหนึ่ง จริงแล้วโปรแกรม TextMate เพิ่งจะปล่อยให้โหลดฟรีตั้งแต่ version 2 และพร้อมกับเปิดเป็น opensource ความสามารถของโปรแกรมนี้มีเยอะมากครับ สาธยายไม่หมด เช่น syntax highlight รองรับกว่า 50 ภาษาตั้งแต่ java , Objective-C , C++ ไปจนถึงภาษาที่เฉพาะทางมากๆอย่าง VHDL โปรแกรม TextMate สามารถเพิ่มเติมความสามารถด้วยการโหลด Bundle เพิ่มเติม ซึ่งก็มีมากมายให้เลือก
textmate

Download https://api.textmate.org/downloads/beta
Source https://github.com/textmate/textmate

TextWrangler
โปรแกรมนี้เป็น text editor อีกตัวหนึ่งที่ได้รับความนิยมมากๆ TextWrangler เหมือนเป็นน้องชายคนเล็กของ BBEdit ก็ว่าได้ เพราะเป็น text editor ที่มาจากบริษัทเดียวกัน  ถ้าเทียบกับ TextMate แล้ว TextWrangler มีฟีเจอร์ที่น้อยกว่า  แต่ TextWrangler จะเน้นออกไปทางการแก้ไขเอกสารพวก Web มากกว่าเพราะมีฟีเจอร์ในการต่อกับ ftp ในตัว

textwrangler

App store  https://itunes.apple.com/th/app/textwrangler/id404010395?mt=12
Download http://www.barebones.com/products/textwrangler/download.html

Cyberduck
โปรแกรม ftp ยอดนิยมสำหรับ mac ตัวนี้ หน้าตา interface ใช้ง่าย ถึงแม้ว่าฟีเจอร์อาจจะเทียบไม่ได้กับโปรแกรมที่ต้องเสียเงินอย่าง Transmit แต่ cyberduck ก็มีทุกอย่างแทบจะครบครัน เช่นการต่อกับ Amazon S3 หรือ Google Drive ก็ทำได้ไม่แพ้โปรแกรมที่ต้องเสียเงินเลย

cyberduck

Download http://cyberduck.ch/

Dropbox
วินาทีนี้ถ้าไม่รู้จัก dropbox คงจะเชยแย่ เพราะ dropbox เป็นบริการฝากไฟล์ ที่ช่วยในการ sync ไฟล์ระหว่างเครื่องทำได้ง่ายมากๆ ไม่ใช่เพียงแค่คอมพิวเตอร์แต่ยังรวมถึง mobile และ tablet อีกด้วย นอกจากนี้การแชร์ไฟล์ยังทำได้สะดวกมากๆ สำหรับนักพัฒนาแล้วการประยุกต์ใช้ dropbox กับ git เป็นอะไรที่เหมาะมากๆครับ

dropbox

Download https://www.dropbox.com/downloading?os=mac

Go2Shell
เป็น utility เล็กๆ ที่ช่วยให้เราไปยัง shell ของ จาก folder ที่เราเปิดอยู่ได้อย่างรวดเร็ว

go2shell

App store https://itunes.apple.com/us/app/go2shell/id445770608?mt=12#

 

Github
client git สำหรับ mac ตัวนี้ออกแบบมาเพื่อการใช้งานกับ github โดยเฉพาะ การใช้งานค่อนข้างง่ายมากๆ เมื่อมีอะไร update ก็จะมี notification แจ้งเตือนให้รู้

github
Download http://mac.github.com/

MAMP

เป็นชุดโปรแกรมสำหรับการสร้าง web server ในเครื่อง mac ของเราครับ ในโปรแกรมจะประกอบโปรแกรมย่อยๆอีกหลายอย่างเช่น Apache , PHP คือโหลดมาลงตัวเดียวก็ใช้งานได้เลย

mamp
Download http://www.mamp.info/en/downloads/index.html

MacHG
ถ้าใครใช้ version control อย่าง mercurial ก็ต้องบอกว่า MacHG น่าจะเป็น mercurial client ฟรีสำหรับ mac ที่ดีที่สุดแล้วครับ

Download http://jasonfharris.com/machg/

SourceTree
เป็น client git และ mercurial ในตัวเดียวกัน
Download https://itunes.apple.com/th/app/sourcetree-git-hg/id411678673?mt=12

Developer Color Picker
เป็น plugin สำหรับ color picker คือเมื่อเราเลือกสีแล้วสามารถกดปุ่ม copy ค่าสีได้ทันทีสะดวกมากๆ เมื่อโหลดมาแล้วจะได้ bundle มาให้นำไปไว้ยัง homeuser/Library/ColorPicker แล้วก็จะใช้ได้ครับ

picker

Download http://panic.com/~wade/picker/

แถมท้ายด้วย โปรแกรมที่เอาไว้ผ่อนคลายหลังจากเขียนโปรแกรมอย่างหนักมาทั้งวันครับ

OpenEmu

โปรแกรมนี้รวม emulator หลายๆตัวเข้าไว้ในโปรแกรมเดียว แต่ต้อง compile source เองนะครับเพราะโปรแกรมยังอยู่ในระหว่างพัฒนา

 

openEmu

 

https://github.com/OpenEmu/OpenEmu

โปรแกรมที่แนะนำไปทั้งหมด เน้นย้ำครับว่า ฟรี ทั้งหมด และส่วนมาก Open Source ลองโหลดมาใช้งานกันดูครับ

Objective-C Programming Chapter 8

หลังจากที่เราได้เริ่มมีพื้นฐานการเขียนโปรแกรมด้วยภาษา Objective-C เช่นการเรียนคลาส ประกาศเมธอด ในบทนี้เราจะก้าวเข้าสู่การใช้งานของ Cocoa Framework ซึ่งเป็นหัวใจหลักสำคัญในการเขียนโปรแกรมด้วยภาษา Objective-C แต่ ก่อนจะเริ่มส่วนที่สองของหนังสือเล่มนี้ เราควรทำความรู้จักกับเฟรมเวิร์ก (Framework) กันสักนิดว่าคืออะไร “เฟรมเวิร์ก” สำหรับ Mac OS X แล้วหมายถึงการนำเอา Library ต่างๆมารวมไว้กัน เหมือนกับการเอาหนังสือเรื่องแสง, แรงโน้มถ่วง และ โมเมนตั้ม มาแพ็ครวมกันแล้วเรียกว่าหนังสือเหล่านี้เป็นหนังสือฟิสิกส์

ถ้ายังจำกันได้ในบทแรกๆ เกี่ยวกับประวัติความเป็นมาของ Objective-C หลังจากที่ Apple ตกลงซื้อ NEXTSTEP ก็ได้นำเอาเฟรมเวิร์กของบริษัท NEXTSTEP มาใช้งานและพัฒนาใหม่กลายเป็น Cocoa ดังนั้นชื่อของคลาสต่างๆเฟรมเวิร์กส่วนมากจึงขึ้นต้นด้วย NS ซึ่งเป็นตัวย่อของ NEXTSTEP นั่นเอง นอกจากนี้แล้ว Apple ยังมีเฟรมเวิร์กอีกตัวคือ Carbon [1] ซึ่งเป็น Framework ของภาษา C แต่ได้หยุดการพัฒนาตั้งแต่ปี 2012 หลังจากออก Mac OS 10.8

สิ่งที่จะเรียนรู้ในบทนี้คือการใช้ Foundation Framework ซึ่งเป็นเฟรมเวิร์กพื้นฐาน เช่นการใช้ตัวเลข สตริง วันที่ หรือ อาเรย์ ในการเรียกการใช้งานเฟรมเวิร์กพื้นฐานนี้สามารถทำได้โดยการใช้ #import <Foundation/Foundation.h> พูดได้ว่าแทบจะทุกโปรแกรมจะต้องรวมไฟล์นี้เข้าไปด้วยเสมอ

Number

ในบทที่ผ่านมา ถ้าหากเราต้องใช้ข้อมูลแบบตัวเลข เราก็จะประกาศตัวแปรให้เป็น int , char , double เป็นต้น ตัวแปรที่เราได้ประกาศไปทั้งหมดนี้เป็นตัวแปรที่เรียกว่า Primitive Type ไม่ใช่ตัวแปรแบบ Object ถึงตรงนี้อาจจะเกิดคำถามในใจว่าแล้วทำไมต้องทำเป็นอ๊อบเจ็กให้ยุ่งยากด้วย ประการแรกก็คือเรากำลังเขียนโปรแกรมเชิงวัตถุ ประการที่สองก็คืออ๊อบเจ็กทำให้เราสามารถส่ง message หาได้ (เรียกใช้เมธอดของอ๊อบเจ็กได้นั่นเอง) ยกตัวอย่างที่พบเห็นง่ายๆเช่น ถ้าต้องการจะเปลี่ยนตัวเลขให้เป็นตัวอักษร เพื่อนำไปใช้งานอย่างอื่น เราต้องเขียนโค้ดเพื่อแปลงค่าจาก int , double , float และอื่นๆให้เป็นตัวอักษร ขึ้นมาเองซึ่งเสียเวลา อย่างที่สามก็คือคลาสอื่นๆในกลุ่มของ Foundation มีการทำงานเกี่ยวข้องกับอ๊อบเจ็ก เป็นต้นว่าถ้าหากจะเก็บตัวเลขหลายๆค่าใน NSArray เราไม่สามารถใช้ตัวแปรแบบ int , float ได้ ต้องเป็นอ๊อบเจ็กเท่านั้น คลาสแรกของ Foundation Framwork ที่จะใช้กันนั่นก็คือคลาส NSNumber ซึ่งเป็นคลาสที่เอาไว้ใช้เก็บค่าตัวเลข
Continue reading Objective-C Programming Chapter 8

New web hosting

เนื่องจากเกิดปัญหาหลายอย่าง เป็นต้นว่าเข้าเวปจากต่างประเทศไม่ได้ คือช่วงนี้อยู่ผมอยู่ ตปท เวลาจะ update อะไรมันก็ทำไม่ได้ ก็ไม่แน่ใจว่าเป็นเพราะอะไรถึงเข้าไม่ได้ สุดท้ายจึงตัดสินใจย้าย host ใหม่เลือกเอาแบบที่มีมาตรฐานสากลเลยละกัน ก็ลงเอยที่ bluehost เพราะว่าเป็น hosting ที่รองรับ wordpress เลย

จากประสบการณ์ครั้งนี้บอกได้คำเดียวว่าโฮสที่เป็น professional มันดีกว่าจริงๆนะ เทียบกับโฮสเก่าแล้วต่างกันอย่างมากๆ เช่นง่ายๆว่าผมจะลง wordpress เนี่ยถ้าเป็นโฮสเก่าต้อง configuration เองหมด ทั้ง database ไหนจะเรื่องความเข้ากันได้กับ php รุ่นใหม่และเรื่อง security ก็ต้องดูแลเอง ส่วนโฮสใหม่แค่กดปุ่มเดียวว่าจะ install ก็เสร็จละ ไม่ต้องไปปรับอะไรมากมาย ราคาอาจจะแพงขึ้นมาหน่อย แต่ระบบจัดการอะไรต่างๆมันง่ายกว่ามาก ถ้าใครคิดจะเช่าโฮสทำเวปแนะนำว่าควรหาโฮสดีๆหน่อยครับ เพิ่มเงินอีกนิดหน่อยได้โฮสดีๆ ไม่ต้องหงุดหงิด และตอนนี้ก็ย้ายเสร็จเรียบร้อยแล้ว แต่อาจจะยังไม่เข้าที่เข้าทางนัก เพราะว่าเปลี่ยนทั้ง theme ใหม่ ให้มันดูง่ายขึ้น แบบเก่าออกแบบเอง จะแก้อะไรเพิ่มอะไรมันลำบาก และหลังนี้คงจะได้เขียน blog สะดวกสะบาย ขึ้นหน่อย 🙂