<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The SIGMA</title>
	<atom:link href="https://danushka96.github.io/sigma/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>https://danushka96.github.io/sigma/</link>
	<description>&#60;For Those Who Code/&#62;</description>
	<lastBuildDate>
	Sat, 02 Mar 2019 16:57:34 +0000	</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.1.1</generator>
	<item>
		<title>මොකක්ද මේ Flutter ?</title>
		<link>https://danushka96.github.io/sigma/index.php/2019/02/21/flutter1/</link>
				<comments>https://danushka96.github.io/sigma/index.php/2019/02/21/flutter1/#comments</comments>
				<pubDate>Thu, 21 Feb 2019 09:32:19 +0000</pubDate>
		<dc:creator><![CDATA[Ruchira Swarnapriya]]></dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[flutter]]></category>
		<category><![CDATA[android studio]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[visual studio code]]></category>

		<guid isPermaLink="false">https://danushka96.github.io/sigma/?p=1918</guid>
				<description><![CDATA[<p><span class="rt-reading-time" style="display: block;"><span class="rt-label">Reading Time: </span> <span class="rt-time">2</span> <span class="rt-label rt-postfix">minutes</span></span> කෙටියෙන් කිව්වොත් flutter කියන්නේ 2017 මැයි මාසේ Google ලා හදුන්වා දුන්නු නවතම open &#8211; source mobile application development SDK එක. Mobile application development ලේසියෙන් වගේම ලස්සනට development කරන්න flutter වලින් පුලුවන්. Android App වගේම IOS App develop කරන්න flutter වලින් ඉඩ සලසා දීලා තියෙනවා. අපි මුලින්ම බලමු flutter අපේ laptop [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://danushka96.github.io/sigma/index.php/2019/02/21/flutter1/">මොකක්ද මේ Flutter ?</a> appeared first on <a rel="nofollow" href="https://danushka96.github.io/sigma/">The SIGMA</a>.</p>
]]></description>
								<content:encoded><![CDATA[<span class="rt-reading-time" style="display: block;"><span class="rt-label">Reading Time: </span> <span class="rt-time">2</span> <span class="rt-label rt-postfix">minutes</span></span>
<p style="text-align:left">කෙටියෙන් කිව්වොත් flutter කියන්නේ 2017 මැයි මාසේ Google ලා හදුන්වා දුන්නු නවතම open &#8211; source mobile application development SDK එක. Mobile application development ලේසියෙන් වගේම ලස්සනට development කරන්න flutter වලින් පුලුවන්. Android App වගේම IOS App develop කරන්න flutter වලින්  ඉඩ සලසා දීලා තියෙනවා.</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="https://cdn.arstechnica.net/wp-content/uploads/2018/06/7-2-1-800x311.jpg" alt="" width="363" height="141"/></figure></div>



<p style="text-align:center">අපි මුලින්ම බලමු flutter අපේ laptop වලට install කරගන්න විදිය.පහත link එකෙන් flutter download කරගන්න පුලුවන්. </p>



<p><a href="https://flutter.io/docs/get-started/install">https://flutter.io/docs/get-started/install</a></p>



<p style="text-align:left">‌Flutter zip file එක උඩ link එකෙන් download කරගෙන zip file එක extract කරනකොට C:/src/flutter වගේ destination එකකට extract කරන එක තමයි හොදම C:/Programs Files/src/flutter වගේ destination එකකට extract කරනවානම් privileges හදන්න වෙනවා එ නිසා C:/src/flutter වගේ destination එකකට extract කරන එක තමයි හොදම.</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl2-1024x625.jpg" alt="" class="wp-image-1928" width="565" height="345" srcset="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl2-1024x625.jpg 1024w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl2-300x183.jpg 300w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl2-768x469.jpg 768w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl2.jpg 1206w" sizes="(max-width: 565px) 100vw, 565px" /></figure></div>



<p style="text-align:left">Flutter install කලාට පස්සේ  path එක set කරන්න ඔනී. Edit the system environment variable වල Environment Variable tab එකෙන් කරන්න පුලුවන්.</p>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl3-1.jpg" alt="" class="wp-image-1937" width="317" height="334"/></figure></div>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl4.jpg" alt="" class="wp-image-1938" width="318" height="349" srcset="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl4.jpg 707w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl4-272x300.jpg 272w" sizes="(max-width: 318px) 100vw, 318px" /></figure></div>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img src="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl5.jpg" alt="" class="wp-image-1939" width="327" height="361" srcset="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl5.jpg 597w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl5-271x300.jpg 271w" sizes="(max-width: 327px) 100vw, 327px" /></figure></div>



<p style="text-align:left">Flutter install කරගෙන editor එකක් setup කරගන්න ඔනේ. Flutter support කරන editors වෙන්නේ Android Studio, Visual Studio Code, <a href="https://www.jetbrains.com/idea/download/">IntelliJ IDEA Ultimat</a>. මොන editor එකක් use කලත් laptop එකේ Android Studio install කරලම තියෙන්න ඔනේ.</p>



<p>Visual Studio Code editor එක විදියට configure කරන ආකාරය පහත link එකෙන් බලාගන්න පුලුවන්.</p>



<p><a href="https://flutter.io/docs/get-started/editor?tab=vscode">https://flutter.io/docs/get-started/editor?tab=vscode</a></p>



<figure class="wp-block-image"><img src="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl6.jpg" alt="" class="wp-image-1943" srcset="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl6.jpg 763w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl6-300x79.jpg 300w" sizes="(max-width: 763px) 100vw, 763px" /><figcaption><br><br></figcaption></figure>



<div class="wp-block-image"><figure class="aligncenter"><img src="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl7.jpg" alt="" class="wp-image-1944" srcset="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl7.jpg 551w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/fl7-300x114.jpg 300w" sizes="(max-width: 551px) 100vw, 551px" /></figure></div>



<p>‌Android Studio editor එක විදියට configure කරන ආකාරය පහත link එකෙන් බලාගන්න පුලුවන්.</p>



<p><a href="https://flutter.io/docs/get-started/editor?tab=androidstudio">https://flutter.io/docs/get-started/editor?tab=androidstudio</a></p>



<figure class="wp-block-image"><img src="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/2-1.png" alt="" class="wp-image-1948" srcset="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/2-1.png 1015w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/2-1-300x237.png 300w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/2-1-768x608.png 768w" sizes="(max-width: 1015px) 100vw, 1015px" /></figure>



<p>ඊලග blog එකෙන් login page එකක් create කරන හැටි ඉගෙන ගමු..</p>
<div id="emojics-root"></div><p>The post <a rel="nofollow" href="https://danushka96.github.io/sigma/index.php/2019/02/21/flutter1/">මොකක්ද මේ Flutter ?</a> appeared first on <a rel="nofollow" href="https://danushka96.github.io/sigma/">The SIGMA</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://danushka96.github.io/sigma/index.php/2019/02/21/flutter1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
							</item>
		<item>
		<title>MEAN Stack වලින් Sample Application එකක් Design කරගමු. (PART 03)</title>
		<link>https://danushka96.github.io/sigma/index.php/2019/02/20/mean-stack-sample-application-design-part-03/</link>
				<comments>https://danushka96.github.io/sigma/index.php/2019/02/20/mean-stack-sample-application-design-part-03/#respond</comments>
				<pubDate>Wed, 20 Feb 2019 16:28:44 +0000</pubDate>
		<dc:creator><![CDATA[Danushka Herath]]></dc:creator>
				<category><![CDATA[angular.js]]></category>
		<category><![CDATA[mean stack]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[back-end]]></category>
		<category><![CDATA[front-end]]></category>

		<guid isPermaLink="false">https://danushka96.github.io/sigma/?p=1906</guid>
				<description><![CDATA[<p><span class="rt-reading-time" style="display: block;"><span class="rt-label">Reading Time: </span> <span class="rt-time">3</span> <span class="rt-label rt-postfix">minutes</span></span> අපි කලින් ලිපි 2න් කතා කලා fontend එක සහ backend එක Design කරගන්න විදිය. මේ ලිපියෙන් කතා කරන්නේ මේ වෙන වෙනම හදා ගත්ත fontend එකයි Backend එකයි එකට Connect කරගන්නේ කොහොමද කියලා. කලින් ලිපි 2 බැලුවේ නැත්නම් මෙතනින් බලන්න Part 01part 02 මුලින්ම frontend කියන folder එක ඇතුලට ගිහින් එතනින් [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://danushka96.github.io/sigma/index.php/2019/02/20/mean-stack-sample-application-design-part-03/">MEAN Stack වලින් Sample Application එකක් Design කරගමු. (PART 03)</a> appeared first on <a rel="nofollow" href="https://danushka96.github.io/sigma/">The SIGMA</a>.</p>
]]></description>
								<content:encoded><![CDATA[<span class="rt-reading-time" style="display: block;"><span class="rt-label">Reading Time: </span> <span class="rt-time">3</span> <span class="rt-label rt-postfix">minutes</span></span>
<p>අපි කලින් ලිපි 2න් කතා කලා fontend එක සහ backend එක Design කරගන්න විදිය. මේ ලිපියෙන් කතා කරන්නේ මේ වෙන වෙනම හදා ගත්ත fontend එකයි Backend එකයි එකට Connect කරගන්නේ කොහොමද කියලා. කලින් ලිපි 2 බැලුවේ නැත්නම් මෙතනින් බලන්න</p>



<p><a href="https://danushka96.github.io/sigma/index.php/2019/02/19/mean-stack-sample-application-1/">Part 01</a><br><a href="https://danushka96.github.io/sigma/index.php/2019/02/19/mean-stack-sample-application-design-part-02/">part 02</a></p>



<p>මුලින්ම frontend කියන folder එක ඇතුලට ගිහින් එතනින් command prompt එකක් open කරන්න. දැන් අපි කරන්න හදන්නේ font එකේ පොඩි වෙනස්කම් කිහිපයක් කරන්න.</p>



<pre class="wp-block-preformatted">cd frontend</pre>



<p>දැන් අපි අලුතින් Issue Service එකක් හදා ගන්න ඕන. ඒ service එක හරහා තමයි අපි Backend එකෙන් අපිට ඕන Data ගන්න සහ දාන්න යන්නේ. මුලින්ම ඒක මේ විදියට Generate කරගමු.</p>



<pre class="wp-block-preformatted">ng g s services/Issue</pre>



<p>මේ විදියට issue service එක generate කරගත්තාම services කියලා folder එකක් ඇතුලේ issue.service.ts කියන file එක generate වෙනවා. දැන් අපි මේ issue service එක app.module.ts එකට import කරගන්න ඕන.</p>



<pre class="wp-block-preformatted"> import { IssueService } from './services/issue.service'; <br></pre>



<p>ඒ වගේම providers array එක ඇතුලටත් මේක දාගන්න. </p>



<pre class="wp-block-preformatted">providers: [IssueService]</pre>



<p>මේකෙත් මේ issue Service එක අපේ components ඇතුලේ use කරන්න පුළුවන් වෙනවා.</p>



<h3 id="9ff5">Implementing IssueService</h3>



<p>කලින් කිවුවා වගේ මේ issue Service එකේ අරමුණ තමයි backend එකත් එක්ක ගනුදෙනු කිරීම. ඒකට අපි http requests යොදා ගන්නවා. ඒක නිසා මේ විදියට මුලින්ම issue.service.ts file එකට httpClient එක import කරගන්න. </p>



<pre class="wp-block-preformatted">import { HttpClient } from '@angular/common/http';</pre>



<p>ඒ වගේම Constructor එකට මේ http service එක inject කරගන්න මේ විදියට</p>



<pre class="wp-block-preformatted">constructor(private http: HttpClient) {}</pre>



<h3 id="def9">Retrieving Issues</h3>



<p>අපි දැන් බලමු කොහොමද Database එකේ save වෙලා තියෙන issue එකක් හෝ කිහිපයක් Backend එක හරහා Retrieve කරන්නේ කොහොමද කියලා.</p>



<p>මේකෙ වර්ග 2ක් තියෙනවා. ඒ කියන්නේ අපි issue ID එකක් දුන්නාම අදාල issue එක ගන්න එකයි තියෙන ඔක්කොම Issues ටික ගන්න එකයි. මේ method 2 හදා ගන්න විදිය බලමු. </p>



<pre class="wp-block-preformatted"> import { Injectable } from '@angular/core';<br> import { HttpClient } from '@angular/common/http';<br><br> @Injectable({<br>   providedIn: 'root'<br> })<br><br> export class IssueService {<br>   uri = 'http://localhost:4000/';<br>   constructor(private http: HttpClient) {<br>   }<br>   getIssues() {<br>     return this.http.get(<code>${this.uri}/issues</code>);<br>   }<br>   getIssueById(id) {<br>     return this.http.get(<code>${this.uri}/issues/${id}</code>);<br>   }<br> }</pre>



<p>මේකෙදි අපි කරන්නේ http://localhost:4000/issues කියන backend එක response කරන url එකට get request එකක් යවලා json object එකක් විදියට result එකක් ගන්නවා. getIssueById method එකෙන් කරන්නෙත් ඒ වගේම issue id එක දුන්නම අදාල issue එක josn object එකක් විදියට එළියට ගන්නවා.</p>



<h3 id="04da">Adding Issues</h3>



<p>මේකෙදි අපි post request එකක් විදියට අපිට add කරන්න ඕන issue එකේ Data ටික යවන්න ඕන. ඒක කරන්නේ මේ විදියට..</p>



<pre class="wp-block-preformatted">   addIssue(title, responsible, description, severity) {<br>     const issue = {<br>       title: title,<br>       responsible: responsible,<br>       description: description,<br>       severity: severity<br>     };<br>     return this.http.post(<code>${this.uri}/issues/add</code>, issue);<br>   }</pre>



<p>ඔයාලට පේනවා ඇති මෙතනදි අපි post request එකත් එක්ක issue කියලා අපි අලුතින් හදා ගත්ත object එකත් යවනවා. මේ request එක යැවුවට පස්සේ එතනින් එහාට Backend එක තමයි Database operations handle කරගන්නේ. මතක ඇති අපි කලින් මේ methods ටික backend එකේ implement කලා. </p>



<h3 id="9b4b">Updating Issues</h3>



<p>කලින් කරපු addIssue එක වගේම post request එකක් යවනවා මේකෙත් Update වෙන්න ඕන dataත් එක්ක.</p>



<pre class="wp-block-preformatted">updateIssue(id, title, responsible, description, severity, status) {<br>     const issue = {<br>       title: title,<br>       responsible: responsible,<br>       description: description,<br>       severity: severity,<br>       status: status<br>     };<br>     return this.http.post(<code>${this.uri}/issues/update/${id}</code>, issue);<br>   }</pre>



<h3 id="a9b4">Deleting Issues</h3>



<p>මේකෙදි අපි කරන්නේ අපිට Delete කරන්න ඕන issue එකේ id එක get request එකක් විදියට යනවනවා backend එකට</p>



<pre class="wp-block-preformatted">deleteIssue(id) {<br>   return this.http.get(<code>${this.uri}/issues/delete/${id}</code>);<br>}</pre>



<p>මේ පහලින් තියෙන්නේ සම්පූර්ණ issue service file එකේ තියෙන code එක.</p>



<pre class="wp-block-preformatted"> import { Injectable } from '@angular/core';<br> import { HttpClient } from '@angular/common/http';<br><br> @Injectable({<br>   providedIn: 'root'<br> })<br><br> export class IssueService {<br>   uri = 'http://localhost:4000/';<br>   constructor(private http: HttpClient) {<br>   }<br>   addIssue(title, responsible, description, severity) {<br>     const issue = {<br>       title: title,<br>       responsible: responsible,<br>       description: description,<br>       severity: severity<br>     };<br>     return this.http.post(<code>${this.uri}/issues/add</code>, issue);<br>   }<br>   getIssues() {<br>     return this.http.get(<code>${this.uri}/issues</code>);<br>   }<br>   getIssueById(id) {<br>     return this.http.get(<code>${this.uri}/issues/${id}</code>);<br>   }<br>   updateIssue(id, title, responsible, description, severity, status) {<br>     const issue = {<br>       title: title,<br>       responsible: responsible,<br>       description: description,<br>       severity: severity,<br>       status: status<br>     };<br>     return this.http.post(<code>${this.uri}/issues/update/${id}</code>, issue);<br>   }<br>   deleteIssue(id) {<br>     return this.http.get(<code>${this.uri}/issues/delete/${id}</code>);<br>   }<br> }</pre>



<h3 id="e28c">Injecting The&nbsp;Service</h3>



<p>දැන් කරන්න තියෙන්නේ අපි හදපු issue Service එක inject කරගන්න එක. ඒකට අපි හදපු හැම component එකේම (list.component.ts, edit.component.ts and create.component.ts)  මේ විදියට දාගෙන යන්න.</p>



<pre class="wp-block-preformatted">import { IssueService } from '../../services/issue.service';</pre>



<p>ඒ වගේම මේ විදියට dependency injection එකක් කරන්නත් ඕන</p>



<pre class="wp-block-preformatted"> constructor(private issueService: IssueService, private router: Router) { }</pre>



<p>හැම component එකේම මේ විදියට හදා ගත්තාම අපේ components Design කරගන්න එකේ මූලික පියවර ඉවරයි.</p>



<p>අපි මේ ලිපියෙදි ඉගෙන ගත්තේ angular service එකක් හරහා backend එකත් එක්ක fontend එක connect කරන්නේ කොහොමද කියලා. ඊළඟ ලිපියෙන් අපි කතා කරමු front-end එක complete කරගන්නේ කොහොමද කියලා. මේ දක්වා මොනවා හරි අවුලක් තිබුණොත් comment එකක් දාන්න.</p>
<div id="emojics-root"></div><p>The post <a rel="nofollow" href="https://danushka96.github.io/sigma/index.php/2019/02/20/mean-stack-sample-application-design-part-03/">MEAN Stack වලින් Sample Application එකක් Design කරගමු. (PART 03)</a> appeared first on <a rel="nofollow" href="https://danushka96.github.io/sigma/">The SIGMA</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://danushka96.github.io/sigma/index.php/2019/02/20/mean-stack-sample-application-design-part-03/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>MEAN Stack වලින් Sample Application එකක් Design කරගමු. (PART 02)</title>
		<link>https://danushka96.github.io/sigma/index.php/2019/02/19/mean-stack-sample-application-design-part-02/</link>
				<comments>https://danushka96.github.io/sigma/index.php/2019/02/19/mean-stack-sample-application-design-part-02/#respond</comments>
				<pubDate>Tue, 19 Feb 2019 16:06:27 +0000</pubDate>
		<dc:creator><![CDATA[Danushka Herath]]></dc:creator>
				<category><![CDATA[angular.js]]></category>
		<category><![CDATA[mean stack]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[angular]]></category>
		<category><![CDATA[back-end]]></category>
		<category><![CDATA[front-end]]></category>
		<category><![CDATA[issueTracker]]></category>

		<guid isPermaLink="false">https://danushka96.github.io/sigma/?p=1900</guid>
				<description><![CDATA[<p><span class="rt-reading-time" style="display: block;"><span class="rt-label">Reading Time: </span> <span class="rt-time">6</span> <span class="rt-label rt-postfix">minutes</span></span> අපි කලින් ලිපියෙන් කතා කලා කොහොමද FrontEnd එක angular වලින් Design කරගන්නේ කියලා. ඇත්තටම අපි නිකත් Structure එකක් විතරයිනෙ හැදුවේ. දැනට ඒ ඇති. මේ ලිපියෙන් කතා කරන්නේ Node වලින් Backend එක හදා ගන්න විදිය ගැන. බලමු හදා ගන්නේ කොහොමද කියලා. මුලින්ම අපි කලින් fontEnd කියලා අලුත් Project එකක් හැදුව තැනම [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://danushka96.github.io/sigma/index.php/2019/02/19/mean-stack-sample-application-design-part-02/">MEAN Stack වලින් Sample Application එකක් Design කරගමු. (PART 02)</a> appeared first on <a rel="nofollow" href="https://danushka96.github.io/sigma/">The SIGMA</a>.</p>
]]></description>
								<content:encoded><![CDATA[<span class="rt-reading-time" style="display: block;"><span class="rt-label">Reading Time: </span> <span class="rt-time">6</span> <span class="rt-label rt-postfix">minutes</span></span>
<p></p>



<p>අපි <a href="https://danushka96.github.io/sigma/index.php/2019/02/19/mean-stack-sample-application-1/">කලින් ලිපියෙන්</a> කතා කලා කොහොමද FrontEnd එක angular වලින් Design කරගන්නේ කියලා. ඇත්තටම අපි නිකත් Structure එකක් විතරයිනෙ හැදුවේ. දැනට ඒ ඇති. මේ ලිපියෙන් කතා කරන්නේ Node වලින් Backend එක හදා ගන්න විදිය ගැන. බලමු හදා ගන්නේ කොහොමද කියලා.</p>



<p>මුලින්ම අපි කලින් fontEnd කියලා අලුත් Project එකක්  හැදුව තැනම අලුත් folder එකක් හදනවා Backend කියලා මේ විදියට.</p>



<pre class="wp-block-preformatted">mkdir backend </pre>



<p>දැන් මම ඉන්න Directory එක වෙනස් කර ගන්නවා අලුතින් හදපු Folder එකට</p>



<pre class="wp-block-preformatted">cd backend </pre>



<p>දැන් අලුත් project එකක් initialise කරගන්නවා මේ විදියට npm command එකෙන්.</p>



<pre class="wp-block-preformatted"> npm init -y </pre>



<p>අපේ project එකේ <a href="https://dev.to/dhruv/writing-es6-in-your-nodejs-applications-33jk">ES6 Features</a> යොද ගන්න නම් අපිට Babel compiler එක use කරන්න වෙනවා. ඒකට  babel-cli එක සහ babel-preset-env එක මේ විදියට install කරගන්න පුළුවන්.</p>



<pre class="wp-block-preformatted"> npm install --save-dev babel-cli babel-preset-env </pre>



<p>මේක install වෙලා ඉවර වුණාට පස්සේ අපි කරන්නේ Babel config file එක හදා ගන්න එක. ඒකට .babelrc නමින් අලුත් file එකක් හදලා ඒකේ content එක විදියට මේක දාගන්න. </p>



<pre class="wp-block-preformatted"><code>{<br>  "presets": ["env"]<br>}</code> </pre>



<p>හරි දැන් Babel compiler එක use කරන්න අපිට පුළුවන්</p>



<h3 id="169d">Installing babel-watch</h3>



<p>මේක අපි යොදා ගන්නේ code එකේ change එකක් වෙනකොට autoම server එක restart කර ගන්න. ඒක ගොඩක් ලේසියි Manual restart කරනවට වඩා. මේක Install කරගන්නේ මෙහෙමයි.</p>



<pre class="wp-block-preformatted"> npm install babel-watch --save-dev </pre>



<p>ඊට පස්සේ අපි කරන්න ඕන Package.json එකට මේක add කරගන්න එක. ඒකට package.json file එක open කරගෙන මේක paste කරගන්න scripts කියලා තියෙන කොටස ඇතුලෙ.</p>



<pre class="wp-block-preformatted"> <br><code>"scripts": {<br>    "dev": "babel-watch server.js"<br>  }</code> </pre>



<p>මේක අපි add කරේ මේ ලිපියේ අන්තිමට අපි server එක start කරන්න මේ command එක use කරන නිසා. </p>



<h3 id="a925">Installing Express</h3>



<p>අපි දැන් Express Framework එක add කරගන්න යන්නේ. මේ steps ටික follow කරන්න</p>



<pre class="wp-block-preformatted"> npm install express </pre>



<p>අපි database එකක් විදියට යොදා ගන්න mogodb driver එකත් මේ විදියට install කරගන්න.</p>



<pre class="wp-block-preformatted"> npm install mongoose </pre>



<p>ඒ වගේම මේකෙදි අපි backend එකේ ඉදන් frontend එකට data යවනවා. ඒක නිසා අපිට ඕන වෙනවා cors package එකත්.</p>



<pre class="wp-block-preformatted"> npm install cors </pre>



<p>මේ cors කියන package එක Express server එකට middleware එකක් විදියට වැඩ කරනවා. ඒ කියන්නේ Cross-Origin Resource Sharing මේකෙදි වෙන්නේ මොකක් හරි request එකක header එකේ අපි allow කරලා තියෙන content එකක් තියෙනවද කියලා බලනවා Domain එකෙන් පිටින් එන requests වලට.</p>



<h3 id="1b57">Implementing The&nbsp;Server</h3>



<p>අපෙ Baisc Packages Installation එක ඉවර වුණාට පස්සේ අපි දැන් බලන්න හදන්නේ Server එක implement කරගන්න විදිය. </p>



<h4 id="4908">Implementing A Basics Node.js/Express Server</h4>



<p>මුලින්ම අපි බලමු Baisc server එකක් හදා ගන්න විදිය.. මේකට project එකට අලුතින් file එකක් add කරන්න ඕන server.js කියලා. ඒකේ content එක මේ වගේ හදා ගන්න.</p>



<pre class="wp-block-preformatted"><br><code>import express from 'express';</code><br><code>const app = express();<br>app.get('/', (req, res) =&gt; res.send('Hello World!'));<br>app.listen(4000, () =&gt; console.log(`Express server running on port 4000`));</code> </pre>



<p>දැන් අපි මේක run කරලා බලමු. ඒකට මේ command එක use කරන්න. </p>



<pre class="wp-block-preformatted">npm run dev<br></pre>



<p>මේ dev කියන වචනේ භිවිතා කරන්න පුළුවන් වුණේ අපි කලින් package.json එකට add කරපු නිසා. දැන් මේ url එක ( http://localhost:4000/ ) web browser එකක් දැම්මොත් අපිට hello wold කියලා output එකක් බලා ගන්න පුළුවන්.</p>



<p>මොනවා හරි error එකක් ආවොත් fix කරගන්න try එකක් දීලා බැරි වුනොත් node_modules කියන folder එක backend එකේන delete කරලා package.json එක මේ විදියට හදාගෙන npm install කියන command එක run කරගන්න. </p>



<pre class="wp-block-preformatted">{<br>  "name": "backEnd",<br>  "version": "1.0.0",<br>  "description": "",<br>  "main": "index.js",<br>  "scripts": {<br>    "test": "echo \"Error: no test specified\" &amp;&amp; exit 1",<br>    "dev": "babel-watch server.js"<br>  },<br>  "keywords": [],<br>  "author": "",<br>  "license": "ISC",<br>  "devDependencies": {<br>    "babel-cli": "^6.26.0",<br>    "babel-preset-env": "^1.7.0",<br>    "babel-watch": "^2.0.8"<br>  },<br>  "dependencies": {<br>    "cors": "^2.8.5",<br>    "express": "^4.16.4",<br>    "mongoose": "^5.4.13"<br>  }<br>}<br></pre>



<h3 id="0c6d">Extending The Server Implementation</h3>



<p>දැන් අපි කරන්න යන්නේ මේ server එක අපිට ඕන විදියට වැඩි දියුණු කරගන්න එක. මේකෙදි අපි ප්‍රධාන Task 5ක් කරන්න යනවා. ඒවා තමයි</p>



<ul><li>GET request එකකින් list එක retrieve කරගන්න එක</li><li>GET request එකකින් issue id එකකට අදාල record එකක් ගන්න එක</li><li>POST request එකකින් අලුත් issue එකක් insert කරගන්න එක</li><li>POST request එකකින් දැනට තියෙන record එකක් update කරගන්න එක</li><li>GET request එකකින් issue එකක් delete කරගන්න එක</li></ul>



<p>මුලින් අපි හදපු server.js එක මේ විදියට හදා ගන්න.</p>



<pre class="wp-block-preformatted">const app = express();<br> const router = express.Router();<br><br> app.use(cors());<br> app.use(bodyParser.json());<br><br> mongoose.connect('mongodb://[server]/issues');<br> const connection = mongoose.connection;<br><br> connection.once('open', () =&gt; {<br>     console.log('MongoDB database connection established successfully!');<br> });<br><br> app.use('/', router);<br> app.listen(4000, () =&gt; console.log(<code>Express server running on port 4000</code>));</pre>



<p>මේකෙ mongoose.connect එක ඇතුලෙ තියෙන server එක වෙනුවට ඔයගෙ තියෙන remote server එකක් නැත්නම් local mongo server එක දාගන්න. local server එකක් නම් server වෙනුවට local කියලා දාගන්න. ඒ වගේම ඔයාගෙ mongo server එක ඇතුලේ issues කියලා අලුත් collection එකකුත් හදා ගන්න. </p>



<p>අපිට හැම තිස්සෙම issues refer කරන්න වෙන නිසා දැන් කරන්න හදන්නේ අලුතින් issue කියලා model එකක් හදා ගන්න එක. ඒකට ඔයාගෙ backend folder එක ඇතුලේ අලුතින් <strong>models&nbsp;</strong>කියලා folder එකක් හදාගෙන ඒක ඇතුලේ <strong>Issue.js&nbsp;</strong>කියලා file එකක් create කරගන්න. ඒකේ content එකට මේක paste කරගන්න. මෙකෙ අපි ලියන්නේ අපේ issue එකට ඕන කරන properties ටික.</p>



<pre class="wp-block-preformatted"> import mongoose from 'mongoose';<br> const Schema = mongoose.Schema;<br> let Issue = new Schema({<br>     title: {<br>         type: String<br>     },<br>     responsible: {<br>         type: String <br>     },<br>     description: {<br>         type: String<br>     },<br>     severity: {<br>         type: String<br>     },<br>     status: {<br>         type: String,<br>         default: 'Open'<br>     }<br> });<br> export default mongoose.model('Issue', Issue);</pre>



<p>දැන් අපි මේ හදා ගත්ත අලුත් model එක server.js එකට import කරගන්න ඕන. ඒකට Server.js එකේ මේ විදියට import command එකක් උඩින් ලියා ගන්න</p>



<pre class="wp-block-preformatted">import Issue from './models/Issue';</pre>



<h3 id="aaa0">Retrieving All&nbsp;Issues</h3>



<p>අපි දැන් කරන්න යන්නේ අපෙ පළවෙනි task එක. ඒ කියන්නේ issues list එකම retrieve කරගන්න එක. ඒකට මේ Code එක server.js එකේ ලියා ගන්න. </p>



<pre class="wp-block-preformatted"> router.route('/issues').get((req, res) =&gt; {<br>     Issue.find((err, issues) =&gt; {<br>         if (err)<br>             console.log(err);<br>         else<br>             res.json(issues);<br>     });<br> });</pre>



<p>මේකෙ වෙන වැඩේ සරලවම කිවුවොත් router එකට &#8216;/issues&#8217; කියලා get request එකක් ආවොත් එයා Issue කියන Schema එකේ තියෙන records ඔක්කොම අරගෙන json response එකක් විදියට එළියට දෙනවා. ඕන නම් ඔයාලට පුළුවන් මේ Code එක වෙනස් කර කර බලන්න මොන වගේ දේවල්ද කරන්න පුුළුවන් කියලා. </p>



<p>මම මේ වගේ Methods ඔක්කොම ලියන විදිය කියලා අන්තිමට server.js එකේ තියෙන්න ඕන content එක දාන්නම්</p>



<h3 id="7fc2">Retrieving An Issue By&nbsp;ID</h3>



<p>මේකෙදි කරන්නේ අපි issue එකේ id එක දුන්නාම ඒ ID එකට අදාල record එක විතරක් අරගෙන දෙන ඒක. ඒක ලියන්නේ මෙහෙමයි.</p>



<pre class="wp-block-preformatted">router.route('/issues/:id').get((req, res) =&gt; {<br>     Issue.findById(req.params.id, (err, issue) =&gt; {<br>         if (err)<br>             console.log(err);<br>         else<br>             res.json(issue);<br>     })<br> });</pre>



<p>:id එකෙන් කියන්නේ අපිට හොයා ගන්න ඕන කරන id එක router parameter එකක් විදියට දෙනවා කියල. එතකොට අපි කලින් කතා කලා වගේ Schema එකට කියනවා අදාල id එක තියෙන record එක json object එකක් විදියට එලියට දෙන්න කියල.</p>



<h3 id="e24e">Adding New&nbsp;Issues</h3>



<p>අපි කලින් ක්‍රම දෙකේදිම කතා කලේ GET method එකෙන් data එකක් ගන්න විදිය. හැබැයි දැන් අපිට ඕන වෙනවා අලුතින් data එකක් නැත්නම් issue එකක් store කරගන්න. ඒකට අපිට data එක යවන්න වෙන නිසා අපිට post method එක යොදා ගන්න සිද්ධ වෙනවා. ඒක කරන්නේ මෙහෙමයි</p>



<pre class="wp-block-preformatted">router.route('/issues/add').post((req, res) =&gt; {<br>     let issue = new Issue(req.body);<br>     issue.save()<br>         .then(issue =&gt; {<br>             res.status(200).json({'issue': 'Added successfully'});<br>         })<br>         .catch(err =&gt; {<br>             res.status(400).send('Failed to create new record');<br>         });<br> });</pre>



<p>මේ විදියට එක post request එකේ body එකේ තියෙන data ටිකෙන් අපි අලුත් issue object එකක් හදලා ඒක db එකේ save කරගන්නවා.</p>



<h3 id="3f19">Updating Issues</h3>



<p>මේකෙදි අපිට වැඩ දෙකක් කරන්න වෙනවා. මුලින් අපි දෙන ID එකට අදාල record එක හොයා ගන්න වෙනවාත ඊට පස්සේ ඒකෙ තියෙන Data වෙනුවට අපි අලුතින් එවන ඒවා දාලා ඒක save කරන්න වෙනවා. මේ වැඩේ කරගන්නේ කොහොමද කියලා බලමු. </p>



<pre class="wp-block-preformatted">router.route('/issues/update/:id').post((req, res) =&gt; {<br>     Issue.findById(req.params.id, (err, issue) =&gt; {<br>         if (!issue)<br>             return next(new Error('Could not load Document'));<br>         else {<br>             issue.title = req.body.title;<br>             issue.responsible = req.body.responsible;<br>             issue.description = req.body.description;<br>             issue.severity = req.body.severity;<br>             issue.status = req.body.status;<br>             issue.save().then(issue =&gt; {<br>                 res.json('Update done');<br>             }).catch(err =&gt; {<br>                 res.status(400).send('Update failed');<br>             });<br>         }<br>     });<br> });</pre>



<p>ඔයාලට පේනවා ඇති අපි මුලින්ම දෙන ID එකට අදාල records තියෙනවද කියලා check කරලා හම්බ වුණේ නැත්නම් error එකක් දෙනවා. හම්බවුණොත් අපි එකින් එක replace කරගෙන යනවා අපි දෙන අලුත් data set එක්ත් එක්ක. </p>



<h3 id="3ef0">Deleting Issues</h3>



<p>මේක ගොඩක් සරලයි. සාමාන්‍ය විදියට id එකකින් අදාල issue එක හොයාගෙන delete කරලා දාන්න තියෙන්නේ. අපි data එවන්නේ නැති නිසා සාමාන්‍ය get request එකක් මේකට භවිතා කරන්න පුළුවන්. </p>



<pre class="wp-block-preformatted">router.route('/issues/delete/:id').get((req, res) =&gt; {<br>     Issue.findByIdAndRemove({_id: req.params.id}, (err, issue) =&gt; {<br>         if (err)<br>             res.json(err);<br>         else<br>             res.json('Removed successfully');<br>     });<br> });</pre>



<p>මේක ඉවර වුණාම අපේ Basic task ටික ඉවර වෙනවා. දැන් අපි බලමු අන්තිමට අපිට හැදිලා තියෙන server.js එක මොන වගේ එකක්ද කියලා. මේක දිහා බලලා ඔයාලගේ code එකේ අඩුපාඩු තිබුණොත් හදාගන්න.</p>



<pre class="wp-block-preformatted"> import express from 'express';<br> import cors from 'cors';<br> import bodyParser from 'body-parser';<br> import mongoose from 'mongoose';<br> import Issue from './models/Issue';<br> const app = express();<br> const router = express.Router();<br> app.use(cors());<br> app.use(bodyParser.json());<br> mongoose.connect('mongodb://[server]/issues');<br> const connection = mongoose.connection;<br> connection.once('open', () =&gt; {<br>     console.log('MongoDB database connection established successfully!');<br> });<br> router.route('/issues/add').post((req, res) =&gt; {<br>     let issue = new Issue(req.body);<br>     issue.save()<br>         .then(issue =&gt; {<br>             res.status(200).json({'issue': 'Added successfully'});<br>         })<br>         .catch(err =&gt; {<br>             res.status(400).send('Failed to create new record');<br>         });<br> });<br> router.route('/issues').get((req, res) =&gt; {<br>     Issue.find((err, issues) =&gt; {<br>         if (err)<br>             console.log(err);<br>         else<br>             res.json(issues);<br>     });<br> });<br> router.route('/issues/:id').get((req, res) =&gt; {<br>     Issue.findById(req.params.id, (err, issue) =&gt; {<br>         if (err)<br>             console.log(err);<br>         else<br>             res.json(issue);<br>     })<br> });<br> router.route('/issues/update/:id').post((req, res) =&gt; {<br>     Issue.findById(req.params.id, (err, issue) =&gt; {<br>         if (!issue)<br>             return next(new Error('Could not load Document'));<br>         else {<br>             issue.title = req.body.title;<br>             issue.responsible = req.body.responsible;<br>             issue.description = req.body.description;<br>             issue.severity = req.body.severity;<br>             issue.status = req.body.status;<br>             issue.save().then(issue =&gt; {<br>                 res.json('Update done');<br>             }).catch(err =&gt; {<br>                 res.status(400).send('Update failed');<br>             });<br>         }<br>     });<br> });<br> router.route('/issues/delete/:id').get((req, res) =&gt; {<br>     Issue.findByIdAndRemove({_id: req.params.id}, (err, issue) =&gt; {<br>         if (err)<br>             res.json(err);<br>         else<br>             res.json('Removed successfully');<br>     });<br> });<br> app.use('/', router);<br> app.listen(4000, () =&gt; console.log(<code>Express server running on port 4000</code>));</pre>



<h2> Testing The Server With&nbsp;Postman </h2>



<p>Node වලින් backend එක හදා ගත්තට පස්සේ අපිට test කරගන්න පුළුවන් tool එකක් තමයි PostMan කියන්නේ. ඒක නැත්නම් <a href="https://www.getpostman.com/">මෙතනින් </a>Download කරගන්න. ඒකෙන් අපේ backend එකෙන් එලියට Data ගන්න පුළුවන්ද කියලා check කරගන්න පුළුවන්. </p>



<figure class="wp-block-image"><img src="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/0_LjsHj5lPDNO0Ehdl.png" alt="" class="wp-image-1903" srcset="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/0_LjsHj5lPDNO0Ehdl.png 800w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/0_LjsHj5lPDNO0Ehdl-300x191.png 300w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/0_LjsHj5lPDNO0Ehdl-768x490.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>Install කරගෙන ඉවර වුණාට පස්සේ node server එක run කරලා මේ වගේ request ගහලා බලන්න අපි හදපු routes වලට data එනවද කියලා</p>



<figure class="wp-block-image"><img src="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/0_m3eRdTp5VIQ89PFg.png" alt="" class="wp-image-1904" srcset="https://danushka96.github.io/sigma/wp-content/uploads/2019/02/0_m3eRdTp5VIQ89PFg.png 800w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/0_m3eRdTp5VIQ89PFg-300x191.png 300w, https://danushka96.github.io/sigma/wp-content/uploads/2019/02/0_m3eRdTp5VIQ89PFg-768x490.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p>හරි මේ ලිපියෙන් අපි කතා කලේ Backend එක Nodejs වලින් Design කරගන්නේ කොහොමද කියලා. තේරුණේ නැති තැනක් තියෙනවා නම් Message එකක් දාන්න. ඊළඟ ලිපියෙන් කතා කරන්නේ අපි හදා ගත්ත Front එකයි Back එකයි Connect කරගන්න විදිය ගැන&#8230; </p>
<div id="emojics-root"></div><p>The post <a rel="nofollow" href="https://danushka96.github.io/sigma/index.php/2019/02/19/mean-stack-sample-application-design-part-02/">MEAN Stack වලින් Sample Application එකක් Design කරගමු. (PART 02)</a> appeared first on <a rel="nofollow" href="https://danushka96.github.io/sigma/">The SIGMA</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://danushka96.github.io/sigma/index.php/2019/02/19/mean-stack-sample-application-design-part-02/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
	</channel>
</rss>
