ทบทวนที่เรียนจากติว PhoneGap ด้วย HTML5 & Jquery Mobile

ผมต้องออกตัวก่อนนะครับว่า ไม่ได้เก่งในการเขียน Mobile Apps. เลยสักนิด เพียงแต่ได้ไปเข้าเรียนมา 2 วัน ผมรู้สึกว่าเป็นศาสตร์ที่น่าลองทำดู และไม่ควรให้มันจางหายไปหลังจากเรียน เดี๋ยววิทยากรจะเสียใจ อิๆ ผมจึงบันทีกไว้แบบใครอ่านแล้วไม่ชอบก็อย่าถือสาผมนะครับ ลองทบทวนจากที่เรียนใน workshop ติว “แนะนำและสอนการพัฒนาเบื้องต้นเกี่ยวกับ Application บนมือถือด้วย PhoneGap โดยใช้ HTML5 & Jquery Mobile” สภาพแวดล้อม – เป็นการติดตั้งทดสอบบน Windows 8 (32 bit) บนเครื่องโน้ตบุ๊ค HP ProBook 6450b RAM 4 GB 1. download JRE http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 32bit ได้ไฟล์สำหรับติดตั้ง jdk-7u25-windows-i586.exe (64bit ได้ไฟล์สำหรับติดตั้ง jdk-7u25-windows-x64.exe) รันไฟล์ดังกล่าวเพื่อติดตั้งลงในวินโดวส์ 2. download ADT http://developer.android.com/sdk/index.html 32bit ได้ไฟล์ที่ zip ไว้คือ adt-bundle-windows-x86-20130729.zip (64bit ได้ไฟล์ที่ zip ไว้คือ adt-bundle-windows-x86_64-20130717.zip) แตกไฟล์ดังกล่าวออกมาแล้ว 32bit ได้ไดเรกทอรี adt-bundle-windows-x86-20130729 ไว้ที่ C:\ (64bit ได้ไดเรกทอรี adt-bundle-windows-x86_64-20130717 ไว้ที่ C:\) สร้าง shortcut ไปยังไฟล์ชื่อ eclipse.exe ในไดเรกทอรี eclipse ไว้บน Desktop ทดสอบรันโปรแกรม eclipse ตั้งชื่อ workspace ไว้ที่ C:\phonegap 3. สร้าง Andriod Device ในโปรแกรม Java – ADT เมนู Windows > Android Virtual Device Manager แท็บ Android Virtual Devices คลิก New… ADV Name: ตั้งชื่อ ADV-7-inch Device: เลือก Nexus 7 Target: เลือก Android 4.3 – API Level 18 (adt-bundle-windows-x86-20130729.zip จะได้ Android 4.3 – API Level 18) Front Camera: None RAM: 768 ทดสอบเปิด ADV-7-inch คลิก Start แล้วรอ ค่อนข้างนาน 4. สร้าง New Android Application File > New > New Android Application ตั้งชื่อว่า phonegappsu ที่เหลือใช้ค่า default หน้าต่อไป Create Project in Workspace ตั้ง Location เป็นชื่อ C:\phonegap\phonegappsu หน้าต่อไป ใช้ค่า default หน้าต่อไป ใช้ค่า Blank Activity หน้าต่อไป ใช้ค่า default (Activity Name: MainActivity) คลิก Finish แล้วจะได้หน้าต่างของรายละเอียดเยอะแยะ 5. download phonegap http://phonegap.com/install/ เลือก PhoneGap2.9.0 ได้ไฟล์ที่ zip ไว้คือ phonegap-2.9.0.zip แตกไฟล์ดังกล่าวออกมาแล้ว ได้ไดเรกทอรี phonegap-2.9.0 6.

Read More »

วิธีติดตั้ง Oracle Virtualbox Guest Additions สำหรับ Ubuntu 12.04 Guest

