Posts

Showing posts from 2013

[Android] Genymotion : Android Emulator เร็ว แรง และเจ๋ง

Image
นักพัฒนา Android Application ส่วนใหญ่มีปัญหากับการทดสอบโปรแกรมเป็นอย่างมาก เพราะความช้าของโปรแกรมจำลองเครื่อง(Emulator) ที่มากับ ADT หรือชุดเครื่องมือพัฒนาจาก google เอง ทำให้จำเป็นต้องใช้เครื่องจริงในการทดสอบ และถ้าอยากทดสอบหลายๆ เครื่อง ก็ต้องมีเครื่องหลายๆรุ่น โอ้ววว แค่คิดก็รู้สึกไส้กิ่วไม่เหลือตังกินข้าวแล้วครับ โดยปกติ เราก็จะต้องลง Android SDK รวมถึง plugins ต่างๆ สำหรับ eclipse  เพื่อใช้ในการเขียนแอพ ซึ่งใน SDK นี้ก็จะมีทั้ง library, emulator และเครื่องไม้เครื่องมือต่างๆที่จำเป็นมาด้วยแล้ว ซึ่งหลังจากติดตั้งครบแล้วก็ต้องเลือกโหลด System Image สำหรับแต่ละเวอร์ชั่นมาอีกที เพราะแต่ละตัวก็ไม่เหมือนกัน เช่น jellybean , kitkat เป็นต้น Genymotion ทำให้เราสามารถข้ามในส่วนสุดท้ายไปได้ คือ ไม่ต้องโหลด  System Image เพิ่มเติมจาก Android SDK มา genymotion จะมีส่วนให้โหลดต่างหาก (ใครจะโหลดทั้งของ stock และ genymotion ก็ไม่ว่ากัน แต่เปลืองเนื้อที่ในเครื่องนะเออ! :P) การทำงานของ Genymotion จะทำงานผ่าน VirtualBox  แต่สำหรับใครที่มีความรู้ตรงนี้ ขอบอกก่อนว่า start ผ่าน VirtualBox

[Java] Java Servlet พื้นฐานของการพัฒนา Java Web Application

Image
จากที่เคยพูดถึงว่า Java Servet คืออะไร?  ไปแล้วนั้น อาจทำให้บางคนงง เพราะหนักไปทางเปรียบเทียบกับ PHP ซะมากกว่า แต่คราวนี้ เราจะมาทดลองสร้าง Java Web Application กันดูนะครับว่า concept และรูปแบบการเขียนเว็บของ Java นั้น เป็นอย่างไร พูดถึงเว็บ แน่นอนเราต้องนึกถึง HTML Javascript และ CSS กันก่อนทั้ง 3 อย่างนี้ทำงานฝั่ง client ส่วนฝั่ง server สำหรับโพสนี้ก็คือ java ครับ เตรียมของก่อน Editor ผมใช้ Eclispe  Server ผมใช้ JBoss 7.1 สร้างโปรเจคและไฟล์ให้พร้อม create  Dynamic Web Project  ("JSP_JavaServlet") create  HTML File  ("index.html") create  Java Class  ("Controller.java")  HTML File : index.html ที่จริงไฟล์นี้ก็เป็น html file ธรรมดาๆ เลยครับ ไม่ได้มีอะไรหวือหวาไปกว่านั้นเลย ในที่นี้ผมก็จะสร้าง tag form กับปุ่ม เพื่อให้มีการ submit ไปยัง Controller.java นะครับ <form action="./Controller" method="GET"> <input type="submit" /> </form> Java Class : Controller.java ขั้นตอนนี้อยากให้ลอ

[Android] โหลดแอพนอก ผ่าน Google Chrome

