หลังจากรีบูตเครื่องและกดปุ่ม 3,2 ทำให้เครื่องทำงานในรูปแบบ 32-bit (i386 ด้านหลัง)

OS X 10.7 in 32-bit Mode

ฟังดูเป็นเรื่องที่ไม่ค่อยจะเกิดขึ้นบ่อยเท่าไหร่ แต่มันก็เกิดขึ้นแล้ว เพราะตอนนี้งานที่ต้องทำรองรับแค่ 32-bit จะเกิดปัญหาเมื่อระบบปฏิบัติการเป็น 64-bit ซึ่งตอนนี้ใช้ OS X 10.7 โดยปกติแล้ว 10.7 จะบูตเครื่องขึ้นมาแล้วทำงานแบบ 64-bit ตอนแรกยังคิดไปว่าท่าทางจะต้องกลับไปใช้ 10.6 ซะแล้ว แต่ก็เห็นมีคนตั้งคำถามใน Apple Support Communities เหมือนกันว่าถ้าอยากให้ 10.7 ทำงานในรูปแบบ 32-bit จะทำได้ไหม และทำอย่างไร สุดท้ายก็มีคนมาตอบครับ โดยอ้างจากข้อมูลช่วยเหลือของ Apple อีกที การสลับไปมาง่ายมากครับ ถ้าต้องการสลับไปเป็น 32-bit ก็ให้รีบูตเครื่องใหม่แล้วกดปุ่ม 3 และปุ่ม 2 ค้างไว้ และถ้าต้องการให้ 10.7 ทำงานในแบบ 64-bit ก็กดปุ่ม 6 และปุ่ม 4 ค้างเอาไว้ตอนบูต แต่ข้อมูลด้านบนเป็นข้อมูลสำหรับ Mac OS X 10.6 ครับ แต่ผมใช้ 10.7 แต่หลังจากลองดูแล้วก็ได้ผลเป็นตามรูปครับ คือสามารถบูต 10.7 ให้ทำงานในแบบ 32-bit ได้

ซึ่งวิธีการนี้เป็นการแก้ไขแบบชั่วคราวค่าทั้งหมดจะกลับคืนมาเป็นปกติเมื่อรีบูตเครื่องครั้งต่อไป แต่ถ้าต้องการแก้ไขให้เครื่องทำงานในแบบ 32-bit หรือ 64-bit อย่างถาวรให้แก้ไขด้วคำสั่ง

$ sudo systemsetup -setkernelbootarchitecture x86_64

เพื่อบังคับให้ทำงานในแบบ 64-bit ซึ่งเป็นค่า default ของ 10.7

$ sudo systemsetup -setkernelbootarchitecture i386

เพื่อบังคับให้ทำงานในแบบ 32-bit

ข้อมูลอ้างอิง: Apple Support – Mac OS X v10.6: Starting up with the 32-bit or 64-bit kernel

Cocoa Style for Objective-C: Part II

จาก Cocoa Style for Objective-C ตอนแรก ได้พูดการตั้งชื่อคลาส เมธอด และตัวแปรไปแล้วนั้น ตอนนี้ก็จะพูดถึงรายละเอียดที่มากขึ้นไปอีกในการตั้งชื่อที่มากไปกว่าครั้งก่อน เพราะด้วยไวยกรณ์และลักษณะของภาษา Objective-C ที่แปลกออกไปจากหลายๆ ภาษาอื่น เช่น C/C++, Java หรือ PHP และด้วยวิถีของ Apple ที่วางเอาไว้ว่าการกำหนดชื่อส่วนประกอบต้องอ่านแล้วเข้าใจได้ง่าย อธิบายได้ด้วยตัวของมันเอง

บล็อกนี้เรียบเรียงเนื้อหามาจาก Cocoa Dev Central : Cocoa Style for Objective-C Part I, Part II

Continue reading

Slide: Introduction to WordPress Theme Development

อาจจะต้องสอนน้องที่ทำงานเรื่องการเขียนธีมให้เวิร์ดเพรส เลยทำเป็นสไลด์ไว้สอนเลยดีกว่า ตอนนี้รีบๆ ขอเป็นแบบ Intro. ไปก่อน โอกาสหน้าค่อยเจาะลึก

Core Data in Action: Why I Did It

