เปรียบเทียบเนื้อข้อมูลของ UTF-8 กับ Unicode หรือ UTF-16

เปรียบเทียบ utf8 utf16 และ unicode
เปรียบเทียบ utf8 utf16 และ unicode

ปกติผมจะเรียกว่าประเภทตัวอักษรแบบ Unicode
แต่ใน Firefox และ Chrome เรียกว่า UTF-16
ในบราวเซอร์รุ่นใหม่จะรู้อัตโนมัติว่าเป็นแฟ้มข้อมูลแบบใด เพื่อการแสดงผล

UTF-8
UTF-8 เป็นมาตรฐานของตัวอักษร มี Character table ที่กำหนดอย่างชัดเจน
หากสร้างแฟ้มแบบ UTF-8 ที่มีตัวอักษร 3 ตัวคือ “กขค” จะใช้พื้นที่ทั้งหมด 12 bytes
โดยใช้พื้นที่เก็บข้อมูลตัวอักษรละ 3 bytes และส่วน header คงที่อีก 3 bytes
เมื่อใช้โปรแกรม editplus ที่กำหนด encoding type เป็น UTF-8 แล้วสร้างแฟ้ม พบว่า

กอไก่ คือ E0 B8 81 ฐาน 16
ขอไข่ คือ E0 B8 82 ฐาน 16
คอควาย คือ  E0 B8 84 ฐาน 16
โดย 3 Bytes แรกของแฟ้ม คือ EF BB BF ฐาน 16

แต่ตัวเลขในแฟ้มประเภท UTF-8 จะใช้ค่าตามตาราง ASCII เหมือนเดิม
แต่อักษร 3 bytes แรกก็ยังมีอยู่เหมือนเดิม
เมื่อสร้างแฟ้มที่มี “012” ก็จะได้แฟ้มขนาด 6 Bytes
ซึ่งมาตรฐานนี้กำหนดว่าภาษาไทยอยู่ระหว่าง 0xe0 0xb8 0x80 ถึง 0xe0 0xb9 0xbf
แต่ถ้าเป็นมาตรฐาน unicode หรือ UTF-16 จะอยู่ระหว่าง U+0E00 ถึง U+0E7F

UTF-16
หากกำหนดประเภทแฟ้มเป็น unicode หรือ UTF-16 แล้ว save as ข้อมูล “กขค”
จะใช้พื้นที่ขนาด 8 bytes พบว่า

กอไก่ คือ 01 0E ฐาน 16
ขอไข่ คือ 02 0E ฐาน 16
คอควาย คือ  04 0E ฐาน 16
โดย 2 bytes แรก คือ FF FE ฐาน 16

แต่ถ้าเป็นตัวเลข “012” ก็จะมีขนาดเท่ากับ “กขค” ที่ใช้พื้นที่ 8 bytes
โดย 2 bytes แรกเหมือนเดิม แต่ข้อมูลคือ 30 00 31 00 32 00
ซึ่ง unicode จะมีขนาดแฟ้มแน่นอน คือ ตัวอักษรละ 2 bytes
เมื่อรวมกับ header อีก 2 bytes ก็จะรู้ว่าแฟ้มนี้มีกี่ตัวอักษร
เช่น “ก0ข1ค2” จะมีขนาด 14 bytes

ขนาดแฟ้มที่แตกต่าง
เมื่อพิจารณาดูความต่างของขนาดแฟ้มจะพบว่า
ประเภท UTF-8 จะมีขนาดแฟ้มแปรผัน
ตามลักษณะของข้อมูล โดยตัวเลขใช้ 1 byte แต่ตัวอักษรใช้ 3 bytes
เช่น  “ก0ข1ค2” จะมีขนาด 15 bytes
เพราะ กขค ใช้พื้นที่ 9 bytes และ 012 ใช้พื้นที่ 3 bytes
รวม header 3 bytes ก็จะเป็น 15 bytes

ตัวอย่างการเชื่อม vs.net + console + winapp + mysql + xampp + mysql connector

