เปิดซิงด้วย Cocoa Application ด้วย Hello World
ตอนนี้ก็สามทุ่มกว่าๆ แล้ว พักจากการอ่านหนังสิอเตรียมสอบ ก็เลยกะว่าจะมานั้งเขียนบล๊อกต่อ คราวที่แล้วติดเอาไว้ว่าเด๋วคราวนี้จะมาเปิดซิงเพื่อนๆที่ต้องการพัฒนา Mac application ด้วย Cocoa ด้วยการสร้างโปรแกรมแรกนั้นก็คือ Hello World! นั่นเอง งั้นเรามาดูกานก่อนว่าหน้าตาโปรแกรมที่หลังจากทำเสร็จแล้วออกมาจะเป็นยังไง


หน้าตาก็ออกมาเหมือนที่เห็นข้างบนนี้แหละครับ อาจจะดูเป็นโปรแกรมง่าย แต่ผมว่าก็เป็นโปรแกรมที่ดีสำหรับมือใหม่เลยทีเดียวครับ
งั้นเรามาเริ่มกานเลยดีกว่านะครับ
ขั้นตอนที่ 1: Create Project
- เปิด Xcode ขึ้นมานะครับ แล้วเลือก Cocoa Application แล้วทำการสร้าง HelloWorld ขึ้นมานะครับ


- ยังไม่ต้องทำไรทั้งนั้นเลยครับ เราลองกด Build and Run ดูก่อนเลยครับว่าโปรแกรมมันให้อะไรเรามาแล้วบ้าง
จะเห็นได้ว่าหลังจาก run โปรแกรมขึ้นมาแล้ว เราก็จะได้หน้าต่างเปล่า ที่มีหัวว่า HelloWorld ขึ้นมาอันนึง
ขั้นตอนที่สอง 2: Create UI
ในขั้นตอนนี้ ไม่ได้จำกัดตายตัวนะครับว่าเราต้องสร้าง UI ก่อน บางคนถนัดเขียนโค้ดก่อนก็สามารถทำได้นะครับ แต่ว่าในส่วนตัวของผมแล้ว เวลาผมเห้นภาพรวมของโปรแกรมแล้วทำให้ผมนึกออกครับว่าจะเขียนโค้ดยังไง
จากที่เห็นแล้วว่าโปรแกรมที่เราจะทำหน้าตามันออกมาซับซ้อนมากมาย(ตรงไหนหว่า)
ก็จะประกอบไปด้วย Button แล้วก็ Label
Button ทำหน้าที่รองรับ Event ส่วน Label ก็ทำหน้าที่แสดงผลออกมา
- Double click ที่ HelloWorld/Resources/MainMenu.xib เพื่อที่จะเป็น Interface Builder ขึ้นมาทำการสร้าง UI นะครับ
- ลาก Button และ Label ลงไปใน Window
** วิธีการลากนะครับ จากรูปข้างล่างจะมีหน้าต่างที่ชื่อว่า Library อยู่ด้านซ้ายมือ
ที่ล่างสุดของหน้าต่าง Library นี้จะมี search field ให้เราใช้นะครับ พิมพ์คำว่า Button ลงไป แล้วมันจะมี List รูปภาพของปุ่มต่างๆมาให้เราเลือกนะครับ ให้เราลากปุ่มลงมาไว้ในหน้าต่าง HelloWorld ว่างๆ ของเรานะครับ ทำแบบนี้เหมือนกันกับ Label นะครับ
ต่อมาให้เราเลือกที่ปุ่ม แล้วที่หน้าต่างด้านขวาให้เลือกไปที่แทป Button attributes ทำการเปลี่ยน Title
ทำแบบเดียวกันกับ label ครับ

