Dec 26, 2007

วิธีใช้ Thunderbird ดึงเมล์จาก hotmail

ก่อนจะไปยังส่วนอื่น ขอแนะนำสำหรับมือใหม่ที่ยังไม่รู้จัก Thunderbird
Thunderbird เป็นโปรแกรมที่ใช้งานเกี่ยวกับการรับ E-mail ที่อยู่ใน
Mail Server ของค่ายต่างๆ เช่น hotmail.com, gmail.com
หรือจะเป็น yahoo.com และอีกหลายๆ เว็บที่เราไปมีบัญชีอีเมล์ที่นั่น
โดยหน้าที่ของมันคือจะนำจดหมายของเราเหล่านั้นมาเก็บไว้สำหรับอ่าน
ยังเครื่องส่วนตัวของเรา ซึ่งถ้าในช่วงหลังจากนั้น อินเตอร์เน็ตของเรา
อาจจะถูกตัดขาดจากโลกภายนอก เราก็ยังสามารถจะตามอ่านเมล์ที่
โหลดมาก่อนที่เน็ตจะตัดได้โดยผ่านตัวโปรแกรม

โปรแกรมนี้หลายๆ คนอาจจะไม่คุ้นเคย แต่หากใครได้ลองใช้แล้วล่ะก็คงจะชอบ
เพราะมันค่อนข้างจะสะดวกและง่าย อีกทั้งยังเป็นฟรีซอฟต์แวร์ (Free Software)
เช่นเดียวกันกับ Firefox ที่เป็นที่นิยมในปัจจุบัน ถ้าอยากใช้ก็โหลดจากเว็บได้เลยครับ

โปรแกรมที่เราๆ ท่านๆ อาจจะรู้จักอีกโปรแกรมคือ Microsoft Outlook
ยิ่งพนักงานบริษัทไม่ต้องพูดถึง อย่างช่วงฝึกงาน ผมได้ไปฝึกที่บริษัท
โซนี่ ประเทศไทย เห็นพี่ๆ ที่บริษัทเขาใช้ กันเยอะ แต่ก็พบปัญหาบ่อยคือ
มันค้างทุกทีเลย ถ้ารับอีเมล์จำนวนมากๆ แต่ของ Thunderbird นั้น
ถ้าเอาไปใช้ ผมว่าคงยากที่จะค้าง เพราะลองเล่นเปรียบเทียบดูคร่าวๆ แล้ว
เอาเป็นว่าถ้าจะใช้พวก get mail client Thunderbird
ก็นับเป็นตัวเลือกที่น่าสนใจเลยเชียวแหล่ะ

เอาล่ะ เสียเวลากับการทำความรู้จัก Thunderbird มาพอสมควรแล้ว
เรามาดูกันดีกว่าว่า จะตั้งค่าให้ Thunderbird ใช้ hotmail ได้อย่างไร
เพราะว่าตามปกติ hotmail จะให้ใช้ได้ก็ต่อเมื่อเสียตังค์เพิ่ม ซึ่งจะได้รับทั้ง
พื้นที่ความจุของกล่องจดหมาย และการเข้าถึงเมล์โดยพวกโปรแกรม get mail client
ซึ่งหากว่าใช้ Microsoft Outlook ล่ะก็ มันจะไม่สามารถข้ามกฎข้อนี้ไปได้เลย
นอกจากเสียตังค์อย่างเดียว (เท่าที่ผมศึกษาและลองใช้ในปัจจุบันนะครับ)
ยังไงก็ตามแต่ทุกอย่างมีวิธีการหรือหนทางใหม่ๆ เสมอ "ของฟรีดีๆ ยังมีในโลก" ^ ^

โดยขั้นตอนมีคร่าวๆ ดังนี้
1. Download Program ที่ http://www.mozilla.com/en-US/thunderbird/

2. Download Extension ซึ่งจะต้องมี Extension 2 ตัว คือ
Webmail และ Component สำหรับเมล์ที่ต้องการใช้งาน ในที่นี้คือ hotmail
ซึ่ง Download Extension ได้ที่ http://webmail.mozdev.org/installation.html

3. เปิด Thunderbird ขึ้นมา หากเป็นการเปิดครั้งแรกจะมี กล่อง Account Wizard ขึ้นมาให้กด Cancel ไปก่อน

