May 25, 2011
แว่นตก

Don?t be evil

รูปของเทคนิค Don?t be evil

Don?t be evil หมายถึง อย่าทำธุรกิจแบบทำตัวเป็นปีศาจ เป็นคำขวัญของบริษัทยักษ์ใหญ่ของโลก นามว่า กูเกิ้ล

ธุรกิจของกูเกิ้ลนั้นเรียบง่ายมาก Larry Page อธิบายสั้นๆว่า ?เข้าใจสิ่งที่ผู้ใช้ต้องการค้นหา และให้คำตอบที่ตรงความต้องการนั้น? แค่นี้เองครับ จากประโยคสั้นๆนั้นประโยคเดียว ผลักดันให้กูเกิ้ลเป็นบริษัทวิจัยขนาดยักษ์ใหญ่ที่มีวัตถุประสงค์หลักประการเดียวคือ ?ค้นหาให้เร็วและดีที่สุด? กูเกิ้ลได้ชื่อว่าเป็นบริษัทที่มีการพัฒนาเทคโนโลยีของตนอย่างต่อเนื่อง ปรับปรุงบริการของตนให้ตอบสนองผู้ใช้ให้ดีขึ้นเรื่อยๆไม่หยุดยั้ง.. ด้านเทคโนโลยีกูเกิ้ลไม่เป็นรองใคร แต่กูเกิ้ลมีอีกด้านหนึ่งที่ผู้คนไม่น้อยให้ความชื่นชมครับ นั่นคือ กูเกิ้ลมีหลัก 10 ประการในการดำเนินธุรกิจ

กูเกิ้ลตั้งหลักการ (core principle) 10 ประการนี้ไว้ตั้งแต่เริ่มต้นดำเนินการบริษัทครับ และยังยึดถือปฎิบัติมาตลอด

1. มุ่งไปที่ผู้ใช้อย่างเดียว สิ่งอื่นๆจะตามมาเอง (Focus on the user and all else will follow)

Google มุ่งทำให้ผู้ใช้สะดวกสุดในการค้นหา โฮมเพจเรียบง่ายที่โหลดเร็ว แสดงผลอ่านง่าย เข้าใจง่าย แยกโฆษณาออกอย่างชัดเจน ไม่รบกวน เวลาเราใช้ผลิตภัณฑ์ของกูเกิ้ลเรามักไม่รู้สึกว่าน่าจะเป็นอย่างนั้นอย่าง โน้นจะดีกว่า ใช้แล้วก็รู้สึกว่าโอเคไปหมด ไม่ว่า search, map, gmail นั่นเป็นเพราะหลักการข้อแรกครับ Google ออกแบบทุกอย่างโดยคำนึงถึงผู้ใช้เป็นหลัก อย่างอื่นแม้แต่การโฆษณาก็เป็นรอง ผู้ใช้จึงพอใจสูง
Continue reading »

May 25, 2011
แว่นตก

รับค่า XML เป็น Streaming

ในการที่เราจะใช้บริการ web service เราต้องมีรับ xml ของคนอื่นมา
ทำงานต่อ ซึ่งคำสั่งในการรับ xml นั้นก็คือ

 

1
$data = file_get_contents("php://input");

 

คำสั่งเทพ คำสั่งเดียว จบ

May 25, 2011
แว่นตก

ข้อแตกต่างของ ประกาศตัวแปร และ define

ไม่ว่าจะ้เป็น
การประกาศตัวแปร -> $startpage = “1″;
หรือ การใช้ function define -> define(“startpage”,”1″);

แต่ก็ได้ค่าออกมา เป็นค่าเดียวกันคือ 1

แต่ของแตกต่างของ 2 วิธีนี้ก็คือ

1
2
3
$startpage = "1";
$startpage = "2";
echo  $startpage;  // ได้ผลลัพธ์คือ 2

 

1
2
3
define("startpage","1");
define("startpage","2");
echo  startpage;  // ได้ผลลัพธ์คือ 1

 

หวังว่าคงเข้าใจกันนะครับ

 

เวลาใช้งานก็ดูลักษณะงานด้วยนะครับ :)

 

May 25, 2011
แว่นตก

function แปลง tis620 เป็น utf8

ในการเขียนเวปไซด์บ้างครั้งเรามีความจำเป็นที่จะต้องแปลง unicode
ไปมาระหว่าง tis620 เป็น utf8 หรือจาก utf8 เป็น tis620
ผมขอยกตัวอย่างเคสที่ต้องเปลี่ยน unicode
เช่น db เป็น tis620 แต่หน้าเวปไซด์เรา เป็น utf8
และเราไม่สามารถที่จะเ้ปลี่ยนจาก db เป็น utf8
และเราก็ไม่สามารถเปลี่ยนเวปไซด์เป็น tis620 ได้
เราต้องใช้ function ดังกล่าวเปลี่ยน unicode ครับ

