Page 4 of 9

เปิดใช้งาน Remote Desktop บน ISA 2006

เขียนเมื่อ 2009-01-16 17:01:24 +0700

ปกติแล้ว ที่ทำงานผมจะใช้ ISA คุมสิทธิ์การใช้เน็ต ก็เคยแนะนำให้ใช้ ChilliSpot แต่พอเห็นว่าเป็น Linux แล้ว คนก็ร้องยี้กันเป็นแถว ไม่รู้ว่าจะกลัวอะไรหนักหนา แล้วพอลง ISA ปุ๊ป Remote Desktop ที่เคยใช้งานกันได้อยู่ ก็ดันใช้ไม่ได้ (เฉพาะเข้าไปที่ Server นะ) งานก็เลยเข้าตัวผมซะละ

ISA จริงๆ มันก็เซ็ตไม่ยากเนอะ แนวคิดก็มาจาก ปิดให้หมดทุกอย่าง อยากใช้อันไหนก็ค่อยเปิดเอา ทำให้พอลงแล้ว ทุกอย่างที่เคยใช้งานได้ ก็จะใช้งานไม่ได้ แม้แค่ DHCP ก็ตาม หุหุ

หลักการของ Remote Desktop คือ มันจะส่ง Request มาทาง port 3390 แล้วส่งกลับทาง 3389 ทีนี้เราก็สร้าง rule ที่รับ 3390 แล้วส่ง 3389 แค่นั้นเอง Continue reading

PDO Connection Class

เขียนเมื่อ 2008-07-23 16:33:10 +0700

ปกติผมจะเขียนโปรแกรมติดต่อฐานข้อมูลโดยฝัง query string เข้าไปในโค๊ดเลย ซึ่งมันก็ง่าย แต่ยากตอนจะเปลี่ยนฐานข้อมูล ก็เลยเขียน class ขึ้นมาเอง แต่ก็ยังติดที่ต้องเขียน method สำหรับแต่ละฐานข้อมูลอยู่ดี ซึ่งฐานข้อมูลบางแบบ ผมไม่ค่อยได้ใช้ (pg sql) หรือไม่เคยใช้เลย (posix, odbc) แต่ก็จำเป็นต้องรู้ไว้บ้างว่าเขียนติดต่อยังไง

หลังจากมาเขียน PHP แบบ OO (แต่ก็ไม่เต็มรูปแบบ) ก็มีคนแนะนำว่า ทำไมไม่ลองใช้ PDO ล่ะ? แรกๆ ก็ไม่ได้สนใจ แต่พอมาจับงานที่ต้องเขียนให้ติดต่อทั้ง PG SQL, MySQL, SQLite แล้วเจอปัญหาเดิมอีก คือ เปลี่ยนฐานข้อมูลลำบาก จะไล่แก้โค๊ดให้หมด ก็บ้าไปแล้ว ก็เลยนึกถึุง PDO ขึ้นมา ลองเล่น ลองลูบ ลองคลำ มันอยู่ 2 อาทิตย์กว่าๆ ก็ได้ Class ส่วนตัวออกมา อิอิ สบายเลย จะเปลี่ยนฐานข้อมูล ก็แก้แค่ไฟล์คอนฟิก Continue reading

ตารางชนิดต่างๆใน MySQL

ร่างไว้ก่อนนานมากๆ แล้ว เนื้อหายังไม่เสร็จดี แต่เอามาลงให้ก่อน เดี๋ยวจะหาว่าไม่อัพเดทเว็บไซต์เลย เอาแค่ engine หลักๆ ก่อนละกัน ส่วนอันอื่นๆ ค่อยลงทีหลังเนอะ

ถ้าถามถึงระบบฐานข้อมูลฟรีสำหรับเว็บไซต์ที่นิยมในบ้านเราตอนนี้ คำตอบที่ได้ก็น่าจะเป็น MySQL อย่างแน่นอน ถึงแม้จะมีระบบอื่นๆ อย่าง PostgreSQL แต่ปัญหาก็คือหา Server ยากพอสมควร ส่วน SQLite ก็ไม่เหมาะกับงานใหญ่ๆ แต่ก็กำลังมาแรงในระบบมือถือ