4. ทำการติดตั้ง Extension ที่ Download มาทั้ง 2 ตัว
โดยใช้เมนู Tool -> Extension เมื่อมีหน้าต่าง Extension ขึ้นมาให้คลิกปุ่ม Install
และไปเลือกเอา Extension ที่ Download มาทำการ Install โดยทำการ Install ทืละตัว
เมื่อทำการติดตั้งเสร็จแล้วให้ทำการปิดโปรแกรม Thunderbird และเปิดโปรแกรมขึ้นมาใหม่
เพื่อให้ Extension ทั้ง 2 ตัวเริ่มการทำงาน

5. ทำการเปิด Thunderbird ขึ้นมาใหม่แล้วสังเกตุดูว่าจะมี Web Mail เพิ่มขึ้นมา
ให้คลิกเลือกที่ Webmail และกดปุ่ม Next

6. ป้อนให้ครบโดย Your name คือชื่อของคุณ (ไทยหรืออังกฤษก็ได้)
Email Address คืออีเมล์ที่คุณต้องการใช้ และทำการคลิก Next

7. Incoming User Name และ Outgoing User Name ให้ใส่ชื่อ E-mail ของตนเอง
และอย่าลืมคลิกเลือกที่ Download Messages now ด้วย เพื่อโหลดทันที และเมื่อเสร็จแล้วให้คลิก Finish

8. เสร็จสิ้นการตั้งค่าให้ Thunderbird รับเมล์จาก hotmail (เย้ เสร็จสักที)
รอซักแป๊บโปรแกรมจะเริ่มโหลดจดหมายมาให้เราแล้วครับ

สามารถดูตัวอย่างที่เป็นการตั้งค่าให้กับ yahoo mail ได้ที่
http://www.osdev.co.th/index.php?option=com_content&task=view&id=27&Itemid=70
ซึ่งส่วนหนึ่งที่ผมทำได้ก็มาจากที่นี่ด้วยเช่นกันครับ (ดูรูปประกอบจากลิงค์ดังกล่าวได้เช่นกัน เพราะคล้ายกันๆ)

บทความนี้ค่อนข้างจะซับซ้อนไปสักหน่อยนะครับ แต่คิดว่าไม่น่าจะยากถ้าลองพยายามดู
หวังว่าจะหันมาใช้ Thunderbird กันมากขึ้นนะครับ ^ ^ และถ้าไม่เข้าใจก็ comment มาถามได้ครับ

Dec 2, 2007

ปัญหา upload file ของ ASP กับ Windows Server 2003

ในช่วงสองสามเดือนที่ผ่านมา ผมเฝ้ามองหาวิธีการของการ upload file สำหรับ
ภาษา ASP VB Script ซึ่งยอมรับว่าหายากมาก เพราะส่วนใหญ่นั้นจะเป็น
Component เสริม ซึ่งต้องซื้อต่างหากจาก บริษัท ต่างๆ
ซึ่งคงไม่ไหวแน่นอน ถ้าเพียงต้องการแค่ให้ upload file ได้

ทำไมของฟรีมี จึงไม่ใช้?
ของฟรีที่ว่า ส่วนใหญ่แล้วจะอยู่ที่ PHP ซะมาก
เวลาทำอะไร ก็เพียงค้นๆ ใน google ไม่กี่นาทีก็ได้มาแล้ว
สำหรับ ASP นี้ ต้องมองหาจากผู้ที่เคยใช้มาแล้วบ้าง
หรือจากที่อื่นๆ ซึ่งผมก็นำ Source code ของ Webboard
ASPThai.net ซึ่งทางทีมงานที่นั่นได้แจกจ่ายให้นำไปใช้ได้
ซึ่งก็นำไปใช้และดัดแปลง เยอะพอสมควร
และก็ได้ศึกษา Source code บางส่วนของการ upload file ด้วยเช่นกัน

ทำไมเครื่อง Server ส่งข้อมูลไม่ได้ หรือถ้าได้ก็ไม่เกิน 200 kb?
ผมพบปัญหานี้หลังจากที่ได้ทดสอบด้วยการทำงานบน Server ของลูกค้า
ปัญหาที่เกิดขึ้นหลายๆ อย่าง ไม่เกิดกับเครื่องที่ผมลอง แต่ดันเกิดที่ Server
ผมพยายามคิดในทางลบไว้ก่อนว่า เป็นเพราะผมเขียน Code ได้ไม่ดี จึงเกิดปัญหา

