Wednesday, May 30, 2012

මීදුම් දුමාරයේ


මීදුම් දුමාරයේ සීත හැන්ඳෑ යාමේ සිහින ඇන්ද සානුවේ
ආශා නැතිද මාත් එක් තනිව ඉන්න
කොළ පාට හැරුණු ඈත නිම්නයේ
කොළ පාට හැරුණු ඈත නිම්නයේ


නිශා නිම්න ඇහැරවා මල් බිඟුන්ටත් හොරා
ආශා නැතිද මාත් එක් තනිව ඉන්න
කොළ පාට හැරුණු ඈත නිම්නයේ
කොළ පාට හැරුණු ඈත නිම්නයේ


වලාවකින් හැඩදමා කූඩාරමක් එහි තනා
ආශා නැතිද මාත් එක් තනිව ඉන්න
කොළ පාට හැරුණු ඈත නිම්නයේ
කොළ පාට හැරුණු ඈත නිම්නයේ


මීදුම් දුමාරයේ සීත හැන්ඳෑ යාමේ සිහින ඇන්ද සානුවේ
ආශා නැතිද මාත් එක් තනිව ඉන්න
කොළ පාට හැරුණු ඈත නිම්නයේ
කොළ පාට හැරුණු ඈත නිම්නයේ


Sunday, May 20, 2012

nodejs

මම අද කියලා දෙන්න යන්නේ අලුත්ම සීන්කෝන් එකක් ගැන. අලුත් කිවුවට ඉතින් මේක අලුත්මත් නෑ. හැබැයි ගොඩක් කස්ටියට මේක ගැන එච්චරම අවබෝධයක් නෑ (මටත් කියලා ඉතින් එහෙමම idea කියලා එකක් නෑ. මම try කරන්නේ මාත් ඉගෙනගනිමින් කස්ටියට කියලා දෙන්න.)
වැඩි බයිලා ඕනේ නෑනේ ඉතින්, මම කස්ටියට කියලා දෙන්න යන්නේ nodejs ගැන. සමහර කස්ටියට js කියන කෑල්ල දැක්ක ගමන් මීටර්වෙන්නැති මේක මොකක් හරි js සීන් එකක් කියලා (ඒ කියන්නේ javascript සීන් එකක් කියලා). කස්ටියට එහෙම හිතුනනම් හරි.





අපි දැන් බලමු මොකද්ද මේ nodejs කියන්නේ කියලා

කස්ටිය හැමෝම වගේ දන්නවා ඇති සාමාන‍ය්‍යයෙන් අපි javascript use කරන්නේ client side scripting වලට කියලා. ඒ කියන්නේ cleint ගේ පැත්තේ එහෙමත් නැත්නම් webbrowser එකේ validate කරන්න වගේ මොනවා හරි දෙයක් කරන්න. හැබැයි traditional javascript එහෙම උනාට nodejs අපි use කරන්නේ server side එකේ.
සරලවම කිවුවොත් nodejs කියලා කියන්නේ ගූගල් (Google) සමාගමේ ඉතා ජනප්‍රිය ( ඒ උනාට අම්බානේට memory කන ) Google chrome webbrowser එකේ javascript engine එක උඩ ඒ කියන්නේ v8 උඩ build කරපු javascript platform එකක්. (v8 javascript engine එක ගැන වැඩි විස්තර ඕනේ කස්ටියට මෙන්න මේ link v8 javascript engine එකට ගිහින් බලාගන්න පුලුවන් )
nodejs use කරන්නේ ඉතා පහසුවෙන්, වේගවත් ඒ වගේම පහසුවෙන් scale කරන්න පුලුවන් network application හදන්න. (Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications)
nodejs වල use කරන්නේ event-driven කියන programming paradigm එක. ඒ කියන්නේ කාටත් තේරෙන සිංහලෙන්  කිව්වොත් program එකේ flow එක (program flow කියලා කියන්නේ program එක කොයි පිළිවලටද execute/run වෙන්නේ කියන එක) තීරණය වෙන්නේ සිද්ද වෙන event මත. ඒ වගේම nodejs use කරනවා දැන් අවුරුදු කීපයකට කලින් ජනප්‍රිය වෙච්ච  NIO එහෙමත් නැතිනම් Non-blocking IO කියන concept එක. මෙන්න මේ සීන් ටික නිසා nodejs පට්ට speed. ඒ නිසා eBay, Linkedin, Yahoo, Microsoft වගේ comapny වල realtime applications දැන් nodejs use කරනවා.

දැන් කස්ටියට නිකං නිදිමතයි වගේනම් අපි nodejs use කරගෙන හැමදාම කරනවා වගේ "හලෝ ලෝකය - Hello world" ගහලා බලමු.
අපිට nodejs run කරගන්න nodejs install ,text edit කරන්න පුලුවන් මොකක් හරි text editor එකකුයි, javascript  run වෙන මොකක් හරි webbrowser එකක් තියනවානම් වැඩිත් එක්ක.
nodejs installer එක කස්ටියට මෙන්න මේ nodejs installer link එකෙන් download කරගෙන install කරගන්න පුලුවන්.

