Friday, January 26, 2007

มองหาแนวโน้มต่างๆ ผ่านมุมมองของ Google Trends

เคยบ้างไหมที่นึกอยากจะรู้แนวโน้มในเรื่องต่างๆ ที่มีการเปรียบเทียบ
ปกติแม้ว่าจะสามารถ search หาจาก google ได้ก็ตาม เราคงต้องหาข้อมูล
ต่างๆ แล้วมารวบรวมเพื่อสรุปผลว่า สิ่งที่เราสนใจมีแนวโน้มเป็นอย่างไร

มาลองใช้ google หาข้อมูลและแนวโน้มให้เราดีกว่ามั้ย
เช่น เราอยากรู้ว่าตอนนี้ Programming Language ต่างๆ มีคนใช้กันมาก
หรือน้อยแค่ไหน โดยเราสนใจเฉพาะกลุ่มของ Perl, PHP, Python และ
Ruby เราก็ไปที่ URL นี้เลย

http://www.google.com/trends

แล้วก็พิมพ์ข้อความ perl, php, python, ruby ลงในช่องกรอกข้อความ
จากนั้นก็กดปุ่ม Search Trends



















เท่านี้เราก็จะได้ผลลัพธ์ที่เราต้องการแล้ว ง่ายดีกว่าที่เราจะ search หาข้อมูล
แล้วต้องมาเปรียบเทียบเอง..มั้ยครับ

เรียนรู้การใช้งาน Windows และ Windows Security

ผู้เขียนเป็นคนหนึ่งที่ต้องใช้งานระบบปฏิบัติการ Windows ทั้งที่เป็น Client และ
Server จึงจำเป็นที่จะต้องศึกษาเรียนรู้เทคนิคต่างๆ ของระบบปฏิบัติการนี้

แหล่งข้อมูลที่ผู้เขียนใช้เป็นที่ศึกษาหาความรู้ด้านนี้ ก็คือ web site ของ Microsoft

http://www.microsoft.com/technet/abouttn/default.mspx














โดยจะมีข้อมูลต่างๆ มากมายที่ประโยชน์ต่อการทำงานของผู้เขียนเอง
จึงอยากแนะนำให้ได้รู้จักกัน

นอกจากนี้ เนื่องจากในทุกๆ ระบบปฏิบัติการมักจะมีปัญหาด้านความปลอดภัย
Windows ก็หนีไม่พ้นที่ต้องได้รับการดูแลให้ระบบมีความแข็งแรงอยู่เสมอ
เพื่อไม่ให้ถูกก่อกวนหรือโจมตีจากโปรแกรมไม่ประสงค์ดีทั้งหลาย

ผู้ใช้จึงควรที่จะมีความรู้เกี่ยวกับความปลอดภัยของ Windows ในระดับหนึ่งด้วย
ผู้เขียนเองศึกษาหาความรู้จากที่นี่

http://www.windowsecurity.com/articles_tutorials/














ซึ่งเป็นแหล่งข้อมูลอ้างอิงได้เป็นอย่างดี

ไม่ให้ user ใช้งาน Add/Remove Program

เมื่อเราต้องการบริหารจัดการและควบคุมผู้ใช้งานคอมพิวเตอร์ เราสามารถกำหนดค่าต่างๆ
ที่จะให้ผู้ใช้ทำงานอะไรได้หรือไม่ได้ หรืออนุญาตให้สามารถทำงานได้เพียงบางอย่าง

โดยใช้เครื่องมือที่ระบบปฏิบัติการ Windows มีไว้ให้ใช้อยู่แล้ว ได้แก่
Local Security Policy
หรือ
Group Policy
ตามแต่ัลักษณะงานที่เราต้องการ

วันนี้ขอแนะนำการใช้ Group Policy สำหรับทำ Disable Add/Remove Program
เมื่อเราไม่ต้องการให้ผู้ใช้รายนั้นเข้าใช้รายการ Add/Remove Program

ลองทำตามนี้ครับ

1. Start --> Run พิมพ์คำสั่ง gpedit.msc













2. ไปที่ Administrative Templates\Control Panel\Add/Remove Programs
แล้วกำหนดค่าเป็น enable















หลังจากนั้น ลองไปเรียกใช้งาน
Start --> Setting --> Control Panel --> Add or Remove Program

จะสังเกตเห็นว่าผู้ใช้จะไม่สามารถใช้งานได้ โดยมีข้อความแจ้งเตือน
ตามที่แสดงไว้ในกรอบหน้าต่างเล็กนั่นล่ะครับ

Group Policy ยังทำอะไรได้อีกมากมายครับ แล้วจะมาค่อยๆ นำมาเล่าสู่กันฟัง
ในโอกาสต่อๆ ไปครับ

ขอขอบคุณที่มาของข้อมูลนี้:
http://www.microsoft.com/technet/prodtechnol
/windows2000serv/reskit/gp/146.mspx?mfr=true

กำจัด Flashy ตัวแสบด้วย BitDefender Remove Tool

นอกจากเจ้า Godzilla แล้ว ที่ระบาดหนักๆ อีกตัวหนึ่งก็คือเจ้า Flashy
ซึ่งถือเป็นปัญหากวนใจคนที่ใช้งานคอมพิวเตอร์โดยเฉพาะคนที่จำเป็น
ต้องใช้งาน thumb drive

