Windows XP Hizmetleri

Windows’a geçtiken sonra ince ayar yapmamıştım bilgisayara. Geçe gün aklıma bazı ayarları değiştirmek geldi ve aşağıda ki adımları uyguladım. Sizin bilgisayarınızda ne kullanılır bilmiyorum bu yüzden bunları uygulayıp uygulamamak size kalmış.

Başlat – Çalıştır düğmelerinden sonra “msconfig” isimli uygulamayı çalıştırdım. Ardından öncelikle hizmetler bölümüne geçtim ve aşağıdaki hizmetleri durdurdum. Kullanmadığım bu hizmetler gereksiz yere çalışıyordu.

Hata Bildirim Hizmeti
Olay Günlüğü
Hızlı Kullanıcı Değiştirme
Yardım ve Destek
Uzaktan Erişim Otomatik Bağlantı Yöneticisi
Uzaktan Erişim Bağlantı Yöneticisi
Uzaktan Kayıt Defteri
Akıllı Kart
Görev Zamanlayıcı
İkincil Oturum
Sistem Geri Yükleme Hizmeti
Otomatik Güncelleştirmeler
Kablosuz Sıfır Yapılandırma

Elbette işime yaramayan daha bir çok hizmet vardır ama ben bunlarla yetindim. Ardından başlangıç bölümüne geçtim ve yeni format atılmış bilgisayarda nelerin sistemi kastırdığına şahit oldum. O işleri hallettikten sonra anti virüs yazılımının otomatik güncelleştirmelerini kapadım. İnanın oyun oynerken o işin halledilmesini istemezsiniz. Daha sonra görüntü ayarlarıma geçtim. Masaüstüm zaten sade olduğundan ve kurulu bir temam olmadığından bir değişiklik yapmama gerek kalmadı. Eğer sizin bir temanız varsa ve çok görsel öğelere abanmışsanız sadeliği tercih etmenizi öneririm. Masaüstünde görünen her simge size kasış olarak geri dönecektir. Benim masaüstü resimlerimdende göreceğiniz üzere gayet derli toplu bir sistemim var. Buna rağmen çoğu zaman dosyalarımı çeşitli klasörlerde toplar hatta uzun süre kullanmayacağım verileri Cd’lere kaydederim. Ne olur ne olmaz hem yedek almış oluruz hemde boşuna yer kaplamalardan kurtuluruz.

PyS60 Konum Belirleme

Location Modülünü kullanarak pozisyon bilgilerimizi alabiliyoruz. Şimdilik bu modül sadece bir fonksiyona sahip, gsm_location() isimli bu fonksiyon şu şekilde kullanılabilir. Mobil ülke kodu, network kodu, bölge kodu ve telefon kimliği gibi bilgilere ulaşılır.

import location
print location.gsm_location()

PyS60 Audio Uygulamaları

Biraz zaman aldı yazının devam etmesi, farkındayım. Bunun sebebi pys60 dışında başka şeylerle uğraşmam. Bunların içinde işletme dersleri, oyunlar ve daha önce bahsettiğim çeşitli projeler var. Buraya yazı yazmıyorsam bilin ki o sıra PyS60 ile ilgilenmiyorumdur.

Eski telefonlarla yenileri ayıran başlıca özelliklerden birisi multimedya uygulamalarıdır. Eski telefonlarımızda resim görüntüleyemez ve karmaşık sesleri çalamazdık. S60 serisi telefonlar ile kavuştuğumuz bir çok özellikten bazılarını kullanmaya yarayan “audio” modülü hakkında bir kaç konuyu sizlerle paylaşacağım. Bu özelliklerden ilki “text to speach” olarak adlandırılan sizin yazdığınız yazıyı sesli olarak iletilmesidir. Yazdığınız yazı telefon tarafından okunur. Türkiye’de bize sunulan telefonlarda bu özelliğin olduğunu sanmıyorum(en azından ben karşılaşmadım) ama biz yinede not etmiş olalım, bakarsınız lazım olur. Bu özelliği kullanmak için auido modülünün say() fonksiyonunu kullanırız. Örnek olarak:

import appuifw
import audio

text = appuifw.query(u”yaz bisi:”, “text”)
audio.say(text)

