<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3905735696186908138</id><updated>2015-09-17T01:33:19.670-04:00</updated><category term="python.si"/><category term="පාඩම් පෙල"/><category term="සුරනිමල් ගේ කවි"/><category term="shortcode.si"/><title type='text'>s•ransara</title><subtitle type='html'>තවත් සිංහල බ්ලොගයක්</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://s.ransara.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://s.ransara.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>i-am-u</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3905735696186908138.post-6822031896639050924</id><published>2014-08-08T22:42:00.000-04:00</published><updated>2014-08-08T22:47:58.331-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="සුරනිමල් ගේ කවි"/><title type='text'>කුරුටු</title><content type='html'>&lt;span class=&quot;poem&quot;&gt;වැලි ගඩොලි&lt;br /&gt;මඩ පිඩැලි&lt;br /&gt;දැලි දූවිලි උඩ&lt;br /&gt;අපි ඇඳපු කුරුටු බලි&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;author&quot;&gt;- සුරනිමල්&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://s.ransara.net/feeds/6822031896639050924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://s.ransara.net/2014/08/blog-post_8.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/6822031896639050924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/6822031896639050924'/><link rel='alternate' type='text/html' href='http://s.ransara.net/2014/08/blog-post_8.html' title='කුරුටු'/><author><name>i-am-u</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3905735696186908138.post-4462979389261703915</id><published>2014-08-05T11:30:00.002-04:00</published><updated>2014-08-08T22:48:12.167-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="සුරනිමල් ගේ කවි"/><title type='text'>හිස් කලගෙඩි </title><content type='html'>&lt;span class=&quot;poem&quot;&gt;වතුර නැති කල ගෙඩිය හිස්&lt;br /&gt;වගෙයි ඔලු ගෙඩිය නැතිව අදහස්&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;author&quot;&gt;- සුරනිමල්&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://s.ransara.net/feeds/4462979389261703915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://s.ransara.net/2014/08/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/4462979389261703915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/4462979389261703915'/><link rel='alternate' type='text/html' href='http://s.ransara.net/2014/08/blog-post.html' title='හිස් කලගෙඩි '/><author><name>i-am-u</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3905735696186908138.post-6318028538873838218</id><published>2012-08-06T19:30:00.000-04:00</published><updated>2014-12-25T00:54:52.041-05:00</updated><title type='text'>රිවිර අකුරු අවුල්නම් මෙන්න විසඳුමක්</title><content type='html'>&lt;b&gt;UPDATED&lt;/b&gt;&lt;br /&gt;මගේ &lt;a href=&quot;http://s.ransara.net/2011/06/firefox-webkit-web-font.html&quot;&gt;පරණ post&lt;/a&gt; එකට හෝ ගාලා කස්ටිය එනවා රිවර පත්තරේ කියවන්න බෑ අකුරු අවුල් වෙලා කියලා. අකුරු conversion වලදී පොඩි අස්පට් එකක් වෙලා තියෙනවා වගේ තමයි පේන්නේ. තියෙන්න ඕන අකරු නැතුව අස්පට් අකුරු පෙනවානම් මෙන්න විසඳුමක්. &lt;br /&gt;වැඩේට ක්‍රම සහ විදි දෙකක් තියෙනවා. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;එක ක්‍රමයක්&lt;/b&gt; තමයි : &lt;ol&gt;&lt;li&gt;මුලින්ම මෙන්න &lt;a href=&quot;javascript:(function(){if(typeof%20jQuery==&#39;undefined&#39;){var%20head=document.getElementsByTagName(%22head%22)[0];var%20jqsqript=document.createElement(&#39;script&#39;);jqsqript.type=&#39;text/javascript&#39;;jqsqript.src=&#39;//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js&#39;;head.appendChild(jqsqript);}function%20addFont(){if(jQuery(&#39;font&#39;).length%20%3E%200){var%20isiabhayastyle=%22http://www.rivira.lk/edition/templates/ba_nation/fonts/isiabhaya/stylesheet.css%22;jQuery(&#39;head&#39;).append(&#39;%3Clink%20rel=%22stylesheet%22%20href=%22&#39;%20+%20isiabhayastyle%20+%20&#39;%22%20type=%22text/css%22%20/%3E&#39;);jQuery(&#39;font[face=%22Isiabhaya%22]&#39;).attr(&#39;face&#39;,&#39;Isiabhayax&#39;);jQuery(&#39;font[face=%22IsiBasuru%22]&#39;).attr(&#39;face&#39;,&#39;Isiabhayax&#39;);}else{$(%22ul.baTabs%20li,h1,h2,h3,h4,h5,%23baMainMenu%20%3E%20div%20%3E%20ul%20div.childcontent%20.group-title,%23baBottomWrap%20.box%20%3E%20div%20%3E%20h3.header,div.header%20.nspLinks%20ul%20li%20h4,.items-leading%20p,items-row%20p,%23baBreadcrumbMainbody%20.breadcrumbs%20li.pathway,.articleContent%20p,%23baPage%20.box.small%20%3E%20div%20%3E%20h3.header,%23baPage%20.box_text.small%20%3E%20div%20%3E%20h3.header,%23baPage%20.box_menu.small%20%3E%20div%20%3E%20h3.header,%23baPage%20.box.advert%20h3.advert,%23baMainMenu%20%3E%20div%20%3E%20ul%20%3E%20li%20%3E%20a,%23baPage%20.box%20%3E%20div%20%3E%20h3.header,%23baPage%20.box_menu%20%3E%20div%20%3E%20h3.header,%23baPage%20.box_text%20%3E%20div%20%3E%20h3.header,.nspArt%20p.nspText,.baHighlighterItem,.nspTitle,.nspMainPortalMode3%20.nspText,.nspArtHeadline,.bawMainRight,%23weather1,.items-more%20ol,.articleContent%20P,.dmarchive_results_title%22).css(&#39;font-family&#39;,&#39;Isiabhayax,%20Arial,%20Sans-serif&#39;);}jQuery(&#39;body&#39;).html(jQuery(&#39;body&#39;).html().replace(/‰/gi,&#39;\u02C6&#39;).replace(/Š/gi,&#39;\u02C6&#39;).replace(/ƒ/gi,&#39;\u0DC4&#39;).replace(/†/gi,&#39;ළු&#39;).replace(/‡/gi,&#39;ෆ&#39;));}function%20checkjq(){var%20checktimer;if(!window.jQuery){checktimer=window.setTimeout(checkjq,1000);}else{clearTimeout(checktimer);addFont();}}checkjq();})();&quot;&gt;මේ item එක&lt;/a&gt; right click කරලා bookmark එකක් විදියට save කරගන්න.&lt;/li&gt;&lt;li&gt;රිවිර පත්තරේ වෙබ් අඩවියට ගියාට පස්සේ bookmark එක උඩ click කරන්න.&lt;/li&gt;&lt;li&gt;දැන් වෙඩි වගේ වැඩ ඇති - හැබයි site එකේ එහා මෙහා යන යන සැරේට bookmark එක click කරන්න වෙයි.&lt;/li&gt;&lt;/ol&gt;මේ ක්‍රමය ඕනෑම browser එහෙක වැඩ කරන්න ඕන - tested on chrome and firefox. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;අනික් ක්‍රමය&lt;/b&gt; තමයි: &lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.rivira.lk&quot;&gt;රිවිර වෙබ් පිටුව&lt;/a&gt; එක ටැබ එහෙක open කරලා...&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;javascript:(function(){if(typeof%20jQuery==&#39;undefined&#39;){var%20head=document.getElementsByTagName(%22head%22)[0];var%20jqsqript=document.createElement(&#39;script&#39;);jqsqript.type=&#39;text/javascript&#39;;jqsqript.src=&#39;//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js&#39;;head.appendChild(jqsqript);}function%20addFont(){if(jQuery(&#39;font&#39;).length%20%3E%200){var%20isiabhayastyle=%22http://www.rivira.lk/edition/templates/ba_nation/fonts/isiabhaya/stylesheet.css%22;jQuery(&#39;head&#39;).append(&#39;%3Clink%20rel=%22stylesheet%22%20href=%22&#39;%20+%20isiabhayastyle%20+%20&#39;%22%20type=%22text/css%22%20/%3E&#39;);jQuery(&#39;font[face=%22Isiabhaya%22]&#39;).attr(&#39;face&#39;,&#39;Isiabhayax&#39;);jQuery(&#39;font[face=%22IsiBasuru%22]&#39;).attr(&#39;face&#39;,&#39;Isiabhayax&#39;);}else{$(%22ul.baTabs%20li,h1,h2,h3,h4,h5,%23baMainMenu%20%3E%20div%20%3E%20ul%20div.childcontent%20.group-title,%23baBottomWrap%20.box%20%3E%20div%20%3E%20h3.header,div.header%20.nspLinks%20ul%20li%20h4,.items-leading%20p,items-row%20p,%23baBreadcrumbMainbody%20.breadcrumbs%20li.pathway,.articleContent%20p,%23baPage%20.box.small%20%3E%20div%20%3E%20h3.header,%23baPage%20.box_text.small%20%3E%20div%20%3E%20h3.header,%23baPage%20.box_menu.small%20%3E%20div%20%3E%20h3.header,%23baPage%20.box.advert%20h3.advert,%23baMainMenu%20%3E%20div%20%3E%20ul%20%3E%20li%20%3E%20a,%23baPage%20.box%20%3E%20div%20%3E%20h3.header,%23baPage%20.box_menu%20%3E%20div%20%3E%20h3.header,%23baPage%20.box_text%20%3E%20div%20%3E%20h3.header,.nspArt%20p.nspText,.baHighlighterItem,.nspTitle,.nspMainPortalMode3%20.nspText,.nspArtHeadline,.bawMainRight,%23weather1,.items-more%20ol,.articleContent%20P,.dmarchive_results_title%22).css(&#39;font-family&#39;,&#39;Isiabhayax,%20Arial,%20Sans-serif&#39;);}jQuery(&#39;body&#39;).html(jQuery(&#39;body&#39;).html().replace(/‰/gi,&#39;\u02C6&#39;).replace(/Š/gi,&#39;\u02C6&#39;).replace(/ƒ/gi,&#39;\u0DC4&#39;).replace(/†/gi,&#39;ළු&#39;).replace(/‡/gi,&#39;ෆ&#39;));}function%20checkjq(){var%20checktimer;if(!window.jQuery){checktimer=window.setTimeout(checkjq,1000);}else{clearTimeout(checktimer);addFont();}}checkjq();})();&quot;&gt;මේ item එක&lt;/a&gt; ඇදගෙන ගිහින් රිවිර tab එක උඩින් අතාරින්න.&lt;/li&gt;&lt;/ol&gt;මේ ක්‍රමය chrome වල සහ පරණ firefox version වල වැඩ කරාවි. &lt;br /&gt;&lt;br /&gt;ඔන්න code තේරෙන අයට code කෑල්ල. මහා ලොකු magic එකක් මේකේ වෙන්නෑ. Full code එක: &lt;a href=&quot;https://gist.github.com/4189308&quot;&gt;https://gist.github.com/4189308/&lt;/a&gt;&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-js&quot;&gt;if (typeof jQuery == &#39;undefined&#39;) {&lt;br /&gt;  var head = document.getElementsByTagName(&quot;head&quot;)[0];&lt;br /&gt;  var jqsqript = document.createElement(&#39;script&#39;);&lt;br /&gt;  jqsqript.type = &#39;text/javascript&#39;;&lt;br /&gt;  jqsqript.src = &#39;//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js&#39;;&lt;br /&gt;  head.appendChild(jqsqript);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function addFont() {&lt;br /&gt;  if (jQuery(&#39;font&#39;).length &gt; 0) {&lt;br /&gt;    var isiabhayastyle = &quot;..see gist..&quot;;&lt;br /&gt;    jQuery(&#39;head&#39;).append(&#39;&amp;lt;link rel=&quot;stylesheet&quot; href=&quot;&#39; +&lt;br /&gt;             isiabhayastyle + &#39;&quot; type=&quot;text/css&quot; /&amp;gt;&#39;);&lt;br /&gt;    jQuery(&#39;font[face=&quot;Isiabhaya&quot;]&#39;).attr(&#39;face&#39;, &#39;Isiabhayax&#39;);&lt;br /&gt;    jQuery(&#39;font[face=&quot;IsiBasuru&quot;]&#39;).attr(&#39;face&#39;, &#39;Isiabhayax&#39;);&lt;br /&gt;  } else {&lt;br /&gt;    $(&quot;..see gist..&quot;).css(&#39;font-family&#39;, &#39;Isiabhayax, Arial, Sans-serif&#39;);&lt;br /&gt;  }&lt;br /&gt;  jQuery(&#39;body&#39;).html(jQuery(&#39;body&#39;).html()&lt;br /&gt;    .replace(/‰/gi, &#39;\u02C6&#39;)&lt;br /&gt;    .replace(/Š/gi, &#39;\u02C6&#39;)&lt;br /&gt;    .replace(/ƒ/gi, &#39;\u0DC4&#39;)&lt;br /&gt;    .replace(/†/gi, &#39;ළු&#39;)&lt;br /&gt;    .replace(/‡/gi, &#39;ෆ&#39;));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function checkjq() {&lt;br /&gt;  var checktimer;&lt;br /&gt;  if (!window.jQuery) {&lt;br /&gt;    checktimer = window.setTimeout(checkjq, 1000);&lt;br /&gt;  } else {&lt;br /&gt;    clearTimeout(checktimer);&lt;br /&gt;    addFont();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;checkjq();&lt;br /&gt;&lt;/pre&gt;bookmarklet එකක් කරේ මේ tool එකෙන්: &lt;a href=&quot;http://chris.zarate.org/bookmarkleter&quot;&gt;http://chris.zarate.org/bookmarkleter&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://s.ransara.net/feeds/6318028538873838218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://s.ransara.net/2012/08/characters-replaced.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/6318028538873838218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/6318028538873838218'/><link rel='alternate' type='text/html' href='http://s.ransara.net/2012/08/characters-replaced.html' title='රිවිර අකුරු අවුල්නම් මෙන්න විසඳුමක්'/><author><name>i-am-u</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3905735696186908138.post-5564551701103841886</id><published>2011-08-03T00:02:00.005-04:00</published><updated>2012-08-07T20:00:58.277-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python.si"/><category scheme="http://www.blogger.com/atom/ns#" term="shortcode.si"/><category scheme="http://www.blogger.com/atom/ns#" term="පාඩම් පෙල"/><title type='text'>python වලින් චුට්ටං විතර server එකක් හදමු</title><content type='html'>&lt;div class=&quot;feat&quot; style=&quot;background: url(&#39;http://upload.wikimedia.org/wikipedia/commons/a/a6/Nuvola_filesystems_network_local.png&#39;) no-repeat scroll 0 0 transparent; padding-bottom: 10px; padding-left: 130px;&quot;&gt;python වලින් යම්තම් වගේ වැඩ කරන server එකක් හදන හටි බලමු. GET requests වලට respond කරන HTTP Server එකක් හදන හැටි තමයි මෙදා සැරේ ලියවෙන්නේ. මේ හරහා python වල&lt;b&gt; http - server&lt;/b&gt; modules ගැනත් යමක් කමක් දැන ගන්නට ලැබේවීයි සිතමු.&lt;/div&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;code පෙරවදන&amp;nbsp;&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;පහල තියන සියලු script ලියා test කරන ලද්දේ python 2.6 සහිත Debian මැෂිමක බවත්, එම නිසා පහත ඇති සියලු code, python 2.6 - 2.7 version වල අනිවාර්යෙන්මත්, python 3k වල බොහෝ දුරටත් වැඩ කරන බව මුලින්ම සඳහන් කරමි - නැත්නම් &lt;a href=&quot;http://docs.python.org/library/2to3.html&quot;&gt;2to&lt;span id=&quot;goog_1931288644&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1931288645&quot;&gt;&lt;/span&gt;3.py&lt;/a&gt;&lt;span id=&quot;goog_1931288640&quot;&gt;&lt;/span&gt;&lt;span id=&quot;goog_1931288641&quot;&gt;&lt;/span&gt;&lt;a href=&quot;http://draft.blogger.com/&quot;&gt;&lt;/a&gt; script එකට try පාරක් දෙන්න.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;නු/සුදුසු shortcut එක&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;මේ post එක මහ ලොකුවට ලියන්න පටන් ගත්තට python වලින් simple sever එකක් හදන්න මහලොකු වෙලාවක් නම් යන්නේ නෑ. හදිසිකාරයොන්ට ඔන්න ඒ code එක - python ඉතින් තියෙන්නේ හදිසිකාරයොන්ටනේ:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;python -m SimpleHTTPServer 8888&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;දැන් browser එක open කරගෙන  &lt;a href=&quot;http://127.0.0.1:8888/&quot;&gt;&lt;code style=&quot;display: inline;&quot;&gt;http://127.0.0.1:8888&lt;/code&gt;&lt;/a&gt; address එකට ගියාම shell එකේ current working direcory එකේ directory listing එකක් පෙන්වයි ලස්සනට, index.html File එකක් තියෙනවා නම් ඒක පෙන්වයි. ඒවාගේම shell එකේ පුංචි පහේ server log එකකුත් dump වෙනවා. අපි මෙදා සැරේ කතා කරන්නේ හදිසිකාරයොන්ට ලියපු ඔය පුංචි code කෑල්ල ගැන නෙමෙයි, ඒ වගේ එකක් අපි ලියන හැටි ගැන. ඕක try කලා වගේ නෙමෙයි&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Troubleshoot&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;python 3k දුවන මැෂිමක උඩ code කෑල්ල වැඩ නොකරන නිසා මේකටත් try පාරක් දෙන්න - python 3k වල සිට සියලුම SimpleHTTPServer, BaseHTTPServer හා තවත්  scripts http.server module එකට merge කර ඇති බැවිනි.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;python -m http.server 8888&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;තවත් දෙයක් තමයි code එක run කරලා හොඳට වැඩ කරාට පස්සේ Debian/Linux වල වුන දේ. run කලාම එලකිරි වගේ වැඩ ඒත් server එක නවත්වන්න / port එක close කරන්න keyboard interrupt (Ctrl + C) එකක් හරියන්නේ නෑ. මේ නිසා Linux මැෂිමක ps command එක පාවිච්චි කරලා python process එකේ process ID එක kill command එක පාවිච්චි  කරලා stop කරන කම් server එක නතර උනේ නෑ - මේ case එක windows වල මතු උනේ නෑ.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ps&lt;br /&gt;kill -9 PIDNO&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;ඔන්න එහෙනම් අපේ චුට්ටං විතර http server එකේ code එක&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;මුලු code එකම එක සැරේ අතෑරලා කිසිදෙයක් තේරෙන්නැති නිසා කොටස් වශයෙන් පෙන්වන්නයි බලාපොරොත්තුව.&lt;br /&gt;මුලින්ම එහෙනම්&lt;b&gt; import කරන module&lt;/b&gt; ටික - පහලට කියවන් යන්න කලින් &lt;a href=&quot;http://docs.python.org/release/2.6/library/internet.html&quot;&gt;python doc&lt;/a&gt; එකේ මේ module ගැන තියෙන විස්තර බැලුවට වරදක් නෑ. sys module එක import කලේ අපිට පස්සේ වෙලාවක sys.argv පාවිච්චි කරන්න ඕන නිසා.&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;import sys&lt;br /&gt;from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer&lt;br /&gt;&lt;/pre&gt;කට්ටිය දන්නවනේ ඉතින් server එකක් කිව්වම GET request, POST request වගේම තව PUT, HEAD වගේ &lt;a href=&quot;http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods&quot;&gt;HTTP Server request&lt;/a&gt; බර ගානක් තියෙන බව දන්නවනේ. request handle කරන එක තමයි server එක කොරන මහලොකු වැඩේ. දැනටනම් අපේ server එක respond කරන්නේ GET request වලට විතරයි. ඒ නිසානේ චුට්ටං විතර server එකක් කිව්වේ. &lt;br /&gt;පහල තියෙන්නේ අපේ server එක GET request එක handle කොරන method එක.&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python linenums:8;&quot;&gt;def do_GET(self):&lt;br /&gt;      afile_path = os.curdir + os.sep + self.path&lt;br /&gt;      try:&lt;br /&gt;            afile = None&lt;br /&gt;            if self.path.endswith(&#39;.html&#39;) or self.path.endswith(&#39;.htm&#39;):&lt;br /&gt;                  afile = open(afile_path, &#39;r&#39;)&lt;br /&gt;                  self.send_response(200)&lt;br /&gt;                  self.send_header(&#39;Content-type&#39;, &#39;text/html&#39;)&lt;br /&gt;                  self.end_headers()&lt;br /&gt;                  self.wfile.write(afile.read())&lt;br /&gt;            else:&lt;br /&gt;                  afile = open(afile_path, &#39;rb&#39;)&lt;br /&gt;                  self.send_response(200)&lt;br /&gt;                  self.end_headers()&lt;br /&gt;                  self.wfile.write(afile.read())&lt;br /&gt;&lt;br /&gt;      except IOError:&lt;br /&gt;             self.send_error(404, &#39;File not found : %s&#39; % self.path)&lt;br /&gt;&lt;br /&gt;      finally:&lt;br /&gt;             if afile: afile.close()&lt;br /&gt;&lt;/pre&gt;if කෑලි වගයක් දාලා තියෙනවා පේනවා නේද? html හෝ htm files එක විදියකට පාස් වෙන්නත් අනික් ඔක්කොම තව විදියකට පාස් වෙන්නත් තමයි ලියලා තියෙන්නේ. ඔහොම නැතුව ඔක්කොම එක ගොඩේ දැම්මත් එලකිරි වගේ වැඩ ඒත් ...&lt;br /&gt;අපිට පස්සේ දවසක මීලඟ version එකක පුලුවනි වෙනමම extension එකකින් එන ඒව අපිට ඕන විදියට process කරලා pass කරන්න. ඕනනම් PHP code එකක් process කරලා browser එකට තේරෙන html විදියට respond කරන්න පුලුවන්. ඔව්වා පස්සට තියලා ..&lt;br /&gt;&lt;br /&gt;අපි main function එක බලලා ඉමු.&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python linenums:35;&quot;&gt;def main():&lt;br /&gt;   if len(sys.argv) &amp;lt; 2:&lt;br /&gt;      print(&#39;chutton-http-server usage: chutton-http-server.py port&#39;)&lt;br /&gt;   else:&lt;br /&gt;      try:&lt;br /&gt;         server = HTTPServer((&#39;localhost&#39;, int(sys.argv[1])),ChuttonHandler)&lt;br /&gt;         print(&#39;Starting http server on port&#39; + str(sys.argv[1]))&lt;br /&gt;         server.serve_forever()&lt;br /&gt;&lt;br /&gt;      except KeyboardInterrupt:&lt;br /&gt;         print(&#39; Shutting down due to Keyboard interrupt&#39;)&lt;br /&gt;         server.shutdown()&lt;br /&gt;&lt;/pre&gt;python වල main එකක් තියෙනවදෝ කියලා කලබවුනා නම් කලබල වෙන්න එපා. පහල තියෙන code එක නිසා තමයි main method එක call වෙන්නේ. &lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python linenums:54;&quot;&gt;if __name__ == &#39;__main__&#39;:&lt;br /&gt;     main()&lt;br /&gt;&lt;/pre&gt;එහෙන් මෙහෙන් ගිහින් අන්තිමට code එකේ අග්ගිස්සටම ආවා ඕං.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;තනිකර code එක&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Full code එක බලාගන්න &lt;a href=&quot;https://gist.github.com/1101618&quot;&gt;මෙතනට යන්න &lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Testing 123&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;run කරන්න නම් html files එහෙම තියෙන තැනක් shell එකේ current working directory කරගෙන, අපේ python script එකත් එතනට copy කරගෙන, මෙහෙම ගහන්න. &lt;br /&gt;&lt;code&gt;python chutton-http-server.py 8888&lt;/code&gt;&lt;br /&gt;chutton-http-server.py කියන්නේ python script එකේ file name එක. 8888 කිව්වෙ port එක. &lt;br /&gt;&lt;br /&gt;දැන් මුලින් කරපු shortcut එක වගේම  &lt;a href=&quot;http://127.0.0.1:8888/&quot;&gt;&lt;code style=&quot;display: inline;&quot;&gt;http://127.0.0.1:8888/index.html&lt;/code&gt;&lt;/a&gt; address එකට ගියාම වැඩේ ගොඩ.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Troubleshoot&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;URL එක ගහද්දි file name එකත් එක්කම දෙන්න, නැත්නම් 404 එයි. තාම අපේ server එක චූටි බව මතක තියා ගත්තොත් හොඳයි. python 3 පාවිච්චි කරන අයට මෙදා සැරේ 2to3 library එක පාවිච්චි කරන්න වෙයි. ඒකට මගේ සාතිශය සංවේගය බව කරුණාවෙන් සලකන්න.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;පසුවදන&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;බැලූ බැල්මට කිසිදෙයක් තේරුන්නැති උනත් ටිකක් උවමනාවෙන් බැලුවොත් code එක තේරුන් ගන්න ලේසී වගේ. මොනවා වුනත් මේකේ python වල තියෙන object orientation යම්තම් වගේ පාවිච් කරලා තියෙනවා. ඒක code එක අවබෝධයට පුරස්නයක් නොවේවායි හිතනවා. ඉතුරු python scripts හෝ වෙනත් දෙයක් සමඟින් නැවත හමුවෙමු.&lt;br /&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ආ.. තවත් දෙයක් post එකෙන් යමක් කමක් දැනගත්තානම්, &lt;/span&gt;මේ&lt;span style=&quot;font-size: x-small;&quot;&gt; අලුතින් blog එකට දාපු google plus one share පාරක් දැම්මොත් නරකම නෑ - button එක නම් තියෙන්නේ sidebar එකේ උඩම.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://s.ransara.net/feeds/5564551701103841886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://s.ransara.net/2011/07/python-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/5564551701103841886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/5564551701103841886'/><link rel='alternate' type='text/html' href='http://s.ransara.net/2011/07/python-server.html' title='python වලින් චුට්ටං විතර server එකක් හදමු'/><author><name>i-am-u</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3905735696186908138.post-1990420657802592865</id><published>2011-07-13T23:03:00.115-04:00</published><updated>2012-08-07T20:08:27.988-04:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python.si"/><category scheme="http://www.blogger.com/atom/ns#" term="පාඩම් පෙල"/><title type='text'>ඩිංගක් දන්න අයට තව ඩිංගක් python</title><content type='html'>&lt;div class=&quot;feat&quot; style=&quot;background: url(&#39;http://lh6.googleusercontent.com/-CTAYi1ih4M0/TgzOdGkhxpI/AAAAAAAAAGM/GgCXpFTYYmI/s144/python.jpg&#39;) no-repeat scroll 0 0 transparent; padding-bottom: 10px; padding-left: 160px;&quot;&gt;hello world, variable declarations, data types හා තවත් syntax අමු ද්‍රව්‍ය python වලින් ලියන හැටි පොඩ්ඩක් හොයලා බලමු. මීට කලින් programming කරලා තියෙන අයට තකට තක ගලපන්න පුලුවන් විදියට ලියවුනු python කතාවක් තමයි  මේ. &lt;/div&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;මුලින්ම කියන්න ඕන හරිය &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;කඩ්ඩෙන් ලියවුනු &lt;a href=&quot;http://www.korokithakis.net/tutorials/python/&quot;&gt;මේ tutorial&lt;/a&gt; එකත් සලකා බලන්න -- Python in 10 minutes.&amp;nbsp;පහල තියෙන සියලු  script, python 2.6+ හා python 3k syntax බව කරුණාවෙන් සලකන්න. පටාන් ගන්න කලියෙන් python interactive shell එක open කරගෙන ඉන්න. python ගැන දන්නෙවත් නැත්නම් &lt;a href=&quot;http://sransara.blogspot.com/2011/06/python.html&quot;&gt;පරණ ලිපිය&lt;/a&gt; කියවලා හිටියොත් හොඳා.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;අපේ විදියට&amp;nbsp; Hello world ලියමු &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Python interactive shell එකේ තමයි අපිට ගොඩක් සෙල්ලම් දාන්න පුලුවන්. ඒක නිසා තමන්ගේ මැෂිමේ හැටියට python shell එක on කරගන්නවා හොඳයි. බොහොමයක් වෙලාවට ඕනම මැෂින් එකක shell එකේ python කියලා type කරාම වැඩේ ගොඩ. මේක &#39;&lt;code style=&quot;display: inline;&quot;&gt;&amp;gt;&amp;gt;&amp;gt;&lt;/code&gt;&#39; ඉස්සරහා ඕන දෙයක් කොටලා බලන්න තියෙන්නේ. &lt;br /&gt;ඔන්න බලන්න මම Fedora මැෂිමක  ලියලා වෙච්චි දෙයක්.&lt;br /&gt;&lt;pre&gt;[user@fedoramachine ~]$ python&lt;br /&gt;Python 2.7.1 (r271:86832, Apr 12 2011, 16:16:18) &lt;br /&gt;[GCC 4.6.0 20110331 (Red Hat 4.6.0-2)] on linux2&lt;br /&gt;Type &quot;help&quot;, &quot;copyright&quot;, ....&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; print(&#39;ayubowan&#39;)&lt;br /&gt;ayubowan&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; 1+1&lt;br /&gt;2&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; 9*9&lt;br /&gt;81&lt;br /&gt;&lt;/pre&gt;උඩ තියෙන print statement එක පැහැදිලි නැති හින්දා ඔන්න මේක බලාගන්න. C පවුලේ language දන්න අය බලාගන්න ඕන දෙයක්; statement එක අගට තිත්කොමාවක් නෑ - සෙල්ලම් නෑ :) හිතන්න එපා මේ interactive shell එකේ විතරයි තිත්කොමා නැත්තේ කියලා -- python script වලත් එහෙමම තමා.&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; print(&#39;ayubowan&#39;)&lt;br /&gt;&lt;/pre&gt;&#39;ayubowan&#39; කියලා තියෙන්නේ string එකක් කියල ඔය ඇත්තො දන්නවා ඇතිනේ. C පවුලේ භාෂා වල නම් string එක wrap කරන්නේ double quotation mark වලින් වුනාට, python strings මේ පහල තියෙන ඕන විදියකට ලියන්න පුලුවන්. Method call එකේ නම් වෙනසක් නෑ.&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; print(&quot;ayubowan&quot;)&lt;br /&gt;ayubowan&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; # Triple double quotes&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; print(&quot;&quot;&quot;Hello crazy world&quot;&quot;&quot;)&lt;br /&gt;Hello crazy world&lt;br /&gt;&lt;/pre&gt;ඔය උඩ # (&lt;code style=&quot;display: inline;&quot;&gt;# Triple double quotes&lt;/code&gt;) එකක් එක්ක ලියල තියෙන්නේ comment එකක්. අන්න එහෙම තමයි python comments.&lt;br /&gt;Triple double quotes අතරේ තියෙන strings වල newlines එක්කම print කරන්න පුලුවන්. Try එකක් දීලාම බලන්න.&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; print(&quot;&quot;&quot;Hello &lt;br /&gt;         crazy world&quot;&quot;&quot;)&lt;br /&gt;Hello &lt;br /&gt;crazy world&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;variable declare කරන හැටි&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;කලින් ලිපියේ කිව්ව මතක ඇතිනේ python -- dynamically typed කියලා. ඒ කිව්වේ variable declaration එකේදී type එක define කරන්න ඕන නෑ.&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; abc = &#39;abc&#39;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; abc = &#39;123&#39;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; # type() method returns the type of variable&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; type(abc)&lt;br /&gt;&amp;lt;class &#39;str&#39;&amp;gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; # a different type for same old abc&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; abc = 456&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; type(abc)&lt;br /&gt;&amp;lt;class &#39;int&#39;&amp;gt;&lt;br /&gt;&lt;/pre&gt;තවත් data types ටිකක් - &lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; mbool = True&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; type(mbool)&lt;br /&gt;&amp;lt;class &#39;bool&#39;&amp;gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; mfloat = 100.001&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; type(mfloat)&lt;br /&gt;&amp;lt;class &#39;float&#39;&amp;gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; mnull = None&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; type(mnull)&lt;br /&gt;&amp;lt;class &#39;NoneType&#39;&amp;gt;&lt;br /&gt;&lt;/pre&gt;- boolean True එකේ T capital -- False නුත් ඒවගේමයි&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; 1 == 2&lt;br /&gt;False&lt;br /&gt;&lt;/pre&gt;- null / undefined වෙනුවට None&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Variable එක්ක පොඩි පොඩි සෙල්ලම්&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;++ / -- operator එක වෙනුවට += / -= operator එකම තමයි පාවිච්චි කරන්නේ &lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; j = 99&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; j += 1&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; j&lt;br /&gt;100&lt;br /&gt;&lt;/pre&gt;+= operator එකේ අනිත් language එක්ක වැඩි වෙනසක් නෑ &lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; i = 20&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; i += 30&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; i&lt;br /&gt;50&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; abc = &quot;Hello&quot;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; abc += &quot; wewa&quot;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; abc&lt;br /&gt;&#39;Hello wewa&#39;&lt;br /&gt;&lt;/pre&gt;වෙනස් වූ data type දෙකක් එකතු / operate කරද්දී &lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; num = 20&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; abc = &#39;40&#39;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; type(abc)&lt;br /&gt;&amp;lt;class &#39;str&#39;&amp;gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; num + abc&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt;  File &quot;&amp;lt;pyshell#4&amp;gt;&quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;    num + abc&lt;br /&gt;TypeError:&lt;br /&gt; unsupported operand type(s) for +: &#39;int&#39; and &#39;abc&#39;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; # cast abc to int&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; int(abc) + num&lt;br /&gt;60&lt;br /&gt;&lt;/pre&gt;ඔය (උඩ) තියෙන විදියට තමයි type cast කරන්නේ python වල &lt;code style=&quot;display: inline;&quot;&gt; int(abc)&lt;/code&gt;&lt;br /&gt;Cast වෙන්නෝන  ( / ප්‍රතිඵලය වෙන) data type එකේ class constructor එකට  cast කරන්න ඕන variable type එක පාස් කරනවා.&lt;br /&gt;Java වල (මට මතක විදියට) මේ code කෑල්ලේ අවුලක් නැති වුනත් - &lt;br /&gt;&lt;code&gt;&lt;br /&gt;System.out.println(&quot;Hello &quot; + 123);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Python කියන්නේ Java නෙමේ නේ ඒ නිසා -&lt;br /&gt;මෙහෙම කියලා python අතාරින්න එපා පාවිච්චියේදී තේරෙයි අගය&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; print(&quot;Hello &quot;+ 123)&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt;  File &quot;&amp;lt;pyshell#15&amp;gt;&quot;, line 1, in &amp;lt;module&amp;gt;&lt;br /&gt;    print(&quot;Hello &quot;+ 123)&lt;br /&gt;TypeError: &lt;br /&gt;  Can&#39;t convert &#39;int&#39;&#39; object to str implicitly&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; print(&quot;Hello &quot; + str(123))&lt;br /&gt;Hello 123&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Lists සහ Dictionaries&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;අපි සාමාන්‍යයෙන් arrays කියන ඒවාට Python වල නම් යොදා තිබෙන්නේ Lists කියලා. &lt;br /&gt;Dictionaries නම් Java වල hash tables වගේ - [ key -- value pairs ]&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; # the backslash helps to break 1 line to 2&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; # it&#39;s not anything with list syntax&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; justalist = [&#39;a string&#39;, 123 \&lt;br /&gt;      , &#39;with numbs&#39; , [&#39;and other&#39;, &#39;objects&#39;]]&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; type(justalist)&lt;br /&gt;&amp;lt;class &#39;list&#39;&amp;gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; dir(justalist)&lt;br /&gt;&lt;/pre&gt;අන්තිමට ලියලා තියෙන &lt;code style=&quot;display: inline;&quot;&gt;dir(justalist)&lt;/code&gt; කියන එක ඔය ගොල්ලන්ගේ shell එකෙත් අනිවාර්යෙන්ම කොටලා බලන්න.&lt;br /&gt;ඕක කරන්නේ පාස් කරන object එකේ ඇතුලේ තියන methods list එකක් shell එකට dump කරනවා. මේනිසා හැමතිස්සෙම source code සහා documentation වල පිටු පෙරලපෙරල බලන්න ඕන නෑ. අපි වගේ අයට ඕක ගොඩක් වටිනවා.&lt;br /&gt;ඒවගේම තවත් වටින දෙයක් තමයි මේ පහල තියෙන්නේ&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;&amp;gt;&amp;gt;&amp;gt; justadict = {&#39;name&#39; : &#39;value can be anything&#39;, &#39;key-is-a-string&#39; : 123}&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; type(justadict)&lt;br /&gt;&amp;lt;class &#39;dict&#39;&amp;gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; help(dict)&lt;br /&gt;&lt;/pre&gt;&lt;code style=&quot;display: inline;&quot;&gt;help(  [class name උදා: dict]  )&lt;/code&gt; දැම්මම තනික‍ර explanation එකක් එනවා ඒ class එක ගැන. අනිවා මේකත් පොඩ්ඩක් shell එකේ කොටලා බලන්න.&lt;br /&gt;ඉගෙන ගන්නා අපිට ගොඩක් උදවු වෙන මේ dir method එකයි help method එකයි linux shell එකේ ls command එකයි man command එකයි වගේ. &lt;br /&gt;මේ help method එක එහෙම දුවන්නේ &lt;a href=&quot;http://sransara.blogspot.com/2011/06/python.html&quot;&gt;කලින් ලිපියේ&lt;/a&gt; කියපු auto documentation වලට උදවු වෙන docstring නිසා බව කියමින්, මේ ලිපියෙන් යම්තම් සන්තම් හෝ දෙයක් ඔබ දැන ගත්තායැයි පතමින්, අදට අහවර කරන්නයි මේ ලෑස්තිය. &lt;br /&gt;&lt;br /&gt;methods, control statements සහ loops ගැන කතාකිරීමට පසුවට තබමින් help සහ dir methods දෙක පාවිච්චියෙන් python ගවේෂණය ඔබට භාර කරමින් අදට නවතිමි.</content><link rel='replies' type='application/atom+xml' href='http://s.ransara.net/feeds/1990420657802592865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://s.ransara.net/2011/07/python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/1990420657802592865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/1990420657802592865'/><link rel='alternate' type='text/html' href='http://s.ransara.net/2011/07/python.html' title='ඩිංගක් දන්න අයට තව ඩිංගක් python'/><author><name>i-am-u</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3905735696186908138.post-1554380713278236182</id><published>2011-06-29T13:50:00.006-04:00</published><updated>2014-12-25T00:57:40.917-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python.si"/><category scheme="http://www.blogger.com/atom/ns#" term="පාඩම් පෙල"/><title type='text'>නැගලා යන්න python !</title><content type='html'>&lt;div class=&quot;feat&quot; style=&quot;background: url(&#39;https://www.python.org/static/community_logos/python-logo.png&#39;) no-repeat scroll 0 0 transparent; padding-bottom: 10px; padding-left: 225px;&quot;&gt;මොකක්ද මේ python? techනුත් නැති, එහෙමමත් නැති, python scripting language එක ගැන පුංචි පහේ විස්තරයක්.&lt;/div&gt;ගැරඩි, පොළොංගු, නයි, දෙපත් නයි අස්සේ ඉන්න මේ &lt;a href=&quot;http://python.org/&quot;&gt;python&lt;/a&gt; මොකාද? හවස් ජාමයේ පොල්ලක් අරන් ගියාට මේ විසකුරු (කිව්වට එහෙමමත් නැතෙයි සිතමි) සතාගෙන් බේරීමට බැරි බව මතක තබා ගන්න. දිරා ගිය කොල ගොඩක් අස්සේ මූ සොයාගන්නට නැතත් ඔබගේ කොම්පීටරයේ දැනටමත් හැංගී සිටිනවා නොඅනුමානයි.&lt;br /&gt;Linux, Mac OSx මෙහෙයුම් පද්ධති සමඟ තිබෙන ඔබේ කොම්පීටරයේ දැනටමත් python ඉන්නා බව නිසැකය (භය වෙන්ට කාරි නැත ඔබගේ Windows පද්ධතියටත් python ඇරයුම් කිරීමට පිලිවන).&lt;br /&gt;මූ ඉන්නවාදැයි සොයා බැලීමට උවමනා නම් &lt;code style=&quot;display: inline;&quot;&gt;python&lt;/code&gt; කියා shell/cmd/terminal එකේ type කරන්න : python ස්තාපනය කොට, තිබේනම් ඒගැන විස්තරක් සමගම python shell එක පටන් ගනීවි; නැත්නම් වෙන දේ ඔබ දනී. වැඩි සෙල්ලම් දැමීමට post එක යට හරියට යනකම් කියෙව්වොත් හොඳය.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Python උපත සහ නම් තැබීම&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;නිර්මාපකයා : Guido van Rossum (&lt;a href=&quot;http://www.python.org/%7Eguido/&quot;&gt;homepage&lt;/a&gt; /  &lt;a href=&quot;http://neopythonic.blogspot.com/&quot;&gt;blog&lt;/a&gt;)&lt;br /&gt;අදහස හා ක්‍රියාවට නැංවීම : 1980 - 1989&lt;br /&gt;උරුමය / උත්තේජනය : ABC programming language&lt;br /&gt;කුලය : Scripting language (Python interprtor එක මත දුවයි)&lt;br /&gt;නම් තැබීම : &lt;a href=&quot;http://en.wikipedia.org/wiki/Monty_Python&quot;&gt;Monty Python TV show (comedy)&lt;/a&gt; - කෙටිනම Pythons ලෙස&lt;br /&gt;Python 1.0 මුදාහැරීම : 1994&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Python පටාන් ගනිමු&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;ඔක්කොටම කලියෙන් python ස්ථාපනය කරගෙන තියෙන්නෙපැයි. පෙර කියූ පරිදි Mac හෝ Linux පාවිච්චි කරන අපේ ගොයියන්ට දැන්ම කලකිරෙන්නට උවමනා නැත. නමුත් ඔබත් Windows සහෘදයෙක් නම් දැන්ම &lt;a href=&quot;http://www.python.org/&quot;&gt;මෙතන්ට&lt;/a&gt; ගොහින් බාගන්න. හා හා .. හදිසි නැතුව පොඩ්ඩක් බලමු, මේක් තවත් කොම්පීටරේට බරක් වෙන්න එකතු කරන දෙයක්ද කියලා : ඔබ python වලට කොයිතරම් ආස කරයිද කියලා?  මේ ටිකත් කියවලා කැමතියි නම් බාගන්න නැත්නම් නිකා ඉන්න.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;කාටත් එක ලෙස Python&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Python interpreter&lt;/b&gt; එක තියෙන ඕන machine එකක python වැඩ කරයි. &lt;a href=&quot;http://www.python.org/&quot;&gt;Python foundation&lt;/a&gt; එක විසින් නිකුත් කරන cPython ඕනැම Windows, Mac OSx, Linux system (&lt;b&gt;Cross Platform&lt;/b&gt;) වල වැඩ කරන අතර Iron Python (.NET framework හා සම්බන්ධව), Jython (JVM එක හා බැඳුනු) නිකුතු තවත් පිරිස් නිකුත් කරයි. Python interpretor එක කොයි කොයි විදියෙන් නිකුත් වුනත් Python language එක කාටත් එකය. python වලින් ලියවුනු software එක කාටත් පාවිච්චි කරන්න ඇහැකියි : මොකද software bundle එක සමඟ python embed කල විට user ට python ගැන / user පාවිච්චි කරන python version ගැන වද වෙන්න ඕනෑ නැහැ(බොහෝ වෙලාවට මේක වැදගත් ව්න්නේ Windows users ලාට).&lt;br /&gt;&lt;br /&gt;Memory Management, Garbage collection වැනි &lt;b&gt;high level &lt;/b&gt;ගති තියෙන python interpreter එක Micro controller වලට ඇතුල් කිරීමටත්, C level code ලිවීමටත්, C/C++ code අතරට ඇතුල් කිරීමටත් පුලුවනි.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Python language එක ඉගෙන ගන්න අයට&lt;/b&gt;: Python interactive shell එක නිසා කවුරුත් ඉගෙනගන්න ආස බව තමයි කියන්නේ. Compile නෑ, Link කරන්න නෑ කෙලින්ම command එක  run කරන්න තියෙන්නේ (shell/cmd වගේ තමයි : වෙනසකට තියෙන්නේ ඒකට තේරෙන්නේ python) ඕන මඟුලක් කොටල test කරන්න පුලුවන්. පහල තියෙන්නේ මම Fedora මැෂිමේ python එක්ක කරපු විකාරයක්.  &lt;br /&gt;&lt;pre&gt;[user@fedoramachine ~]$ python&lt;br /&gt;Python 2.7.1 (r271:86832, Apr 12 2011, 16:16:18) &lt;br /&gt;[GCC 4.6.0 20110331 (Red Hat 4.6.0-2)] on linux2&lt;br /&gt;Type &quot;help&quot;, &quot;copyright&quot;, ....&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; print(&#39;ayubowanda&#39;)&lt;br /&gt;ayubowanda&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; 10*10 #puluwann nam kiyanna balnna&lt;br /&gt;100&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;&lt;/pre&gt;හැම තිස්සෙම shell එකේ විතරක් කොටල වැඩක් නැති නිසා තමයි&lt;b&gt; python script&lt;/b&gt; කියල ලියන්නේ. .py extension එක තියෙන්නේ ඒවගේ script වලට. බොහොමයක් scripting language වල වගේ උඩ ඉඳන් පහලට තමයි මේවත් run වෙන්නේ. main() එකක් හොය හොය ඉන්න දෙයක් නෑ. කෙලින්ම වෑඩට බහින්න පුලුවන්. python script දැකලම නැත්නම් &lt;a href=&quot;http://wapnishantha.blogspot.com/2011/06/python-syndi.html&quot;&gt;මෙතනින්&lt;/a&gt; බලාගන්න (ඕක දැන්ම දරුණු වැඩියි : බයවෙලා python නම් අතාරින්න එපා ඕං)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;python වල ස‍රල බව&lt;/b&gt; නිසාම programming නොදන්නම කෙනෙක්ට උනත් python වලින් පටන් ගන්න කියල දැනමුතු ලොක්කො කියනවනේ.&amp;nbsp; ඇමෙරිකාවේ නම් medicine ඉගෙන ගන්න අයටත් පුංචි පහේ python උගන්වනවා. Dynamic typing (variable define කරද්දි ඒකේ type එක sepcify කරන්න ඕන නෑ.), Interactive shell, &lt;a href=&quot;http://diveintopython.org/getting_to_know_python/documenting_functions.html&quot;&gt;Docstrings&lt;/a&gt; (commnet ජාතියක් : code එක අතර ලියවෙන මේ strings නිසා auto documentation වෙනවා)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Readable code&lt;/b&gt; : යම් තරමකට programming තේරෙන ඒත් python නොදන්න කෙනෙක්ට උනත් code එක තේරුම් ගත හැකියි&lt;b&gt; (&lt;/b&gt;පහලින් තියෙන Insertion sort script එක තේරෙනවාද බලන්න : නොතේරුනත් ගානක් නැත : අපි තවම කිසිදෙයක් python ගැන කිසිදෙයක් දන්නේනෑනේ&lt;b&gt; &lt;/b&gt;වගේම sorting කියන්නේ computer sceince වල දරුණු මතෘකාවක්නේ&lt;b&gt;) &lt;/b&gt;අනිවාර්යෙන්ම indentation තිබිය යුතු වීම මේකට ගොඩක් දුරට බලපාන්න පුලුවන්. පෙර කියූ සරල බව නිසාත් readable වීම නිසාත් &lt;b&gt;code maintenance&lt;/b&gt; වගේම &lt;b&gt;coding&lt;/b&gt; නුත් &lt;b&gt;බොහොම ලේසියි&lt;/b&gt; (ඒනිසා වෙන්නැති පහන් අයියා හත්මලුවට python තේරුවේ) පහල code එක හොරකම් කෙලේ &lt;a href=&quot;http://www.ece.uci.edu/%7Echou/py02/python.html&quot;&gt;මෙතනින්&lt;/a&gt;. &lt;br /&gt;&lt;pre class=&quot;prettyprint lang-python&quot;&gt;def insertionSort(A):&lt;br /&gt;    for j in range(1, len(A)):&lt;br /&gt;        key = A[j]&lt;br /&gt;        i = j - 1&lt;br /&gt;        while (i &amp;gt;=0) and (A[i] &amp;gt; key):&lt;br /&gt;            A[i+1] = A[i]&lt;br /&gt;            i = i - 1&lt;br /&gt;        A[i+1] = key&lt;br /&gt;&lt;/pre&gt;Python matured language එකක් වීම තවත් අතකට ඒකේ භාවිතය වැඩිවෙන්නට බලපානවා. &lt;b&gt;Advance built-in functions&lt;/b&gt; බොහොමයක් තියෙනවා වගේම &lt;b&gt;packages&lt;/b&gt; නුත් &lt;a href=&quot;http://pypi.python.org/pypi&quot;&gt;මාර තොගයක්&lt;/a&gt; තියෙනවා.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Desktop application&lt;/b&gt; විතරක් නෙමෙයි &lt;b&gt;Web applications&lt;/b&gt; නුත් python වලින් හදන්න පුලුවන් (හොඳම උදාහරණයක් : මේදවස් වල Google app-engine උඩ දුවන හත්මාලුව). Python shell එකේ run වුනත් Desktop GUI නුත් හදන්නහ් පුලුවන්. ඕන්නම් &lt;a href=&quot;http://wiki.python.org/moin/GUI%20Programming%20in%20Python&quot;&gt;මෙතනත්&lt;/a&gt; කොටල බලන්න. PHP, JSP වල හිර වෙලා ඉන්නේ නැතුව Python web applications හදන්න දැන් කාලේ හරි.&lt;a href=&quot;http://news.ycombinator.com/&quot;&gt; y-combinator - hacker news&lt;/a&gt; වල කට්ටිය කතාවෙන හැටියට නම් දැන් අලුත් web programming රැල්ල වෙලා තියෙන්නේ &lt;a href=&quot;http://wiki.python.org/moin/WebFrameworks&quot;&gt;Python Web frameworks&lt;/a&gt; සහ &lt;a href=&quot;http://rubyonrails.org/&quot;&gt;Ruby on Rails&lt;/a&gt; (&lt;a href=&quot;http://rubyonrails.org/&quot;&gt;Nodejs&lt;/a&gt; - [Javascript for servers] නුත් නැග ගෙන එන පාටයි) - Python for web ගැනත් Ruby සහ Python ගැනත් පසුවට තියමු.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Python community / පාවිච්චි කරන්නෝ&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;වැඩිපුරම පාවිච්චි කරන පිරිස තමයි : &lt;a href=&quot;http://www.catb.org/%7Eesr/faqs/hacker-howto.html&quot;&gt;Hackers&lt;/a&gt; - The Heroes of computer revolution. ඔවුන් කියන පරිදි Python පාවිච්චි කිරීම හේතුවෙන් ඔවුන්ගේ වැඩ කටයුතු කාර්යක්ෂම වෙනවලු : උඩ කියපු හේතු නිසා වෙන්ම. Business කාරයෝ Hackers ලව hire කරන්නේ තමන්ගේ idea එකෙන් හදන application එක එදා රෑටම / පුලුවන් තරම් ඉක්මන්ට market එකට ගේන්න ඕන උනාම තමයි.&lt;br /&gt;&lt;br /&gt;Google, Reddit, Facebook (Backend වැඩ). Yahoo(Backend වැඩ) වලට පාවිච්චි කරන අතරේ, Disqus, Dropbox වගේ කොම්පැනි වල මුලු system එකම දුවන්නේ python උඩ. Google ලගේ official languages 3 අතරට python ඇවිත් තියෙන්නේ නිකන් නෙමෙයි.&lt;br /&gt;&lt;br /&gt;වාර්ෂිකව conference එකකුත් තියෙනවානේ - ඒගැන &lt;a href=&quot;http://www.pycon.org/&quot;&gt;මෙතනින්&lt;/a&gt; බලන්න&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://wiki.python.org/moin/Community&quot;&gt;Python වල friendly community&lt;/a&gt; එක මොනවා වුනත් Hacker බහුතරය නිසා dedicated community එකක් තියෙන බවනම් මතක තියාගන්න ඕන.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;බාන වෙලාව &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;දැන් ඉතින් ඔන්න &lt;a href=&quot;http://www.python.org/&quot;&gt;&lt;b&gt;python බාගන්න වෙලාව හරි&lt;/b&gt;&lt;/a&gt;. බාන්න ගියාම එන ප්‍රශ්නයක් තමයි මොන version එකද කියන එක. දැනට නම් 2.7 තාමයි ඇඟට ගුණ (Python 3 backward compatible නොවීමත් : python වල අලුත් features backward compatible ලෙස 2.6+ වල අනතර්ගත්වී තිබීම ). හැබයි ලඟදීම Python 3k වලට ලේසිති වෙලා ඉන්න.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;ගුණ වගේම අගුණ&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Interpreter එකක් වීම නිසා script run වීමේදී පෙනෙන මන්ධගාමී ස්වාභාවය - මේ බව මගහැරීමට compiled python scripts(.pyc) තිබේ - මේ පිළිබඳව python community එකේ වැඩි අවදාන්යක් යොමු වී තිබෙන බව පැහැදිලි වන්නේ දැන් Active development ව තියෙන &lt;a href=&quot;http://pypy.org/&quot;&gt;Pypy&lt;/a&gt; ව්‍යපෘතිය නිසාවෙනි - නමුත් community එක කියන්නේ python coding වල තියෙන සරල සුමට බව නිසා තමන්ට virtual machine එකේ මන්ධගාමී බව දැනෙන්නේ නැති බවයි.&lt;br /&gt;&lt;br /&gt;සමහර අයට python වැඩිපුර භාවිතය නිසා මොකක්ද ලෙඩකුත් හැදෙනවාලු. ඕන්න කලින්ම කිව්වා.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;කල් අරින්න කෝ වෙලාව&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;- දැන්ම ඉගෙන ගන්න වැඩේට බහින්න ආස අයට කඩ්ඩෙන් ලියැවුනු ලිපි සහ පොත්පත් set එකක් &lt;a href=&quot;http://wiki.python.org/moin/BeginnersGuide/Programmers&quot;&gt;මෙතනින්&lt;/a&gt; බලාගන්න.&lt;br /&gt;- Python windows installer එකෙන් download කරපු අයට python manual එක උනත් කියවන්න පුලුවන්. ඒකම තමයි &lt;a href=&quot;http://www.python.org/doc/&quot;&gt;online&lt;/a&gt; තියෙන්නේත්.&lt;br /&gt;- TV බලනවා වගේ &lt;a href=&quot;http://ontwik.com/category/python/&quot;&gt;මේකත්&lt;/a&gt; බලන්න තේරෙන නොතේරෙන ඒව තියෙයි හැබයි :) &lt;br /&gt;- &lt;a href=&quot;http://code.google.com/edu/languages/google-python-class/&quot;&gt;Google Code Uni Python class&lt;/a&gt; - ගොඩක් දේවල් ඉගෙන ගන්න පුලුවන්&lt;br /&gt;- pyCon වීඩියෝ ටිකකුත්&amp;nbsp; &lt;a href=&quot;http://www.pycon.org/&quot;&gt;මෙතනින්&lt;/a&gt; හා &lt;a href=&quot;http://blip.tv/pycon-us-videos-2009-2010-2011&quot;&gt;මෙතනින්&lt;/a&gt; බලන්න (අසල්වැසි ඉන්දියාවත් ඕකක් පවත්වනවා)&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;අන්තිමට&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;මේ post එක බොහෝ දුරට tech නුත් නැති, එහෙමමත් නැති කරන්න උත්සාහ කළත් කොයිතරම් සාර්ථකද කියලා නම් තේරෙන්නේ නෑ. ලියන්න පටන්ගන්න දේ නෙමේනේ අන්තිමට ඉවර වෙන්නේ :) මම සිරා python පොරක් නොවුනාට python වටින් ගොඩින් පොත් කියවලා ඉගෙන ගන්නවා (සුද්දගේ ඉංගිරිසය කියවීමට හා ලිවීමට දැන ගැනිමේ වටිනාකම තේරෙන්නේ ඔය වෙලාවට තමා). තවත් python සීන් බලාපොරොත්තුවන්න.</content><link rel='replies' type='application/atom+xml' href='http://s.ransara.net/feeds/1554380713278236182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://s.ransara.net/2011/06/python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/1554380713278236182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/1554380713278236182'/><link rel='alternate' type='text/html' href='http://s.ransara.net/2011/06/python.html' title='නැගලා යන්න python !'/><author><name>i-am-u</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3905735696186908138.post-9062124012872732354</id><published>2011-06-16T09:22:00.003-04:00</published><updated>2012-08-08T13:50:39.947-04:00</updated><title type='text'>රිවිර පත්තරේ Firefox හා Webkit වල වැඩ නොකරන්නේ ඇයි - web font කතාවක්</title><content type='html'>&lt;div style=&quot;background-color: yellow; padding:5px;&quot;&gt;Update: රිවිර පත්තරේ අකුරු අවුල් වෙලා පේනවා නම් &lt;a href=&quot;http://s.ransara.net/2012/08/characters-replaced.html&quot;&gt;මේක බලන්න&lt;/a&gt;. &lt;br/&gt;නව මුහුනුවරකින් එන රිවිර අන්තර්ජාල කලාපයට මෙය පරණ කතාවකි. කියවන්න &lt;a href=&quot;http://www.rivira.lk&quot;&gt;&lt;b&gt;රිවිර&lt;/b&gt;&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;feat&quot; style=&quot;background: url(&#39;http://cdn2.iconfinder.com/data/icons/crystalproject/128x128/apps/font.png&#39;) no-repeat scroll 0 0 transparent; padding-bottom: 10px; padding-left: 150px;&quot;&gt;රිවිර පත්තරේ අරන්තර්ජාල නිකුතුව ඉලක්ක කර තිබෙන්නේ Internet Explorer බව නොරහසකි. මේ නිසා දැන් නැගී එන Firefox, Chrome වැනි browser පාවිච්චි කරන්නා වූ පාඨකයන් හට ගෙන දෙන්නේ නොමනා  හිසරදයකි. මේකේ අගමුල හොයද්දි EOT, TTF, OTF ගැනත් පොඩ්ඩක් කතා කරමු.&lt;/div&gt;&lt;a href=&quot;http://www.rivira.lk/&quot;&gt;රිවිර&lt;/a&gt; පත්තරේ අන්තර්ජාල නිකුතුව කියවන්න යන හැමෝටම ඔන්න ඉතින් ලියලා තියෙනවා Special notice එකක් &lt;br /&gt;&lt;blockquote&gt;Please use Internet Explorer web browsers to read &lt;a href=&quot;http://www.rivira.lk/&quot;&gt;www.rivira.lk&lt;/a&gt;. No need to download any Sinhala font. &#39;Isiwara&#39; Sinhala font supports Internet  Explorer web browser only. Do not use other web browsers to read &lt;a href=&quot;http://www.rivira.lk/&quot;&gt;www.rivira.lk&lt;/a&gt;. Sorry for the inconvenience &lt;/blockquote&gt;&lt;a href=&quot;http://www.rivira.lk/&quot;&gt;Rivira&lt;/a&gt;, &lt;a href=&quot;http://lankaenews.com/Sinhala/&quot;&gt;Lanka e news&lt;/a&gt;,&lt;a href=&quot;http://www.lankadeepa.lk/&quot;&gt; Lankadeepa&amp;nbsp;&lt;/a&gt; වගේ site කිහිපයකම මේ ප්‍රශ්නය තියෙනවා.&lt;br /&gt;Internet Explorer කියන්නේ පාව්චියට ගන්නවනම් ගන්න තියෙන අන්තිම browser එක කියලා ඉතින් ආයි ආයි කියන්ට ඕනා නෑ නොවැ (අහලවත් නැති browser ගැන ඔලුවට දාගන්න එපා). දැන් තියෙන ප්‍රශ්නේ තමයි මෙච්චර චාටර් browser එකක්ම ඇයි මේ වැදගත් කියන පත්තරක් පාව්ච්චි කරන්න කියන්නේ කියලා.&lt;br /&gt;ආ, තවත් ප්‍රශ්නයක් තියෙනවා : Internet Explorer ඔච්චරම චාටර් නම්, ඒකේ වැඩ කරන ඕන දෙයක් අනිත් ඒවයිත් වැඩ කරන්න ඕනනේ :) ඒ කියන්නේ IE වල තියෙන වැදගත් කියන ගුණාංගයක් අනිත් browser වල නෑ කියන එකද? ඕකට පිළිතුරු මේක දිකටම කියවන් ගියොත් ලැබෙයි.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;ඉතිහාසෙන් බිඳක්&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;රිවිර පත්තරේ මුල්ම අන්තර්ජාල නිකුතුව එන්නැත්තේ අවුරුදු ගානකට කලියෙන් වෙන්න ඕන (2006 අප්‍රේල් තමයි දැනට පේන්න තියෙන පරණම එක :) 2006 වෙද්දි සිංහල අකුරු අන්තර්ජාලයට ගන්න යම් තරමකට අපහසු වෙලා තිබුනු බව පැහැදිලියි. ඒකට හේතුව සිංහල අකුරු නැති එක නෙමේ, හැම පරිශීලකයා ගාවම එක සිංහල Font නැතිවීම.&lt;br /&gt;අපේ රටේ ඒවෙන කොටත් ඉතින් බහුතරක් පාවිච්චි කරන්න ඇත්තේ Windows ම (ඔව්ව ඉතින් මොන කොපි වුනත් අපිට මොකෝ) වෙන්න ඕනෑ. මේ නිසා &lt;a href=&quot;http://www.locallanguages.lk/history&quot;&gt;සිංහල Unicode&lt;/a&gt;  මහජනයා අතරට පැමිණ තිබෙන්නේ 2004 - 2006 වන විටයි. ඉතින් සිංහල Unicode නැති කාලේ කොම්පීටරේට සිංහලෙන් කොටන්න දුන්න ගේම දන්නෝ දනිති. රිවිර විතරක් නෙමේ තවත් site ගහපු අපේ වෙබ් මාස්ටර්ලා එක එක ගේම් දීලා තියෙනවා.&lt;br /&gt;ඉතින් තමන්ගේ වෙබ් site එක තමන්ට ඕන කරන Font  එක ඇති නැති සියලු දෙනාට පෙන්නන්න තාක්ෂණයක් තමයි Web Fonts කියන්නේ. Web Font support කරපු පලවැනි හාදයා තමයි Internet Explorer 4.0 - 1997දී.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;ඇයි IE විතරක්?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;IE කියන්නේ කවදත් Open standards පිලිනොපැදපු browser එකනේ. IE බොහෝදුරට දිව්වේ Browser war ශෛලියට නිසා web standards සහ specification වලට පිටින් දේවල් තමයි එකතු උනේ (දැන් IE වල ලොකු ප්‍රගතියක් තියනවා : IE 9) web developers හැටියට කොච්චර IE එක්ක මලපැනල හිටියත් IE වලින් එහෙන් මෙහෙන් ඇදගත්ත කෑලි තමයි web fonts, ajax කියන්නේ.  1998 ආපු CSS2 specification එක මේගැන පොඩ්ඩක් උනන්දුවෙලා තියෙනවා. CSS3 සමඟ මේක නැගලා යන්න එන්නේ මේ මෑතකදී. ඕක ආව ගමන්ම වගේ Web Fonts වලට Firefox 3.5, Chrome 5, Safari, Opera වගේ ඒවා support කලා.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;කොහොමද මේ web fonts තාක්ෂණය පාවිච්චි කරන්නේ&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;මෙතන පහල තියන Font Family කියන කොටස තමයි වැදගත්.&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-css&quot;&gt;&amp;lt;p style=&quot;font-family: &#39;Coming soon&#39;, arial, serif;&quot;&amp;gt;&lt;br /&gt;Do you know that I use a Web Font, &lt;br /&gt;which most probably is not installed in your system. &lt;br /&gt;Coming-soon font from Google web fonts :)&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;/pre&gt;උඩ code එකේ තියෙන Coming soon කියන Font එක ගොඩක් වෙලාවට කොම්පීටරේ නෑ. මේ නිසා තමයි පහල තියෙන css style එක ලියලා තියෙන්නේ. ඒත් Arial සහ serif කියන්නේ බොහෝ වෙලාවට කාගෙත් machine වල තියන Font. ඒවා තියෙන්නේ හදිසියේවත් web font වැඩේ හරිගියේ නැත්නම්, ඒකියන්නේ පහල තියෙන css style එක හරියට ගොඩ ගියේ නැත්නම් මතු වෙන්න(අපරාදේ කියන්න බෑ රිවිර site එකේ එහෙම වැඩ කෑල්ලක්වත් දාලා නෑ වගේ). මේකේ මොකක්ද වෙන්නේ කියල බලන්න. &lt;br /&gt;&lt;pre class=&quot;prettyprint lang-css&quot;&gt;&amp;lt;style type=&quot;text/css&quot;&amp;gt;&lt;br /&gt;@font-face {&lt;br /&gt;  font-family: &#39;Coming Soon&#39;;&lt;br /&gt;  font-style: normal;&lt;br /&gt;  font-weight: normal;&lt;br /&gt;&lt;br /&gt;  src: local(&#39;Coming Soon&#39;), &lt;br /&gt;       local(&#39;ComingSoon&#39;), &lt;br /&gt;       url(&#39;/url/to/coming/soon&#39;) format(&#39;woff&#39;);&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&lt;/pre&gt;මේක වැඩ කරන්නේ මෙහෙමයි.  @font-face පේලිය Font එකක් define කරන්න යනව වගේ දෙයක් තමයි වෙන්නේ. ඒ Font එකේ Family එක තමයි Coming Soon (කලින් ලියපු HTML එකට මේක ගලපන්න උදවු වෙනවා).  ඊට පස්සේ වැදගත් වෙන්නේ src පේලිය / පේලි 3. local කියල කියලා තියෙන නිසා user ගේ machine එකේ මේ font එක තියද කියල browser බලනවා. තිබුනොත් ඊලඟ ඒවට යන්න ඕනේ නෑ (ඒ කියන්නේ ඉක්මනට load වෙනවා, ආයි ෆොන්ට් download කරන්න ඕන නෑනේ) බොහෝ වෙලාවට font එක නැති නිසා ඒක web එකෙන් load කරනවා (ඕක හින්දානේ web fonts කියන්නේ :).  ඔන්න ඉතින් වැදගත්ම දේ තමයි format(&#39;woff&#39;) ඒක හරි simple නේ ඔය URL එක දීල තියෙන්නේ woff file එකකට.  &lt;br /&gt;&lt;blockquote&gt;WOFF කියන්නේ - The Web Open Font Format (WOFF), a format developed during 2009, is essentially a wrapper that contains sfnt-based fonts (TrueType (TTF), OpenType or Open Font Format) that have been compressed using a WOFF encoding tool to enable them to be embedded in a web page. - &lt;a href=&quot;http://en.wikipedia.org/wiki/WOFF&quot;&gt;from Wikipedia&lt;/a&gt;&lt;/blockquote&gt;WOFF වගේ තව තියෙන File format ටිකක් තමයි OTF (Open Type Font), TTF (True Type Font), EOT (Embedded OpenType&amp;nbsp;).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;අපේ ප්‍රශ්නෙට කෙලින්ම හේතුව&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;EOT කියන්නේ Microsoft ආයතනය විසින් Web Font තාක්ෂණය හඳුන්වා දෙද්දී පාවිච්චි කරපු තාක්ෂණය. ඒ නිසා මේ Format එක Proprietary format එකක්. License කරලා තිබුනේ Microsoft ලාට. Microsoft License කරපුවා අනිත් browser නිර්මාපකයන්ට අල්ලන් නැති නිසා ඒගොල්ලෝ ඔය උඩ තියෙන අනිත් Format වලට විතරක් support කරන්න කැමති වුන බව තමයි සඳහන් වෙන්නේ. ඒනිසා  IE විතරයි මේ EOT File format එක render කරන්නේ හෝ support කරන්නේ.&lt;br /&gt;ඒ කියන්නේ IE වල තියෙන මේ ගුණාංගය (EOT support කිරිල්ල) අනිත් browser වල නෑ :) අපේ site එකක් web font පාවිච්චි කරනවා නම් IE conditional styles යොදලා EOT format එකෙන්ම දෙන්න වෙනවා.&lt;br /&gt;&lt;br /&gt;දැන්වත් රිවිර site එකට ගිහින් source code එක බැලුවොත් හොඳයි : |&lt;br /&gt;&lt;br /&gt;ඔය තියෙන්නේ HTML ටික (අකුරු ටික ආම්බාන් කොරගත්තේ හරි අමාරුවෙන් :) &lt;br /&gt;&lt;pre class=&quot;prettyprint lang-css linenums&quot;&gt;&amp;lt;p align=&quot;left&quot;&amp;gt;&lt;br /&gt; &amp;lt;b&amp;gt;&lt;br /&gt;  &amp;lt;font face=&quot;IsiAbhaya&quot; color=&quot;#800000&quot;&amp;gt;&lt;br /&gt;  plz [z vl ~qyj ryx&amp;lt;br&amp;gt;&lt;br /&gt;  Rpt [ y{ Rp l{v rpx&amp;lt;br&amp;gt;&lt;br /&gt;  p{p ~~ k vq pz ~v[ R~x&amp;lt;br&amp;gt;&lt;br /&gt;  UlK r~p rxp ~l ~lp {x&amp;lt;br&amp;gt;&lt;br /&gt;  &amp;lt;i&amp;gt;~Yzrx : hJzN.Y.. p{ylp&amp;lt;br&amp;gt;&lt;br /&gt;  lx : R~[ Sz&amp;lt;/i&amp;gt;&lt;br /&gt;  &amp;lt;/font&amp;gt;&lt;br /&gt; &amp;lt;/b&amp;gt;&lt;br /&gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&lt;/pre&gt;3වෙනි පේලියේ IsiAbya Font එක තමයි case එක. ඕන්න යට තියෙනවා අවුලකට හිටින CSS style එක. පෙනේද අවුල?&lt;br /&gt;&lt;pre class=&quot;prettyprint lang-css linenums&quot;&gt;@font-face {&lt;br /&gt;    font-family: IsiAbhaya;&lt;br /&gt;    font-style:  normal;&lt;br /&gt;    font-weight: normal;&lt;br /&gt;    src: url(IsiAbhaya.eot);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;දාලා තියෙන්නේ EOT format එකේ Font එකක් නේ. පෙනේ තමා අවුල. ඔහොම තියෙද්දී ඉතින් කොහොමද මේක Firefox වලින් බලන්නේ :) ඒගොල්ලන්ගේ special notice එකේ තියෙන විදියටම Font download කරලා වැඩක් නෑ. මොකද CSS style එකේ local තියෙද බලන්නේත් නෑ, local තිබුනත් Firefox EOT support කරන්නේත් නෑ.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;a href=&quot;#jump_piliyam&quot; name=&quot;jump_piliyam&quot;&gt;&lt;b&gt;අවුලට පිලියම්&amp;nbsp;&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;මේක තමයි ටිකක් වැඩිපුරම අවුල් සහගත. හිතන්න පුලුවන් විසඳුම් ටිකක්: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Isiabhaya Font එකේ  TTF,OTF හෝ WOFF ජාතියක් හොයාගත්තොත් හෝ හදාගත්තොත් මොනවාහරි ජිල්මාර්ට් එකක් දාල මේකට අඹර ගන්න තිබුනා - TTF to EOT කොච්චර තිබුනත්, EOT to TTF වගේ ඒවා හොයා ගන්නවත් නෑ. තිබුන &lt;a href=&quot;https://bitbucket.org/philip/font-optimizer/src/&quot;&gt;එක tool එකක්&lt;/a&gt;(මේක  Perl) script එකක් - Fedora වල උත්සාහ කලේ) try කරා ඒත් Compression අවුලක් කියනවා&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dhanikauom.blogspot.com/&quot;&gt;දනිශ්ක අයියාගේ&lt;/a&gt; &lt;a href=&quot;http://sett-decoder.appspot.com/&quot;&gt;Sett-Deco&lt;/a&gt; එකේ අනික් පැත්ත හදාගන්න පුලුවන්නම් වැඩේ ගොඩ - Sett-Deco එකේ වෙන්නේ Unicdoe to non-unicode අපිට ඕන වෙන්නේ non-unicode to Unicode. මේ ගැන හොයා බලද්දි තමයි දැක්කේ මේක &lt;a href=&quot;http://www.scribd.com/doc/27861173/SiyaBasScript-Mozilla-Firefox-and-Google-Chrome-Extension-for-converting-non-Unicode-Sinhala-text-to-Unicode&quot;&gt;Siyabasa script&lt;/a&gt; මාතෘකාවට වැදගත් &lt;a href=&quot;http://code.google.com/p/siyabasscript/downloads/list&quot;&gt;භාණ්ඩයක්&lt;/a&gt; වගේ - මේ ක්‍රමයේ තවත් වාසියක් තියෙනව copy, paste කරන කොට වෙන්නේ unicode වලින් හින්දා&lt;/li&gt;&lt;li&gt;ඔච්චර ගේමක් නොදී Internet Explorer එකෙන්ම web site එක බලුවනම් හරි නේ : ) - IE Tab extension එක Firefox වලට තියෙනවා&lt;/li&gt;&lt;/ul&gt;&lt;a href=&quot;http://code.google.com/p/siyabasscript/downloads/list&quot;&gt;Siyabasa script&lt;/a&gt; එක ගැන තව සොයා බලන්න ඕනේ. ඒක මේ ප්‍රශ්නේට හොඳම විසදුමක් වගෙයි පේන්නේ (මාත් මේක දැන්නේ දැක්කේ : (</content><link rel='replies' type='application/atom+xml' href='http://s.ransara.net/feeds/9062124012872732354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://s.ransara.net/2011/06/firefox-webkit-web-font.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/9062124012872732354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3905735696186908138/posts/default/9062124012872732354'/><link rel='alternate' type='text/html' href='http://s.ransara.net/2011/06/firefox-webkit-web-font.html' title='රිවිර පත්තරේ Firefox හා Webkit වල වැඩ නොකරන්නේ ඇයි - web font කතාවක්'/><author><name>i-am-u</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>