ต่อไปนี้ก็ไม่ต้องกังวลหรือรำคาญใจไปหรอกครับ ฺBitDefender ผู้พัฒนา
Anti-virus Software ได้จัดทำ tool มาให้เราใช้ remove เจ้า Flashy
ได้อย่างง่ายดาย.. ไป download ที่นี่ครับ

http://www.bitdefenderthailand.com/Removetoolsflashy.php

ลองดู Screenshot ที่ capture มาให้ดูเป็นตัวอย่างนะครับ




















กำจัดเจ้า Godzilla แบบเร็วไวทันใจ

ใครที่เจอปัญหาจาก Godzilla แล้วยังแก้ไม่ตก มาอ่านทางนี้ครับ
Godzilla จะทำให้เรียกใช้งาน thumb drive ไม่ได้ เนื่องจากมองไม่เห็น
file/folder ที่อยู่ภายใน thumb drive ที่ติดโดนเจ้า Godzilla เล่นงาน

ให้ไป download tool ที่ใช้ remove เจ้า Godzilla ที่นี่ครับ
http://www.nod32th.com/component/option,com_docman/task,doc_details/gid,16/Itemid,290/lang,th/

เป็น Anti-virus ค่าย Nod32
เมื่อได้ file มาแล้วก็ run ได้เลยครับ (ดูตัวอย่างตาม screenshot ที่ capture ด้านล่าง)




































































เท่านี้เราก็สามารถไล่เจ้า Godzilla ออกจากเครื่องของเราไปได้แล้วครับ

Thursday, January 11, 2007

แนะนำ PHPEdit เครื่องมือสำหรับเขียนโปรแกรมภาษา PHP

หลังจากที่ได้แนะนำ Apache2Triad สำหรับทำ Web Server พร้อมเครื่องมือที่หลากหลายไปแล้ว คราวนี้จะมาแนะนำ PHPEdit เครื่องมือ สำหรับใช้ในการ พัฒนา โปรแกรมด้วยภาษา PHP ที่มีความสามารถสูง
โดยเฉพาะ เรื่อง syntax และ function มาตรฐาน ที่มีอยู่ในตัว PHP

เมื่อเราพิมพ์ syntax หรือชื่อ function ก็จะมีหน้าต่าง pop up รายการของ syntax หรือ function ขึ้นมาให้ทันที เมื่อเลือก function ได้แล้วก็จะบอกเราว่า function นั้นๆ ต้่องการ parameter อะไรบ้าง ชนิดตัวแปรของ parameter เป็นชนิดไหน

รองรับการทำงานแฟ้มข้อมูลชนิดอื่นๆ นอกเหนือจาก php ด้วย เช่น HTML, Cascade Style Sheet, Javascript, SQL, XML โดยมี syntax highlighting ซึ่งจะช่วยให้ทำงานได้สะดวก และง่ายขึ้น เท่าที่ลองใช้ๆ มาหลายเจ้าก็มีเจ้านี้แหละถูกใจมากๆ ไปหา download มาใช้กันเถอะครับ
แต่เค้่าให้ใช้ได้ 30 วันเองนะครับ

download ได้ ที่นี่

Wednesday, January 10, 2007

แนะนำ Apache2Triad

สำหรับคนที่จำเป็นจะต้องเรียนรู้การทำงานของ Web Server เพื่อใช้ในการทดสอบ
ทดลองงานด้าน Web Application ย่อมจะต้องรู้จักโปรแกรมประเภท Opensource
ที่ชื่อ Apache HTTP Server, MySQL หรือ PostgreSQL, CGI Programming
Language เช่น Perl, PHP, Python


หลายๆ คนเลือกที่จะใช้โปรแกรมที่มีผู้รวบรวมโปรแกรมต่างๆ เข้าไว้ด้วยกันแล้ว
(Bundle) ซึ่งจะง่ายกว่าการแยกติดตั้งโปรแกรมต่างๆ เองทีละโปรแกรม บนระบบ
ปฏิบัติการ Windows ก็มีผู้จัดทำหลายเจ้า เช่น AppServ ซึ่งถ้าคุณสนใจที่จะใช้งาน
AppServ สามารถดูคำแนะนำได้จาก ที่นี่

Bundle ตัวที่สองที่น่าจะมีคนสนใจและใช้งานเยอะ XAMPP ครับ

ตัวที่สามนี่ชื่อตรงประเด็นเลย WAMP (Windows, Apache, MySQL และ PHP)

ส่วนเราเองปกติก็แยกลงเป็นแต่ละโปรแกรมไปครับ แบบว่าลองเล่นไปเรื่อยๆ
ตามประสามวยวัดหัดซ้อมมือ แต่เนื่องจากความที่เป็นต้นฉบับแบบมวยวัดดั้งเดิม จึงอยากรู้อยากลองหลายภาษา (Perl, PHP, Python) บน Web Server ตัวเดียวกัน
และอยากลอง database ทั้ง MySQL และ PostgreSQL ซึ่งก็ต้องไปหา phpMyAdmin และ pgMyAdminที่เป็นโปรแกรม สำหรับจัดการฐานข้อมูลทั้งสองนั่นมาใช้ ถ้าแยกลงเองทั้งหมดก็ยุ่งยากและใช้เวลาไม่น้อยครับ