ทำไมเครื่อง ส่วนตัวผมถึงไม่มีปัญหากรณี upload file เกิน 200 kb?
ผมทดสอบอยู่หลายรอบ จนแน่ใจแล้วว่า ไม่ได้เป็นที่ Source code ที่ผมเขียนลงไป
แต่เป็นที่เครื่อง server ของทางลูกค้าเอง

ปัญหานี้ใครจะรับผิดชอบ?
หลังจากสรุปปัญหาได้ ก็ลองสอบถามและแก้ไขดูเอง จนโดนผู้ดูแล Server ฝั่งลูกค้า
บ่นมาหลายที และในที่สุดผมจึงไม่ดำเนินการแก้ไขเอง แต่แจ้งทาง ผู้ดูแล Server แทน
พร้อมกันนั้นก็ได้ส่ง ข้อมูล ที่น่าจะช่วยแก้ไขปัญหาดังกล่าวได้ ว่าต้องไป config server อย่างไร

สรุปแล้วปัญหาเกิดจากอะไร?
ปัญหาเกิดจาก Windows Server 2003 นั้นถูกกำหนดค่าให้สามารถที่จะ upload file
ได้ไม่เกิน 200 kilobyte หรือในค่าที่ตั้งไว้คือ 204800 byte
ดังนั้นถ้าหากต้องการให้รับไฟล์ได้มากกว่าที่กำหนด ก็ต้องเข้าไปปรับเปลี่ยนที่ค่าดังกล่าว
คือที่ C:\Windows\System32\inetsrv\metabase.xml
โดยหาบรรทัดที่เขียนว่า AspMaxRequestEntityAllowed เมื่อเจอแล้วให้เปลี่ยนเป็นค่าใหม่
ส่วนที่เครื่องของผมนั้น สามารถรับไฟล์ได้ขนาดใหญ่ และไม่เกิดปัญหาเพราะเป็น windows xp Profressional
ซึ่งเท่าที่สังเกต ปัญหานี้น่าจะเป็นเฉพาะกับ Windows Server 2003 เท่านั้น
สำหรับแหล่งอ้างอิงที่ทำให้ผมแก้ไขปัญหาได้คือ
http://www.dvhome.co.uk/45/

Sep 26, 2007

ASP error about type mismatch!

วันนี้พยายามกลับมาเขียนเว็บต่อในส่วนของ Poll

ซึ่งเป็นระบบ Management Poll

โดยจะมีทั้งการ Insert, Delete, Update, Active

คุณสมบัติเด่นๆ ก็คือจะเลือกแสดง Poll ได้หลายๆ Poll พร้อมกัน

และมีการลงคะแนนได้หนึ่ง Username ต่อ Poll

ความต้องการของลูกค้ามีประมาณนี้

ผมก็เร่งทำจนเรียบร้อยแต่ติดปัญหาอยู่นานกับ ERROR แบบหนึ่ง

นั่นคือ TYPE MISMATCH ซึ่งสงสัยว่าทำไมจึงติด ERROR ได้

ลองเข้าไป ค้นหาใน www.google.com ด้วย Firefox ทันใด

ก็พบหลายเว็บน่าสนใจ แต่ที่จะเอามาคุยตรงนี้ก็คือ เว็บที่มี URL ว่า

http://www.codingforums.com/showthread.php?t=26385

ในนี้เขาบอกวิธีแก้ไขปัญหาเอาไว้ น่าสนใจดี คือการใช้ VarType() Function

มาเป็นตัวหาชนิดข้อมูลเพื่อจะได้ระบุและให้ส่งข้อมูลเข้ากันและผ่าน ERROR นี้ไปได้

ซึ่งชนิดข้อมูลที่จะมีการคืนค่าเมื่อใช้ฟังก์ชันจะมีดังนี้

0 Uninitialized
1 Contains no valid data
2 Integer subtype
3 Long subtype
4 Single subtype
5 Double subtype
6 Currency subtype
7 Date subtype
8 String subtype
9 Object
10 Error subtype
11 Boolean subtype
12 Variant (only use for arrays of variants)
13 Data access object
14 Decimal subtype
17 Byte subtype
8192 Array

