දිනක් දෙදිනක් නොවේ හැම දින උඹේ රුව නෙත ගැටෙනවා
වරක් දෙවරක් නොවේ දිනකට සියක් වර මුන ගැහෙනවා
දෙකන් රිදවන තරම් හයියෙන් උඹත් නිතරම අඬනවා
මගේ කදුලුයි උඹේ කදුලුයි යකඩ මත මුන ගැහෙනවා
උඹට පෑගුණු මගේ පොඩි පුතු උඹ නිතර සිහි කරනවා
ඔහේ දුවනා අපේ ජීවිත එක වගේ මයි හිතෙනවා
සඳ එක් තරුවකට බහ දුන් දිනේ සිට
සඳ එක් තරුවකට බහ දුන් දිනේ සිට,
හඬන තරු වල උදුල නෙත් යුග වසන මොහොතක කඳුලැලි
'හිනැහෙනා තරු' කියා ලියු කවි කියා නැතුවද බොරු වැකි
තනි උන කිරිල්ලී
පියා හැරදා ගිය දිනේ සිට ජීවත් වීමට නොයෙක් ගැහැට විදී, ලෙඩින් ඉන්න අමමත් එක්ක ඉන්න ගෙදර හදන්න වැස්ස දාට වැලි ගොඩ දාන කෙල්ලෙක්ගෙ කතාවක්
කුරුලු කූඩුවෙ දොර කඩාගෙන
පියා ඉගිලී ඇත දුරක්
සිනිදු අතගෙන පෝරුවේ නැග
යන්න කෙනෙකුත් නැති උනත්
හිසේ පැටවුන ජීවිතේ බර
බිම තැබිය නොහැකිය මටත්
ගිලන් මවකගෙ සිහින් කෙදිරිය
රැයේ නැලවිලි ගීය ගැයුවත්
හිරු මඩල හිනහෙනා දිනකදි
දුක් ගගේ කිමිදෙන්න වූවත්
රුදුරු වැහි දිය ගලන දිනකදි
ගොඩට ගෙනෙනා වැලි ටිකෙන්
කුරුලු කූඩුව නිම කරන්නට
සිහිනයක් දකිනෙමි අදත්
පොස් වීම සහ ජොසපින්
ජොසපින් සිස්සත්තෙ පාස් වෙලා කොළඹ ලොකු ගෑණු කොලීජියකට ආවේ අම්මගෙ හීන මල්ල කරේ දාගෙනය. ඉස්කෝලෙ ඉගනගන්න ජොසපින්ට වෙද නළාව කරේ දමා ගන්න ඕන වෙලා තිබුනෙ රෝද හතරෙ මාලිගාවෙන් බැහැල කේප්සී එකේ එකම පන්තියේ හාමුලත් එක්ක කුකුලු මස් රස බලන්න හීන දැක්ක නිසා මිස වෙන උලව්වකට නොවේය. ඉංගිරිසි ටිකක් කටේ ගාගන්නා ජොසපින් බස් හෝල්ට් එකේ ඉංගිරිසියෙන් කතා කල හාමුලා වගේ ඉංගිරිසියෙන් කතා කරන්න හීන දැක්කෙ නැත්තෙත් නෑ.
අප්පච්චි කුඹුරු කොටල හම්බ කරපු රුපියල් ටිකක් මැක්ඩොනල්ඩ් එකේ ලාච්චුවට යැව්වෙ අම්ම හොඳට කාපන් දුවේ කියල එව්ව සල්ලි එකතු කරල ගත්ත ඉස්මාට් පෝන් එකෙන් පොටෝ අරන් සෝසල් මීඩියා දාන්නත් එක්කය. දැන් පොස් වෙන්න යන ගමනේ ඉන්න ජොසපින් සිංහල පාවිච්චි කරන්නේ අඩුවෙන්ය.
හාමුලා දාන සපත්තු දාන්න , හාමුලා අදින ඇදුම් අදින්න දැන් ජොසපින් හරි ආසය. ඉංගිරිසි නාට්ටියක සුදු කොල්ලෙකුට පෙම් බදින ජොසපින්, එයට තබන නම ක්රස් එකය. දැං සිංහල සින්දු ගොඩේය , බෝරිංය. එඩ් සීරන් ජස්ටින් බීබර් වීරයන් වී ඇත. අයම් ඉන් ලව් විත් යො බොඩී.. කියා ගයන විට එහි රඟන තරුණයා ක්රස් එකක් කරගැනීමට ජොසපින්ට තප්පරෙන් අරික්කාලක් වත් යන්නේ නැත.
බෝඩිමේ වට්ටක්කයි බතුයි කන ජොසපින් ඒවා කිසි දිනක එක්ස්පෝස් කරේ නැත. ජොසපින් කිසිදාක පොලොවේ පය ගසා ජීවත් වූයේ නැත. අඩි දෙකක් උඩින් ගිය ජොසපින් හිතුවේ ටීවී එකේ දුටු සුදු කොල්ලා වැනි අයෙක් තමන්ව කැන්දාගෙන ගොස් මලක් වගේ බලාගනී කියාය.
ජොසපින් පේල්ය. දෙපාරම පේල්ය. ජොසපින් ෆැන්ටසියක ක්රස් වලට ලව් කරන කොට හාමුලා ජොසපින්ව පාස් කර ඇත. ජොසපින් අතරමංය. දැං ජොසපින්ට ලව් සික් ය. ජොසපින්ට ඕනෙ සුද්දය. උදේට තේ එක අතට ගෙනත් දෙන, ලස්සන හිමිදිරියක පිටිපස්සෙන් ඇවිල්ල බෙල්ල සිප ගන්න ටීවී සීරීස් එකේ සුද්දය. සමාජය ගැන අබමල් රේණුවක දැනුමක් නැති ජොසපින් කලු මිනිසුන් අතර හොයන්නෙ සුදු කොල්ලාගෙ කොලිටීස් ය. ජොසපින් සිතුවේ සුදු අසුපිට නැගි පොස් කුමරෙක් පැමිණ මාලිගයේ තබා තමන්ව රැජිණියක් සේ බලාගනීවි කියාය. ජොසපින් ඒකත් පේල් ය
අවසානයේ ජොසපින් ඉලෙක්ට්රිසිටි බෝඩ් එකේ වැඩකරන සිරිපාල සමග අතිනත ගත්තේ සුදු හාමු හොයාගත නොහැකි වූ තැන, ගෙදරින් පංගරාත්තු කරපු නිසාය.
------------------------------
මොනව හරි වත්කමක් තියන මිනිස්සු ජීවත් වෙන්නෙ උන්ගෙ ලයිෆ්ස්ටයිල් එකටය. උන්ට ඒකෙ මහා ලොකු ආතල් එකක් වත් මැජික් එකක් වත් මවා පෑමක් වත් නැත.මේක බලාගෙන ඉන්න ගමේ ගොඩේ සිට සිදාදියට පැමිණි ජොසපින්ලා සහ සිරිපාලලා ඉහල පන්තියේ පොටෝ කොපි වීමට යාම දුක්ක දායකය. ගමේ ගොඩේ සිට කරපින්නාගෙන එන සියලුම සිරිත් විරිත් ගුණ ගරුක කම් සහ හැදියාවන් පොළොවේ ගසා හාමුලාගේ සංස්කෘතික වහලුන් වීමට යාම ඛේදවාචකයකි. මොවුන් හදාගන්නා ඊනියා පොස් සංස්කෘතික රාමුව තුල හිරවෙන මොවුන් අවසානයේ තමන්ගේ නොයෙක් වටිනාකම් අහිමි කර ගනී.
මම ආසම තනිකම
හුදකලා අහස යට
වැහි අඳුර ගලන ගලන සද
තෙත් පවන් සුවඳ මැද
තනිවෙමි මගේ ලොව තුල
ලොව සිහින දකින සද
සඳ බැලුම් හෙලන රැය
නිල් අඳුර තුල දිලෙන
තරු මිතුරියන් සමග
මිහිරි තනුවක රසය
බෙදාගත හැකිය මට
හුදකලා වෙරළකට
හාදු දෙන රළ පෙලට
හද සුසුම් මුදාහැර
හුදකලා ලෝකයක
තනිවෙන්න හිතයි මට
පොදු සමාජයේ ලාංකික ගැහැණිය
මේක කලින් ෆේස්බුක් එකේ ලියපු එකක්.
අපේ සමාජය ගෑනුන්ව සලකන්නේ යමෙකුගෙන් යැපෙන, පිරිමියා තරම් ශක්තිමත් නැති, පිරිමියාට ගරු කල යුතු පිරිසක් විදිහට.
මෙන්න මේ ගෑනු, පිරිමින්ට වඩා පහත් ජීවීන් විශේෂයක්ය කියන අයිඩියා එක මේන්ටේන් කරන්නෙම ගෑනු. මේක සංස්කෘතිකව එන දෙයක් වෙන්න පුලුවන්. කොහොම උනත් , ගෑනියක් ඉන්නෙ පිරිමියෙක් වෙනුවෙන් ජීවත් වෙන්න කියන එක මේ සමාජෙ ගෑනු විශ්වාස කරනව, ගොඩක් වෙලාවට පිරිමිත්. මේකෙ බේසික් අයිඩියා එක තමා ගෑනු මේ ලෝකෙට එන්නෙ සවයිව් වෙන්න කියන එක. ලෝකෙට සාධනීය දෙයක් කරන්න නෙවෙයි කියන එක.ගෑනු මේකෙදි තමන්ව ගොඩදාගන්න පාවිච්චි කරන වචනෙ තමා අම්ම. ඇත්තට ගෑනු මේ ලෝකෙට එන්න අම්ම කෙනෙක් වෙන්නද? සරලව කිව්වොත් වර්ගයා බෝ කරන්නද ?
එහෙම ගත්තොත් පිරිමිත් මේ ලෝකෙට එන්නෙ වර්ගයා බෝ කරල මැරිල යන්න වෙන්න ඕනෙ. ගෑනියක් ජීවත් වෙන්නෙ තවත් කෙනෙක් වෙනුවෙන්ය කියන අයිඩියා එක හරිම පටුයි. මෙතනදී තමයි ගෑනුන් පහත් කියන අයිඩියා එක හැදෙන්නෙ. ගෑනු , පිරිමි මත ඩිපෙන්ඩ් වෙනව කියන එක හැදෙන්නෙ. ජීවිතේ එක කොටසක් වෙන ආදරේ , විවාහය වගේ දේවල් ගෑනු තමන්ගෙ ජීවිතේම කරගන්නෙ මෙතනදි. ගෑනු ජීවිත් වෙන්න ඕනෙ ආදරේ කරන්නයි බඳින්නයි ළමයි හදන්නයි කියන ගොත්රික අයිඩියා එක තමා ගෑනුන්ව පටු තැනක හිර කරන්නෙ. දැන් කාලෙ ඉන්න ගොඩක් තරුණ කෙල්ලොන්ට තියන එකම වැලිවු එක ලස්සන (කොල්ලෙක් ලබා ගැනීමේ හැකියාව) විතරයි. ඒ නිසා ඒ අයගෙ ජීවිතේ වෙන්නෙ ඒක.
දුක් සයුර
අතේ ගුලි උනු කඳුළු රුපියල් පාව යන්නට නොදී රැක ගන්
ඉමක් නොපෙනෙන දුක් සයුර මැද මිරිඟුවක් , දිවයිනක් සොයපන්
විඩාබර වූ ගතේ දා බිඳු පොළෝ තලයට මුදා හැරපන්
දුකත් මීවිත සමග මුසුකොට සිහින් මදහස් මුවේ නංවන්
පෙම් කිරිල්ලී
ගමෙන් නගෙරෙට ආ කිරිල්ලී
තටු විදා පියඹූ කිරිල්ලී
සිහින ලෝකෙක උන් කිරිල්ලී
කුරුල්ලෙකු සෙව්වා ඉගිල්ලී
රෑ පුරා දෙඩුවා කිරිල්ලී
තටු පවා පිදුවා කිරිල්ලී
කුරුල්ලා වෙනුවෙන් ඉගිල්ලී
ජීවිතේ දන්දුන් කිරිල්ලී
සිදුණු අත්තටු ඇති කිරිල්ලී
කොහේ යන්නද දැන් ඉගිල්ලී
කුරුල්ලා ගොස් ඇත ඉගිල්ලී
දමා තනිකර පෙම් කිරිල්ලී
A Layered Architecture for .Net
Understanding the Architecture
We separate our application in to sub components which are physically or logically separated by each other. An essence of a layered system is the separation of concerns. the sub components does their specific job and only that. for an example the Data Access Layer doesn't do any business logic processing. a layered architecture makes the system more maintainable and clean. a change in some implementation will not break another as they do not know each other. we define our application using interfaces. we will never touch bottom layer from upper layers.Creating the Solution
We will name this solution as OPS. first we should create the solution. create the solution by running the below commands.Defining the Application
We should first define our application by defining its capabilities and data requirements. we do this in a separate assembly. we have created the OPS class library exactly for that. for now we will be working on the OPS folder. Delete the automatically created Class1.cs from the folder, Create Injection folder, Put the files below into the Injection folderThese 3 interfaces will help to manage dependencies throughout the project
Implementing the Dependency Store
Go to the OPS.API folder and create Injection folder. we gonna implement DependencyStore using .Net core ServiceCollection. add the below file to the Injection folderCreating a Data Provider
Go to the OPS folder, create Models, Models/Data folder and add the below file. (this can be generated automatically if you use Genie). however the file should be something like below. its just an interface with properties of an Order. our data model inside the DAL should implement this. this is not necessary for the architecture, you can have a different way to do thisGo to the OPS folder, create Providers, Providers/Data folder and add the below file. This is just a minimal data provider with Create, Delete, Get operations. this could contain any data related logic like FindByQuentity ... etc
Implementing the Data Provider
Inside OPS.DAL, create Providers folder. Create the OrderProvider. this is the class which implements the IOrderProviderAs i use Genie i request the IDBContext to take the database access in.
Inside OPS.DAL, create Modules folder. Create the ProviderModule. this is the module which holds all the data providers
Inside OPS.DAL, create the Bootstrapper class. this is the class which aggregates all the modules inside the assembly.
Creating a Service
Go to the OPS folder, create Services, Services/Business folder and add the below file. This is just a minimal service .this could contain any business related logic.Implementing the Service
Inside OPS.BL, create Services folder. Create the OrderService. this is the class which implements the IOrderServiceInside OPS.BL, create Modules folder. Create the ServiceModule. this is the module which holds all the services
Inside OPS.BL, create the Bootstrapper class. this is the class which aggregates all the modules inside the assembly.
Controller
Rename the default ValuesController to OrdersController and change the content as belowIn this controller where we use the OrderService to call business functions, there should be no business logic in the controller, only calls to the service functions.
Bootstrapping
Now we just need to connect all the modules using the bootstrappers we have created. we should do this in the Startup class in case of .Net coreI have not included any error handling, Logging or authorization. you will have to implement them also in a real production code. well, now you can test your API. you can find the source code for OPS from here.