ด้วยปัจจุบัน Next Technology (ด้วยการกดปุ่ม Next เลือก Yes/No) ได้รับการตอบสนอง ในวงกว้างอย่างยิ่งจึงจำเป็นที่เราต้องหัดใช้ให้คล่อง เราจึงเลือกที่จะใช้เจ้า Bundle ที่ชื่อ Apache2Triad ซึ่งเจ้าของเค้าบอกว่ามีโปรแกรมพวกนี้ Apache, MySQL, PostgreSQL, Xmail, SlimFTPd, Perl, PHP, Python, TCL, phpMyAdmin, pgMyAdmin รวมอยู่แล้วเสร็จสรรพพร้อมใช้งาน ที่สำคัญมีโปรแกรมอย่าง Awstats (โปรแกรมรายงานการเข้าใช้งาน Web ที่เขียนด้วย Perl) และโปรแกรม บริหาร จัึดการระบบในภาพรวมที่ชื่อ Apache2TraidCP





ที่เล่าๆ มานี่ ดูมันน่าสนใจบ้างมั้ยครับ... ที่สำคัญคือเราแทบไม่ต้องไป config อะไรมันเลย นอกจากความต้องการในการปรับแต่งอีกเล็กๆน้อยๆ เท่านั้น ลองไปหามาเล่นกันดูครับ

ทางลัดไปที่ Desktop Folder

ในเวลาที่เราทำงาน บางครั้งมีความจำเป็นที่จะต้องเปิดโปรแกรมต่างๆ
เป็นจำนวนมาก (หน้าต่างเยอะจริงๆ) และเมื่ีอไรก็ตามที่จะต้องออกไปที่ Desktop
เราก็มักจะใช้ Show Desktop(Icon)เป็นตัวนำทางเราไป (แต่มีบางคนเหมือนกัน
ขยันย่อหน้าจอทีละหน้าต่าง)

บางรายเผลอลบ Show Desktop ไปซะงั้น ทีนี้เลยจำเป็นต้องอาศัย
Windows explorer เพียงอย่างเดียว กว่าจะไล่ Click แล้ว Click อีก
เพื่อให้ไปถึง Desktop Folder ก็เบื่อไปตามๆกัน

เราไปทางด่วนกันดีกว่านะ แล้วก็ดีกว่าใช้ Show Desktop หรือไล่
Click ตามที่ว่ามาแล้ว (เพราะเข้าถึงตรง Desktop Folder ใน Windows
Explorer เลยครับ) เพียงแต่เราเลือกใช้ Start --> Run แล้วก็พิมพ์คำว่า
Desktop แล้วกด enter ชีวิตก็ง่่ายขึ้นเยอะเลย



ใช้ Tab ช่วยเมื่ออยู่ใน Command Line Mode

คนส่วนใหญ่มักหลีกเลี่ยงการใช้งาน Command Line ของ Windows เนื่องจาก
อาจรู้สึกว่ามันใช้ยากจำคำสั่งยาก เวลาที่จะเข้าถึง file/folder ก็ต้องพิมพ์กัน
ยาวเหยียด เลยไม่ใช้มันซะเลยแล้วก็อาศัยทำงานผ่าน GUI ซะสิ้นเรื่องรำคาญกันไป

อย่างไรก็ตาม ในบางงานที่เราจำเป็นต้องออกทำไปที่ Command Line เราก็จำเป็น
จะต้องพิมพ์คำสั่งและชื่อ file/folder อยู่ดีเราเองเป็นคนหนึ่งที่จำเป็นต้องใช้ command line ของ Windows ช่วยในกันทำงานซึ่งบางทีชื่อ folder หรือ file ก็ค่อนข้างยาว (จำไม่เคยได้่) แถมฝีมือพิมพ์ดีดก็ออกแนวๆ ไก่จิกเด็กตาย..เด็กตายบนปากโิอ่ง....

ก็เลยต้องหาตัวช่วยโดยการใช้แป้ันพิมพ์ Tab เหมือนเวลาที่ทำงานอยู่บน Linux หรือ
๊Unix
แล้วทำไงล่ะ?















ก็ตามเคยล่ะครับ.พี่น้องคร้าบบบ... เราต้องเข้าไปปรับแต่งที่ Registry ของ Windows
ลองทำตามนี้ดูครับพี่น้อง

Start --> Run พิมพ์คำสั่ง regedit

เมื่อเข้าหน้าจอ Registry Editor เลือกที่ menu Edit --> Find
แล้วค้นหาคำว่า CompletionChar เมื่อพบแล้วก็แก้ไขค่าจากเดิมที่เป็น 0 (default)
ให้เปลี่ยนไปเป็น 9

ที่นี้ ลองออกไปที่ command line (Start --> Run พิมพ์คำสั่ง cmd) แล้วลองใช้คำสั่ง
ต่างดู จะเห็นว่าเราจะสามารถใช้ Tab ช่วยอำนวยความสะดวกแทนการพิมพ์ได้อย่างมาก
ครับ..พี่น้อง

ขอขอบคุณลูกพี่หย่าย ฺBill Gates
และข้อมูลการปรับแต่ง Registry หัวข้อนี้
http://support.microsoft.com/kb/244407

Tuesday, January 9, 2007

Task Manager หายไปไหน?

เมื่อเรากดปุ่ม Ctrl + Alt + Del เราจะสามารถใช้งาน Lock Computer, Log Off,
Shutdown, Change Passwod และ Task Manager

แล้วจู่ๆ วันหนึ่ง ปุ่ีม Task Manager กลับถูก Disable ไม่ให้ทำงาน แต่เรา
มีความจำเป็นต้องใช้งาน Task Manager ทำไงดีล่ะที่นี้

