ปลายจมูก

วันนี้มีเรื่องเกิดขึ้นครับ ระหว่างที่ผมกำลังเข้าแถวแลกเหรียญเพื่อซื้อตั๋ว BTS อยู่ๆก็มีชาวต่างชาติเข้ามาถามผมว่าไป MBK ไปทางไหน เอาละสิครับ คนมีเป็นล้านดันถามคนภาษาอังกฤษโง่ๆอย่างผม แต่ด้วยอะไรเข้าสิงไม่รู้ ก็ดำน้ำตอบเขาไป เพราะคิดว่าพูดไม่รู้เรื่องเลยยอมออกจากแถว พาไปซื้อตั๋วแล้วส่งถึงทางเข้าเลย บอกเสร็จสรรพว่าลงสถานีไหน

…เรื่องเหมือนจะจบแต่ไม่จบ เพราะบอกผิดว่าให้เขาไปลงสถานีสนามกีฬา แต่บอกให้เปลี่ยนรถที่สยาม งานเข้าครับ จะไปถึงได้ยังไงหล่ะ ก็เลยรีบซื้อตั๋วตามขึ้นไป ก็เจอพี่แกพอดี จังหวะนี้ลืมเกร็งแล้วครับ ใส่ไฟแลบเลย “โทดครับ เมื่อกี้บอกผิด ต้องไปงี้ๆๆๆๆครับ”

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

ประเด็นของบลอกเอ็นทรีนี้อยู่ตรงที่ เขาเล่าว่า “เขาเป็นคนสเปน เป็นอาจารย์สอนประวัติศาสตร์ มาเที่ยวเมืองไทยช่วงปิดเทอมของโรงเรียนที่สเปน เขาได้มาเที่ยวเมืองไทย เขาประทับใจมาก มองไปทางไหนๆก็สวยไปหมด หยั่งกะอยู่ในนิวยอร์ค อาหารก็อร่อย คนก็ใจดี ไปไหนมาไหนทักทายใครก็ยิ้มทักตอบ ลำบากก็มีคนให้ความช่วยเหลือตลอด ลองมีโน่นมีนี่ให้ชิมตลอด ก่อนหน้านี้เขาไปกันพูชามา มันคนละเรื่องกันเลย ที่นั่นแย่มากๆ ทุกๆที่เลย ไม่เหมือนที่นี่เลย เขาคิดว่ากลับไปสเปนครั้งนี้คราวหน้าต้องกลับมาเที่ยวไทยแน่นอน และคราวนี้จะชวนภรรยาของเขามาด้วย” หลังจากนั้นผมก็ต้องลงจากรถแล้ว เพราะถึงสถานีสยามแล้ว ส่วนเขาจะไป MBK ผมให้ลง สนามกีฬาไปเลย เพราะแน่ใจว่าเขาไม่หลงแน่ๆ

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

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

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

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

1 comment กรกฎาคม 27, 2009

ไม่โปรโมตไม่ได้แล้ว Super Kute

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

จากนี้เป็นข้อความที่คนโพสเขียนไว้นะครับ

ชื่อวง Super kute แปลว่า “โคตรน่ารัก” บอยแบนด์ของเขมร นี่น่ารักสุดๆแล้ว??? – -”

คนซ้ายภาพล่าง ถ้าพี่แกไม่มีหูนี่เหมือนปลาไหลเลย -*-
2คน ทั้งด้านซ้ายและขวายืนประกบ เน้นคนกลางให้เด่น

อันนี้เป็น Comment

BY Mirindaman :

ถ้าเล่นดนตรีเป็นวงแต่ แต่งตัวแบบนี้ ไม่ผิดหรอก แต่ถ้าบอยแบนนนะ

แนะนำ

เปลี่ยนจากบอยแบน เป็น หน้าแบน โอเคก่านะ

…เป็นอย่างไรกันบ้างครับ ดนตรีของประเทศเพื่อนบ้านเรา น่าสนใจมั้ยครับ หุหุ …

4 comments กรกฎาคม 7, 2009

iPhone Train Center