function ในการแปลงจาก tis620 เป็น utf8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function tis620_to_utf8($tis) {
  for( $i=0 ; $i< strlen($tis) ; $i++ ){
    $s = substr($tis, $i, 1);
    $val = ord($s);
    if( $val < 0x80 ){
	 $utf8 .= $s;
    } elseif ((0xA1 <= $val and $val <= 0xDA) 
              or (0xDF <= $val and $val <= 0xFB))  {
	 $unicode = 0x0E00 + $val - 0xA0;
	 $utf8 .= chr( 0xE0 | ($unicode >> 12) );
	 $utf8 .= chr( 0x80 | (($unicode >> 6) & 0x3F) );
	 $utf8 .= chr( 0x80 | ($unicode & 0x3F) );
    }
  }
return $utf8;
}

function ในการแปลงจาก utf8 เป็น tis620

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function utf8_to_tis620($string) {
  $str = $string;
  $res = "";
  for ($i = 0; $i < strlen($str); $i++) {
	if (ord($str[$i]) == 224) {
	  $unicode = ord($str[$i+2]) & 0x3F;
	  $unicode |= (ord($str[$i+1]) & 0x3F) << 6;
	  $unicode |= (ord($str[$i]) & 0x0F) << 12;
	  $res .= chr($unicode-0x0E00+0xA0);
	  $i += 2;
	} else {
	  $res .= $str[$i];
	}
  }
  return $res;
}
May 25, 2011
แว่นตก

เทคโนโลยี ที่ทำให้ facebook, twitter ให้บริการได้ร้อยล้านคนแบบ Real time ได้

รูป เทคโนโลยี Facebook Twitter

เพื่อนๆ เคยนึกหรือไม่ครับว่า twitter และ facebook มีเครื่อง server กี่เครื่องครับ ?
ถ้าไม่ได้ติดตามก็คงตอบผิดครับ ผมเคยถามเพื่อน บางคนตอบว่า 50 บางคนบอกว่า 1000 เครื่อง ผิดหมดครับ
สำหรับ Facebook ใช้ Server ทั้งหมด (ถึงตุลาคมนี้) 30,000 เครื่องครับ

Ref: http://www.datacenterknowledge.com/archives/2009/10/13/facebook-now-has-30000-servers

ส่วน twitter ผมค้นหาแล้วไม่มีข้อมูลบอกนะครับ แต่คิดว่าคง ราวๆ หลายพันเครื่อง

Continue reading »

May 25, 2011
แว่นตก

เซตเวลาในการติดต่อกับเวปอื่น

ในการเขียนเวปไซด์ บ้างครั้งเรามีความเป็นที่จะต้องนำข้อมูลของที่อื่น มาแสดงในเวปของเรา
โดยที่ไม่ใช่แบบ iframe แต่ใช้ ฟังก์ชั่น ของ php เช่น fopen() หรือ file_get_contents()
ซึ่งวิธีนี้ ข้อดีคือ เราสามารถกำหนดรูปแบบในการแสดงผลได้ แต่ข้อเสียคือ ถ้าเวปที่เราไปเอา
ข้อมูลมาไม่สามารถเข้าได้ หรือพูดง่ายๆ คือ เวปล่ม และจะทำให้เวปเราล่มไปด้วย

แต่มีวิธีแก้ไข คือเราจะต้องไปกำหนเวลาในการติดต่อ ถ้าหมดเวลาตามที่เรากำหนดก็ให้ยกเลิกการติดต่อ

โดยใช้คำสั่งนี้

1
ini_set('default_socket_timeout',$time)

โดยที่
$time = เวลาที่ใช้ในการให้ติดต่อ หน่วยเป็น วินาที

ปล. ขอแนะนำว่าหลังจากใช้ ฟังก์ชั่นนี้แล้วให้เซตค่ากลับด้วย
ซึ่งค่าปกติคือ 60 วินาที

 

วิธีแนะนำโดย โอ@WLS

May 25, 2011
แว่นตก

javascipt กับ cookie

การ set cookie ให้ใช้งานได้โดยใช้ javascript สามารถทำได้โดย
ใช้ function นี้

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
 
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) 
                   return c.substring(nameEQ.length,c.length);
	}
	return null;
}
 
function eraseCookie(name) {
	createCookie(name,"",-1);
}

 

วิธีใช้งาน

สร้าง cookie โดย
createCookie(‘ชื่อ cookie’,'ค่าใน cookie นั้น’,เวลาของ cookie หน่วยเป็นวัน)

ตัวอย่างการใช้งาน
createCookie(‘webshowpow’,'valuecookie’,7)

ปล. ถ้าเวลาของ cookie ไม่ได้ใส่ cookie นั้นจะหมดอายุเมื่อปิดบราวเซอร์

 

อ่านค่าใน cookie โดย
readCookie(name)

ตัวอย่างการใช้งาน
readCookie(‘webshowpow’)

 

ลบ cookie โดย
eraseCookie(name)

ตัวอย่างการใช้งาน
eraseCookie(‘webshowpow’)

 

ที่มา

http://www.quirksmode.org/js/cookies.html

May 25, 2011
แว่นตก

วิธีการ Query เพิ่ม ลด วันเวลา

ในการทำงานบางครั้งเราจำเป็นที่จะต้อง query db โดยการเพิ่มหรือลด วันเวลา

สมมุติว่า

” เราต้องการจะได้ทราบว่า banner ของเวปเราที่จะหมดอายุในอีก 7 วันข้างหน้า มี banner อะไรบ้าง ”

เราก็จะสามารถเขียน query ได้ดังนี้

Continue reading »

Pages:«12345»