ไม่ต้องกลุ้มอกกลุ้มใจไปหรอกครับ ลองทำตามนี้ดูนะครับ
* เรายังสามารถเรียกใช้ Task Manager จากการกำหนดค่าใน Group Policy

Start -> Run พิมพ์คำสั่ง gpedit.msc

User Configuration --> Administrative Templates --> System --> Log Off

ที่หน้าต่างด้านขวามือ จะเห็นว่า Disable Task Manager ถูก Enabled ไว้

เห็น double click เพื่อทำการยกเลิก โดยเลือก Not Configured

จัดการกับ Star Menu ของ Windows กันหน่อย

คุณเคยสงสัยบางมั้ยครับว่า.... เจ้า Start Menu ของ Windows
นี่ถ้าเราอยากจะปรับแต่งให้เป็นไปตามที่เราต้องการ เช่น ไม่อยากให้
แสดงบาง menu แล้วเราจะทำไง?

มันมีวิธีการให้ทำอยู่ 2 วิธีครับ
1. Start -> Run
พิมพ์คำสั่ง gpedit.msc แล้วลองดูครับว่าเราปรับแต่ง
อะไรได้บ้าง













2.Start -> Run
พิมพ์คำสั่ง regedit แล้วค้นหา Key

HKEY_CURRENT_USER
Software\Microsoft\Windows\CurrentVersion\Policies\Explorer

ที่นี้ี่ก็ปรับแต่งตามใจชอบนะครับ

ดูข้อมูลเพิ่มเติมที่นี่ครับ.. http://support.microsoft.com/kb/292504

http://en.wikipedia.org/wiki/Windows_registry













ตามภาพที่ capture มาให้เป็นตัวอย่างนี้ เป็นการยกเลิก
Documents menu ออกจาก Start Menu ครับ

เมื่อต้องมาเขียนบล็อก

บล็อคนี้เริ่มต้นจากมีใครหลายคนที่ทำการบ้านส่งครูไม่ได้ทั้งที่ได้พยายามกัน
อย่างหนักหนา(สาหัสหรือเปล่า..อันนี้ไม่รู้นะคร้าบ) เนื่องจากเป็นพรรคพวก
เพื่อนฝูงพี่น้องอ่ะนะ ก็เลยจำเป็นต้องมาช่วยเค้าเฉลยการบ้านกัน แต่พอเฉลย
การบ้านไปแล้ว เจ้าพวกนี้อีกน่ะแหละที่ต้องการให้นำมาเขียนให้คนอื่นๆ ได้เห็น
ได้อ่านกันด้วย ก็เลยเกิดขึ้นมาเป็นบล็อคนี้...

เมื่อคิดจะทำบล็อกกันทั้งที (ทั้งๆ ที่ก็ไม่ค่อยจะรู้เรื่องบล็อกกับเขาสักเท่าไร)
ก็จะพยายามหาเนื้อหาที่จะเป็นประโยชน์มาลงไว้ให้อ่านกันครับ และก็จะค่อยๆ
เรียนรู้ทำความเข้าใจเกี่ยวกับบล็อคของท่านผู้รู้คุณเก่ง แห่ง
www.keng.com

เพื่อทำให้บล็อคนี้เข้าดูท่่าเข้าทางกว่าตอนที่เริ่มตันนี้

การติดตั้ง Knowledgevolution บน Windows

Ruby on Rails & KnowledgeVolution (Windows Installation)

เขียนโดย เผด็จ พราวศรี
ขอขอบคุณข้อมูลเบื้องต้นของคุณวิภัทรมา ณ ที่นี้เป็นอย่างยิ่ง
http://rd.cc.psu.ac.th/content/view/98/48

==========================================================

1. ติดตั้งโปรแกรม Ruby for Windows

- ruby185-21.exe
- download ได้ ที่นี่

ภาพการติดตั้ง Ruby for Windows




















































เมื่อติดตั้งเสร็จแล้วให้ตรวจสอบใน Folder
c:\ruby\lib\ruby\gems\1.8\gem เพื่อดูว่าได้มีการติดตั้ง ruby gem ตัวใดไปบ้างแล้ว



















2. ติดตั้ง Web Server

2.1 ถ้าเลือกที่จะใช้ Apache ต้องติดตั้งโปรแกรม Apache กับ Ruby for Apache
2.1.1 แนะนำให้ใช้ Apache2
- apache_2.0.59-win32-x86-no_ssl.msi
ที่เลือกใช้ vesion นี้เพื่อให้ใช้งานได้กับ Subversion ที่พัฒนาขึ้นมาใช้งานกับ apache
version นี้โดยเฉพาะ (svn-1.4.2-setup.exe)
- download ได้ที่นี่ http://apache.org
2.1.2 ติดตั้งโปรแกรม Ruby for Apache
* ต้องติดตั้ง Apache กับ Ruby ก่อนนะครับ เพราะตอนติดตั้ง Ruby for Apache
เราจะต้องระบุ path ของ Apache และ Ruby
* ก่อนการติดตั้ง Ruby for Apache
ต้องทำการเปลี่ยนชื่อ file “msvcp71.dll” ให้เป็นชื่ออื่นก่อน เพื่อไม่ให้เกิด error
เนื่องจากโปรแกรมจะสร้าง file “msvcp71.dll” ขึ้นมาใหม่
- RubyForApache-1.3.1.exe
- download ได้ที่นี่ http://rubyforge.org/projects/rubyforapache/

