• http://www.aspgod.com/internet-technology/it-costs-just-1-36-to-charge-an-ipad-for-a-year.html

    It costs just $1.36 to charge an iPad for a year

  • http://www.aspgod.com/mac/setting-fast-user-switching-on-mac.html

    Setting “Fast User Switching” on Mac

  • http://www.aspgod.com/codeigniter/how-to-make-assets-folder-works-on-codeigniter.html

    How to make assets folder works on CodeIgniter

  • http://www.aspgod.com/xcode/application-icon-missing-in-organizer-archives.html

    Application Icon Missing in Organizer – Archives

  • http://www.aspgod.com/xcode/ios-tutorial-uiwebview-and-uinavigationcontroller-on-xcode.html

    iOS Tutorial : UIWebView and UINavigationController on Xcode

  • http://www.aspgod.com/xcode/how-to-add-new-version-of-ios-application-to-app-store.html

    How to Add New Version of iOS Application to App Store

  • http://www.aspgod.com/apple/battery-percentage-missing-on-ipod-touch.html

    Battery Percentage Missing on iPod touch

  • http://www.aspgod.com/xcode/storyboard-in-xcode-4.html

    Storyboard in Xcode 4

App Transport Security has blocked a cleartext HTTP (http://) Solved

App Transport Security has blocked

สวัสดีครับ วันนี้ผมจะมาแนะนำวิธีแก้ปัญหาที่บอกเลยว่า “ต้องเจอทุกคน!” ในการเขียน app iOS ยุคนี้

ขอเล่าที่มาของปัญหานี้สักเล็กน้อยนะครับ ตั้งแต่มี iOS 9 เกิดขึ้นมา Xcode ก็ปรับตัวตามโดยออกมาเป็น Xcode 7 โดยมีการอัพเกรดที่สำคัญหลายๆอย่างด้วยกัน แต่จุดนี้ที่จะให้ดูคือการให้ความสำคัญในเรื่องของความปลอดภัยในการเรียกใช้ข้อมูลจาก network หรือเรียกง่ายๆคือการเรียกใช้งาน API นั่นเองครับ

หลายๆคนคงเคยใช้งาน AFNetwork, Alamofile หรือหากใครโหดๆหน่อยใช้งาน API โดยไม่ผ่าน framework ดังกล่าว ก็จะต้องใช้งาน NSURLRequest แน่นอน ปัญหาที่พบเลยนั่นคือ… “ทำไมข้อมูลมันไม่มานะ url ก็ถูกต้องแล้วนี่นา?” หากได้สังเกตที่ Consol ด้านล่างแล้วจะพบข้อความ error ปรากฎดังนี้

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app’s Info.plist file.
Error Domain=NSCocoaErrorDomain Code=3840 “No value.” UserInfo={NSDebugDescription=No value.}

แปลเป็นภาษาง่ายๆเลยก็คือ ต่อไปนี้ห้ามเรียกใช้ http:// แล้วนะ มันไม่ปลอดภัย ต้องใช้งานด้วย https:// เท่านั้น

แน่นอนว่าบางคนก็ไม่พร้อมที่จะมี server ที่รองรับ https ในการใช้งาน แบบนี้จะทำอย่างไร ก็แก้ได้ง่ายๆด้วย 2 วิธีครับ
1. บอก Xcode ไปเลย “ไม่เป็นไรนะ ไม่ต้องห่วงฉัน ฉันยังอยากจะใช้งาน http แบบเดิม ขอบคุณครัช”
วิธีนี้ต้องไปเพิ่มค่าที่ info.plist โดยใส่ค่านี้ลงไป

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

2. บอก Xcode ว่า “ขอให้ฉันใช้ http เถอะนะ ขอแค่เป็นบาง url ก็พอแล้ว(ครัช)”
ทำตามนี้เลยครับที่ info.plist เช่นเดิม

<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<!– url ที่ต้องการขอยกเว้น–>
<key>yourserver.com</key>
<dict>
<!–Include to allow subdomains–>
<key>NSIncludesSubdomains</key>
<true/>
<!–Include to allow HTTP requests–>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!–Include to specify minimum TLS version–>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>

ลองทำตามดูนะครับ สบายหายห่วง แก้ไขปัญหาได้แน่นอน

Credit: http://stackoverflow.com/questions/31254725/transport-security-has-blocked-a-cleartext-http

How to Save Rules of the iptables?

2000px-Tux.svg

สวัสดีครับ วันนี้มีเรื่อง iptables มานำเสนอครับ ปกติแล้วเวลาเราต้องการไม่ให้ ip ไหนเข้ามายัง server ของเรา เราก็จะเขียนคำสั่งง่ายๆเข้าไปเพื่อไม่ให้ ip เหล่านั้นเข้ามาได้ อาจจะไม่ให้เข้าทุก port หรือไม่ให้เข้าเฉพาะบาง port ได้โดยไม่จำเป็นต้องปิดการใช้งานของ port นั้น แต่มีปัญหาอยู่อย่างนึงครับ นั่นก็คือเวลาเรา reboot เครื่องแล้ว คำสั่งต่างๆใน iptables จะหายไป เหมือนกับเราไม่ได้เซฟเอาไว้ครับ More

Set UITableView Background Color in iOS 7

Set UITableView Background Color in iOS 7

สวัสดีครับ วันนี้มาแบบสั้นๆเกี่ยวกับการใส่ background color ให้กับ UITableView ครับ โดยปกติแล้ว (ก่อน iOS 7) เราก็จะทำกันง่ายๆที่ viewDidLoad หรือแล้วแต่ว่าใครจะไปวางที่ไหนครับ More

Changing UIStatusBarStyle in iOS 7

UIStatusBarStyle

Status Bar ใน iPhone หรือ iPad คือแถบด้านบนสุดที่มีความสูงเพียง 20 pixels เท่านั้น แต่สามารถแสดงเวลา แบตเตอรี่ และสถานะต่างๆของมือถือได้ ใน iOS 7 เราสามารถแก้ไขได้เพียง 2 แบบเท่านั้น เพราะรูปแบบอื่นๆนั้น  iOS 7 ไม่อนุญาตอีกแล้วครับ More

AFNetworking 2.0 : Request API with Content-Type = text/html

afnetworking-logo

AFNetworking เป็น framework สำหรับ iOS ที่ดีมากๆตัวหนึ่ง เอาไว้ใช้สำหรับการติดต่อกับ API ทั้งหมด หรือการจัดการเกี่ยวกับการใช้ network หรือ internet มีการเก็บ cache ให้เราด้วย ทำให้ไม่ต้องทำอะไรยุ่งยากมากนักในการใช้งาน More

Remote Host Identification has Changed on Mac

Remote Host Identification has Changed

มีเรื่องน่าประทับใจของ Mac มาเล่าให้ฟังครับ พอดีผมมีเหตุให้ต้องเปลี่ยน Hard Disk นั่นก็คือต้อง install OS ตัวใหม่ลงไปบนเครื่อง server เมื่อเซ็ตอัพเสร็จเรียบร้อยแล้ว ก็ได้เวลา shell เข้าไปจากเครื่องอื่น ปรากฎว่าผมเจอ error ตามภาพข้างบน “Remote host identification has changed”  More

Stop Caching on MAMP

mamp logo

การทำ cache คือเรื่องปกติของ web server เพื่อทำให้ server ไม่ทำงานหนักเกินความจำเป็น แต่แน่นอนว่าตอนนี้ผมใช้ MAMP ในเครื่อง Mac เพื่อทำการ test งานเขียนเว็บทั่วไป ผมจึงไม่ต้องการ cache เลย เพราะเวลาแก้โค๊ดแต่ละครั้งก็ต้องรอกว่า cache จะหมดอายุเพื่อจะเห็นการอัพเดด More

Install Mcrypt PHP Extension on Ubuntu

Mcrypt PHP

Mcrypt คือ extension ของ PHP ที่มีฟังก์ชันให้เล่นมากมายเกี่ยวกับการ ecryption/decryption ด้วยการเข้ารหัสแบบต่างๆ จึงมีประโยชน์มากๆในการทำงานด้านความปลอดภัย โดยทั่วไปแล้ว การติดตั้ง PHP  แบบปกตินั้นจะไม่มี Mcrypt ติดตั้งมาให้ด้วย สามารถลองเช็คดูได้จาก phpinfo() ครับ จะต้องมีส่วนของ Mcrypt ดังแสดงในภาพด้านบน More

PHP : echo text message as file download

PHPมีเทคนิคเล็กๆน้อยๆสำหรับใครที่ต้องการ echo ข้อความออกมา แต่ต้องการให้คนอื่น download เป็นไฟล์มา แทนที่จะแสดงผลในหน้าจอครับ วิธีการง่ายๆคือ แทนที่เราจะ echo ข้อความออกมาเฉยๆ ก็ให้เราใส่ header เข้าไปก่อนการ echo ตามนี้ครับ More

Ubuntu : Change Time-Zone Settings from the Command line

ubuntu logo

สวัสดีครับ วันนี้ผมมีวิธีการเซ็ต time-zone ของ Ubuntu มาฝากครับ ปัญหามันเกิดจากการ setup server ใหม่แล้ว  time-zone มันไม่ตรงครับ เกือบทั้งหมดไม่น่าจะตรงกับของประเทศไทยนะครับ เช็คง่ายๆด้วยการพิมพ์ date เราก็จะรู้ว่าใช่หรือไม่ More