Sunday, June 5, 2011

සින්ඩියක් හදන්නේ කොහොමද - Python syndi

සින්ඩියක් හදන්නේ කොහොමද කියන ප්‍රශ්ණය ගොඩක් අයට ඇති. සරළව කිව්වොත් මෙතන වෙන්නේ RSS හෙවත් ඔබගේ බ්ලොග් අඩවියේ තියෙන පෝෂක කියවන එක. සින්ඩිකට ඉල්ලුම් කරද්දි අපි RSS ලබා දෙන්නේ ඒ හින්දා. මතකද පහු ගිය ලිපිය ගූගල් වල වෙබ් සයිට් හොස්ට් කිරිම, Java පාදක කරගෙන ලිව්ව ලිපිය. අතුරු කතාවත් කියලාම වැඩේ පටන් ගන්නම්කෝ, ගිය සතියේ සයිබර් යාලුවෝ ටික නුවර ගිය වෙලාවේ පහන් කිව්වා Java වලට වඩා Python ලේසියි හා ඉක්මන් කියලා. ඒ වෙන කොටත් පයිතොන් ගැන මෙලේ හසරක් දැනං උන්නේ නැහැ. පස්සේ ගෙදර ඇවිත් තමයි මේ පයිතොන් වලින් සින්ඩියක් හදන වැඩේට අතගහලා බැලුවේ. ගුගල් දෙයියෝ හින්දා බය නැතුව වැඩේට බැස්සා.


සින්ඩියක් හදන්න කොච්චර ලේසිද කිව්වොත් මුලු සින්ඩියටම තියෙන්නේ ෆයිල් අටයි.


මුලින්ම දෙයියෝ ගාව තියන Getting Started: Python ලිපියට ගිහිල්ලා රවුමක් දාලා එන්න‍. එකේ තියනවා වින්ඩෝවල කොහොමද පයිතොන් ස්තාපිත කරගන්නේ කියලා.

මේකට ඔනේ
1.Python 2.5 - http://www.python.org/download/releases/2.5/‍‍‍
2.App Engine SDK - http://code.google.com/appengine/downloads.html
3.Windows Launcher for Google App Engine - http://code.google.com/p/google-appengine-wx-launcher/ -
හෝ http://code.google.com/p/google-app-engine-launcher/downloads/detail?name=GoogleAppEngine%20GUI.exe&can=2&q=
[ගුගල් වලට අප්ලෝඩ් කරන විදිහ]

වින්ඩෝස් 7 සඳහා තමයි සියලුම දේවල් මම යොදාගත්තේ. ඔය දෙකම භාගත කරගත්තට පස්සේ ඔබේ පරිගණකයේ සමාන්‍ය ආකාරයට ස්තාපනය කරගන්න පුලුවන්.


‍ගුගල් හොස්ටිං වල වෙනම ඩෙටා බේස් කතාවක් නැහැ. කෝඩ් එකෙන්ම තමයි ඩේටා බෙස් ටේබල් ඔක්කොම පාලනය කරන්න පුලුවන්.

සින්ඩියට අවශ්‍ය අපි හදන ෆයිල්
1. RSS ඇතුලු කිරිමට‍ ෆොම් එකක් - bloglist.py
2. සින්ඩි කේට් කිරිමට හෙවත් cron රන් කිරිමට - cronblogpost.py
3. ලිපි පෙන්විමට - synditest.py

ඔන්න ඔය ෆයිල් තුනෙන් තමයි මූලිකව ඕක වෙන්නේ, ඊට අමතරව තුන් වන පාර්ෂවයෙන් ඕනා වෙනවා feedparser කියන RSS කියවන කෝඩ් එක.

හරි දැන් එකින් එක ෆයිල් බලමු
1.app.yaml මෙයා තමයි සියල්ල පාලන කරන්නේ
application: lankeeyasyndi  මේ තියෙන්නේ ගුගල් එකේ අපේ ඇප්ලිකේෂන් අයිඩ් එක හෙවත් යූනික් නම
version: 1 මේක තියෙන්නේ කෝඩ් එක අප්ඩේට් කරද්දි වර්ෂන් වශයෙන් තියාගන්න
runtime: python
api_version: 1

