บทความ

กำลังแสดงโพสต์จาก พฤษภาคม, 2011

Best Practices for Speeding Up Your Web Site

Yahoo Developer Network - Best Practices for Speeding Up Your Web Site

ปัญหา jQuery บน ie7 : ตอน attribute

จาก html code ต่อไปนี้ คือต้องการใช้ jQuery ตรวจสอบว่า textbox อันนี้มี attribute disabled หรือไม่เพื่อเอาไปเป็นเงื่อนไขในการทำงานอื่นต่อไป < html   xmlns = "http://www.w3.org/1999/xhtml" >    < head >         < title > </ title >         < script   src = "js/jquery-1.4.3.min.js"   type = "text/javascript" > </ script >    </ head >    < body >         < input   type = "text"   id = "txtd"  disabled  />         < input   type = "text"   id = "txt" />    </ body >    </ html >    ปัญหาคือ ie7 มันไม่ work if  (jQuery( '#txt' )[0].attributes[ 'disabled' ] == undefined)        // แบบนี้ ถ้า ie7 จะ ret...

FancyBox not work in UpdatePanel

ปัญหาที่พบ เวลาเรานำ FancyBox เข้ามาใช้ใน Web Page ของเรา เราจะต้องทำการเรียกคำสั่ง $("a").fancybox(); ที่ $(document).ready(function() { .. } เพื่อ initialize FancyBox ซึ่ง Web เราก็จะสวยงามตามประสา แต่นรกมาเยือนเมื่อเราเขียน web app บน asp.net โดยใช้ "ASP.NET AJAX Control Toolkit" และใช้ Component "UpdatePanel" มาครอบไว้ที่ GridView มันจะทำให้ web page ของเราสามารถ send request แบบ asynchronous ได้ (พูดง่าย ๆ คือ page จะไม่แว๊บ เวลา server control ทำงาน) เช่น กดปุ่ม delete บน GridView แล้วเขียน Code ให้ Refresh GridView ผลที่ได้คือ page จะไม่แว๊บเลย แต่ถ้าใน GridView มี link ไปยังรูปภาพที่เป็น FancyBox มันจะไม่ทำงาน (คือ FancyBox ไม่ขึ้น จะเป็นการ Link โดยเปิดรูปภาพเฉย ๆ) สาเหตุ ทุกครั้งที่มีการเรียก asynchronous ผ่าน AJAX Control Toolkit มันจะ refresh ใหม่ทุกครั้งเพียงแต่เราไม่เห็น และการ Refresh Page แบบพิเศษนี้แหละที่ทำให้ jQuery ไม่สามารถจับ event $(document).ready(...) ได้ การแก้ปัญหา เราก็แค่สั่ง initialize FancyBox ใหม่อีกครั้ง เมื่อมีการ...

Singleton Pattern

Singleton pattern เป็น design pattern ที่ใช้จำกัดจำนวน object ที่ถูกสร้างในขณะที่โปรแกรมทำงาน มีประโยชน์ในสถานการณ์ที่ทั้งระบบต้องมี object เพียงตัวเดียวเพื่อจะได้ไม่เกิดการทำงานซ้ำซ้อนกันเช่น class สำหรับ setting ค่าต่าง ๆ การนำไปใช้งาน Singleton patter ถูกสร้างโดยเขียน class ให้ซ่อน constructor ทั้งหมดไว้จาก class อื่นๆ คือให้ constructor เป็น private จากนั้นสร้าง method มีหน้าที่สร้าง object ของ class นี้ ถ้ายังไม่ถูกสร้างและเก็บ object ตัวที่ถูกสร้างใหม่นี้ไว้ จากนั้นส่งคืน object เพียงตัวเดียวนั้นให้ทุกครั้งที่มีการร้องขอ object ของ class ข้อควรระวัง สำหรับการใช้ singleton pattern ในโปรแกรมที่ทำงานแบบ multi-threading คือหลายส่วนของโปรแกรมอาจจะพยายามเรียก method ให้สร้างอ็อบเจกต์เป็นครั้งแรกในเวลาเดียวกัน อาจทำให้มีการสร้าง object ขึ้นมาเกินหนึ่งตัวได้ ในกรณีนี้ควรป้องกันโดยอนุญาตให้เพียง 1 thread เรียก method ได้ในขณะใดขณะหนึ่ง (mutually exclusive) ตัวอย่าง code เพื่อใช้งาน singleton sealed  class  Singleton {        privat...