ซึ่งปัญหา ERROR
Microsoft VBScript runtime (0x800A000D)
Type mismatch
ก็จะสามารถแก้ได้ ด้วยประการนี้แหล่ะ หุหุ

ซึ่งสำหรับงานผม บังเอิญตั้งค่าในฐานข้อมูลเป็น decimal

ด้วยความที่เข้าใจว่าเป็นชนิด ตัวเลข จึงคิดว่าน่าจะเข้ากันได้กับ integer

ผมจึงต้องใช้ Function CInt เพื่อครอบข้อมูลที่เป็นชนิด Decimal

ให้สามารถเข้ากันได้ สุดท้ายจึงใช้ได้ อิอิ

สำหรับใครที่มีข้อมูลรายละเอียด ชนิดข้อมูลของ MS SQL SERVER 2000

แบบละเอียดๆ ช่วยส่งลิงค์มาให้ด้วยนะครับจะขอบคุณมากเลย

ได้ความรู้เพิ่มอีกล่ะ เข้าใจ MS SQL SERVER 2000 และ ASP เข้าไปอีกเปาะ

บอกตัวเองอีกครั้งว่าสู้ๆ "งานจะปิดเต็มทีแล้ว"


เอ้อ เกือบลืมบอก พอดีมีน้องสาวคนสวย

แนะนำ Website ของสาขาวิทยาการคอม

ของนอร์ทกรุงเทพ นี่แหล่ะ พึ่งเปิดได้เดือนกว่าๆ เองมั้ง

ใครสนใจ ก็เข้าไปแวะชมกันได้ ที่ http://www.c2speed.com/

เท่าที่ดู ก็น่าสนใจดี คงต้องปรับไปเรื่อย

นับเป็นก้าวที่ดี พยายามกันเข้าล่ะ น้องๆ ปีสาม ^ ^ พี่โต คอยเชียร์ โฮ่ะๆ

Sep 21, 2007

Problem ASP include dynamic URL

กลับมาแล้วครับกับ วิชาการๆ เนื่องจากในช่วงเวลา ประมาณ เกือบๆ เดือน ผมได้มีโปรเจกเข้ามา
เป็นงานของบริษัท แถวๆ เมืองทองธานี งานที่ว่าก็เป็นงานเว็บไซด์เช่นเคยครับ แต่เป็นภาษา ASP
ใช้ฐานข้อมูลของ MS SQL SERVER 2000 ภาษา ASP เป็นภาษาที่ผมค่อนข้างจะไม่ค่อย
ได้ใช้เวลากับมันซักที ทำให้ไม่ค่อยเชี่ยวชาญ และติดๆ ขัดๆ อยู่เยอะเหมือนกัน
เท่าที่จำได้คือเสียตังค์เข้าอบรม ASP เบื้องต้นที่ทางสถาบันจัดขึ้น เนื่องจากเป็นนักศึกษา
ค่าใช้จ่ายเลยไม่มากเท่าไหร่ ช่วงนั้นก็ประมาณ ปี 48 ได้ ตอนนี้ 50 ล่ะลืมหมดเกลี้ยงเลย เหอะๆ
อบรมครั้งนั้น มีทั้งหมดสองวัน เรื่องที่ลึกที่สุดถึงเพียงแค่การต่อเชื่อมกับ ฐานข้อมูล MS Access 97
ผิดหวังหน่อยๆ แต่ก็ถือเป็นประสบการณ์ที่ดี เพราะตอนนั้นไม่ได้จับภาษาใดเลย (เขียนเว็บยังไม่เป็น)