ตอนนี้เห็นหลายๆคนถามผมว่า “รับ Train เขียน App บน iPhone มั้ยครับ” ซึ่งถ้าเป็นเมื่อก่อน(ที่ยังไม่ได้ทำงานประจำ)ก็คงจะรับ Train อยู่ แต่ตอนนี้ทำงานประจำแล้ว ก็คงต้อง “จำใจไม่รับ Train นะครับ” ต้องขออภัยจริงๆ เอาเป็นว่าผมเองก็คงช่วยได้จากการเขียนโพสเป็นหัวข้อใน Blog นี่ละกันนะครับ มีปัญหาอะไรก็โพสเข้ามาถามกัน จะพยายามช่วยหาคำตอบมาให้นะครับ อ้อ ถามใน www.i-gee.co.cc นะครับ เวบนั้นผมอยากให้มันเป็นศูนย์รวม iPhone Dev จริงๆ(ส่วนเรื่อง url ไว้จะเปลี่ยนมันทีหลังนะครับ)

จากหัวข้อเรื่อง ก็คือตอนนี้ถึงผมจะไม่ได้รับ Train iPhone Programming แต่ตอนนี้ก็มีที่ที่รับ Train นะครับ คือที่ทรู ตอนนี้เริ่มเปิด Training สำหรับผู้สนใจพัฒนา App บน iPhone แล้วนะครับ รายละเอียดดูได้ที่ http://www.trueappcenter.com/ โดยสิ่งที่ต้องมีคือ Mac (จริงหรือเถื่อนก็ได้ครับ) กับความรู้เรื่อง Objective-C สำหรับคนที่อยากได้ Training Course ถ้าสนใจก็ลองติดต่อไปทางทรูได้ครับ

ส่วนใครอยากศึกษากับผมก็ Train กันผ่าน Blog ก็แล้วกันนะครับ :P

Add comment มิถุนายน 24, 2009

Book Review : อัจฉริยะสร้างสุข

ออกมาอีกแล้วสำหรับหนังสือซีรี่ส์ “อัจฉริยะ” ของคุณ “หนูดี วนิษา เรซ” โดยคราวนี้โฟกัสกันด้วยเรื่องของ “ความสุข” โดยเนื้อหาก็จะแนวเหมือนๆกับเล่มก่อนๆ ที่ออกเป็น ทฤษฎีที่อ่านแล้วเข้าใจได้ง่ายๆ เกี่ยวกับกลไกของสมอง ตามด้วยเรื่องราวเกี่ยวกับความสุขในรูปแบบต่างๆ บอกเล่าผ่านประสบการณ์ของคุณหนูดี ที่ำได้จากการเรียนที่มหาลัย ฮาร์วาร์ด กับอาจารย์ผู้มีชื่อเสียงหลายๆคน

คนเก่งแล้วจะมีความสุขหรือเปล่า คนไม่เก่งจะไม่มีความสุขรึไม่ การมีความรักอย่างมีความสุขทำอย่างไร คู่มือการใช้ชีวิตให้ทุกๆวันมีความสุขแบบที่มีหลักฐานทางวิทยาศาสตร์และงานวิจัยอ้างอิงสไตล์คุณหนูดี จะมาช่วยให้คุณมีความสุขในทุกๆวันธรรมดา

จากที่ผมอ่านแล้ว หนังสือเล่มนี้เชื่อมโยงกับหนังสือหลายๆเล่มที่ผมเคยอ่าน อย่างเช่น The Secret, เข็มทิศชีวิต 2 หรือแม้แต่เล่มที่ยังไม่ได้อ่านอย่าง “วิชาสุดท้ายที่มหาวิทยาลัยไม่ได้สอน 2″ ผมมองว่ามันคือเี้รื่องเดียวกันเลยนะครับ ต่างกันในแง่ของการอธิบายเท่านั้นเอง

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

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

Spoil : The Secret เหมือนกันตรงเรื่องของการกล่าวขอบคุณกับสิ่งรอบๆตัว ส่วน เข็มทิศชีวิต 2 เหมือนกันตรงเรื่องการเรียนรู้ความทุกข์ เหตุการณ์ที่เกิดขึ้นเกิดเพื่อให้เราเรียนรู้ (เหมือนเป๊ะเลย ไม่รู้คุณหนูดีอ่านเหมือนกันรึเปล่า)

1 comment มิถุนายน 9, 2009

