Sunday, December 25, 2011

pdftk

Bazi pdftk numaralari:

Dokumanlari birlestirmek

pdftk doc1.pdf doc2.pdf output dokuman.pdf

Bir belgenin cift sayfalarini 90 derece saga, tek sayfalarini 90 derece sola dondurmek

pdftk A=doc.pdf shuffle AevenE AoddW output out.pdf

Bir kitabin 100. ve 110. sayfalari arasindaki sayfalari ayri bir dokuman olarak yazmak

pdftk doc.pdf cat 100-110 output out.pdf

1-9 sayfalarini 180 derece cevirmek, geri kalanini oldugu gibi almak

pdftk doc.pdf cat 1-9S 10-end output out.pdf

20. ve 30. sayfalar arasindaki sayfalari atlayip, geri kalanlari tutmak,

pdftk doc.pdf cat 1-10 30-end output parcalar.pdf

YouTube Video'larini Kaydetmek

En iyisi youtube-dl adinda bir Python script'i. pip ile kurulabilir, pip install youtube-dl.

youtube-dl [youtube video baglantisi]

Eger baska secenek verilmezse script dosya ismini bile kendisi yaratiyor, bir mp4 dosyasina video yaziliyor. Cok basit.

Eger indirme islemini durdurup tekrar baslatmak isterseniz, ikinci kez script'i baslattiginizda -c secenegini kullanabilirsiniz.

Cauchy Ortalama Deger Teorisi (Cauchy Mean-value Theorem)

Indir

Wednesday, December 21, 2011

PDF Formlari Otomatik Olarak Doldurmak

English

PDF bazli formlari otomatik olarak doldurmak icin ekteki Python scriptlerini paylasiyoruz. Kullanicinin yapmasi gerekenler once PDF dosyasini jpg dosyalarina cevirmek, sonra UI aracimiz uzerinden bu imajlar uzerinde kutularin yerlerini tiklayarak isaretlemektir. Sonra doldurulacak bilgiler bir text dosyasina yazilir, ve script tum bunlari otomatik olarak birlestirir.

Once cevirme islemi

python convert.py BELGE.pdf [hedef dizin]

Program bitince [hedef dizin] icinde BELGE-0.jpg, BELGE-1.jpg, vs. gibi dosyalar olacak.

Simdi kutu yerlerini belirleyin

python locs.py [hedef dizin]/BELGE-0.jpg

GUI programi baslayacak, burada kutulara belli bir sirayla tiklayin. Siranin mantiki bir sira olmasi iyi olur, yukaridan asagi, soldan saga gibi. Cogu PDF formu kutular uzerinde bir sira no'su da verir, bu kullanilabilir mesela.

Her tiklama o tiklanan kordinati BELGE-0.jpg.loc dosyasina yazacaktir. Dosyaya yazim islemi her tiklamada yapilir, yani isiniz bitince locs.py programini kapatmak yeterli.

Simdi doldurulacak veriler icin BELGE-0.jpg.fill diye bir dosya baslatin, diger dosyalar ile ayni dizinde olsun. Bu dosyadaki her bilgi, loc dosyasindaki kordinat satirina tekabul ediyor olmali.

Eger gerekiyorsa, mesela [down=30] komutu ile 30 piksel asagi gidilebilir. Ayni sekilde down, yerine up, left, right komutlari da kullanilabilir. Font kucultulmek, buyultulmek isteniyorsa, mesela [font=20] ile yeni deger tanimlanabilir.

Bu dosya tamamlaninca

python fill.py [hedef dizin]/BELGE-0.jpg

Bu son script loc, fill, jpg dosyalarini birlestirecek, ve doldurulmus formu BELGE-0.jpg-out.jpg olarak goreceksiniz.

Aracimiz ImageMagick kullanir, baslamadan once kurulmus oldugunu kontrol edin. Gerekli diger Python kutuphaneleri icin Ubuntu uzerinde

sudo apt-get install python python-tk idle python-pmw python-imaging python-imaging-tk

Bu program icin bir potansiyel ilerleme bir oruntu tanima algoritmasi kullanarak kutularin yerlerini otomatik olarak belirlemektir; boylece kutulari tiklama ile isaretleme islemine gerek kalmaz, loc dosyasi kendiliginden ortaya cikar.

Indir

Imaj Gosterip Tiklama Almak, ImageTk

TkInter diye bir paket gerekli

sudo apt-get install python python-tk idle python-pmw python-imaging python-imaging-tk

Tiklama almak icin ornek kod. [DIZIN] baslangic dizininden secilen imaj secilir, ekranda gosterilir, sonra bu imaj uzerindeki tiklamalar konsola yazilir.
from Tkinter import *
from tkFileDialog import askopenfilename
import Image, ImageTk