එහෙම install කරගත්තට පස්සේ අපි environment variable path එක set කරගන්න එක ලේසියි. එහෙම නැතිනම් හැම තිස්සෙම nodejs install කරලා තියන location එක දෙන්න වෙනවා. path එක set එක දෙයක් ඇත්තෙම නෑ. java path එක set කරනවා වගේම තමයි. වෙනසකට තියෙන්නේ අපි path එක විදියට C:\Program Files\Java\jdk1.7.0_03\bin"" වෙනුවට දෙන්නේ අපෙ node js install කරල තියන floder location එක. මගේ machine එකේ විදියටනම් "C:\Program Files (x86)\nodejs" කියලා. (කස්ටියට path එක set කරන විදිය ගැන ideA එකක් නැත්නම් මම ජාවා වල path එක set කරන විදිය ගැන ලියලා තියන post එක බලන්න ---> How to set jdk path in windows 7 )

Saturday, May 5, 2012

LOVE

ආසයි තුරුලටම වී ඉන්න නුඹගේ
සිප ගන්න නුඹේ ඔය උවනත
විඳගන්න ගතින් හමනා සුවඳ

මද සුළඟේ දඟ කරන 
නුඹේ ඔය කෙහෙරැලි ඇඟිලි තුඩින් පිරිමදිමින්
අතිනත පටලවාගෙන 
ඇවිදින්න ලෝකය පුරාවට

සිටින විට මගේ උරහිසේ නුඹේ හිස හොවාගෙන
මගේ ලය මත හිස තබාගෙන
ඕනෑ නොවේ කිසි දෙයක් මට නුඹ හැර
ආදරෙයි මම නුඹ හට සසර පුරාවට 

Friday, January 20, 2012

java - keywords (still under construction)

ජාවා keywords ගැන තමයි අද කතා කරන්නේ.
හරියටම keywords මෙච්චරක් තියනවා කියන්න විදියක් නෑ. හැබයි පොදුවේ ගත්තොත් keywords 50 -60 ත් (50 in Java 1.5) අතර ප්‍රමාණයක් තමයි තියෙන්නේ. පහල තියන list එකේ තියනවා keywords ටික. මෙතන ඔක්කොම keywords තියනවා කියන එක නම් මම gurantee කරන්නෑ.
මේ එකින් එක ගැන විස්තර කරන්න නම් අමාරුයි. මම කියන්නම් class වලට, methods  වලට හා වලට කරන්න පුලුවන් ගැන. පස්සේ වෙලාව තිබුනොත් අනික් ගැනත් ලියන්නම්
  1. abstract
  2. continue
  3. for
  4. new
  5. switch
  6. assert
  7. default
  8. goto
  9. package
  10. synchronized
  11. boolean
  12. do
  13. if
  14. private
  15. this
  16. break
  17. double
  18. implements
  19. protected
  20. throw
  21. byte
  22. else
  23. import
  24. public
  25. throws
  26. case
  27. enum
  28. instanceof
  29. return
  30. transient
  31. catch
  32. extends
  33. int
  34. short
  35. try
  36. char
  37. final
  38. interface
  39. static
  40. void
  41. class
  42. finally
  43. long
  44. strictfp
  45. volatile
  46. const
  47. float
  48. native
  49. super
  50. while

අපි මුලින්ම බලමු  class වලට use කරන්න පුලුවන් keywords මොනවාද කියලා.
එහෙම keywords 5ක් තියනවා
ඒ keywords 5 කොටස් දෙකකට බෙදන්න පුලුවන්.
1. access modifiers
2. non-access modifiers

access modifiers යටතේ තියෙන්නේ keywords දෙකයි.
public, default

non-access modifiersයටතේ තුනක් තියනවා
strictfp, final, abstract

public, default කියන keywords දෙක ගැනනම් ආයි කතාකරන්න ඕනේ නෑ. ඒ දෙක ගැන java - access modifiers http://alokayasoya.blogspot.com/#!/2012/01/java-access-modifiers.html එකේ ලියලා ඇති.

මුලින්ම බලමු strictfp කියන keyword එක ගැන. මේක classes වලට වගේම methods වලටත් use කරන්න පුලුවන්. මේ keyword එක use කලාම JVM එක floating point values handle කරන්නේ IEEE-754 floating-point specification එකට අදාලව තමයි.

Tuesday, January 17, 2012

Eyes wants to sleep

My eyes need to sleep coz it was so hard to looking at monitor for about 10 hours @ work and now @ home. But still heart wants to wait to see someone online

Sunday, January 15, 2012

ලමැදේ හුස්මක් පවා

වැසිදාක තුරු යාය පීරා
අතුරාන පිණි සිත සීරා
දෑස හමුවේම උතුරාන දුටුවා එදා
හාද වී රෑ පුරා

ලමැදේ හුස්මක් පවා
ආලේ කලා ආසයි කියා