Image
กระทู้นี้เกิดขึ้นจาก ผมอยากเล่น Plants vs. Zombies™ 2  ครับ แต่ ณ ตอนนี้สามารถโหลดได้แค่บางประเทศเท่านั้น ด้วยความอยากเล่น เลยต้องหาวิธีกันซะหน่อย อ้อ... เรื่อง ROOT ไม่จำเป็นนะครับ เพราะตอนนี้เครื่องผม (Sony Xperia Z : firmware 10.3.1.A.2.67) ยังหาวิธีแบบไม่ unlock bootloader ไม่ได้ ใครรู้ก็แนะนำผมบ้างนะ ^_^ ภาพนี้คงทำให้เซ็งได้ไม่น้อย เฮ้ยย ฟรีอ่ะ ทำไม incompatible?? อยากเล่นนนน ในกรณีนี้ เป็นเรื่องของประเทศที่โหลดครับ และเรากำลังจะจัดการกับมัน ปล. วิธีนี้ไม่สนับสนุนการละเมิดลิขสิทธิ์นะคร้าบบ (แอพเสียเงินทำไม่ได้) เอาละมาเริ่มกันเลย 1. โหลด Google Chrome Extension นามว่า APK Downloader จาก  xda-developers 2. เปิด chrome://extensions/  (Tools -> Extensions) จัดการ install โดยการลากไฟล์ *.crx ที่โหลดมาวางใส่เลย 3. Google Chrome จะให้เรายืนยันการ install extension ก็กด Add ไปครับ 4. แล้วเราก็จะเห็น APK Downloader มาใน extension เราแล้วครับ คลิกเข้าไปที่ Options  5. ก่อนที่จะกรอกข้อมูลใน APK Downloader Options ให้ไปเอา Google Service Framework ID (Android Device

Expression Language (EL) และการเรียกใช้ตัวแปรจาก Scope ต่างๆ

Image
ก่อนหน้านี้ เราได้พูดถึง  Client กับ Server ใน web app.  กันไปแล้ว ตามด้วย  TagLib กับการลด Scriptlet  ซึ่งถ้าเข้าใจแล้ว ก็ควรมีอีกอย่างหนึ่งที่ควรจะรู้จักนั่นก็คือ Expression Language หรือที่เรียกกันสั้นๆ ว่า "อีแอล (EL)" เป็นรูปแบบการเขียน web application อีกแบบหนึ่งที่ใช้สำหรับส่วนของ view ใน web app. ซึ่ง EL ก็จะทำงานฝั่ง server เช่นเดียวกับ taglib หรือบาง taglib ก็จะมีการให้ใช้ EL ควบคู่กันไป EL สามารถใช้ดึงค่าจาก scope ต่างๆได้ โดยเมื่อเปรียบเทียบกับ java จะได้ดังนี้ Expression Language Java (Scriptlet with implicit objects) ${applicationScope.test} application.getAttribute("test"}; ${sessionScope.test} session.getAttribute("test"); ${requestScope.test} request.getAttribute("test");; ${pageScope.test} pageContext.getAttribute("test"}; ${test} pageContext.findAttribute("test"); ${param.test} request.getParameter("test")

TagLib กับการลด Scriptlet สำหรับหน้า Web Application

