อยากได้ตั้งแต่วันประกาศตัวละครับ กับเมาส์ใหม่ของ Apple ที่ตั้งชื่อว่า Magic Mouse (ไม่ใช่ Mighty ที่มีปัญหาเรื่องชื่อ อีกต่อไปแล้ว) พอดีตอนนั้น Mighty Mouse ตัวที่ใช้อยู่ ซึ่งตัวเก่ามาก มีปัญหา scroll-down มากมาย (ตัวใหม่ที่ยังดีๆ อยู่ หายไปกับเครื่องที่โดนทุบรถขโมยไป) แทบจะงัดทิ้งหรือไม่ก็ขว้างทิ้งอยู่ทุกวัน ก็เลยบอกพนักงาน iStudio ที่สนิทมากคนหนึ่ง คือ คุณแอน จาก SPV ให้เอามาให้ "ทันทีที่ออก" ซึ่งเมื่อคืนตอนสองทุ่ม คุณแอนก็เอามาให้ ไม่คิดค่าขนส่ง ขอบคุณมากนะครับ
รีวิวนี้ จะไม่มีการโชว์รูป unpacking นะครับ อันนั้นคงหาอ่าน หาดูได้เยอะแล้ว ผมคิดว่าคงจะเหมาะกว่า ถ้าผม ในฐานะหนึ่งใน dualGeek จะเล่าความรู้สึก โดยเน้นด้าน interaction design ว่าเป็นอย่างไร ว่าแล้ว ไปอ่านกันเลยดีกว่าครับ
ว่าจะเขียน review ตั้งแต่สอนเสร็จล่ะครับ ว่าเป็นยังไงมั่ง ก็ขอสรุปแยกเป็นเรื่องๆ ละกันนะครับ
คนที่มาอบรม
เรื่องคนที่มาอบรมนี่ บอกตามตรงว่าเป็นปัญหากับผมและทีมงานค่อนข้างมาก เพราะว่า background หลากหลายเหลือเกิน ส่วนมากอาจจะมีประสบการณ์เขียน Java มาก่อนบ้าง แต่นอกนั้นถึงจะมีประสบการณ์เขียนโปรแกรมมาก่อน ก็เป็นพวก Web developer สาย PHP ซึ่งจะไม่ค่อยมีประสบการณ์ด้านการออกแบบ OOP เท่าไหร่นัก
ทำให้ผมค่อนข้างจะมั่นใจว่า การปูพื้นฐาน Object-Oriented ใหม่หมด โดยเฉพาะอย่างยิ่ง patterns ที่ Cocoa Framework ใช้งาน ไม่ว่าจะเป็น Property, Getter/Setter, Model-View-Controller, Target/Action, Outlet เป็นสิ่งที่ถูกต้องที่สุด เพราะว่าถึงจะเคยเขียน Java มาก่อน ก็ไม่ได้แปลว่าเราจะเข้าใจเรื่องพวกนี้ตรงกัน หรือว่าไปในทางที่เป็นประโยชน์ต่อการเขียนโปรแกรมใน Cocoa Framework
Objective-C
ผมเห็นว่า Objective-C มีปัญหากับหลายคนน้อยกว่าที่ผมคิด โดยเฉพาะอย่างยิ่งพวกที่เป็นภาษา Java มาก่อน เพราะว่ามันคล้ายกันมากๆ โดยเฉพาะอย่างยิ่งเมื่อมันมี Garbage Collector (ซึ่งใน Objective-C 2.0 มี แต่ยังไม่มีใน iPhone OS)
วันที่ 9-11 ตุลาคม 2552 นี้ Software Park ภูเก็ต จะมีการจัดงานอบรม iPhone Developer Camp โดยคนที่สอนคือ ผมเอง เลยขอเอา outline มาลงไว้ที่นะครับ ว่าจะมีอะไรบ้าง
วันที่ 9
- เช้า
- Warm-Up
- Introduction to the course
- Hello Cocoa (Mac Application)
- Hello iPhone (iPhone Application)
- Xcode tools & environment
- Warm-Up
- บ่าย
- "Just Enough" fundamentals and foundations
- Object-Oriented Programming in Objective-C
- Cocoa Basic and Cocoa Design Patterns
- Anatomy of iPhone Applications
- Day 1 Assignment: Window-based Application
- "Just Enough" fundamentals and foundations
วันที่ 10
- เช้า
- Day 2 Warm-Up: More on Objective-C
- Features and Glossary
- Memory Management (ไม่มี Garbage Collector บน iPhone!)
- iPhone Application Basic Framework: Overall architecture and UIKit
- Day 2 Warm-Up: More on Objective-C
- บ่าย
- Day 2 Assignment: Navigation-based Application and More on UIKit
วันที่ 11
- เช้า
- More in UIKit and iPhone View
- More Frameworks = More Fun & Functions!
- บ่าย
- Day 3 Assignment: Tab-bar Application and Utility Application
- Wrap-up: What to learn more?
3 วัน เป็นไปไม่ได้ล่ะครับ ที่จะครอบคลุม iPhone Development ทั้งหมด จริงๆ มีทั้งเทอมก็ยังไม่พอเลยครับ ก็เลยวางไว้คร่าวๆ ได้แค่นี้แหละ แต่ว่าจะทำได้จริงแค่ไหน ก็ขึ้นกับหลายปัจจัยนะครับ โดยเฉพาะผู้เข้าเรียน ว่าจะทันแค่ไหน บางอย่าง ถ้าไม่เคยเขียนโปรแกรมบน Mac มาเลย อาจจะลำบากนิดหน่อย
แต่ว่าเมื่อ 3 ปีก่อน ผมเคยสอน Cocoa Bootcamp มา 2 รุ่น คือ Basic และ Advanced ซึ่งก็สอนได้ตามที่คิดไว้อ่ะนะครับ แต่ว่าท้ายๆ อาจจะเร็วไปบ้าง ครั้งนี้ก็คงจะคล้ายๆ กัน คือ ผมคงไม่สามารถ cover หลายอย่างที่หลายคนคงอยากเห็น เช่น Core Data, Core Animation, OpenGL ES หรือว่าอย่างอื่นได้หมดแน่ๆ แต่คิดว่าคงจะเป็นพื้นฐานที่มากพอ
อีกอย่าง Course นี้จะเน้นไปที่พื้นฐานของการพัฒนาโปรแกรมบน iPhone พอสมควรนะครับ ตั้งแต่ Objective-C, Cocoa, Cocoa Design Pattern อะไรพวกนี้ มากกว่าที่จะทำ Application อย่างเดียว ผมเชื่อว่าพื้นฐานเหล่านี้จะช่วยให้การพัฒนาต่อยอดด้านการเขียนโปรแกรมบน iPhone ทำได้จริงครับ
ว่าจะเขียนเรื่องนี้มานานแล้ว แต่ว่าจะเขียนทีไรลืมทุกที
หลายท่านใช้ Safari 4 แล้วก็ขัดใจเรื่องที่ตัวบอกสถานะมันกลายเป็นแค่วงกลมวิ่งๆ แต่ไม่ได้บอกเลยว่าขณะนี้มันทำการ download หน้าเว็บที่ต้องการไปถึงไหนแล้ว ดังนั้น tricks นี้ก็เลยจะเป็นการ "คืน" การบอกสถานะที่ Address Bar (ช่องกรอก URL) แบบเดิมๆ คืนให้กับ Safari 4 ... ทำตามนี้ครับ
เปิด Terminal.app และพิมพ์ตามนี้ครับ
defaults write com.apple.Safari DebugSafari4IncludeToolbarRedesign -bool NO
ในบรรทัดเดียวนะครับ เมื่อเรียบร้อยแล้วให้พิมพ์
defaults write com.apple.Safari DebugSafari4LoadProgressStyle -bool NO
บรรทัดเดียวเช่นกันครับ
ขอแถมให้อีกนิด ถ้าต้องการย้าย Tab กลับมาที่เดิมๆ ด้วย ก็ให้ทำดังนี้ครับ
defaults write com.apple.Safari DebugSafari4TabBarIsOnTop -bool NO
ฮูเร่! การรอคอยอีกอันกำลังจะสิ้นสุดลงแล้ว!
หลังจากที่คนคาดเดา คาดหวัง ฯลฯ ว่า Leopard จะมาพร้อมกับ Finder ตัวใหม่แกะกล่อง (คือเป็น Finder ที่ถูกเขียนขึ้นมาใหม่โดยใช้ Cocoa เลย ไม่ใช่แค่ Finder ตัวเดิม ที่มีการเพิ่มความสามารถหรือเปลี่ยนหน้าตาเพียงเล็กน้อย แบบที่มันเป็นอยู่)
ข้อมูลล่าสุดจาก AppleInsider ระบุว่า Snow Leopard จะมาพร้อมกับ Cocoa Finder และตอนนี้ Finder ตัวทดสอบได้ไปถึงมือของนักพัฒนาที่ถูกคัดเลือกบางกลุ่มเป็นที่เรียบร้อยแล้ว (เริ่มต้นจาก build 10Axxx เป็นต้นไป)
นอกจาก Finder แล้ว ยังมีโปรแกรมของทาง Apple เองหลายตัวใน build ดังกล่าว ที่ถูกครอบด้วย Cocoa (แต่ว่ายังไม่ได้ถูกเขียนใหม่เป็น Cocoa ทั้งหมด นั่นคือบางส่วนยังเป็น Carbon อยู่)
JavaScript กลายมาเป็นส่วนสำคัญส่วนหนึ่งของ Web Experience ในปัจจุบันไปเสียแล้ว ด้วยการที่นักพัฒนา Web Application ทั้งหลายทั้งแหล่พยายามสร้าง User Experience ที่ลื่นไหลมากขึ้น ต่อเนื่องมากขึ้น มี Interaction กับผู้ใช้มากขึ้น ฯลฯ ให้กับโปรแกรมบนเว็บของตัวเอง และเทคโนโลยีที่เก่าเก็บอย่าง JavaScript ก็เลยคืนชีพมากลายเป็นพระเอกขี่ม้าขาวช่วยสร้างตรงนี้ให้เกิดขึ้น
แต่ว่ามันไม่ใช่ว่าไม่มีปัญหา ไม่ว่าจะเป็นความหลากหลายของชุดพัฒนา ที่นำมาซึ่งความเข้ากันได้เข้ากันไม่ได้มากมาย และความหลากหลายและความเข้ากันไม่ได้ของ Web Browser เอง ที่ทำให้นักพัฒนาต้องปวดหัวเป็นประจำ ยังมีเรื่องนึงก็คือ ความเร็ว เพราะว่ามักจะอืดเหลือเกิน
พักหลังๆ ในโลกของการพัฒนา Web Application ก็เลยมีเครื่องไม้เครื่องมือมาช่วยในการวัดประสิทธิภาพอยู่หลายตัว แต่ว่าอีกโลกหนึ่ง ฝั่งของ Web Browser และ Web Browser Engine ก็มีการพัฒนาฉากหลัง ที่ช่วยทำให้การทำงานของ JavaScript มันเร็วขึ้น
เมื่อ 3 เดือนก่อน WebKit ทีมได้ประกาศ SquirrelFish ซึ่งเป็น JavaScript Engine ตัวใหม่แกะกล่อง ที่จะช่วยเพิ่มประสิทธิภาพดังกล่าวให้กับการทำงานของ JavaScript ใน Browser ที่ใช้ Engine ของ WebKit (เช่น Safari และอีกหลายๆ ตัว)
มาตอนนี้ Engine ตัวที่ว่าก็เก่าไปซะล่ะ เพราะว่ามีการพัฒนา SquirrelFish Extreme (SFX) ที่เร็วกว่าของเดิมกว่าเท่าตัว (เร็วกว่าตัวที่อยู่ใน WebKit 3.0 กว่า 10 เท่า และ 3.1 กว่า 3 เท่า) อยากรู้ว่าเป็นอย่างไรก็เข้าไปดูใน link นะครับ มี chart ให้เรียบร้อย
คราวนี้อยากจะแนะนำ framework สำหรับการพัฒนา web application ที่ถือว่า "clone" framework สำหรับการพัฒนา application บน Mac OS X ซึ่งคือ Cocoa และ Objective-C มาแบบ "ฝาแฝด" กันเลยทีเดียว ซึ่งเทคโนโลยีตัวใหม่นี้เรียกว่า Cappuccino และภาษา Objective-J ครับ
ซึ่งเป็น Web framework ที่อยู่เบื้องหลังการพัฒนา web application ตัวหนึ่งคือ 280 Slides หรือ "Web Keynote" (จริงๆ ผู้พัฒนา 280 Slides คือ 280 North ได้ทำการพัฒนา Cappuccino และ Objective-J เพื่อพัฒนาโปรแกรมบนเว็บ และมีตัวอย่าง app แรกก็คือ 280 Slides เนี่ยแหละครับ)
เพิ่งจะสังเกตแฮะ ไม่เคยสังเกตเลยมานานมากแล้ว (ตั้งแต่ใช้งาน) ว่า Aperture มันไม่ยอม export metadata บางตัวมากับรูปด้วยเวลาที่ export รูป
เรื่องของเรื่องคือ ผมพยายามจะเขียนโปรแกรมดึง metadata จากรูปที่ export แล้วออกมาแสดง ด้วยความพยายามทั้งหมดไม่ว่าจะเป็นการใช้ ImageIO.framework หรือว่าการใช้ ImageMagick (RMagick) หรือว่าการใช้ Exiftool ต่างก็ล้มเหลวหมด
ก็เลยคิดว่า มันเป็นเพราะอะไรเนี่ย ทำไมข้อมูลที่ต้องการอย่างเช่น Lens Model มันถึงไม่แสดง หรือว่าเราเขียนโปรแกรมผิดหว่า แต่ข้อมูลอื่นๆ มันก็แสดงหมดนี่นา เอ๊ะชักยังไงๆ
กลับไปดูใน Aperture .... อืมมม ข้อมูลเลนส์มันก็มีนี่นา
เอ๊ะ เดี๋ยวก่อน หรือว่ามัน export ข้อมูลมาให้ไม่ครบ? ไม่น่าเป็นไปได้ ... แต่ลองหน่อยดีกว่า ว่าแล้วก็ลากรูปที่เพิ่งจะ export มาน่ะแหละ กลับลงไปใน project แล้วเปิด metadata ดู .. เฮ้ย หายจริงๆ ด้วย
อืมมม แบบนี้หมายความว่าไงเนี่ย ลอง export master ดูซิ ทีงี้ล่ะมาเชียวนะ แต่ว่าไหงพอ export versions กลับไม่ยอม export ให้ละเนี่ย ... สิ่งที่ผมต้องการน่ะเหรอ แค่ resize รูปเองนะ ไม่ได้ต้องการทำอย่างอื่นเลย
ลองใช้โปรแกรมอย่าง ImageMagick ทำหน้าที่ลดขนาดรูปดูบ้าง .....
ลองคิดอะไรกันเล่นๆ ว่าทำไมเราไม่มาลองแนะนำโปรแกรมบน iPhone กันคนละตัวสองตัวนะ ว่ามันมีอะไรบ้างที่น่าสนใจ แล้วก็มีอะไรบ้างที่อยากให้มีแต่ว่ามันยังไม่มี หรือว่ามีแต่ยังไม่ถึงใจ
เผื่อเป็นแนวทางการพัฒนาโปรแกรมด้วย และเป็นการแนะนำโปรแกรมให้ใช้กันด้วย
ผมไม่มีอะไรจะแนะนำแฮะ เพราะว่าผมไม่ได้ลง 3rd-party applications เท่าไหร่เลย ..... นอกจาก Terminal ฮาฮา
Apple ได้ประกาศจุดยืนชัดเจนกับ "ว่าที่" Mac OS X 10.6 ที่ใช้ชื่อรหัส Snow Leopard ว่าจะไม่มีฟีเจอร์ใหม่ๆ แต่จะโฟกัสกับการเปลี่ยนแปลงภายใน ที่เน้นหนักไปในการเค้นความสามารถ รีดประสิทธิภาพ ลดน้ำหนัก ฯลฯ
เท่าที่ประกาศเป็นทางการใน website ของ Snow Leopard เอาข้อมูลฟีเจอร์ออกมาได้ไม่กี่ตัว คือ
- Microsoft Exchange Support
- Multicore โดยมีชื่อเทคโนโลยีรองรับคือ Grand Central
- 64-bit อันนี้ประกาศว่าเป็น feature มาตั้งแต่รุ่นก่อนๆ แล้ว แต่ว่าคงจะรองรับมากขึ้น
- Media and Internet มี QuickTime X และ JavaScript ที่เร็วขึ้นมารองรับ
- OpenCL ชุดคำสั่งที่ช่วยให้เอาความสามารถของ GPU มาช่วยในการประมวลผลทั่วไป (general-purpose) มากขึ้น -- โดยส่วนตัวเป็นตัวที่ผมรอมากที่สุด
แต่ยิ่งนานวัน ข้อมูลของเสือหิมะตัวนี้ยิ่งชัดเจนมากขึ้น และเห็นได้ว่ายังมีอะไรๆ ภายใต้เปลือกนอกอยู่เยอะทีเดียว และอาจจะเป็นการเปลี่ยนแปลงภายในที่เราๆ ในระดับผู้ใช้อาจจะ "มองไม่เห็น" แต่ว่าแน่ๆ ครับว่าจะ "สัมผัสได้" ... มีอะไรบ้าง ไปดูกันครับ
Recent comments
9 weeks 2 days ago
9 weeks 5 days ago
10 weeks 1 day ago
12 weeks 1 day ago
12 weeks 1 day ago
16 weeks 2 days ago
16 weeks 3 days ago
16 weeks 3 days ago
16 weeks 3 days ago
17 weeks 2 days ago