Monday, January 25, 2010

mysql - bir tablodan başka tabloya kopyalamak zor değil korkmayın

Bazıları çok canını sıkıyor bu işlem için. Daha geçen gördüm adamcağız bir tablodan aynı veri yapısından olmayan başka bir tabloya verileri kopyalamak icin ömründen bir gecesini yedi. Zor değil efendim. Bakın işte örnek

INSERT INTO yeni_tablo(farkli_id_sutun, ilce , il) SELECT id, ilce , il FROM kaynak_tablo

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()


Wednesday, January 13, 2010

python populer utf8 meselesi

Python ole cok yasanan sorun UTF-8 kod dosyası ve UTF-8 harici dosyadan veri okumakdir.


1. Dosuynin en basina şu satırı eklemek yeterli

# -*- coding: utf-8 -*-


2. Ayrica veriyi okurken de

sock.read()..encode('utf-8')

Wednesday, January 6, 2010

wget ile cookie

TAVSİYE EDİYORUM

Mesela rapidshare'den dosyaları wget ile çekmek istedik. işte burada wget ile evvela cookileri yüklemek gerek. Rapidshare in sadece bir satı bir cookie bilgisi var.

(Önce rp panelinden "direct download" aktif hale getirilmeli)
Daha sonra rp'e giriş yapınca elinizdeki cookie'yi bir metin belgesine saklayın (mesela rpcookie.txt içine).

.rapidshare.com TRUE / FALSE 1122334455 user 111111-%20%20%20%20%20%20%20%20

ve sonrasında şu kod yeterli olacaktır

wget --load-cookies=rpcookie.txt http://rapidshare.com/files/319105750/Debut.rar

(rapidshare linki örnektir :) )




konuyu irdelemek için
http://www.g-loaded.eu/2007/09/15/use-wget-or-curl-to-download-from-rapidshare-premium/