Category: blog

ความแตกต่างระหว่าง isset กับ array_key_exists

รอบนี้ก็มีทิปง่ายๆ แต่มีประโยชน์แน่นอน

ในการเขียนโปรแกรม PHP บางครั้งเราต้องมีการตรวจสอบตัวแปรว่ามีอยู่หรือไม่ คำสั่งที่เราบ่อยๆ ก็คือ isset() คำสั่งนี้สามารถเช็คได้ทั้ง ตัวแปร และ อาเรย์สำหรับตัวแปรนั้นผลลัพท์ที่ได้ก็ตรงไปตรงมาคือ true กับ false แต่สำหรับ อาเรย์ เราจะใช้คำสั่งนี้ในการตรวจสอบว่ามี คีย์ หรือ อินเด็กซ์ นี้อยู่ภายในอาเรย์หรือไม่การตรวจสอบอาเรย์สามารถใช้คำสั่ง array_key_exists() ได้ด้วยเหมือนกัน แต่ความแตกต่างระหว่างสองคำสั่งนี้คือ ถ้าหากค่าที่เก็บเป็น NULLคำสั่ง isset() จะคืนค่าเป็น false แต่คำสั่ง array_key_exists() จะคืนค่าเป็น true

ลองดูตัวอย่างได้ครับ

<?php
$a = 10;

isset($a)  // true
isset($z)  // false

$b = array('a' => 10, 'b' => NULL);
isset($b['a'])  // true
isset($b['a'])  // false

array_key_exists('a', $b)  // true
array_key_exists('b', $b)  // true

$c = NULL
isset($c)  // NULL
?>

สังเกตได้ว่าคำสั่ง isset จะตรวจสอบตัวแปรที่มีค่าเก็บไว้เท่านั้น ถ้าหากเป็น NULL คำสั่ง isset ก็จะคืนค่าเป็น false อยู่ดี

mobile detect สำหรับ php แบบง่ายๆ

ตอนนี้มือถือหรือ tablet กำลังเป็นที่นิยมมากมาย เวลาเขียนเว๊ปส่วนใหญ่เราก็จะแยกเป็นหน้าสำหรับมือถือซึ่งเราก็ต้องทำการตรวจสอบก่อนว่าคนที่เข้ามาดูใช้มือถือหรือ tablet หรือเข้ามาจาก pc ปกติ สำหรับคนที่ตั้ง server เอง เราสามารถลงโมดูล Apache Mobile Filter แล้วไปจับที่ AMFLightDetectionFilter แทน แต่ถ้าเราเช่าพื้นที่จากคนอื่นละ ก็ไม่ยากเลย ใช้ php นี่แหละจับเอา โดยจับเอาจากตัวแปร $_SERVER[‘HTTP_USER_AGENT’] แล้วเราก็มาแยกเอาว่าเป็นอุปกรณ์มือถือหรือเปล่าจากตรงนี้ได้ Continue reading

ทำตารางสลับสีแนวตั้ง

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

แบบนี้แหละที่เราต้องการ ถ้าเขียนโค๊ดก็คงประมาณนี้

<table width="100%" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td>COL1</td>
    <td bgcolor="#CCCCCC">COL2</td>
    <td>COL3</td>
    <td bgcolor="#CCCCCC">COL4</td>
    <td>COL5</td>
  </tr>
  <tr>
    <td>01</td>
    <td bgcolor="#CCCCCC">11</td>
    <td>21</td>
    <td bgcolor="#CCCCCC">31</td>
    <td>41</td>
  </tr>
  <tr>
    <td>02</td>
    <td bgcolor="#CCCCCC">12</td>
    <td>22</td>
    <td bgcolor="#CCCCCC">32</td>
    <td>42</td>
  </tr>
  <tr>
    <td>03</td>
    <td bgcolor="#CCCCCC">13</td>
    <td>23</td>
    <td bgcolor="#CCCCCC">33</td>
    <td>43</td>
  </tr>