หลังจากที่เราได้หน้าตาเหมือนกับภาพข้างบนแล้วนะครับ เราก็จะเห็นได้ว่าเราต้องเขียนโค้ดยังไงนะครับ
1. เราต้องการ function เพื่อนที่จะมารองรับกับ Event ของการกดเพื่อจะได้แสดงผลคำว่า Hello World! ออกมา
2. เราต้องการ Variable ตัวนึงเพื่อทำการเก็บค่าแล้วไปแสดงผลที่ Label ในหน้าต่างนั่นเอง
ขั้นตอนที่ 3: Coding
- ให้เราสร้าง file objective-c ขึ้นมาให้ File/New file/Objective-C class
- ตั้งชื่อว่า HelloWorld
- ไปที่ HelloWorld.h สร้าง NSTextField ขึ้นมาเพื่อที่จะเก็บค่าให้ Lebel แสดงผล
ต่อมาสร้าง Function ที่ชื่อว่า sayIt เพื่อที่จะลองรับ event จากการกดปุ่ม
#import <Cocoa/Cocoa.h>
@interface HelloWorld : NSWindowController {
IBOutlet NSTextField *text;
}
- (IBAction)sayIt:(id)sender;
@end
<p>
- และทำการ Implement ใน HelloWorld.m ตามโค้ดข้างล่าง
#import "HelloWorld.h"
@implementation HelloWorld
-(id)init
{
[super init];
text = [[NSTextField alloc] init];
return self;
}
- (IBAction)sayIt:(id)sender
{
[text setObjectValue:@"Hello World!"];
}
@end
เพียงแค่นี้ในส่วนของตัวโค้ดก็ทำงานได้แลัวครับ ที่นี้เราก็เหลืออีกนึงขั้นตอนซึ่งเป็นขั้นตอนสุดท้ายนั้นก็คือการทำให้ UI และ Code ของเราทำงานสัมพันกันครับ
ขั้นตอนที่ 4: Make Connection
- เรามาทำการสร้าง Instance ของ HelloWorld object ที่เราเพิ่งสร้างไป ให้กับ UI เราได้รู้จักกันก่อนครับ
ทำแบบเดียวกันกับการลากปุ่มเลยครับ แต่ว่าให้เราพิมพ์ค่าว่า NSObject ใน search box ของ Library
แล้วลาก Object ลงไปที่ Doc Window ของ MianMenu.xib English ครับ
แล้วทำการกำหนด Class ให้กับ Object ตัวที่เราเพิ่งลากมาให้เป็น HelloWord ที่เราสร้างรอไว้แล้วในโค้ดครับ