ดูหนังบนไฟล์ .nrg Disk Image

เคยไหม กับการดาวน์โหลดหนังมาอย่างยาวนาน แต่ไฟล์ที่ได้กลับเป็นไฟล์ Image ซะอย่างงั้น ไฟล์ Image ที่ว่าหมายถึงไฟล์ที่ใช้สำหรับโปรแกรมไรท์แผ่นนะครับ ไม่ใช่ไฟล์รูปภาพ ถ้าเราไม่มีแผ่นเปล่าหล่ะ หรือไม่อยากไรท์หล่ะ หรือใช้ OS อื่นที่เปิด Format นั่นมันไม่มีโปรแกรมเปิดหล่ะ หรือเรายังอยากจะปล่อยไฟล์นั้นไว้สำหรับ Seed ใน Bittorent หล่ะ เหตุผลร้อยแปดที่เราอยากจะดูหนังจาก Disk Image ซะให้ได้

ไฟล์ Disk Image จะมีอยู่หลายนามสกุลครับ แต่ที่เจอบ่อยจะเป็น .iso, .nrg หรือนามสกุลอื่นๆ (นึกไม่ออกแล้ว) วิธีการมีง่ายๆครับ ถ้าใช้งานบนวินโดวส์ ก็ใช้โปรแกรม Daemon Tool สร้างไดรฟ์ CD จำลองแล้วแล้ว Mount ข้อมูลจาก File disk image ก็เป็นอันโอเคแล้ว

แต่ผมดันใช้แมคน่ะซิครับ แต่ไม่เป็นปัญหา ผมมีวิธีง่ายกว่านั้นอีก คือ ถ้าไฟล์ฟอร์แมตเป็น .nrg ก็ใช้วิธีการ เปลี่ยนนามสกุลมันซะ ให้เป็น .iso จากนั้นเปิดด้วยโปรแกรม VLC ทั้งแบบที่เป็น .iso นั้นซะเลย VLC ก็สามารถหาโหลดได้ฟรีครับ บนวินโดวส์หรือ Linux ก็คิดว่าทำได้เช่นเดียวกัน เพราะ VLC มีทั้ง 3 Platform ครับ

* Update : ไม่ต้องแปลงนามสกุลก็ได้ เปิดทั้งเป็น .nrg เลยก็ได้ วู้ว สุโค่ย

Add comment พฤษภาคม 11, 2009

การเปลี่ยนแปลง – บอย Peacemaker

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

วันนี้มี MV ตัวใหม่ของพี่ Boy Peacemaker MV ตัวนี้เป็นอะไรที่ดีมากทั้งเนื้อหาและตัว MV เพิ่งออกมาได้ไม่กี่วันเอง(มั้ง) เพลงนี้เป็นเพลงเกี่ยวกับมุมมองความรัก ที่บอกว่าความรักที่แท้จริงคือการเป็นผู้ให้ ไม่ใช่เป็นผู้รับ ประมาณว่า “ยิ่งให้ยิ่งได้รับ” นั่นแหละครับ มันก็เป็นเรื่องจริงของยุคสมัยนี้นั่นแหละครับ การได้เป็นผู้ให้มีความสุขการเป็นผู้รับจริงๆ ถ้าสังคมเราเป็นสังคมที่มีแต่การให้(อย่างจริงใจ) มันคงจะน่าอยู่กว่านี้เยอะเลย

ไม่อยากเขียนให้ยาวกว่านี้ครับ จะกลายเป็นซีเรียสซะเปล่าๆ เอาเป็นว่าดู MV นี้แล้ว ลองเริ่มการเป็นผู้ให้กันดีกว่าครับ แล้วจะพบว่าความสุขของการให้มันเป็นยังไง

Add comment เมษายน 25, 2009

ย้ายบ้านแล้วครับ

ตอนนี้เนื้อหาของ iPhone Development ผมย้ายไปเขียนที่ http://www.i-gee.co.cc แล้วนะครับ สำหรับคนที่สนใจเกี่ยวกับการเขียนโปรแกรมบน iPhone ที่เคยอ่านจากที่นี่ก็ตามไปอ่านกันได้นะครับ