İkinci özellikse mp3 ve midi dosyalarının çalınması. Mp3 türü dosyalar müzik dosyaları olarak kullanılırken, midi’ler genellikle zil sesi olarak kullanılır. Bu özelliği kullanmak için sound.open() ve sound.play() fonksiyonlarını kullanırız. Kullanım şekli play([times=1, interval=0, callback=None ])’dir times parçanın kaç kere çalınacağını gösterir. Callback’i önceki yazılarda örneklendirmiştik. Interval belirlenen süre parçaya ara verir. Örnek:

import audio

sound = audio.sound.open(“E:\xxxxx.mp3”)
def oynat():
^^^^sound.play()
^^^^print”oynatmaya basladik”

Not: “^^^^” işaretini arada dört karakter boşluk olduğunu belirtmek için kullandım.

Sound sınıfının play ve open fonksiyonlarının yanında stop, recort, max_volume, set_volume, state gibi fonksiyonları da vardır. Bu fonksiyonların listesini daha önce vermiş olduğum resmi dökümandan edinebilirsiniz. Kullanımları aynı olduğu için teker teker açıklamıyorum ama özellikle record fonksiyonu işinize yarayabiliceğinden işten kaytararak içinde çeşitli örnekler olan bir sitenin adresini veriyorum.

Kolay gelsin

Yapay Zeka Sıkıntısı

Kafam çok bozuldu çıktım tüm facebook gruplarından. Siyasi yazı yazmama kararımdan dolayı(öyle bir şey mümkünse) matrix filminin ikincisinin ardından bilim kurgudaki yapay zeka sıkıntıları üzerine birşeyler karalıyım dedim. İyi ettim ki okuyorsunuz bu yazıyı…

İnsanlığın yarattığı yapay zekaların nasıl ona karşı ayaklandığının örneklerini verelim:
Matrix, i robot, terminator, battlestar galactica ve belki blade runner vb… Hepsi belli bir noktada insandan kopyalanmış duygusal tepkiler göstererek(korku, korunma, nefret, merak) yaratıcılarına karşı ayaklanan yapay zekaları konu alıyor. Sorunun temelinde yaratıcısına benzeme arzusu yatıyor. Düşünün insanoğluda aynı çaba içersinde değil mi? Can veriyoruz, can alıyoruz, kendimizi tanrısal güçler bahşedilmiş halde hayal ediyoruz, herkesin bizi sevmesini bize saygı duymasını istiyoruz, süper kahramanlar yaratıp tüm hayallerimizi onun üzerinden gerçekleştirmeye çalışıyoruz, sanat eserlerini ortaya çıkarıyoruz(insanın bir sanat eseri olmadığını iddia edebilecek var mı?) ve son olarak tabiki yapay zeka ile uğraşıyoruz.

Kendimizi tanrılaştırmak için geliştirdiğimiz bu zekayı insana benzetmeye çalışıyoruz. Neden robotları insana benzetelim ki? Bunun altında ki sebep gerçekten sadece uyum sorununu gidermek mi? Amacımız bizimde bir insan yaratabileceğimizi göstermek, tanrı rolüne soyunmak.
Bunu yaptığımız için kendimizi eleştirme hakkını kendimde görmüyorum, sadece ne yaptığımızı belirtiyorum.

Gelelim işte hikayelerimizde yaşanan sıkıntıların kaynağına. İnsan eliyle yaratılmış ve insanı kopyalayan yapay zeka bir noktadan sonra isyan eder. Evet, çünkü insanında yaptığı ilk hata isyan etmek olmuştur. Emre itaatsizlik ve cennette bye bye! İnsan ürünü yapay zeka dışlanır belki yok edilmeye çalışılır, işte bu noktada iki tarafta korkuya kapılmıştır(insan-yapay zeka) birbirlerine saldırmaya başlar ve hikayelerde genellikle insanlık kaybeder. Peki sonra ne olur? Bize anlatılan direnişin hikayesidir ama karşı tarafa hiç bakılmaz. Yapay zekanın amacı nedir? Tüm insanlığı yok ettikten sonra ne olacaktır? Bu soruların bir cevabı var mıdır?