ภาพการติดตั้ง Ruby for Apache












































2.1.3 Config "httpd.conf" ของ Apache2

เราค้นหาข้อมูลจาก google ได้ข้อมูลจากที่นี่ครับ

http://wiki.rubyonrails.org/rails/pages

/Fast+CGI+and+Apache2+for+Windows+XP



http://wiki.rubyonrails.org/rails/pages

/Fast+CGI+and+Apache2+for+Windows+without+VirtualHosts

=========================================================

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule fastcgi_module modules/mod_fastcgi.so

# mod_fastcgi.so ได้จากการติดตั้ง RubyForApache ครับ

<IfModule mod_fastcgi.c>
FastCgiServer {rails_app_dir}/public/dispatch.fcgi\
-initial-env RAILS_ENV=development \
-processes 3 -idle-timeout 120
</IfModule>

<VirtualHost>
ServerName rails
DocumentRoot "c:/path/to/your/rails/app/public"
<Directory>
Options ExecCGI FollowSymLinks
AllowOverride all
Allow from all
Order allow,deny
AddHandler cgi-script .cgi
AddHandler fastcgi-script .fcgi
</Directory>
</VirtualHost>

=========================================================

ที่ผมลองคือต้องมีส่วนของ
<IfModule mod_fastcgi.c>
.... (ผมเปลี่ยน development เป็น production ครับ)
</IfModule>

แล้วใน <VirtualHost> ถ้าไม่ใช่เป็น localhost
ก็ต้องไปปรับแก้ไขไฟล์ hosts (C:\WINDOWS\system32\drivers\etc) ครับ
ตามตัวอย่างก็ต้องไปเพิ่มบรรทัด
127.0.0.1 rails

แต่ที่เราทดลอง ใช้แบบนี้ครับ
NameVirtualHost 127.0.0.1:80
<VirtualHost>
ServerAdmin admin@localhost
DocumentRoot "c:/Apache2/htdocs"
ServerName localhost
ErrorLog logs/localhost_error.log
CustomLog logs/localhost_access.log common
</VirtualHost>

<VirtualHost>
# Test Rails Application created by rails command
ServerName myrils
DocumentRoot c:/WebDev/newapp/public/
ErrorLog c:/WebDev/newapp/log/server.log
<Directory>
Options ExecCGI FollowSymLinks
AllowOverride all
Allow from all
Order allow,deny
AddHandler cgi-script .cgi
AddHandler fastcgi-script .fcgi
</Directory>
</VirtualHost>

<VirtualHost>
# Test KV Application
ServerName gotoknow
DocumentRoot c:/kv/public/
ErrorLog c:/kv/log/server.log
<Directory>
Options ExecCGI FollowSymLinks
AllowOverride all
Allow from all
Order allow,deny
AddHandler cgi-script .cgi
AddHandler fastcgi-script .fcgi
</Directory>
</VirtualHost>


โดยในไฟล์ hosts มีข้อมูลด้งนี้ครับ
127.0.0.1 localhost
127.0.0.1 myrails
127.0.0.1 gotoknow

Restart Apache2 (ตรวจสอบดูว่ามี error หรือไม่?)
ถ้าไม่มี error









=========================================================

2.2 ถ้าเลือกที่จะใช้ Lighttpd
* ติดตั้ง Lighttpd (Web Server) ด้วยแฟ้มข้อมูล lighttpd-win-setup.exe (version 1.4.11)
download ที่นี่ http://www.siamdev.com/page.php?id=175










3. ติดตั้ง Ruby on Rail
- ที่ c:\ruby\bin> ใช้คำสั่ง
gem install rails –include-dependencies












- ตรวจดูที่ direcotory c:\ruby\lib\ruby\gems\1.8\gems
จะเห็น directory ต่างๆ ภายใต้ c:\ruby\lib\ruby\gems\1.8\gems
ที่ได้รับติดตั้งเพิ่มเติมจากการติดตั้ง rails

* Test Ruby on Rails (โดยทำงานด้วย WEBrick)

c:\ruby\bin> rails c:\myProject
c:\ruby\bin> cd myProject
c:\myProject> c:\ruby\bin\ruby script/server

เปิด Browser ขึ้นมา พิมพ์ URL
- http://localhost:3000 (browser แสดงหน้า Welcome aboard You’re riding the Rails!)
- click ที่ About your application’s environement (browser แสดงรายละเอียดของ Application Software)
















4. Install other gems
c:\ruby\bin>
- gem install fcgi –include-dependencies
(การติดตั้งเกิดปัญหามี Error แต่อย่างไรก็ตามมีการสร้าง directory ชื่อ fcgi-0.8.7 ภายใต้
c:\ruby\lib\ruby\gems\1.8\gems)













- gem install gettext –include-dependencies
(เลือกข้อ 2 gettext 1.8.0 (mswin32) เพราะว่าเราใช้ ruby version 1.8 บน Windows)












- gem install gd2 –include-dependencies







- gem install redcloth –include-dependencies













- gem install color –include-dependencies







==========================================================

- gem install rmagick –include-dependencies
วิธีนี้เกิดปัญหา error แก้ไขปัญหาโดยการติดตั้ง RMgick แทน (ดูรายละเอียดด้านล่าง)






==========================================================