เนื้อหาเกี่ยวกับ Cocoa Development ผมก็จะย้ายตามไปทีหลังนะครับ รวมถึงในเวบใหม่นี้ ผมจะพยายาม Tips หรือสิ่งที่น่าสนใจเกี่ยวกับการใช้เครื่อง Mac หรือ iPhone มาเขียนเพิ่มเติมกันด้วย

ส่วน Blog นี้ก็จะมีสถานภาพเป็นเวบส่วนตัวของผมเช่นเคยครับ โพส MV หรือ พูดเรื่องสัพเพเหระ ไปเหมือนเมื่อก่อน คงยังไม่ปิดนะครับ

ขอฝากเวบใหม่ไว้ด้วยนะครับ ชื่ออาจจะแปลกๆ (เพราะยังไม่รู้จะชื่ออะไรดี) ตั้งใจว่าจะจดเป็น .com อยู่แล้ว แต่ตอนนี้ยังคิดชื่อไม่ออก ก็เอาชื่อนี้ไปพลางๆก่อนแล้วกันครับ

Add comment เมษายน 4, 2009

iPhone Development – View, Drawing

สำหรับ Entry นี้อาจจะพูดถึงส่วนของ View ใน iPhone นะครับ ซึ่งอยู่ใน Lecture ที่ 5 ของ stanford course ซึ่งจะกล่าวถึงคลาส UIView ของ iPhone, การใช้เครื่องมือสำหรับการวาดอย่างง่ายครับ

ไม่แน่ใจว่ามันจะก้าวกระโดดไปนิดรึเปล่า เอาเป็นว่า Entry นี้ผมจะหลักเลี่ยงการโค้ดนะครับ เริ่มกันที่ View นะครับ

ส่วนที่เป็น View คือส่วนที่เป็นสี่เหลี่ยมผืนผ้าตรงหน้าจอนั่นแหละครับ ทั้งหมดเลย ซึ่งภายใน View จะมีการทำงาน 2 อย่างอยู่ด้วยกัน คือ ส่วนของ Content และ Event

Content ก็คือตัวอักษร, รูปภาพหรือสิ่งที่ถูกวาดขึ้นบนจอภาพนั่นเองครับ ใน View แต่ละหน้าจะมี View หลักตัวหนึ่ง(เทียบตาม Tree ก็เป็น Root) เราเรียกว่า Superview ครับ ภายใน Superview ก็จะมี View ย่อยๆ เรียกว่า Subview ถ้านึกไม่ออกว่าเป็นไง ก็ลองนึกถึงกระดานปักหมุด(Superview)ที่มีกระดาษ(subview)แปะอยู่แล้วกันครับ ส่วน Event คือเหตุการณ์ที่เกิดขึ้นบนหน้าจอนั่นเองครับ ไม่ว่าจะเป็นการ Tab, การ Scroll ฯลฯ ทั้งหมดที่จะสั่งการให้ iPhone ทำงานได้ ถือเป็น Event หมด

เนื่องจาก View เป็นการวาดรูปภาพขึ้นมาบนส่วนของ Content ดังนั้นโครงสร้างต่างๆที่เกี่ยวข้องกับ View ก็เป็นเกี่ยวกับการวาดเช่นกัน ได้แก่ CGPoint หมายถึง ตำแหน่งที่อยู่(x,y) ,CGSize หมายถึง ขนาด(Width, Height) และ CGRect หมายถึงกรอบ(CGPoint, CGSize) ลักษณะ Coordinate ของ iPhone จะไม่เหมือนกับพิกัดการวาดรูปทั่วๆไปครับ จุด origin จะอยู่ที่มุมซ้ายบน (จากปกติมักจะอยู่ซ้ายล่าง)

เกี่ยวกับการวาดนั้น การอ้างอิงพิกัดหรือพ้ืนที่สำหรับวาด จะมีอยู่ 2 แบบ คืออ้างอิงจาก Frame และอ้างอิงจาก Bound ทั้งสองแบบแตกต่างกันตรงที่ “มันเป็นตำแหน่งเมื่อเทียบกับขอบกระดานปักหมุกหรือเทียบกับขอบกระดาษที่แปะ” ถ้า Frame คือเมื่อเทียบกับขอบกระดานปักหมุด แต่ถ้า Bound ก็เทียบกับกระดาษบนกระดานปักหมุด ถ้ายังไม่เข้าใจลองดูที่สไลด์ที่ 19 ก็อธิบายได้ชัดเจนดีครับ มีคำแนะนำอยู่นิดหน่อย (อยู่ในสไลด์ที่ 20) เกี่ยวกับการใช้งาน Frame และ Bound