handlers:
- url: /
  script: synditest.py - [ මේ ෆයිල් එක තමයි මුල් පිටුවට එන්නේ ]

- url: /bloglist
  script: bloglist.py - [ RSS ඇඩ් කරන්නේ මේ ෆොම් එකෙන්]
  
- url: /saveblog
  script: bloglist.py - [ ඇක්ෂන් එකක් වන saveblog ආපුවම මේ ෆයිල් එක ‍ලෝඩ් කරන්න ]
   
- url: /cronblogpost
  script: cronblogpost.py - [  ලිපි සොයා මෙහෙයුම කරන cron ෆයිල් එක ]
 
- url: /.*
  script: not_found.py - [  අනවහශ්‍ය URL ගැහැව්වොත් මේ පිටුවට යන්න ]


2. bloglist.py මෙයා ඉන්නේ RSS ෆෝම් එකට
import cgi

  import datetime

  import urllib

  import wsgiref.handlers
from google.appengine.ext import db

  from google.appengine.api import users

  from google.appengine.ext import webapp

  from google.appengine.ext.webapp.util import run_wsgi_app
ඔය ඉහතින් තියන එව්වා ඔනේ හරිද


"""Name - wapnisyndi """

  """Developer - WAP NISHANTHA SRI LANKA """

  """DATE -  2011-06-05  """
  මං ගැනත් සඳහනක්



class Blogroll(db.Model): මේ තියෙන්නේ බ්ලොග් ලිස්ට් එකට අදලා ටේබල් එක

  """Models an individual Guestbook entry with an author, content, and date."""

  

  burl = db.StringProperty(multiline=True)
  brss = db.StringProperty(multiline=True)
  bowner = db.StringProperty(multiline=True)
  bstatus = db.StringProperty(multiline=True)
  date = db.DateTimeProperty(auto_now_add=True)


def blogslist_key(blogslist_name=None):

  """Constructs a datastore key for a Guestbook entity with guestbook_name."""
  return db.Key.from_path('Blogslist', blogslist_name or 'default_blogslist')


class MainPage(webapp.RequestHandler):

  def get(self):

  self.response.out.write('<html><body>')
  blogslist_name=self.request.get('blogslist_name')


පහලින් තියෙන්නේ RSS ඉල්ලන FROM එක
# Write the submission form and the footer of the page

  self.response.out.write("""

  <form action="/saveblog" method="post">

  <table border="0" cellpadding="0" cellspacing="0">

  <tr>

  <td>Your Email</td>

  <td><input type="text" name="bowners" /></td>

  </tr>

  <tr>

  <td>Blog URL</td>

  <td><input type="text" name="burl" /></td>

  </tr>

  <tr>

  <td>Blog Rss</td>

  <td><input type="text" name="brss" /></td>

  </tr>

  <tr>

  <td></td>

  <td><input type="submit" value="send"></td>

  </tr>

  </table>

  <div></div>

  </form>

  </body>

  </html>""")


class Blogslist(webapp.RequestHandler):

  def post(self):

  blogslist_name = self.request.get('blogslist_name')

  blogroll = Blogroll(parent=blogslist_key(blogslist_name))
blogroll.burl = self.request.get('burl')

  blogroll.brss = self.request.get('brss')

  blogroll.bowners = self.request.get('bowners')
blogroll.put()

  self.redirect('/') - ‍සයිට් එකට රිඩිරෙක්ට් කරලා දාන්න


application = webapp.WSGIApplication([

  ('/bloglist', MainPage), මෙතන ඉතා වැදගත් තැනක් - http://your.appspot.com/bloglist කියන url එකට මේ පිටුව ලෝඩ් කරන්න

  ('/saveblog', Blogslist) saveblog ඇක්ෂන් එකටත් මේ පිටුවම ලෝඩ් කරන්න

  ], debug=True)


def main():

  run_wsgi_app(application)


if __name__ == '__main__':

  main()

ඔය තියන අනික් එව්වාත් තියන්න එහෙම්ම ... මාත් තාම අලුත් නොවැ පයිතොන් වලට


