Skip to content

Google App Engine ilk uygulama

Google in yeni hizmetlerinden birisi olan appengine özellikle python geliştiricilerini sevindiren bir servis. Şu an için bir çok geliştiriciye tam olarak hitap etmesede işe yarar bir servis.

http://code.google.com/appengine/

adresine girerek kaydımızı yaptırıyoruz. Daha sonra

http://code.google.com/appengine/downloads.html

adresinden güncel olan SDK yi indiriyoruz ve sistemimize kuruyoruz. Kurulumun yapılabilmesi için sisteminizde Python olması gerekmekte. Eğer sistemimizde python yok ise python.org adresinde sistemimize uygun olan paketi indirip kurmamız gerekecek.

Şimdi http://appengine.google.com/ adresine girerek bir adet proje oluşturalım. Proje ayalarını yaptıktan sonra bir editor açalım ve alışıldığı üzere “Hello world” uygulamasını gerçekleştirelim.

#mkdir test_project
#cd test_project

#vi hello.py

import wsgiref.handlers

print ‘Content-Type: text/plain’
print ”
print ‘Hello, world!’

#vi app.yaml

application: test_project
version: 1
runtime: python
api_version: 1

handlers:
– url: /.*
script: hello.py

Sıra mevcut dosyalarımı google sunucularına yüklemeye geldi. Burada dikkat etmemiz gereken nokta app.yaml dosyası içindeki ” application: test_project” satırı. Buradaki test_project yerine http://appengine.google.com/ adresinde oluşturduğumuz proje adını yazmamız gerekiyor.

#cd ..
#appcfg.py update test_project

Bundan sonra bizden app engine kayıt olurken girdigimiz google hesabımıza ait eposta adresini ve şifresini isteyecektir. bunları girdikten sonra dosyalarımız google sunucularına yüklenmeye başlayacaktır.

Sıra geldi projemizi test etmeye. Oluşturdugumuz proje adına göre google bize http://test_project.appspot.com şeklinde bir adres vermişti. Bu adrese girerek uygulamanızı test edebilirsiniz. Veya domanininiz için gerekli dns tanımlarını yaptı iseniz kendi domain adresinizide kullanabilirsiniz. Örnek http://uygulama.ferhatcicek.com – http://cicek.appspot.com .

docman 1.4rc1 arama hatası

docman 1.4rc1 in arama sırasında oluşan

Warning: Invalid argument supplied for foreach() in /www/htdocs/_username_/joomla/components/com_docman/themes/default/templates/documents/tasks.tpl.php on line 36

hatasını düzeltmek için tasks.tpl.php dosyasının 36. satırı

