Archive for the ‘Uncategorized’ Category

iPad Speed Test: Wifi vs 3G

ผมได้ทำการทดสอบความเร็วในการเชื่อมต่ออินเตอร์เน็ตระหว่าง Wifi และ 3G ซึ่งเคลือข่ายที่ผมใช้เป็นของ Three (UK)  โดยรันโปรแกรม Speedtest , เปิด webpage และลองเปิด Youtube ให้ดูแบบ HD ครับ

ผลการทดสอบความเร็วของ 3G ค่อนข้างเร็วใช้ได้ทีเดียว สามารถเปิด webpage ได้ช้ากว่าเปิดด้วย wifi นิดหน่อย และสามารถดู video จาก youtube แบบ HD ได้ครับ

เป็นที่ ฉัน… มัน… หรือแม็ค

เรื่องก็มีอยู่เวลา เกิดอยากลองฟังเพลงไทยเก่า ๆ ก็เลยลองไปใช้บริการฟังเพลงออนไลน์ของ gmember ตอนแรกก็รู้สึกชอบที่ทางเว็ปไซต์มีเพลงให้ฟังมากมาย ค้นหาได้รวดเร็ว  พอฟังไปฟังมาเกิดเพลิน นั่งกดฟังไปเรื่อย ๆ แต่แล้วตาก็เหลือบมาเห็นอุณหภูมิที่อยู่บนเมนูบาร์ (โชคดีที่ลงโปรแกรมปรับความเร็วพัดลมไว้) ก็ถึงกับตกใจ เป็นไปได้ไง 94 องศา.. ถ้าสุงกว่านี้อีกนิดเดียว เจียวไข่ได้เลย

ก็เลยเปิดดูว่าโปรแกรมอะไรมันกิน CPU ขนาดทำให้อุณหภูมิสูงขนาดนี้ ก็ไม่ต้องสงสัยเลยว่าต้องเป็น Plugin Flash Player ของ Safari แน่ ๆ เพราะก่อนหน้านี้ก็เคยสงเกตุว่าเวลาเข้า Web ที่มีการใช้ flash เยอะ ๆ CPU จะทำงานหนักขึ้น แต่ web นี้ (หรือที่ผมเรียกว่า “มัน”) มันค่อนข้างกิน CPU มากกว่าที่เคยเจอ มาก

แต่พอผมกลับมาคิดอีกที ตกลงมันเป็นที่ ผม หรือที่ web หรือที่ software กันแน่ ซึ่งอาจเป็นไปได้ทั้งสามแบบ

1. หากเป็นที่ฉัน นั่นคือฉันเพิ่งซื้อจอ HD LCD ใหม่มาต่อกับ Macbook Pro (Mid 2007) ของฉัน ซึ่ง Native Display ของ MBP อยู่ที่ 1440×900 โดยมีการ์ดจอ GeForce 8600M GT เป็นการ์ดแสดงผล แต่พอต่อ External LCD ที่มีความละเอียด 1920×1080 แล้วย่อมทำให้การ์ดจอและ CPU ทำงานหนักขึ้นเป็นธรรมดา..

2. หากเป็นที่มัน นั่นคือ การเขียนโปรแกรม Flash ของ Website มันค่อนข้างเขียนไม่ดี อาจจะมีการใช้ Loop ที่วนซ้ำไปมาจนเกินไป ซึ่งทำให้กิน CPU มากขึ้นอย่างแน่นอน

3. หรือจะเป็นที่แม็ค เนื่องจากผมได้สังเกตุหลายทีแล้วว่า Flash Player for Safari จะกิน CPU ค่อนข้างมากเมื่อเทียบกับบน Windows พอเจอ Website ที่ใช้ Flash มากหน่อยก็ร้อนขึ้นมาทันที นี่ก็น่าจะเป็นเหตุผลนึงเหมือนกัน..

แล้วตกลงนี่เป็นที่ฉัน.. มัน.. หรือ แม็ค กันแน่ ?

เมื่อถูกท้าทาย

หลังจากที่ไม่ได้เปิด Facebook มานาน วันนี้ลองเข้าไปดูเล่น ๆ ปรากฎว่ามี Invitation มาให้เล่นเกมส์ word challenge
ไอ้เราก็ลองเล่นไปเล่นมา รู้สึกสนุกดีนะ แต่คิดศัพย์ไม่ค่อยออกเลย ก็เลยเขียน script มาช่วยค้นหาศัพย์ ซึ่งเขียนด้วย perl

ก่อนอื่นก็ไปหา dictionary ก่อนเลยไม่ค่อยมีที่ถูกใจ จนมาพบกับ web นึงซึ่งค่อนข้างดูแปลก (รึเปล่า)