ย้อนกลับไป blog เก่าๆ  html + javascript + css  ก็พอจะทำให้รู้จัก html, javascript, css คร่าวๆ แล้ว ประกอบกับ  Client กับ Server ใน web app. คืออะไร  ที่ทำให้เข้าใจว่าภาษาเหล่านั้น มันเป็น output สุดท้ายของ web application ก่อนที่ web browser จะสร้างเป็นรูปเป็นร่างให้เราเห็นสวยๆงามๆ ครับ Scriptlet เป็นชื่อที่ใช้เรียกแทน การเอาภาษาโปรแกรมมาเขียนในลักษณะของ script โดยใช้ tag พิเศษในหน้า html เช่น JSP(Java Server Pages) ถ้าเราใช้ scriptlet ก็คือเราต้องเขียนโปรแกรมภาษา Java ไว้ภายในนั่นเอง ยกตัวอย่างกันหน่อย <html> <body> <% System.out.println("Playing on server"); %> </body> </html> ดูๆ แล้วก็ปกติดีใช่ไหมครับ โหลดหน้าเว็บนี้ขึ้นมา server ก็จะ print ค่าให้เราเห็นใน console แปลว่าโค้ด scriptlet ส่วนนี้ก็ไม่ได้ทำอะไรเลยกับหน้าจอ สุดท้าย html ก็จะเป็นว่างๆไป ทีนี้มาลองดูตัวอย่างนี้กันครับ <html> <body> <% String textbox= request.getParameter("textbox"); if("text&qu

Client กับ Server ใน web app. คืออะไร

Image
เรื่องนี้อาจเป็นเรื่องพื้นๆ สำหรับ Web Developer หลายๆท่าน แต่ที่ผมเขียนขึ้นมา เพราะว่าผู้ใช้งาน(Users) หลายคน จำเป้นต้องรู้ และเข้าใจเบื้องหลังซักนิด เพื่อให้รู้จักการทำงานของ Web Application มากขึ้นครับ Web Developer เวลาพัฒนาโปรแกรมจะทำเครื่องตัวเองให้เปรียบเสมือนเป็น server และ client ในเครื่องเดียวกัน เพื่อง่ายต่อการพัฒนาและทดสอบโปรแกรม และเมื่อพัฒนาและทดสอบเรียบร้อยแล้ว ก็จะมีกระบวนการที่เรียกว่า deploy หรือเรียกแบบบ้านๆว่า ลงโปรแกรม ให้กับเครื่อง server เพื่อใช้งานจริง พูดถึงการเขียนโปรแกรม ใน Web Application ก็จะมี source code อยู่ 2 ส่วนแบบกว้างๆ คือ source code ที่ทำงานฝั่ง client  html, javascript, css เท่านั้นที่ client จะรู้จัก(อาจมี javascript framework ถ้าตามแกะไหวก็จะเห็นเป็น javascript ข้างในอยู่ดี) ซึ่งทั้งหมดนี้จะถูก compile ด้วย web browser โดยเราสามารถเห็น source code ที่ web browser จะวาดเป็นรูปเป็นร่างให้เราโดยการ view source ดูก็ได้ แต่ปัญหาคือ web browser มีหลากหลายค่ายเหลือเกิน สิ่งที่ปรากฏบนหน้าจอของผู้ใช้มักจะไม่เหมือนกันซะทีเดียว ขึ้นอยู่กับ web brows

readonly & disabled : HTML Attribute

สิ่งที่ผมจะเขียนต่อไปนี้ เป็นเรื่องง่ายๆ ที่ผมพลาดเอง.... #กว่าจะรู้ก็ น้ำตาจะไหล... เล่าให้ฟังเล่นๆนะครับ(paragraph นี้สาระไม่ค่อยมี) โปรแกรมที่ผมทำตอนนั้น เป็น textbox ธรรมดาที่จะต้อง submit ค่าเข้า servlet  แต่ในบางโหมดผมก็ต้องให้มันไม่สามารถแก้ไขข้อมูลได้ และผมต้องการ clear ค่าใน textbox นั้นๆ ด้วย เพื่อเก็บลงฐานข้อมูลเป็นค่าว่างๆ สิ่งที่ผมทำก็คือ ใช้ javascript ใส่ disabled เข้าไป แต่ผลปรากฏว่า servlet ไม่ได้ค่าว่างมาอย่างที่ตั้งใจไว้ ประกอบกับโปรแกรมที่ผมทำอยู่ก็ไม่ได้เรียก servlet โดยตรง มี Struts Framework เข้ามาใช้ด้วย ตอนนั้นก็เลยไปโฟกัสที่เรื่องของ scope ของเว็บ  (หลงทางเข้าไปอีก) ไปๆมาๆ สุดท้ายได้คำตอบว่า ต้องเปลี่ยน disabled เป็น readonly แทน... จากที่ผมหลงทางไปไกลแล้วนั้น ผมก็มานั่งคิดทบทวนว่า มันเป็นได้ยังไง แค่เปลี่ยน attribute html เนี่ยนะ!! หลายคนอาจจะรู้อยู่แล้ว ยอมรับเลยครับว่า "ผมเพิ่งรู้" และผมก็กำลังจะอธิบายให้ทุกคนได้รู้ด้วยครับ... disabled กับ readonly ดูผ่านๆ ก็คือพิมพ์ในช่องไม่ได้เหมือนกัน แต่ disabled จะเปลี่ยน textbox ของเราเป็นสีเทาด้วย แล

Web Container คืออะไร

Image
มีคำถามเข้ามาเกี่ยวกับเรื่องของ Container ที่เป็นใจกลางสำคัญในการขับเคลื่อน web application Container คิดง่ายๆ มันก็เหมือนตู้คอนเทนเนอร์เนี่ยแหละ เป็นกล่องเก็บอะไรซักอย่างภายใน เพียงแต่ไม่ได้เป็นของที่จับต้องได้เหมือนที่รถบรรทุกขนไปขนมากัน ในเรื่องของ web application ที่ผมรู้จักก็มี web container กับ ejb container มันก็คือกล่องที่เราไว้เก็บเว็บ หรือเก็บ ejb นั่นเอง โดยของในกล่องที่ว่านี้ อาจเป็น library ที่จำเป็นต่อการใช้งานนั้นๆ หลังจากตรงนี้ ความสงสัยก็จะเริ่มเกิดแล้ว ผมจะแตกประเด็นออกเป็นทีละคำถามแล้วกันนะครับ(มีคำถามอีกส่งมาใน comment ครับ ถ้าตอบได้จะตอบ ถ้าตอบไม่ได้จะลองหาข้อมูลดูครับ) Q: "Container คืออะไร" A: ตัวของ Container จะมี library เฉพาะของตัวเอง ก็ยังจะมีการควบคุมต่างๆ ด้วย เช่น transaction, security, life cycle เป็นต้นครับ Q: "ต่างกับ framework ตรงไหน" A: คำว่า framework มันทำให้ผมรู้สึกว่ามันมีอะไรมาครอบ java ตัวหลักก็จริงอยู่ แต่ framework ไม่ได้มาจัดการอะไรนะครับ framework สร้างขึ้นมาก็เพื่อให้เราได้ใช้งานด้านเฉพาะนั้นๆให้ตรงจุด เป็นต

[Android] root แล้วได้อะไร

Image
มาอีกแล้วครับ กับเรื่องของการ ROOT คราวนี้ เราจะมาพูดถึงมันกันนะครับว่า ถ้าทำแล้ว เราจะได้อะไร สำหรับคนที่มีคำถามว่าการรูท(root) คืออะไร ลองติดตามที่ link ด้านล่างเลยนะครับ ผมเคยเขียนไปแล้วหลายครั้ง ซึ่งครั้งนี้ ผมก็จะพูดรวมๆของ link เหล่านั้นด้วยครับ ทบทวนกันอีกครั้ง สำหรับคำถามที่ว่า root คืออะไร ผมเคยเขียนไปแล้วว่า มันคือ สิทธิ์ที่สูงกว่าการใช้งานปกติ และถ้ายังไม่เข้าใจล่ะก็ ลองนึกถึงเวลาเราเล่นเว็บครับ ปกติคนใช้ทั่วไปก็เข้าเว็บมาอ่าน แต่จะมีคนอีกกลุ่มหนึ่งที่มีสิทธิ์สูงกว่าครับ คือสามารถปรับแต่งหน้าจอ เขียนบทความ เป็นต้น คนเหล่านี้เรามักจะเรียกเขาว่า admin ครับ แต่สำหรับเราชาว android ก็จะเรียกว่า superuser หรือผู้มีสิทธิ์เข้าถึง root ของเครื่องนั่นเองครับ หลายคนมักจะคิดว่า root แล้วจะทำให้ลง app เถื่อนได้ แน่นอนว่าเป็นความเชื่อผิดๆครับ Android เปิดให้ลง app ภายนอกได้อยู่แล้วครับ สิ่งที่จะได้หลังจากการ "ROOT"  เราจะได้สิทธิ์ superuser มาครับ(บอกตรงนี้ก่อนว่า "สิทธิ์์" นะครับ ไม่ใช่ app) สิทธิ์ที่ว่านี้จะทำให้เราเข้าถึงโฟลเดอร์ที่มีอยู่ทั้งหมดจริงๆของเค

[Java] Java ไม่มี Pass by Reference

Image
ผมเองเข้าใจมาตลอดว่า Java นั้นมี pass by reference ประกอบกับหนังสือภาษาไทยของดร.ท่านหนึ่งก็ได้กล่าวไว้อย่างนั้นเช่นกัน แต่ไม่นานมานี้ ผมก็ได้พบกับความจริงว่ามันไม่ได้เป็นอย่างนั้นเลย ก่อนที่ผมจะเริ่มการอธิบายที่คาดว่าจะเยอะ ขอแนะนำเลยครับว่า ถ้างง อยากให้ค่อยๆอ่านครับ เพราะผมเองก็งงเหมือนกันในช่วงแรกๆ แต่พอได้เห็นตัวอย่าง ได้ลองทำตาม ลองจินตนาการดู ผมก็เข้าใจแล้วครับว่า มันเป็นแบบที่เขาว่าจริงๆนั่นแหละ จากบทความที่ผมเคยเขียนนี้  http://lordgiftblog.blogspot.com/2012/07/java-pass-by-reference-pass-by-value.html  ทำให้ผมรู้ว่า ผมเคยเข้าใจผิด และไม่แปลกที่จะสงสัยมัน โดยในบทความที่ว่านี้ผมพยายามจะอธิบายว่า Java มัน pass by reference อยู่เบื้องหลัง แต่ถ้ามันทำ pass by reference จริงๆ มันก็ต้องมี pointer เข้ามาเกี่ยวข้องด้วย จริงไหมครับ ทีนี้ก็จะมีอีกคำหนึ่งที่ทำให้เรารู้สึกขัดแย้งขึ้นมาก็คือ "java ไม่มี pointer" หลายคนอาจจะเคยได้ยินมา(เป็นเหตุผลนึงที่แรกๆ ผมอยากเขียน Java แต่...) เอาล่ะ ผมจะเริ่มอธิบายด้วยโค้ดภาษา C++ อย่างง่ายๆ พอให้เห็นภาพนะครับ C++ Pass by reference

โปรแกรมเมอร์ไทย วิกฤติจริงหรือ?

Image
หลังจากที่มีเสียงวิพาษ์วิจารณ์ต่างๆ นาๆ เกี่ยวกับอาชีพนักพัฒนาโปรแกรมคอมพิวเตอร์ อาชีพที่อยู่เบื้องหลังระบบการทำงานที่เกี่ยวข้องกับอุปกรณ์อิเล็กทรอนิกส์ตั้งแต่อุปกรณ์ใหญ่ๆ ถึงอุปกรณ์เล็กๆ "โปรแกรมเมอร์(Programmer)" มีหน้าที่พัฒนาโปรแกรม หรือพูดง่ายๆว่า เขียนโปรแกรม ด้วยคอมพิวเตอร์ ซึ่งก็หมายถึงจะต้องประดิษฐ์ทุกสิ่งอย่างจากหน้าจอว่างๆ จนทำให้มันตอบสนองตามที่ผู้ใช้งานต้องการ เช่น ต้องค้นหาข้อมูลได้นะ ต้องคิดคำนวณได้ถูกต้องนะ โดยผู้ใช้งานจะไม่สนใจว่าการทำงานเบื้องหลังจริงๆแล้ว มันทำงานอย่างไร สิ่งที่โปรแกรมเมอร์จะต้องคิดเสมอ  คือ ซอร์สโค้ด(Source Code) ที่เขียนต้องสามารถให้คนที่จะมาทำงานต่อจะสามารถอ่านได้ด้วย  ถ้าโปรแกรมทำงานช้า สาเหตุจะต้องไม่ได้มาจากซอร์สโค้ด เช่น การทำงานซ้ำซ้อน การทำงานที่ยุ่งเหยิง การจัดการหน่วยความจำ โดยเฉพาะภาษาที่ใช้ memory สูง ต้องระวังให้ดี ถ้าเข้าใจเบื้องหลังของภาษาที่ตัวเองเขียนจะดีมาก ไม่ใช่เพียงแค่คิดว่าโปรแกรมต้องทำงานเป๊ะๆ ตามฟังก์ชันงานเท่านั้น แต่บางครั้งก็มีพฤติกรรมแผลงๆ จากผู้ใช้งานเหมือนกัน ถ้าไม่อยากแก้บ่อยๆ โปรแกรมเมอร์ต้องระวัง

[Java] รู้จัก Generic Type ในการเขียนโปรแกรม

Image
Generic หรือ template สำหรับการเขียนโปรแกรมนั้น มีให้เห็นกันได้บ่อยๆ บางคนเคยใช้ และใช้เป็น แต่อาจจะไม่รู้ชื่อเรียกของมัน Generic เป็นการระบุ Data type ของตัวแปรที่จะใช้ใน Class หรือ Method นั้นๆ ให้มีลักษณะ dynamic ตามการเรียกใช้งาน หรือจะพูดง่ายๆ การทำงานมันก็เหมือนกับ Function Overloading นั่นแหละ หรือ อาจจะประยุกต์เอา operator instanceof มาใช้กับ Generic ให้ความสามารถเหมือน Function Overloading เด๊ะๆ ก็ทำได้.. เวลาเราเขียน List ถ้าใช้ editor เก่งๆ หน่อย (ผมใช้ eclipse) ก็จะสังเกตได้จาก warning ที่จะคอยเตือนเราว่า Infer Generic..... ถ้าเราไม่ใส่โปรแกรมก็ทำงานได้ ไม่ผิด แต่ถ้าเราอยากจะใช้ List ที่มีสมาชิกเป็นได้แค่ชนิดตัวแปรที่เรากำหนด เช่น อยากให้เป็น List ของ String เท่านั้น Generic นี่แหละ ช่วยคุณได้ !! สมมติว่าผมสร้าง ArrayList ซึ่งเป็นคลาสที่ถูกเขียนด้วย Generic ขึ้นมาด้วยการใช้ Code completion(Ctrl+Space) มันจะเป็นลักษณะนี้ครับ เราจะเห็นว่ามี <E>  ที่ขึ้น error ตัวแดงอยู่ เพราะว่ามันไม่รู้ว่า E ในที่นี้คืออะไรครับ E ที่ปรากฏอยู่นี้เป็นตัวที่บอกว่าเราจะให้

[Android] รู้จักเล่น Custom Rom ให้ปลอดภัย

Image
หลังจากที่ผมได้เขียนวิธีการลง Rom ให้กับ Android ตัวโปรดของเรากันแล้ว ( วิธีลง Custom Rom ให้กับ Android ตัวโปรด ) วันนี้เลยอยากจะแนะนำมือใหม่ให้รู้จักเล่น รู้จักใช้ เพื่อให้เกิดความปลอดภัยกันนะครับ ก่อนอื่นต้องอธิบายก่อนครับว่า ทำไมผมถึงต้องเขียนบทความนี้ขึ้นมา ? การลง Custom Rom ก็คล้ายๆกับการลง Windows ให้กับคอมฯของเรานั่นแหละครับ ที่ทำก็เพื่อเปลี่ยนระบบปฏิบัติการ (OS) ของเครื่องนั่นเอง Android เป็นระบบปฏิบัติการจาก Google ที่เปิดให้ค่ายอื่นๆเอาไปทำเพิ่มเติมได้ เช่น Samsung, LG, Sony เป็นต้น เมื่อ Android version ใหม่ออกมา แต่ละค่ายก็ต้องทำให้เพื่อส่ง update ไปยังลูกค้า แต่ก็อาจจะไม่ทำให้ก็ได้ ขึ้นอยู่กับปัจจัยหลายๆอย่าง ดังนั้น ก็มีนักพัฒนามือที่ 3 เอา Android ไปทำต่อ แล้วปล่อยมาให้แต่ละรุ่น เพื่อได้เอาไปลงกัน ก่อนจะลง แน่นอนว่าต้อง Backup ข้อมูลเสมอ เพราะส่วนใหญ่แล้ว เราจำเป็นต้อง Factory Reset เครื่องก่อนทั้งสิ้น แนะนำให้หา rom ศูนย์ พร้อมวิธีลงมาเอาไว้ก่อนครับ เผื่อลงแล้วมีปัญหา ผมพลาดมาแล้วครับ ลองลง rom ตัวแรกจอขาวเลย เครียดเลยตอนนั่งหาวิธีแก้ ถ้ายังไงกันเหนียวไว

IP rating มาตรฐานกันน้ำกันฝุ่น

Image
หลายคนคงได้เห็นมือถือกันน้ำกันฝุ่นมากันแล้วหลายรุ่น โดยเฉพาะมือถือของค่ายผู้ผลิตเครื่องเล่นเกมส์ Play Station อันโด่งดัง แต่เคยสังเกตกันบ้างไหมว่า ถ้ามันกันน้ำกันฝุ่นได้ จะต้องมีมาตรฐานอยู่ตัวนึงที่เรียกว่า "Ingress Protection Rating" (IP) โทรศัพท์ทุกรุ่นที่กันน้ำกันฝุ่นได้ เมื่อโฆษณาตัวเองจะต้องมีอย่างหนึ่งที่บอกมาด้วย เช่น IP55 IP57 IPX5 เป็นต้น และเราจะมาทำความรู้จักมันกัน IP แน่นอนอยู่แล้วว่ามาจาก Ingress Protection ส่วนตัวเลขด้านหลังนั้นจะต้องแยกออกเป็น 2 ตัว โดย ตัวแรก ระบุถึง ของแข็ง ซึ่งสามารถป้องกันขนาดต่างๆ ยิ่งระดับสูง ก็ยิ่งกันของแข็งเล็กๆได้ ตัวที่สอง ระบุถึง ของเหลว ซึ่งจะเป็นการทดสอบด้วยน้ำ หยดจากทิศทางเดียว, หลายทิศทาง, แรงฉีด, จมน้ำ เป็นต้น แต่ละระดับจะกันน้ำกันฝุ่นได้ระดับไหน ผมว่าภาพนี้ก็เพียงพอที่จะแทนคำอธิบายแล้วครับ ^^ ทีนี้บางคนอาจจะได้เจอกับ IPX ซึ่งมองดูแล้วอาจจะคลายกัน กับ IP แล้ว X มาจากไหน ?? เท่าที่ผมลองหาข้อมูลดูแล้ว X ก็แปลว่า ไม่มีความสามารถนั้นๆ เช่น IPX5 กันน้ำได้ระดับ 5 แต่ไม่กันฝุ่น หรือ IP6X ก็คือกันฝุ่นได้ระดับ 6 แต

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

Image
ปัญหานี้ อาจเกิดขึ้นกับใครหลายๆคนที่ชอบล็อคหน้าจอด้วยรหัสแบบต่างๆ ซึ่งเหตุสุดวิสัยแบบนี่ย่อมเกิดขึ้นได้เสมอ ข้อดีของการตั้งรหัสก็คือ ทำให้เครื่องเราปลอดภัยเวลาหายครับ คนที่เอาไปปลดล็อคไม่ได้ก็ทำอะไรกับเครื่องเราไม่ได้ จะเอาข้อมูลไปก็ไม่ได้ครับ และแปลว่าเรายังมีโอกาสตามเครื่องเจอครับ [ว่าแล้วก็ขอแนะนำ  Android Device Manager  ไปลองใช้กันนะครับ] แต่ข้อนี้ก็อยู่ที่แต่ละค่ายว่าจะตั้งความปลอดภัยไว้แค่ไหนครับ ปัญหาก็มีอยู่ว่า ถ้ามีคนเอาเครื่องเราไปเล่น หรือพยายามปลดล็อคเครื่องของเราโดยที่ไม่รู้รหัส ก็มั่วไปเรื่อยจนครบจำนวนครั้งของมัน เครื่องก็ถูกล็อค ไอ้คนทำให้ล็อคเขาก็ไม่รับผิดชอบหรอก เดือดร้อนเจ้าของสิครับ โดยเครื่องจะให้เราใส่ Google Account ที่ลงทะเบียนไว้กับเครื่อง ถ้าจำ username, password ได้ก็โชคดีไป แต่ถ้าจำไม่ได้ ก็เริ่มยากขึ้นละครับ เครื่องมันจะเตือนแนะนำให้เราไปที่  www.google.com/accounts/recovery  เพื่อช่วยในกรณีที่ลืมรหัสผ่านอะไรทำนองนี้  แต่ถ้าจำอะไรไม่ได้เลย (ตอน set เครื่องให้คนอื่นทำให้) ก็เตรียมตัวรับสภาพได้เลยครับ ผู้ใช้หลายคนก็จำ Google Account ตัวเองไม่ได้ เพราะตอ

NFC Technology

Image
NFC เทคโนโลยียุคใหม่ที่หลายคนอาจจะยังไม่เคยใช้ (ผมก็ด้วย) อันที่จริงมันก็ยังไม่แพร่หลายนัก แม้ว่าจะถูกใส่มาใน Smartphone หลายรุ่นแล้ว เท่าที่ผมจำได้ รู้สึกว่า Nexus S เป็นตัวแรกที่มี NFC แล้วหลังจากนั้นรุ่นอื่นๆก็มีตามมา ในที่นี้พูดถึงแต่ฝั่ง android นะครับ เพราะว่า ฝั่ง apple แม้แต่ iPhone 5 ที่เป็นรุ่นปัจจุบัน ณ วันนี้ ก็ยังไม่ได้ใส่ NFC เข้ามา NFC หรือชื่อเต็มๆ ก็คือ Near Field Communication คือการสื่อสารระหว่างอุปกรณ์ที่ต้องนำมาใกล้กัน รับ-ส่งข้อมูลซึ่งกันและกันภายในระยะขอบเขตที่ NFC ทำได้ (ประมาณ 5-10 ซม.) ถึงแม้ว่าความเร็วในการรับส่งอาจไม่เท่า Wireless หรือ Bluetooth แต่มันดีกว่าตรงความสะดวก คือ เอาอุปกรณ์วางใกล้ๆกัน ก็เสร็จ ไม่ต้องมาเสียเวลาหาสัญญาณ ประหยัดเวลากว่ากันเยอะ NFC ทำงานคล้าย RFID ที่เราอาจเคยเห็นกันในรูปแบบ keycard หรือ บัตรพนักงานต่างๆ คือ มี Reader คือเครื่องอ่าน และ Tag ที่เป็นการ์ด เมื่อ Reader อ่านข้อมูลได้ตรงกับที่กำหนดไว้ ก็เปิดประตูได้ แต่ NFC จะเป็นได้ทั้ง Reader และ Tag ซึ่งแน่นอนว่ามันสามารถใช้แทน RFID ได้เลย แต่ก็อยู่ที่เครื่องไม้เครื่องมือที่มีอยู่ พ

"SVN & Git" ความแตกต่างระหว่าง Version Control ตัวเก่ง

Image
Version Control System คือ ระบบที่คอยจัดการ backup source code ของเรา โดยเก็บเป็นลักษณะ version ต่างๆ เช่นในกรณีเกิดปัญหาขึ้น ก็สามารถหยิบเอา source code ตัวเก่าที่เคยใช้งานได้มาแทน พูดง่ายๆ ก็คล้ายๆ กับ Undo ที่เราทำกันนั่นแหละ แต่ว่า Version Control ยังเป็นตัวกลางที่ทำให้ source code ของแต่ละเครื่อง (แต่ละ programmer) มี source code ที่ตรงกันด้วย ซึ่งโดยปกติทั่วไปแล้ว programmer มักจะทำโปรแกรมให้เสร็จสมบูรณ์ และใช้งานได้ก่อน จึงค่อยโยนขึ้นไปที่ repository เพื่อให้คนอื่นดึงไปใช้ต่อไป Version Control ตัวที่เด่นดังอยู่ตอนนี้ก็มีอยู่ 2 ตัว คือ Subversion(SVN) และ Git ซึ่งผมเองก็ได้ใช้มาแล้วทั้ง 2 ตัว แต่จะเต็มรูปแบบกับ SVN ซะมากกว่า Repository เป็นคำศัพท์ที่เจอได้บ่อยใน version control หมายถึง ที่เก็บ source code ของเรา ถ้าไม่มีก็ลองไปใช้บริการของ Google Code หรือ GitHub  ก็ได้ครับ **ใครรู้จักตัวอื่นอีกก็ช่วยแนะนำด้วยนะครับ ^^ local / remote เป็นคำที่มักใช้เรียกแทน repository ในเครื่องเรา(local) และ repository บน server(remote) ซึ่ง remote จะเป็นตัวกลางระหว่างทีม มาถึงเรื่อง

Facebook Comment

Recent Posts

Popular post of 7 days

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Popular

[Java] Java 8 DateTime ใหม่ ไฉไลกว่าเดิม

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

เรื่องของ ++i กับ i++

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Java] Java Static Variable และ Static Method

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)