และในครั้งนี้ ผมต้องมานั่งอ่านศึกษา ตำราต่างๆ เพื่อรื้อฟื้น ASP
จะว่าเป็น ASP.NET ก็อยากใช้นะ แต่ไม่มั่นใจ SERVER ว่ารองรับหรือเปล่า
เลยต้อง ใช้ ASP ธรรมดาเพื่อความปลอดภัยไปก่อน ยากเหมือนกันนะเนี่ย
ผมใช้เวลา ประมาณ สองสัปดาห์ กว่าจะเรียบเรียงข้อมูลต่างๆ เกี่ยวกับ ASP ได้
แต่ที่ได้เร็วก็เพราะใช้วิธีการเทียบเคียงกับภาษาอื่นๆ เช่น PHP หรือ JSP
ผมรู้สึกแย่เหมือนกัน ที่ปกติเขียนโปรแกรม เชิงวัตถุ แต่กลับต้องมานั่งเขียนเป็น โปรแกรมแบบโครงสร้าง
ทำให้งานผมช้ากว่า ภาษาที่กล่าวมาทั้งหมด แต่ก็พยายามทำความเข้าใจ จนเขียนได้คล่องในเวลาต่อมา
แต่ก็ยังติดปัญหา เมื่อมันเกิดความผิดพลาด เพราะดูเหมือนว่ารายละเอียดที่มันแจ้งมาเยอะแยะ
ส่วนใหญ่แล้วไม่ได้ช่วยอะไรขึ้นเลย... เหอะๆ แย่จัง

คราวนี้ ก็จะยกปัญหาอีกปัญหา ที่ไม่น่าจะเกิดขึ้นได้เลย
เพราะมันน่าจะเป็นวิธีการง่ายๆ ที่ไม่น่าที่จะเกิดการไม่รองรับของสคริป
ซึ่งก็คือการ include file แบบ dynamic
ก็หมายถึงว่า การใช้ ตัวแปรเป็นตัวอ้างอิงไปยัง URL แทน
ตัวอย่างคือ
(จากตัวอย่างต้องมีเครื่องหมาย "!" แต่แทนด้วย @ และ "%" แทนด้วย "+"
แต่ใส่ตรงๆไม่ได้เพราะจะกลายเป็น comment )

<@--#include file="tabNews.asp" -->
นี่คือแบบที่เป็นการ กำหนดแบบบังคับโดยให้ Include file ที่ชื่อ page.asp เพียงอย่างเดียว

<@--#include file="<+=urlLink+>" -->
นี่คือแบบที่ไม่สามารถจะทำงานได้ เนื่องจาก หาก ASP เจอเครื่องหมาย # ก็จะเข้าใจว่าเป็น comment ทันที
จึงไม่แสดงผล ซึ่งผมเอง งง อยู่นาน ว่าทำไมมันถึงผิดพลาด จึงไปค้นหลายๆ เว็บ
แล้วก็เจอวิธีแก้ไข โดยใช้ วิธีการอื่นแทน ดังนี้

dim strFile, fso, fsoFile
strFile = "upload/"& CStr(filename)
If strFile <> "" then
set fso = createObject("Scripting.FileSystemObject")
set fsoFile = fso.openTextFile(Server.MapPath(strFile))
response.write "" & fsoFile.readAll & ""
set fso = nothing
set fsoFile = nothing
end if

ซึ่งเป็นการแก้ไขด้วยการดึงข้อความจากลิงค์ที่กำหนดมาจนครบ แล้วถึงจะแสดงผล
เป็นวิธีการพื้นๆ แต่ก็ใช้ได้จริง ซึ่งถ้าใครมีวิธีการที่ดีกว่านี้ ก็ช่วยแนะนำด้วยนะครับ
จะขอบคุณมากๆ เลย ที่มานะครับอยู่ที่เว็บ
http://www.developerfusion.co.uk/show/234/

สำหรับวิธีการเขียนต่างๆ ของ ASP ถ้าว่างๆ ก็จะมาเขียนลงที่นี่แหล่ะครับ
แต่สงสัยว่าจะเป็น ASP.NET แล้วล่ะคราวนี้ เพราะโปรเจกจบต้องทำ
ยังไงก็แนะนำเพิ่มเติมได้นะครับ ผมยินดีรับฟังความคิดเห็น "ที่สร้างสรรค์" จากผู้อ่านทุกท่านนะครับ

Jul 23, 2007

การค้นตัดคำ PHP with bag of words algorithm