vs.net + console + winapp + mysql + xampp + mysql connector
vs.net + console + winapp + mysql + xampp + mysql connector

ตัวอย่างมีโปรแกรม 2 ส่วน ที่แสดงความสัมพันธ์ของการทำงานกับส่วนต่าง ๆ ที่เชื่อมโยงกัน ได้แก่ vs.net + console application + class library + winapp + mysql + xampp + mysql connector ประกอบด้วย
1. solution ที่เป็น class library มี method ทำงานกับ mysql ในการ insert, delete, update, select
โดยรองรับการทำงานแบบ console และนำไปใช้งานบน windows forms application
http://www.thaiall.com/vsnet/mysql_sidu2.zip
2. solution ที่เป็น windows forms application มีฟอร์มเรียกใช้ class ใน class library เชื่อมต่อกับ mysql
http://www.thaiall.com/vsnet/mysql_form2.zip

ขั้นตอน และโปรแกรมที่จำเป็นต้องติดตั้งเพื่อใช้งาน solution ทั้ง 2 ข้างต้น

1. ติดตั้ง vs.net 2010
http://msdn.microsoft.com/en-us/library/dd831853%28v=vs.100%29.aspx
2. ติดตั้ง mysql connector .net เพื่อการเชื่อมต่อกับ mysql
http://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-6.5.4.msi/from/http://cdn.mysql.com/
12.8 MB
3. ติดตั้ง xampp เพื่อบริการ mysql
http://www.apachefriends.org/download.php?xampp-win32-1.8.1-VC9-installer.exe
99 MB
4. คลาย .zip ทั้ง 2 solution ใน c:\ แบบ extract here
5. start mysql ใน xampp
6. เปิด c:\mysql_sidu2\mysql_sidu2.sln
7. เปลี่ยน application type เป็น console application
8. กด F5 = Start Debugging แล้ว กด s,1,10 คนละบรรทัดครับ เพื่อทดสอบ
9. เปิด c:\mysql_form2\mysql_form2.sln
10. กด F5 = Start Debugging เพื่อทดสอบ insert, delete, update, select

text processing แบบ csv ในภาษา perl

ตัวอย่างผลแบบ csv
ตัวอย่างผลแบบ csv