นั่นคือ http://zyzzyva.net/ ตรงข้างล่างมีรวบรวมศัพย์หลาย ๆ แบบ เราก็เลยจับเอามายำกันซะ ให้เหลือศัพย์ที่มีความยาว 3 – 6 ตัวอักษร

จากนั้นก็เขียน perl เพื่อมา search ศัพย์จากตัวอักษรที่มีอยู่ ซึ่ง algorithm ไม่มีอะไรมาก คืออ่าน file เข้ามาแล้วก็ก็จัดการเรียงตัวอักษรซะใหม่ แล้วจึงค่อยจัดเก็บเข้า mem แบบ hash จะได้ไม่ต้องมาวน loop เพื่อ search หลาย ๆ รอบ จากนั้นก็ส่วนของการรับ input ก็เขียนให้เอาตัวอักษรมา 3 – 6 ตัวทุก combination มา search ใน hash ที่เตรียมไว้

ตอนแรกก็พิมพ์ตาม ศัพย์ที่มีใน dictionary นั่นแหละ แต่ทำไปทำมาชักไม่สะดวก โชคดีที่ perl มี Module ชื่แ Win32::GuiTest ซึ่งมีคำสั่ง Sendkey ของ windows… เสร็จโจรเลยหล่ะ ทีนี้ ผลลัพธ์ที่ได้คือ… ดัง VDO


ส่วน code นั้นก็เขียนแบบง่ายๆ มีเนื้อหาดังนี้

use Win32::GuiTest qw(FindWindowLike GetWindowText
SetForegroundWindow SendKeys);
use Win32::Clipboard;

load_word();
$min = 3;
$max = 6;

while(1)
{
	print "Input : ";
	$input = ;
	chomp($input);

	SetForegroundWindow(658262);
	doit($input);
}

sub doit
{
	my $set = shift;
	@answer = "";
	@list2 = "";
	for(my $i=$max;$i >= $min;$i--)
	{
		@list = "";
		find_com($set,"",0,$i);
		@list = sort(@list);
		foreach $l (@list)
		{
			push @list2,$l;
		}
	}

	my %ww = "";

	foreach $l (@list2)
	{

		if($word{$l})
		{
			for(my $i = 0;$i < $word{$l}; $i++)
			{
				if(!$ww{$words{$l}[$i]})
				{
					#print "$l = $words{$l}[$i]\n";
					push @answer, $words{$l}[$i];
					$ww{$words{$l}[$i]} = 1;
				}
			}
		}
	}
	print "\n\n";

	@answer = sort {length $a <=> length $b || $a cmp $b} @answer;
	foreach $ans (@answer)
	{
		if($ans eq "")
		{
			next;
		}
		if(length($ans) == 6)
		{
			print ">>> $ans\n";
			next;
		}
		SendKeys("$ans~");
		print "Trying $ans\n";
	}

	print "\n\n";
}

sub find_com
{
	my $set = shift;
	my $this_text = shift;
	my $count = shift;
	my $max = shift;
	for(my $i = $count;$i < length($set) ; $i++)
	{
		my $the_text = $this_text . substr($set,$i,1);
		if(length($the_text) == $max)
		{
			my $x = rearrange($the_text);
			push @list,$x;

		}
		elsif(length($set) - $i < $max - $count)
		{
			return;
		}
		else
		{
			find_com($set,$the_text,$i+1,$max);
		}
	}
}

sub rearrange
{
	my $text = shift;
	my @tmp;
	for(my $i = 0 ; $i < length($text) ; $i++)
	{
		my $sub = substr($text,$i,1);
		push @tmp, $sub;
	}
	@tmp = sort(@tmp);
	return join("",@tmp);
}

sub load_word
{

	open(READ,"enable1.txt");
	@data = ;
	close(READ);
	chomp(@data);

	my $set = shift;
	my $min = 3;
	my $max = 6;

	foreach $line (@data)
	{
		if(length($line) < 3 || length($line) > 6)
		{
			next;
		}
		$re = rearrange($line);
		if(!$word{$re})
		{
			$words{$re}[0] = $line;
			$word{$re} = 1;
		}
		else
		{
			$words{$re}[$word{$re}] = $line;
			$word{$re}++;
		}
	}
}

Up again 12.09.2007

กลับมาแล้วสำหรับ kengz.com นึกว่าจะไม่มีเวลาทำซะแล้ว
เนื่องด้วย… เมื่อประมาณ 1 เดือนที่แล้ว server ที่ host kengz.com อยู่นั้นได้มีปัญหา (จนกู่ไม่กลับ)  และกระผมก็ไม่ค่อยมีเวลา
จึงปล่อยให้ web เดี้ยงไปแบบไร้เหตุผลประมาณเกือบ 1 เดือน แต่ตอนนี้มันกลับมาแล้ว !!

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

Return top