</table>

ซึ่งมันดู… ธรรมดามากๆ แถมยังแก้ไขยากอีก ถ้าต้องการเปลี่ยนสีจาก CCC เป็นสีอื่นละ แล้วถ้ามันมีสัก 500 เซล… งานงอกกันทีเดียว Continue reading

ตารางสลับสีแบบง้าย ง่าย

ปกติเวลาเราสร้างตาราง (table) สำหรับขึ้นมาสักอันหนึ่ง แล้วเราต้องการแยกสีสำหรับแต่ละแถว เราก็อาจจะเขียนโค๊ดในการวนลูปเพื่อให้แต่ละแถวมีสีไม่เหมือนกัน แต่ถ้าหากเราไม่สามารถให้สามารถวนลูปได้ คือ server รัน php หรือ asp ไม่ได้ เราจะมีวิธีแก้ปัญหายังไงดี

ง่ายๆ เลย ก็ใส่สีในแต่ละแถวไปเลยสิ (ง่ายไหม)

<table width="300" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <th scope="col" width="33%">ช่องที่</th>
    <th scope="col" width="33%">ตัวหนังสือ</th>
    <th scope="col">ภาษาไทย</th>
  </tr>
  <tr bgcolor="#999">
    <td>1</td>
    <td>A</td>
    <td>ก</td>
  </tr>
  <tr>
    <td>2</td>
    <td>B</td>
    <td>ข</td>
  </tr>
  <tr bgcolor="#999">
    <td>3</td>
    <td>C</td>
    <td>ฃ</td>
  </tr>
  <tr>
    <td>4</td>
    <td>D</td>
    <td>ค</td>
  </tr>
  <tr bgcolor="#999">
    <td>5</td>
    <td>E</td>
    <td>ฅ</td>
  </tr>
  <tr>
    <td>6</td>
    <td>F</td>
    <td>ฆ</td>
  </tr>
  <tr bgcolor="#999">
    <td>7</td>
    <td>G</td>
    <td>ง</td>
  </tr>
  <tr>
    <td>8</td>
    <td>H</td>
    <td>จ</td>
  </tr>
  <tr bgcolor="#999">
    <td>9</td>
    <td>I</td>
    <td>ฉ</td>
  </tr>
</table>

ได้แบบนี้เลย
cmdevhub Continue reading

สามจีไทย ทำไมมันใช้ยากนักหนา

สิ้นสุดการรอคอยกันแล้วกับสามจีประเทศไทยตอนนี้เรามีให้ใช้งานได้แล้วทุกค่าย ซึ่งก็เป็นที่น่ายินดีเสียยิ่งนักสำหรับประเทศไทยทั้งๆ ที่ประเทศรอบข้างเรา ไปกันไกลลิบแล้วเราจะเริ่มตอนนี้ก็ยังไม่สาย มองโลกในแง่ดีซะว่าดีกว่ายังไม่เริ่ม จริงไหม 🙂

มาตรฐานสามจีของประเทศไทยมีสองระบบคือ CDMA สำหรับค่าย hutch เดิมหรือตอนนี้กลายเป็น Truemove H ไปแล้ว กับระบบ HSPA ที่เป็นระบบของค่ายอื่นๆ ที่ใช้งานกันอยู่แล้วก็เป็นระบบที่มีอยู่ในโทรศัพท์มือถือแทบทุกเครื่องที่ใช้งานสามจีได้อยู่แล้ว

