import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet( name="TestRunnable", urlPatterns={"/TestRunnable"}, loadOnStartup=1 ) public class TestRunnable extends HttpServlet implements Runnable { }
13 December 2011
Background Process with Servlet
ที่ใส่ with servlet ไว้ด้วยในหัวเพื่อบอกว่าผมยังจะ extends HttpServlet เหมือนเดิมในคลาสผม แต่ว่าจะทำให้มันทำงานอยู่แม้จะไม่ได้มีรีเควสเข้าไปที่ Servlet ตัวนั้นก็ตาม โดยสิ่งที่ผมจะทำคือการ implement Runnable เข้ามา ตามข้างล่าง
09 December 2011
Abstract Class VS Interface
Abstract Class
abstract class เป็นคลาสที่จะมี abstract method อยู่ด้วยหรือไม่ก็ได้
abstract class เป็นคลาสที่จะมี abstract method อยู่ด้วยหรือไม่ก็ได้
abstract class Test{ public String a(){ return "hello"; } public abstract String b(); }
06 December 2011
GenericServlet VS HttpServlet
javax.servlet.GenericServlet
Signature : public abstract class GenericServlet extends java.lang.Object implements Servlet, ServletConfig, java.io.Serializable
- GenericServlet จะประกอบไปด้วย protocal พื้นฐานใน Servlet
- GenericServlet จะมีต้นแบบ(พิมพ์เขียว) สำหรับการใช้งาน Servlet
- Lifecycle ของ GenericServlet จะอยู่กับ init และ destroy และ method ใน ServletContext interface
- GenericServlet สามารถทำงานผ่านการ Override service method
javax.servlet.http.HttpServlet
Signature : public abstract class HttpServlet extends GenericServlet implements java.io.Serializable
- HttpServlet จะประกอบด้วย protocal Http เท่านั้น
- HttpServlet จะมีต้นแบบ(พิมพ์เขียว) สำหรับการใช้งาน Http
- HttpServlet extend มาจาก GenericServlet
- HttpServlet สามารถใช้ session และ cookie ได้
- HttpServlet ทำงานผ่าน doGet() doPost() doXXX()
Signature : public abstract class GenericServlet extends java.lang.Object implements Servlet, ServletConfig, java.io.Serializable
- GenericServlet จะประกอบไปด้วย protocal พื้นฐานใน Servlet
- GenericServlet จะมีต้นแบบ(พิมพ์เขียว) สำหรับการใช้งาน Servlet
- Lifecycle ของ GenericServlet จะอยู่กับ init และ destroy และ method ใน ServletContext interface
- GenericServlet สามารถทำงานผ่านการ Override service method
javax.servlet.http.HttpServlet
Signature : public abstract class HttpServlet extends GenericServlet implements java.io.Serializable
- HttpServlet จะประกอบด้วย protocal Http เท่านั้น
- HttpServlet จะมีต้นแบบ(พิมพ์เขียว) สำหรับการใช้งาน Http
- HttpServlet extend มาจาก GenericServlet
- HttpServlet สามารถใช้ session และ cookie ได้
- HttpServlet ทำงานผ่าน doGet() doPost() doXXX()
01 December 2011
เรื่องของ Path
path คือการอ้างถึงตำแหน่งเส้นทางโดยในการเขียนโปรแกรมนั้น path คือการเรียกตำแหน่งต่างๆของโปรแกรม หรือ sub folder โดยจะมี
Relative path เป็นการเรียก path แบบมีความสัมพันธ์กัน เช่น
เรามีโปรแกรมอยู่ c:\myapp\app.exe แล้ว app.exe ทำการเรียก path ./data/data.txt นั้นก็หมายความว่าโปรแกรมเรียกไปที่ c:\myapp\data\data.txt
Absolute path คือการกำหนดชื่อ path แบบเต็มโดยจะบอกตั้งแต่ root เช่น
c:\myapp\data\data.txt
Relative path เป็นการเรียก path แบบมีความสัมพันธ์กัน เช่น
เรามีโปรแกรมอยู่ c:\myapp\app.exe แล้ว app.exe ทำการเรียก path ./data/data.txt นั้นก็หมายความว่าโปรแกรมเรียกไปที่ c:\myapp\data\data.txt
Absolute path คือการกำหนดชื่อ path แบบเต็มโดยจะบอกตั้งแต่ root เช่น
c:\myapp\data\data.txt
09 November 2011
Event Driven Programming
แต่ถ้าหากเป็นโปรแกรมขนาดใหญ่ที่มีความซับซ้อนแล้วการเขียนโปรแกรมแบบ Structure Programming นั้นคงเป็นเรื่องยาก ซึ่ง Event Driven Programming ก็คือแนวคิดที่มาจัดการด้านนี้โดยแนวคิดนี้จะสนใจแค่ว่าถ้าเกิดเหตุการณ์ขึ้นมาแต่ละอย่างจะจัดการกับมันอย่างไร โดยไม่สนใจว่ามีอะไรเกิดขึ้นกับโปรแกรมบ้าง ทำให้สามารถโฟกัสไปยังสิ่งที่ต้องการจัดการและจัดการมันได้อย่างง่าย....
โดยถ้าหากเราต้องการแก้ไขระบบเราก็ไม่ต้องไปสนใจส่วนที่ไม่เกี่ยวข้อง แต่ถ้าหากเป็น Structure Programming อาจจะต้องคิดใหม่หมด หรือถึงขั้นรื้อระบบใหม่กันเลยทีเดียว....
14 June 2011
Change Computer Name On Ubuntu Desktop
Step 1. run gksudo gedit /etc/hostname /etc/hosts
Step 2. Change your computer name in two files.
Step 3. Restart.
02 May 2011
HTML::Template 2
<tmpl_if> กำหนดเงื่อนไขใน template
if.pl
#!c:\perl\bin\perl.exe use HTML::Template; my $tmpl = HTML::Template->new(filename=>'tmpl/if.tmpl'); $tmpl->param(bool=>1); print "Content-type:text/html\n\n",$tmpl->output();
if.tmpl
<html> <head> <title>if</title> </head> <body> <tmpl_if name="bool"> is true <tmpl_else> is false </tmpl_if> </body> </html>
<tmpl_unless> ใช้งานเหมือนกับ <tmpl_if> แต่เป็นเงื่อนไขที่ตรงกันข้าม(opposit)
Subscribe to:
Posts (Atom)