foreach($this->doc->buttons as $button) {

aşagıdaki gibi değiştiriyoruz.

foreach($this->doc->links as $button) {

sdcc – small device c compiler

Mikro denetleyiciler ile oldukça sık uğraşıyorum aynı zamanda linux kullanıyor / kullanmak istiyorum diyorsanız sdcc tam size göredir. oldukça basit ve kullanışlı olan sdcc kendi sitesinde

“SDCC is a retargettable, optimizing ANSI – C compiler that targets the Intel 8051, Maxim 80DS390, Zilog Z80 and the Motorola 68HC08 based MCUs. Work is in progress on supporting the Microchip PIC16 and PIC18 series. SDCC is Free Open Source Software, distributed under GNU General Public License (GPL).”

şeklinde tanımlanıyor. yani tam bizim istediğimiz şey.

Dağıtım olarak benimde destek verdiğim ve kullandığım dağıtımlardan biri olan PARDUS dağıtımını kullanıyorsanız contrib deposunu depo listenize ekledikten sonra

# sudo pisi it sdcc

komutunu kullanarak sdcc yi pardusunuza kurabilirsiniz. faklı bir dağıtım veya işletim sistemi kullanıyorsanız http://sdcc.sourceforge.net adresinden gerekli paketleri bulabilirsiniz.

Pardus gibi paket yöneticisi olan bir dağıtım kullanıyorsanız mevcut bağımlılıklar algılanarak gerekli diğer paketler sdcc ile birlikte kurulacaktır.

sdcc kurmadan önce sisteminize kurmanızda fayda olan ve gerekli bazı paketler mevcut.Bu paketlerden en önemlileri gputils, gpsim paketleridir. Bu paketlerin sisteminizde olup olmadığını kontrol ederek eğer yok ise sdcc kurulumuna başlamadan önce bu paketlerin kurulumunu yapınız.

Eğer ben kendi işimi kendim yaparım diyorsanız ( Ben dağıtım olarak debian kullandığım için sdcc nin paketlenmiş hali mevcut. Bu yüzden kaynak koddan kurulum yapmaya gerek duymuyorum.)

# svn co http://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc sdcc

ile güncel kaynak koduna ulaşıp kendiniz derleyebilirsiniz. kurulum bilgi dosyasından veya http://sdcc.sourceforge.net sitesinden kurulum hakkında detaylı bilgi alabilirsiniz.

sdcc kurulduktan sonra

# sdcc -v
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.6.0 #4309 (Nov 10 2006) (UNIX)

bilgisini alıyoruz. Bu bizi sdcc nin büyük olasılıkla sorun çıkarmadan çalışacağını gösteriyor. sdcc de karşılaşılabilecek en önemli sorun kütüphanelerin eksik derlenmesi, linklerin oluşturulmaması v.b. olabilir.

sdcc miz hazır olduğuna göre derleyicinin manuellerine hemen bir göz atarak basit bir kod yazalım

#define __16f84
#include “pic/pic16f84.h”
typedef unsigned int word;
word at 0x2007 __CONFIG = 0x3f72;
unsigned char count;
void main(void) {
TRISA = 0;
count = 0;
while(1) {
PORTA = count;
count ++;
}
}

komuduzu ornek.c olarak kaydedelim.

# sdcc -mpic14 -p16f84 ornek.c
message: using default linker script “/usr/share/gputils/lkr/16f84.lkr”
# ls
ornek.asm ornek.c ornek.cod ornek.hex ornek.lst ornek.o ornek.p

ornek.c dosyamız başarı ile derlendi. Artık mcu larımız için linux altında kod yazıp onları derleyebiliriz.

Matlab alternatifleri

Sayısal hesaplamalar, simulasyon v.b. konular ile ilgilenen kişilerden Matlab yazılımını duymamış olan yoktur herhalde. Literatürde kendine yer edinmiş olan bu yazılım başarısını kanıtlamıştır. Tek kötü yanı open source bir yazılım olmamasıdır 🙂

Farklı platformlar için sürüme sahip ender yazılımlardan biri olan Matlab Linux altında rahatlıkla kullanilabilmektedir. Yüksek fiyatı ve lisans sözleşmesi benim gibi sizin içinde bir sorun ise o zaman

Scilab
Octave

tam size göredir. Matlab kadar gelişmiş toolboxlara özelliklere sahip olmasalarda bu yazılımlar eminimki mevcut ihtiyaçları karşılyacaktır.

Eğer Pardus dağıtımını kullanıyorsanız scilab contrib deposunda octave ise depoda mevcut. Paket yöneticisini kullanarak bu yazılımları rahatlıkla kurabilirsiniz.

Scilab ve Octave incelendiginde Scilab Octaveden bir adım önde durmaktadır. Vakit bulursam scilab ve octave notlarımı düzenleyip burada paylaşacağım.

Enerji Takip

Tekstil v.b. sektörler için enerji giderleri maliyet hesabında oldukça önemli bir paya sahiptir. Bu yüzden enerji tüketimini gözlem altında tutulması, izlenmesi maliyet hesabı yönünden önemlidir.

Tüketimin izlenmesinin yanında gelişmiş enerji sistemleri ile donatılmış fabrikalarda uygulamam izleme ve kontrol yöntemleri ile makine ve ekipmanların daha sağlıklı çalışması sağlanmakta, olası bazı aksaklıklar önceden kestirilebilmektedir.

Gelişmiş enerji izleme ve kontrol sistemlerinin kurulum maliyeti oldukça yüksektir. Bu yüzden küçük sanayici bunlardan faydalanamamaktadır. Bu noktadan yola çıkarak enerji takip sistemi projesine start verdik.

Piyasadaki benzerlerinden farklı olarak sistem izleme yazılımı linux işletim sistemi altında çalışacak ve GPL lisansı ile dağıtılacaktır. Elektronik ekipmanları isteyen şu an testleri devam etmekte olan PCB leri kullanarak kendi yapabilecektir, eğer isternirse elektronik ekipmanlar proje sahibi kişilerden malzeme+ işçilik ücreti ödenerek temin edinilebilecektir.

Proje için google code altında bir sayfa oluşturduk. Gelişmeleri bağlantıdan takip edebilirsiniz. http://code.google.com/p/enerjitakip/

pardus ve mod_python

apache ve mod_python u pisi deposundan kurduktan sonra

/etc/apache2/modules.d/16_mod_python.conf

dosyasının içeriğini aşağıdaki şekilde değiştirelim

  LoadModule python_module modules/mod_python.so
    
      AddHandler mod_python .py
      PythonHandler mod_python.publisher
      PythonDebug On
    
  DirectoryIndex index.py

bundan sonra
/var/www/localhost/htdocs/

dizini altına python isimli bir dizin oluşturalım ve eğer apache çalışıyorsa

#sudo service apache restart

komutunu verelim. çalışmıyor ise

#sudo service apache start

ile apache yi başlatalım.

Şimdi sıra test etmeye geldim.

hello.py isimli bir dosya oluşturalım ve dosya içine aşağıdaki kodu yazarak bu yeni dosyayı oluşturduğumuz python klasörü altına kaydedelim.

def hello(name=None):
if name:
return 'Hello, %s!' % name.capitalize()
else:
return 'Hello there!'

şimdi gezinti aracımızı açarak adres satırına
http://localhost/python/hello.py/hello

yazalım.

Hello there!
yazısını görüyorsak sorun yoktur. :)

python ile kredi kartı no kontrolü

Daha önce kredi kartı numarasının kontrolü için luhn algoritmasından bahsetmiştim. Luhn algoritmasını python ile yazacak olursak aşağıdaki şekilde yapabiliriz.

def kontrol(kartno):
toplam = 0
hanesayisi = len(kartno)
tekcift = hanesayisi & 1
for sira in range(0, hanesayisi):
hane = int(kartno[sira])
if not (( sira & 1 ) ^ tekcift ):
hane = hane * 2
if hane < 9:
hane = hane - 9
toplam = toplam + hane
# return toplam
return ( (toplam % 10) == 0 )

kartno=raw_input("Kredi kartı numarasını gir  :")
if  kontrol(kartno) :
print kartno, 'nosu geçerli'
else:
print kartno, 'nosu geçerli değil'

python ile mysql’e bağlanma

Python ile MySQL e bağlanmak için sistemizde MySQLdb kütüphanesi olmalı. Bu kütüphane ile mysql veritabanı üzerinde işlem yapmak oldukça kolaylaşıyor. Aşağıda basit mysql örneği gözükmektedir.

try:
import MySQLdb
except ImportError:
sys.exit( "MySQLdb modulu gerekli - bulunamadi" )
''' MySQLdb nin sistemde varlığını kontrol ederek bağlıyoruz'''
db_hostname="benim_sunucum"
db_database="benim_veritabanım"
db_username="benim_veritabani_kullanici_adim"
''' vertabanı tanımlamalarını yapıyoruz'''
dbcon=MySQLdb.connect(host=db_hostname,user=db_username,db=db_database )
'''veritabanına bağlantı kuruyoruz'''
cursor=dbcon.cursor()
sql = """SELECT * FROM benim_tablom"""
cursor.execute(sql)
'''sql soruusunu işletiyoruz'''
data = cursor.fetchone()
field = cursor.description
'''sql sorgusu sonucu donen verinin ilk satirini aliyoruz'''
cursor.close()
dbcon.close()
'''veritabanı bağlantısını sonlandırıyoruz'''
print data
'''veriyi yazdırıyoruz'''

Kredi kartı numara doğrulama

Gelen bir epostada kredi kartı numarası nasıl doğrulanır şeklinde bir soru vardı.

Cevap : Luhn algoritmasıdır. Bir çok kişiye bu anlamsız gelebilir. Bunu basit bir örnekle açıklamayalım

16 Haneli bir kredi kartı numaramız olsun

6 7 6 2 0 5 0 1 2 1 5 2 6 3 8 4
Kart No 6 7 6 2 0 5 0 1 2 1 5 2 6 3 8 4
adım 1 6×2 6×2 0x2 0x2 2×2 5×2 6×2 8×2
12 12 0 0 4 10 12 16
adım 2 1+2 1+2 0 0 4 1+0 1+2 1+6
3 7 3 2 0 5 0 1 4 1 1 2 3 3 7 4
adım 3 3+7+3+2+0+5+0+1+4+1+1+2+3+3+7+4
46
adım 4 mod10(46) = 6

Adım 1 : Sağ taraftan başlayarak çift haneli sayıları iki ile çarpıyoruz

Adım 2 : Adım birde bulduğumuz yeni sayının haneler toplamını buluyoruz

Adım 3 : Yeniden oluşmuş olan 16 haneli sayımızın haneler toplamını buluyoruz

Adım 4 : Adım 3 de bulunan sayının mod 10 değerini buluyoruz

Adım 4 sonucunda bulunan değer 0 ise bu sayı Luhn algoritmasını
gerçekliyordur. Yani elimizdeki kredi kartı numarası
geçerli bir kredi kartı numarasıdır diyebiliriz.

Bunun için basit bir php script ise aşağıdaki şekilde yazılabilir.

< ?php

$sayi="12231231131";

$odd = !strlen($sayi)%2;

$toplam = 0;

for($i=0;$i<strlen($sayi);++$i) {

$n=0+$sayi[$i];

$odd=!$odd;

if($odd) {

$toplam+=$n;

} else {

$x=2*$n;

$toplam+=$x>9?$x-9:$x;

}

}

if (($toplam%10)==0){  echo $sayi." için luhn algoritmasi geçerli";}

else {echo $sayi." için luhn algoritmasi geçerli değil";}

?>

Python ile Nokia S60 için adım adım uygulama geliştirme – II

Bir önceki yazıda S60 cihazımız için python ile uygulama geliştirmek için gerekli dosyaları nereden bulacığımızı ve S60 cihazımıza python yüklemeyi ve çalıştırmayı anlatmıştım.

Bu yazımızda ise işi kişisel bilgisayarımızda python ile kod yazmak için yapmamız gerekenlerden ve bunları S60 cihazımıza yükleyerek yorumlayıcı tarafından çalıştırılması üzerinde duracağız.

Öncelikle forum.nokia sitesinden S60 cihazımıza uygun python SDK ları indirelim ve bilgisayarımıza kuralım. Bununla birlikte python.org sitesinden python un en son sürümünü bilgisayarınıza indirip kurmanızı öneririm. forum.nokia sitesinden indirdiginiz SDK yi bilgisayarınıza kurdugunuz zaman içerisinde işinize yarabilecek oldukça kullanışlı kılavuzlar bulacaksınız.

Şimdi sıra python kodlarını yazacagımız bir editöre ehtiyacımız var. Ben editplus ve ultraedit tercih ediyorum ancak bu yazılımlar paralı oldugu için isterseniz notepad, wordpad v.b. bir editor kullabilir veya context.cx adresinden oldukça başarılı ve bedava bir yazılım olan context i edinebilirsiniz. Tercih sizindir.

Artık kodlama kısmıan geldik. Eğer Python hakkında hiç bir bilginiz yok ise burdan sonrasına devam etmeden önce python.org sitesinden python hakkındaki kılavuzları edinmenizi öneririm. Çünkü bundan sonrası python programlama bilgisine dayanmaktadır.

Bir klasik olarak ilk kodumuzu yazalım..

import appuifw
appuifw.app.title = u”Hello World”
appuifw.note(u”Hello World!”, ‘info’)

Back To Top