สิ่งที่อยู่เหนือกว่า Superview คือ Window แต่ละ App จะมี 1 Window และ Window มักจะถูกจัดการมาให้เราใน template เรียบร้อยแล้ว

ส่วนเรื่องของการโค้ด มีตัวอย่างอยู่ใน สไลด์ที่ 25-27 นะครับ ไม่ขอเอามาเขียนซ้ำนะครับ แล้วก็คิดว่าโค้ดไม่น่าจะยากอะไรด้วย แต่ถ้าสงสัยก็โพสถามเอาละกันนะครับ

ต่อไปเรื่องของการ Drawing ครับ

การ Drawing ลงไปบน Content View นั่น จะทำโดยการ override คำสั่งการวาดไปในฟังก์ชั่น Drawrect ครับ แต่การสั่งให้ Draw จะไม่ได้ใช้วิธีการเรียกฟังก์ชั่น Drawrect ครับ แต่จะใช้คำสั่ง setNeedDisplay แทน งงมั้ยครับ? ลักษณะนี้เรียกว่า “Lazy Loading” ครับ view ของเราจะไม่ถูกวาดอยู่ตลอดเวลา แต่วาด(ตามที่สั่งใน drawRect)แค่เฉพาะตอนที่สั่ง(ว่า setNeedDisplay)เท่านั้น

เครื่องมือเกี่ยวกับการวาด จะเป็น Core Graphics และ Quartz 2D ทั้งสองตัวที่กล่าวถึงเป็น Graphic Library บน Cocoa ครับ ใช้โดย Library นี้เป็น C-Base API นะครับ ไม่ใช่ Objective-C ส่วนวิธีการวาดอย่างละเอียดนั้น คงไม่ขอพูดถึงในที่นี้ เพราะจะยาวจนเกินไปครับ(รวมทั้งอยากหลีกเลี่ยงการ Coding ใน Entry นี้ไปก่อนด้วย) คงจะมาอัพเดตในคราวหน้า แต่ถ้าสนใจก็ดูในสไลด์ก่อนก็ได้ครับ ใน Entry นี้ไว้เท่านี้ก่อนครับ

Add comment มีนาคม 23, 2009

Objective – C Custom Class

ก่อนอื่นขอบอกก่อนนะครับ ว่าหลังจากนี้ ผมจะอิงเนื้อหาจาก CS193P ของ Stanford มาเขียนเป็นบทๆ (เพราะถ้าตั้งหัวข้อเขียนเอง ท่าทางจะงง และจะไม่ครบถ้วน) ถ้าอยากดูสไลด์ประกอบก็ตามในเวบของ CS193P เลยนะครับ

จากก่อนหน้านี้ ผมอธิบายคร่าวๆเกี่ยวกับสิ่งต่างๆที่ต้องรู้ และในหัวข้อ Objective-C ก็อธิบายไว้คร่าวๆเหมือนกัน Entry นี้จะมาเจาะลึกกันซักหน่อย โดยจะเริ่มกันที่เรื่องของ Custom Class ของ Objective-C

ในการสร้าง Custom Class ใน Objective-C ไฟล์ที่ได้จากการสร้าง New Class จะมี 2 ไฟล์ คือไฟล์ .h และ .m
- ไฟล์ .h จะเป็น Header ไฟล์ ที่กำหนดลักษณะทั้งหมดของคลาส ว่า Class Name ชื่ออะไร มี Attribute และ Method อะไรบ้าง นอกจากนั้นยังเป็นส่วนที่กำหนดการเชื่อมต่อกับ Interface Builder ด้วย ลักษณะก็จะเป็นแบบนี้

#import <Foundation/Foundation.h>  // import เหมือนกับคำสั่ง include ของ C/C++