คงปฏิเสธไม่ได้อีกว่า MySQL นี้เป็นระบบฐานข้อมูลแรกที่ทุกๆ คนเรียนรู้คู่กับภาษา PHP แน่นอน เพราะหนังสือส่วนใหญ่จะสอนคู่กันเลย มีแยกเป็นบทท้ายๆ ในหนังสือส่วนใหญ่แน่นอน แต่สิ่งที่หนังสือไม่ได้สอน (หนังสือภาษาไทย) คือ รูปแบบของตารางแต่ละชนิด (stroage engine) ว่ามีแบบไหนบ้าง แล้วต่างกันอย่างไร หรือควรจะใช้ตารางข้อมูลแบบไหนในระบบของเรา Continue reading

Timestamp แบบเลขกลมๆ

ปกติเวลาผมเขียนโปรแกรมที่เกี่ยวกับเวลา ผมจะใช้ timestamp ในการคำนวนเสมอๆ เพราะอยากเพิ่มจำนวน วัน เดือน ปี หรือหาค่าออกมาเป็นวันที่ เดือน หรือ ปี มันทำได้ง่ายมากๆ โดยเฉพาะใน php จะมีฟังก์ชั่น date อยู่แล้วทำให้คำนวนทุกอย่างได้อย่างง่ายดาย แต่ทุกๆ ครั้งที่จะทำการเพิ่มค่าต่างๆ ผมก็ต้องมานั่งคำนวนวินาที นาที ชั่วโมง วัน… เองใหม่หมด และต้องทำทุกๆ ครั้ง แบบว่าเป็นปลาทองไปเสียแล้วจำอะไรได้ไม่เยอะละ

timestamp ของ php, mysql, unix และภาษาอื่นๆ จะนับเวลาเป็นวินาที เว้นบางภาษาเช่น javascript จะนับเป็นมิลิวินาที ซึ่งจริงๆ มันก็เท่ากันหมด แค่เอาไปหาร 1000 ก็ได้เป็น timestamp ทั่วๆ ไปแล้ว แต่รายละเอียดลึกๆ มันก็ต่างกันอยู่ดี อย่าง php จะเริ่มนับเดือน มกราคม เป็น 1 แต่ javascript จะเริ่มที่ 0 อันนี้ก็แล้วแต่ภาษาแต่ยังไง timstamp ก็จะมีค่าเท่ากันเสมอ ทำให้เราสามารถนำค่าคงที่ของแต่ละ นาที ชั่วโมง ไล่ไปเรื่อยๆ ไปคำนวนได้เสมอ Continue reading

ครบรอบ 4 ปี cmdevhub

ผมยังจำวันนี้เมื่อสี่ปีที่แล้วได้ไม่ลืม วันนั้นกำลังนั่งทำงานซึ่งก็อยู่ในช่วงที่ว่างงานเพราะไม่มีโปรเจคให้ทำ นั่งเล่นเว็บ pantip ไปเรื่อยๆ เหมือนทุกๆ วัน ตอบกระทู้นั่นกระทู้นี่เรื่อยเปื่อย อยู่ดีๆ นึงยังไงไม่รู้เหมือนกันความรู้สึกว่า “อยากทำเว็บไซต์” มันก็โผล่มาในหัวดื้อๆ เลย พอตัดสินใจว่าจะทำล่ะ แต่จะทำอะไร ตอนนั้นก็เขียน PHP อยู่ทุกวัน (วันนี้ก็เขียนบ้าง) ก็เลยตัดสินใจว่า จะเขียนเว็บสอน PHP ด้วยความที่มันยังใหม่มากในตอนนั้น และหนังสือภาษาไทยที่มีขายแทบทุกเล่ม เหมือน copy > paste เนื้อหามันเลยไม่หลากหลายเท่าไหร่ อยากเขียนในเรื่องที่หนังสือภาษาไทยไม่มีเขียนไว้ ปัญหาอีกอย่างคือ จะเอาชื่อโดเมนอะไรดี ตอนแรกคิดไว้หลายชื่อมาก มากเลยสุดท้ายก็มาใช้ชื่อ cmdev แต่ว่าไม่สามารถจด .com ได้ เลยเติมคำว่า hub ต่อท้ายเข้าไป ปรากฎว่าชื่อนี้ว่าง ก็เลยใช้มาจนถึงวันนี้

ช่วงแรก cmdevhub ใช้งาน wordpress เป็นตัวขับเคลื่อน แต่เนื่องจากตอนนั้นระบบของ wordpress ยังไม่ดีเท่าไหร่เลยใช้งานได้แค่ปีกว่าๆ ก็เปลี่ยนไปใช้ drupal แทน แล้วก็ใช้เรื่อยมาจนถึงต้นปี 2555 นี่เองผมก็ได้เปลี่ยนกลับไปใช้ wordpress เหมือนเดิม เพราะความสามารถของ wordpress มีเพิ่มขึ้นมากกว่าเมือก่อนราวถึงได้จับงานที่ใช้ wordpress ทำมาหลายชิ้นเลยตัดสินใจเปลี่ยนกลับไป และก็คงจะใช้งานต่อไปเรื่อยๆ ไม่เปลี่ยนแปลงล่ะครับ

