24
Kasım 2009
3 comments

C dili ile haşır neşir olanlar veya php konsol programlayalar bilirler system diye bir komut vardır. MS bu komuta muadil olarak çoğu zaman shell komutunu kullanmak zorunda bırakır.

genel olarak system komutu, bulunduğunuz program içerisinden konsol çekirdeğine komut göndermenize yarar.

yine bu komutun python ile müdaili varmı diye araştırdığımda bire bir aynısının os kütüphanesi içerisinde bulunduğunu öğrendim.

genelde bir program dili öğrenirken diğer bildiğim dil veya dil kümelerinde bulunan komutların karşılıklarını araştırarak öğrenmeye çalışırım.(ustalarımdan tavsiye)

import os,sys
# Sistem konsol (windows için CMD.exe) başlığını değiştiriyoruz.
os.system('Bu benim başlığım olsun,selam olsun,merhaba dünya olsun,hayat bayram olsun.')
# konsol rengini değiştiriyoruz.
os.system('color 0a')
# harici bir program çağırıyoruz.
os.system('harici.py')

os.sytem komutu ile konsol ekranındaki komutları kullanabilirsiniz. ben biraz uç noktalarda olması için bu komutları kullandım, bunun yerine dir,md,rd,del gibi komutlarıda kullanabilirsiniz. amaç system prosüdürünün nasıl çalıştığını anlatmak.

24
Kasım 2009
0 Yorum

Sleep fonksiyonu her programlama dilinin olmazsa olmaz bir fonksiyonudur. (komutudur)

acaba python ile sleep komutunun muadili neymiş diyerek araştırdığımda gördüm ki,time isimli kütüphane’nin içerisinde program akışını belirtilen saniye kadar uyutan bir fonksiyon mevcutmuş.

lafı fazla uzatmadan kendisi ile tanıştırayım sizi :

import time
print "Şimdi uyuyorum 10 saniye sonra görüşürüz"
time.sleep(10) #on saniye uyu
print "Günaydın (:"

23
Kasım 2009
0 Yorum

giriş :

Uzun süredir böyle bir yazı yazmak istiyordum ,bugüne nasipmiş,

web siteleri,barındığı sunuculardan sizin bilgisayarınıza geldiği anda içerisinde html kodlarını getirir,
web sitesi hangi dille yazılırsa yazılsın,size html olarak gelir,gelmek zorundadır.Çünkü sizin web sitelerini görüntülemek için kullandığınız tarayıcılar (firefox,chrome os,internet explorer,safari) aslında birer html yorumlayıcısıdır.Birbirlerinden ayrıldıkları tek noktada bu html kodlarını yorumlama hızlarıdır.

** benim yukarıda bahsettiğim html terimi aslında salt html değil (javascript,embed,css) gibi html 4 ve üstü teknolojiler bütünüdür.

Nasıl oluyor ? :

kodlarınızda en iyi korumayı sağlamak için,kodların size ve ziyaretcinize hangi aşamalardan geçerek geldiğini iyi bilmek gerekir.Siz ne kadar iyi bilirseniz,o kadar iyi önlem alabilirsiniz.

kullanıcı / ziyaretçi, sizin site adresinizi tarayıcısına yazıp sayfayı çağırdığı andan itibaren,tarayıcınız sizin sitenizi kendi üzerine çekerek yorumlamaya başlar.
bu süreç içerisinde web siteninize bağladığınız tüm css ve js komut dosyaları da tarayıcıya yüklenir.hatta resim dosyalarıda bu yüklenme kervanı içerisindedir.

hal böyle olunca yazmış olduğunuz ve web sayfasına etki etmesini istediğiniz css ve js kodları önce tarayıcının ön havuzuna alınıyor ardındanda işleme konuluyor.

buraya kadar anlattığım olaylardan çıkacak sonuç şu; sizin kodlarınızın işlenebilmesi için kısmende olsa ziyaretçi bilgisayarına yüklenmesi gerek.