3.cron.yaml මේයා ඉන්නේ අලුත් ලිපි හොයාගෙන යන වැඩේ ගුගුල් කාරයට දැනුම් දෙන්න
cron:
- description: hours summary job
  url: /cronblogpost
  schedule: every 1 hours - මේ කියන්නේ පැයකට සැරයක් කියලා

4.cronblogpost.py මෙන්න වැදගත් කෙනා ලිපි හොයන් එන්න කිව්වාම මෙයා තමයි වැඩේ ගොඩ දාලා දෙන්නේ
import cgi
import datetime
import urllib
import wsgiref.handlers
import feedparser
import sys
import re




from google.appengine.ext import db
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

"""Name - wapnisyndi """
"""Developer - WAP NISHANTHA SRI LANKA """
"""DATE -  2011-06-05  """


පහලින් තියෙන්නේ RSS ලිස්ට් එක
class Blogroll(db.Model):
  """Models an individual Guestbook entry with an author, content, and date."""
 
  burl = db.StringProperty(multiline=True)
  brss = db.StringProperty(multiline=True)
  bowner = db.StringProperty(multiline=True)
  bstatus = db.IntegerProperty()
  date = db.DateTimeProperty(auto_now_add=True)

def blogslist_key(blogslist_name=None):
  """Constructs a datastore key for a Guestbook entity with guestbook_name."""
  return db.Key.from_path('Blogslist', blogslist_name or 'default_blogslist')

මේ තියෙන්නේ RSS වලට ගිහින් ලිපියකින් අපි ලබා ගන්න තොරතුරු තැන්පත් කරන ටේබල් එක
class Blogpost(db.Model):
  """Models an individual Guestbook entry with an author, content, and date.""" 
  burl = db.StringProperty(multiline=True)
  ptitle = db.TextProperty()
  btitle = db.TextProperty()
  purl = db.StringProperty()
  bcontent = db.TextProperty()
  bpatas = db.StringProperty(multiline=True)
  brss = db.StringProperty(multiline=True)  
  bstatus = db.StringProperty(multiline=True)
  pdate = db.DateTimeProperty()



def guestbook_key(guestbook_name=None):
  """Constructs a datastore key for a Guestbook entity with guestbook_name."""
  return db.Key.from_path('Guestbook', guestbook_name or 'default_guestbook')


class MainPage(webapp.RequestHandler):
   def get(self):       
        blogslist_name=self.request.get('blogslist_name')
        blogrolls = db.GqlQuery("SELECT * "
                                "FROM Blogroll "
                                "WHERE ANCESTOR IS :1 "
                                "ORDER BY date DESC ",
                                blogslist_key(blogslist_name))
ඉහත sql එකෙන් කරන්නේ Blogroll කියන ටේබල් එකේ තියන සියලු RSS ලින්ක් ගන්න එක
        for blogroll in blogrolls:
   if 1 < 2 :
    try:
     fileCount = 0     
     d = feedparser.parse(blogroll.brss)
     #print blogroll.brss     
     n = d.feed.title.encode('utf-8')          
     for entry in d['entries']:     
      #print entry.title.encode('utf-8')      
      guestbook_name = self.request.get('guestbook_name')
      greeting = Blogpost(parent=guestbook_key(guestbook_name))            
      greeting.ptitle = unicode(entry.title.encode('utf-8'), 'utf-8')
      greeting.burl = unicode(d.feed.link.encode('utf-8'), 'utf-8')      
      e = d.entries[fileCount]
      pu = unicode(e.link.encode('utf-8'), 'utf-8')
      #printme( pu )
      print "test"
      #print pu
      greeting.purl = unicode(e.link.encode('utf-8'), 'utf-8')
      #greeting.pdate = unicode(e.updated_parsed.encode('utf-8'), 'utf-8')      
      p = re.compile(r'<.*?>')
      bcon = unicode(entry.description.encode('utf-8'), 'utf-8')
      greeting.bcontent =  p.sub('', bcon)
      #greeting.bcontent = unicode(entry.description.encode('utf-8'), 'utf-8')
      greeting.btitle = unicode(n, 'utf-8')      
      postdatetime = e.updated_parsed
      #print postdatetime;      
      posted_datetime = datetime.datetime(
           entry['updated_parsed'][0],
           entry['updated_parsed'][1],
           entry['updated_parsed'][2],
           entry['updated_parsed'][3],
           entry['updated_parsed'][4],
           entry['updated_parsed'][5],
           entry['updated_parsed'][6],)
      greeting.pdate = posted_datetime     
      
      print "1"
      
      guestbook_name=self.request.get('guestbook_name')
      q = db.GqlQuery("SELECT * FROM Blogpost WHERE purl = :1", pu)
      #q = Blogpost.all()
      #q.filter("purl =", pu)      
      #q.order("-pdate")      
      results = q.fetch(1)
      if results:     
       for p in results:
        print "%s inches tall" % (p.purl)
      else:
       print "empty"
       greeting.put();
       print pu
       
       
                    
      fileCount += 1
      print "