จริงๆ เว็บนี้ผมก็คิดจะเลิกทำหลายครั้งแล้วเพราะทำแค่คนเดียว แถมอัพเดทบ้าง ไม่อัพบ้างมันเป็นกระจกส่องตัวผมเองเลยว่า เป็นคนที่ไม่ค่อยสม่ำเสมอเท่าไหร่ จริงๆ ก็มีหลายบทความมากๆ ที่ผมคิดจะเขียนแล้วร่างลงสมุดแล้ว แต่สุดท้ายมันก็ยังคงอยู่ในสมุดนั่นเอง แต่มีครั้งหนึ่งที่เฮียเจ้าของร้านเน็ตที่ผมรู้จักเขาบังเอิญมาเปิดเว็บผมแล้วกำลังทำ USB เอาไว้ติดตั้ง Windows XP ตามบทความนี้ http://www.cmdevhub.com/blog/install-windows-xp-usb ผมก็บอกว่า เว็บนี้ผมเขียนเองแล้วก็ช่วยทำให้เขาจนสามารถใช้งานได้ เขาบอกผมว่า “การให้ความรู้มันเป็นการทำบุญอย่างหนึ่ง แล้วเป็นการทำบุญที่ได้บุญมากกว่าให้ทรัพย์สินเงินทองอีกด้วย ยิ่งทำโดยไม่หวังอะไรตอบแทนก็ทำไปเหอะ ค่าโฮสปีละพันกว่าบาท ถ้าไม่มีมาบอกเฮีย เดี๋ยวเอาให้ แต่อย่าหยุดเขียน” ประโยคนี้ทำให้ผมยังคงเขียนมาจนถึงทุกวันนี้ ถึงแม้จะไม่สม่ำเสมอก็เหอะ อย่างน้อยก็ให้คนอื่นค้นหาจาก google แล้วมีเว็บผมเป็นตัวเลือกแค่นี้ก็โอเคละครับ

cmdevhub จะก้าวไปข้างหน้าเรื่อยๆ ตามกำลังของผมละครับ อาจจะช้า แต่ก็จะไม่หยุดเดิน ขอบคุณทุกๆ ท่านที่ไม่ว่าจะตั้งใจเข้ามา หรือค้นหาจาก google เจอ หรือหลงเข้ามาเฉยๆ ที่เป็นกำลังใจให้เสมอมา cmdevhub จะอยู่ต่อไปไม่ว่าปีที่ 5 ที่ 6 หรืออีกกี่ปีก็ตาม ผมจะอยู่ตรงนี้ต่อไป

ขอบคุณครับ

jQuery RTE

ห่างหายไปนานแสนนาน มัวแต่ไปอู้ ไม่ยอมมาเขียนเลย แหะๆ จริงๆ ก็มีเรื่องที่อยากเขียนเยอะแยะเลยนะ แต่มัวเอาเวลาไปทำอย่างอื่นแทนซะ แต่ผมก็ไม่ทิ้งเว็บไซต์อันนี้หรอกครับ ยังไงก็จะอัพเดทให้เพื่อนๆ ที่รอติดตามได้อ่านกันอย่างใกล้ชิดตลอดไป

เจอกันคราวนี้ ผมเอา Rich Text Editor (RTE) แต่ไม่ใช่ RTE ธรรมดา ทั่วๆ ไป แต่เป็น RTE ที่ใช้งานร่วมกับ jQuery สำหรับผู้ที่ชื่นชอบ jQuery ทั้งหลาย (ผมก็เป็นหนึ่งในนั้นแหละ)

จริงๆ แล้ว RTE ก็มีให้เลือกหลายตัวเลย ทั้ง TinyMCE, CKEditor หรือ YUI ของ Yahoo แต่ทั้งหมดก็เป็น RTE ที่ไม่ได้ใช้งาน jQuery เลย

ข้อได้เปรียบของ RTE ที่ทำมาเพื่อ jQuery คือเราสามารถเข้าถึงข้อมูลโดยใช้ jQuery ได้ตรงๆ เลย แต่ก็ขึ้นอยู่กับ RTE แต่ละตัวว่าเปิดให้เราเข้าถึงได้มากแค่ไหน แต่อย่างน้อยก็ง่ายกว่า TinyMCE ที่ผมใช้บ่อยๆ แหละ Continue reading

