เสียเวลาไปเป็นวันครับการ upgrade PHP จาก 5.2.13 เป็น 5.2.14 บนเครื่อง Notebook ซึ่งใช้ Windows XP SP3 สาเหตุก็มาจากตัว Curl extension ไม่สามารถ load ได้ครับมันจะขึ้น error message ประมาณว่า
PHP Warning: PHP Startup: Unable to load dynamic library 'c:/php/ext\\php_curl.dll' - The specified module could not be found.\r\n in Unknown on line 0
ลองยังไงก็ไม่ได้ครับ ลองค้นดูใน Google กว่าจะเจอก็ใช้เวลานานทีเดียว เนื่องจากว่า php_curl.dll ที่มาพร้อมกับ PHP 5.2.14 มันใช้ไม่ได้ครับ ต้องกลับไป download และใช้ของ PHP 5.2.13 แทน ก็คือเข้าไป dowload ตัว Zip ของ 5.2.13 มาแล้วก็ unzip และ copy เฉพาะ php_curl.dll ไปทับตัวของ 5.2.14 ที่ c:\php\ext
จากนั้น Restart ตัว Apache Service เป็นอันเรียบร้อยครับ
สวัสดีครับ ยินดีต้อนรับทุกท่านเข้าสู่ Low Cost IT ซึ่งผมจะพยายามนำประสบการณ์และความคิดเห็นมา Share ให้กับทุกท่านโดยจะเน้นที่ประเด็น Low Cost IT นั่นก็คือกลุ่ม Open Source และ Free Software รวมทั้งประเด็นทั่วๆ ไปทางด้านเทคโนโลยีสารสนเทศครับ
วันจันทร์ที่ 11 ตุลาคม พ.ศ. 2553
วันพฤหัสบดีที่ 16 กันยายน พ.ศ. 2553
การเพิ่ม Swap Partition บน CentOS
Swap Space เป็นการใชพื้นที่บน Hard disk สำหรับทำงานเป็นส่วนหนึ่งของ RAM ซึ่งในกรณีที่ตัว Server มีการใช้งานโปรแกรมที่ใช้งาน Memory เยอะๆ Linux จะมาใช้พื้นที่ส่วนนี้สำหรับการเก็บข้อมูลชั่วคราว แบบเดียวกับ Virtual Memory (Paged Pool) ใน Windows ดังนั้นหากคุณลองดูบนเครื่องแล้วพบว่ามีการใช้งาน Swap มากๆ แสดงว่าถึงเวลาในการเพิ่ม RAM แล้วครับ
โดยทั่วไปเราจะกำหนดให้ Swap มีขนาดประมาณ 2 เท่าของ RAM ซึ่งในการเพิ่ม RAM เราอาจจะต้องเพิ่ม Swap Space ตาม ทั้งนี้อาจจะไม่จำเป็นเสมอไปนะครับ ต้องดูการใช้งานของเครื่องโดยใช้ free -m โดยทั่วไปแล้ว Swap สามารถสร้างได้จาก Partition หรือ ไฟล์ก็ได้นะครับ ในที่นี้ผมขอพูดถึงประเภท Partition นะครับ
โดยทั่วไปเราจะกำหนดให้ Swap มีขนาดประมาณ 2 เท่าของ RAM ซึ่งในการเพิ่ม RAM เราอาจจะต้องเพิ่ม Swap Space ตาม ทั้งนี้อาจจะไม่จำเป็นเสมอไปนะครับ ต้องดูการใช้งานของเครื่องโดยใช้ free -m โดยทั่วไปแล้ว Swap สามารถสร้างได้จาก Partition หรือ ไฟล์ก็ได้นะครับ ในที่นี้ผมขอพูดถึงประเภท Partition นะครับ
- ตรวจสอบ partition ของ swap จาก command คือ swap -s จดชื่อ partition ของ swap ไว้
- เราจะต้องปิดการใช้งาน swap partition ครับ โดยใช้ command คือ swapoff -v ตามด้วย parttion ครับ
- swapoff -v /dev/mapper/VolGroup00-LogVol01 ในที่นี้ /dev/mapper/VolGroup00-LogVol01 คือ Swap Partition
- ทำการขยายขนาด partition โดยใช้ command LVM ครับ
- ในที่นี้ผมขยายขนาดเพิ่มอีก 1GB นะครับ
lvm lvresize /dev/mapper/VolGroup00-LogVol01 -L +1G - หลังจากนั้นทำการสร้าง Swap บน Partition นี้ครับ
- mkswap /dev/mapper/VolGroup00-LogVol01
- เปิดใช้งานโดยใช้คำสั่ง swapon -va
- ตรวจสอบจาก Command คือ free -m หรือ cat /proc/fstab
วันศุกร์ที่ 16 กรกฎาคม พ.ศ. 2553
แก้ปัญหา Windows Service สตาร์ทไม่ขึ้น executable program not implement service
สวัสดีครับ วันนี้ผมมาพร้อมกับปัญหาที่ได้รับการแก้ไขสดๆร้อนๆครับ และผมต้องใช้เวลานานพอควร เอาเป็นว่าเป็นสัปดาห์เลยทีเดียวในการพยายามแก้ปัญหาตัวนี้ แต่ไม่ได้หมายความว่าใช้เวลาทั้งหมดทั้งสัปดาห์นะครับ แหะๆๆ
ปัญหาของผมที่เจอมาจากเครื่องที่ติดไวรัสครับเป็น Windows Server 2003 R2 64bit เอาเป็นว่าติดไปหลายตัวที่เดียวกว่าจะแก้ได้โดยต้องใช้ Antivirus ทั้ง Symantec Endpoint Protection และ Kaspersky Internet Security รวมทั้ง TrendMicro Online ด้วย หลังจากไวรัสหมดไปแต่ปัญหายังไม่หมดครับ Service ของ Windows เป็นสิบตัวที่ไม่สามารถ start ได้ ทั้ง BITS, Windows Update รวมทั้ง Connect Manager ทำให้ขนาด Icon ของ LAN ก็ไม่แสดงครับ Disk Management ก็ไม่สามารถใช้ได้ พวกที่ใช้ในการเข้าไปดู Share ไฟล์นี่ก็ไม่ได้เลย รวมทั้ง USB drive ต่างๆ ด้วย โดยเมื่อทำการ Start Service จะเกิด error ดังนี้
Error 1083: The executable program that this service is configured to run in does not implement the service. (0x8007043B)
หลังจากการสังเกตุผมพบว่า Services ต่างๆ เหล่านี้ทำงานโดยการ load โดย SVCHOST.EXE ในกลุ่ม netsvcs หรือถ้าดูใน command จะเป็นกลุ่มที่ run ด้วยการ load แบบนี้
svchost.exe -k netsvcs
จากการดูข้อมูลเกี่ยวกับ SVCHOST.EXE พบว่า configuration ของมันจะอยู่ที่ registry คือ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\SvcHst ซึ่งจะมี key ที่ชื่อ netsvcs ซึ่งบนเครื่องที่เป็น XP จะมีค่าเป็นดังนี้
6to4
AppMgmt
AudioSrv
Browser
CryptSvc
DMServer
DHCP
ERSvc
EventSystem
FastUserSwitchingCompatibility
HidServ
Ias
Iprip
Irmon
LanmanServer
LanmanWorkstation
Messenger
Netman
Nla
Ntmssvc
NWCWorkstation
Nwsapagent
Rasauto
Rasman
Remoteaccess
Schedule
Seclogon
SENS
Sharedaccess
SRService
Tapisrv
Themes
TrkWks
W32Time
WZCSVC
Wmi
WmdmPmSp
winmgmt
wscsvc
xmlprov
BITS
wuauserv
ShellHWDetection
helpsvc
WmdmPmSN
napagent
hkmsvc
ซึ่งเหล่านี้คือชื่อของ service ต่างๆ ที่ลงทะเบียนไว้กับ Windows นั่นเอง ทีนี้พอไปดูที่เครื่องที่มีปัญหา ปรากฎว่ามีชื่อ service อยู่สองตัว ลองกลับไปดูเครื่องที่เป็น Windows 2003 Server R2 32bit ก็มีคล้ายๆ กับ Windows XP
การแก้ปัญหา
การแก้ปัญหาก็โชคดีครับที่ผมมีเครื่อง Windows 2003 Server R2 วีธีการก็คือให้ export ค่า registry เฉพาะในส่วนนี้ออกมาจากเครื่องที่ปกติ หลังจากนั้นนำไป import เข้าเครื่องที่มีปัญหา ก่อนการทำก็ควร backup registry โดยการ export ไว้ก่อนครับ หลังจากนั้นทำการ Restart เครื่องหนึ่งครั้ง กลับมาอีกที Service ที่เดิมกำหนดให้อยู่ใน Automatic Start Up ก็กลับมาใช้งานได้เหมือนเดิมครับ
ครับปัญหานี้ดูจาก error เหมือนกับไฟล์มีปัญหา ผมลอง run SFC /SCANNOW แล้วก็ไม่สำเร็จ ลองไปลองมามาแก้ปัญหาได้จากการแก้ไข Registry นี่หละครับ
ปัญหาของผมที่เจอมาจากเครื่องที่ติดไวรัสครับเป็น Windows Server 2003 R2 64bit เอาเป็นว่าติดไปหลายตัวที่เดียวกว่าจะแก้ได้โดยต้องใช้ Antivirus ทั้ง Symantec Endpoint Protection และ Kaspersky Internet Security รวมทั้ง TrendMicro Online ด้วย หลังจากไวรัสหมดไปแต่ปัญหายังไม่หมดครับ Service ของ Windows เป็นสิบตัวที่ไม่สามารถ start ได้ ทั้ง BITS, Windows Update รวมทั้ง Connect Manager ทำให้ขนาด Icon ของ LAN ก็ไม่แสดงครับ Disk Management ก็ไม่สามารถใช้ได้ พวกที่ใช้ในการเข้าไปดู Share ไฟล์นี่ก็ไม่ได้เลย รวมทั้ง USB drive ต่างๆ ด้วย โดยเมื่อทำการ Start Service จะเกิด error ดังนี้
Error 1083: The executable program that this service is configured to run in does not implement the service. (0x8007043B)
หลังจากการสังเกตุผมพบว่า Services ต่างๆ เหล่านี้ทำงานโดยการ load โดย SVCHOST.EXE ในกลุ่ม netsvcs หรือถ้าดูใน command จะเป็นกลุ่มที่ run ด้วยการ load แบบนี้
svchost.exe -k netsvcs
จากการดูข้อมูลเกี่ยวกับ SVCHOST.EXE พบว่า configuration ของมันจะอยู่ที่ registry คือ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\SvcHst ซึ่งจะมี key ที่ชื่อ netsvcs ซึ่งบนเครื่องที่เป็น XP จะมีค่าเป็นดังนี้
6to4
AppMgmt
AudioSrv
Browser
CryptSvc
DMServer
DHCP
ERSvc
EventSystem
FastUserSwitchingCompatibility
HidServ
Ias
Iprip
Irmon
LanmanServer
LanmanWorkstation
Messenger
Netman
Nla
Ntmssvc
NWCWorkstation
Nwsapagent
Rasauto
Rasman
Remoteaccess
Schedule
Seclogon
SENS
Sharedaccess
SRService
Tapisrv
Themes
TrkWks
W32Time
WZCSVC
Wmi
WmdmPmSp
winmgmt
wscsvc
xmlprov
BITS
wuauserv
ShellHWDetection
helpsvc
WmdmPmSN
napagent
hkmsvc
ซึ่งเหล่านี้คือชื่อของ service ต่างๆ ที่ลงทะเบียนไว้กับ Windows นั่นเอง ทีนี้พอไปดูที่เครื่องที่มีปัญหา ปรากฎว่ามีชื่อ service อยู่สองตัว ลองกลับไปดูเครื่องที่เป็น Windows 2003 Server R2 32bit ก็มีคล้ายๆ กับ Windows XP
การแก้ปัญหา
การแก้ปัญหาก็โชคดีครับที่ผมมีเครื่อง Windows 2003 Server R2 วีธีการก็คือให้ export ค่า registry เฉพาะในส่วนนี้ออกมาจากเครื่องที่ปกติ หลังจากนั้นนำไป import เข้าเครื่องที่มีปัญหา ก่อนการทำก็ควร backup registry โดยการ export ไว้ก่อนครับ หลังจากนั้นทำการ Restart เครื่องหนึ่งครั้ง กลับมาอีกที Service ที่เดิมกำหนดให้อยู่ใน Automatic Start Up ก็กลับมาใช้งานได้เหมือนเดิมครับ
ครับปัญหานี้ดูจาก error เหมือนกับไฟล์มีปัญหา ผมลอง run SFC /SCANNOW แล้วก็ไม่สำเร็จ ลองไปลองมามาแก้ปัญหาได้จากการแก้ไข Registry นี่หละครับ
วันอาทิตย์ที่ 11 กรกฎาคม พ.ศ. 2553
เมื่อ "ปลาหมึก" ปลุกไม่ตื่น
"ปลาหมึก" ในที่นี้ไม่ใช่เจ้า Paul ตามกระแสบอลโลกที่ทำเซียนหน้าแตกกันหรอกครับ แต่มันคือ Squid ซึ่งเป็นซอฟต์แวร์สำหรับการใช้งานเป็น Proxy สำหรับการเชื่อมต่ออินเตอร์เน็ตต่างหากครับ Squid จัดได้ว่าเป็นซอฟต์แวร์ Open Source ที่ใช้งานกันอย่างแพร่หลายได้รับความนิยมมากเนื่องจากทำงานได้ทั้งบน Windows และ Linux โดยเฉพาะในองค์กรต่างๆ ที่มีผู้ใช้งานอินเตอร์เน็ตจำนวนมากในระดับหลักร้อยจนถึงหลักพัน
สำหรับในบทความนี้เราจะมาพูดถึงว่าทำไม Squid ถึง Start ไม่ขึ้น ซึ่งเป็นสิ่งที่หลอนมากสำหรับ Admin มือใหม่ที่เริ่มดูแล Squid บางคนถึงกลับไม่กล้าที่จะ Re-start ตัว server กันเลยทีเดียว ก่อนที่เราจะมาดูว่าทำไม Squid ถึง Start ไม่ขึ้นเราต้องทำความเข้าใจกับการทำงานของอินเตร์เน็ตกันก่อนครับ
เมื่อเราเริ่มต้นใช้งานอินเตอร์เน็ตบน Browser เราจะทำการพิมพ์ URL ที่ต้องการจะดูเข้าไป แต่ตัว Browser มันไม่ได้ใช้งาน URL นี้ตรงๆ หรอกครับ ในกรณีที่เราไม่ได้ใช้งาน Proxy ตัว Browser จะทำการนำ URL ที่เราพิมพ์ไปหา IP Address สำหรับส่งข้อมูลไปยังปลายทาง ซึ่งกระบวนการในการค้นหา IP Address จาก URL ที่มนุษย์เข้าใจนี่ใช้บริการที่เรียกว่า Domain Name System (DNS) ซึ่งที่เครื่องคอมพิวเตอร์ของเราจะต้องเปิดใช้งานบริการ DNS client นี้ครับ ดังนั้นในองค์กรก็ต้องมี DNS Server ที่ทำงานได้ คือหา IP ให้กับ Browser ครับ ซึ่งความแตกต่างระหว่างการใช้และไม่ใช้ Proxy ก็คือในกรณีที่ใช้ Proxy ตัว Browser จะทำการส่ง URL ให้กับ Proxy และตัว Proxy ก็จะทำหน้าที่ในการเรียกใช้บริการ DNS เอง ส่วนกรณีที่เราไม่ได้ใช้ Proxy ตัว Browser จะทำหน้าที่ในการเรียกใช้บริการ DNS เอง
ซึงสาเหตุที่พบส่วนใหญ่ที่ทำให้ Squid ของเรา start ไม่ขึ้นในกรณีที่เราเขียน Command ใน config file ของ Squid ถูกต้องแล้วก็คือปัญหาของ DNS นี่แหละครับ โดยใน Config file ของ Squid จะมีคำสั่งที่ให้ทำการตรวจสอบว่าสามารถใช้บริการ DNS ได้ถูกต้องหรือไม่ ถ้าการตรวจสอบไม่ผ่านตัว Squid ก็จะไม่ทำงานต่อครับ
ทีนี้จุดบอดที่จะเกิดขึ้นคือ Domain ที่เราใช้ตรวจสอบอาจจะไม่เสถียรครับ คืออาจจะตายไปพอดีกับตอนที่เรา Start ตัว Service ของ Squid ทางที่ดีให้ระบุ Domain ที่เราคิดว่ามันไม่ล่มแน่ครับ เช่น http://www.google.com/ หรือ http://www.microsoft.com/ ครับ หรือไม่ก็อาจจะเกิดขึ้นเนื่องจาก Link อินเตอร์เน็ตของเราไม่เสถียรก็ได้ครับ อันนี้ต้องตรวจสอบดีๆ
การตรวจสอบ Link ก็ใช้งาน ping นี่แหละครับ ส่วนการตรวจสอบ DNS ก็ใช้ nslookup ครับ ใช้ได้ทั้งบน Windows และ Linux ครับ ถ้า ping แล้วไม่มีการตอบกลับแสดงว่า Link มีปัญหาหก็ต้องเริ่มจากการ ping ตัว Gateway ของเราแล้วค่อยๆ ไล่ขึ้นไปครับ ในส่วนของ DNS ในตัว Squid เราจะสามารถระบุตัว Name Server ได้ก็ต้องตรวจสอบว่ามันยังให้บริการอยู่หรือไม่โดยใช้ nslookup ซึ่งสามารถใช้ Command คือ Server แล้วตามด้วย IP ของ DNS Server ที่ต้องการใช้บริการครับ ตัว Default ก็คือตัวที่เรากำหนดไว้ครับ หลังจากนั้นก็พิมพ์ URL ที่ต้องการตรวจสอบเข้าไปเช่น http://www.google.com/ ซึ่งใช้เครื่องมือแค่นี้ก็เพียงพอที่จะปลุก Squid ให้ลุกขึ้นมารับใช้เราได้แล้วล่ะครับ
จริงๆ แล้วในกรณีที่ service ต่างๆ มีปัญหามันจะบันทึกไว้ใน Log File ครับลองเปิดดูแล้วเราก็จะเห็นสาเหตุของมันครับ โดยใน Linux ตัว log จะอยู่ที่ /var ครับ ลองดูครับแล้วจะรู้ว่า Squid ดูแลไม่ยากหรอกครับ
สำหรับในบทความนี้เราจะมาพูดถึงว่าทำไม Squid ถึง Start ไม่ขึ้น ซึ่งเป็นสิ่งที่หลอนมากสำหรับ Admin มือใหม่ที่เริ่มดูแล Squid บางคนถึงกลับไม่กล้าที่จะ Re-start ตัว server กันเลยทีเดียว ก่อนที่เราจะมาดูว่าทำไม Squid ถึง Start ไม่ขึ้นเราต้องทำความเข้าใจกับการทำงานของอินเตร์เน็ตกันก่อนครับ
เมื่อเราเริ่มต้นใช้งานอินเตอร์เน็ตบน Browser เราจะทำการพิมพ์ URL ที่ต้องการจะดูเข้าไป แต่ตัว Browser มันไม่ได้ใช้งาน URL นี้ตรงๆ หรอกครับ ในกรณีที่เราไม่ได้ใช้งาน Proxy ตัว Browser จะทำการนำ URL ที่เราพิมพ์ไปหา IP Address สำหรับส่งข้อมูลไปยังปลายทาง ซึ่งกระบวนการในการค้นหา IP Address จาก URL ที่มนุษย์เข้าใจนี่ใช้บริการที่เรียกว่า Domain Name System (DNS) ซึ่งที่เครื่องคอมพิวเตอร์ของเราจะต้องเปิดใช้งานบริการ DNS client นี้ครับ ดังนั้นในองค์กรก็ต้องมี DNS Server ที่ทำงานได้ คือหา IP ให้กับ Browser ครับ ซึ่งความแตกต่างระหว่างการใช้และไม่ใช้ Proxy ก็คือในกรณีที่ใช้ Proxy ตัว Browser จะทำการส่ง URL ให้กับ Proxy และตัว Proxy ก็จะทำหน้าที่ในการเรียกใช้บริการ DNS เอง ส่วนกรณีที่เราไม่ได้ใช้ Proxy ตัว Browser จะทำหน้าที่ในการเรียกใช้บริการ DNS เอง
ซึงสาเหตุที่พบส่วนใหญ่ที่ทำให้ Squid ของเรา start ไม่ขึ้นในกรณีที่เราเขียน Command ใน config file ของ Squid ถูกต้องแล้วก็คือปัญหาของ DNS นี่แหละครับ โดยใน Config file ของ Squid จะมีคำสั่งที่ให้ทำการตรวจสอบว่าสามารถใช้บริการ DNS ได้ถูกต้องหรือไม่ ถ้าการตรวจสอบไม่ผ่านตัว Squid ก็จะไม่ทำงานต่อครับ
ทีนี้จุดบอดที่จะเกิดขึ้นคือ Domain ที่เราใช้ตรวจสอบอาจจะไม่เสถียรครับ คืออาจจะตายไปพอดีกับตอนที่เรา Start ตัว Service ของ Squid ทางที่ดีให้ระบุ Domain ที่เราคิดว่ามันไม่ล่มแน่ครับ เช่น http://www.google.com/ หรือ http://www.microsoft.com/ ครับ หรือไม่ก็อาจจะเกิดขึ้นเนื่องจาก Link อินเตอร์เน็ตของเราไม่เสถียรก็ได้ครับ อันนี้ต้องตรวจสอบดีๆ
การตรวจสอบ Link ก็ใช้งาน ping นี่แหละครับ ส่วนการตรวจสอบ DNS ก็ใช้ nslookup ครับ ใช้ได้ทั้งบน Windows และ Linux ครับ ถ้า ping แล้วไม่มีการตอบกลับแสดงว่า Link มีปัญหาหก็ต้องเริ่มจากการ ping ตัว Gateway ของเราแล้วค่อยๆ ไล่ขึ้นไปครับ ในส่วนของ DNS ในตัว Squid เราจะสามารถระบุตัว Name Server ได้ก็ต้องตรวจสอบว่ามันยังให้บริการอยู่หรือไม่โดยใช้ nslookup ซึ่งสามารถใช้ Command คือ Server แล้วตามด้วย IP ของ DNS Server ที่ต้องการใช้บริการครับ ตัว Default ก็คือตัวที่เรากำหนดไว้ครับ หลังจากนั้นก็พิมพ์ URL ที่ต้องการตรวจสอบเข้าไปเช่น http://www.google.com/ ซึ่งใช้เครื่องมือแค่นี้ก็เพียงพอที่จะปลุก Squid ให้ลุกขึ้นมารับใช้เราได้แล้วล่ะครับ
จริงๆ แล้วในกรณีที่ service ต่างๆ มีปัญหามันจะบันทึกไว้ใน Log File ครับลองเปิดดูแล้วเราก็จะเห็นสาเหตุของมันครับ โดยใน Linux ตัว log จะอยู่ที่ /var ครับ ลองดูครับแล้วจะรู้ว่า Squid ดูแลไม่ยากหรอกครับ
ป้ายกำกับ:
Cannot start,
DNS problem,
Squid
วันเสาร์ที่ 10 กรกฎาคม พ.ศ. 2553
คุณสมบัติของ Programmer
คุณสมบัติของคนที่จะเป็นนักพัฒนาซอฟต์แวร์ หรือ programmer ต้องมีอะไรบ้าง ผมเองก็มีคำถามอยู่ในใจเสมอทุกครั้งที่ต้องสัมภาษณ์ผู้สมัครงานที่ต้องการมาทำงานในตำแหน่งนี้ เราจะรู้ได้อย่างไรว่าคนที่นั่งอยู่ตรงหน้าของเราต้องการเป็น programmer จริงๆ
ในความเห็นของผมเองตลอดเวลาที่ผ่านมาประมาณ 20 ปีในการเขียนโปรแกรม สิ่งที่จะต้องมีเป็นอันดับแรก ก็คือใจรักในการเขียนโปรแกรม ซึ่งจริงๆ แล้วทุกๆ งานต้องการสิ่งนี้ หากเราอยากเป็น programmer เราต้องรักมัน เนื่องจากว่าเราต้องอยู่กับมันไปนานแสนนาน เหมือนกับการตัดสินใจแต่งงานนั่นล่ะครับ ผมเองก็เคยมีเพื่อนที่จบวิศวกรรมคอมพิวเตอร์ แต่ไม่ชอบคอมพิวเตอร์เอาเสียเลย สุดท้ายก็เลยต้องเปลี่ยนงาน การที่จะรักการเขียนโปแกรม ผมก็ไม่ทราบว่ามีจุดเริ่มมาอย่างไร แต่สิ่งหนึ่งที่พบก็คือว่าผลจากการเขียนโปรแกรมของเรา มีคนหลายๆคนที่ใช้มัน และสามารถช่วยให้เขาทำงานได้ดีขึ้น นี่คือความภูมิใจที่ทำให้เรารักการเขียนโปแรกม เนื่องจากเห็นผลประโยชน์ของมัน หรือการที่เราเขียนโปรแกรมเพื่อควบคุมอุปกรณ์อย่างใดอย่างหนึ่งให้มันทำงานได้ตามที่เราต้องการ
คุณสมบัติข้อที่สองก็คือการเรียนรู้อยู่ตลอดเวลา เนื่องจากความรู้ทางด้านนี้มีการเปลี่ยนแปลงอยู่ตลอดเวลา มีภาษาที่ใช้ในการเขียนโปแกรมหลายๆ ตัวที่เกิดขึ้นมา ล้มหายตายจากไป มีวิวัฒนาการเป็นรุ่นๆ ทำให้เราจำเป็นต้องทบทวน และแสวงหาความรู้ใหม่ๆ อยู่เสมอ นอกจากนี้แล้ว สิ่งที่ต้องมีควบคู่กันไปก็คือ รักกการอ่าน และความรู้ทางด้านภาษาต่างประเทศเช่น ภาษาอังกฤษ เนื่องจากความรู้ส่วนใหญ่จะเริ่มจากต่างประเทศ หากเรามัวแต่รออ่านภาษาไทยความรู้นั้นก็อาจจะเก่าไปแล้ว ไม่ทันใช้ และความรู้ที่ได้ก็อาจจะตกหล่นไม่ครบถ้วนเนื่องจากการแปล ดังนั้นการรักการอ่านและภาษาอังกฤษก็เป็นสิ่งที่จำเป็นสำหรับคนที่อยากเป็น programmer
คุณสมบัติต่อไปที่ต้องมีคือจินตนาการครับ ต้องสามารถวาดภาพในควาคิดได้ รวมทั้งการมองภาพแบบเป็น Block ที่ต้องสามารถละส่วนย่อยได้ สามารถมองระบบใดๆ ในรูปของ Block และความสัมพันธ์ของ Block ได้ ซึ่งจะทำให้การทำความเข้าใจกับสิ่งต่างๆ ทำได้อย่างง่ายดาย ครับ
ครับอันนี้ก็คือความคิดเห็นส่วนตัวที่คิดว่า programmer ต้องมี ซึ่งสิ่งที่สำคัญที่สุดคือรักในสิ่งที่ทำ นั่นจะทำให้เรามีความพยายาม และสามารถพัฒนาตัวเราไปได้ สุดท้ายสิ่งที่อยากจะบอกก็คือ ความรู้ที่เรามีจะต้องสามารถนำไปปฏิบัติ และถ่ายทอดได้ และการปฏิบัติก็ต้องมีการทำซ้ำหรือฝึกฝนจนชำนาญ นั่นก็คือเราต้องมีความอดทน รอคอยความสำเร็จได้ สุดท้ายต้องบอกว่า หากเราคิดแล้วไม่ลงมือทำ ก็ไม่เกิดประโยชน์ครับ การลงมือทำจะให้ผลกับเราสองอย่างคือ สำเร็จและยังไม่สำเร็จ แต่ไม่มีความล้มเหลวโดยสิ้นเชิงหรอกครับ ทุกๆการปฏิบัติเราจะมีสิ่งที่ได้เรียนรู้เสมอครับ
ในความเห็นของผมเองตลอดเวลาที่ผ่านมาประมาณ 20 ปีในการเขียนโปรแกรม สิ่งที่จะต้องมีเป็นอันดับแรก ก็คือใจรักในการเขียนโปรแกรม ซึ่งจริงๆ แล้วทุกๆ งานต้องการสิ่งนี้ หากเราอยากเป็น programmer เราต้องรักมัน เนื่องจากว่าเราต้องอยู่กับมันไปนานแสนนาน เหมือนกับการตัดสินใจแต่งงานนั่นล่ะครับ ผมเองก็เคยมีเพื่อนที่จบวิศวกรรมคอมพิวเตอร์ แต่ไม่ชอบคอมพิวเตอร์เอาเสียเลย สุดท้ายก็เลยต้องเปลี่ยนงาน การที่จะรักการเขียนโปแกรม ผมก็ไม่ทราบว่ามีจุดเริ่มมาอย่างไร แต่สิ่งหนึ่งที่พบก็คือว่าผลจากการเขียนโปรแกรมของเรา มีคนหลายๆคนที่ใช้มัน และสามารถช่วยให้เขาทำงานได้ดีขึ้น นี่คือความภูมิใจที่ทำให้เรารักการเขียนโปแรกม เนื่องจากเห็นผลประโยชน์ของมัน หรือการที่เราเขียนโปรแกรมเพื่อควบคุมอุปกรณ์อย่างใดอย่างหนึ่งให้มันทำงานได้ตามที่เราต้องการ
คุณสมบัติข้อที่สองก็คือการเรียนรู้อยู่ตลอดเวลา เนื่องจากความรู้ทางด้านนี้มีการเปลี่ยนแปลงอยู่ตลอดเวลา มีภาษาที่ใช้ในการเขียนโปแกรมหลายๆ ตัวที่เกิดขึ้นมา ล้มหายตายจากไป มีวิวัฒนาการเป็นรุ่นๆ ทำให้เราจำเป็นต้องทบทวน และแสวงหาความรู้ใหม่ๆ อยู่เสมอ นอกจากนี้แล้ว สิ่งที่ต้องมีควบคู่กันไปก็คือ รักกการอ่าน และความรู้ทางด้านภาษาต่างประเทศเช่น ภาษาอังกฤษ เนื่องจากความรู้ส่วนใหญ่จะเริ่มจากต่างประเทศ หากเรามัวแต่รออ่านภาษาไทยความรู้นั้นก็อาจจะเก่าไปแล้ว ไม่ทันใช้ และความรู้ที่ได้ก็อาจจะตกหล่นไม่ครบถ้วนเนื่องจากการแปล ดังนั้นการรักการอ่านและภาษาอังกฤษก็เป็นสิ่งที่จำเป็นสำหรับคนที่อยากเป็น programmer
คุณสมบัติต่อไปที่ต้องมีคือจินตนาการครับ ต้องสามารถวาดภาพในควาคิดได้ รวมทั้งการมองภาพแบบเป็น Block ที่ต้องสามารถละส่วนย่อยได้ สามารถมองระบบใดๆ ในรูปของ Block และความสัมพันธ์ของ Block ได้ ซึ่งจะทำให้การทำความเข้าใจกับสิ่งต่างๆ ทำได้อย่างง่ายดาย ครับ
ครับอันนี้ก็คือความคิดเห็นส่วนตัวที่คิดว่า programmer ต้องมี ซึ่งสิ่งที่สำคัญที่สุดคือรักในสิ่งที่ทำ นั่นจะทำให้เรามีความพยายาม และสามารถพัฒนาตัวเราไปได้ สุดท้ายสิ่งที่อยากจะบอกก็คือ ความรู้ที่เรามีจะต้องสามารถนำไปปฏิบัติ และถ่ายทอดได้ และการปฏิบัติก็ต้องมีการทำซ้ำหรือฝึกฝนจนชำนาญ นั่นก็คือเราต้องมีความอดทน รอคอยความสำเร็จได้ สุดท้ายต้องบอกว่า หากเราคิดแล้วไม่ลงมือทำ ก็ไม่เกิดประโยชน์ครับ การลงมือทำจะให้ผลกับเราสองอย่างคือ สำเร็จและยังไม่สำเร็จ แต่ไม่มีความล้มเหลวโดยสิ้นเชิงหรอกครับ ทุกๆการปฏิบัติเราจะมีสิ่งที่ได้เรียนรู้เสมอครับ
ป้ายกำกับ:
programmer
วันศุกร์ที่ 9 กรกฎาคม พ.ศ. 2553
การจัดเก็บและบริหารเอกสารด้วย KnowledgeTree