@interface ClassName : NSObject {
// Attribute ของ Class : เขียนเหมือนภาษา C ครับ
// Syntax: datatype varName
id  attr1;
NSString *attr2;

}
// Methods Header : คล้ายๆกับภาษา C เหมือนกันครับ ต่างกันนิดหน่อย
// Syntax: -/+ (returnDatatype)MethodName:(ParameterDatatype)parameterName;
- (void)setAttr2:(NSString *)aValue;
- (Nsstring *)attr2;

@end

- ไฟล์ .m เป็นส่วนของการ Implement Method ของคลาสทั้งหมด ลักษณะก็ประมาณนี้

#import “headerFile.h”

@implementation ClassName

- (void)setAttr2:(NSString *)aValue {
attr2 = aValue;
}

- (NSString *)attr2 {
return attr2;
}

@end

ครับ จากตัวอย่างเป็นการสร้าง Class ที่มี Method Getter กับ Setter นะครับ ต่อไปก็จะเป็นการสร้าง Object, Memory Management และการ ลบ Object นะครับ เริ่มต้นที่การสร้าง Object

การสร้าง Object มีสองขั้นตอนคือ การจองพื้นที่ และ การกำหนดค่าตั้งต้นของ Object ซึ่งรูปแบบมีดังนี้

ObjectClass *ObjectName = [[ObjectClass alloc] init];

การกำหนดค่าตั้งต้นอาจจะมี Parameter อื่นๆได้ด้วย ในกรณีตัวอย่างหมายถึง Default การกำหนดนี้ จะเกี่ยวข้องกับ Memory Management ตรงที่ Object ที่ถูกประกาศ จะมี retain count เป็น 1 หมายความว่า ตราบใดก็ตามที่ Object ตัวนี้ยังมีค่า retain count เป็น 1 หมายความว่า object ตัวนี้จะยังคงอยู่ในหน่วยความจำไปเรื่อยๆ ถ้าเราต้องการลบ Object ตัวนี้เราก็ทำได้โดยการใช้คำสั่ง Release แบบนี้ครับ

[ObjectName release];

ซึ่งจากข้างต้น ให้พูดง่ายๆก็คือ malloc กับ free ในภาษา C นั่นแหละครับ

แล้วก็อย่างที่บอกก่อนหน้านี้ครับ หลังจาก Mac OS X ออกมาเป็นเวอร์ชั่น 10.5 Leopard สิ่งที่คลานตามออกมาด้วยกัน คือ Objective-C 2.0 หลักๆก็มีสามอย่างอย่างที่เคยบอกนะครับ แต่Entry นี้จะเน้นเรื่อง Property แค่เรื่องเดียว เพราะเป็นเรื่องสำคัญใน iPhone Development เลยทีเดียว

Property เป็นสิ่งที่เข้ามาช่วยกำหนดคุณลักษณะของ Attribute ของ Class ของเราครับ ว่ามันอยู่ในหน่วยความจำอย่างไร Access ค่าแบบไหน ถามว่ามันจะรู้ไปทำไมว่าอยู่ในหน่วยความจำอย่างไร (retain, assign, copy) ก็เพราะฟีเจอร์เกี่ยวกับ Garbage Collector ส่วนเรื่อง Access ค่าอย่างไร (readwrite, readonly) ก็เป็นเรื่องที่เกี่ยวกับการใช้งานฟีเจอร์สร้าง Method Getter/Setter อัตโนมัติของ Property เอง (มันจะสร้างแบบไหนก็เกี่ยวกับมันอยู่ในหน่วยความจำอย่างไรเช่นกัน)

ส่วนว่าแต่ละอย่างมันหมายความว่ายังไงบ้าง ก็หมายความอย่างนี้ครับ

retain – Attribute นั้นถูกประกาศขึ้นโดย retain Count เป็น 1 Value เป็น default

assign – Attribute นั้นเป็น Pointer ชี้ไปที่ Attribute อื่นอีกทีนึง

copy – Attribute นั้น Access ค่าโดยการ Copy ค่ามาจากที่อื่น แต่ไม่ได้เพิ่ม retain count ขึ้นมาด้วย

readonly, readwrite – เป็นตัวกำหนดการ Access Attribute ว่าให้อ่านอย่างเดียวหรือเขียนได้ด้วย

ซึ่งตัวอย่างการใช้งานก็จะเปลี่ยนจากตัวอย่างด้านบนมาเป็นลักษณะนี้ครับ

