Tem 302016
 
3.289 views

Ubuntu 16.04 Hikayeleri No-04 Kivy

Daha önce Ubuntu 16.04 üzerine Kivy kurulumunun nasıl yapıldığını anlatmıştım: Python için Yeni bir Çalışma Çerçevesi Kivy

Bu yazımda da Kivy’nin Ubuntu 16.04 üzerine nasıl kurulduğunu anlatacağım. Kullanacağımız Python sürümü 3.5.1.

Kivy’yi doğrudan Ubuntu deposundan yüklemek mümkün. Ancak bu yüklemede bazı bağımlılık sorunları ortaya çıkabiliyor. O yüzden öncelikle kullanacağımız Kivy deposunu sistemimize tanımlıyor ve sistemimizi yeni tanımımızı kapsaması için güncelliyoruz:

sudo apt-add-repository ppa:kivy-team/kivy
sudo apt-get update

Sonra da Python3 için Kivy’yi sistemimize kuruyoruz.

sudo apt-get install python3-kivy

Kurulum sırasında bağımlılık sorunu çıkarsa, şu komutu işletin. Zaten bu öneriyi sistem de karşınıza getirecektir:

sudo apt-get -f install

Kivy deposunda kullanıma hazır onlarca örnek var. Onları da aşağıdaki komutla yüklüyoruz. Elbette örnekleri yüklemek şart değil ama, incelemekte yarar olacağı muhakkak…

sudo apt-get install python-kivy-examples

Bu örneklerin kurulduğu klasör şu adreste:

/usr/share/kivy-examples

İsterseniz bu örneklerden birini deneyelim hemen: kivy_examples/canvas/animation/animate.py

Ubuntu 16.04 Hikayeleri No-04 Kivy

'''
Widget animation
================

This example demonstrates creating and applying a multi-part animation to
a button widget. You should see a button labelled 'plop' that will move with
an animation when clicked.
'''

import kivy
kivy.require('1.0.7')

from kivy.animation import Animation
from kivy.app import App
from kivy.uix.button import Button


class TestApp(App):

    def animate(self, instance):
        # create an animation object. This object could be stored
        # and reused each call or reused across different widgets.
        # += is a sequential step, while &= is in parallel
        animation = Animation(pos=(100, 100), t='out_bounce')
        animation += Animation(pos=(200, 100), t='out_bounce')
        animation &= Animation(size=(500, 500))
        animation += Animation(size=(100, 50))

        # apply the animation on the button, passed in the "instance" argument
        # Notice that default 'click' animation (changing the button
        # color while the mouse is down) is unchanged.
        animation.start(instance)

    def build(self):
        # create a button, and  attach animate() method as a on_press handler
        button = Button(size_hint=(None, None), text='plop',
                        on_press=self.animate)
        return button

if __name__ == '__main__':
    TestApp().run()
python3 animate.py

komutu ile animasyonu başlatabilirsiniz. Bu, basit bir animasyon. Onu daha etkin bir hale dönüştürmek size kalmış.

Ahmet Aksoy

Referanslar:

Tem 222016
 
3.210 views

19 Liralık Bilgisayar

Hiç yalanım yok! Bu yazıda ayrıntılarını vereceğim kişisel bilgisayarın bana maliyeti gerçekten de sadece 19TL. Üstelik hiç sorunsuz, gayet güzel çalışıyor.

19 Liralık Bilgisayar

Elbette söylediğim rakam bu sistemin gerçek maliyetini tam yansıtmıyor. Ama bana maliyeti kuruşu kuruşuna bu kadar. Bu sistemi çalışabilir hale getirebilmek için sadece 19 TL ödedim.

Gelelim öykünün aslına.

Geçenlerde, Raspberry pi cihazları üzerindeki python programları ile ilgili bazı incelemeler yapmaya karar verdim. Fazlası var mı? Eksikleri neler? Kullanımını kısıtlayan durumlar oluyor mu?