Peki ya sonra ? :

sizin yazmış olduğunuz kodların bulunduğu tüm dosyalar (css – js ) ziyaretçinin bilgisayarına tarayıcı vasıtası ile yüklendikten sonra tarayıcı bu kodları okuyarak ne yapacağına karar veriyor ve kullanıcının tarayıcı ayarlarında yapmış olduğu ziyaret edilmiş sayfaların artık dosyalarını silme aralığına göre sizin kodlarınızın bulunduğu artık dosyalar siliniyor.(tempory internet files,firefox cache vb.) kimi kullanıcı bu ayarları hiç değiştirmediği için uzun bir süre sizin kodlarınız kullanıcı bilgisayarında kalabiliyor.

Sorunu kavradık peki çözümü yok mu ?

yazdığınızın ve yayınladığınız kodların (php ve asp kodları gibi sunucu tarafında yorumlanan kodlar değil,js css gibi ziyaretçi tarafında yorumlanan kodlar) ziyaretçinin bilgisayarına yüklenmemesini engelleyemediğimizi öğrendik.peki yüklenen kodlara tarayıcı dışında kimse erişmesin diyebilir miyiz, tabiki hayır diyemeyiz.

bunca işlem süreci içerisinde biz kod yazarlarının kodlarını saklaması için hiç mi bir önlem alınmamış ? cevap yine hayır. eğer hala bu soruyu sorabiliyorsak zaten işin özünü anlamamışız demektir.

Çözüm olarak kullanılabilecek yöntemler ?

  1. Js kodlarınızı şifreli yazmak:
    bununla ilgili olarak bir çok internet sitesi,servis aracı mevcut ancak her şifrelenen metin tekrar açılarak işlenmek zorunda olduğu için kırılması çok kolaydır. bu yüzden bu yöntem fazlası ile vakit kaybıdır.
  2. Js kodlarınızı bir session kontrollü, asp veya php sayfası içerisine gömerek tarayıcıya gönderme :
    Bu nerden çıktı şimdi diyebilirsiniz ? ancak yukarıda anlattığım mantık içerisinde kafanıza şu soru gelebilir ; eğer tarayıcı kodlarımızı görüyorsa yapacak bir şey yok,peki direk adres yazarak kodlara ulaşmaya çalışanlara karşı bir önlem alamazmıyız ? işte bu yöntem bu sorunun cevabı. Gelen isteğin tarayıcıdan mı yoksa direk mi geldiğini anlayabilen bir algoritma ile (session ve değişken kontrolü) bunun önüne geçtiğinizi varsayabiliriz.
    nedir bu session ve değişken kontrolü ;
    php üzerinden anlatacak olursam, index.php başında $tarayici = true diyerek bir değişken ataması yaptık ve js,css dosyalarınıda sayfaya js.php?js=komutlar şeklinde bağladık,bu bağlama neticesinde js.php sayfası içeride gelen query string’e göre js dosyasını bulup yükleyecek.js.php sayfası bu yüklemeden önce başta atanmış $tarayici değişkeninin içeriğine bakacak,eğer içerik true ise sayfayı dökecek.
    Bu anlattığım yöntem en sık kullanılan yöntemlerden birisidir ve %100 sonuca (bu yöntem için) sadece internet explorer 6 kullanan ziyaretçiler için ulaşabilir.
    şimdi şöyle düşünün kodunuzu çalmaya çalışan (yada görmeye diyelim) kişi sizce sadece internet explorer 6 mı kullanır ?
    Mesela firefox ve firebug kullanan bir kişi bu engele hiç takılmadan tarayıcı içerisinden kodlarınızı görebilir.
  3. karman çorman kod yazarak,kodların anlamsızlaştırma: Bu bir yöntem olmamasına karşın çoğu kişi çözülmesini istemediği kodlarını bu yöntemle yazar.bunları geri döndüren bir program ve araç var ancak şuda var,eğer ben kodlarımızı bu şekilde yazarsam bunu çözmeye çalışan kişi (çakmak isteyen yada görmek isteyen) uğraştığına deyip deymeyeceğini düşünecek ve yoluna ona göre devam edecektir.
  4. Kodları hiç yayınlamamak : Belkide en etkili sonuç budur kanaatindeyim,çünkü yayınlanmamış kod,hiç kırılmamış,görülmemiş ve ulaşılmamış koddur.

