├── ASCII
└── prettytable.md
├── MAINTAINERS.md
├── README.md
├── TEMPLATE.md
├── cryptography
└── hashlib.md
├── database
└── dbConnect.md
├── imaging
├── pillow.md
└── pyspriter.md
└── network
├── curl.md
└── requests.md
/ASCII/prettytable.md:
--------------------------------------------------------------------------------
1 | # PrettyTable
2 |
3 | #### Kısa Açıklama
4 | PrettyTable, komut satırı programlarında güzel bir tablo çıktısı çıkaran python kütüphanesidir.
5 |
6 | #### Detaylı Açıklama
7 | PrettyTable ile tablo şeklinde çıktı alabilirsiniz. İster Python koduyla tablo yaratır, ister .csv dosyasından veya SQL veritabanından tablo alır, ister de HTML kodlarıyla tablo yaratırsınız.
8 |
9 | ###### Python koduyla tablo yaratmak
10 | Bu şekilde tablo yaratmak için iki yol vardır.Biri satır satır tablo yaratmak:
11 | ```python
12 | from prettytable import PrettyTable
13 |
14 | tablo = PrettyTable(["Sütun 1", "Sütun 2"])
15 | tablo.align["Sütun 1"] = "l" # Sütun 1'i sola kaydır.
16 | tablo.padding_width = 1 # Tablo içeriği ve kenarları arasına 1 boşluk koy.
17 | tablo.add_row(["1 1", "2 1"]) #Tabloya bilgileri satır satır ekle.
18 | tablo.add_row(["1 2", "2 2"])
19 | tablo.add_row(["1 3", "2 3"])
20 | tablo.add_row(["1 4", "2 4"])
21 | tablo.add_row(["1 5", "2 5"])
22 | tablo.add_row(["1 6", "2 6"])
23 | tablo.add_row(["1 7", "2 7"])
24 | print tablo #Tabloyu komut satırında yazdır.
25 | ```
26 | Diğer ise sütun sütun tablo yaratmak:
27 | ```python
28 | from prettytable import PrettyTable
29 |
30 | tablo = PrettyTable()
31 | tablo.add_column("Sütun 1", ["1 1","1 2","1 3","1 4","1 5","1 6","1 7"])
32 | tablo.add_column("Sütun 2", ["2 1","2 2","2 3","2 4","2 5","2 6","2 7"])
33 | ```
34 |
35 | ###### HTML koduyla tablo yaratmak
36 | Bu şekilde tablo yaratmak (bana göre) çok kolaydır.Sadece yapmanız gereken HTML tablo kodunu from_html(htmlkodu) şeklinde kullanmanız yeterli olacaktır.
37 | ```python
38 | from prettytable import from_html
39 |
40 | htmlkodu = "
Sütun 1 | Sütun 2 |
..."
41 | tablo = from_html(htmlkodu)
42 | ```
43 |
44 | ###### .csv dosyasından tablo almak
45 | Eğer tablonuzu bir .csv dosyası şeklinde oluşturmuşsanız ve bir daha Python koduyla oluşturmaya uğraşmak istemiyorsanız şu şekilde .csv dosyasını açarak bir tablo olarak yazdırabilirsiniz:
46 | ```python
47 | from prettytable import from_csv
48 |
49 | csvdosya = open("tablo.csv", "r")
50 | tablo = from_csv(csvdosya)
51 | csvdosya.close() # Dosyayı kapatmayı unutmayın.
52 | ```
53 |
54 | ###### SQL veritabanından bilgi alarak tablo oluşturmak
55 | Eğer bir SQL veritabanına bilgilerinizi kaydetmişseniz basit bir SELECT komutuyla bu bilgilerden bir tablo yaratabilirsiniz.
56 | ```python
57 | # db_cur, veritabanınız için bir imleç objesidir.
58 | from prettytable import from_db_cursor
59 |
60 | db_cur.execute("SELECT * FROM tablom")
61 | tablo = from_db_cursor(db_cur)
62 | ```
63 |
64 | #### Kaynakça
65 | - [PrettyTable Dökümantasyonu](https://code.google.com/p/prettytable/wiki/Tutorial)
66 |
--------------------------------------------------------------------------------
/MAINTAINERS.md:
--------------------------------------------------------------------------------
1 | #### Proje Lideri
2 | [Muhammet Dilmaç](https://github.com/MuhammetDilmac)
3 |
4 | ---
5 | #### Destek Olanlar
6 | - [Umut Karcı](https://github.com/cediddi)
7 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Python Kütüphaneleri
2 | Popüler python kütüphanelerinin türkçe açıklama ve örneklerinin bulunduğu bir arşiv.
3 |
4 | ## Projenin Amacı
5 | Yabancı dillerde benzer projeler bulunmakta, bu projenin amacı alternatif, topluluk destekli türkçe bir kütüphane arşivi oluşturmak.
6 |
7 | ## İçerik
8 | 1. [Network](https://github.com/MuhammetDilmac/PythonKutuphaneleri/blob/master/network/)
9 | * [Requests](https://github.com/MuhammetDilmac/PythonKutuphaneleri/blob/master/network/requests.md)
10 | (HTTP protokolü ile ilgili işlemlerinizi kolayca yapmanızı sağlayan kütüphanedir.)
11 | * [PYCURL](https://github.com/MuhammetDilmac/PythonKutuphaneleri/blob/master/network/curl.md)
12 | (cURL işlemlerinin python ile yapılabilmesi için hazırlanmış bir kütüphane.)
13 |
14 | 2. [Imaging](https://github.com/MuhammetDilmac/PythonKutuphaneleri/blob/master/imaging/)
15 | * [Pillow](https://github.com/MuhammetDilmac/PythonKutuphaneleri/blob/master/imaging/pillow.md) (Pillow, PIL olarak da geçen, Python Image Library kütüphanesidir.)
16 | * [Pyspriter](https://github.com/MuhammetDilmac/PythonKutuphaneleri/blob/master/imaging/pyspriter.md) (Python için yazılmış sprite oluşturma kütüphanesidir.)
17 |
18 | 3. [ASCII](https://github.com/MuhammetDilmac/PythonKutuphaneleri/tree/master/ASCII)
19 | * [PrettyTable](https://github.com/MuhammetDilmac/PythonKutuphaneleri/blob/master/ASCII/prettytable.md)
20 | (PrettyTable, komut satırı programlarında güzel bir tablo çıktısı çıkaran python kütüphanesidir.)
21 |
22 | 4. [Database](https://github.com/MuhammetDilmac/PythonKutuphaneleri/tree/master/database)
23 | * [dbConnect](https://github.com/MuhammetDilmac/PythonKutuphaneleri/blob/master/database/dbConnect.md)
24 | (dbConnect, uygulamanız üzerinden MySQL veritabanınızı kullanmanızı sağlayan bir Python kütüphanesidir.)
25 | 5. [Cryptography](https://github.com/MuhammetDilmac/PythonKutuphaneleri/tree/master/cryptography)
26 |
27 | * [Hashlib](https://github.com/MuhammetDilmac/PythonKutuphaneleri/blob/master/cryptography/hashlib.md)
28 | (Hashlib, çeşitli popüler şifreleme algoritmalarını barındıran bir kütüphanedir.)
29 |
30 | ## Nasıl Destek Olabilirim
31 | Projeye destek olmak için aşağıdaki adımları gerçekleştirebilirsiniz. Arşivde kullandığımız dil _Markdown_'dır, dolayısıyla düzenlerken işinizi kolaylaştırmak için bir markdown editörü kullanmanızı öneriyoruz.
32 |
33 | 1. Projeyi forklayın
34 | 2. TEMPLATE.md dosyasındaki taslağa uygun şekilde dökümanınızı yazın
35 | 3. Bu projeye pull request gönderin.
36 |
--------------------------------------------------------------------------------
/TEMPLATE.md:
--------------------------------------------------------------------------------
1 | # Paket Adı
2 |
3 | #### Kısa Açıklama
4 | Paketin kısa açıklaması, küçük bir kullanım alanı örneği ve benzeri ufak bilgiler.
5 |
6 | #### Detaylı Açıklama
7 | Paketin daha detaylı açıklaması, örnekler ve kullanım ipuçları.
8 |
9 | from antigravity import geohash
10 | geohash(41.025739, 29.045117, b'2014-03-30-10458.68'))
11 |
12 |
13 | #### Kaynakça
14 | - [Python Resmi Websitesi](http://www.python.org/)
15 | - [Resmi Dökümanlar](http://docs.python.org/3/)
16 | - [Türkçe Dökümanlar](http://www.istihza.com/)
--------------------------------------------------------------------------------
/cryptography/hashlib.md:
--------------------------------------------------------------------------------
1 | # Hashlib
2 |
3 | #### Kısa Açıklama
4 | Çeşitli popüler şifreleme algoritmalarını barındıran bir kütüphanedir.
5 |
6 | #### Detaylı Açıklama
7 | Öncelikle biraz özet fonksiyonlardan bahsedelim. Özet fonksiyonu bir anahtarsız şifreleme yöntemidir. Yani özet fonksiyonu algoritmaları veriyi tek yönlü olarak işler ve algoritmanın tipine göre özet çıkartır. Çıkarılan özet veriye özeldir. Yani veride meydana gelecek 1 bit değişiklikte bile bu özet değişmektedir. Bu kriptografik özet fonksiyonları dijital imzalar, mesaj doğrulama kodları, manipülasyon tespiti, parmak izi, ileti bütünlük kontrollerinde(checksum) kullanılmaktadır.
8 |
9 | Modülümüzü çağıralım.
10 |
11 | import hashlib
12 |
13 | Bakalım yukarıda bahsettiğimiz hangi algoritmaları kullanabiliyoruz.
14 |
15 | *Çıktı OpenSSL aracılığıyla kullanabileceğiniz algoritmalarla beraber sistemde bulunan algoritmaları vermektedir.*
16 |
17 | print(hashlib.algorithms_available)
18 |
19 | {'md5', 'SHA256', 'sha512', 'MD4', 'md4', 'DSA-SHA', 'dsaEncryption', 'sha1', 'ecdsa-with-SHA1', 'dsaWithSHA', 'SHA384', 'MD5', 'RIPEMD160', 'whirlpool', 'sha', 'SHA224', 'sha256', 'sha384', 'sha224', 'DSA', 'SHA', 'SHA1', 'SHA512', 'ripemd160'}
20 |
21 | Çıktıda tekrarlanan algoritmalar bulunmaktadır. Modülde bulunan sabit algoritmaları görmek için ise;
22 |
23 | print(hashlib.algorithms_guaranteed)
24 |
25 | {'sha224', 'sha512', 'sha256', 'md5', 'sha384', 'sha1'}
26 |
27 | Şimdi birkaç kullanım ile pekiştirelim.
28 |
29 |
30 | Öncelikle değişkene istediğimiz bir algoritmayı atayalım.
31 |
32 | example = hashlib.sha512()
33 |
34 | Daha sonra stringi içeri alalım.
35 |
36 | Bu işlemi **update fonksiyonu** ile gerçekleştiriyoruz.
37 |
38 | example.update("ornekstring")
39 |
40 |
41 | Fonksiyon özetimizi almamız için kullanmamız gereken iki özelliğimiz var. Bunlar **digest()** ve **hexdigest()**.
42 |
43 | Digest, özetimizi non-ascii olarak döndürürken hexdigest, özetimizi string olarak döndürüyor.
44 |
45 | <--*non-ascii*-->
46 |
47 | example = hashlib.md5()
48 | example.update("icerialinacakstring".encode('utf-8'))
49 | print(example.digest())
50 |
51 | b'\x9b\xb5z\x03\x9d\x9a\xcf\x1b\xec\x9a \xbd\x87\x92\xdb4\rO\xd9\xbbv\xda\x89\x9a\xd3W\xf3\x07\x1a\x9d\x04g\xe8\xedqE\xff\xc0rx\xb9t}\tt\xad\xd6\xed\xbd#~\xa5\x1f\xd4\x04$\x91\x99\x01kH\xd2\xeb\x0f'
52 |
53 |
54 | <--*string*-->
55 |
56 | print(example.hexdigest())
57 |
58 | 9bb57a039d9acf1bec9a20bd8792db340d4fd9bb76da899ad357f3071a9d0467e8ed7145ffc07278b9747d0974add6edbd237ea51fd404249199016b48d2eb0f
59 |
60 | digest() ve hexdigest() dışında kullanımlarımız da var; bunlardan **copy** özetimizi kopyalamamızı sağlarken **digest_size** ise özetimizin byte boyunu döndürür.
61 |
62 | print(example.digest_size)
63 |
64 | 64
65 |
66 | #### Konuyla İlgili Faydalı Dökümanlar
67 |
68 | - [Merkle–Damgård Yapısı Hakkında Sunu](http://csrc.nist.gov/groups/ST/hash/documents/Puniya_hashDesign.pdf)
69 |
70 |
71 | - [Güvenli Özet Fonksiyonları Hakkında Sunu](http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf)
72 |
73 | - [Kriptografik Özet Rehberi](http://www.unixwiz.net/techtips/iguide-crypto-hashes.html)
74 |
75 | #### Kaynakça
76 | - [Hashlib Dökümantasyonu](https://docs.python.org/3.2/library/hashlib.html)
77 |
78 |
79 |
--------------------------------------------------------------------------------
/database/dbConnect.md:
--------------------------------------------------------------------------------
1 | # dbConnect
2 |
3 | #### Kısa Açıklama
4 | dbConnect, uygulamanız üzerinden MySQL veritabanınızı kullanmanızı sağlayan bir Python kütüphanesidir.
5 |
6 | #### Detaylı Açıklama
7 | dbConnect ile Python'da yazdığınız uygulamanızdan veritabanınıza bağlanabilir, standart Python değişken türlerini kullanarak veritabanına kayıt ekleyebilir, güncelleyebilir, kayıt çekebilirsiniz. Bunlara ek olarak dilerseniz SQL sorgusu da çalıştırabilirsiniz.
8 |
9 | ```python
10 | from dbConnect import dbConnect
11 | # Make connection:
12 | con, cur = dbConnect.connect()
13 |
14 | # Some code
15 | cur.execute("select * from listings order by id desc limit 5")
16 |
17 | dbConnect.disconnect(con)
18 | ```
19 |
20 |
21 | #### Kaynakça
22 | - [dbConnect](https://github.com/EmiXLabs/dbConnect)
--------------------------------------------------------------------------------
/imaging/pillow.md:
--------------------------------------------------------------------------------
1 | # Pillow
2 |
3 | #### Kısa Açıklama
4 | Pillow, PIL olarak da geçen, Python Image Library kütüphanesidir. Güncel Python sürümlerinde stabil olarak çalışmaktadır.
5 |
6 | #### Detaylı Açıklama
7 | Pillow kütüphanesi ile yeni resim dosyaları yaratabilir, varolanları düzenleyebilir, birden fazla resim dosyasını birbiriyle birleştirebilir, resimleri RGB olarak 3 katmana ayırabilir ve daha pek çok işlem yapabilirsiniz. Pillow günümüzdeki popüler jpg, png gibi pek çok resim formatını destekler.
8 | Aşağıda birkaç örnek işlem görebilirsiniz.
9 |
10 | ```python
11 | from PIL import Image
12 | resim = Image.open("dosya/yolu/resim.jpg") # dosyayı belleğe alıyoruz
13 | resim = resim.rotate(90) # resimi 90 derece döndürüyoruz
14 | resim.save("yeni/dosya/yolu/yeniresim.png") # dosyayı png formatında kaydediyoruz
15 | ```
16 |
17 | #### Kaynakça
18 | - [Pillow Resmi Dökümantasyonu](http://pillow.readthedocs.org/)
19 |
--------------------------------------------------------------------------------
/imaging/pyspriter.md:
--------------------------------------------------------------------------------
1 | # Pyspriter
2 |
3 | #### Kısa Açıklama
4 | Python için yazılmış sprite oluşturma kütüphanesidir.
5 |
6 | #### Detaylı Açıklama
7 | Pyspriter, Python projelerinizde kullanabileceğiniz bir sprite oluşturma kütüphanesidir. Sprite olarak çıkaracağınız görselleri images/ klasörünün içine yerleştirir, yönünü (sağa, sola, yukarı ve aşağıya doğru) verirsiniz, pyspriter bu görselleri verdiğiniz yöne doğru birleştirerek yeni bir sprite görseli oluşturur.
8 | Pyspriter, [Pillow](https://github.com/MuhammetDilmac/PythonKutuphaneleri/blob/master/imaging/pillow.md) kütüphanesini kullanır.
9 |
10 | ```python
11 | from pyspriter import Sprite
12 | sprite = Sprite("images/", "png", "transparent", "right")
13 | output = sprite.generate()
14 | output.save("sprites/my_sprite.png")
15 | ```
16 |
17 |
18 | #### Kaynakça
19 | - [Pyspriter](https://github.com/halilkaya/pyspriter)
--------------------------------------------------------------------------------
/network/curl.md:
--------------------------------------------------------------------------------
1 | # PYCURL
2 |
3 | #### Kısa Açıklama
4 | cURL işlemlerinin python ile yapılabilmesi için hazırlanmış bir kütüphane.
5 |
6 | #### Detaylı Açıklama
7 | pycurl, libcurl için arayüz paketidir. FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and LDAP yanı sıra HTTPS sertifikaları, HTTP POST, HTTP PUT, FTP uploads, proxies, cookies, basic authentication ve dahasını desteklemektedir.
8 |
9 | import pycurl
10 | try:
11 | # python 3
12 | from urllib.parse import urlencode
13 | except ImportError:
14 | # python 2
15 | from urllib import urlencode
16 |
17 | c = pycurl.Curl()
18 | c.setopt(c.URL, 'http://pycurl.sourceforge.net/tests/testpostvars.php')
19 |
20 | post_data = {'field': 'value'}
21 | # Form data must be provided already urlencoded.
22 | postfields = urlencode(post_data)
23 | # Sets request method to POST,
24 | # Content-Type header to application/x-www-form-urlencoded
25 | # and data to send in request body.
26 | c.setopt(c.POSTFIELDS, postfields)
27 |
28 | c.perform()
29 | c.close()
30 |
31 |
32 | #### Kaynakça
33 | - [PYCURL Web Sitesi](http://pycurl.sourceforge.net/doc/index.html)
--------------------------------------------------------------------------------
/network/requests.md:
--------------------------------------------------------------------------------
1 | # Requests
2 |
3 | #### Kısa Açıklama
4 | HTTP protokolü ile ilgili işlemlerinizi kolayca yapmanızı sağlayan kütüphanedir. Urllib2'ye göre çok daha kullanışlı ve zahmetsizdir.
5 |
6 | #### Detaylı Açıklama
7 | Requests kütüphanesi ile http protokolü üzerinde yani web bağlantılarında kolayca işlemler yapabiliriz. Örnek olarak bir siteye get isteğinde bulunalım ve dönen veriyi json objesi olarak görüntüleyelim.
8 |
9 | ```python
10 | import requests
11 | r = requests.get('https://api.github.com/events')
12 | r.json()
13 | ```
14 |
15 | #### Kaynakça
16 | - [Requests Resmi Dökümantasyonu](http://docs.python-requests.org/en/latest/)
--------------------------------------------------------------------------------