มีโอกาสรื้อโค้ดภาษา perl อ่าน course กับ regist
ซึ่งจัดเก็บแบบ csv โดยส่งรหัสนักศึกษา ปี และภาค ไปถาม
แล้วตอบกลับเป็นรายวิชาที่ลงทะเบียน
ทำให้รู้ว่าลงวิชาอะไรไปบ้างในแต่ละภาคเรียน
เป็นเพียงช่วงหนึ่งของ code หลักที่ใช้ทำ transcript
แต่มีเพื่อนต้องการข้อมูลเพียงเท่านี้ไปประมวลผลต่อ
จึงตัด code ออกมาให้เหลือข้อมูลเท่านี้
มีตัวอย่าง code ดังนี้
#!/usr/bin/perl
# ?idstd=1234&yr=2012&sem=1
&parse;
print “Content-type:text/html\n\n”;
open(FILE,”course.txt”); @rec=<FILE>; close(FILE);
foreach $r(@rec) {
@d = split(“,”,$r);
$dd = join ‘,’,$d[2],$d[3],$d[4]; #code, subject name, credit
$scode{$d[0]} = $dd;
}
# ==================
$file = join ”,”regist”, $config{‘yr’} , $config{‘sem’} ,”.txt”;
open(FILE,”$file”); @rec=<FILE>; close(FILE);
foreach $r(@rec) {
@r = split(“\n”,$r);
@d = split(“,”,$r[0]);
if ($config{‘idstd’} eq $d[2]) {  print  $d[1] . “,”.$scode{$d[2]}.”,<br/>”; }
}
# ==================
sub parse {
if ($ENV{‘REQUEST_METHOD’} eq ‘GET’) {
@pairs = split(/&/, $ENV{‘QUERY_STRING’});
} elsif ($ENV{‘REQUEST_METHOD’} eq ‘POST’) {
read(STDIN, $buffer, $ENV{‘CONTENT_LENGTH’});
@pairs = split(/&/, $buffer);
}
foreach $pair (@pairs) {
local($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(“C”, hex($1))/eg;
$name =~ s/~!/~!/g;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(“C”, hex($1))/eg;
$value =~ s/~!/~!/g;
$value =~ s/<!–(.|\n)*–>//g;
$config{$name} = $value;
}
}

Desktop หายจาก windows explorer

folder options
folder options
12 ต.ค.55 ปกติเครื่องคอมพิวเตอร์ที่ผมใช้ทุกเครื่องทั้งที่ทำงานและที่บ้าน จะติดตั้ง deepfreeze เพื่อคงสภาพของ drive c ไม่ให้มีการเปลี่ยนแปลง ผลดีมี 2 ข้อ คือ ทดสอบโปรแกรมใหม่ได้ตลอดเวลา และไม่ติดไวรัส อยู่มาวันหนึ่ง mainboard มีปัญหา ก็ได้คุณเปรมช่วยดูแลเครื่องให้ โดยย้ายไปเครื่องใหม่ที่มี mainboard รุ่นใหม่ แต่ harddisk เดิม ซึ่งคุณอนุชิตแนะนำว่าต้องลงโปรแกรม SPAT6.0.9 (System Preparation Assisted Tool) ช่วยล้างค่าอุปกรณ์ต่าง ๆ ภายในเครื่อง ก่อนถอด harddisk ไปใส่ในเครื่องใหม่ เมื่อย้ายเครื่องสำเร็จแล้วใช้ windows explorer พบว่า folder ชื่อ desktop หายไป เพราะปกติจะบันทึกแล้วที่ใช้ชั่วคราวไว้ใน desktop หากปิดเครื่องแล้วเปิดใหม่แฟ้มเหล่านั้นก็จะหายไป ด้วยพลังของ deepfreeze
วิธีที่ผมแก้ไข คือ เข้าไปตรวจ properties ของ folder options ก็พบว่า Show all folders ใน Navigation pane ไม่ได้ถูกทำเครื่องหมายไว้ (uncheck) จึงแก้ไขเป็น check แล้วก็พบว่า desktop ถูกแสดงใน windows explorer ตามปกติ
พบข้อมูล จากเว็บไซต์ varietypc.net มีคำแนะนำเกี่ยวกับ hirens แต่กรณีของผมไม่ได้ใช้ตามคำแนะนำ เพราะใช้ Harddisk ลูกเดิม แต่เปลี่ยนเครื่อง หากท่านใดย้ายทั้ง Harddisk และเครื่อง ก็คงต้องใช้ hirens ช่วยในการ Clone Harddisk

การทำ USB Flash Drive ของ Hirens ไว้ใช้งาน
Download SPAT6.0.9
+ http://plunder.com/c810a8ca68

ศูนย์สอบออนไลน์แห่งใหม่

online quiz
online quiz

9 ต.ค.55 ผมได้เปลี่ยนนโยบาย thainame.net (อีกครั้ง) จาก “โฮมเพจฟรี และสคริปต์สำหรับสร้างบริการนี้” เป็น “ศูนย์สอบออนไลน์แห่งใหม่” โดยอาศัยเด็ก ๆ 3 คน สร้างข้อสอบ 3 ชุด คือ ชุดฝนดาวตก ชุดเกาะพีพี และชุดอ่าวมาหยา ส่วนชุดที่แถมเข้าไปคือ ชุดป๊ะป๋าม๊ะม๋า งานนี้เริ่มดำเนินการในช่วงปิดภาคเรียนที่ 1 ของม.1 น้องแฝด และม.2 ของพี่คนโต แทนที่จะเรียนรู้เรื่องราวต่าง ๆ เฉย ๆ ก็นำความรู้มาเรียบเรียง และเผยแพร่ในรูปของข้อสอบออนไลน์ โดยใช้การสร้างข้อสอบที่มีเด็ก ๆ เป็นกลไก และคาดว่าผมจะทิ้งไม้ปล่อยให้พวกเขาเข้าควบคุมระบบในเร็ววันนี้ ซึ่งช่วงนี้ผมใช้กระบวนการดังนี้

1. เด็ก ๆ พิมพ์ข้อสอบใน word ในชื่อแฟ้มที่ตนถนัด
2. ทำความเข้าใจเรื่องกฎการตั้งชื่อ และรูปแบบการพิมพ์
3. ผมเตรียมเครื่อง แก้ไขจาก test10.php มาเป็น test3.php และทดสอบ
4. ให้พวกเขาเปลี่ยนจาก word มาเป็น php โดยใช้ excel แบบ csv
5. เลือกสี และภาพประกอบชุดข้อสอบของตน
6. ตรวจทานผ่านระบบออนไลน์ แล้วแก้ไขให้ถูกต้อง

พรุ่งนี้ .. ผมต้องอบรมนักศึกษา เตรียมความพร้อมเข้าสหกิจฯ เรื่องการเขียนโฮมเพจ ก็คาดว่าจะเปิดให้นักศึกษาเข้าใช้บริการโฮมเพจฟรีผ่านโดเมนตัวนี้ ก่อนปรับ design ในวันถัด ๆ ไป โดยมี webpage ที่ให้บริการคือ http://www.thainame.net/ntu แล้วมี account ตั้งแต่ onea ถึง twoz ทั้งหมด 52 account ไว้คอยท่า

ติดตั้ง visual studio 2010

how to install visual studio 2010
how to install visual studio 2010

เพื่อนร่วมงานให้โปรแกรมมาลองติดตั้ง เป็น VS 2010 แล้วผมก็ลง 2 รอบ เพราะรอบแรก Hang ส่วนรอบ 2 ใช้ Reinstall ปัญหาใหญ่คือเครื่องเก่า แต่สุดท้ายก็ข้าม error ไปจนเปิดโปรแกรมได้สำเร็จ
OS: XP V2002 SP3
CPU: AMD Althlon 64 X2 Dual Core Processor 4000+
Ram: 1 GB
HD: 60 GB ก่อนติดตั้งพบว่า D: เหลือ  1 GB และ C: เหลือ 10 GB
พบความขลุกขลักระหว่างติดตั้ง เพราะต้องคิดเรื่อง Deepfreeze และสรุปได้ว่าทำให้ D: เหลือมากกว่า 2 GB แล้วคัดลอกตัวติดตั้งลงไป แล้วใช้ daemon tool อ่านเพื่อติดตั้งลงไปใน C: ระหว่างรอพบว่าโปรแกรมสั่ง restart ระหว่างติดตั้งเพื่อเข้าสู่โปรแกรมใหม่  เมื่อเริ่มใหม่ก็ต้องปลุกให้ Daemon tool ทำงานต่อ ก็ทำให้การติดตั้งผ่านต่อไปในส่วนของ Visual Studio ได้สำเร็จ

http://www.facebook.com/media/set/?set=a.527414350606034.132429.506818005999002

stop motion กับแจกันเก่าที่บ้าน

30 ก.ย.55 คลิ๊ปตัวอย่างนี้ เป็นการเทียบเคียงการทำงานแบบ stop motion คือการเคลื่อนไหวแบบหยุดเป็นจังหวะ แต่ภาพชุดนี้ต่างออกไป คือคนถ่ายเป็นคนเคลื่อนไหว แต่ถ้า stop motion ของจริง วัตถุจะเป็นตัวเคลื่อนไป เหมือนตัดภาพทุก 5 วินาทีมาแสดง ซึ่งมีภาพยนตร์การ์ตูนหลายเรื่องใช้เทคนิคนี้

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

สต็อปโมชั่นมีเทคนิคทำได้หลากหลาย

1. เคลย์แอนิเมชั่น (Clay animation หรือ เคลย์เมชั่น  claymation) คือ แอนิเมชั่นที่ใช้หุ่น หรือรูปทรง ซึ่งทำจากดินเหนียว ขี้ผึ้ง หรือวัสดุใกล้เคียง โดยใส่โครงลวดไว้ข้างในเพื่อให้ดัดท่าทางได้ แล้วเคลื่อนไหวไปทีละท่าทางตามต้องการ เมื่อนำภาพทั้งหมดมาเรียงเป็นเฟรมต่อกัน ก็จะเสมือนว่ามีการเคลื่อนไหวอย่างต่อเนื่อง
2. คัตเอาต์แแอนิเมชั่น (Cutout animation) คือ การนำวัสดุสองมิติ เช่น กระดาษ หรือผ้า มาตัดเป็นรูปต่าง ๆ แล้วนำมาขยับเพื่อถ่ายเก็บไว้ทีละเฟรม แล้วนำเฟรมมาต่อกัน เล่าเป็นเรื่องราวตามหัวข้อที่กำหนด แต่ปัจจุบันอาจวาดหรือสแกนภาพเข้าไปขยับในคอมพิวเตอร์ เช่น move, rotate หรือ resize
3. หุ่นกระบอก หรือโมเดลแอนิเมชั่น (Puppet or Model animation) คือ การทำตัวละครเป็นโมเดลขึ้นมาขยับร่วมกับวัตถุอื่น อาจมีการซ้อนภาพเข้ากับฉากที่มีคนแสดงจริง และภาพพื้นเสมือนจริงก็ได้
4. พิกซิลเลชั่น (Pixilation) คือ การใช้คนจริงมาขยับท่าทางเพื่อแสดงการเคลื่อนไหว แล้วถ่ายเก็บไว้ทีละภาพ ทีละเฟรม แล้วนำมาฉายต่อเนื่องกันให้เห็นถึงการเคลื่อนไหวของคนอย่างไหลลื่น
5. แอนิเมชั่นกับวัตถุ (Object animation) คือ การนำวัตถุที่ไม่สามารถดัดแปลงรูปร่างหน้าตาแบบดินเหนียว มาเป็นองค์ประกอบหลักในการสร้างภาพ เช่น ของเล่น หุ่น ตุ๊กตา หรือตัวต่อเลโก้
6. แอนิเมชั่นเงาของแสง (Silhouette animation) คือ การแสดงให้เห็นวัตถุผ่านเงา อาจสร้างวัตถุจากกระดาษ แล้วนำมาบังแสงเพื่อให้ได้เงาที่ต้องการ อาจใช้วิธีอื่นก็ได้ ซึ่งเป็นแนวคิดที่ปรับจากการแสดงด้วยเงาคล้ายหนังตะลุง หรือหนังเงา

http://www.thaiall.com/blogacla/burin/4036/

http://www.maacindia.com/blog/index.php/stop-motion-animation-another-approach-to-animation/
http://th.wikipedia.org/wiki/%E0%B8%AA%E0%B8%95%E0%B8%AD%E0%B8%9B%E0%B9%82%E0%B8%A1%E0%B8%8A%E0%B8%B1%E0%B8%99

Google ไดรฟ ใช้เป็นเครื่องมือทำงานร่วมกับผู้อื่นในการพัฒนาเว็บไซต์ได้

wire frame
wire frame

ด้วย Google ไดรฟ์ คุณจะสามารถสร้าง แชร์ และเก็บไฟล์ทั้งหมดไว้ในที่เดียว ไม่ว่าจะเป็นการระดมความคิดจัดทำเนื้อหาเว็บไซต์ แชร์ไฟล์รูปภาพกับนักออกแบบของคุณ หรือสร้างแบบร่างไวร์เฟรมใหม่ (WireFrame = screen blueprint) ล้วนสำเร็จได้ใน “ไดรฟ์” และคุณยังสามารถเข้าถึงข้อมูลของคุณได้จากทุกที่ ผ่านอุปกรณ์สื่อสารอันหลากหลาย ไม่ว่าขณะท่องเว็บ อยู่บ้าน ที่ทำงาน หรือทำธุระนอกสถานที่
+ http://adsense.blogspot.com/
+ http://www.fivetechnology.com/blog/2008/10/01/web-design-process-a-focus-on-wireframes-layout/

ทดสอบฟังก์ชันเกี่ยวกับ date ใน access 2010 ไว้คุยกับเพื่อน chiangmai

date function on ms access 2010
date function on ms access 2010

15 ก.ย.55 นาน ๆ ทีจะมีเพื่อนที่ใช้งาน Microsoft Access มาพูดคุยด้วย ครั้งนี้เป็นเพื่อนราชการที่เชียงใหม่ จะคุยเรื่องวันที่ .. โดยก่อนหน้านี้เป็นเพื่อนที่ใช้ GPS (ซึ่งเป็นลูกศิษย์หัวหน้า) ก็เกือบคุยกันไม่ได้แล้ว แต่ที่เขามาคุยด้วยคือภาษา PHP ที่ประยุกต์กับ GPS จึงผ่านไปด้วยดี .. แล้วก่อนถึงวันพรุ่งนี้ได้ทดสอบฟังก์ชันไว้คุยกับเขา 2 ฟังก์ชัน คือ CDbl(#2012-09-14 10:10:00 AM#) มีค่า 41166.42361 และ CVDate(41167.42361) ก็จะได้ Saturday, Saptember 15,2012 หากกำหนด format เป็น long date

แหล่งอ้างอิง ms access รุ่นใหม่ใน http://support.microsoft.com/kb/210276
แต่สำหรับ access97 ต้องดูใน http://support.microsoft.com/kb/130514
โดยอธิบายว่า 1 วัน เท่ากับ 1 เริ่มต้นจากวันที่ 30 ธันวาคม 1899 ถึงวันที่ 14 กันยายน 2012 ห่างกัน 41166 วัน และใน 1 วันก็จะมีค่าตั้งแต่ 0 – 0.99999 นั่นเอง

ภาพนี้ได้จาก Microsoft access 2010 ซึ่งมีสกุลเป็น .accdb ทั้งหมดนี้มีผลทดสอบ
ใน http://www.thaiall.com/teachaccess/date2010.accdb และ folder นี้ได้กำหนด .htaccess ให้สามารถ download แฟ้มนี้ได้ว่า
AddType application/vnd.openxmlformats .docx .pptx .xlsx .doc .xls .ppt .accdb

Microsoft Reader หยุดบริการ 30 สิงหาคม 2012

microsoft reader
microsoft reader

11 กันยายน 2555 มีโอกาสปรับเนื้อหาเว็บไซต์สื่อการสอนจัดทำ e-book ด้วย flip album ก็พบว่า microsoft reader ซึ่งเคยเป็นหนึ่งใน e-book software ที่ผมสนใจ ได้ประกาศยุติการพัฒนาโปรแกรม .. นึกแล้วก็น่าใจหายครับ

http://www.thaiall.com/flip

Microsoft Reader หยุดบริการ 30 สิงหาคม 2012 หลังเคยระงับการจำหน่ายแฟ้ม .lit เมื่อ 8 พฤศจิการยน 2011 การระงับนี้รวมถึงการดาวน์โหลด และบริการซอฟท์แวร์ตัวนี้ อย่างไรก็ดีลูกค้าก็ยังใช้ต่อเนื่องได้ต่อไปบนเครื่องคอมพิวเตอร์ส่วนบุคคล หรือุปกรณ์ที่ท่านใช้อยู่

http://www.microsoft.com/reader

Microsoft has discontinued Microsoft Reader effective August 30,2012 which includes download access and activation of the Microsoft Reader from the Microsoft Reader website. However, customers may continue to use and access the Microsoft Reader application and any .lit materials on their PCs or devices. New content for purchase from retailers in the .lit format was discontinued on November 8,2011.