Yapay zeka kendine bir vücut oluşturur. Ardından insana benzemeye çalışır. İşte o yaratıcıya benzeme arzusu! Sonunda insanın şeklini kopyalar; organik yapılar üzerinde çalışır belki canlı birşeyler yaratabilecek, birşeylerin tanrısı olacaktır! İnsanlıkla olan savaşında ona benzemesi faydasını gösterir, aralarına sızar böylece daha fazla veri alarak daha iyi kopyalama yapar. Hikayeler devam etse insanlığın tamamen ortadan kalktığını görebiliriz. Peki sonra ne olur?

İnsanlık yok olmuş, yapay zeka gezegene hüküm sürmeye başlamıştır, karşısında bir düşman olmadığı için amaçsız kalmıştır. Araştırmalarına devam eder ve daha gelişmiş bir yapay zeka üretir, bu arada kendi toplumsal yapısını kurmuştur bile. Bir gün eserleri onlara ihanet eder ve savaş yeniden başlar.

PyS60 SMS Uygulamaları

Önceki yazılarımızda sms gönderme konusunda bir örnek yapmıştık. Çok basit bir uygulamayla msajımızı gönderebiliyorduk ama mobil sistemlerde iş mesaj göndermekle bitmiyor. Mesaj alıyorsunuz, bir yerde saklıyorsunuz, üzerlerinde işlem yapıyorsunuz. İşte bu yazımızda sizlerle birlikte “SMS” olayını irdelemeye çalışacağız. Wiley’nin mobile python kitabında olayı çok güzel özetlemişler: günümüz teknolojisinde binbir çeşit iletişim imkanı olsada eski telefonlarla yenileri buluşturan en temel özelliktir. Bu yüzden bizler kitleler halinde mesajlaşmaya devam ediyoruz.

Python mobile index isimli bir modüle sahip. Bu modül sayesinde telefonumuzun gelen kutusuna erişip oradaki mesajlara ulaşabiliyoruz. Örneklere geçmeden önce bu modülün objelerinin bir listesini yapalım:

sms_messages()
content(sms id)
time(sms id)
address(sms id)
delete(sms id)
unread(( )sms id)
set_unread(sms id, status)
bind(callable)

Örnekler üzerinde çalışarak bunları kullanmayı öğreneceğiz. Hemen bir örnek ile başlıyorum.

>>> import inbox
>>> i=inbox.Inbox()
>>> m=i.sms_messages()
>>> i.content(m[0])
u'foobar'
>>> i.time(m[0])
1130267365.03125
>>> i.address(m[0])
u'Ceyhun Bey'
>>> i.delete(m[0])
>>>

Dökümandan aldığım bu örnek üzerineden size konuyu anlatayım. Öncelikle tüm uygulamalarızda yaptığımız gibi gerekli olan modülü(inbox) yükledik. Bu şekilde gelen kutumuza erişmiş olduk ama iş burda bitmedi. Mesajımıza ulaşmak için bu mesajın “id”sini bilmek gerekiyor. sms_messages() fonksiyonu ile bu idlerin listesini “m” ile almış olduk. Ardından bu m verisini kullanarak önce content fonksiyonu ile mesajın içeriği aldık, time() fonksiyonu ile zamanını öğrendik, adress() ile gönderenin adresini aldık ve delete() ile mesajı sildik. İşte bu kadar!

PyS60 Uygulama Gelişimi – 2

Konu ile ilgili bir önceki yazımda uygulama yapısına bir göz atmıştık. Bu sefer bu yapının menü gibi bölümlerini inceleyeceğiz. Bilgisayar dünyasında yazılan çoğu uygulamada menüleri kullanmışsınızdır. Oyunları açtığınızda karşınıza çıkan bir menüdür, benim gibi firefox kullanıyorsanız sayfanızın üstünde menüler vardır. Windows kullananların “Başlat” menüsü vardır.Başlı başına bir sistem olan Symbian’da yazdığınız uygulamalarında birer menüye sahip olması kaçınılamaz bir durumdur.