แต่ปัญหามันไม่ใช่แค่นี้สิ มาตรฐานโลกสามจีเขาใช้งานกันที่ความถี่ 900MHz กับ 2100MHz แต่เนื่องจากมีแมวมาขวางโลกอยู่ทำให้การประมูลคลื่น 2100MHz เมื่อปี 2553 ไม่สามารถทำได้ ดึงเรื่องมาจนปี 2555 ก็ยังคงไม่เริ่มการประมูลเสียที ทำให้ผู้ให้บริการแต่ละรายต้องใช้วิธีซิกแซกใช้ความถี่อันน้อยนิดของตัวเองมาให้บริการสามจี สำหรับ AIS นั้นไม่มีปัญหาอยู่แล้วเพราะเดิมได้ให้บริการมือถือบนความถี่ 900MHz ก็เลยสามารถให้บริการสามจีบนความถี่นี้ได้ทันที แต่สำหรับ Truemove และ Dtac เดิมทีได้ให้บริการบนความถี่ 1800MHz แต่พอมาใช้งานสามจีแล้ว จำเป็นต้องเปลี่ยนมาใช้ที่ 850MHz แทน เนื่องจากอุปกรณ์ที่รองรับ HSPA 1800MHz มีไม่มาก Continue reading

แก้ขนาด facebook comment

สำหรับคนที่ทำเว๊ปแบบ responsive แล้วใช้ facebook comment แล้ว ปัญหาใหญ่คือ เมื่อแสดงผลในมือถือหรือถ้า block ที่เราออกแบบไว้เปลี่ยนขนาด คงจะมีปัญหาเรื่อง block ของ facebook comment ไม่ปรับขนาดตาม วิธีแก้ปัญหาง่ายๆ เลย เราก็แค่เพิ่ม css นี้เข้าไป แค่นี้ก็ใช้งานได้แล้ว

.fb-comments, .fb-comments iframe[style] {
   width: 100% !important;
}

แค่นี้ขนาดของ facebook comment ก็เปลี่ยนไปตามขนาดหน้าจอแล้ว สบายๆ เลย 🙂

ทำ Virtual Host ใน Apache บน Windows

Apache บน Windows มันก็เหมือนกันบน Linux นั่นเอง ถ้าต้องการสร้างเว๊ปหลายๆ เว๊ปบน Host อันเดียวซึ่งปกติเราจะใช้ localhost หรือ 127.0.0.1 ทางเลือกก็มีสองทางคือ สร้าง virtual host โดยใช้การแยก sub domain เช่น aaa.localhost กับแยก port เช่น localhost:8001 ซึ่งทั้งสองวิธีก็มีการตั้งค่าที่คล้ายๆ กัน แต่วิธีแยก port จะแก้ไขได้ง่ายกว่า วิธีการก็คือ

เปิดไฟล์ httpd.conf แก้

Deny from all ให้เป็น Deny from None

เพิ่ม

Listen 8001

<VirtualHost localhost:8001>

   DocumentRoot c:/web/testweb

</VirtualHost>

แค่นี้ก็ใช้งานได้แล้ว โดยเราสามารถชี้ DocumentRoot ไปที่ไหนในคอมพิวเตอร์ของเราก็ได้

ง่ายๆ เลยใช่ไหมครับ ^^

USER AGENT ของมือถือ

ได้งานเขียนเว๊บบนมือถือมาอันนึง มีโจทย์ว่า ต้องทำงานบนมือถือได้ทุกเครื่อง… อื่ม มิงแอ๊ปมาก (abstract) ผมก็เลยบอกไปว่า ขอแค่ iOS, Android ละก็ BlackBerry เท่านั้น แต่ปัญหาที่ตามมาอีกก็คือ ขนาดหน้าจอมันไม่เท่ากันแถมเวลาเอียงหน้าจอก็เปลี่ยน พอตั้งเหมือนเดิมก็เปลี่ยนอีก ทำเอามึนกันไปใหญ่เลย

แต่วิธีแก้ปัญหา เราก็ทำกันง่ายๆ เลย คือใส่

<meta name=”viewport” content=”width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=1;”/>

เข้าไปตรง head ซะ แค่นี้ก็ใช้งานได้แล้ว คริกๆ ทดลองกับ iphone 3G, ipod 4, samsung cooper, lg optimus black และ bb 9700 แสดงผลออกมาเต็มจอ แล้วหมุนไปหมุนมาได้อย่างสนุกสนาน โดยที่ไม่เพียนเท่าไหร่