2"
      
    except Exception: 
      pass
           
     
     
     
ඊට පස්සේ තියෙන්නේ ඔය උඩින් බ්ලොග් අඩවියක RSS කියවලා, 
අලුත් ලිපි තියනවා නම් එවා Blogpost කියන ටේබල් එකට දාගන්න විදිහ.
 මේ මමකරපු විදිහ. තව ලේසි ක්‍රම පහසු ක්‍රම තියෙන්න පුලුවන්. 
එහෙම තියනවා නම් මාවත් දැනුවත් කරන්න ඇ     
     

application = webapp.WSGIApplication([
  ('/cronblogpost', MainPage)
  
], debug=True)


def main():
  run_wsgi_app(application)


if __name__ == '__main__':
  main()     
     


5.synditest.py මෙයා තමයි හොයන් ආපු ලිපි වෙන්වන කෙනා
from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

"""Name - wapnisyndi """
"""Developer - WAP NISHANTHA SRI LANKA """
"""DATE -  2011-06-05  """



import os
from google.appengine.ext.webapp import template

ලිපි තියන ටේබල් එක
class Blogpost(db.Model):
  """Models an individual Guestbook entry with an author, content, and date.""" 
  burl = db.StringProperty(multiline=True)
  ptitle = db.TextProperty()
  btitle = db.TextProperty()
  purl = db.TextProperty()
  bcontent = db.TextProperty()
  bpatas = db.StringProperty(multiline=True)
  brss = db.StringProperty(multiline=True)  
  bstatus = db.StringProperty(multiline=True)
  pdate = db.DateTimeProperty()



def guestbook_key(guestbook_name=None):
  """Constructs a datastore key for a Guestbook entity with guestbook_name."""
  return db.Key.from_path('Guestbook', guestbook_name or 'default_guestbook')


class MainPage(webapp.RequestHandler):
   def get(self):
     guestbook_name=self.request.get('guestbook_name')
  
  q = db.GqlQuery("SELECT * FROM Blogpost ORDER BY pdate DESC LIMIT 100") 
දිනෙන් පිළිවෙල කරලා ලිපි සීයක් ගැනිම     
  
  template_values = {
            'greetings': q            
        }
  
  path = os.path.join(os.path.dirname(__file__), 'index.html')
  self.response.out.write(template.render(path, template_values))
  මෙතන කරලා තියෙන්නේ වෙනම තියන HTML ෆයිල් එකකට ඩේටා යවන්න එක. 
  
   
     
     

application = webapp.WSGIApplication([
  ('/', MainPage)
  
], debug=True)


def main():
  run_wsgi_app(application)


if __name__ == '__main__':
  main()     
     


6. index.html මේක තියෙන්නේ ඉහත පහේ තියන එකට සපෝට් විදිහට තියන ටෙම්ප්ලෙට් එකක් විදිහට
<html>
  <head>
  <title>wapnisyndi</title>
  <style>
</style>
  </head>
  <body>
  
  {% for greeting in greetings %}
  
  {% if greeting.burl %}
  <a href="{{ greeting.purl }}" class="">{{ greeting.ptitle }}</a> &nbsp;&nbsp;|&nbsp;&nbsp; <a href="{{ greeting.burl }}" class="">{{ greeting.btitle }}</a> | {{ greeting.pdate }}
  {% else %}
  An anonymous person wrote:
  {% endif %}
  <div class="">{{ greeting.bcontent }} &nbsp; ... &nbsp;&nbsp;<a href="{{ greeting.purl }}" class="">වැඩිදුර &gt;&gt;</a></div>
  <hr />
  <div>
  {% endfor %}
  </div>
    </body>
  </html>