PyS60 ile menüleri geliştirirken python’un tüp özelliğini kullanacağız. Her zaman dediğim gibi bu özelliği bilmeyen arkadaşlar çeşitli kaynaklardan araştırabilir ve tüpün ne olduğu öğrenebilirler, bu blogu eski versiyonundan beri takip edenler varsa onlar daha önce yazdığım veri çeşitleri konularını okumuş ve tüp bilgisine nail olmuşlardır 🙂

Şimdi bir uygulama yazalım ve içine bir menü yerleştirelim uygulamayı oldukça ufaltıcam; menüyle ilgilenelim:


import appuifw, e32

def selamlar():
appuifw.note(u"Selamlar size!")
def gitburdan():
appuifw.note(u"sevmiyorum seni git burdan!)
def quit():
print "Çıkış bu tarafta, defol!"
app_lock.signal()

appuifw.app.exit_key_handler = quit
appuifw.app.title = "Garipbirdurum"
appuifw.app.menu = [(u"bu bir tüp", selamlar),(u"başlık ve fonksiyon", gitburdan)]

app_lock = e32.Ao_lock()
app_lock.wait()

Bir önceki yazımızda benzer bir uygulama yazmıştık burada ekstradan menü seçeneği kullandık. Gördüğünüz gibi mesaj-fonksiyon şeklinde menülerimizi oluşturuyoruz. Daha önce bahsetmediğim sekmeler(tabs) bölümüde buna benzer bir gelişim sürecinde kullanılmakta orada yapmanız gereken appuifw.app.set tabs() fonksiyonunu kullanmak. Bu arada menü için bir kaç not belirteyim.
(başlık, callback) Bu normal menü
(başlık, ((title, callback)[… ])) Bu alt menü oluştururken kullanılıyor. (Kendiniz deneyin bakalım yapabilecekmisiniz)
Ekranın ayarlarınıda uygulamanız içersinde değiştirebilirsiniz bunun için aşağıdaki seçeneklerden birini uygulamanıza yerleştirmeniz gerekir. Daha fazla yapı öğesi için PyS60 dökümanına bakınız sonraki konularda belki başka yapı özelliklerini kullanırım.
appuifw.app.screen=’normal’ # (normal ekran, başlık, tuşlar…)
appuifw.app.screen=’large’ # (tuşlar gözükür)
appuifw.app.screen=’full’ # (full ekran)

Görüşmek dileğiyle, iyi bayramlar.

Python 3.0

Python 3.0 diğer adıyla Python 3000 çıkmadan çok önce kullanıcıları ikiye bölmüştü. Bir kısım kullanıcılar değişikliklerin artık bir zorunluluk olduğunu savunurken diğer kesim geri uyumlu olmamasından dolayı büyük sorunlar getireceğini düşünmekte. İki kesiminde haklı olduğu noktalar var; 3.0 ile birlikte bir çok geliştirici kodlarını yeniden düzenlemek ve 3.0’a uymak için daha çok çalışmak zorunda kalacak. Düşünün bir uygulama yazıyorsunuz ve bu uygulama bir çok farklı kütüphane kullanıyor ve 3.0 ile birlikte bu kütüphanelerin büyük kısmı artık işinize yaramıyor yaramasa bile yeniden düzenlenmeleri gerekiyor ve haliyle bu büyük bir zaman kaybına neden oluyor.

Diğer tarafta Guido van Rossum’un önderliğinde bir grup geliştirici dilin gelişimine devam etmesi açısından bu versiyonun büyük bir stratejik hamle olduğu görüşünde. Onları destekleyen argümanların başında Python 2.x’in hala kullanımda olması ve 3.0’ın nimetlerinden yararlanmak istemezseniz var olan uygulamarda bir değişikliğe gerek olmadığı geliyor.

Benim açımdan olaya bakarsak, unicode sorunun çözümü işlerimi çok kolaylaştıracak. Gelişimin önünde ki engeller kaldırılmalıdır. Bir çok gereksiz şeyin kaldırılması Python’u daha tutarlı bir dil haline getirmiştir. Uzun dönemli performans kısa dönemli uyuma tercih edilmiştir ve bu çok doğru bir karardır! Kütüphanelerin dönüşümü zaman alabilir ama fazla sorun çıkmadan bu işlemin tamamlanacağını ve herkesin 3.0’a geçeceğini göreceğiz.

Evet, ben geçtim…