จากที่เคยเขียนบล็อกเรื่อง Core Data ทั้ง 2 ตอน (Application Layout, Development Phase) เท่าที่ลองอ่านแล้วตั้งคำถามกับตัวเองแบบคนไม่รู้ก็ได้คำถามที่ว่าทำไมต้องใช้อันนั้น ไม่ใช้ได้ไหม หรือแล้วไอ้นี่มันมีประโยชน์อะไร มีหลายข้อเหมือนกัน สุดท้ายก็เลยคิดว่าคนที่อ่านก็น่าจะคิดและเจอปัญหาแบบเดียวกัน จากเดิมที่เปลี่ยนให้บล็อกมีแค่ 2 ตอนจบ เลยกลับมาเป็นแบบเดิมที่ตั้งใจไว้ว่าน่าจะมีตอนสรุปจบตอนที่ 3 ด้วย ซึ่งตอนนี้ก็อย่างที่ได้เกริ่นไปแล้วว่าคงจะเป็นเหมือน faq ของวิธีการพัฒนาที่ผมเขียนไปแล้วครับ

Continue reading

Google Maps + Geocoder Services: Part II

จากตอนแรก ได้อธิบายถึงการทำงานของโค้ดและได้สร้างรายการการแก้ไขไปแล้วบางส่วน โดยมีรายการของงานที่ต้องทำคือ

  • ประกาศตัวแปร maps, marker และ latlng เป็นตัวแปรแบบ global
  • ลบการประกาศตัวแปร info และการแมพเหตุการณ์ ‘click‘ ในฟังก์ชั่น initWithMapStart และลบฟังก์ชั่น errorOccur
  • แก้ไข callback function ของ navigator.geolocation.getCurrentPosition
  • แก้ไขฟังก์ชั่น panToCurrentLocation
  • เพิ่มฟังก์ชั่น resolveGeocoding, displayGeocodingResult

โดยที่ 3 ข้อแรกนั้นได้แก้ไขไปแล้วเรียบร้อยใน Part I ในตอนนี้จะเป็นตอนสุดท้ายที่ถือได้ว่าเป็นหัวใจของเรื่องนี้ นั่นก็คือการส่งค่าพิกัดให้กับ Google และนำค่าที่ได้มาแสดงผลผ่าน InfoWindow จึงถือเป็นการสิ้นสุดการทำงานที่ได้วางไว้ข้างต้น

เริ่มส่วนที่เหลือกันเลยดีกว่า
Continue reading

Google Maps + Geocoder Services: Part I

จากบล็อกทั้ง 2 ตอนก่อนหน้านี้ (แนะนำการใช้งาน Google Maps V3 และ การใช้ Google Maps ร่วมกับความสามารถของ HTML5) ที่แนะนำการนำเอาแผนที่ของ Google Maps เข้ามาใช้ในเว็บไซต์และการหาตำแหน่งผู้ใช้โดยอาศัยความสามารถใหม่ที่เพิ่มเข้ามาใน HTML5 ซึ่งเว็บไซต์ส่วนใหญ่รองรับความสามารถนี้แล้ว

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

Cocoa Style for Objective-C: Part I

สำหรับการเริ่มเขียนภาษา Objective-C หรือภาษาคอมพิวเตอร์อื่นๆ ไม่ว่าจะเป็น Java, C หรือ PHP สิ่งสำคัญอย่างหนึ่งนอกจากจะต้องเข้างใจกลไกการทำงานของภาษานั้นๆ แล้ว ก็จำเป็นต้องเข้าใจธรรมชาติของลักษณะการกำหนดชื่อคลาส เมธอด และตัวแปร นั่นนอกจากจะทำให้โค้ดที่เราเขียนขึ้นเองนั้นเป็นที่เข้าใจง่ายแล้ว ก็ยังทำให้เราเข้าใจโค้ดอื่นๆ ที่เราต้องการได้ เช่น เฟรมเวิร์คภายนอก สำหรับภาษา Objective-C เอง ทาง Apple ก็ได้วางแนวทางการสำหรับวิธีการเขียนโค้ดให้กับนักพัฒนาเพื่อให้โค้ดเข้าใจได้ง่ายมากที่สุด ซึ่งนอกจากที่เขียนไว้เป็นลายลักษณะอักษรแล้วก็ยังมีบางส่วนที่ไม่ได้กำหนดไว้ (แต่กลายเป็น de facto) บล็อกต่อไปในี้ก็เลยตั้งใจว่าจะนำเอาเรื่องพวกนี้มาอธิบายไว้ก่อน ก่อนที่เริ่มกับ Objective-C มากกว่านี้ โดยบล็อกจะแบ่งออกเป็น 2 ตอนด้วยกันซึ่งเนื้อหานี้จะเรียบเรียงมาจากบทความของ CocoaDevCentral 2 บทความ ได้แก่ Cocoa Style for Objective-C: Part I และ Cocoa Style for Objective-C: Part II โดยที่จะแบ่งเป็น 2 ส่วนคือ

      Part I: การตั้งชื่อพื้นฐานของ Class, Variable, Accessor หรือ Method
      Part II: รายละเอียดอื่นๆ สำหรับชื่อ Method, Global Symbols, Parameter และอื่นๆ

Continue reading