* Install RMgick
- RMagick-1.14.1_IM-6.3.0-7-Q8.zip
- download ได้ที่ http://rubyforge.org/frs/?group_id=12
- แตกแฟ้มข้อมูล zip ออกมา จะได้ rmagick-1.14.1-win32.gem
- ติดตั้ง ImageMagick-6.3.0-7-Q8-windows-dll.exe (ในกรณีนี้ติดตั้งไว้ที่ C:\ImageMagick)

Copy แฟ้มข้อมูลจากด้านล่าง C:\ImageMagick\
ไปไว้ที่ SYSTEM directory (C:\WINDOWS\SYSTEM32)

* CORE_RL_jpeg_.dll
* CORE_RL_lcms_.dll
* CORE_RL_magick_.dll
* CORE_RL_ttf_.dll
* CORE_RL_xlib_.dll
* X11.dll

c:\ruby\bin>
- gem install rmagick-1.14.1-win32.gem

5. Install MySQL
- mysql-essential-5.0.27-win32.msi
- download ได้ที่นี่ http://dev.mysql.com/downloads/mysql/5.0.html#downloads
c:\mysql\bin> mysql -u root -p
Enter Password: ******* (ใส่password)
mysql> show databases; (แสดงรายชื่อฐานข้อมูล)
mysql> create database kv_production; (สร้างฐานข้อมูลชื่อ kv_production)
mysql> grant all privileges on kv_production.* to ‘kv’@'localhost’ identified by ‘1234567′;
(กำหนดสิทธิการใช้งานบนฐานข้อมูล kv_production โดยมีผู้ใช้ชื่อ kv เรียกใช้งานจาก localhost และมี
password คือ 1234567)
mysql> quit (ออกจาก mysql)

6. ติดตั้งโปรแรกม SubVersion
- svn-1.4.2-setup.exe (for Apache 2.0.59)
- download ได้ที่นี่….
http://subversion.tigris.org/files/documents/15/35379/svn-1.4.2-setup.exe













7. download Knowlegde Volution Applicatin จาก usablelabs.com
c:\> c:\Subversion\bin\svn.exe checkout svn://svn.usablelabs.com/kms/kv/trunk kv
(เพื่อเก็บ Application นี้ไว้ที่ c:\kv)

8. แก้ไขแฟ้มข้อมูลที่เกี่ยวข้อง
8.1 แก้ไขแฟ้มข้อมูล C:\kv\config\database.yml

ให้ยกเลิก section ของ dababase อื่นๆทั้งหมด
เหลือแต่ procution โดยให้มีรายละเอียดเป็นดังนี้

production:
adapter: mysql
database: kv_production
username: kv
password: 1234567
host: localhost
encoding: utf8

8.2 แก้ไขแฟ้ม C:\kv\config\lighttpd.conf (เฉพาะกรณีที่เราเลือกใช้ Lighttpd เป็น Web Server เท่านั้นครับ)
ให้บรรทัดข้อมูลจาก development เป็น production
ดังตัวอย่างเปลี่ยนจากเดิม
“bin-environment” => ( “RAILS_ENV” => “developement” )
ให้กลายเป็น
“bin-environment” => ( “RAILS_ENV” => “production” )

8.3 แก้ไขแฟ้ม C:\kv\config\dispatch.fcgi
ที่บรรทัดแรก #!/usr/local/bin/ruby18
เปลี่ยนให้เป็น #!c:\ruby\bin\ruby

9. ทดลอง Rake Migrate (เท่าที่ทราบหลายคนก็มีปัญหาตรงนี้เหมือนกัน)
c:>cd kv
set RAILS_ENV=production
rake migrate
จากที่ทดสอบมี error เกิดขึ้น

rake aborted!
Mysql::Error: #42000BLOB/TEXT column ‘custom_css’ can’t have a default
value: ALTER TABLE blogs CHANGE custom_css custom_css text DEFAULT ‘’

เข้าใจว่าเนื่องจาก ในการ rake จะมีการปรับปรุงโครงสร้างอย่างหนึ่งของ table blog
แต่เราไม่เคยมี table นี้มาก่อน เนื่องจากเราติดตั้งใหม่ จึงเกิดการ error ขึ้น (ไม่รู้คิดถูก
หรือเปล่านะครับ)


==========================================================
10. สร้างตารางข้อมูล (Table) โดยใช้ .sql file ที่ได้จากการ export มาจากฐานข้อมูล kv_production บน Fedora Core-6
ซึ่งทำงานได้ปกติ

c:\mysql\bin> mysql -u root -p
Enter Password: ******* (ใส่password)
mysql> show databases; (แสดงรายชื่อฐานข้อมูล)
mysql> drop database kv_production; (ลบฐานข้อมูลชื่อ kv_production เพื่อลบ table ทั้งหมดและตัวฐานข้อมูลที่ทำการ
rake ไม่สำเร็จ)
mysql> create database kv_production; (สร้างฐานข้อมูลชื่อ kv_production ขึ้นมาใหม่)
mysql> grant all privileges on kv_production.* to ‘kv’@'localhost’ identified by ‘1234567′;
(กำหนดสิทธิการใช้งานบนฐานข้อมูล kv_production โดยมีผู้ใช้ชื่อ kv เรียกใช้งานจาก localhost และมี
password คือ 1234567)
mysql> use kv_production;
mysql> ……………………… (copy ข้อความ คำสั่ง sql command จากแฟ้มข้อมูล KnowledgeVolution.sql มาวางเพื่อสร้าง table )
mysql> quit (ออกจาก mysql)