Son söz:

Web 2.0 felsefesi ile birlikte,amaç görsellikten çok içeriğe döndüğü için artık çoğu şeyi saklamanın manası kalmamıştır.
web sitelerinin hepsi görsel birbirine benzese bile içerik olarak birbirini tutmamaktadır.işin amacı ve doğası bu yöndedir. Eğer çok iyi yazdığınıza inandığınız bir js kodunu saklamak istiyorsanız bunu başaramaz,beyhude çabalamış olursunuz.siz sadece önlem alabilirsiniz.

20
Kasım 2009
0 Yorum

Python ile komut satırından yan argümanları almak istiyoruz.

# test Python komut satırı yancıları

import sys
if (len(sys.argv) >= 2):
yancilar = sys.argv[1:] #0 numaralı argümandan sonrasını seç, sıfırı geç
print( yancilar )
raw_input("van tu tri foro ...")  # bekle

Bu kod kümesi ile komut satırndan gelen bilgileri ekrana dökebilirsiniz.

Örnek uygulama :

C:\Documents and Settings\CeaSeR\Desktop>c:\Python26\python.exe bpk_py_1.py hala
y basi kirvem ceker
['halay', 'basi', 'kirvem', 'ceker']
vat tu tir forro

18
Kasım 2009
0 Yorum

başlık biraz uzun oldu ancak anlatmak istediğim olay şu iç içe döngüler ile ilgili bir örnek;

bizden sütun ve satır sayısını isteyecek, ve girilen değerlere göre ekrana * işareti ile bir dikdörtgen oluşturacak.

kodlarımız :

#include<stdio.h>
int main(){
int boy, en, i, j;
printf("Sutun sayisini yaziniz: ");
scanf("%d",&en);
printf("Satir sayisini yaziniz: ");
scanf("%d",&boy);
printf("\n");
for(i=0; i<boy; i++){
for(j=0; j<en; j++){
printf("*");
}
printf("\n");
}
printf("\n");
return 0;
}

açıklamalar :

#include<stdio.h>

bize lazım olan kütüphaneyi içeri aktardık,

int boy, en, i, j;

kullanacağımız değişkenleri cinslerine göre tanımladık,

printf("Sutun sayisini yaziniz: ");
scanf("%d",&en);
printf("Satir sayisini yaziniz: ");
scanf("%d",&boy);

satır ve sütun sayılarını kullanıcıdan isteyerek en boy değişkeni içerisine aktardık,

for(i=0; i<boy; i++){
for(j=0; j<en; j++){
printf("*");
}
printf("\n");
}

işin can alıcı kısmı bu iç içe kullanılan döngüler,

burada ilk sıradaki döngü satır, sonraki (içerideki) döngü ise sütun kadar döner,
kaç satır varsa o sayıya ulaşana kadar sütun karakterleri için döner.
umarım anlatabilmişimdir.

04
Kasım 2009
0 Yorum

Sağlık Bakanı : “domuz gribinden bilmem kaç bin kişi ölebilir” diyor,
Turizm Bakanı : “bu kadar panik yapmayın” diyor,
Sağlık Bakanı : “aşıya engel olanlara suç duyurusunda bulunacağım” diyor ve
Başbakan : “kimse kimseyi aşı olmaya zorlayamaz, ben aşı olmayacağım” diyor.

akp = istikrar

hadi ordan.

02
Kasım 2009
0 Yorum

Firefox ayar bilgilerini regedit kayıt defterinde değilde, kendi profil klasörü altında sqlite database dosyaları yada javascript değişken dosyaları içerisinde tutar ve okur.