7. not_found.py - මේ අනවශ්‍ය url එකක් ගැහැව්වොත් එන ෆයිල් එක
"""Name - wapnisyndi """
"""Developer - WAP NISHANTHA SRI LANKA """
"""DATE -  2011-06-05  """
print "not found"


8.feedparser.py මේක තුන් වන පාර්ෂවිය ලයිබ්ර්රි එකක් මෙතනින් ගන්න ඒක

හරි ඔච්චර තමයි. මේක තව ටිකක් වැඩි දියුණු කරගන්න. සම්පූර්ණ කෝඩ් එක මෙතනින් භාගන්න. ‍මේ කෝඩ් එක භාවිතයෙන් හදපු සින්ඩියක් මෙන්න

ඉහත කෝඩ් වලම සිංහලෙන් ලිව්වේ පැහැදිලි වෙන්න. නමුත් සම්පූර්ණ කෝඩ් එක භාගත්තාම  එහෙම පැහැදිලි කිරිම් නැහැ. ඔබත් ඔබටම කියා සින්ඩියක් හදාගන්න.


ටෙක්නිකල් දේවල් එපා නම් මේ පහත ලිපි බලන්න

1. ත්‍රිපිඨකය තුල සිංහලෙන් , ඉංග්‍රීසියෙන් සහ පාලියෙන් සෙවීම් සිදුකල හැකි පරිගණක මෘදුකාංගයක්
2. තරු මෙච්චර ආතල් ද????
3. නුඹ රහසින් ඇවිත්......
4. සිංහල බ්ලොග් වලට පුංචි තල්ලුවක්...මං කියවන බ්ලොග්...
5. ඔබ දන්නවද ලංකාවේ තියන කෝච්චි මොනවද කියලා
6. ආදරබර Network එක හෙවත් ගල් කොරියේ ලවු එක .