ส่วนถ้าอยากรู้ว่าคนเข้ามาเขาใช้อะไรก็ตรวจจาก HTTP_USER_AGENT ได้เลยใช้คำสั่ง ereg เทียบเอาก็ได้

  • iPhone ทุกตัว = iPhone
  • iPod = iPod หรือจะใช้ iPhone ก็ได้เหมือนกัน
  • Android = Android (ตามด้วย version)
  • BlackBerry = BlackBerry (ตามด้วยรุ่น)

ส่วนบน Nokia พอดีไม่มีเครื่อง ถ้าหากท่านใดมีเครื่องรบกวนส่วน user-agent มาให้ดูด้วยก็ได้ครับ

มารู้จักคีย์บอร์ดแบบกลไกกันดีกว่า

บอกกันก่อน ผมเขียนจากความรู้อันน้อยนิด + ค้นหาในเน็ตมาประกอบในส่วนที่ผมไม่รู้ด้วย คำส่วนใหญ่ผมพยายามจะใช้ภาษาไทยที่เข้าใจง่ายที่สุด บางคำผมไม่รู้ว่าจะใช้ภาษาไทยยังไงก็ขออนุญาติเขียนภาษาอังกฤษลงไปแทน

เขียนครั้งแรก 8/9/2011

บทนำ

ผมมั่นใจว่าคอมพิวเตอร์ทุกๆ เครื่องในโลกนี้ต้องมีอุปกรณ์ตัวหนึ่งคือคีย์บอร์ด (keyboard) เชื่อมต่ออยู่อย่างแน่นอน สำหรับ PC แล้วมันคืออุปกรณ์ Input ที่สำคัญที่สุดชิ้นหนึ่งของระบบคอมพิวเตอร์ ในอดีตคอมพิวเตอร์ยังมีจำนวนไม่มากและเทคโนโลยียังไม่พัฒนาไปเท่าที่ควรคีย์บอร์ดแทบทั้งหมดในยุคนั้นจะเป็นสวิท (switch) ทำให้คีย์บอร์ดตัวหนึ่งมีราคาแพงพอสมควร แต่ในปัจจุบันคอมพิวเตอร์มีมากขึ้นเทคโนโลยีก็พัฒนาไปมากขึ้น แต่ต่อให้ของดียังไง ราคาก็ต้องมาก่อนคุณภาพเสมอ คีย์บอร์ดทั่วๆ ไปในปัจจุบันเลยเป็นแบบปุ่มยาง (rubber dome) แบบเดียวกับที่อยู่ในจอยเกมหรือรีโมททีวีข้อดีของมันก็คือ ราคาถูกมากๆ แต่สำหรับคนที่เคย “เสพ” คีย์บอร์ดแบบสวิทมาแล้ว แทบจะจับมันไม่ลงเลยทีเดียว… ของแบบนี้แค่พูดอย่างเดียวไม่ได้ ลองมาทำความรู้จักคีย์บอร์ดแบบสวิทกลไกหรือที่เรียกกันว่า mechanical keyboard กันดีกว่า ก่อนที่จะเสียเงินไปกับมัน Continue reading

Windows8 Developer Preview โหลดกันไปดูจอฟ้าแบบใหม่ได้แล้ว

วันที่ 14/9/2011 ที่ผ่านมา Microsoft เปิดให้โหลด Windows8 Developer Preview ไปให้ลองสำหรับหน่วยกล้าตายที่อยากลองเห็นจอฟ้าแบบใหม่ ที่สำคัญมันรวมเอา UI ของ Tablet (Metro UI) กับ Desktop UI รวมไว้ด้วยกันเลย แบบนี้ใครที่ใช้ Acer ICONIA Tab w500 ก็สบายเลย กลางวันถอดออกไปใช้ Metro UI พอกลับบ้านเสียบคีย์บอร์ดใช้ Desktop UI มันแจ่มอะไรแบบนี้ Continue reading