Bunu çevreme de duyurdum. Bir arkadaşımız, sağolsun, elindeki kullanmadığı Raspberry Pi Model B+ cihazını bize bağışladı. Kendisi de bu cihazı bir başkasından bağış yoluyla edinmiş.

Dolayısıyla cihazın kendisi için hiç para ödememiş oldum. (Şu anda bu cihazın internet üzerindeki yaklaşık fiyatı Google sonuçlarına göre : 115TL )

Ancak bu cihazın çalıştıracağı işletim sistemini yükleyebilmek için bir mikro SD bellek kartına ihtiyaç var. class 10 tipi en az 8GB kapasiteli bir kart öneriliyor.

Benim telefonumda, şimdiye kadar hiç ihtiyaç duymadığım 8GB’lık bir kart mevcut. Bu mikro SD kartı doğrudan raspberry’ye takabiliyorsunuz. Ama önce işletim sistemini bu karta yüklemek lazım.

Ne bendeki, ne de yakın çevremdeki bilgisayarların hiçbirinde mikro SD kartın takılabileceği bir yuva bulamadık. Mutlaka bir adaptör gerekiyor.

Bu yüzden uygun bir adaptör bulmak için Kadıköy Başçavuş sokağa gittim. Kadıköyün neredeyse bütün bilgisayar dükkanları bu bölgede yoğunlaşmıştır.

Daha önce de alışveriş yaptığım dükkanlardan birine girdim. Önce class 10 kart fiyatlarını sordum. 8GB: 13TL, 16GB: 23TL dedi satıcı. 5 yıl da garanti. Bir de adaptör fiyatı sordum. Meğer adaptör zaten kartla birlikte geliyormuş.

Telefonumdaki SD kart en az 5-6 yıllık. Dolayısıyla hız vb gibi konularda uyum sorunu çıkartabilir. Bu riski almaya değmez. Bu yüzden biraz pazarlık ettim ve 19TL ödeyip kartı satın aldım. İşte bu yüzden bu bilgisayarın bana maliyeti 19TL oldu. Başka bir şey için ödeme yapmadım.

İşletim sistemini https://www.raspberrypi.org/downloads sitesinden indiriyorsunuz. Ben Raspbian indirdim. Zip olarak sıkıştırılmış ve 1.3 GB boyutunda. Aynı adreste indirilmeye hazır başka işletim sistemleri de mevcut. Ama önerilen Raspbian. Ben de onu tercih ettim.

Halen kendi bilgisayarımda Ubuntu 16.04 işletim sistemini kullanıyorum. Ama daha önce hazırladığım “bootable” flashdiskleri hep windows üzerinden hazırlamıştım. O yüzden bilgisayarımda ikinci işletim sistemi olarak bekleyen windowsa geçtim.

Ancak, daha önce flashdisklerde sorunsuz şekilde kullandığım rufus programı benim mikro kartı tanımadı.

İnternet üzerinde yeni seçenekler bulmak için biraz araştırma yaptım. Yine raspberry pi ana sitesinde windows için Win32DiskImager programı öneriliyordu. Hemen indirip çalıştırdım. Hiç sorun çıkarmadan raspbian “jessie” işletim sistemini mikro SD kartına yazdı.

Böylece sıra cihazı çalıştırmaya geldi.

Mikro kartı yerine yerleştirdim.

Peki enerji? 5 voltluk bir enerji gerekiyor.

Burada da Samsung imdadıma yetişti! Sağolsun! Cep telefonumun şarj cihazı bu işi sıkıntı çıkartmadan üstlendi.

Ama yine eksikler var: klavye, fare, ekran, ağ bağlantısı…

En kestirme yol bütün bunları kendi bilgisayarımın üzerinden gerçekleştirmek. Bunun için bir ağ bağlantısına ihtiyacım var.

Ivır-zıvırların arasından bir ethernet kablo buldum. Bir ucunu adsl modemin portlarından birine, diğerini de cihazın ethernet yuvasına bağladım.