การใช้งาน Oracle Virtualbox นั้น ต้องติดตั้ง Guest Additions เพื่อให้สามารถใช้งานความสามารถต่างๆได้มากขึ้น เช่น การ Sync Time ของ Guest จากตัว Host ได้, การ Copy-and-Paste ระหว่าง Guest กับ Host, ความสามารถในการ Copy File ข้ามระหว่าง Guest กับ Host  รวมถึง การใช้งาน Share Folder ด้วย สำหรับ Guest ที่เป็น Ubuntu 12.04 Server ซึ่งไม่มี GUI สามารถใช้คำสั่งต่อไปนี้ในการติดตั้ง ใน Guest OS, เลือกเมนู Device > Install Guest Additions … ที่ Prompt ใน Guest ต้องติดตั้ง dkms และ build-essential ก่อน ด้วยคำสั่ง # sudo apt-get install dkms build-essential จากนั้น mount เอา /dev/cdrom มาไว้ที่ /media/cdrom ด้วยคำสั่ง # sudo mount /dev/cdrom  /media/cdrom ติดตั้ง Guest Additions ด้วยคำสั่ง # sudo /media/cdrom/VBoxLinuxAdditions.run จากนั้น Reboot # sudo reboot การ Mount เอา Share Folder จาก Host มาให้ Guest เห็น  โดยอาจจะสร้าง directory สำหรับ Mount เอาไว้ชื่อ /media/vboxshare01 และ Host ได้สร้าง share folder ชื่อ sharename ใช้คำสั่ง # sudo mkdir /media/vboxshare01 # sudo mount -t vboxsf sharename /media/vboxshare01

Read More »

Magic table for trigger in SQL Server

ใน SQL Server ในการ insert ,Update and delete ข้อมูลต่างๆที่เกิดขึ้นจะถูกเก็บไว้ใน magic table อยู่ 2 table คือ inserted,deleted tables inserted table จะเก็บข้อมูล recordที่ถูกดำเนินการ และจะเก็บข้อมุลหลังจากการ Update เสร็จสิ้น Deleted table จะเก็บข้อมูล record ที่มีการลบไปล่าสุดและเก็บข้อมุลเก่าก่อนการ Update Record ไว้ ในการเขียน Trigger สำหรับ table ใน SQL Server สำหรับการ Insert,delete จะไม่มีปัญหาอะไรดึงข้อมูล มาตรวจสอบจาก 2 table นั้นโดยตรง แต่ถ้าเป็นการ Update ก็จะต้องเลือกให้ดีว่าจะเอาข้อมูลอะไร ก่อนหรือหลังการ Update มาเก็บเป็น log นะครับ ตัวอย่างครับ   CREATE TRIGGER [dbo].[LogTrigger] ON [dbo].[zzz] AFTER DELETE,UPDATE AS BEGIN SET NOCOUNT ON; if exists(select * from inserted)     begin               insert into log_OptFac               select *,GETDATE(),’U’ from deleted      end else      begin                insert into log_OptFac                select *,GETDATE(),’D’ from deleted      end END  

Read More »

HowTo: Windows 8 L2TP / IPsec VPN Setup Tutorial

เปิด Network and Sharing Center จาก Control panel คลิกที่ Set up a new connection or network คลิก Connect to a Workplace คลิก Use my Internet connection (VPN) ใส่ค่าต่างๆ ตามรูป คลิก Create แล้วมองที่ Taskbar ด้านล่างขวา คลิกที่รูปการเชื่อมต่อเครือข่าย เพื่อเรียกดูการเชื่อมต่อเครือข่ายต่างๆ จะพบว่ามี  vpn.psu.ac.th เพิ่มขึ้นมา ให้คลิกขวาที่ vpn.psu.ac.th หรือ เลือก View connection properties จะได้ดังรูป คลิกที่ Security ในช่อง Type of VPN เลือก Layer 2 Tunnelinig Protocol with IPsec (L2TP/IPsec) แล้วคลิก Advanced settings เลือก Use preshared key for authentication แล้วในช่อง Key: พิมพ์ว่า vpn key (อ่านว่า วี-พี-เอ็น-เว้นวรรค-คีย์) กด OK เลือก Allow these protocols แล้วคลิกเลือกทุกหัวข้อด้านล่าง ยกเว้น Automatically … แล้วคลิก OK คลิกที่รูปการเชื่อมต่อเครือข่าย เพื่อเรียกดูการเชื่อมต่อเครือข่าย คลิกที่ vpn.psu.ac.th คลิก Connect ใส่ Username และ Password ของ PSU Passport แล้วคลิก OK รอสักครู่ จะได้เป็นดังรูป เมื่อเลิกใช้งาน คลิกที่รูปการเชื่อมต่อเครือข่าย เพื่อเรียกดูการเชื่อมต่อเครือข่าย คลิกที่ vpn.psu.ac.th คลิก Disconnect จบ ขอให้สนุกครับ… หมายเหตุ หากต้องการให้ใส่ username และ password ใหม่ทุกครั้งให้เอาเครื่องหมายถูกหน้าข้อความ Remember my credentials ออกก่อนคลิก Create ในขั้นตอนแรก หากล็อกอินแล้วได้ Error เกี่ยวกับ Certificate ให้กลับมาใส่ vpn key อีกครั้ง Windows Vista/Windows 7 อาจใช้วิธีนี้ได้เช่นกันแต่วิธีการอาจต้องเปลี่ยนแปลงตามความเหมาะสมของ OS ที่มา http://www.hideipvpn.com/2012/03/howto-windows-8-l2tp-ipsec-vpn-setup-tutorial/