[css] Fluid design สำหรับ facebook like box ละ comment

ช่วงนี้เห็นหลายๆ เว็บไซต์เริ่มเขียนเป็นแบบ fluid design หรือจะเรียกว่า responsive web ก็ได้ ยิ่ง Adobe CS6 ออกมาแล้ว ยิ่งเขียนแบบ fluid ง่ายยิ่งขึ้น แต่มันก็ยังมีปัญหาสำหรับเว็บที่ใช้ facebook comment หรือ like box ที่ขนาดมันจะถูกกำหนดไว้ตายตัวเลย วิธีแก้ก็ไม่ยากเลย แค่ใส่โค๊ด CSS นี้เข้าไป

#fbcomments, .fb_iframe_widget, .fb_iframe_widget[style], .fb_iframe_widget iframe[style], #fbcomments iframe[style] ,#fbcomments span, .fb_iframe_widget span, .fb_iframe_widget span[style], .fb_iframe_widget iframe span[style], #fbcomments iframe span[style] {width: 100% !important;}

เท่านี้ก็แก้ปัญหาได้แล้ว

[open cart] แก้ปัญหาติดตั้ง vq-mod

หายไปนานมากๆๆๆๆๆๆๆๆๆๆๆๆๆๆ ช่วงนี้ก็มัวแต่ไปเล่น OpenCart กับทำงานส่วนตัวเล็กน้อยครับ เลยไม่ค่อยได้อัพเดทเว็บไซต์เลย

สำหรับคนที่เล่น OpenCart คงรู้จักกับ vQmod แน่ๆ เลย นอกจาก OpenCart แล้ว vQmod ยังสามารถใช้งานร่วมกับ CMS ตัวอื่นๆ หรือจะใช้งานกับเว็บที่เราเขียนเอง แต่ไม่อยากไปแก้โค๊ดข้างในก็ยังได้ นักว่ามีประโยชน์มากมายเลยแค่เขียน

สำหรับ OpenCart แล้ว การติดตั้ง vQmod มันไม่ยากเลย แค่อัพโหลดไฟล์เข้าไปแล้วสั่ง install เท่านั้น แต่บางทีจะเจอข้อความ ONE OR MORE FILES COULD NOT BE WRITTEN แปลกันง่ายก็คือ มีไฟล์บางไฟล์เขียนไม่ได้ แต่ก็ไม่บอกว่าไฟล์ไหนบ้างซะงั้น


วิธีแก้ก็ไม่ยากเลย แค่ตั้ง chmod ไฟล์ index.php และ /admin/index.php ให้เป็น 666 หรือ 777 ไปเลยก็ได้ ให้มันเขียนได้ก็พอ เท่านี้ก็จะสามารถติดตั้งได้แบบไร้ปัญหาแล้ว

รันตัวติดตั้งอีกครั้ง ถ้าได้ผลลัพธ์ดังนี้ แสดงว่าคุณพร้อมที่จะใช้งาน vQmod แล้ว

จบ…

ยกเลิกคลิกขวาแบบง่ายสุดๆ

ปกติเราจะเขียนแค่
<body>
แต่ถ้าแก้ไขเป็น
<body oncontextmenu=”return false;”>
แค่นี้ก็กด click ขวาไม่ได้แล้วแหละ ง่ายไหม

จริงๆ มันเป็น html มากกว่าเนอะ ไม่ใช่ javascript เลยอ่ะ

ฟังก์ชั่นตรวจสอบอีเมล

เอาไว้ใช้สำหรับตรวจสอบ e-mail ที่ป้อนมาจากฟอร์ม ฟังก์ชั่นจะคืนค่า true ถ้าอีเมล์ที่ป้อนเข้ามาถูกต้อง เพราะฉะนั้นเวลาเอาไปใช้งานก็ต้องใส่ ! ด้วยนะครับ เพราะเราจะเอาค่าที่ตรวจสอบไม่ผ่านเข้าทำงานในเงื่อนไข

    function chkMail(mail){
            var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
            if (filter.test(mail)){
                    return true;
            }
            else{
                    return false;
            }
    }

้เวลาใช้งานก็ตรวจสอบแบบนี้

if (!chkMail($("#email").val())) { // ใช้ jquery ช่วยตรวจสอบด้วย
  alert("อีเมลไม่ถูกต้อง");
  return false;
}

ไม่ยากเลยใช่ไหมครับ