11. ที่ c:\kv> ใช้ editor สร้าง Batch File ชื่อ kv.bat

(สำหรับการทดสอบด้วย WEBrick ซึ่งเป็น Web Server ที่ให้มากับ Rails..

เพื่อทดสอบก่อนว่า KV ทำงานได้แล้ว)

ให้มีข้อความตามนี้ครับ
@echo off
set RAILS_ENV=production (เป็นการกำหนดสภาพแวดล้อมให้กับ RAILS ถ้าไม่กำหนดจะเกิด error เพราะจะมีการเรียกใช้งาน
development ด้วย)
c:\ruby\bin\ruby.exe scritp/server

c:kv> kv.bat

เปิด browser http://localhost:3000 จะได้หน้าแรกของ KnowledgeVolution












12. คราวนี้เราจะทดสอบการทำงานด้วย Apache2 + FastCGI
โดยไม่ใช้ WEBrick คือเรียกจาก browser โดยไม่เรียกคำสั่ง
จาก command line อย่างที่ทำในข้อ 11

http://gotoknow










และแล้วเราก็สำเร็จซะทีครับ สำหรับ Ruby on Rails กับ Apache + FastCGI
*** แต่ยังทำให้ทำงานกับ LightTPD ไม่สำเร็จนะครับ ***

==========================================================
# sql commnad สำหรับสร้างตารางข้อมูลให้กับฐานข้อมูล kv_production
==========================================================

