Showing posts with label google wave. Show all posts
Showing posts with label google wave. Show all posts

Sunday, September 12, 2010

Google Wave meselesi için son sözlerim


Google Wave üzerine bir çok teknik ve sosyal deneyler yaptık. Hepsi de harikaydı. Elimizde değerlendirmek üzere bir çok da veri oldu. Ancak bu yıldan sonra hizmet vermeme kararı moralimi bozdu açıkcası - link. Google Wave üzerine daha fazla deney yapmayı bırakıp Google Docs ve Etherpad üzerinden deneyler yapmaya yöneleceğim.
Kendi wave sunucumu da kolaylıkla kurabilirdim aslında, zira yıl sonuna gelmeden tam anlamıyla açık kaynak bir proje olacağı söyleniyor. Bu konuda fikrim değişebilir.

Asıl mesele bu tarz hizmetlerin sonu hep böyle oluyor. Yani herhangi bir kar amacı olmayan hatta bir gelir politikası dahi olmayan tam anlamıyla ücretsiz collaborative çalışma imkanı sunan hizmetler. Hala hizmet verenler ise profesyonel anlamda hizmet verip "pro" üyelikleri ve kuruluşlara özel destekleri ile hizmet veren servisler oluyor. Gerçi Google'un neden Wave'i kapatacaklarına dair yaptığı açıklamayı gayet anlamlı bulsam da insanlar adına utanmıyor değilim :). Ne yalan söyleyim ben de bir çok Google fanı gibi bu projenin inanılmaz derece tutacağını düşünüyordum.

Bir de kendimce çok kısa bir değerlendirme yapayım. Projenin ilgi görmemesinin nedenleri arasında ki en büyük maddelerin şunlar olabilecğeini düşünüyorum
1. Evet gerçek zamanlı ancak Etherpad kadar hızlı değil. Etherpad 0,5sn de bir eşleme yaptığını söylüyoru bence bu rakam sanki Googl Wave de daha düşük gibiydi.
2. Tester iken yaşadığımız sık sık browser çökmelerini herkesin kullanımına açıldıktan sonra da yaşamaya başladık. Kullanıcı bunu asla affetmiyor.
3. Yavaşlığı sadece yazarken gezerken değil gezinirken dahi vardı.

Bu tarz platformlar hızlı ve ararlı olmalı. Blogger'ın yavaşlaması ve hatta bir ara sık sık hatalar vermesine karşın çok büyük bir tepki gelmezken Wave'in yavaş olması ve browser çökmelerine neden olması kullanıcı tarafından affedilmedi. Teknik ya da teknik olmayan portallarda genelde bu yavaşlık meselesi konuşuldu.



Thursday, January 14, 2010

google wave için sansür robotu denemesi

Belirlenen kelimeler yazılıp gönderildiğinde istenen alternatifleri ile değiştiren robottur.
(yazılıp gönderilmeden önce yazılır yazılmaz da yapılabilir ancak çok yavaş oldu o zaman).

Hızlıca ilk adımları atlıyorum
(Google App Engine Launcher sahibi olmalısınız ki zatn bedava bir uygulama onu bir indirin. Bu uygulamayı öyle deploy ediyorum ben)
1. Google App Engine bir uygulama oluştur (ben tayyarrobotfiltre yaptım)
2. waveapi (python) indir
3. tayyarrobotfiltre dizini içine waveapiyi kopyala
4. App.yaml oluştur :
application: tayyarrobotfiltre
version: 1
runtime: python
api_version: 1

handlers:
- url: /_wave/.*
  script: main.py
  
- url: /assets
  static_dir: assets
 
- url: /argo.txt
  static_files: argo.txt
  upload: argo.txt

5. argo.txt diye bir dosya (ana dizine) oluşturun. İçinde "dict" oluşturun şunun gibi (içeriğini arttırın tabi. bu bir deneme) :

'salak': 's****', 'salakca':'s****', 'aptal':'a*****'

(aslında xml ile yapmak isterdim ama python çok yeni bir dil bana. siz isterseniz genişletebilirsiniz.)


6. ve python kodumuz da şöyle main.py


# -*- coding: utf-8 -*-
#!/usr/bin/python
# Copyright (C) 2010  Hasan Tayyar BEŞİK
# tayyar.besik@gmail.com


import re
import urllib2


from waveapi import events
from waveapi import model
from waveapi import robot
from waveapi.document import Range



def replace_all(text, dic):
    for i, j in dic.iteritems():
        text = text.replace(i, j)
    return text


def OnBlipSubmitted(properties, context):
 """Invoked when a Blip is submitted to the wave."""
 blip = context.GetBlipById(properties['blipId'])
 contents = blip.GetDocument().GetText()
 dic1 = {'manyak':'m***k','okuz':'o***z','aptal':'a***l','mongol':'****','yalaka':'******','salak':'******'} 

 response = urllib2.urlopen('http://tayyarrobotfiltre.appspot.com/argo.txt')
 #dic = eval('{%s}' % open("/argo.txt","r").read())
 dic = eval('{%s}' % response.read().encode('utf-8'))

 newcontents = replace_all(contents,dic)
 if newcontents != contents:
  blip.GetDocument().SetText(newcontents)
 #blip.GetDocument().SetText(dic)
 #blip.GetDocument().SetText(response.read())
 
def OnDocumentChanged(properties, context):
        """Invoked when the document is edited."""
        pass

def OnRobotAdded(properties, context):
        """Invoked when the robot has been added."""
        root_wavelet = context.GetRootWavelet()
        root_wavelet.CreateBlip().GetDocument().SetText("Merhaba; Ben bir robotum. Konuşmalardaki kötü ifadeleri kaldırırım.  ;)")

if __name__ == '__main__':
        myRobot = robot.Robot('Tayyar Robot Filtreleme',
                        image_url='http://tayyarrobotfiltre.appspot.com/assets/icon.png',
                        version='2',
                        profile_url='http://tayyarrobotfiltre.appspot.com/assets/profile.html')
        myRobot.RegisterHandler(events.BLIP_SUBMITTED, OnBlipSubmitted)
        myRobot.RegisterHandler(events.DOCUMENT_CHANGED, OnDocumentChanged)
        myRobot.RegisterHandler(events.WAVELET_SELF_ADDED, OnRobotAdded)
        myRobot.Run()