ไฟล์ Header

#import <Foundation/Foundation.h>

@interface ClassName : NSObject {
id  attr1;
NSString *attr2;
}
@property id attr1;
@property Nsstring *attr2;

@end

ไฟล์ Implement

#import “headerFile.h”

@implementation ClassName

@synthesis attr1;
@synthesis attr2;

@end

จะเห็นว่า Method Getter/Setter หายไปและแทนที่ด้วยการกำหนด property แทน และในส่วนของ implement ก็แค่ใช้คำสั่ง @synthesis <#attribute> เพื่อให้มันสร้าง Method Getter และ Setter ขึ้นมา สั้นและง่ายขึ้นเยอะเลยใช่มั้ยครับ

ส่วนเรื่องการใช้งาน จะใช้ dot syntax เข้ามาแทนการเข้าถึง attribute ที่กำหนด property ครับ ลักษณะก็เป็นแบบนี้ (ใช้ class จากตัวอย่างข้างต้น)

objectExample.attr2 = @”test String”;  // อันนี้เป็นกรณี Setter method

NSLog(@”%@”, objectExample.attr2);  // อันนี้เป็นกรณีของ Getter method

ไม่ยากเกินไปใช่มั้ยครับ เกี่ยวกับเรื่องของ Custom Class ใน Objective-C สำหรับเนื้อหา Entry นี้อ้างอิง CS193P : Chapter 3 Custom Class นะครับ อยากดูสไลด์ก็ไปดูได้ (แต่ผมไม่ได้ทำหรอกนะ) เข้าใจไม่เข้าใจยังไงก็ติชมได้ครับ สำหรับบทนี้ขอจบเท่านี้ครับ

2 comments มีนาคม 6, 2009

Link Update

อยู่ๆผมก็ฉุกคิดเรื่องเวบลิงค์ขึ้นมาได้ ไม่ได้อัพเดตมานานขนาดไหนแล้วก็ไม่รู้ 

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

ส่วนที่เพิ่ม Category ขึ้นมาก็เป็นเรื่องของ Mac & iPhone App Dev เดี๋ยวนี้เวบที่เขียนเรื่องพวกนี้เจ๋งๆมีอยู่เยอะแยะ และตอนนี้ก็รู้สึกว่า เวบนี้เนื้อหาเริ่มจะกลายเป็น iPhone App Dev มากขึ้นๆ ก็เลยเอาให้มันสุดๆไปเลยดีกว่า (จากเมื่อก่อนที่มีแต่เพลงกับหนังและอะไรจิปาถะไปซะมากมาย) 

ลิงค์ที่เอามาแปะก็เป็นแหล่งเรียนรู้ของผมอีกเช่นกัน สำหรับผู้ที่สนใจก็แนะนำให้ลองเข้าไปอ่านกันครับ มีประโยชน์มากจริงๆ

Add comment มีนาคม 1, 2009

Previous Posts


สัตว์เลี้ยง

ไปเห็นในเวบบอร์ดมา อยากลองเอามาแปะเล่นๆดูมั่ง ผ่านเข้ามาก็แวะกดให้อาหารมันเล่นๆให้หน่อยก็แล้วกันนะครับ อิอิ


ให้อาหารหน่อยครับ คลิกที่นี่

อยากมีสัตว์เลี้ยงมั่ง คลิกเลย

Reading book

Beginning iPhone Development: Exploring the iPhone SDK

ใช้หัวคิด

Post Calendar

พฤศจิกายน 2009
พฤ อา
« ก.ค.    
 1
2345678
9101112131415
16171819202122
23242526272829
30  

New Coming Post

หมวดหมู่

Blogroll

Mac & iPhone Dev Useful Link

ป้ายกำกับ

2 Language Entry Book Books Buddhist cocoa Cocoa Programming Cocoa Touch Programming core data core image core webservice DVD Food Games gmail hotmail iPhone iPhone SDK itune iTunes mac Macbook mail microsoft mighty mouse Monitor Monitor calibrate Movie Music mv nikon D70 Nutrition Obj-C person Personal Philosophy Photography Podcast Political Programming Quicktime Travel White Balance windows Wish list Work