Read More »

แนวทางการพัฒนาเว็บแบบ Responsive Web Design

            เนื่องด้วยปัจจุบันความก้าวหน้าทางเทคโนโลยีและการให้บริการอินเตอร์เน็ตความเร็วสูงมีการพัฒนาอย่างต่อเนื่อง จึงส่งผลให้การเข้าถึงข้อมูลข่าวสารเป็นไปได้อย่างรวดเร็วและทั่วถึง ทำให้เหล่าผู้ผลิตรวมถึงนักพัฒนา พร้อมใจกันพัฒนาซอร์ฟแวร์และอุปกรณ์ต่างๆ ให้สามารถใช้งานอินเตอร์เน็ตได้ ไม่ว่าจะเป็นโทรศัพท์ Tablet หรือแม้แต่โทรทัศน์เองก็สามารถใช้งานอินเตอร์เน็ตได้เช่นกัน นั่นหมายความว่าปัจจุบันมีอุปกรณ์มากมายที่สามารถใช้งานอินเตอร์เน็ต ซึ่งมีคุณสมบัติที่แตกต่างกันออกไป เช่น ความกว้าง ความสูง ความละเอียดหน้าจอ และอื่นๆ อีกมากมาย            เมื่อพูดถึงการออกแบบเว็บไซต์เพื่อให้สามารถรองรับการใช้งานกับทุกอุปกรณ์ คนส่วนใหญ่มักมองว่าจำเป็นต้องใช้ต้นทุนในการผลิตที่สูงขึ้น เพื่อใช้ในการออกแบบเว็บไซต์แต่ละเวอร์ชั่นให้รองรับกับการใช้ของอุปกรณ์ที่ มีความลหากหลายได้ ซึ่งความจริงแล้วนั่นอาจเป็นแนวคิดที่ไม่ถูกต้องนัก เพราะ Responsive Web Design คือเทคโนโลยีการออกแบบเว็บไซต์ที่ช่วยให้คุณสามารถสร้างเว็บไซต์ที่รองรับทุกขนาดหน้าจอรวมถึงทุกอุปกรณ์สื่อสารด้วยต้นทุนที่ต่ำกว่า เวลาที่สั้นกว่า และประสิทธิภาพที่สูงกว่าการผลิตเว็บไซต์แยกหลายเวอร์ชั่น โดยในบทความนี้จะพูดถึงแนวคิดและแนวทางการพัฒนา Responsive Web Design แบบเบื้องต้นที่ผู้เขียนได้อ่านและรวบรวมมาให้ผู้ที่สนใจนำไปใช้ประโยชน์ได้ไม่มากก็น้อย Flexible Images ปัญหาที่เกิดขึ้นบ่อยในการออกแบบเว็บไซต์แบบ Responsive Web คือ ปัญหาเกี่ยวกับการแสดงผลรูปภาพบนอุปกรณ์ที่มีขนาดแตกต่างกัน ซึ่งปัจุบันมีเทคนิคมากมายที่ช่วยในการจัดการปัญหาดังกล่าว โดยเทคนิคที่ได้รับความนิยมมากคือนำ CSS มาช่วยในการออกแบบการแสดงผลดังกล่าวเนื่องจากสามารถทำได้ง่าย และไม่ซับซ้อน ดังนี้ img { max-width: 100%; } จากตัวอย่างข้างต้น เป็นการกำหนดขนาดของรูปภาพให้มีความกว้าง 100% แทนการกำหนดขนาดของรูปภาพแบบตายตัว (width: 100px) ทำให้การแสดงผลของรูปภาพจะขึ้นอยู่กับขนาดของหน้าจออุปกรณ์หรือความกว้างของบราวเซอร์แทน ข้อเสีย –         บราวเซอร์ Internet Explorer ยังไม่รองรับ properties ที่ชื่อว่า max-width  แต่สามารถแก้ไขโดยการใช้ properties ที่ชื่อว่า width แทน –          ในบราวเซอร์เวอร์ชั่นเก่าๆ ยังไม่รองรับเทคนิคการทำงานดังกล่าวเช่นกัน ซึ่งสามารถแก้ไขโดยการใช้ JavaScript ช่วยในการทำงานแทนได้ แม้วิธีข้างต้นจะเป็นการแก้ปัญหาการยืดหยุ่นของภาพได้ดีและรวดเร็ว แต่สิ่งที่ไม่ควรมองข้ามคือ ความละเอียดของภาพและเวลาในการโหลดรูปภาพ เนื่องจากในปัจจุบัน นิยมใช้งานเว็บไซต์ผ่านทาง Smartphone หรือ Tablet มากขึ้น การโหลดภาพที่มีขนาดใหญ่และความละเอียดสูงจะทำให้เสียเวลาและใช้พื้นที่โดยไม่จำเป็น Filament Group’s Responsive Images เป็นเทคนิค ที่ไม่เน้นการปรับขนาดของรูปภาพ แต่ใช้วิธีเลือกรูปภาพที่มีขนาดเหมาะสมกับอุปกรณ์มาแสดงแทน ซึ่งช่วยแก้ปัญหาการโหลดรูปภาพที่มีขนาดใหญ่มาแสดงผลในอุปกรณ์ที่มีขนาดเล็ก และลดการใช้พื้นที่โดยไม่จำเป็นได้ โดยการทำงานด้วยเทคนิคดังกล่าวจำเป็นที่จะต้องใช้ไฟล์บางตัว ซึ่งสามารถโหลดได้จาก Github ซึ่งมีขั้นตอนดังนี้ 1) โหลดไฟล์ที่จำเป็นตอนใช้งาน ซึ่งได้แก่  JavaScript, ไฟล์ .htaccess และไฟล์รูปภาพทั้งขนาดเล็กและขนาดใหญ่ 2) ทำการกำหนดคุณสมบติของรูปภาพให้อ้างอิงไปยังไฟล์รูปภาพนั้นๆทั้งขนาดเล็กและขนาดใหญ่ โดยวิธีการอ้างอิงของรูปภาพขนาดเล็กจะต้องอ้างอิงผ่าน attribute  SRC และรูปภาพขนาดใหญ่จะอ้างอิงผ่าน attribute data-fullsrc <img src=”smallRes.jpg” data-fullsrc=”largeRes.jpg”> ซึ่งแท็ก data-fullsrc เป็นแท็กที่เพิ่มเข้ามาใน HTML5 เพื่อใช้ในการโหลดรูปภาพกรณีที่หน้าจอมีความกว้างเกิน 480 pixels จากตัวอย่าง กรณีที่เปิดบนอุปกรณ์ที่มีขนาดความกว้างไม่เกิน 480 จะทำการโหลดภาพ smallRes.jpg ขึ้นมาแสดง แต่ในกรณีที่หน้าจอกว้างเกิน 480 จะทำการโหลดภาพ largeRes.jpg ขึ้นมาแสดง ตัวอย่าง Stop iPhone Simulator Image Resizing ปัจจุบันอุปกรณ์ของค่าย Apple ไม่ว่าจะเป็น IPhone(เวอร์ชั่น 4 ขึ้นไป) หรือ IPad(เวอร์ชั่น 2 ขึ้นไป) ได้นำเทคโนโลยีที่ช่วยในการแสดงผลของหน้าจอได้ดีขึ้นซึ่งมีชื่อเรียกว่า Retina Display ทำให้การแสดงผลของ Responsive Web บนอุปกรณ์ดังกล่าวไม่ได้ขนาดที่เหมาะสมกับที่ได้ทำการออกแบบไว้ ซึ่งมีเทคนิคในการแก้ไขปัญหาดังกล่าวโดยการนำค่า pixels มาเป็นตัวช่วยในการแก้ปัญหา ซึ่งจะขอธิบายในส่วนของเรื่อง pixels ให้ผู้อ่านได้เข้าใจก่อน pixels คือหน่วยที่ใช้วัดค่าความละเอียดของรูปภาพหรือหน้าจออุปกรณ์  pixels แบ่งได้  3 แบบด้วยกัน คือ Physical Pixels, CSS Pixels และ Device Pixels Physical Pixels คือ จำนวน pixels จริงๆ ตาม spec ของ Device นั้นๆ  เช่น iPhone3 เท่ากับ 320×480 ส่วน iPhone4 เท่ากับ 640×960

Read More »