Archive for the 'วิธีแก้ปัญหาเขียนโปรแกรม' Category

(J)Ruby บน Google App Engine

หลังจากใช้ความพยายามมา 2 วันในการพยายามทำ Hello World JRuby ขึ้น Google App Engine ให้ได้ซึ่งจากหลายๆแหล่งผมพยายามทำตาม เสร็จแล้วก็ติดปัญหาจุกจิกมากมาย ซึ่งผมก็เชื่อเขาว่าให้ใช้ JRuby แต่สุดท้ายวิธีที่ผมได้ผลก็คือ Ruby ธรรมดาเนี้ยและ ได้แบบไม่มีปัญหาเลยด้วยครับผม วันนี้ผมเอาวิธีทำ Sinatra บน Google App Engine มาฝากครับ

http://blog.bigcurl.de/2009/04/running-sinatra-apps-on-google.html

ซึ่งจริงๆแล้วผมก็ทำตามจากที่นี้ทั้งหมดครับ เพียงแต่ว่ามันไม่ได้ตามเปะๆเจอปัญหาต่างๆนานา ที่ค้นหาใน Google ก็ไม่เจอ แต่ผมพอมีความคุ้นกับ Java/Servlet อยู่บ้างเลยพอเข้าใจว่าต้องทำอะไร พอคล่ำๆไปสักพักก็เลยมาถูกทาง ดังนั้นผมจะสรุปจากบทความด้านบนนะครับผม มีขั้นตอนทำดังนี้ครับ อาจจะยาวหน่อย โดยอันนี้ผมทำแบบ Version Windows ที่ผมทำได้จริงนะครับ แต่ก่อนทำคุณต้องมี Account Google App Engine ก่อนนะครับ แล้วก็สร้าง App-id สักตัวหนึ่ง

  1. ใช้ Ruby 1.8.6 One-Click-Installer
  2. พอลงเสร็จ ก็เข้า Command-line จาก run -> cmd
  3. พิมพ์ gem install rake sinatra warbler
  4. ทำการสร้าง folder ใน drive C: เป็น sinatra-app
  5. ภายใน folder sinatra-app ให้สร้าง folder ดังนี้เพิ่มไป views public config lib
  6. พอสร้าง folder เสร็จก็สร้างไฟล์ดังนี้ครับ config.ru , app.rb , appengine-web.xml
  7. เสร็จแล้วไป copy โค้ดใส่แต่ละไฟล์ที่นี้ http://gist.github.com/91801
  8. จะสังเกตว่ามีไฟล์ warble.rb ด้วยอีกไฟล์ให้สร้างใน folder config ดังนั้นไฟล์นี้จะอยู่ config/warble.rb
  9. ขั้นตอนนี้เป็นขั้นตอนลัดนะครับ เพราะมีบางตัว run ใน windows ไม่ผ่านผมเลยทำการรวมไฟล์ lib ที่จำเป็นไว้ให้เรียบร้อยแล้ว โหลดได้เลย
  10. พอโหลดเสร็จก็นำไปแตก zip ที่ folder ใน sinatra-app/lib นะครับ
  11. เสร็จแล้วก็เข้า command-line แล้วไปที่ folder sinatra-app โดยพิมพ์ c: ตามด้วย cd\ ตามด้วย cd sinatra-app
  12. พอเข้ามาถึงพิมพ์ warble เฉยๆเลยมันก็จะทำการจัดการให้เสร็จ
  13. เปิดไฟล์ sinatra-app/tmp/war/WEB-INF/gems/gems/sinatra-0.9.1.1/lib/sinatra.rb
  14. ทำการ comment (ใช้สัญลักษณ์ #) ที่บรรทัดสุดท้ายที่เขียนว่า use_in_file_templates!
  15. แล้วไปเรียก warble ใน folder sinatra-app เหมือนเดิมอีกที
  16. เสร็จแล้วให้ไปโหลด Google App Engine SDK
  17. เอาไปแตกอยู่ drive C: เหมือนกัน (เพื่อความง่าย) และเปลี่ยนชื่อโฟลเดอร์เป็น appengine-java-sdk
  18. เสร็จแล้วก็เข้า command-line และไปอยู่ใน drive C: root (C:\)
  19. ทดลอง app ด้วยการพิมพ์ appengine-java-sdk\bin\appcfg.cmd sinatra-app\tmp\war
  20. ถ้าไม่มีอะไรผิดพลาดมันจะขึ้นบอกว่า app ถูก run อยู่ที่ http://localhost:8080 เราลองเข้าไปดูว่าขึ้น Hello ไหม
  21. ถ้าขึ้นละก็เตรียม upload ขึ้น app กันได้เลยแต่ต้องแก้นิดหน่อย
  22. เปิดไฟล์ใน sinatra-app/appengine-web.xml
  23. เปลี่ยนจาก YOUR-APPLICATION-ID เป็น app-id ของคุณ (app-id คือชื่อ app ที่ตั้งใน Google App Engine)
  24. เสร็จแล้วก็ warble
  25. เข้าไป drive C: พิมพ์ appengine-java-sdk\bin\appcfg.cmd update sinatra-app\tmp\war (แบบนี้เท่านั้นห้ามพิมพ์ / แทน \)
  26. ถ้าถูกต้องมันจะถาม email กับ password เราก็ใส่ไปแล้วก็รอๆๆ
  27. พอเสร็จเราก็เข้าไปดูได้เลยที่ app-id-ของคุณ.appspot.com
  28. ครั้งแรกจะนานพอดูเลย แล้วพอครั้งหลังๆก็จะเร็วขึ้น (รอ compile นะและ)

เสร็จแล้วววว คำสั่ง appcfg.cmd นั้นใช้ใน windows นะครับถ้าใช้ linux หรือ mac osx จะใช้ appcfg.sh แทนนะครับ หวังว่าคงชอบ Ruby คงมีเฮกันแล้วคราวนี้

ปัญหางานทั่วไปที่เจอในงานพัฒนาเว็บ (1)

หลังจากทำงานกับที่ Duocore.tv มาก็เจอปัญหาในการโค้ดมากมาย โดยผมนำมาเขียนเตือนตัวเองไว้ แล้วก็เป็นประโยชน์สำคัญท่านอื่นๆที่อาจจะเคยเจอปัญหานี้ หรืออนาคตอาจจะเจอ

1. Web Service กับ JSON หรือ AJAX Cross Domain

โดยปกติแล้วเราจะใช้ Javascript ดึงข้อมูลจากฝั่ง Server Side Script ภายใต้โดเมนเดียวกันแล้วมันได้ ผลแต่ถ้าเราจะทำ Ajax Cross Domain ด้วย JSON นั้นเราต้องรู้จักสิ่งที่เรียกว่า JSONP ซึ่งเคยเขียนในสองสามบทความที่แล้วกับวิธีทำ ซึ่งปัญหานี้ ถ้าเราไม่กะเปิด Service ให้คนอื่นใช้คงไม่เจอ แล้วเมื่อก่อนก็นึกว่ามันง่ายกว่านี้ แต่จริงๆมันต้องแก้ด้วย JSONP นี้เอง แต่ถ้าเป็นพวก XML แล้วนั้นจะไม่ต้องใช้ JSONP มาแก้ปัญหา

บทสรุปของวิธีแก้ปัญหา : ใช้ JSONP ในการส่งข้อมูลแบบ JSON ข้าม Domain หรือใช้ข้อมูลแบบ XML เพื่อไม่ต้องยุ่งกับ JSONP

2.  Asynchronous และ Synchronous

ในการเขียน Javascript หรือ jQuery และ AJAX คงเป็นเรื่องที่ขาดไม่ได้สำหรับเว็บ 2.0 ดังนั้นเราหลีกเลี้ยงที่จะไม่เจอปัญหานี้ในบางครั้งไม่ได้ ในกรณีของผมคือเจอกรณีที่เราต้องการให้ข้อมูลโหลดมาเสร็จก่อน แล้วค่อยที่จะทำคำสั่งต่อไปเรื่อยๆ ซึ่งผมก็เจอข้อจำกัดบางอย่างของ JSONP ของ jQuery นั้นก็คือมันไม่สามารถทำเป็น Synchronous ได้ ดังนั้นในกรณีที่เราต้องการให้มีการรอข้อมูลก่อน แล้วค่อยทำงานอย่างอื่นต่อจึงทำไม่ได้นั้นเอง

บทสรุปของวิธีแก้ปัญหา : ส่งข้อมูลด้วย XML หรือทำให้การท่อง DOM เป็นแบบ Static ที่สุด ไม่งั้นอาจจะเจอกรณีที่ข้อมูลส่งมาช้ากว่าคำสั่งที่สั่งให้เปลี่ยน DOM แบบ Dynamic

3. XML-RPC

เรื่องของ XML-RPC อาจเป็นเรื่องน่างง ว่าเป็นปัญหาได้อย่างไร ผมต้องใช้เจ้า function ที่ชื่อว่า xmlrpc_encode_request เป็น function ที่เอาไว้ส่ง xml rpc แต่มันดันต้องใช้ extension ของ php อย่าง xmlrpc ซึ่งต้องเปิดใช้งานก่อน ซึ่งใน Windows หรือเครื่องเราก็ไม่มีปัญหาอะไรต้องตกใจ แต่พอขึ้นโฮสที่เป็น Linux XMLRPC ตัวนี้ไม่สามารถเปิดใช้งานได้ง่ายๆ เพราะโฮสส่วนใหญ่ไม่ได้ compile เจ้า xmlrpc ตัวนี้ไว้ เลยดังนั้นการเปิดใช้งานมันจึงเป็นเรื่องที่น่าปวดหัว

วิธีแก้ปัญหา : แจ้งเจ้าของโฮสให้เปิดให้ แต่ถ้าเจ้าของโฮสเปิดไม่เป็น เห็นทีต้องใช้ library ตัวอื่นแล้วแทนแล้วเช่น XML-RPC ของ CodeIgniter

4. ข้อผิดพลาดในการเขียนโค้ด inline css

ระหว่างการทำงานภาษาที่ต้องเขียนก็มีมากมายทั้ง CSS , JavaScript , HTML , PHP , jQuery ซึ่งบางทีมันก็น่าปวดหัวจนมึนไปและข้อผิดพลาดอาจเกิดขึ้นได้ตลอดเวลา รวมถึงความที่เป็นมนุษย์มักคิดเข้าข้างตัวเอง หรือมองข้ามสิ่งเล็กๆน้อยไป กรณีที่ผมเจอก็คือเขียน inline css ผิดนั้นเอง เช่น style=”width:480; height:270;” ซึ่งดูผ่านๆก็น่าจะใช้ได้ แล้วการ render ในบาง browser สามารถ render ได้ แต่ไม่ได้ในบาง browser แล้วยังได้ในบางกรณี และไม่ได้ในหลายกรณีซึ่งทำให้เกิดความสับสนกับคนเีขียนได้อย่างมาก

วิธีแก้ปัญหา : จงเชื่อในมาตรฐานและการตรวจสอบของคอมพิวเตอร์ในกรณีนี้ก็คงเป็น HTML Validator เป็นต้น

5. แก้บัค,อัพเกรด,เปลี่ยนความต้องการ

ทำให้สามารถเกิดบัคอีกตัวขึ้นมาได้  หรือการคุยงานมาไม่ถูกต้อง สามารถทำให้เกิดปัญหาทำให้เราแก้ซ้ำซากได้อยู่ตลอดเวลา หรือสิ่งที่ให้ทำเป็นอย่างหนึ่งแต่การนำไปใช้จริงเป็นอีกอย่าง

วิธีแก้ปัญหา : เขียน Test Cases หรือ Test Script ช่วยทำให้ค้นพบบัคได้เร็วขึ้น แล้วก็คุยความต้องการให้ถูกต้อง ถ้าเป็นไปได้ออกแบบให้เป็น Dynamic และง่ายต่อการแก้ไข

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

วิธีทำ Ajax Cross Domain แบบสมบูรณ์ด้วย CodeIgniter และ jQuery

เอาละครับ วันนี้ผมได้เจอปัญหา Ajax Cross Domain อย่างจริงๆจังๆ แล้วตกผลึกความรู้ได้มาพอสมควรครับ ทุกคนผมติต่างว่ารู้จัก Web Service นะครับโดยวันนี้เราจะมาทำแบบ REST กันครับ โดยผมมาพร้อมกับปัญหาที่ผมเจอบ่อยๆมีดังนี้ครับ

  • สามารถเรียก Web Service ได้จาก Domain เดียวกัน
  • สามารถเรียก Web Service จาก Host ได้จาก localhost
  • แต่ไม่สามารถเรียกจาก host หนึ่งไปยังอีก host หนึ่งได้

หลังจากที่ผมได้ลองทำ Web Service มาหลายแบบ แบบที่ผมชอบที่สุดก็คงหนีไม่พ้นแบบ JSON แน่นอนครับ เพราะใน php มันมี function ที่ชื่อว่า json_encode ซึ่งเปลี่ยน array ของ php ไปเป็น json ให้เราได้ทันที แต่วันนี้ผมจะเอาตัวอย่างที่ผมทำผิดแล้ว วันนี้ได้เรียนรู้มาบอกต่อกันครับ ซึ่งใน php ตัวที่ผมทำ web service นั้นชอบทำแบบนี้ครับ

echo json_encode($array);

ซึ่งวิธีนี้จริงๆแล้วน่าจะใช้ได้ดีกับหมดทุกระบบแล้วนะครับ เพราะปกติถ้าใน php เรามี function นี้ครับ file_get_content ซึ่งอำนวยความสะดวกเรื่องนี้ให้เรา เสร็จแล้วเราก็ json_decode จบได้ข้อมูลมาใช้ละง่ายโคตรๆ แต่กระนั้นครับ แล้วถ้าเราจะใช้ Javascript ดึง Web Service ของเราละครับ ยิ่งถ้าใช้ jQuery ก็คงยิ่งหมูเลย

$.getJSON(url,callback);

แค่นี้ก็น่าจะเพียงพอ แต่ผลที่ได้คือ “ถ้าไม่อยู่ใน domain เดียวกัน หรือไม่มีการเปิดให้สิทธิทำ cross-domain ก็จะใช้ไม่ได้ครับ” ในที่นี้ผมหมายถึง เวลา internet explorer จะขึ้น privacy ซึ่งถ้าเราตกลง มันก็ยอมให้เราทำ cross-domain ได้ซึ่ง การใช้ json_encode ถึงเพียงพอครับ แต่พอเอาไปขึ้น host จริงๆคนอื่นที่เขาใช้ javascript ดึงก็ใช้ไม่ได้อยู่ดีแล้วเราจะแก้ปัญหาอย่างไรละ ? ผมเลยค้นหาวิธีต่างๆซึ่ง JSONP เนี้ยเป็นคำตอบ แล้วทำยังไงละ ? วันนี้ผมเอาวิธีทำมาให้เลยละกัน โดย ต้องขอบคุณ Tee++ จาก jQueryTips ซึ่งเป็นคนนำทางผมครับ ผมแนะนำให้อ่านของคุณ Tee++ ก่อนนะครับเอาละประเด็นคืออยู่ที่บรรทัดนี้ครับ

echo $_GET[‘jsoncallback’].‘(’.$json->encode($arr).‘)’; // ของคุณ Tee++ ผมข้อแก้เป็นด่านล่าง เพื่อลักษณะใกล้เคียง
echo $_GET[‘jsoncallback’].‘(’.json_encode($arr).‘)’;

ซึ่งสังเกตว่าจะใช้ . นะครับ ไม่ใช่ = แล้วจะตามวงเล็บเปิดแล้วลงท้ายด้วยวงเล็บปิด ซึ่งเป็นตามหลัก JSONP ส่วนสาเหตุที่ทำไมต้องทำเช่นนี้ ผมยังไม่แน่ใจนัก แต่อธิบายคร่าวๆได้ว่า การใช้ Ajax Cross Domain ตรงๆนั้นมันมีึความเสี่ยงสูง ดังนั้นเลยเกิด JSONP (JSON with Padding) เพื่อมาช่วย แล้วการที่เรามีการใส่ตัวแปลสักตัว ในตัวอย่างคือ jsoncallback แล้วมีการใส่วงเล็บเปิดปิดไปนั้น เืพื่อให้ทางฝั่ง Client สามารถเล่นกับข้อมูลได้สะดวก โดยถ้าเป็น jQuery ก็จะมีการใส่่  jsonp1236274532659 (แล้วแต่มันจะ genให้)แบบนี้เป็นต้น ซึ่งผลลัพธ์ตอนจบมันจะกลายเป็นประมาณนี้

jsonp1236274532659({"name":"dominixz","url":"http:\/\/dominixz.com"})

จะสังเกตว่าพอสามารถใส่อะไรลงไปข้างหน้าได้ มันจะกลายเป็น function !!! ซึ่งทำให้ทางฝั่ง client เล่นอะไรกับข้อมูลนี้ก็ได้ โดยถ้าให้ผมเดาเป็นผมกรณีนี้ใน function นั้นก็อาจมีการ set ค่าตัวแปรค่างๆหรือแม้กระทั่ง eval ข้อมูลเลยก็เป็นได้ แล้วแต่เราจะเขียน โดยถ้าใช้พวก Framework นั้นมีการจัดการกับ JSONP เกือบทุกตัวแล้วละไม่ว่าจะเป็น MooTools , jQuery , Dojo ฯลฯ อธิบายพอเห็นภาพละ แล้ววิธีเรียกใน jQuery ละทำยังไงก็ง่ายๆเลยครับ

$.getJSON(url+”?jsoncallback=?”,callback);

โดยผมมีตัวแบบจริงสักอันละกันครับ โดยถ้าผมมี Web Services ของ CodeIgniter ดังนี้ครับ http://localhost/codezend/index.php/webservices/test ดังนั้นโค้ดนี้ผมจะได้ url เป็นดังนี้ครับ

$.getJSON(“http://localhost/codezend/index.php/webservices/test?jsoncallback=?”,callback);

ซึ่งใน web service ของผมก็ต้องมีการ set ค่า jsoncallback เหมือนกันไม่งั้นก็ใช้ไม่ได้ โดยถ้าไม่ได้ใช้ CodeIgniter แค่นี้ก็คงจบบทความแล้วแต่ CodeIgniter ถ้าทำแค่นี้ไม่ได้แน่ครับ เพราะเจ้า CodeIgniter ดันไม่ยอมให้ใส่ ?jsoncallback=? อย่างงี้ตอนเริ่มต้นได้นี้สิ โดยถ้าต้องการใช้เราจะต้องไป set ใน config.php ให้ enable_query_strings เป็น TRUE ซะก่อนนะครับ

$config['enable_query_strings'] = TRUE;

เป็นอันจบครับ ไว้ผมมีประสบการณ์อะไรเพิ่มเติมจะนำมาเล่าต่อครับผม วันนี้ไปนอนแล้วครับสวัสดีครับ

ใช้ JSP ติดต่อฐานข้อมูล Microsoft SQL Server 2005 แบบ SQL Authenticate

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

พอคุณมีครบทั้ง 3 อย่างแล้วให้สร้าง project ใน Netbeans เป็น Web Application เสร็จแล้วให้เราเพิ่ม Library เข้าไปใน Project นั้นคือ sqljdbc.jar แล้วคราวนี้เราก็เริ่มวิธีการติดต่อกันเลยครับ โดย Code นี้เป็นตัวอย่างครับ

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<%
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;user=domesterz;password=1234;");
Statement cstmt=con.createStatement();
ResultSet rs=cstmt.executeQuery("SELECT * FROM users");
if(con !=null){
if(rs != null){
while(rs.next()){
String user = rs.getString("username");
String password = rs.getString("password");
out.print(user);
out.print(password);
}
}
}else{
out.println("Connect Database Failed");
}
con.close();
%>
</body>
</html>

และจริงๆ Code แค่นี้สมควรที่จะต่อเข้าฐานข้อมูลได้แล้ว แต่ไม่ครับสำหรับ เพราะเราอาจะเจอ Error หลายๆอย่าง อย่างเช่น TCP/IP อะไรสักอย่าง อันนี้ให้ไปเปิด Port 1433 (ถ้าจะใช้ตามตัวอย่าง) ใน SQL Configuration Management -> SQL Server 2005 Network Configuration -> TCP/IP ไปที่ IP Addresses -> IPAll ตรง Port ให้เขียน 1433 แต่ยังไม่จบครับ

เพราะปกติเวลาเรา Install SQL Server 2005 ครั้งแรกเราจะเข้าไปฐานข้อมูลแบบ Windows Authenticate ดังนั้นเราต้องไปสร้าง Account เพื่อใ้ช้ SQL Authenticate ใน SQL Server Management Studio Express (อันนี้คือของผมเป็น version Express เลยมีคำว่า Express) เสร็จแล้วให้เรา connect แบบ Windows Authenticate ไปก่อน แล้วเข้า Security -> กด mouse ขวาีที่ Logins เลือก New Login จากนั้นก็ใส่ username เปลี่ยนเป็น SQL Authenticate เลือก Database , Language ตามใจ แต่สำหรับ version Express เราต้องเอา “User must change password at next login” ออกเพราะไม่มี Feature นี้ใน Express ไม่งั้นเมื่อกด OK จะ Error

เมื่อได้ User มาแล้วอย่าพึงลองโดยทันที ในฐานข้อมูลเรามีเรื่องสิทธิเข้าถึงข้อมูล ดังนั้นเราต้องไปตั้ง User ของเราให้มีสิทธิเข้าใช้งาน Database ของเรา โดยไปแก้ได้ที่ตัว Database ของเราได้เลยโดย mouse ขวาที่ Database ของเราสักตัวแล้วเลือก Properties -> Permissions เสร็จแล้วจะเห็น User ที่เราสร้างขึ้นมาใหม่ แล้วคราวนี้ก็ลองเลือกเลยครับจะให้ user นี้ทำอะไรได้มั่ง โดยผมก็เลือกแค่หลักๆคือ SELECT INSERT UPDATE DELETE เป็นอันเสร็จพิธีคร่าวนี้เราลอง Run App ของเีราที่ลองต่อ Database ได้เลยครับ

ปล. อาจจะเยอะสักหน่อยนะครับ แต่ผลที่ำได้ก็น่าพอใจใช้ไหมละ :D

Ruby และ Rails Autocomplete สำหรับ Notepad++

หลังจากที่สำรวจแล้วก็งงๆ ว่าทำไมไม่มีใครแจกเจ้า Autocomplete ของ Ruby หรือ Rails ใน Notepad++ ออกมาเลยมีแต่ API มาให้ ผมเลยทำต่ออีกนิดเพื่อให้นำไปลงใน Notepad++ แล้วใช้ได้เลย โดยทุกท่าน สามารถ Download Ruby.xml File ได้ที่นี้ครับ ส่วนใครที่กดเข้าไปเป็น xml ไฟล์ก็กด Save As ได้เลยนะครับ

โดยวิธีติดตั้งใน Notepad++ นะครับ

  1. เอาไฟล์ ruby.xml ไปวางไว้ที่ notepad++_folder/plugins/APIs เช่นของผมก็คือ
    “C:\Program Files\Notepad++\plugins\APIs
  2. ถ้าคุณเปิด Notepad++ ให้ปิดแล้วเปิดใหม่
  3. ลองเปิดโปรเจคที่เป็น .rb ของคุณหรือไม่ก็ new อันใหม่ขึ้นมาแล้วเลือกภาษาเป็น ruby
  4. กด Ctrl+Space แล้วจะเห็น

ง่ายๆแค่นี้เองครับ ไม่รู้ว่ามีใครทำยัง แต่หาแล้วไม่เจอเลยเซร็งๆทำเองเลย แต่เจ้าตัวนี้ยังไม่ฉลาดมาก คือยังไม่บอกว่าต้องใส่ Parameters อะไรต่างๆนาๆ แต่ก็ทำให้ผมเขียนเร็วขึ้นเยอะ แถมโหลดเร็วไม่เสียอารมณ์ด้วยครับ :) ไม่ต้องไปใช้ Ruby IDE ต่างๆที่โหลดนานเพียงต้องการแก้ไฟล์เพียงนิดๆหน่อยเท่านั้น

« Previous PageNext Page »