- ต่อมาเราใช้ กำหนด Action ให้กับปุ่มนะครับว่าถ้าพอเรากดปุ่มเนี้ย ให้ไปเรียก Function ที่ชื่อว่า sayIt
ให้เรากด Control key ค้างไว้แล้วเอา mouse ลากจากปุ่ม Say it! ไปที่ Hello World Object ของเราครับ
แล้วให้เราเลือก sayIt ครับ
- ต่อจากนั้นให้เราทำการ Control ลากจาก Hello World Object ของเราไปที่ Label นะครับแล้วทำการเลือก text
เพื่อที่เราจะต้องการให้ Lebel แสดงผลของ text ออกมา
ลอง Save แล้ว Run จาก Xcode ดูนะครับ ถ้าไม่มีอะไรผิดพลาดเราก็จะได้โปรแกรมแบบที่เห็นในรูปแรกนะครับ
** ในคราวนี้ผมขอยังไม่อธิบายลงลึกในรายอะเอียดเกี่ยว Structure ของโค้ด หรือ การใช้ Interface Builder มากนักนะครับ เพราะว่ามันเหนื่อย ฮาๆๆ
ไม่ใช่นะ เพราะว่ามันจะลากยาวเกินไป ตอนนี้แค่อยากให้ลองสร้างโปรแกรม รู้ Flow คราวๆ กันก่อน แล้วไว้เดียวคราวหน้าค่อยมาลงรายละเอียดกันอีกที
ถ้ามีขั้นตอนไหนผมอธิบายไม่ชัดเจน comment กันมาได้นะครับ
การเตรียมความพร้อมก่อนสร้าง Cocoa Application
หลังจากคราวที่แล้วที่เกรินนำเรื่อง มารู้จัก Cocoa คืออะไรแล้ว สิ่งต่อมาที่เราควรจะรู้ในการสร้าง Cocoa Application นั้นก็คือ 3 สิ่งนี้ครับ
1. Tools
2. Language
3. Frameworks
หลังจากที่เราเรียนรู้สามสิ่งนี้แล้ว เราก็จะได้ไอเดียภาพรวมว่าจะเขียน Cocoa App ขึ้นมาสักอันนึงเนี้ยจะต้องเริ่มยังไง
TOOLS:
สำหรับเครื่องมือที่ใช้ในการ Develop Cocoa App นั่น จะมาพร้อมกับ Mac OS X Developer Tools ซึ่งจะอยู่ในแผ่น Install ของ OS X ครับ หลังจากที่ Install ไปแล้วมันก็จะลงโปรแกรมให้เราเยอะแยะเลยครับ แต่ว่าที่เราจะใช้หลักๆ เลยในการ Develop นั้นก็คือ
Xcode: ก็คือ IDE นั่นเอง เหมือนพวก eclise, netBeans ทั่วไปครับ แต่มี environment ที่เหมาะในการสร้าง Cocoa app ครับ
Interface Builder: ไว้ใช้ในการสร้าง GUI ครับ เช่นพวก Windows, Buttons etc…
* ทั้งสองตัว จะทำงาน Link กันอยู่ตลอดเวลาเรา develop ครับ
ส่วนด้านหลังนั้น ก็จะมี GNU C compiler และ GNU Debugger ค่อย compile และ debug ครับ
LANGUAGES:
สำหรับภาษานั่น ในการ Develop Cocoa Application เราไม่ได้จำกัดอยู่แค่ภาษาได้ภาษาหนึ่งครับ เราสามารถพัฒนาด้วยภาษา Ruby หรือ Python ก็ได้ แต่โดยส่วนมากแล้วจะใช้ Objective-C ครับ
อย่าเพิ่งตกใจว่า Objective-C คืออะไร อย่าเพิ่งไปกังวลครับ ไอ้เจ้าภาษาเนี้ยไม่ได้เป็นภาษาใหม่อะไรเพียงแต่ว่ามัน extend มาจาก C เท่านั้นเอง แล้วทำเพิ่มในเรื่องของ Object Oriented ลงไปให้ C เพราะเหตุนี้มันก็เลยชื่อว่า Objective-C นั่นเอง ดังนั้นใครที่มีพื้นฐาน C, C++, Java ก็สบายโลดเลยครับ
FRAMEWORKS:
สุดท้ายแล้วที่ขาดไม่ได้ก็คือ Framework ที่จะใช้พัฒนาครับ สำหรับคนที่ไม่เข้าใจว่า framework คืออะไร ผมจะอธิบายให้สั้นๆ นะครับ
เจ้า Framework เปรียบเทียบง่ายๆ ก็เหมือนที่ขายฟอร์นิเจอร์ Built-in นั่นเอง เช่นเราอยากได้ห้องนอน เราทำยังไงครับ เราก็ไปที่ Index living mall (ไม่ได้โฆษณานะ ยกตัวอย่างเฉยๆ) แล้วเราก็เลือกเลยครับว่าจะเอาเตียง โคมไฟอะไรแบบเนี้ย ซึงเราไม่ต้องไปนั้งบอกช่างให้ทำเอง กว่าจะทำเสร็จอ่ะมันนาน
สรุปเป็นภาษาทาง software ก็คือ framework นั่นคือ Class หลายๆคลาสมารวมกันเพื่อที่จะทำงานให้ตรงกับวัตถุประสงค์ โว้ววๆๆๆ
แม่งยากเน๊อะ ขออีกทีสรุปแบบของผมดีกว่า framework ก้อคือ Index Living Mall นั่นเอง เวลาอยากจะสร้างบ้านสักหลังนึงก็ไปซื้อฟอร์นิเจอร์มาใส่ได้เลย :p
การที่เราจะพัฒนา Cocoa Application ได้นั้น มี Frameworks ที่เราต้องใช้อยู่ 3 Frameworks ด้วยกัน
1. Foundation: ก็คือ Framework พื้นฐานที่เราใช้กันอยู่ทุกวันครับ เช่น String, Array, Number. …
2. AppKit: เป็น Framework ที่ใช้ในการสร้าง UI ครับ เช่น Windows, Buttons, ….
3. Core Data: ตัวนี้เป็น Framework ที่ใช้จัดการกับ layer ด้านล่างของ Cocoa Application ครับ เช่น Save, Load Memory, ….
อันที่จริงแล้ว ยังมี framework อีกมากมายให้เราได้เลือกใช้การ ก็เหมือนชีวิตจริงแหละ ห้องนอนอาจจะมาจาก Index Living Mall หรือน้ำอาจจะมาจาก SB ห้องนั้งเล่นมาจาก บุญถาร แต่ว่าหลักแล้วก็คือ 3 ตัวที่ได้กล่าวถึงมานั้นเอง
ที่มา Cocoa programming for Mac
คราวหน้าเราจะมาลองเปิดซิง Cocoa Application แรกของเราด้วย Hello World กัน
ประโยชน์ชอง Enumerator ใน Rails
อันนี้เป็นเกล็ดเล็กน้อยๆ ที่ผมเคยใช้ใน Model นะครับ
ยกตัวอย่างเช่นถ้าเรามี Column “Flag” อยู่ใน Modle Message
เรากำหนดให้
ถ้า Flag Status เป็น
0 = not delete
1 = deleted
2 = …..
ประมาณนี้นะครับ เพราะฉะนั้นเวลาเราเขียนโค้ดก็จะทำให้โค้ดของเราอ่านยาก
Message.update_atrribute(:flag, 1)
ซึ่งเวลาที่คนอื่นมาอ่านโค้ดเรา ก็จะไม่เข้าใจว่า 1 คืออะไร
ในการใช้ Enum เข้ามาช่วยนั้น เราจะใส่ Enum ไว้ในส่วนของ Model ครับ
class Message < ActiveRecord::Base # Set Enum for flag column NOT_DELETE = 0 DELETED = 1 ..... end
หลังจากนั้นเวลาเราเรียกใช้ใน controller เราก็จะสามารถเรียกได้แบบนี้ครับ
Message.update_atrribute(:flag, Message::DELETED)<br />
ที่นี้เวลาใครมาอ่านโค้ดเรา ก็จะสามารถที่จะเข้าใจได้เลยว่า set flag ให้เป็น deleted นั่นเอง
มารู้จัก Cocoa คืออะไร
ต้องเกรินไว้ก่อนเลยนะครับว่าข้อมูลที่ผมได้มาทั้งหมดเนี้ย ได้มาจากการอ่านหนังสือเล่นนี้ครับ Cocoa programming for Mac
ประวัติศาสตร์
ย้อนไปเมื่อสมัยก่อนครั้งที่นาย Steve Jobs หรือที่เรารู้จักกานในในนามของผู้ก่อตั้ง Apple Computer มีปัญหากับ นาย John Sculley
ซึ่งเป็นคนที่ Jobs จ้างมาเพื่อเป็น CEO ของ Apple ในสมัยนั้น ทำให้นาย John นั่นได้ใช้อำนาจย้าย Jobs ให้ไปดูแลในแผนกที่เขาไม่มีอำนาจในการควบคุมทิศทางของบริษัท เรื่องราวครั้งนั้นเป็นเหตุให้ Jobs ต้องหนีออกจากบริษัทที่ตัวเองสร้างมากับมือ แล้วไปตั้งบริษัทใหม่ในนามว่า NeXT Computer
NeXT ได้เริ่มจ้างทีมวิศวะกรเล็กที่มีประสิทธิภาพเข้ามาทำงาน และทีมเล็กๆนี้เองก็ได้สร้างสรรค์สิ่งต่างๆขึ้นมามากมายภายใต้ NeXT เช่น
Operating System, Printer, Development tool etc. แต่ละชิ้นที่ NeXT ทำการสร้างขึ้นนั้น เรื่องของเทคโนโลยีนั้นไม่ต้องพูดถึง เรียกได้ว่าในสมัยนั้นล้ำหน้ากว่าเทคโนโลยีอื่นๆไปมาก แต่ว่า NeXT Computer ก้อไม่ประสบผลสำเร็จในยอดขาย ทำให้ในปี 1993 บริษัทต้องปิดตัวลงไป แล้วเปลี่ยนชื่อจาก NeXT Computer ไปเป็น NeXT Software แทน
ต่อมาเมื่อเปลี่ยนชื่อบริษัทมาเป็น NeXT Software แล้วนั้น (ในความคิดส่วนตัวของผมเอง ผมคิดว่า Jobs คงมุ่งเป้ามาที่ การพัฒนา Software อย่างเดียวแทน ) ก้อได้มุ่งมาพัฒนา Operting System และ Development tools และจำหนายภายใน brand ที่ชื่อว่า NeXTSTEP นั่นเอง ** ผมขอนอกเรื่องนิดนึง เพื่อเป็นเกล็ดความรู้ สำหรับคนที่เคยผ่านตา Objective-c มาบ้าง อาจจะส่งสัยว่า ทำไม class ใน Objective-c นั้นจะต้องนำหน้าด้วย NS อย่างเช่น NSString, NSArry, .. ไอ้เจ้า NS นั้นก็ย่อมากจาก NeXTSTEP นั่นเองครับ ** มาว่ากันต่อ แต่ว่าในสมัยนั่นคนธรรมดาทั่วไปก็จะไม่ค่อยรู้จัก OS หรือ IDE ของ NeXTSTEP สักเท่าไหร่ จะเป็นที่นิยมแพร่หลายให้หมู่ของพวกนักวิทยาศาสตร์มากกว่า เป็นเพราะว่า OS และ IDE ของ NeXTSTEP ในสมัยนั่นสามารถที่จะ Implement idea ในการ Develop application ได้เร็วกว่าเทคโนโลยีอื่นๆ ที่มีในสมัยนั้น
เจ้าตัว OS ที่ NeXT ทำในตอนนั้น NeXT ได้ตัดสินใจที่จะใช้ Unix เป็น core ด้วยเหตุผลที่ว่า Unix นั้นเป็นระบบที่เสถียรมากกว่า Microsoft Window และ Mac OS ในสมัยนั่น และยังมีประสิทธิภาพในด้วยของ Networking อีกด้วย ต่อมา NeXT ได้ทำการเขียน Window server ขึ้นมาเพื่อให้ OS ของตัวเองนั่นสามารถที่จะเป็นตัวส่ง events ต่างๆที่ถูกส่งมาจาก user ไปให้กับ application ใช้ในการประมวณผล และในทางกลับกัน application ก็จะทำการส่งผลลัพธ์ที่ได้กลับไปให้ window server แสดงผลให้กับ user นั่นเอง
หลังจากนั้นไม่นาน NeXTSTEP ก็ได้ทำการสร้าง Set of libraries และ Tools ขึ้นมาเพื่อที่จะให้โปรแกรมเมอร์สามารถที่จะสร้างและจัดการกับ window manager ได้อย่างง่าย ไอ้เจ้า Libraries ตัวนั้นเองได้ถูกตั้งชื่อว่า Frameworks ในปี 1993 และต่อมาได้เรียกรวมระหว่าง Libraries กับ Tools ว่า OpenStep หรือที่รู้จักกันที่ในนามของ Cocoa ในปัจจุบัน
**ส่วนตัวของผมยังใหม่กับ OS X อยู่มาก เพราะเพิ่งมาเริ่มใช้ตอนเป็น 10.5 แล้ว แต่หลังจากอยู่กับมันมา 1 ปีเต็มทำให้ผมรักมันเข้าแล้ว
ขอบคุณพี่มาย Rails dev. แห่ง safecoms ทีเป็นแรงบรรดาลใจให้ผมหั่นมา develop on Mac
ในตอนต่อไปเราจะมาพูดถึงการเตรียมความพร้อมก่อนที่จะเริ่มสร้าง Cocoa application กัน
Have fun with WhenURnotAround
iPhone on Rails
ช่วงนี้นั้งลงศึกษา iPhone อย่างจริงจังเพราะทนกระแสความแรงไว้ไม่อยู่
ก่อนอื่นก็ต้องไปนั้งศึกษา Objective-C กานสักพักนึง ( เด๋วไว้วางๆจะมากเขียน Objective-C tutorial)
วันนั้นนั้งฟัง podcast ที่ rails envy podcast #66 เห้็นว่ามีคนทำ library ของ iPhone ออกมาเพื่อที่จะใช้ต่อกับ Rails application
เจ้าตัวนี้มันมีชื่อว่า ObjectiveResource ครับ (เข้าไปดาวโหลดกันได้ที่นี้ครับ iPhone on Rails )
เจ้าตัวนี้มันทำงานยังไง?
- ก่อนอื่นเลยเราจะต้องมี (Restful) web service ที่ provided ข้อมูลที่เราต้องการไว้ ไม่ว่าจะเป็นใรูปของ XML หรือ JSON
- จากนั้นตัว lib ที่เราโหลดไปใส่ไว้ในโปรเจคของไอโฟน จะทำหน้าที่สร้าง connection และทำการ อ่านข้อมูลจาก XML หรือ JSON
หลังจากที่ลองใช้ดูแล้ว ผมว่าเจ้า library ตัวนี้ใช้ได้ดีทีเด๋วเลยแต่่ว่ามันสร้างมาเฉพาะกับ app ที่ทำการ route แบบ rest เท่านั้น
ถ้า app ของเราทำการ route แบบ default แล้วละก็ เราก็คงจะต้อง modify ตัว library เอาเองครับ ( ไม่มีอะไรซับซอนมากครับ ผมลองโมดูแล้ว )
One Sweet Day @ Taco
1. เหนื่อยๆ ขอพักหน่อย
2. ขอเป็นนางแบบสักวัน