CREATE TABLE `blogs` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`address` varchar(255) default NULL,
`title` varchar(255) default NULL,
`description` text,
`disabled` tinyint(1) default ‘0′,
`created_at` datetime default NULL,
`modified_at` datetime default NULL,
`hue_save` int(11) default NULL,
`saturation_save` int(11) default NULL,
`luminosity_save` int(11) default NULL,
`custom_css_save` text,
PRIMARY KEY (`id`),
UNIQUE KEY `blogs_address_index` (`address`),
KEY `blogs_user_id_index` (`user_id`,`disabled`),
KEY `blogs_created_at_index` (`created_at`,`disabled`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `bookmarks` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`title` varchar(255) default NULL,
`url` varchar(255) default NULL,
`note` varchar(255) default NULL,
`created_at` datetime default NULL,
`modified_at` datetime default NULL,
PRIMARY KEY (`id`),
KEY `bookmarks_user_id_index` (`user_id`,`created_at`),
KEY `bookmarks_created_at_index` (`created_at`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `comment_stats` (
`id` int(11) NOT NULL auto_increment,
`commentable_id` int(11) NOT NULL,
`commentable_type` varchar(255) default NULL,
`comment_counter` int(11) default NULL,
`last_commented_at` datetime default NULL,
PRIMARY KEY (`id`),
KEY `comment_stats_last_commented_at_index` (`last_commented_at`,`commentable_type`,`commentable_id`),
KEY `comment_stats_commentable_id_index` (`commentable_id`,`commentable_type`,`last_commented_at`),
KEY `comment_stats_commentable_type_index` (`commentable_type`,`commentable_id`,`last_commented_at`),
KEY `comment_stats_commentable_type_counter_index` (`commentable_type`,`comment_counter`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `comments` (
`id` int(11) NOT NULL auto_increment,
`commentable_id` int(11) NOT NULL,
`commentable_type` varchar(255) default NULL,
`user_id` int(11) NOT NULL,
`name` varchar(255) default NULL,
`email` varchar(255) default NULL,
`ip` varchar(255) default NULL,
`content` text,
`created_at` datetime default NULL,
PRIMARY KEY (`id`),
KEY `comments_user_id_index` (`user_id`,`created_at`),
KEY `comments_created_at_index` (`created_at`,`commentable_type`,`commentable_id`),
KEY `comments_commentable_id_index` (`commentable_id`,`commentable_type`,`created_at`),
KEY `comments_commentable_type_index` (`commentable_type`,`commentable_id`,`created_at`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `counters` (
`id` int(11) NOT NULL auto_increment,
`countable_id` int(11) NOT NULL,
`countable_type` varchar(255) default NULL,
`user_id` int(11) NOT NULL,
`ip` varchar(255) default NULL,
`referrer` varchar(255) default NULL,
`created_at` datetime default NULL,
PRIMARY KEY (`id`),
KEY `counters_user_id_index` (`user_id`,`created_at`),
KEY `counters_countable_id_index` (`countable_id`,`countable_type`,`created_at`),
KEY `counters_ip_index` (`ip`),
KEY `counters_referrer_index` (`referrer`),
KEY `counters_created_at_index` (`created_at`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `pictures` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`data` mediumblob,
`content_type` varchar(255) default NULL,
PRIMARY KEY (`id`),
KEY `pictures_user_id_index` (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `planet_subscriptions` (
`id` int(11) NOT NULL auto_increment,
`blog_id` int(11) NOT NULL,
`planet_id` int(11) NOT NULL,
`created_at` datetime default NULL,
PRIMARY KEY (`id`),
KEY `planet_subscriptions_blog_id_index` (`blog_id`,`planet_id`),
KEY `planet_subscriptions_created_at_index` (`created_at`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `planets` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`address` varchar(255) default NULL,
`title` varchar(255) default NULL,
`description` text,
`created_at` datetime default NULL,
`modified_at` datetime default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `planets_address_index` (`address`),
KEY `planets_user_id_index` (`user_id`),
KEY `planets_created_at_index` (`created_at`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `posts` (
`id` int(11) NOT NULL auto_increment,
`blog_id` int(11) NOT NULL,
`title` varchar(255) default NULL,
`excerpt` text,
`content` text,
`hidden` tinyint(1) default ‘0′,
`commentable` tinyint(1) default ‘1′,
`started_at` datetime default NULL,
`ended_at` datetime default NULL,
`created_at` datetime default NULL,
`modified_at` datetime default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `posts_blog_id_index` (`blog_id`,`created_at`,`hidden`),
KEY `posts_created_at_index` (`created_at`),
KEY `posts_started_at_index` (`started_at`,`ended_at`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `questions` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`questioner_id` int(11) NOT NULL,
`name` varchar(255) default NULL,
`email` varchar(255) default NULL,
`ip` varchar(255) default NULL,
`subject` varchar(255) default NULL,
`content` text,
`answer` text,
`commentable` tinyint(1) default ‘1′,
`created_at` datetime default NULL,
`answered_at` datetime default NULL,
`modified_at` datetime default NULL,
PRIMARY KEY (`id`),
KEY `questions_user_id_index` (`user_id`,`created_at`,`answered_at`),
KEY `questions_created_at_index` (`created_at`),
KEY `questions_answered_at_index` (`answered_at`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `schema_info` (
`version` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE `sessions` (
`id` int(11) NOT NULL auto_increment,
`session_id` varchar(255) default NULL,
`data` text,
`updated_at` datetime default NULL,
PRIMARY KEY (`id`),
KEY `sessions_session_id_index` (`session_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `sites` (
`id` int(11) NOT NULL auto_increment,
`domain` varchar(255) default ‘’,
`title_image` varchar(255) default ‘’,
`locale` varchar(255) default ‘en_US’,
`announcement_planet` varchar(255) default ‘’,
`focus_planet` varchar(255) default ‘’,
`title` varchar(255) default ‘’,
`home_content` text,
`footer` text,
`max_file_size` int(11) default ‘0′,
`upload_quota` int(11) default ‘0′,
`notifier_email_prefix` varchar(255) default ‘[KV Error]’,
`notifier_email_recipients` varchar(255) default ‘’,
`google_search_code` text,
`modified_at` datetime default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `sites_domain_index` (`domain`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

CREATE TABLE `taggings` (
`id` int(11) NOT NULL auto_increment,
`tag_id` int(11) NOT NULL,
`taggable_id` int(11) NOT NULL,
`taggable_type` varchar(255) default NULL,
`user_id` int(11) NOT NULL,
`created_at` datetime default NULL,
PRIMARY KEY (`id`),
KEY `taggings_tag_id_index` (`tag_id`,`taggable_type`),
KEY `taggings_taggable_id_index` (`taggable_id`,`taggable_type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `tags` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `tags_name_index` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `themes` (
`id` int(11) NOT NULL auto_increment,
`themeable_id` int(11) NOT NULL,
`themeable_type` varchar(255) default NULL,
`user_id` int(11) NOT NULL,
`hue` int(11) default ‘0′,
`saturation` int(11) default ‘0′,
`luminosity` int(11) default ‘0′,
`custom_css` text,
`show_title` tinyint(1) default ‘1′,
PRIMARY KEY (`id`),
KEY `themes_user_id_index` (`user_id`),
KEY `themes_themeable_id_index` (`themeable_id`,`themeable_type`),
KEY `themes_themeable_type_index` (`themeable_type`,`themeable_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `uploads` (
`id` int(11) NOT NULL auto_increment,
`user_id` int(11) NOT NULL,
`filename` varchar(255) default NULL,
`description` text,
`hidden` tinyint(1) default ‘0′,
`content_type` varchar(255) default NULL,
`commentable` tinyint(1) default ‘1′,
`created_at` datetime default NULL,
`modified_at` datetime default NULL,
PRIMARY KEY (`id`),
KEY `uploads_created_at_index` (`created_at`,`hidden`),
KEY `uploads_user_id_index` (`user_id`,`created_at`,`hidden`),
KEY `uploads_filename_index` (`filename`,`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(255) default NULL,
`md5_passphrase` varchar(255) default NULL,
`email` varchar(255) default NULL,
`firstname` varchar(255) default NULL,
`middlename` varchar(255) default NULL,
`lastname` varchar(255) default NULL,
`screenname` varchar(255) default NULL,
`title` varchar(255) default NULL,
`career` varchar(255) default NULL,
`position` varchar(255) default NULL,
`organization` varchar(255) default NULL,
`street` varchar(255) default NULL,
`city` varchar(255) default NULL,
`state` varchar(255) default NULL,
`postalcode` varchar(255) default NULL,
`country` varchar(255) default NULL,
`mobile` varchar(255) default NULL,
`phone` varchar(255) default NULL,
`fax` varchar(255) default NULL,
`picture_url` varchar(255) default NULL,
`website` varchar(255) default NULL,
`about_note` text,
`longitude` float default NULL,
`latitude` float default NULL,
`name_preference` int(11) default ‘0′,
`ticket` varchar(255) default NULL,
`disabled` tinyint(1) default ‘0′,
`created_at` datetime default NULL,
`modified_at` datetime default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `users_username_index` (`username`),
KEY `users_email_index` (`email`),
KEY `users_created_at_index` (`created_at`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

===============================================