Firefox’un herhangi bir ayarını dışarıdan (firefox programı dışında başka bir yazılım ile) değiştirmek istenildiğinde izlenmesi gereken dosya yolu gereken yol şu

C:\Documents and Settings\CeaSeR\Application Data\Mozilla\Firefox\Profiles\xhaquz7i.default\prefs.js

yalnız burada dikkat edilmesi gereken kısım şu kalın puntolarla belirttiğim kısımlar (klasörler) her bilgisayarda veyahut her windows sisteminde (xp – vista – 7) farklılık gösterir.

birinci kalın kısım ceaser windows kullanıcı adıdır.
ikinci kalın kısım ise firefox’un varsayılan profil klasörüdür. ancak burada bir ip ucu vereyim firefox varsayılan klasör dosyaları sonu hep .default olarak biter

firefox’un ayar dosyası olan prefs.js dosyasına nasıl ulaştığını anlattıktan sonra gelelim bu dosyanın içeriği hakkında bilgi vermeye,

prefs.js bir javascript dosyasıdır ve firefox kullanacağı bilgileri (değişkenleri) bu dosya yardımı ile kendi sistemine aktarmaktadır. bu dosya ile firefox’un kullandığı proxyden açılış sayfalarına kadar herşeyi düzenlemen mümkündür. (firefox dışından yada içinden)

bu dosya içerisinde (prefs.js) değişkenler ve değerleri şu şekilde yazılır

user_pref("DEĞİKEN ADI", DEĞER);

dosya içerisindeki mevcut değişkenleri düzenleyip firefox’u yeniden başlattığınızda tüm ayarların değişmiş olduğunu görürsünüz.

bu blog gönderisi bu adreste sorulan bir soruya verdiğim bir cevabtan yola çıkarak oluşturulmuştur.

02
Kasım 2009
0 Yorum

malum alfabede C harfine gelmiştik,

  • Formal parametreler fonksiyona değer aktarımı yapılacağı zaman kullanılırlarmış.
  • Bir fonksiyonun tipi void ise, çağırana herhangi bir veri gönderilmeyecek anlamına geliyormuş.
  • Bir fonksiyon doğrudan yada dolaylı yoldan kendisini çağırıyorsa rekürsif  fonksiyon adlandırılıyormuş. Burada bir parantez açmakta fayda var bu rekürsif fonksiyonlar sadece C ile bağıntılı değil tüm programlama dillerinde geçen bir kavramdır.
  • C dilinde tanımlanmış fonksiyonların tipi tamsayı değilse ve fonksiyon kodu main()’den sonra ise o fonksiyonun bildirilmesi gerekiyormuş.

temelde çok az şey öğrenmişim, şimdi aldığım notlara baktımda çok az not tutmuşum, ya ben not tutmayı sevmiyorum yada çok yavaş ilerliyorum. :gülücük:

06
Ekim 2009
0 Yorum

Php ile sayfaya bilgi basarken yada php çekirdeğine bilgi gönderirken dizgisel bilgileri tırnak işareti ile gösteriyoruz. bu kimi zaman ” işareti olurken kimi zamanda ‘ işareti oluyor.

peki php’de hangisini kullanmakta fayda var ?

cevap ikiside ancak php;

” ” çift tırnakları arasında kalan dizgiyi yordamlar ve sonra basar,

‘ ‘ tek tırnak arasında kalan dizgiyi ise yordamlamadan basar.

bu da şu demek

$isim = “Ali”;
$soyisim = “Gündoğdu”;

echo “$isim $soyisim”;

//sayfaya Ali Gündoğdu yazar.

aynı örneği tek tırnak ile yaparsak

$isim = “Ali”;
$soyisim = “Gündoğdu”;

echo ‘$isim $soyisim’;

//sayfaya $isim $soyisim yazar.

php tek tırnağı çift tırnaktan daha hızlı işler ve döndürür bu yüzden mecbur kalmadıkça çift tırnağa bulaşmayın derim.