if __name__ == "__main__":
root = Tk()

#setting up a tkinter canvas with scrollbars
frame = Frame(root, bd=2, relief=SUNKEN)
frame.grid_rowconfigure(0, weight=1)
frame.grid_columnconfigure(0, weight=1)
xscroll = Scrollbar(frame, orient=HORIZONTAL)
xscroll.grid(row=1, column=0, sticky=E+W)
yscroll = Scrollbar(frame)
yscroll.grid(row=0, column=1, sticky=N+S)
canvas = Canvas(frame, bd=0, xscrollcommand=xscroll.set, yscrollcommand=yscroll.set)
canvas.grid(row=0, column=0, sticky=N+S+E+W)
xscroll.config(command=canvas.xview)
yscroll.config(command=canvas.yview)
frame.pack(fill=BOTH,expand=1)

#adding the image
File = askopenfilename(parent=root, initialdir="/[DIZIN]",title='Choose an image.')
img = ImageTk.PhotoImage(Image.open(File))
canvas.create_image(0,0,image=img,anchor="nw")
canvas.config(scrollregion=canvas.bbox(ALL))

#function to be called when mouse is clicked
def printcoords(event):
#outputting x and y coords to console
print (event.x,event.y)
#mouseclick event
canvas.bind("<Button 1>",printcoords)

root.mainloop()
Daha oz kisa bir ornek
import Tkinter
from PIL import ImageDraw, Image, ImageTk
import sys

window = Tkinter.Tk(className="bla")

image = Image.open(sys.argv[1])
image = image.resize((1000, 800), Image.ANTIALIAS)
canvas = Tkinter.Canvas(window, width=image.size[0], height=image.size[1])
canvas.pack()
image_tk = ImageTk.PhotoImage(image)

canvas.create_image(image.size[0]//2, image.size[1]//2, image=image_tk)

def callback(event):
print "clicked at: ", event.x, event.y

canvas.bind("", callback)
Tkinter.mainloop()

Saturday, December 17, 2011

GPU

Bilgisayarimizda hesaplari yapan islemci var, bu islemci son zamanlarda cok cekirdekli hale de gelmeye basladi. Fakat bilgisayarimizda islem yapan cok kuvvetli bir parca daha var: grafik islemci (GPU).

GPU paralel islem acisindan neredeyse pur mikroislemci kadar kuvvetlidir, hatta bazi acilardan daha hizlidir, cunku tarihsel sebeplerle parallellige daha fazla yatkin olmasi gerekmistir. GPU bir goruntunun hizla cizilmesi (rendering) icin piksel bazinda paralellige gitmek zorundaydi ve NVIDIA sirketinin urunleri icin artik bu normal bir operasyondur.

Arastirmacilar bu paralellikten istifade etmeye karar vermisler, ve grafiksel olmayan hesap islemlerini sanki oyleymis gibi GPU'ya sunuyorlar, ve cevabi geri tercume ediyorlar, boylece GPU'nun hizli paralel islemci ozelliginden faydalaniyorlar. Pek cok matematiksel hesabi bu sekilde yaptiran olmus, mesela matris carpimi, PDE cozumu, simulasyon.

NVidia sirketi grafik kartlarinin GPU'suna erisim icin CUDA diye bir kutuphane sagliyor. Onun ustune PyCUDA ile Python bazli erisim de var. Cin universiteleri CUDA egitimini universitelerinin mufredatina dahil etmisler.

Dikkat: NVidia karti piyasadaki grafik kartlarindan bir tanesidir, her laptop uzerinde NVidia olmayabilir (fakat NVidia piyasadaki en unlulerden birisi, bunu da ekleyelim). Simdilik GPU kodlamasi icin NVidia kartina sahip bir bilgisayar lazim, ve oldukca yeni modeller gerekiyor.

Altta konu hakkinda bir video:

Sunday, December 11, 2011

Polinom Bolmek

Baglanti

Tuesday, December 6, 2011

Excel, CSV, Python

Icinde pur text verisi olan Excel dosyasini CSV dosyasina cevirmek icin iyi bir kod

https://github.com/dilshod/xlsx2csv

Hizli isliyor, kurmaya bile gerek yok. Indirilen py dosyasi direk isletilir,

python xlsx2csv.py dosya.xlsx dosya.csv

seklinde.

Sunday, December 4, 2011

DTA, TXT Cevirmek, R Dili

S, R, Stata gibi paketler DTA dosyalari kullanabiliyorlar, bu dosyalari R dilinde txt formatina cevirmek icin
library ("foreign")
x = read.dta ("[dta file name]")
write.table(x, file = "[txt file name]")