มาเปิดเผย อัลกอริทึม กันนะครับ
คราวนี้ เป็นแนวคิดของการตัดคำแบบไม่เอาคำเชื่อมต่างๆ นะครับ
ที่จะยกมาให้ดูต่อไปนี้ ผมเขียนให้เป็นแนวของ Function นะครับ
ใช้ภาษา PHP นะ อีกอย่างหนึ่งคือ ผมตัดมาเฉพาะหัวใจหลักของโปรแกรม
เพราะฉะนั้นอาจจะมีข้อผิดพลาด อย่างไรก็ตาม ขอโทษมา ณ ที่นี้ด้วยนะครับ
และ code ต่อไปนี้ อาจจะสับสนบ้างถ้าดูแรกๆ เอาเป็นว่า ถ้าว่างๆ ผมจะมา
comment ในแต่ละบรรทัดให้นะครับ
ว่าตรงไหน ทำอะไรยังไง

ใครมีความคิดเห็นยังไง หรือเจอ Bug ช่วยแจ้งด้วยนะครับ
จะได้นำไปปรับปรุง

ช่วงนี้ ขอแว๊บไปทำงานต่อก่อนล่ะ ครับ



function indexCountText($text,$word)
{
$num = count(explode(strtolower($word), $text)) - 1;
return $num;
}


function cutText($file,$num)
{


$descriptor = fopen ($file, "r");
$contents = fread ($descriptor, filesize ($file));
fclose ($descriptor);
$text = htmlspecialchars($contents);
$text = strtolower($text);


$notChar = array(":",",",";",":",";","?",".","0","1","2",
"3","4","5","6","7","8","9","]","[","(",")","/",
"-","&","*","$","_","'");


$az = array(" a "," b "," c "," d "," e "," f "," g "," h ",
" i "," j "," k "," l "," m "," n "," o "," p ",
" q "," r "," s "," t "," u "," v "," w "," x "," y "," z ");


$notCheck = array(" then "," i "," the "," is "," am "," are "," a ",
" what "," why "," when "," where "," who "," which "," with ",
" and "," but "," will "," be "," to "," or ", " on "," in ",
" if "," do "," of "," any "," by "," at "," for "," as ",
" its ","http","www"," that "," not "," some ",
" it ","the ","for "," was "," than "," can "," an "," all ",
" also "," yes "," you "," your "," after "," has "," have ",
" how "," into "," like "," may "," often "," other "," such ",
" so "," they "," this "," those "," use "," used "," well ",
" were "," would "," vs "," about "," eg "," ie "," ed "," ma ",
" quot "," he "," amp "," one "," two "," age "," no "," from ",
" see "," ms "," form "," rd "," eda "," low "," length ",
" large "," now "," up "," more "," very "," new "," between ",
" over "," text "," out "," take "," these "," only "," etc ",
" there "," however "," order "," same "," review "," wants ",
" while "," until "," us "," we "," id "," our "," own ",
" her "," de "," ca ","\r\n","\r","\t");


$text = str_replace($notChar,"",$text);
$text = str_replace($az," ",$text);
$text = str_replace($notCheck," ",$text);


$wordAll ="";


$text = str_replace("\n"," ",$text);
$text = str_replace("\r"," ",$text);
$text = str_replace("\r\n"," ",$text);
$text = str_replace($notChar,"",$text);
$text = str_replace($az," ",$text);
$text = str_replace($notCheck," ",$text);


$text = trim($text);
$word = explode(" ", $text);
$word = implode(" ",$word);
$word = trim($word);
$word = explode(" ", $word);
$word = implode(" ",$word);
$word = trim($word);
$word = explode(" ", $word);
$word = implode(" ",$word);
$word = trim($word);
$word = explode(" ", $word);
$word = implode(" ",$word);
$word = trim($word);
$word = explode(" ", $word);
$word = implode(" ",$word);
$word = trim($word);
$word = explode(" ", $word);
$word = implode("#",$word);
$word = trim($word);
$word = explode("#", $word);


//array_multisort($word,SORT_ASC);
$word = array_unique($word);


switch($num)
{
case 0:

$word = implode("\n",$word);
$word = explode("\n",$word);

for($i=0; $i<= count($word)-1; $i++)
{
$wordNum[$i] = indexCountText($text,$word[$i]);
}

array_multisort($wordNum,SORT_DESC,$word);

for($i=0; $i<= 9; $i++)
{
$wordAll .= $word[$i]." ".$wordNum[$i]." time(s)\n\n";
}

return $wordAll;
break;

case 1:
$word = implode(" ",$word);
return substr($word, 0, strlen($word));
break;
}// end case
}

Blog Comment

บทความที่ได้รับความนิยม