3. ได้เวลาวางมือ
4. ยังมันส์อยู่

5. อีกคนเพิ่งกลับมาเมืองไทย
6. อีกหนึ่งกำลังจะจากเมืองไทย


ช่วงเวลาดีของคนสองคน เราก็ควรที่จะเก็บมันเอาไว้ในความทรงจำตลอดไป
How to start writting iPhone apps?
1. Go to => iPhone dev center
2. get your account
3. Download an iPhone SDK (about 1.7 gb)
4. Install iPhone SDK.
5. Open Xcode.
- In this step your startup page of your Xcode will change it to something like this

Now you’ll be ready to go….
Next I will tutorial you a little app in iPhone. you can also see a lot of example from iPhone dev center
WALL E + EVE hard drive icons
หลังจากเอาหนังมาล่อตาล่อใจกานไปนาน ตอนนี้เค้าปล่อยไอคอนสวยๆมาให้ download กันแล้วนะครับ
ที่นี้เลย WALL E + EVE

ที่มา: http://www.macmerc.com
When You Are Not Around
ไม่เคยรู้สึกแบบนี้มาก่อน เหงาเหมือนกานนะ คิดถึงนะตัวเอง
หม่งเหม่งหนีไปเรียนภาษาทีออสตั้งสามเดือนแนะ เมื่อไรจะได้เจอเนี้ย