වැසිදාක තුරු යාය පීරා
අතුරාන පිණි සිත සීරා
ආයාචනා සීතේ ගලා
ආශා මවා මාගේ වෙලා
ආවා සිත දා පාවිලා
රෑ විලා.........
රෑ හීන පාසා වෑහේවි ආශා
මා හා....

ලමැදේ හුස්මක් පවා
ආලේ කලා ආසයි කියා

මේ චෝදනා දෑසේ පුරා
ආවා සොයා යායේ සරා
නාඩා දෑස හා
යාවෙනා
මේ හීන සේනා ආයේම ඕනා
මා හා.....

ලමැදේ හුස්මක් පවා
ආලේ කලා ආසයි කියා

සඳ පාන සඳ රේණු නාවා
හිත මාගේ සබකෝල වීලා
මගේ තුරුලේම
කොඳුරාන නොකියූ කතා
දෑස පියවී ගියා......

ලමැදේ හුස්මක් පවා
ආලේ කලා ආසයි කියා

Java - Simple console chat app

මෙන්න මචං මගේ ගානේ ජාවා වලට කැමති කට්ටියට සරල Chat application එකක්. කට්ටියට පොඩි පොඩි changes ටිකක් කරලා පට්ට chat එකක් හදා ගන්න මේක උදව්වක් වෙයි කියලා හිතනවා.
මෙන්න server එකේ code එක.

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Thusitha
 */

public class Server {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(12345);
            while (true) {
                Socket incoming = serverSocket.accept();
                Runnable r = new ThreadedServer(incoming);
                Thread t = new Thread(r);
                t.start();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class ThreadedServer implements Runnable {
    private Socket incoming;
    private Scanner type = new Scanner(System.in);
    private Scanner reader;
    private PrintWriter writer;
    public ThreadedServer(Socket i) throws IOException {
        incoming = i;
        reader = new Scanner(incoming.getInputStream());
        new Thread(new Runnable() {
            public void run() {
                try {
                    InputStream inStream = incoming.getInputStream();
                    while (incoming.isConnected()) {
                        while (reader.hasNext()) {
                            System.out.println(reader.nextLine());
                        }
                    }
                } catch (IOException ex) {
                    Logger.getLogger(ThreadedServer.class.getName()).log(Level.SEVERE, null, ex);
                }
                try {
                    Thread.currentThread().sleep(1000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(ThreadedServer.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }).start();
        new Thread(new Runnable() {
            public void run() {
                try {
                    OutputStream outStream = incoming.getOutputStream();
                    writer = new PrintWriter(outStream, true);
                    while (incoming.isConnected()) {
                        writer.println(type.nextLine());
                    }
                } catch (IOException ex) {
                    Logger.getLogger(ThreadedServer.class.getName()).log(Level.SEVERE, null, ex);
                }
                try {
                    Thread.currentThread().sleep(1000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(ThreadedServer.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }).start();
    }
    public void run() {
    }
}
මුලින්ම මේ code එක notepad file එකට copy කරලා Server.java කියලා java file විදියට save කරගන්න. ඊට පස්සේ පහල තියන code එක වෙන notepad file එකකට  copy කරලා Client.java විදියට save කරගන්න. අන්තිමට files දෙකම compile කරගන්න.

මෙන්න client එකේ code එක.
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author Thusitha
*/

class Client {
    private Scanner clientReader;
    private Socket s;
    private PrintWriter clientwriter;
    private Scanner clientType = new Scanner(System.in);
    public Client() {
        try {
            s = new Socket("localhost", 12345);
            clientReader = new Scanner(s.getInputStream());
            new Thread(new Runnable() {
                public void run() {
                    while (s.isConnected()) {
                        while (clientReader.hasNext()) {
                            System.out.println(clientReader.nextLine());
                        }
                    }
                    try {
                        Thread.currentThread().sleep(1000);
                    } catch (InterruptedException ex) {
                        Logger.getLogger(ThreadedServer.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }).start();
            new Thread(new Runnable() {
                public void run() {
                    try {
                        OutputStream outStream = s.getOutputStream();
                        clientwriter = new PrintWriter(outStream, true);
                        while (s.isConnected()) {
                            clientwriter.println(clientType.nextLine());
                        }
                    } catch (IOException ex) {
                        Logger.getLogger(ThreadedServer.class.getName()).log(Level.SEVERE, null, ex);
                    }
                    try {
                        Thread.currentThread().sleep(1000);
                    } catch (InterruptedException ex) {
                        Logger.getLogger(ThreadedServer.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            }).start();
        } catch (UnknownHostException ex) {
            Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    public static void main(String[] args) throws Exception {
        new Client();
    }
}

දැන් අපිට මේක test කරන්න පුලුවන්. මුලින්ම Server.java file එක run කරන්න. ඊට පස්සේ අලුතෙන් command prompt එකක් open කරලා Client.java file එක run කරන්න. දැන් මොනවා හරි type (ටයිප්) කරලා Enter ඔබලා බලන්න. ටයිප් කරන ටික අනික් command prompt එකේ පේනවා.

එහෙනම් කට්ටියට ජය වේවා