Object Oriented Language විදියට අපි JAVA භාවිතා කරන විට Inheritance කියන්නේ වැදගත් දෙයක්.එතනදී method එකක් නියමාකාරයෙන් override කරන විදියත් ඒ overrided method එකට call කරද්දී වෙන දේත් නිවැරදිව දැන සිටීමත් වැදගත්.සරලවම කිව්වොත් method overrding එකක් අපිට අවශ්ය වෙන්නේ parent class එකේ තියෙන method එකක වෙන දේ යම්කිසි වෙනස් ආකාරයකින් child class එකක කරගැනීමයි.මම කතා කරන්න යන්නේ method name and return types එකම වෙන්න ඕන යනාදී කරුණු ගැන නොව ඒ method එකට call කරද්දී සැලකිලි විය යුතු දෙයක් ගැනයි.
public class A{
public void m(){
System.out.println("A");
}
}
class B extends A{
public void m(){
System.out.println("B");
}
public static void main(String args[]){
A x1 = new A();
B x2 = new B();
A x3 = new B();
x1.m();// 1
x2.m();// 2
x3.m();// 3
}
}
ඉහත දැක්වෙන්නේ method overriding ගැන සරල උදාහරණයක්.මෙහිදී අපට ලැබෙන output එක තමයි පිලිවෙලින් A,B සහ B.1 සහ 2 අවස්ථා නම් ඉතා පැහැදිලිය.නමුත් 3 අවස්ථාවේ Parent class reference එකකින් Child class object එකක් refer කරගෙන ඉන්න අවස්ථාවක්.එහෙම refer කරන එක සම්බන්ධයෙන් නම් කිසිම ගැටළුවක් නෑ.ඒත් output එක B දෙන්නේ ඇයි?
මෙහිදි වන්නේ compile time එකේදි m() කියන method එක parent class එක තුල තිබෙනවාදැයි මුලින්ම බලනවා.ඒ කියන්නෙ compile time එකේදී බලන්නේ reference type class එක තුල m() කියන method එක තියනවාද බලන එකයි.ඉන්පසු runtime එකේදී බලන්නේ object type class එක තුල ඒ method එක තියෙනවාද බලලා ඒක run කරන එකයි.මෙතනදී 3 අවස්ථාවේ object type class එක වෙන්නේ B. එහෙමත් නැතිනම් sub class එක.
පහත දැක්වෙන උදාහරණයේ method overriding එකක් නැති වුනත් ඉහත සිද්ධාන්තයට අනුව අපිට දෙන්නේ compilation error එකක්.
public class A{
}
class B extends A{
public void m(){
System.out.println("B");
}
public static void main(String args[]){
A x3 = new B();
x3.m();
}
}
ඒක හින්දා object type එක දිහා බලලා විතරක් අපිට හම්බෙන output එක ගැන කියන්න බෑ.ඒ මොකද compile time එකේදී බලන්නේ reference type එක නිසා.
මේ ආකාරයේ ගැටළුවක් මාගේ මිතුරෙකුට දිවයිනේ ප්රසිද්ධ software company එකකින් JAVA සම්බන්ධ සම්මුඛ පරීක්ෂණයකදී අහලා තිබුනා.IDE එකකින් develop කරද්දී නම් එච්චර වැදගත් දෙයක් නූනත් අර වගේ අවස්ථාවකදී හෝ දැනසිටීම වැදගත් කියා සිතුන නිසායි බ්ලොග් එකට ලිව්වේ.
Tuesday, November 24, 2009
Monday, October 26, 2009
JAVA Timer Task පිලිබඳ ගැටළුවක්
Java Applications(Standalone/Enterprsie) වලදී අපිට නිතරම අවශ්ය වන කාර්යයක් තමයි Scheduling.ඒ කියන්නේ මොකක් හරි task එකක් නියමිත වේලාවක හෝ යම්කිසි සංඛ්යාතයකින් ක්රියාත්මක කිරීමට.මේ සඳහා අපිට Java Timer Task හෝ ජනප්රිය 3rd party component එකක් වෙන Quartz Scheduling (http://www.opensymphony.com/quartz/)භාවිතා කරන්න පුලුවන්.පහත දැක්වෙන්නේ ඉතාමත් සරල ආකාරයට පැය 4ට වරක් ක්රියාත්මක වීම සඳහා ලියන්න පුලුවන් java code block එකක්.
Timer timer1 = new Timer();
timer1.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("Timer Task is Running...");
//your task can be done here
}
}, new Date(), 240 * 60 * 1000);
මා විසින් මේ ආකාරයට ක්රියාත්මක වෙන timer task එකක් web application එකක අන්තර්ගත කලා.එය හොස්ට් කලාට පසුව ඉතාමත් කාර්යක්ශමව පැය 4ට වරක් හොඳින් ක්රියාත්මක වුනා.නමුත් මාස කීපයකින් server log එක බලන විට මෙය ක්රියාතමක වීම නතර වී ඇති බව මට නිරීක්ෂණය වුනි.Documentations වල ඉඳලා ගොඩාක් දේවල් නැවත බැලුවා මෙයට හේතු වන්න ඇත්තේ කුමක්ද කියලා.
පසුව දැනගන්න ලැබුනා වෙනත් පුද්ගලයෙක් application එක host කරලා තිබුන server එකේ system time එක වෙනස් කරලා.ඊට පස්සේ එහෙම දෙයක් වුනාම ඒක බලපාන්න ඇති මේ අක්රියවීම සඳහා කියලා උපකල්පනය කරලා ඒ ගැන හොයද්දී තමයි මේ link එක හම්බවුනේ.
http://bugs.sun.com/view_bug.do?bug_id=4290274
Sun එකේ කට්ටිය මේක bug එකක් විදියට හඳුනාගෙන තිබුනත් තාම මේක fix කරලා නෑ.මේ bug එක වාර්තා කරලා තියෙන්නේ 1999 දී.
scheduling වලට timer tasks භාවිතා කරන අය මේ ගැටළුව දැනගෙන හිටියොත් හොඳයි කියල හිතලයි මේ සටහන ලිව්වේ.කවුරු හරි කෙනෙක් මේ සම්බන්ධයෙන් මීට පෙර මුහුන දීලා තියේනම් හෝ මේ සඳහා විසඳුමක් තියේනම් comment එකක් දාන්න.
system time එක වෙනස් නොකර සිටීම තමයි විසඳුම කියලානම් කියන්න එපා. :-)
Timer timer1 = new Timer();
timer1.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println("Timer Task is Running...");
//your task can be done here
}
}, new Date(), 240 * 60 * 1000);
මා විසින් මේ ආකාරයට ක්රියාත්මක වෙන timer task එකක් web application එකක අන්තර්ගත කලා.එය හොස්ට් කලාට පසුව ඉතාමත් කාර්යක්ශමව පැය 4ට වරක් හොඳින් ක්රියාත්මක වුනා.නමුත් මාස කීපයකින් server log එක බලන විට මෙය ක්රියාතමක වීම නතර වී ඇති බව මට නිරීක්ෂණය වුනි.Documentations වල ඉඳලා ගොඩාක් දේවල් නැවත බැලුවා මෙයට හේතු වන්න ඇත්තේ කුමක්ද කියලා.
පසුව දැනගන්න ලැබුනා වෙනත් පුද්ගලයෙක් application එක host කරලා තිබුන server එකේ system time එක වෙනස් කරලා.ඊට පස්සේ එහෙම දෙයක් වුනාම ඒක බලපාන්න ඇති මේ අක්රියවීම සඳහා කියලා උපකල්පනය කරලා ඒ ගැන හොයද්දී තමයි මේ link එක හම්බවුනේ.
http://bugs.sun.com/view_bug.do?bug_id=4290274
Sun එකේ කට්ටිය මේක bug එකක් විදියට හඳුනාගෙන තිබුනත් තාම මේක fix කරලා නෑ.මේ bug එක වාර්තා කරලා තියෙන්නේ 1999 දී.
scheduling වලට timer tasks භාවිතා කරන අය මේ ගැටළුව දැනගෙන හිටියොත් හොඳයි කියල හිතලයි මේ සටහන ලිව්වේ.කවුරු හරි කෙනෙක් මේ සම්බන්ධයෙන් මීට පෙර මුහුන දීලා තියේනම් හෝ මේ සඳහා විසඳුමක් තියේනම් comment එකක් දාන්න.
system time එක වෙනස් නොකර සිටීම තමයි විසඳුම කියලානම් කියන්න එපා. :-)
Tuesday, October 20, 2009
Google හදිය
ගිය සතියේ අපේ කාලිංග ඇතුලත්මුදලි(http://sinhala.kalingasblog.com/) අයියා හමුවුන වේලාවක පොඩි කතා බහක් ඇති වුනා Google නැතුව වැඩ කරන්න පොඩි ට්රයි එකක් දෙන්න පුලුවන්ද කියලා.අඩුම ගානේ දවසක්.මාත් ටිකක් කල්පනා කරලා බැලුවා එහෙම පුලුවන්ද කියලා.ඒත් ටිකක් වෙලා හිතලා බලනකොට තමයි තේරුනේ ඒක නම් හීනයක් කියලා.මොකද ඒ තරමටම අපි ඒකට ඇබ්බැහි වෙලා ඉවරයි.
මං ඊට පස්සේ තවත් ටිකක් කල්පනා කරනකොට මතකයට ආවා දැනට අවුරුදු දහයකට විතර කලින් මං Google කියලා එකක් අහලවත් තිබුනාද කියලා.ඇත්තටම නෑ.කාලය කා දමන්න NetCafe එකකට රිංගනකොට යන්තම් අහලා තිබුනේ Yahoo ගැන විතරයි.ඒකත් පාවිච්චි කරේ මේවා තමයි Search Engine කියලා හිතාගෙන නෙමේ.Yahoo ගැනත් කිව්වේ දවසක් NetCafe එකේ මට එහා පැත්තේ ඉන්දගෙන හිටපු යාලුවෙක්.අමාරුවෙන් අකුරු ගලපමින් URL ටිකක් ටයිප් කරන්න දඟලනවා දැකලායි ඒකත් කියලා දුන්නේ.
ඊට පස්සේ පරිගණක විද්යාව හදාරන්න හීනෙකින් වත් හිතපු නැති මට A/L විභාගයේ ප්රතිඵල අනුව ඒක හදාරන්නත් වුනා.ආපු කාලේ මෙලෝ රහක් නෑ.Game එකක් ගහන්නයි තව පොඩි වැඩ ටිකකටයි විතරයි මට ඒ කාලේ පරිගනකයක් ඕන වුනේ.කොහොමෙන් හරි යාලුවෙක් මට Yahoo Email Account එකකුත් හදල දුන්නා.ඒ කාලේ වෙනකොටත් Google ගැන මෙලෝ idea එකක් තිබුනේ නෑ.Email හදන්න දෙන්නෙත් මොකක්දෝ invitation ක්රමයකට කියලායි අහන්න ලැබුනේ.ඔන්න අවුරුද්දකට විතර පස්සේ search engine එකක් කියන්නේ මොකක්ද කියලත් පොඩ්ඩක් දැනගත්තාට පස්සේ google.com පාවිච්චි කරන්න ගත්තා.වැඩේ ටිකක් අල්ලලා ගියා.ටිකෙන් ටික දවසින් දවස Google search engine එක විතරක්ම පාවිච්චි කරන්න ගත්තා.ඊට පස්සේ Yahoo පාවිච්චි කරන ඒක නතර වෙලා ඒක නැත්තටම නැති වෙලා ගියා.
පස්සේ හාහාපුරා කියලා invitation ක්රමය ඉවර වුනාට පස්සේ Google email account එකකුත් හදාගත්තා.ඒත් මාස පහක් හයක් යනකන් primary එක වුනේ yahoo.හැබැයි මං වත් දන්නැතුව primary එක Google වලටත් secondary එක yahoo එකටත් මාරු වුනා.අදටත් කල්පනා කරන්නේ ඒක වුනේ කොහොමද කියලා.දැන් ඉතින් සතියකට එක සැරයක් වාගේ තමයි Yahoo account එකට යන්නේ, ඒත් නිකමට හරි browser එකක් open කරගත්තාම Google account එකටනම අනිවාර්යෙන්ම යනවා.මොනාවුනත් තාම ගිනිහිවලා අතෑරලා Google Chrome වලටනම් මාරුවුනේ නෑ.ඒ වගේම දැන් මාස දහයක විතර ඉඳලාම මගේ Software Development කටයුතු සිද්ධවෙන්නේත් Google Apps සම්බන්ධවයි.ඒ සඳහා Google විසින් වෙනම API දීලා තියෙනවා.full interesting වැඩක්.ඉදිරියෙදි ඒ ගැන වෙනම බ්ලොග් එකක් ලියන්න හිතන් ඉන්නේ.අන්තිමේට මගේ බ්ලොග් එකේ දත්ත රැස් කරන්න භාවිතා වෙන්නෙත් Google Analytics.
මටනම් හිතෙන්නේ Google වල තියෙන simplicity එක තමයි මේකට ගොඩක්ම බලපානවා ඇත්තේ කියලයි.Simplicity is better than Complexity කියලා පොඩි කියමනකුත් තියෙනවානේ.හැබැයි Google කට්ටිය බැරි වේලාවත් ඒ කට්ටියගේ services වලට අයකරන්න ගත්තොත් මොනවා වෙයිද?ඒක හිතන එක මේක කියවන අයට බාරයි.මේ කියන Google හදිය ඔය ගොල්ලන්ටත් වෙලාද කියලා පොඩ්ඩක් හිතලා බලන්න.
මං ඊට පස්සේ තවත් ටිකක් කල්පනා කරනකොට මතකයට ආවා දැනට අවුරුදු දහයකට විතර කලින් මං Google කියලා එකක් අහලවත් තිබුනාද කියලා.ඇත්තටම නෑ.කාලය කා දමන්න NetCafe එකකට රිංගනකොට යන්තම් අහලා තිබුනේ Yahoo ගැන විතරයි.ඒකත් පාවිච්චි කරේ මේවා තමයි Search Engine කියලා හිතාගෙන නෙමේ.Yahoo ගැනත් කිව්වේ දවසක් NetCafe එකේ මට එහා පැත්තේ ඉන්දගෙන හිටපු යාලුවෙක්.අමාරුවෙන් අකුරු ගලපමින් URL ටිකක් ටයිප් කරන්න දඟලනවා දැකලායි ඒකත් කියලා දුන්නේ.
ඊට පස්සේ පරිගණක විද්යාව හදාරන්න හීනෙකින් වත් හිතපු නැති මට A/L විභාගයේ ප්රතිඵල අනුව ඒක හදාරන්නත් වුනා.ආපු කාලේ මෙලෝ රහක් නෑ.Game එකක් ගහන්නයි තව පොඩි වැඩ ටිකකටයි විතරයි මට ඒ කාලේ පරිගනකයක් ඕන වුනේ.කොහොමෙන් හරි යාලුවෙක් මට Yahoo Email Account එකකුත් හදල දුන්නා.ඒ කාලේ වෙනකොටත් Google ගැන මෙලෝ idea එකක් තිබුනේ නෑ.Email හදන්න දෙන්නෙත් මොකක්දෝ invitation ක්රමයකට කියලායි අහන්න ලැබුනේ.ඔන්න අවුරුද්දකට විතර පස්සේ search engine එකක් කියන්නේ මොකක්ද කියලත් පොඩ්ඩක් දැනගත්තාට පස්සේ google.com පාවිච්චි කරන්න ගත්තා.වැඩේ ටිකක් අල්ලලා ගියා.ටිකෙන් ටික දවසින් දවස Google search engine එක විතරක්ම පාවිච්චි කරන්න ගත්තා.ඊට පස්සේ Yahoo පාවිච්චි කරන ඒක නතර වෙලා ඒක නැත්තටම නැති වෙලා ගියා.
පස්සේ හාහාපුරා කියලා invitation ක්රමය ඉවර වුනාට පස්සේ Google email account එකකුත් හදාගත්තා.ඒත් මාස පහක් හයක් යනකන් primary එක වුනේ yahoo.හැබැයි මං වත් දන්නැතුව primary එක Google වලටත් secondary එක yahoo එකටත් මාරු වුනා.අදටත් කල්පනා කරන්නේ ඒක වුනේ කොහොමද කියලා.දැන් ඉතින් සතියකට එක සැරයක් වාගේ තමයි Yahoo account එකට යන්නේ, ඒත් නිකමට හරි browser එකක් open කරගත්තාම Google account එකටනම අනිවාර්යෙන්ම යනවා.මොනාවුනත් තාම ගිනිහිවලා අතෑරලා Google Chrome වලටනම් මාරුවුනේ නෑ.ඒ වගේම දැන් මාස දහයක විතර ඉඳලාම මගේ Software Development කටයුතු සිද්ධවෙන්නේත් Google Apps සම්බන්ධවයි.ඒ සඳහා Google විසින් වෙනම API දීලා තියෙනවා.full interesting වැඩක්.ඉදිරියෙදි ඒ ගැන වෙනම බ්ලොග් එකක් ලියන්න හිතන් ඉන්නේ.අන්තිමේට මගේ බ්ලොග් එකේ දත්ත රැස් කරන්න භාවිතා වෙන්නෙත් Google Analytics.
මටනම් හිතෙන්නේ Google වල තියෙන simplicity එක තමයි මේකට ගොඩක්ම බලපානවා ඇත්තේ කියලයි.Simplicity is better than Complexity කියලා පොඩි කියමනකුත් තියෙනවානේ.හැබැයි Google කට්ටිය බැරි වේලාවත් ඒ කට්ටියගේ services වලට අයකරන්න ගත්තොත් මොනවා වෙයිද?ඒක හිතන එක මේක කියවන අයට බාරයි.මේ කියන Google හදිය ඔය ගොල්ලන්ටත් වෙලාද කියලා පොඩ්ඩක් හිතලා බලන්න.
Monday, September 14, 2009
CMMI Appraisal සහ පිය පදවිය
ගොඩ කාලෙකින් බ්ලොග් එකක් ලියන්න තියා බ්ලොග් එකක් බලන්නවත් කාලය නැති වුනා.ඒ තරමටම කාර්යබහුල වුනා.වෙන මොකක්වත් නිසා නෙමේ මං වැඩ කරන ආයතනයට ඇමරිකාවේ SEI(Software Engineering Institute) එකෙන් ලබාදෙන CMMI(Capability Maturity Model Integration) Certification එකේ Final Appraisal එකේ Appraisal Team Member කෙනෙක් විදියට ඉන්න වුනා.මේ appraisal එක අගෝස්තු 31 ඉඳලා සැප්තැම්බර් 11 වෙනකන් තිබුනා.මේ සඳහා වන appraisal team එකට අපේ ආයතනයෙන් මා ඇතුලු තවත් තිදෙනෙකුත් SEI එකේ විශේෂ නියොජිතයෙක්(Lead Appraisar කෙනෙක්) සහභාගී වුනා.
CMMI (http://www.sei.cmu.edu/cmmi/)ගැන කෙටියෙන් කියනවානම් ඒක ඇවිල්ල Software Process Model එකක්.CMMI යටතේ එකිනෙකට වෙන්වු Process Areas(Verifcation,Validation, Configuration Management, Organizational Process Focus,....etc) 15 ට වැඩි ප්රමානයක් වර්ගීකරනය කරලා ඒ සඳහා වෙන වෙනම specific goals හා generic goals හඳුන්වා දී තිබෙනවා.CMMI ගැන ගොඩාක් තොරතුරු ඒ සම්බන්ධයෙන් උනන්දුවක් ඇති කෙනෙකුට ගූගල් කරලා පහසුවෙන්ම හොයාගන්න පුලුවන්.වෙනත් නිෂපාදන කරන ආයතනයකට ISO සහතිකයක් ඇති වටිනාකම වගේ තමයි software company එකකට CMMI සහතිකයේ වටිනාකම.කොටින්ම මේක යම්කිසි ආයතනයක software process එක සම්බන්ධයෙන් ලබාදෙන තත්ව සහතිකයක් කීවොත් වැරදි නෑ.
CMMI appraisal එකකදී කරන්නේ ආයතනය අනුගමනය කරන software process එක CMMI තුල හඳුන්වා දී ඇති specific goals සහ generic goals සපුරා තිබෙනවාද කියලා බලන එකයි.මේ goals තුල වෙනම හඳුන්වා දී තිබෙනවා specific practices සහ generic practices කියලා වෙනම පුහුනු කොටස්.යම්කිසි goal එකක් සපුරාලන්න ඒ සඳහා වු specific and generic practices අනුගමනය කර තිබෙනවාද කියලා බලන්න ඕන.ඒ practices අනුගමනය කල බවට සාක්ෂි ලෙස document repository එකක් තියෙන්න ඕනා.appraisal එකේ මුල් සතිය තුල සම්පූර්ණයෙන් කරන්නේ මේ practice එකින් එකට අදාල සාක්ෂි document කරලද කියලා හොයන එකයි.ඊළඟ සතිය තුල කරන්නේ ඒවාගේ නිරවද්යතාවය සඳහා අවශ්ය පුද්ගලයින් සම්මුඛ පරීක්ෂණවලට භාජනය කිරීමයි.අවසානයේ සොයාගත් සියළු සාක්ෂි සලකා බලා ඒ සඳහා වූ වෙනම standard methodology එකකට ratings කිරීමක් කරනවා.ඊට පස්සේ තමයි අදාල ආයතනයට CMMI maturity level එක දීම තීරණය කරන්නේ.
මේ appraisal team එකට සහභාගී කරවන්න කලින් ඒ සඳහා මුල සිට අගටම දවස් 5ක පුහුණුවක් ලබා දෙනවා SEI එකේම නියෝජිතයෙක් විසින්.ඒ පුහුණුව හා appraisal එක කිරීම තුලින් ලැබුනු අත්දැකීම් වචනයෙන් විස්තර කරන්න බැරි තරම්.විශ්ව විද්යාල අධ්යාපන කාලය තුල software engineering සහ engineering process ගැන ඉගෙන ගන්න ලැබුනත් ඒ සඳහා ගැඹුරින් අධ්යනය කරන්න මේ ලැබුනු අවස්ථාව සෑහෙන්න වැදගත් වුනා.ඒ වගේම appraisal එක අවසානයේ මට SEI Appraisal Pool සාමාජිකත්වයත් ලැබුනා.ඒකත් ගොඩක් වැදගත් මොකද මට දැන් ලෝකේ ඕනම තැනක CMMI appraisal එක්කට සහභාගි වෙන්න නීත්යානුකූල අවසරය තියෙනවා SEI එකේ.
මේ සති දෙක තුල ඔක්කොම අත්දැකීම් අස්සේ මට ජීවිත්යේ සොඳුරුතම අත්දැකීමටත් මුහුණ දෙන්න වාසනාව ලැබුනා.ඒ තමයි මගේ පුංචි කැදැල්ලට ලස්සන රෝස පාට දූ සිඟිත්තක් එක්වෙමින් වාසනාවන්ත පිය පදවිය ලැබීම.දිනය හරියටම සැප්තැම්බර් 3 වෙනිදා හවස 5ට විතර.එදා ලැබුනු සතුට බ්ලොග් වලට හරවන්නනම් මට වචන නෑ.දූ පොඩිත්ත මං වගේමයි.තාම බැරි වුනා නමක් දාගන්න. ඒ කියන්නේ annonymous.අහුබුදු මහත්තයට කියලා දිව පැටලෙන නමක් දාගන්නවට වඩා මංම නමක් දාගන්න එක හොඳයි කියලයි හිතෙන්නෙ.මගේ අම්මා අකුරු ටිකකුත් හොයල ගෙනාවා(ගේ,ක,ත,න ).මේක කියවන අයටත් පුලුවන් හොඳ ලස්සන නම් ටිකක් යෝජනා කරන්න.ඉතින් ඔය විදියට තමයි පහුගිය දවස් ටික ගෙවුනේ.ඒකයි බ්ලොග් ලියන්න බැරි වුනේ.ඉස්සරහටත් වෙලාව හම්බෙන විදියට ආයෙත් ලියන්න ඕනා.ඒත් දැන් ඉතින් කාලය ගොඩක් ගෙවෙන්නෙ මගේ දූ පොඩිත්තත් එක්ක තමයි.
CMMI (http://www.sei.cmu.edu/cmmi/)ගැන කෙටියෙන් කියනවානම් ඒක ඇවිල්ල Software Process Model එකක්.CMMI යටතේ එකිනෙකට වෙන්වු Process Areas(Verifcation,Validation, Configuration Management, Organizational Process Focus,....etc) 15 ට වැඩි ප්රමානයක් වර්ගීකරනය කරලා ඒ සඳහා වෙන වෙනම specific goals හා generic goals හඳුන්වා දී තිබෙනවා.CMMI ගැන ගොඩාක් තොරතුරු ඒ සම්බන්ධයෙන් උනන්දුවක් ඇති කෙනෙකුට ගූගල් කරලා පහසුවෙන්ම හොයාගන්න පුලුවන්.වෙනත් නිෂපාදන කරන ආයතනයකට ISO සහතිකයක් ඇති වටිනාකම වගේ තමයි software company එකකට CMMI සහතිකයේ වටිනාකම.කොටින්ම මේක යම්කිසි ආයතනයක software process එක සම්බන්ධයෙන් ලබාදෙන තත්ව සහතිකයක් කීවොත් වැරදි නෑ.
CMMI appraisal එකකදී කරන්නේ ආයතනය අනුගමනය කරන software process එක CMMI තුල හඳුන්වා දී ඇති specific goals සහ generic goals සපුරා තිබෙනවාද කියලා බලන එකයි.මේ goals තුල වෙනම හඳුන්වා දී තිබෙනවා specific practices සහ generic practices කියලා වෙනම පුහුනු කොටස්.යම්කිසි goal එකක් සපුරාලන්න ඒ සඳහා වු specific and generic practices අනුගමනය කර තිබෙනවාද කියලා බලන්න ඕන.ඒ practices අනුගමනය කල බවට සාක්ෂි ලෙස document repository එකක් තියෙන්න ඕනා.appraisal එකේ මුල් සතිය තුල සම්පූර්ණයෙන් කරන්නේ මේ practice එකින් එකට අදාල සාක්ෂි document කරලද කියලා හොයන එකයි.ඊළඟ සතිය තුල කරන්නේ ඒවාගේ නිරවද්යතාවය සඳහා අවශ්ය පුද්ගලයින් සම්මුඛ පරීක්ෂණවලට භාජනය කිරීමයි.අවසානයේ සොයාගත් සියළු සාක්ෂි සලකා බලා ඒ සඳහා වූ වෙනම standard methodology එකකට ratings කිරීමක් කරනවා.ඊට පස්සේ තමයි අදාල ආයතනයට CMMI maturity level එක දීම තීරණය කරන්නේ.
මේ appraisal team එකට සහභාගී කරවන්න කලින් ඒ සඳහා මුල සිට අගටම දවස් 5ක පුහුණුවක් ලබා දෙනවා SEI එකේම නියෝජිතයෙක් විසින්.ඒ පුහුණුව හා appraisal එක කිරීම තුලින් ලැබුනු අත්දැකීම් වචනයෙන් විස්තර කරන්න බැරි තරම්.විශ්ව විද්යාල අධ්යාපන කාලය තුල software engineering සහ engineering process ගැන ඉගෙන ගන්න ලැබුනත් ඒ සඳහා ගැඹුරින් අධ්යනය කරන්න මේ ලැබුනු අවස්ථාව සෑහෙන්න වැදගත් වුනා.ඒ වගේම appraisal එක අවසානයේ මට SEI Appraisal Pool සාමාජිකත්වයත් ලැබුනා.ඒකත් ගොඩක් වැදගත් මොකද මට දැන් ලෝකේ ඕනම තැනක CMMI appraisal එක්කට සහභාගි වෙන්න නීත්යානුකූල අවසරය තියෙනවා SEI එකේ.
මේ සති දෙක තුල ඔක්කොම අත්දැකීම් අස්සේ මට ජීවිත්යේ සොඳුරුතම අත්දැකීමටත් මුහුණ දෙන්න වාසනාව ලැබුනා.ඒ තමයි මගේ පුංචි කැදැල්ලට ලස්සන රෝස පාට දූ සිඟිත්තක් එක්වෙමින් වාසනාවන්ත පිය පදවිය ලැබීම.දිනය හරියටම සැප්තැම්බර් 3 වෙනිදා හවස 5ට විතර.එදා ලැබුනු සතුට බ්ලොග් වලට හරවන්නනම් මට වචන නෑ.දූ පොඩිත්ත මං වගේමයි.තාම බැරි වුනා නමක් දාගන්න. ඒ කියන්නේ annonymous.අහුබුදු මහත්තයට කියලා දිව පැටලෙන නමක් දාගන්නවට වඩා මංම නමක් දාගන්න එක හොඳයි කියලයි හිතෙන්නෙ.මගේ අම්මා අකුරු ටිකකුත් හොයල ගෙනාවා(ගේ,ක,ත,න ).මේක කියවන අයටත් පුලුවන් හොඳ ලස්සන නම් ටිකක් යෝජනා කරන්න.ඉතින් ඔය විදියට තමයි පහුගිය දවස් ටික ගෙවුනේ.ඒකයි බ්ලොග් ලියන්න බැරි වුනේ.ඉස්සරහටත් වෙලාව හම්බෙන විදියට ආයෙත් ලියන්න ඕනා.ඒත් දැන් ඉතින් කාලය ගොඩක් ගෙවෙන්නෙ මගේ දූ පොඩිත්තත් එක්ක තමයි.
Friday, August 21, 2009
A/L ලියලා ඉවර වුන නංගිලා මල්ලිලාට හරි පාර හොයලා දෙමුද?
ආරංචි විදියට උසස් පෙළ විභාගයත් ඉවර වෙන්න කිට්ටුයි.මේ සටහන ලියන්න හිතුනේ මෙතනින් එහාට කඩකාරයෝ ගොඩාක් අපේ නංගිලා මල්ලිලාව ඩැහැගන්න බලාගෙන ඉන්නෙ හරියට දිය රකුසන් වගේ.A/L ඉවර වුනාම නංගිලා මල්ලිලා අතර පිරිස් 4ක් ඉන්නවා.ඒ හතර ගොල්ලන්ටම මගේ අත්දැකීම් අනුව පොඩි අවවාද ටිකක් ලියන්නම්.
එක ගොල්ලක් තමයි කිසිම අවුලක් නැතුව රජයේ විශ්ව විද්යාලයකට යන්න පුලුවන් වෙන්න විභාගය සමත් වෙන පිරිස.මේ ගොල්ලො නම් වැරදි කඩකාරයෙකුට අහුවුනත් විශ්ව විද්යාලය තුලට ගියාම හරි පාර හොයාගන්න සෑහෙන්ට ඉඩ තියෙනවා.ඒක හින්දා ලොකු අවුලක් නම් නැහැ.ඒත් ඉතින් විශ්ව විද්යාලයට ගියාම ඔක්කොම හරි කියලා හිතුවොත් වැඩේ අවුල් යනවා.එතනට ගියාම තමන් තනියම පොත් කියවලා අන්තර්ජාලය හොඳට භාවිතා කරලා තමන්ට අවශ්ය දැනුම හොයාගන්න ඕන.
අනිත් පිරිස තමයි ආයේ පාරක් විභාගය ගන්න හිතන පිරිස.ඒ කට්ටියට හොඳම වැඩේ තමයි හොඳ revision පන්ති 3ක් තෝරාගෙන ප්රතිඵල එන්න කලින්ම ඊලඟ අවුරුද්දේ විභාගයට හොඳට ලෑස්ති වෙන එක.ප්රතිඵල එනකම් fun එකේ ඉන්න ඕන කියලා හිතුවොත් ආයෙත් අපරාදේ කාලේ නාස්ති වෙනවා.ඊට පස්සේ ආපහු වැඩ පටන් ගන්නත් අමාරුයි fun එක වැඩි වුනොත්.
ඔන්න මගේ මාතෘකාවේ වැදගත්ම පිරිස තමයි ඊලඟට එන්නේ.ඒ කියන්නේ ආයේ පාරක් විභාගේ නම් ලියන් නෑ campus යන්න බැරිවුනත්, මොනා හරි external degree එකක් හරි, private degree එකක් හරි එහෙමත් නැතිනම් මොනා හරි course එකක් කරන්න ඕන කියලා හිතන පිරිස.මෙහෙම හිතුවාට කිසිම වැරැද්දක් නෑ කියන එකයි මගේ මතය.හැබැයි එහෙම වෙන්නේ හරියටම තමාට ගැලපෙන පාර තෝරගෙන ඒ සඳහා සුදුසුම තැන තෝරගන්න අයටයි.මේ ගැන තමයි පුදුම විදියට පරිස්සම් වෙන්න ඕන.
ලංකාවේ විශ්ව විද්යාලවලින් ඉතාමත්ම හොඳ external degrees තියෙනවා.(උදා:-කොළඹ හා මොරටුව විශ්ව විද්යාලවලින් පිරිනමන BIT ).නමුත් ඔබගේ උපරිම කැපවීම හා මහන්සිය අත්යාවශ්යයි මේ degree එකක් ගොඩ දාගන්න.කැපවීම තියේනම් කිසිම ගැටළුවක් නෑ.private degree එකක් කරනවානම් ඔයගොල්ලන්ට පුලුවන් පිලිගත් තැනක පටන්ගන්න, තම තමන්ට වියදම් කරන්න පුළුවන් සීමාව පිලිබඳ අවබෝධයෙන්.උදාහරණ ලෙස SLIIT,APIIT,IIT වගේ තැනක්.මේ වගේ තැන් මුලු රටම ඒ වගේම industry එකෙත් පිළිගත්ත තැන්.හැබැයි නංගියේ මල්ලියේ කඩවලටනම් අහු වෙන්න එපා.ඔය ගොල්ලන්ව අවුරුද්දකින් JAVA enigineer කෙනෙක් කරන්නවත් දින හතෙන් business application ලියන්න පුලුවන් තැන්වත් ලංකාවේ නෑ කියන එක හොඳට මතක තියාගන්න.එහෙම නම් ඒ තැන් වල උගන්නන්න ඕන විශ්වකර්මයෝ.ඒ වගේ තැන් වලට අහුවෙලා තමන්ගේ ජීවිත කාලය තුල හොඳම කාලය අපතේ යවා මුලු ජීවිතයම විඳවාගන්න නම් එපා,මේ වගේ කඩ තුල ඇති රසය තමයි සෑහෙන කාලයක් තමන් රැවටී ඇති බව නොතේරෙන එක,විශ්ව විද්යාලවලට බනිමින් අනිකුත් ආයතන වලට බනිමින් ඔයගොල්ලො මුරුංගා අත්තේ තබා උන්ගේ මඩිය තරකරගන්නා ආකාරය කාලයක් යනතුරු තේරෙන්නේ නැත.
මගේ කතාවේ ඊළඟ පිරිස තමයි ඉගෙන ගන්නෙම නෑ කියලා හිතන පිරිස.ඒ ගොල්ලන්ට කියන්න තියෙන්නේ මිනිහෙක් වෙන්න ඉගෙන ගන්න ඕනම නෑ තමයි. ඒත් අම්මලා තාත්තලාට වදයක් නොවී රටට වැඩදායක පුද්ගලයෙක් වෙන්න තමන්ට පුලුවන් මොනයම් හෝ ආකාරයකින්.
ඉතින් කාට පහර වැදුනත් එක්කෙනෙකුට දෙන්නෙකුට හරි නිවැරදි තීරණයක් ගන්න පුලුවන් වෙයි කියලායි මේක ලිව්වේ.(විදේශ විශ්ව විද්යාල ගැන සඳහන් නොකරේ ඒ පිලිබඳ අත්දැකීම් අඩු නිසයි.තොරතුරු තාක්ෂණය සම්බන්දයෙන් පමනක් උදාහරණ ලබා දුන්නේ මාගේ අත්දැකීම් අනුසාරයෙනි).
එක ගොල්ලක් තමයි කිසිම අවුලක් නැතුව රජයේ විශ්ව විද්යාලයකට යන්න පුලුවන් වෙන්න විභාගය සමත් වෙන පිරිස.මේ ගොල්ලො නම් වැරදි කඩකාරයෙකුට අහුවුනත් විශ්ව විද්යාලය තුලට ගියාම හරි පාර හොයාගන්න සෑහෙන්ට ඉඩ තියෙනවා.ඒක හින්දා ලොකු අවුලක් නම් නැහැ.ඒත් ඉතින් විශ්ව විද්යාලයට ගියාම ඔක්කොම හරි කියලා හිතුවොත් වැඩේ අවුල් යනවා.එතනට ගියාම තමන් තනියම පොත් කියවලා අන්තර්ජාලය හොඳට භාවිතා කරලා තමන්ට අවශ්ය දැනුම හොයාගන්න ඕන.
අනිත් පිරිස තමයි ආයේ පාරක් විභාගය ගන්න හිතන පිරිස.ඒ කට්ටියට හොඳම වැඩේ තමයි හොඳ revision පන්ති 3ක් තෝරාගෙන ප්රතිඵල එන්න කලින්ම ඊලඟ අවුරුද්දේ විභාගයට හොඳට ලෑස්ති වෙන එක.ප්රතිඵල එනකම් fun එකේ ඉන්න ඕන කියලා හිතුවොත් ආයෙත් අපරාදේ කාලේ නාස්ති වෙනවා.ඊට පස්සේ ආපහු වැඩ පටන් ගන්නත් අමාරුයි fun එක වැඩි වුනොත්.
ඔන්න මගේ මාතෘකාවේ වැදගත්ම පිරිස තමයි ඊලඟට එන්නේ.ඒ කියන්නේ ආයේ පාරක් විභාගේ නම් ලියන් නෑ campus යන්න බැරිවුනත්, මොනා හරි external degree එකක් හරි, private degree එකක් හරි එහෙමත් නැතිනම් මොනා හරි course එකක් කරන්න ඕන කියලා හිතන පිරිස.මෙහෙම හිතුවාට කිසිම වැරැද්දක් නෑ කියන එකයි මගේ මතය.හැබැයි එහෙම වෙන්නේ හරියටම තමාට ගැලපෙන පාර තෝරගෙන ඒ සඳහා සුදුසුම තැන තෝරගන්න අයටයි.මේ ගැන තමයි පුදුම විදියට පරිස්සම් වෙන්න ඕන.
ලංකාවේ විශ්ව විද්යාලවලින් ඉතාමත්ම හොඳ external degrees තියෙනවා.(උදා:-කොළඹ හා මොරටුව විශ්ව විද්යාලවලින් පිරිනමන BIT ).නමුත් ඔබගේ උපරිම කැපවීම හා මහන්සිය අත්යාවශ්යයි මේ degree එකක් ගොඩ දාගන්න.කැපවීම තියේනම් කිසිම ගැටළුවක් නෑ.private degree එකක් කරනවානම් ඔයගොල්ලන්ට පුලුවන් පිලිගත් තැනක පටන්ගන්න, තම තමන්ට වියදම් කරන්න පුළුවන් සීමාව පිලිබඳ අවබෝධයෙන්.උදාහරණ ලෙස SLIIT,APIIT,IIT වගේ තැනක්.මේ වගේ තැන් මුලු රටම ඒ වගේම industry එකෙත් පිළිගත්ත තැන්.හැබැයි නංගියේ මල්ලියේ කඩවලටනම් අහු වෙන්න එපා.ඔය ගොල්ලන්ව අවුරුද්දකින් JAVA enigineer කෙනෙක් කරන්නවත් දින හතෙන් business application ලියන්න පුලුවන් තැන්වත් ලංකාවේ නෑ කියන එක හොඳට මතක තියාගන්න.එහෙම නම් ඒ තැන් වල උගන්නන්න ඕන විශ්වකර්මයෝ.ඒ වගේ තැන් වලට අහුවෙලා තමන්ගේ ජීවිත කාලය තුල හොඳම කාලය අපතේ යවා මුලු ජීවිතයම විඳවාගන්න නම් එපා,මේ වගේ කඩ තුල ඇති රසය තමයි සෑහෙන කාලයක් තමන් රැවටී ඇති බව නොතේරෙන එක,විශ්ව විද්යාලවලට බනිමින් අනිකුත් ආයතන වලට බනිමින් ඔයගොල්ලො මුරුංගා අත්තේ තබා උන්ගේ මඩිය තරකරගන්නා ආකාරය කාලයක් යනතුරු තේරෙන්නේ නැත.
මගේ කතාවේ ඊළඟ පිරිස තමයි ඉගෙන ගන්නෙම නෑ කියලා හිතන පිරිස.ඒ ගොල්ලන්ට කියන්න තියෙන්නේ මිනිහෙක් වෙන්න ඉගෙන ගන්න ඕනම නෑ තමයි. ඒත් අම්මලා තාත්තලාට වදයක් නොවී රටට වැඩදායක පුද්ගලයෙක් වෙන්න තමන්ට පුලුවන් මොනයම් හෝ ආකාරයකින්.
ඉතින් කාට පහර වැදුනත් එක්කෙනෙකුට දෙන්නෙකුට හරි නිවැරදි තීරණයක් ගන්න පුලුවන් වෙයි කියලායි මේක ලිව්වේ.(විදේශ විශ්ව විද්යාල ගැන සඳහන් නොකරේ ඒ පිලිබඳ අත්දැකීම් අඩු නිසයි.තොරතුරු තාක්ෂණය සම්බන්දයෙන් පමනක් උදාහරණ ලබා දුන්නේ මාගේ අත්දැකීම් අනුසාරයෙනි).
Friday, August 14, 2009
පෙරළිකාර ගාන්ධර්වයානෙනි, අද සවස වනතුරු ඉවසිල්ලක් නොමැත
ශ්රි ලාංකීය සංගීත ක්ෂේත්රයේ එදා මෙදාතුර පෙරළිකාරයාගේ මහා සංගීත සැඳෑව රස විඳීමට පුනා පුනා බලා සිටින මා සවස් වෙනතුරු සිටින්නේ මහත් වූ ආශාවෙනි.කුඩා කල සිටම මා ඔහුගේ ගීත රස විඳි වාර ගනන මෙතැකැයි කියා, කියා නිම කළ නොහැක.ඔහුගේ වු පෙරළිකාර ප්රතිභාව සැමදාමත් තාරුණ්යයේ රිද්මය හා කොතරම් පෑහුනිද යන්න ඔහුගේ සදාකාලික නිර්මාණ අතලොස්ස සාක්ෂි දරනවා ඇති.80 දශකයේ මුල් භාගයේ සිට ඔහු කල නිර්මාණ අදටත් අප හට දැනෙන්නේ ඒ තාරුණ්යය හා කැටි වූ මහත් වූ නැවුම් භාවයකිනි.බඹර පහස, දිගන්තයේ වැනි කැසට් පට මේ රට තුල තැබු වාර්තාගත අලෙවිය මල්කාරයින්ටවත්, බස් රථ තුල අඬා වැලපෙන නපුන්සකයින්ටවත් කිසිද බිඳීමට නොහැකි විය.
එහෙත් පසු කලෙක අප රටේ කාලකණ්නි රාජ්ය තන්ත්රය මේ මහා පෙරළිකාරයගේ නිර්මාණාත්මක වටපිටාව විනාශ කර දැම්මේ පුදුමාකාර සාහසික ආකරයිනි.බැරිම තැන ඔහු රට හැරදා ගියේය.එහෙත් අදටත් ඔහුගේ නිර්මාණ වලට පෙම් බැඳි මහත් වූ රසික පිරිස ඔහු හැර ගියේ නැත.ඔහුගේ නිර්මාණ එනතුරු මඟ බලා සිටියහ.අද සවස ප්රසංගයේ ප්රවේශ පත්ර සතියකටත් පෙර විකිණි අවසන් වූයේ ඒ නිසාය.
රූකාන්ත ගුණතිලක ගාන්ධර්වයාණනි....
අපි අද සවස සුගතදාස ක්රීඩාංගණයට පැමිනෙන්නෙමු.අනාථ මාරුතේ කුණාටු සාගරේ නිහඬ මාවතේ නිල් තරු නෙතු හිනැහෙන සඳ පාන වාගේ දිලෙමින් ජීවිතේ සුන්දරද මෙතරම්... ඔබ හඬින් කියා දෙන හැටි අසන්නට අපි එන්නෙමු.
එහෙත් පසු කලෙක අප රටේ කාලකණ්නි රාජ්ය තන්ත්රය මේ මහා පෙරළිකාරයගේ නිර්මාණාත්මක වටපිටාව විනාශ කර දැම්මේ පුදුමාකාර සාහසික ආකරයිනි.බැරිම තැන ඔහු රට හැරදා ගියේය.එහෙත් අදටත් ඔහුගේ නිර්මාණ වලට පෙම් බැඳි මහත් වූ රසික පිරිස ඔහු හැර ගියේ නැත.ඔහුගේ නිර්මාණ එනතුරු මඟ බලා සිටියහ.අද සවස ප්රසංගයේ ප්රවේශ පත්ර සතියකටත් පෙර විකිණි අවසන් වූයේ ඒ නිසාය.
රූකාන්ත ගුණතිලක ගාන්ධර්වයාණනි....
අපි අද සවස සුගතදාස ක්රීඩාංගණයට පැමිනෙන්නෙමු.අනාථ මාරුතේ කුණාටු සාගරේ නිහඬ මාවතේ නිල් තරු නෙතු හිනැහෙන සඳ පාන වාගේ දිලෙමින් ජීවිතේ සුන්දරද මෙතරම්... ඔබ හඬින් කියා දෙන හැටි අසන්නට අපි එන්නෙමු.
Thursday, August 6, 2009
එකම database එකක ඇති tables කීපයකින් data migration කිරීම
ගොඩ දවසකින් මොනවත් ලියන්න බැරි වුනේ පහුගිය දවස්වල ටිකක් විතර වැඩ වැඩි වුන නිසා.එතනදි කරපු එක වැඩක් තමයි මේ data migration එක,මට ආපු requirement එක තමයි එකම database එකක් තුල ඇති table කීප්යකින් තවත් table කීපයකට data migration එකක් කිරිම.DBMS එක Oracle.
මේක කරන්න පහසුම විදිය තමයි PL/Sql(Procedurel Language/Sql) භාවිතා කරන එක.එතනදි අපිට PL/Sql වල එන Explicit Cursor සංකල්පය තමයි හුඟක්ම ප්රයෝජනවත්.මම මේක කරන විදිය මුල සිට සරලව ලියන්නම් PL/SQL ගැන අත්දැකීමක් නැති කෙනෙකුට වුනත් තේරෙන විදියට.
PL/Sql ගැන කෙටියෙන් කිව්වොත් අපිට sql statements කීපයක් එක වර oracle server එක තුලම sequence එකක් විදියට execute කරන්න පුලුවන්. ඇත්තටම අපිට programming concepts භාවිතා කරලා සාමාන්ය java program එකක් ලියනවා වගේ PL/Sql එකක් ලියන්න පුලුවන්.variable declaration, initailization, evaluation,manipulation,control sturcturs and looping ,exception handling මේ වගේ ගොඩක් දේවල් කරන්න පුලුවන්. නමුත් අපි PL/Sql එකක් තුල සාමාන්යයෙන් ලියන sql වල වගේ නෙමේ පොඩ්ඩක් විතර syntax එක වෙනස් වෙනවා(උදා:-select statement එකකින් ගන්න data, varuable එකක් තුලට දාගන්න වේලාවට වගේ ).මේකේ තියෙන අනිත් වාසිය තමයි peformance.එක block එකක් තුල sql statement කීපයක් execute වෙන හින්දා network traffic එක සෑහෙන්ට අඩු වෙනවා.අනික් වාසිය තමයි maintenance.
PL/Sql block එකක දළ ආකෘතිය
DECLARE - (අත්යාවශ්ය නොවේ)
- variables, cursors, user-defined exceptions
BEGIN - (අත්යාවශ්යයි)
- SQL statements
- PL/Sql statements
EXCEPTION- (අත්යාවශ්ය නොවේ)
- exception handling
END;(අත්යාවශ්යයි)
ex:-sql statements execute කරන විදිය
DECLARE
v_variable VARCHAR2(5);
BEGIN
SELECT column_name
INTO v_variable
FROM table_name;
DBMS_OUTPUT.PUT_LINE('The variable is ' || v_variable)
EXCEPTION
WHEN exception_name THEN
....
END;
PL/SQL block එකක් තුල variable declaration කරද්දී අපිට oraclce data types භාවිතා කරන්න පුලුවන්, ඒ වගේම තමයි %TYPE කියන attribute එක භාවිතා කරලා යම්කිසි table එකක column type එකකින් declare කරන්න පුලුවන්.(variable_name table_name.column_name%TYPE;).ඊට අමතරව C වල වගේ composite data types තියාගන්නත් පුලුවන්.ඒ වගේම මේ PL/Sql ඇතුලෙත් අපි java program එකක් ලියනකොට වගේ nested blocks තියෙන්න පුලුවන්, එතකොට variable scope එක ගැනත් සැලකිලිමත වෙන්න ඕන.මේ උදාහරණයේ තියෙන DBMS_OUTPUT.PUT_LINE එක හරියටම අපි java program එකක් ලියද්දි දාන System.out.println වගේ.හැබැයි ඒක බලගන්න ඕන නම් SET SERVEROUTPUT ON කියලා block එක උඩින්ම තියෙන්න ඕන,(TOAD වගේ IDE එකක් භාවිතා කරනවනම් එහෙම නැතුව අපිට button click එකකින් ඒක බලගන්න පුලුවන්).
දැන් අපි කතා කරමු explicit cursor සංකල්පය ගැන.මේක ගොඩක් වැදගත් වෙන්නෙ select statement එකකින් එක row එකකට වඩා දෙනකොටයි.අපි එතකොට දෙන data set එක cursor එක තුල තියාගෙන අපිට loop එකක් භාවිතා කරලා එකින් එක අපිට අවශ්ය කරන කාර්ය කරගන්න පුලුවන්.
Explicit cursor එකක් ලියද්දී මුලින්ම DECLARE block එක තුල අපි cursor එක declare කරන්න ඕන.ඊට පස්සේ BEGIN block එක තුල ඒක OPEN කරලා ඊට පස්සේ තමයි FETCH කරන්න ඕන.අන්තිමේට අපි cursor එක CLOSE කරන්න ඕන.ඒ වගේම තමයි අනිත් වැදගත් කාරණය තමයි explicit cursor attributes(%ISOPEN,%NOTFOUND,%FOUND,%ROWCOUNT).මේවා භාවිතා කරලා අපිට පුලුවන් loop එකක් තුල cursor එක control කරගන්න.
උදා:-
SET SERVEROUTPUT ON
DECLARE
CURSOR emp_cursor IS
SELECT employee_id,last_name
FROM employees;
v_employee_id employee.employee_id%TYPE;
v_last_name employee.last_name%TYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor
INTO v_employee_id,v_last_name;
EXIT WHEN emp_cursor%ROWCOUNT > 4 OR emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Id is ' || v_employee_id || ' and name is ' || v_last_name );
INSERT INTO temp(id,name) VALUES(v_employee_id,v_last_name);
END LOOP;
COMMIT;
CLOSE emp_cursor;
END;
/
දැන් අපිට පෙනෙනවා අපි මුලින් සඳහන් කරපු සංකල්ප භාවිතා කරලා මේ cursor එක ලියලා තියෙන විදිය.declaration,cursor decalaration & variable declaration, opening cursor,looping,cursor fetching,cursor closing, explicit cursor atttributes, loop controlling මේ ආකාරයේ ගොඩක් දේවල් භාවිතා වෙලා තියෙනවා ඉහත උදාහරණය තුල.මම හිතනවා PL/Sql ගැන මුලින්ම හොයන කෙනෙකුට මේ සිංහල ලිපිය වැදගත් වේ කියලා.සියලුම සංකල්ප මෙවැනි කුඩා ලිපියකින් විස්තර කිරිම අපහසු වුවද හැඳින්වීමක් ලෙස මෙය ප්රයෝජනවත් වේ යයි සිතමි.තවද මේ ආකාරයේ anonymous PL/Sql blocks, stored procedures ලෙස වෙනමම භාවිතා කරන්න පුලුවනි.ඒ අතරම මේ දෙයද මතකයේ තබාගන්න. බොහෝ අය සමහර database requirements ගැන බලන්නේ තමන් භාවිතා කරන programming language එකේ ඇසිනි.එහෙත් අපිට sql සහ PL/Sql භාවිතා කර ඒවා බොහොමයක් පහසුවෙන් සහ කාර්යක්ෂමව කරගත හැකිය.
මේක කරන්න පහසුම විදිය තමයි PL/Sql(Procedurel Language/Sql) භාවිතා කරන එක.එතනදි අපිට PL/Sql වල එන Explicit Cursor සංකල්පය තමයි හුඟක්ම ප්රයෝජනවත්.මම මේක කරන විදිය මුල සිට සරලව ලියන්නම් PL/SQL ගැන අත්දැකීමක් නැති කෙනෙකුට වුනත් තේරෙන විදියට.
PL/Sql ගැන කෙටියෙන් කිව්වොත් අපිට sql statements කීපයක් එක වර oracle server එක තුලම sequence එකක් විදියට execute කරන්න පුලුවන්. ඇත්තටම අපිට programming concepts භාවිතා කරලා සාමාන්ය java program එකක් ලියනවා වගේ PL/Sql එකක් ලියන්න පුලුවන්.variable declaration, initailization, evaluation,manipulation,control sturcturs and looping ,exception handling මේ වගේ ගොඩක් දේවල් කරන්න පුලුවන්. නමුත් අපි PL/Sql එකක් තුල සාමාන්යයෙන් ලියන sql වල වගේ නෙමේ පොඩ්ඩක් විතර syntax එක වෙනස් වෙනවා(උදා:-select statement එකකින් ගන්න data, varuable එකක් තුලට දාගන්න වේලාවට වගේ ).මේකේ තියෙන අනිත් වාසිය තමයි peformance.එක block එකක් තුල sql statement කීපයක් execute වෙන හින්දා network traffic එක සෑහෙන්ට අඩු වෙනවා.අනික් වාසිය තමයි maintenance.
PL/Sql block එකක දළ ආකෘතිය
DECLARE - (අත්යාවශ්ය නොවේ)
- variables, cursors, user-defined exceptions
BEGIN - (අත්යාවශ්යයි)
- SQL statements
- PL/Sql statements
EXCEPTION- (අත්යාවශ්ය නොවේ)
- exception handling
END;(අත්යාවශ්යයි)
ex:-sql statements execute කරන විදිය
DECLARE
v_variable VARCHAR2(5);
BEGIN
SELECT column_name
INTO v_variable
FROM table_name;
DBMS_OUTPUT.PUT_LINE('The variable is ' || v_variable)
EXCEPTION
WHEN exception_name THEN
....
END;
PL/SQL block එකක් තුල variable declaration කරද්දී අපිට oraclce data types භාවිතා කරන්න පුලුවන්, ඒ වගේම තමයි %TYPE කියන attribute එක භාවිතා කරලා යම්කිසි table එකක column type එකකින් declare කරන්න පුලුවන්.(variable_name table_name.column_name%TYPE;).ඊට අමතරව C වල වගේ composite data types තියාගන්නත් පුලුවන්.ඒ වගේම මේ PL/Sql ඇතුලෙත් අපි java program එකක් ලියනකොට වගේ nested blocks තියෙන්න පුලුවන්, එතකොට variable scope එක ගැනත් සැලකිලිමත වෙන්න ඕන.මේ උදාහරණයේ තියෙන DBMS_OUTPUT.PUT_LINE එක හරියටම අපි java program එකක් ලියද්දි දාන System.out.println වගේ.හැබැයි ඒක බලගන්න ඕන නම් SET SERVEROUTPUT ON කියලා block එක උඩින්ම තියෙන්න ඕන,(TOAD වගේ IDE එකක් භාවිතා කරනවනම් එහෙම නැතුව අපිට button click එකකින් ඒක බලගන්න පුලුවන්).
දැන් අපි කතා කරමු explicit cursor සංකල්පය ගැන.මේක ගොඩක් වැදගත් වෙන්නෙ select statement එකකින් එක row එකකට වඩා දෙනකොටයි.අපි එතකොට දෙන data set එක cursor එක තුල තියාගෙන අපිට loop එකක් භාවිතා කරලා එකින් එක අපිට අවශ්ය කරන කාර්ය කරගන්න පුලුවන්.
Explicit cursor එකක් ලියද්දී මුලින්ම DECLARE block එක තුල අපි cursor එක declare කරන්න ඕන.ඊට පස්සේ BEGIN block එක තුල ඒක OPEN කරලා ඊට පස්සේ තමයි FETCH කරන්න ඕන.අන්තිමේට අපි cursor එක CLOSE කරන්න ඕන.ඒ වගේම තමයි අනිත් වැදගත් කාරණය තමයි explicit cursor attributes(%ISOPEN,%NOTFOUND,%FOUND,%ROWCOUNT).මේවා භාවිතා කරලා අපිට පුලුවන් loop එකක් තුල cursor එක control කරගන්න.
උදා:-
SET SERVEROUTPUT ON
DECLARE
CURSOR emp_cursor IS
SELECT employee_id,last_name
FROM employees;
v_employee_id employee.employee_id%TYPE;
v_last_name employee.last_name%TYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor
INTO v_employee_id,v_last_name;
EXIT WHEN emp_cursor%ROWCOUNT > 4 OR emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Id is ' || v_employee_id || ' and name is ' || v_last_name );
INSERT INTO temp(id,name) VALUES(v_employee_id,v_last_name);
END LOOP;
COMMIT;
CLOSE emp_cursor;
END;
/
දැන් අපිට පෙනෙනවා අපි මුලින් සඳහන් කරපු සංකල්ප භාවිතා කරලා මේ cursor එක ලියලා තියෙන විදිය.declaration,cursor decalaration & variable declaration, opening cursor,looping,cursor fetching,cursor closing, explicit cursor atttributes, loop controlling මේ ආකාරයේ ගොඩක් දේවල් භාවිතා වෙලා තියෙනවා ඉහත උදාහරණය තුල.මම හිතනවා PL/Sql ගැන මුලින්ම හොයන කෙනෙකුට මේ සිංහල ලිපිය වැදගත් වේ කියලා.සියලුම සංකල්ප මෙවැනි කුඩා ලිපියකින් විස්තර කිරිම අපහසු වුවද හැඳින්වීමක් ලෙස මෙය ප්රයෝජනවත් වේ යයි සිතමි.තවද මේ ආකාරයේ anonymous PL/Sql blocks, stored procedures ලෙස වෙනමම භාවිතා කරන්න පුලුවනි.ඒ අතරම මේ දෙයද මතකයේ තබාගන්න. බොහෝ අය සමහර database requirements ගැන බලන්නේ තමන් භාවිතා කරන programming language එකේ ඇසිනි.එහෙත් අපිට sql සහ PL/Sql භාවිතා කර ඒවා බොහොමයක් පහසුවෙන් සහ කාර්යක්ෂමව කරගත හැකිය.
Thursday, July 23, 2009
Netbeans 6.7 ඇවිල්ලා
දැනුයි දැක්කේ,Netbeans 6.7 version එකත් ඇවිල්ලා.කවුරු මොනවා කිව්වත් Web & EJB development වලටනම් කියාපු IDE එක.ඉස්සරට වඩා plugins එහෙමත් තියෙනවා.ඉන්ටනෙට් එකෙත් දැන් සෑහෙන support එකක් තියනවා.මම නම් හිතන්නෙ PC එකෙ memory එක ටිකක් වැඩිපුර පාවිච්චි වුනත් performance හොඳ PC එකක් තියෙනවා නම් මේක භාවිතා කරන්න මැලි වෙන්න ඕන නෑ.හැබැයි Netbeans වලින් Swing Development සම්බන්ධයෙන් නම් පොඩි පොඩි ගැටලු කීපයක් තියෙනවා. ඒත් මගේ නම් ප්රියතම IDE එක Netbeans තමයි.
http://www.netbeans.org/downloads/index.html
ඒත් පොඩි දුකකට තියෙන්නේ Netbeans 6.0 වලට පස්සේ තාම MS VSS plugin එකක් ආවේ නැති එකයි.මං වැඩ කරන තැන තියෙන්නෙ VSS හින්දා තාම පාවිච්චි කරන්නේ Netbeans 6.0.
ඒ වගේම තමයි දැන් ඉස්සර වාගේ නොමිලේ DVD එවන්නෙත් නෑලු, ඒක නම් හොඳයි.මොකද මං දැකලා තියෙනවා සමහරු ඒවා ලස්සනට තියන් ඉන්නවා.එයිට වඩා හොඳයි අවශ්ය අයට විතරක් download කරගන්න දෙන එක.ගොඩක් අයට නිකං දෙනකොට අගයක් නෑනෙ.
http://www.netbeans.org/downloads/index.html
ඒත් පොඩි දුකකට තියෙන්නේ Netbeans 6.0 වලට පස්සේ තාම MS VSS plugin එකක් ආවේ නැති එකයි.මං වැඩ කරන තැන තියෙන්නෙ VSS හින්දා තාම පාවිච්චි කරන්නේ Netbeans 6.0.
ඒ වගේම තමයි දැන් ඉස්සර වාගේ නොමිලේ DVD එවන්නෙත් නෑලු, ඒක නම් හොඳයි.මොකද මං දැකලා තියෙනවා සමහරු ඒවා ලස්සනට තියන් ඉන්නවා.එයිට වඩා හොඳයි අවශ්ය අයට විතරක් download කරගන්න දෙන එක.ගොඩක් අයට නිකං දෙනකොට අගයක් නෑනෙ.
Tuesday, July 21, 2009
මලියදෙව විද්යාලයෙන් රණවිරු උපහාර
ශ්රි ලංකාවේ ක්ෂේත්ර රැසක දක්ෂතා පරිපූර්ණ ප්රමුඛයන් බිහිකල ඇතුගල්පුර මලියදෙව විද්යාලයේ රණවිරු උපහාර උළෙල පසුගියදා පැවැත්විණ.ප්රධාන අමුත්තා ලෙස ආරක්ෂක ලේකම් ගෝඨාභය රාජ්පක්ෂ මහතා සහභාගී විය.ආරක්ෂක සේවයට වැඩිම නිලධාරින් පිරිසක් එක් වුන පලාත ලෙස නම් දරා ඇති වයඹ පලාත ඇගයීමට ලක් කල එතුමා එහිදි ඒ සඳහා මලියදෙවය වෙනුවෙන් විශේෂ ස්තුතිය පල කර සිටියේය.
http://www.defence.lk/sinhala/sn.asp?fname=20090719_01
http://www.defence.lk/sinhala/sn.asp?fname=20090719_01
Monday, July 20, 2009
SCJP බහුවරණ විභාගය අවසන්
Sun Microsystems හි ජනප්රිය සහතික විභාගයක් වන SCJP සඳහා වූ බහුවරණ විභාගය අවසන් කිරීමට ඔවුන් තීරණය කර ඇත.පසුගිය කාලයේ Hello World ප්රොග්රම් එකක්වත් ලියාගන්න බැරි බොහෝ උදවිය මෙම සහතිකය කරපින්නාගෙන යෑමට පටන් ගත්හ.සමහරු මෙම සහතිකයත් රැගෙන නානප්රකාර විකාර ප්රදර්ශනද පැවැත්වූහ. එහෙත් මෙම නව ප්රවේශයෙන් ප්රායොගික දැනුමක් නැති කට පාඩම් කරන උදවියටනම් බොහෝ ඉඩ ඇහිරෙනු ඇත.
https://www.suntrainingcatalogue.com/eduserv/client/learningPath.do?p=/training/certification/beta_scjp_plus.html
https://www.suntrainingcatalogue.com/eduserv/client/learningPath.do?p=/training/certification/beta_scjp_plus.html
මොබිටෙල් සයිට් එක - පරිස්සමින්

මම දැනට දිගු කලක සිට මොබිටෙල් පාරිභොගිකයෙක්මි.එක්තරා දිනක මා මාගේ බිල්පත පරීක්ෂා කිරීමට යාමේදි මාගේ බිල්පත් තොරතුරු වෙනුවට ආවේ වෙනත් කෙනෙකුගේ තොරතුරුය.එහි සඳහන් අංකය මාගේය.මම මෙහිදී මාගේ පුද්ගලික පරිඝණකය භාවිත කල අතර browser cache පිලිබඳ ගැටළුවකින් මෙය සිදු නොවු බව විශ්වාසය.එබැවින් මෙම වෙබ් අඩවිය භාවිතයේදි ප්රවේසම් වන්න.
පින්තූරයක් කල හදියක්
අපේම යාලුවෙක් විහිළුවකට කරපු දෙයක් අන්තිමේට හැමතැනම ප්රචාරය වුනෙ ඇත්තක් විදියට.තාමත් සමහරු හිතන් ඉන්නෙ මේක ඇත්තක් කියලා.කොළඹ විශ්ව විද්යාලයට හිනා වෙන්න බලන් හිටපු හැමෝටම මේක හොඳ රුකුලක් වුනා.මේ ලින්ක් එක දිහා බලලා ඔයාලත් වැරදි අවබෝදයක ඉන්නවනම් ඒක නිවැරදි කරගන්න.
http://www.sinhalaya.com/news/sinhala/news.php?go=fullnews&newsid=2807
http://www.sinhalaya.com/news/sinhala/news.php?go=fullnews&newsid=2807
JAVA දැනුම බෙදා හදා ගමු
මං ගොඩක් කල ඉඳලා මේ සයිට් එකේ සාමාජිකයෙක්.JAVA ගැන ඔබට තියෙන ගැටළු සෑහෙන්ට නිරාකරනය කරගන්න පුලුවන්.ඒ වගේම SUN සහතික හදාරනවනම් එකටත් මේ සයිට් එක ගොඩාක් ප්රයෝජනවත්.ඔයගොල්ලොත් මේකට එකතු වෙලාම බලන්න.
http://www.javaranch.com/
http://www.javaranch.com/
Sunday, July 19, 2009
මාගේ ප්රථම සටහන
ගොඩක් කාලයක් තොරතුරු තාක්ෂණ ක්ෂේත්රයේ නියලුනත් අද තමයි බ්ලොග් එකක් පටන් ගත්තේ.ඉස්සරහට පුලුවන් තරම් ලියන්න බලමු දන්න දේවල්.
Subscribe to:
Comments (Atom)