26 มี.ค.53 คุณ big หรือ Nanapa Navapongsireetorn เป็น area manager ของ tarad.com และ thaisecondhand.com โทรมาแจ้งว่า บริษัท ตลาดดอทคอม จำกัด ได้จัดสัมมนาหลักสูตร “เพิ่มยอดขาย ลดรายจ่าย ด้วยร้านค้าออนไลน์” ในวันเสาร์ที่ 3 เมษายน 2553 เวลา 13.30น. – 16.00น. ณ ห้องประชุมธัญญากร ชั้น 1 คณะวิทยาการจัดการ มหาวิทยาลัยราชภัฏลําปาง มีหัวข้อสำคัญ 5 หัวข้อคือ 1)วิธีการโปรโมทเว็บไซต์ให้ติด Google ภายใน 1 เดือน 2) เริ่มต้นรู้จักการ พาณิชย์อิเล็กทรอนิคส์ (E-Commerce) 3) ยุทธวิธีในการวางแผนเพื่อเริ่มต้นทำ E-Commerce 4) 10 วิธีการสร้างความน่าเชื่อถือให้กับเว็บไซต์ของคุณ 5) กลโกงทางอินเตอร์เน็ตที่ควรระมัดระวังเมื่อทำ E-Commerce เมื่อได้ข้อมูลผมจึง post ไว้ใน thaiall.com/blog และ lovelampang.com
+ http://www.tarad.com
+ http://www.thaisecondhand.com
+ http://www.lovelampang.com
Category: Web, Program, OS
Website development,
Web application,
Windows application,
Operating System,
Android Studio
ปรับ wordpress เพื่อสร้าง theme รับ seo
23 มี.ค.53 ได้ฤกษ์แก้ไข code ของ wordpress เป็นภาษาไทย โดยใช้ editplus เปิดแฟ้ม archive.php comments.php search.php author.php index.php page.php header.php footer.php single.php และ style.css โดยการแก้ไขมีดังนี้ 1) ทุกแฟ้มต้องเปลี่ยน encoding เป็น utf8 เพื่อแก้ปัญหาภาษาไทย เนื่องจากกำหนด define(‘DB_CHARSET’, ‘utf8’); ใน wp-config.php จึงต้องแก้ charset ในครั้งนี้ 2) เพิ่มป้ายประชาสัมพันธ์ของ google เข้าไปในหน้าที่สำคัญ 3) ปรับ widecolumn ให้มี width: 600px; และเพิ่ม .narrowcolumn .entry { width: 468px; } เข้าไปใน style.css 4) ปรับ font-size และ layout ให้กับหลายส่วน 5) ล้าง code ให้มีขนาดลดลง โดยเฉพาะ css 6) ปรับ sidebar, categories และ tag cloud ให้พร้อมรับ seo
พบ crawl errors กว่า 500 ที่เป็น unreachable จึงต้องแก้ไข
16 มี.ค.53 มีโอกาสเข้าไปตรวจ account ของ webmaster tools ที่สมัครไว้หลายปีก่อน เนื่องจากมีปัญหาในเว็บไซต์ wordpress ขององค์กรที่ติด bad ware เมื่อเข้าไปดูสถิติเกี่ยวกับ crawl errors ก็ต้องตกใจ เพราะ url แบบ permalink ที่ใช้ใน wordpress 2.9.2 นั้น ใช้งานไม่ได้ในส่วนของ tag กว่า 500 เว็บเพจใน thaiall.com/blog จึงหาวิธีแก้ไขเรื่อง url ที่ใช้ภาษาไทยไม่ได้ ถ้าใช้ slug tag เป็นภาษาอังกฤษหรือตัวเลขอย่างที่ใช้ใน category หรือ username หรือ postid ก็จะไม่พบปัญหา ที่เป็นปัญหาคือใช้ tag ที่แปลงภาษาไทยด้วย url encode แล้ว เมื่อข้อความไปผ่าน mod_rewrite ของ apache ในเครื่องของ hypermart.net จะพบ Internal Server Error .. สังเกตุว่าเกิด redirect 2 รอบเมื่อกดปุ่ม enter .. ต้องแก้ปัญหามิเช่นนั้นจะไม่เป็นไปตาม seo ครับ
พยายามแก้ไขจนไปพบทางออกในวิธีที่สาม คือ 1) ติดตั้ง simple tag plugin แต่ไม่ช่วยแก้ปัญหากรณีนี้ เพราะไม่มีตัวเลือก tag id และถ้ามีก็คงไม่ work ตามกฎของ seo 2) จะแก้ .htaccess แต่ก็สงสัยว่าแก้ไปก็คงไม่ช่วย เพราะปัญหานี้เกิดเฉพาะกับ hypermart.net ทดสอบในเครื่องที่บ้านที่ใช้ apache ก็ไม่พบปัญหานี้ และเคยพบปัญหาภาษาไทยกับ url จนต้องใช้ url_encode ใน php มาแล้ว แต่ครั้งนี้มีการ redirect 2 รอบ จึงคาดว่าไม่ผ่านในรอบสองนั่นเอง 3) ทดสอบใช้ default ของ permalink แล้วพบว่ามี ?tag= ให้ใช้บริการ เมื่อเปลี่ยนไปใช้ /%author%/%post_id%/ ก็พบว่ายังใช้ ?tag= ได้ จึงทดสอบเติมเข้าไปใน tag base ก็ยังใช้งานได้ทั้งแบบผ่าน get และผ่าน mod_rewrite สรุปว่าเป็นงานเล็กที่ใช้เวลานานมากอีกงานหนึ่ง ค้นและทดสอบไปกว่า 6 ชั่วโมง .. ดีนะครับที่อยู่บ้าน เพราะไม่มีใครดึงความสนใจ ถ้าอยู่ที่ทำงานคงไปไม่ถึงไหน .. เท่านี้ก็เป็นไปตามแนวของ seo
+ http://www.thaiall.com/seo
เว็บไซต์ creative university
14 มี.ค.53 พบเว็บไซต์ของมหาวิทยาลัยกรุงเทพ คือ www.bu.ac.th ใช้คำว่า creative university ออกแบบได้สวย เป็นระเบียบ (พบคำว่า creative ที่มี idea สอดคล้องกับที่ ดร.วิริยะ ฤาชัยพาณิชย์ บรรยายที่มหาวิทยาลัย) เมื่อเข้าไปแต่ละคณะก็พบว่ามี creative ในแบบของตน คือ ไม่ได้เหมือนกันไปซะหมด แต่ละคณะก็มีรูปแบบการนำเสนอข้อมูลที่แตกต่างกันไป เหมือนเป็นทีมพัฒนากันคนละทีมกับหน้าแรก โทนสีของเว็บไซต์น่าจะเป็นม่วงส้ม เพราะเว็บเพจที่พัฒนาโดยหน่วยงานกลางจะใช้เมนูด้านซ้ายเป็นสีม่วง ส่วนตัวหนังสือก็พยายามใช้ม่วงกับส้มสลับกัน เช่น ถาม-ตอบ หรือ ควันหลงรับปริญญา การนำเสนอเรื่องการแต่งตัวของนักศึกษาดูเป็นมืออาชีพ และเรียบร้อยสมเป็นนักศึกษาสมัยใหม่ในสถาบันการศึกษา และมีการเชื่อม facebook กับ twitter เกาะกระแส Social Network ด้วยครับ แต่ไม่พบการใช้บริการสถิติกับ truehits.net
+ http://www.facebook.com/bangkokuniversity
+ http://twitter.com/BUCreative
+ http://www.youtube.com/bucreative
ลิขสิทธิ์ซอฟท์แวร์ระหว่างบุคคล
6 มี.ค.53 ซอฟท์แวร์ที่ถูกพัฒนาขึ้นส่วนหนึ่งมีลิขสิทธิ์ชัดเจน ผู้นำไปใช้ต้องเสียค่าใช้จ่ายก่อน ไม่มีแชร์แวร์หรือรุ่นทดสอบ (Demo) ให้นำไปทดลองใช้งานก่อนแล้วตัดสินใจภายหลัง ถ้าใช้ก็ต้องเสียเงินก่อนจะได้ซอฟท์แวร์ไปติดตั้ง สำหรับค่าลิขสิทธิ์ซอฟท์แวร์มีหลายรูปแบบ เช่น ใช้คนเดียว ใช้ได้ทั้งองค์การ หรือนำไปพัฒนาให้กับลูกค้า ซอฟท์แวร์บางตัวเป็นแบบต่อยอดจากตัวหลัก เช่น wordpress.org เป็นตัวหลักที่เปิดให้ดาวน์โหลดได้ฟรี แต่ถ้าจะใช้ theme สวยของ solostream.com ที่ออกแบบให้ทำหน้าที่เป็นหน้ากากครอบซอฟท์แวร์ตัวหลักที่ถูกพัฒนาขึ้นโดยผู้พัฒนาอิสระแล้วจำหน่ายแยกออกจากซอฟท์แวร์ตัวหลักที่แจกฟรีก็เกิดขึ้นแล้วในปัจจุบัน
ปัญหาลิขสิทธิ์เกิดขึ้นได้หลายกรณี เช่น ผู้เขียนพัฒนาซอฟท์แวร์ตัวหนึ่งและเปิดให้คนไทยดาวน์โหลดไปใช้ได้ฟรีแบบโอเพนท์ซอร์ท ต่อมามีผู้พัฒนาชาวไทยนำไปพัฒนาต่อยอดแล้วขายต่อให้กับลูกค้า ต่อจากนั้นผู้พัฒนาท่านนั้นได้ทิ้งงานไปแล้วลูกค้าก็โทรมาสอบถามผู้เขียน เพราะคิดว่าซอฟท์แวร์ที่เขาใช้อยู่ได้จ่ายให้ผู้เขียนส่วนหนึ่ง เมื่ออธิบายเรื่องลิขสิทธิ์แล้วลูกค้าท่านนั้นก็เข้าใจ อีกตัวอย่างหนึ่งคือชาวต่างชาติพัฒนาซอฟท์แวร์เพื่อขายแล้วคนไทยได้คัดลอกมาใช้อย่างไม่ถูกต้องตามเงื่อนไขของลิขสิทธิ์ แต่นำซอฟท์แวร์ดังกล่าวไปขายต่อให้กับลูกค้า ซึ่งลูกค้าไม่น้อยไม่เข้าใจในประเด็นเรื่องลิขสิทธิ์ซอฟท์แวร์ก็ยินดีจ่ายด้วยรู้เท่าไม่ถึงการณ์
ในโลกที่เทคโนโลยีพัฒนาอย่างรวดเร็ว การตัดสินใจแต่ละเรื่องต้องใช้วิจารณญาณอย่างมาก เพื่อไม่ให้พลาดพลั้งไปกับเงื่อนไขที่เปลี่ยนแปลงแล้วส่งผลเสียย้อนกลับมา การพัฒนาเว็บไซต์ที่ใช้ระบบจัดการเนื้อหาเว็บไซต์ (CMS) เหมาะกับเว็บไซต์ที่เนื้อหามากและแบ่งหมวดหมู่ได้ชัดเจน เมื่อเลือกใช้ระบบจากค่ายใดก็ต้องติดตามการอัพเกรดอย่างต่อเนื่อง เพื่อให้ทันเทคโนโลยีและปลอดภัยต่อการบุกรุก หากเปลี่ยนระบบ อัพเกรด หรือยกเลิกระบบซีเอ็มเอสอาจทำให้นำข้อมูลกลับมาใช้ต่อไม่ได้ ทำให้ที่อยู่เว็บไซต์ที่เคยถูกอ้างอิงไปทั่วโลกเปลี่ยนแปลง นั่นหมายถึงเนื้อหาที่เคยถูกเชื่อมโยงจากภายนอกจะหายไปทั้งหมด นี่เป็นตัวอย่างประกอบการตัดสินใจจ่ายค่าลิขสิทธิ์ซอฟท์แวร์ที่ต้องพิจารณารอบด้านบนความเข้าใจและให้ความสำคัญกับความเสี่ยงที่จะเกิดขึ้นเป็นที่ตั้ง
theme สวยมาก แต่มี license ของ solostream.com
6 มี.ค.53 วันนี้พบเว็บไซต์หนึ่งใช้ theme สวยมาก ชื่อ wp-clear บน wordpress.com พัฒนาโดย Solostream มีรายละเอียดใน solostream.com ส่วนเว็บบอร์ดของไทยที่ให้ข้อมูลเรื่องนี้พบใน thaiseoboard.com ส่วนเว็บไซต์ของไทยที่ใช้ theme นี้ได้อย่างลงตัว คือ startupthailand.com ตอนแรกก็คิดจะ download มาทดสอบติดตั้งในเครื่องที่บ้านและเผยแพร่ต่อไป แต่เข้าไปอ่านรายละเอียดก็พบว่ามี license คือ The SOFTWARE is protected by copyright laws and international treaty provisions. จึงไม่ดำเนินการอะไรต่อครับ พบว่าราคามี 3 แบบคือ แบบใช้เว็บไซต์เดียวราคาราว 2,400 บาท แบบหลายเว็บไซต์ราคาราว 5,400 บาท แบบสำหรับผู้พัฒนาที่ไปขายให้ลูกค้าอีกต่อได้ราคาราว 8,400 บาท ถ้าผมจะหา free theme ที่นำมาใช้และไม่ผิดกฎหมายคงต้องกลับไปหาใน wordpress.org ใช้เวลาสักพักก็พบว่า themes ชื่อ news-magazine-theme-640 เป็นอะไรที่น่าสนใจมากครับ .. ถ้าใช้ก็ต้องศึกษาเรื่อง seo ไปพร้อมกัน
+ http://wordpress.org/extend/themes/news-magazine-theme-640 + http://www.thaiseoboard.com/index.php?topic=100797 + http://www.solostream.com/wordpress-themes/
+ http://yonok.startupthailand.com
+ http://wordpress.org/extend/themes/
ปรับแว็บไซต์ (wap site) และเพิ่มข้อสอบ
20 ก.พ.53 ตรวจสถิติจากไซต์ของผู้ให้บริการโฮส พบว่า เว็บเพจโปรแกรมข้อสอบผ่าน wap ถูกใช้บริการมีปริมาณการเข้าใช้สูงมากในเดือนมกราคม 2553 เป็นเว็บเพจที่ไม่มีระบบสถิติใด ๆ วางไว้ เพราะต้องการให้เข้าถึงด้วยโทรศัพท์เคลื่อนที่อย่างรวดเร็ว ครั้งแรกที่ออกแบบโปรแกรมนั้นมีความตั้งใจให้ลูกได้เข้าไปเรียนรู้เกี่ยวกับคำศัพท์อย่างง่ายเท่านั้น
การปรับปรุงโปรแกรมในชุดแว็บไซต์ มีดังนี้ 1) ให้ลูกช่วยพิมพ์ศัพท์ 5 ตัวอักษรร้อยกว่าตัว เป็นข้อสอบร้อยกว่าข้อ 2) ตรวจข้อสอบศัพท์ 4 ตัวอักษรแล้วเพิ่มเป็น 316 ข้อ 3) ปรับโปรแกรมทั้งหมดเข้ามาตรฐาน xml ให้ใช้ได้กับ wapsilon.com ถ้ามีโอกาสก็จะเข้าไปเพิ่มศัพท์ 6 ตัวอักษร และ 7 ตัวอักษรต่อไป
+ http://www.thaiall.com/wap
+ http://www.wapsilon.com
+ http://tagtag.com/site/emulator
+ http://www.mobilerunner.net/emu_wap3/p/wap3/
แปลงเลขอารบิกเป็นเลขไทย
10 ก.พ.53 เรื่องนี้ควรเขียนเมื่อหลายเดือนก่อนหน้านี้ เพราะ ผศ.ดร.จินดา งามสุทธิ ท่านอธิการบดี รณรงค์ให้ใช้เลขไทยในบันทึกข้อความ แต่ความไม่ชินและความมักง่าย ทำให้ผมเลือกใช้วิธีแปลงเลขอารบิกด้วยการ replace ถึง 10 ครั้ง เพื่อเปลี่ยนตัวเลขทีละตัว แต่ถ้าให้อัตโนมัติก็จะเข้าไปกำหนดใน autocorrect สำหรับแต่ละตัวเลข แต่ใช้ได้กับเลขหลักเดียว ก็ช่วยได้เพียงระดับหนึ่ง (วันนี้ผมเคลียร์งานเขียนแผน km ของมหาวิทยาลัยล้อกับโครงการอบรมประกันฯของ อ.ศศิวิมล แรงสิงห์ เสร็จเร็วกว่าที่คาด) จึงคิดว่าถึงเวลาที่ไม่ควรผลัดวันประกันพรุ่งอีกต่อไป เมื่อศึกษาวิธีการแทนที่ตัวเลขด้วย macro ที่เขียนแบบใช้ใน word กับ excel เผยแพร่ใน thaiall.com/vb เพราะ macro ใช้ visual basic script ใน module สำหรับการประมวลผล
แหล่งเก็บ macro มี 2 แบบคือ ใน normal หรือ ใน document ถ้าเป็นแบบใน document เมื่อสร้างเอกสารก็จะติดเอกสารไป เปิดเอกสารใหม่จะไม่พบ macro เดิม แต่ถ้าเป็นแบบใน normal จะมี macro ติดอยู่ใน template ของ word ทำให้เปิด word แล้วเรียกใช้ macro ได้ทุกครั้ง สำหรับวิธีสร้างและใช้ macro นั้นเริ่มต้นด้วยการคัดลอกโค้ดไปใส่ใน module ของ macro แล้วสั่ง run ใน macro เมื่อต้องการเปลี่ยนตัวเลขทั้งหมดเป็นเลขไทย ซึ่งโค้ดได้สั่งแทนที่ทั้ง 10 ตัวอักษรเป็นเลขไทยอัตโนมัติ การนำไปใช้สำหรับ word กับ excel ต่างกันเล็กน้อย ถ้านำไปใส่ไม่ได้ โปรดติดต่อช่างเทคนิคใกล้บ้าน เพราะส่งเข้า word ครั้งเดียว แต่ใช้งานได้ตลอดไป .. ต่อไปผมก็จะเริ่มใช้แล้ว เพราะ replace 10 ครั้ง ไม่ดีแน่
source code : macro of word
Sub arabictothai()
For i = 0 To 9
With Selection.Find
.Text = Chr(48 + i)
.Replacement.Text = Chr(240 + i)
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
End Sub
source code : macro of excel
Sub arabictothai()
For i = 0 To 9
Cells.Replace What:=Chr(48 + i), Replacement:=Chr(240 + i)
Next
End Sub
การแปลงเลขใน excel
1. ถ้าเป็น excel ไม่ต้องใช้ function ให้กด Ctrl-A แล้วกำหนด format ของ cell ใน Number, Custom เป็น [$-D07041E]0 ก็จะทำให้ข้อมูลที่เป็นตัวเลขทั้งหมดเป็นเลขไทย
2. ถ้าต้องการมี , กั้นหลักพันก็ใช้ [$-D07041E]#,###,##0 อะไรทำนองนี้ ok ไหมครับ
สาธิต : http://www.youtube.com/watch?v=JNy15bLnt9k
ข้อมูลเพิ่มเติม : http://www.thaiall.com/blog/burin/1496/
สถิติเข้า wap ของผมเดือนธันวาคม52
4 ก.พ.53 สถิติการเข้าเว็บไซต์มีอยู่หลายระบบ แต่ที่บริการโดยผู้ให้บริการเช่าเครื่องมีความละเอียดสูงมาก จากการตรวจสอบในปลายเดือนธันวาคม52 พบว่า thaiall.com/wap มี hits ของเว็บเพจสอบศัพท์อย่างง่ายสูงมาก เป็นศัพท์ 4 คำถึง 2หมื่นกว่า และศัพท์ 3 คำอีกหมื่นกว่าจาก 9383 แฟ้ม วันนี้จึงเข้าไปปรับให้ศัพท์ 4 คำมีความถูกต้อง และเพิ่มศัพท์อีกร้อยหนึ่ง รวมเป็นศัพท์ในข้อสอบสุ่มชุดนี้ประมาณสามร้อยกว่าคำ แต่ผมไม่ได้ใส่ adsense หรือ truehits เพราะต้องการให้ load ได้เร็วแม้จากโทรศัพท์เคลื่อนที่และ code ถูกออกแบบให้เปิดได้ทั้ง web browser และ wap browser
+ http://tagtag.com wap browser simulator
กรมคำสั่ง application.openforms
28 ม.ค.53 ปกติผมไม่เขียนเรื่องเทคนิคการโปรแกรมใน blog เพราะมีรายละเอียดมาก และเขียนไว้ในเว็บเพจอยู่แล้ว แต่หัวหน้าแนะว่าอยากให้ เขียนเรื่อง application.openforms ซึ่งเป็นวิธีการส่งค่าระหว่างฟอร์มลูกใน mdiparent ซึ่งผมเคยเขียนไว้ในเว็บเพจว่าใช้วิธีอ้างผ่าน mdiparent แต่ทั้ง 2 วิธีที่จะนำเสนอนี้มีความแต่ต่างกันชัดเจน ซึ่งผมจะเขียนเรื่องนี้ไว้ใน
+ http://www.thaiall.com/vbnet/testtoolbox.htm
ขั้นตอนที่ 1 การสร้างคอนโทล เพื่อเตรียมความพร้อม
สร้าง mdi parent form และ windows form ขึ้น 2 form เมื่อเปิด solution ให้เรียกทั้ง 2 ฟอร์มมาแสดงใน mdi parent form ทันที โดยใส่คำสั่งในโหลดของเอ็มดีไอ คือ dim f1 = new form1 : f1.mdiparent = me : f1.show() : dim f2 = new form2 : f2.mdiparent = me : f2.show() แล้วในฟอร์มทั้งสองมี ปุ่มและเท็คบ็อกอย่างละหนึ่ง
ขั้นตอนที่ 2 ทดสอบคำสั่งที่ใช้ส่งค่าเมื่อกดปุ่ม
กรณีที่ 1 กรอกข้อมูลและสั่งจากฟอร์มหนึ่งแต่มีผลในฟอร์มสอง ใส่คำสั่งในปุ่มของฟอร์มหนึ่งว่า For Each f As Object In MDIParent1.MdiChildren : If UCase(f.name) = “FORM2” Then : Dim f2 As Form2 = f : f2.TextBox1.Text = Me.TextBox1.Text : MsgBox(“wait”) : f2.Close() : End If : Next
กรณีที่ 2 ทดสอบตามที่หัวหน้าแนะนำให้ใช้ application.openforms โดยสั่งจากฟอร์มสองแต่มีผลในฟอร์มหนึ่ง โดยใส่คำสั่งในปุ่มของฟอร์มสองว่า Dim f As Form : f = Application.OpenForms.Item(“form1”) : For Each i As Object In f.Controls : If UCase(i.name) = “TEXTBOX1” Then : i.text = “abc” : End If : Next : MsgBox(“wait”) : f.Close()
ขั้นตอนที่ 3 อธิบายความแตกต่าง
ทั้ง 2 กรณีต่างกันที่ กรณีที่ 1 อ้างอิงฟอร์มเป้าหมายผ่าน mdiparent1 แล้ววนลูปตาม object ทั้งหมดในนั้น โดยมองหาวัตถุที่ชื่อ FORM2 เมื่อพบก็จะส่งเข้าวัตถุชิ้นใหม่ให้อ้างอิง แล้วจึงเรียกใช้ textbox1 ตามวัตถุประสงค์ แต่กรณีที่ 2 อ้างอิงฟอร์มเป้าหมายผ่าน Application.Openforms ซึ่งเรารู้ว่า Form1 เปิดอยู่ แล้วก็วนลูปเข้าไปใน controls ทั้งหมด เมื่อพบ textbox1 ก็ดำเนินการทันที