Enerjiyi verince raspberry kartının bir köşesindeki ledler yanıp sönmeye başladı. İyiye işaret. Demek ki bir şeyler oluyor.

Şimdi bana raspberry’nin IP numarası lazım.

Yerel ağım 192.168.1.x IP sistemini kullanıyor.

Ağ üzerindeki bütün etkin IP bağlantılarını nmap komutu ile görünür hale getirmek mümkün.

sudo nmap -sn 192.168.1.0/24

Bu komut sayesinde raspberry’nin hangi portu kullandığını kolayca görebiliyoruz.

nmap

Son sihirli dokunuş burada:

ssh pi@192.168.1.44

Ve sonuç…

ssh

Bu arada “pi” kullanıcısına ait öntanımlı parolanın “raspberry” olduğunu bilmek gerekiyor.

Kısacası, 19TL biraz abartılı kaçıyor olsa bile böyle bir bilgisayarın toplam maliyeti 150TL’nin altında.

Raspberry Pi’ı kullanma öykülerimi de sonraki yazılarıma bırakıyorum.

Beni izlemeye devam edin!

Ahmet Aksoy

Tem 112016
 
14.999 views

Word2vec yöntemiyle Türkçe sözcüklerin ilişkilendirilmesi

Word2vec sistemi, kabaca sözcüklerin vektörelleştirilmesine dayanıyor. Sözcüklerin birbirine göre konumunu sayısallaştırarak yeni ilişkilerin saptanabilmesini sağlıyor.

Yöntemi geliştiren Google. https://code.google.com/archive/p/word2vec/ adresinde kelime torbası (bag-of-words) ve skip-gram yaklaşımları tanıtılıyor. Ayrıca örnekler ve kaynak kodlarının paylaşıldığı link te verilmiş. Ama ne yazık ki bu sayfaya erişmek artık mümkün olmuyor. Sistemin kaynaklarının açılmasına ilişkin duyuru 14 Ağustos 2013 tarihinde Google Knowledge’tan Tomas Mikolov, Ilya Sutskever ve Quoc Le tarafından yapılmış. İlgili makaleyi http://google-opensource.blogspot.com.tr/2013/08/learning-meaning-behind-words.html adresinde bulabilirsiniz.

Word2vec yöntemiyle Türkçe sözcüklerin ilişkilendirilmesi

Görüntü: deeplearning4j.org

https://github.com/danielfrg/word2vec adresinde de konuya ilişkin ayrıntılar ve örnekler var. Burada kullanılan word2vec, bağımsız bir modül. Aynı modülü gensim‘in bir alt modülü olarak kullanmak ta mümkün.

github.com/danielfrg deposunda modülün kurulum ve kullanımıyla ilgili açıklamalar ve örnekler var. Örnek veritabanını http://mattmahoney.net/dc/text8.zip adresinden indirebilirsiniz. 100MB büyüklüğünde bir dosya bu. İçeriğinde noktalama işaretleri kaldırılmış çeşitli yazılar bulunuyor.

Benzer çalışmayı Türkçe bir veritabanı oluşturarak denedim.

4 GB belleği olan makinamda 125MB’lık örnekler sorunsuz çalışabiliyor. Bu boyutun üzerine çıktığım zaman, “buffer overflow” hatası alıyorum. Eğer sizin bilgisayarınızın belleği daha büyükse, daha büyük boyutlu veritabanlarıyla çalışmanız da mümkün.

Elde ettiğim sonuçlardan bazıları şu şekilde:

insan: [‘insanın’ ‘insanoğlu’ ‘ruh’ ‘insanların’ ‘insanlar’ ‘hayvan’ ‘insandan’ ‘birey’ ‘toplum’ ‘doğa’]
macera: [‘serüven’ ‘vaka’ ‘hayatımız’ ‘felaket’ ‘çılgınlık’ ‘evliliği’ ‘kentte’ ‘buluşmamız’ ‘aşk_hikayesi’ ‘eğlence’]
öfke: [‘tiksinti’ ‘korku’ ‘utanç’ ‘kızgınlık’ ‘çaresizlik’ ‘acıma’ ‘şaşkınlık’ ‘hiddet’ ‘dehşet’ ‘üzüntü’]
karanlık: [‘kasvetli’ ‘ıssız’ ‘aydınlık’ ‘karanlığı’ ‘loş’ ‘boğucu’ ‘zifiri’
‘bulanık’ ‘alacakaranlık’ ‘iç_karartıcı’]
öykü: [‘hikaye’ ‘roman’ ‘romanda’ ‘şiiri’ ‘hikayeler’ ‘öyküler’ ‘şiirler’
‘romanı’ ‘dizeler’ ‘öyküsü’]
ayşe: [’emine’ ‘aliye’ ‘makbule’ ‘naciye’ ‘fatma’ ‘dede’ ‘hatice’ ‘zübeyde’ ‘sabiha’ ‘ablası’]
recep: [‘halit’ ‘şakir’ ‘hamit’ ‘nusret’ ‘cemal’ ‘muharrem’ ‘sait’ ‘cemil’ ‘nedim’ ‘refik’]

Veritabanına noktalama işaretlerini kaldırmak dışında yapılmış herhangi bir müdahale yok. Tüm ilişkileri sistemin kendisi saptıyor. İsimlerdeki cinsiyet farkının bile yakalanmış olması dikkat çekici.

Önümüzdeki günlerde, kullandığım Türkçe veritabanı örneklerini de paylaşacağım.

Beni izlemeye devam edin!

Ahmet Aksoy

Tem 102016
 
2.930 views

Ubuntu 16.04 Hikayeleri No-03

Eski sistemlerimde yerel olarak genellikle MySQL veritabanı kullandım. PhpMyadmin ile kolayca işlem yapabilmek bende kalıcı bir alışkanlık yarattı sanırım. Bir başka alışkanlığım ise, yerel MySQL’i paralo vermeksizin kullanmak.
Bu, güvenli bir yöntem olmamakla birlikte işin kolayına kaçmak ağır basıyor.

MySQL 5.7 parolasız root bağlantısı kurmak

Lafı hiç dolandırmaya gerek yok. MySQL 5.7 sürümü, root için boş parola verdiğinizde işlem yapmanıza izin vermiyor. Ya da en azından zorluk çıkarıyor.

/etc/phpmyadmin/config.inc.php dosyasında

    $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;

Ubuntu 16.04 Hikayeleri No-03

satırını düzenlediğinizde

MySQL u root

komutuyla veritabanına sorunsuz erişebilirsiniz. Ama ne phpmyadmin, ne MySQL-workbench, ne de adminer ile veritabanına erişmek mümkün olmuyor.

Bu nedenle ben de en pratik çözümü uygulayıp MySQL 5.6’ya geri dönüş yaptım.

Şu anda veritabanıma phpmyadmin üzerinden parola girmeye gerek kalmadan sorunsuz girebiliyorum.

Ubuntu 16.04’e yüklü MySQL 5.7’yi kaldırmak pek te kolay bir iş değil. Öncelikle mevcut sürümü tamamiyle kaldırmanız gerekli. Aksi halde alt sürümü sağlıklı bir şekilde kurmanız mümkün olmuyor.

Benim kullandığım yöntem özet olarak şu şekilde. Sizin sisteminizde farklı işlemler yapmanız gerekebilir. Önemli olan eski sürümü tamamiyle temizlemeden kuruluma geçmemek.

sudo service mysql stop
sudo apt purge mysql-server mysql-client
# Mevcut paketler temizlendi mi kontrol edin
dpkg -l | grep MySQL
# Gerekiyorsa  dpkg -P <paket adı> işlemlerini de uygulayın
# Temizlik tamamlandığında kuruluma geçin
sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty universe'
sudo apt install MySQL-server-5.6
sudo apt install MySQL-client-5.6

Aklınızda bulunsun!

Ahmet Aksoy

Referans: ubuntuforums.org/showthread.php?t=2321196