29 comments:

  1. O.o මේ ටික ලිව්වද බන්

    මමත් මේ තාම පයිතන් හරියට අල්ල ගන්න ට්‍රයි කරනවා :D
    මොනවා උනත් එල ලිපිය, හිතුනොත් ලියන්න ඕනේ ඇප්ස්පොට්ටා ගැන ලිපියක්

    ReplyDelete
  2. අම්මප කාලෙකින් වැදගත් දෙයක් ලියල :D

    ReplyDelete
  3. දැන් එතකොට ඔය පයිතන් අපිව කෑවොත්?
    කෝබ්‍රා වලින් බැරිද ඔය වැඩේ කරන්න?

    ReplyDelete
  4. දැනුවත් කිරීම සම්බන්ධව ස්තුතිය ...............
    හැබැයි මන්ඤ්න්වගේ ( අපගේ නොදැනුවත් බාවය නිසා )

    ReplyDelete
  5. මමත් එකක් හදන්න ඕන...කුප්පා සිංඩි...
    :)
    අනේ අපි පොඩි උන් වැප් අංකල්

    ReplyDelete
  6. පයිතන් ඉගෙනගන්න ආස හිතෙනවා මේ ලිපිය කියෙව්වම..
    බොහොම ස්තුතියි!

    ReplyDelete
  7. කතන්දර, වැප් කියන්නෙ මහ පයිතන් කෙනෙක්. ඒකයි ඔය බයනැතුව අතගහලා තියෙන්නෙ‍‍‍‍‍.......

    ReplyDelete
  8. බොහෝම ස්තූතියි අය්යා,ඔක්කොම නම් තේරුනේ නෑ.ඒත් පොඩි අයිඩියා එකක් තියනව දැන්.

    ReplyDelete
  9. මට වතුර ටිකක් දීයං..තාම කැරකෙනවා වගේ...

    අනේ ඔය පයිතන් ගැනනං මං දන්නේ නැහැ..සින්ඩි හදන්න මට තේරෙන්නෙත් නැහැ..කොහොම හරි හෙට අනිද්දට බ්ලොග් වලට වඩා සින්ඩි බිහි වෙයිද මංදා..? ඒකත් හොදා...

    අනේ පින් ඇති කෙනෙක් මටත් සින්ඩියක් හදා දීහල්ලා...

    ReplyDelete
  10. ඒ කොඩ් ටික දැක්කාම පිස්සු හැදෙනවා තමා. මීට වඩා Wordpress syndi ලේසි. මම හිතන්නේ මාත් ගිය සතියේ සිංඩියක් හදන හැටි ලිපියක් ලිව්වා http://panhidaa.blogspot.com/2011/06/blog-post.html

    ReplyDelete
  11. අකුරක් වත් නොදන්න අපිට පයිතන් ගැන හිතන්න දෙයක් වැප් අය්යා ලියලා තියෙන්නේ
    එත් ඉතින් මෙහෙම කියලා දෙන එක හොද වුනත් මම හිතන්නේ හැමොම සින්ඩි හදන්න ගියොත් ඒක ඒ තරම් හොද දෙයක් නෙමේ.. හැමොම හොද තැන් දෙක තුනක විතරක් උන්නහම තමයි හොද දෙයක් කරන්න පුලුවන් මම හිතන්නේ
    නැත්නම් ලංකාවේ දෙශපාලන පක්ශ වගේ පදුරක් පදුරක් ගානේ සින්ඩි හැදුනට සමහර පක්ෂ වලට ඒ පක්ෂේ නායකයොත් චන්දේ දෙන්නේ නැ වගේ තමන්ගේ සින්ඩියට තමන්ගේ බ්ලොග් එක දාගෙන බල බල තමා ඉන්න වෙන්නේ (අනේ මේ මට හිතුන දේ වැරදිනම් සොරි කිවා) තියන ඒවා තවත් දියුනු කරන් මේක ඉස්සරහට යනවටයි මම කැමති

    ReplyDelete
  12. අනේ මටනම් බෑ සින්ඩි හදන්න.. :)

    ReplyDelete
  13. ට්‍රයි කරන්න ඕනේ. පයිතන් ගැනනම් මෙලෝ දෙයක් දන්නේ නෑ. ගූගල් දෙයියන්ගෙන් අහලා පයිතන් ගැන විස්තර ටිකක් දැනගෙනම වැඩේට බහින්න ඕනේ.
    ටෙක්නිකල් බ්ලොග් කොච්චර තිබ්බත් ගොඩක් ඒවයේ ලියන්නේ හැමෝම දන්න ඒවා. ඉතින් ඒවා වැඩිය කවුරුත් බලන්නේ නෑ. වැපා උඹ හැමදාම ටෙක්නිකල් ලිපි විතරක් ලියපන් බං.

    ReplyDelete
  14. මම පයිතන් ඉගනගන්න ගමන් . ඉතින් වැප් ලොක්කා දීපු මේ ලිපිය මට රටක් වටී .

    සින්ඩි හදන්න නම් මට බෑ ..ඒත් පයිතන් ජුංඩක් ඉගන ගන්න මේක යන්තම්වත් ඉවහල් වේවි

    ReplyDelete
  15. This comment has been removed by the author.

    ReplyDelete
  16. මම ඉතින් බැංකු යනවා කිව්වට දවසින් බාගයක් ලාංකීය සිතුවිලි වලට කඩේ යන්නේ. මම ඔය උඩ කියලා තියෙන්නේ. හත්මාලුව ගැන කට්ටිය වැරදියට එහෙම හිතන්න එපා. මම ගියෝ....................................

    ReplyDelete
  17. බ්ලොග් තරමට සින්ඩි එන කාලේ උබ තවත් සින්ඩි පුරවන්න යන්නේ,,අනේ මේ අපි මේවා බලාගෙන ඉන්නම් පයිතන්ලව ආශ්‍රය කරන්න බෑ බන් මෙලෝ දෙයක් තේරුනේ නෑ

    ReplyDelete
  18. වැපෝ ආසාවේ බෑ බං...

    ReplyDelete
  19. එල එල. Java පාදක කරගෙන ගූගල් වල වෙබ් සයිට් හොස්ට් කිරිම ලිපිය කියවල මාත් ගූගල් වල වෙබ් සයිට් එකක් හොස්ට් කලා.

    ReplyDelete
  20. හොඳ ලිපියක් වැප් සහෝදරයා.බොහෝම ස්තුතියි.මමත් පයිතන් එක්ක වැඩිය සෙල්ලම් දාල නෑ.ඒත් අත්හදා බලන්න ඕනා වෙලාවක් හම්බඋනාම. වර්ඩ්ප්‍රෙස් වලින් වගේම ජූම්ලා,ඩෘපාල් වල ඇග්‍රිෙග්‍ර්ටර් සමඟිනුත් මේ දේ කරන්න පුලුවන් නේද?
    මම ෆීඩ් වරඩ්ප්‍රෙස් පාවිච්චි කරලා වර්ඩ්ප්‍රෙස් වලින් නම් පොඩි ටෙස්ට් සින්ඩිකේටරයක් හදලා තියනවා....
    http://tirthayathrava.blogspot.com/2010/07/blog-post.html

    ReplyDelete
  21. @තීර්ථ
    ඔව් ඔය කියපු හැම එකින්ම කරන්න පුලුවන්. ඒත් සර්වර් එක සපෝට් කරන්න ඔනේ. එහෙම නැත්නම් කරන්න අමාරුයි. cron දුවන වැඩේ

    ReplyDelete
  22. නොතේරුණාට කමක්... ඔහොම යං....

    ReplyDelete
  23. ඔව් ගොඩක් ෆී සර්වර් වල ක්‍රොන් ටැබ් එක එඩිට් කරන්න දෙන්නෙ නැති නිසා ඒවට නම් ෆීඩ් වර්ඩ් ප්‍රෙස් හොඳ විකල්පයක්.කිව්වත් වගේ සර්වරේ සපෝට් කලේ නැත්තං මොනවත් කරන්න බෑ නොවැ..

    ReplyDelete
  24. ඔයි පයි-තං මට තේරෙන්නෙ නෑ බොලං. ඒත් ඉතිං බොහෝම බර සාර ලිපියක් නොවැ. තේරෙන එවුන් ස්තූතියි කියාපල්ල. මං කටපියාගත්ත ඕං.

    ReplyDelete
  25. අයියලගෙ සිංඩි තියෙද්දි තව එවා මොනාටද?මෙහෙම ගියොත් සිංඩි වලටත් සිංඩි හදන්න වෙවි!හික්ස්

    ReplyDelete
  26. පයිතන් නම් අතගහලා නෑ , නමුත් මෙක දැක්කහම ට්‍රයි එකක් දෙන්නත් හිතෙනවා ....

    python , java SDK වලට අමතරව "Go" ත් google ලා සපෝර්ට් කරනවා , එකේ api එක පොඩ්ඩක් බෑලුවා , python වලට වඩා ලෙහෙසි වගේ ....

    http://golang.org/doc/go_tutorial.html

    ReplyDelete
  27. ඔව් මාත් දැක්කේ පස්සේ Go ගැන .... ඒක ලේසි වෙන්න ඔනේ පයිතන් වලට වඩා දෙයියන්ගේ වැඩක් හින්දා :DDD

    ReplyDelete
  28. මෙහෙම කියල දෙන අය ඉන්න එක කොච්චර හොඳද ? එත් මන් වාගේ ටියුබ් ලයිට් වලට ඉතින් වැඩක් නැහැ. බ්ලොග් එක ලියාගන්නෙත් කොච්චර දඟලලාද ? හික් ..

    ReplyDelete
  29. හපොයි මේ තියන බ්ලොග් එකම ඇති. මොන සිංඩිද?
    අනික ඕවා හදන්න පටන්ගත්තොත් බ්ලොග් ලියන උන් නැති වෙනවා බොල....
    මගේ බ්ලොග් ගුරාට ජයවේවා !!! (වැපා)

    ReplyDelete

Great Western - ග්‍රේට් වෙස්ටර්න්

බතලේ ගල , බැරැන්ඩි රොක් , කඳු මුදුනට ගොස් ඇත. එතරම් දුෂ්කර නැතිව ග්‍රේට් වෙස්ටර්න් තරණය කළෙමු. එයට ප්‍රධාන හේතුව නම් වැසි රහිත කාලයක් වූ පස...