สวัสดีครับ วันนี้ขอเริ่มต้นด้วย open source ตัวนึงที่ผมนำมาใช้งานในบริษัทที่ทำงานอยู่ได้สักระยะแล้ว ซอฟต์แวร์ที่ว่านี่คือ KnowledgeTree ซึ่งเป็นระบบจัดการเอกสารที่สามารถใช้งานได้ทั้งบน Windows และ Linux โดยใช้ PHP และ MySQL เป็นระบบฐานข้อมูล โดยการใช้งานผมเริ่มจากการใช้งานทดสอบบน PC ก่อนแล้วจึงย้ายไปอยู่บน Linux (CentOS) จึงได้ประสบการณ์ในการใช้งานพอสมควรจากการ migrate จากระบบบน Windows ไปบน Linux และการ Upgrade รุ่นของซอฟต์แวร์ โดยรุ่นล่าสุดนี่คือ 3.7.0.2
สำหรับ KnowledgeTree ทางผู้พัฒนาเขาจะมีการ distribute ทั้งแบบ Commercial และ Community Edition หรือ แบบค่าใช้จ่ายต่ำๆ อย่างที่ผมใช้ครับ โดยถ้าเรายอมจ่ายเพื่อใช้งานรุ่น Commercial นั้น เราจะได้โปรแกรมเสริมสำหรับการใช้งานกับ Microsoft Office ซึ่งจะทำให้เราสามารถแก้ไขและบันทึกเอกสารบนระบบได้โดยตรง
Features
สำหรับคุณสมบัติของตัวซอฟต์แวร์ที่สำคัญก็มีดังนี้ครับ
สำหรับ KnowledgeTree ทางผู้พัฒนาเขาจะมีการ distribute ทั้งแบบ Commercial และ Community Edition หรือ แบบค่าใช้จ่ายต่ำๆ อย่างที่ผมใช้ครับ โดยถ้าเรายอมจ่ายเพื่อใช้งานรุ่น Commercial นั้น เราจะได้โปรแกรมเสริมสำหรับการใช้งานกับ Microsoft Office ซึ่งจะทำให้เราสามารถแก้ไขและบันทึกเอกสารบนระบบได้โดยตรง
Features
สำหรับคุณสมบัติของตัวซอฟต์แวร์ที่สำคัญก็มีดังนี้ครับ
- สามารถทำการสร้าง index จากเนื้อหาของเอกสารได้ เช่น Word, PDF, Power Point เป็นต้น
- การเก็บเอกสารสามารถเก็บเป็น version ได้
- สามารถสร้างข้อมูลเกี่ยวกับเอกสาร (MetaData) เพื่ออธิบายตัวเอกสารได้ ซึ่งสามารถใช้ในการค้นหาได้ภายหลัง
- รองรับการใช้งาน Workflow กับเอกสารได้ โดยจัดเอกสารเป็นประเภท และกำหนด Workflow ตามประเภทของเอกสาร
- สามารถอภิปราย (Dicuss) เกี่ยวกับเอกสาร หรือให้ความเห็น ขอความช่วย้หลือได้
- รองรับการ Check-in, Check-out เอกสาร ทำให้เอกสารอยู่ในสภาพ Readonly ได้
- รองรับการใช้งานกับ LDAP และ Active Directory
- มีความยืดหยุ่นในเรื่องของสิทธิค่อนข้างมาก สามารถกำหนดสิทธิเป็นระดับหน่วยงาน กลุ่มและเอกสารได้
- รองรับการการ Integrate กับระบบอื่นๆ ผ่านรูปแบบ PHP API, Web Service, REST
- รองรับการพัฒนาระบบในรูปแบบ Plugins
- รองรับการใช้งานกับ WebDav Clients
โดยข้อดีง่ายๆ ของการใช้งานเมื่อเทียบกับ File Server ก็คือการค้นหาข้อมูลที่สามารถทำได้หลากหลายทั้งการค้นหาจาก MetaData เนื้อหาในเอกสาร สามารถตรวจสอบประวัติการใช้งาน ควบคุมอายุของเอกสารได้งาย สำหรับในโอกาสต่อไปจะนำรายละเอียดอื่นๆ มาแนะกันต่อครับ
ป้ายกำกับ:
การจัดการเอกสาร,
document management system,
Linux
สมัครสมาชิก:
ความคิดเห็น (Atom)