Python Kodları index

Python'da index özelliğine bakalım. Bu kodun kullanımı aşağıdaki gibidir.

<List>.index(<değer>)


Bu kod liste içinde aranan değerin konumunu gösterir. ör:

p = [1,2,3,4]
print p.index(3)
Çıktısı
2

İndex kodu sadece ilk bulduğu değerin konumunu gösterir, birkaç eşit değer varsa hepsinin konumunu göstermez.

<deger> in <list>


in kodu bir değerin listede olup olmadığını True veya False cevabı ile söyler. Ör:

p = [1,2,3,]
print 3 in p

Çıktısı
True

<deger> not in <list>


not in kodu in kodunun aksine değer listede yok ise True varsa False çıktısı verir.

p = [1,2,3,]
print 3 not in p

Çıktısı
False

Bu kodun diğer bir kullanımı ise

not <deger> in <list> Şeklindedir.

Bir örnek yapalım. Bu örnekte 2. değeri 1. liste içinde bulup konumunu yazacağız. Listede bulunamıyorsa -1 değeri dönecek.

def find_element(a,b):
    if b in a:
        n=a.index(b)
        return n
    else:
        return -1

print find_element([1,2,3],3)
2

print find_element(['test','deneme'],'alo')
-1



Python For Döngüsü

Python'da For döngüsü bir liste için yazılabilir ve listenin her bir değeri için teker teker işlem yapılabilir. Bunu bir örnek ile gösterelim.

example_list = ['a', 'b', 'c', 'd']
for thing in example_list:
    print thing

Çıktısı
a
b
c
d

Şeklindedir. Yukarıdaki örnekte for döngüsüne sokulan bir listenin değerleri sıra ile yazdırılmaktadır.

Bir mrenek daha yapalım.

def harf_say(p):
    t = 0
    for test in p:
        if test[0] == "U":
            t = t + 1
    return t
         
print harf_say (['deneme','Ulu','Univercity'])

Bu kod liste içerisinde U harfiyle başlayan kelimelerin kaçtane olduğunu gösterir, buna benzer bir kod ile farklı aramalar yapabilirsiniz.



Python Değişken Listesi

Python'da değişkenler liste halinde aşağıdaki gibi yazılabilir.

liste = ["test1", "test2", "test3", test4"]

Bu listeden herhangi bir değer seçilecek is değişken içinden karekter seçer gibi sonunda bu değer belirtilir.

print liste[1]

Çıktısı
test2

görüldüğü gibi listede index 0 dan başlar 1. sıradaki değer yukarıdaki gibi gösterilir. Birde karışık liste örneğine bakalım

liste2 = ["deneme", 34, [1,3,5], "istanbul", "Ankara"]

print liste2[2]

Çıktısı
[1,3,5]

print liste2[2] [2]

Çıktısı
5

Gördüğünüz gibi iç içe listeler yazılabilir ve bu listelerden değerler yukarıdaki gibi çekilebilmektedir.

Listeler içinde bulunan herhangi bir değeri aşağıdaki gibi değiştirebilirsiniz.

liste [I,S,T,A,N,B,U,L]

Bu listedeki ilk harfi değiştirelim.

liste [0] = "İ"
print liste

Çıktısı
[İ,S,T,A,N,B,U,L]

Olacaktır. Bu şekilde liste içerinde bir değişiklik olduğunda listenin eşitlendiği diğer değişkenlerin içerikleri de değişmiş olur. Bunu bir örnek ile gösterelim.

>>> p=[1,2,3]
>>> q=p
>>> p[0]=9
>>> print p
[9, 2, 3]
>>> print q
[9, 2, 3]
>>>

Listeye bir değer daha eklemek için appent kodu kullanılır. Bunu bir örenk ile gösterelim. Aşağıdaki örnekte listeye bir sayı daha ekliyoruz ve liste genişlemiş oluyor.

>>> list=[1,2,3,4,5]
>>> list.append(9)
>>> print list
[1, 2, 3, 4, 5, 9]
>>>

İki listeyi birleştirmek için + işareti kullanılabilir.

>>> list1=[1,2]
>>> list2=[2,3]
>>> list3 = list1 + list2
>>> print list3
[1, 2, 2, 3]

görüldüğü gibi içerikten bağımsız olarak iki liste 4 ile birleştirildi. Yukarıdaki örnekden devam edersek list3 listesinin içerdiği değer sayısını saymak için len() kodunu kullanabiliriz. len() kodu bize listenin, bir bümlenin veya bir dizinin kaç değer veya karekter içerdiğini verir.

>>> len(list3)
4
>>> len("istanbul")
8


Linux'da konsol'a bağlanamayan kullanıcı ile SSH dosya transferi.

Sadece dosya transferi yapacak olan SFTP kullanıcıları konsola bağlanmalı ve belirtilen klasör dışında üst klasör görüntüleme hakkı olmamalıdır. Böyle bir SFTP bağlantısı sağlayabilmek için aşağıdaki yapılandırmadan faydalanabilirsiniz.

İlk olarak kullanıcı oluşturalım

 adduser sftpuser

Bosyaların upload download edilebileceği bir klasör oluşturalım

mkdir -p /var/sftp/uploads

Klasör yetkilerini düzenleyelim

chown root:root /var/sftp
chmod 755 /var/sftp
chown sftpuser:sftpuser /var/sftp/uploads

SSH konfigürasyonunu yapalım. ssdd_config dosyasına aşağıdaki bölümü ekleyelim.


nano /etc/ssh/sshd_config

Match User sftpuser
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/sftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

Son olarak SSH servisini yeniden başlatarak testimizi yapalım.

/etc/init.d/sshd /reload


Python Randint

Randint komutu verdiğiniz bir aralıkta rasgele bir değer seçmeye yarar.

randint (başlangıç, son)

Burada başlangıç ile son arasında bir sayı seçilir. Aşağıdaki örnekte 1'den 5'e kadar herhangi bir sayı seçilecektir.

randint (1,5)

Bir örnek yapalım

from random import randint

def random_verb():
    n = randint (0,1)
    if n==0:
        return "kayak"
    else:
        return "run"
print random_verb()



Python Debugging

Python'da oluşan bir hatanın tespit edilebilmesi için verdiği hata mesajlarından faydalanabilirsiniz. Hatanın hangi koddan kaynaklandığını mesaj içerisinde görebileceksiniz. Bazen kod içerisindeki bazı bölümlerin kapatılması gerekebilir. Bu durumda kodu silmek yerine işlevsiz hale getirebilirsiniz. # karekteri kendinden sonraki kod satırını işlevsiz hale getirir.

# print "Deneme"

Yukarıdaki satır Python'da işlem görmez. Birden çok satır sözkonusu ise hepsine # işareti koymak yerine ''' kullanılabilir. # Python'da yorum veya hatırlatıcı not yazmak için kullanılır.

'''
print "Deneme1"
print "Deneme2"
print "Deneme3"
'''
Üç adet tek tırnak ile başlayıp kapatılması gereken yer sonuna yine üç adet tek tırnak koyarsanız yukarıdaki gibi olan bölüm Python tarafından işlenmeyecektir.

https://docs.python.org/2/library/pdb.html

Python Karşılaştırma İşlemleri. IF ELSE

Python Karşılaştırma İşlemleri. IF ELSE

Python kodlama da karşılaştırma ifadeleri aşağıdaki gibi kullanılabilir.

>>> print 21>12
True
>>> print 21>32
False
>>> print 3*7>21
False
>>> print 5*4 != 23
True
>>> print 4 == 2*2
True
>>>

Yukarıda görüldüğü gibi eşit değil için != kullanılırken eşittir karşılaştırması için == kullanılır. Tek eşittir python'da atama anlamına gelir. Örneğin a = 4 a değişkeninin değerini 4 yapar. a == 4 ise anın 4'e eşit olup olmadığını sınarken kullanılır.

>>> print "hello" == "hello"
True

>>> hello=5
>>> print hello
5

Şeklinde ikisinin farkını gösterebiliriz.

Python IF Kullanımı


IF ELSE kullanımını bir örenk üzerinde gösterelim.

if 10 > 20:
    print "Ilk sayi buyuk"
else:
    print "Ikınci sayi buyuk"


Görüldüğü gibi ilk sayı ile ikinci sayıyı karşılaştıran bir karşılaştırma yapılmış. İlk sayı büyük olmadığı için çıktı sonucu "Ikınci sayi buyuk" olacaktır.

Bir örnek daha yapalım. İlk harfi "S" olan isimler için "True" farklı olan harfler için "False" çıktısını veren bir kod yazalım

def isim(a)
      if a[0] == S:
         return True
      else:
         return False
print isim("Serkan")

Bu kodun çıktısında "True" yazacaktır. Serkan ismini alıp ilk karekteri olan S'nin S'ye eşitliğine bakarak True çıktısı alınır.

Üç sayının hangisinin büyük olduğunu bulan bir kod yazalım

def biggest(a,b,c):
    if a > b:
        if a > c:
            return a
        else:
            return c
    else:
        if b > c:
            return b
        else:
            return c
print biggest (2,5,9)

Gördüğünüz gibi if karşılaştırmaları iç içe yazılarak birçok karşılaştırma yapılabilir. Bu kodda amaç en büyük sayıyı bulmaktır ve çıktı 9 olacaktır. Python'da bunu hızlı bir şekilde yapacak komut max komutudur.

max (9,34,6,77,2,555)

Bu komut parantez içinde bulunan sayıların en büyüğünü bulur ve yazar. Aynı şekilde en küçük sayıyı bulmak içinde min komutu kullanılır.

min (3,5,66,7)


Python While Kullanımı


Şimdide while döngülerine bakalım

a = 0
while a != 10:
    a = a + 1
    print a

while sürekli yapılmak istenen işlemlerde kullanılır ve if döngüsüne benzer. Yukarıdaki örnekte a 0 değeri while içinde test edilir. Sonuç doğru ise bir artırılır ve yazdırılır. Sonuç yanlış oluncaya kadar döngü devam eder. Sonuç yanlış olmazsa döngü sonsuza kadar devam eder. While komutundan çıkılabilmesi için karşılaştırmanın yanlış olması gerekir.

def remove_spaces(text):
    text_without_spaces = '' #empty string for now
    while text != '':
        next_character = text[0]
        if next_character != ' ':    #that's a single space
            text_without_spaces = text_without_spaces + next_character
        text = text[1:]
    return text_without_spaces
print remove_spaces("hello my name is andy how are you?")

Yukarıdaki kod cümle içindeki boşlukları kaldıran bir koddur.

Break kodu döngüden çıkmak için kullanılır. Bu koddan sonra döngü devam etmez döngüden çıkılır.

while(True): #True demek sonsuz döngüdür.
    print(i)
    i = i+1
    if(i==8):
        break

Burada i=7 olduğunda döngüden çıkılır.



Python komutları 3

Python kodu içerisinde bir if else karşılaştırması aşağıdaki örnekte görüldüğü gibi yapılabilir.

def fonksiyon(deger):
if type(deger)== type(1):
return 1
else:
return "Ayni tip degil"
print fonksiyon(20)
print fonksiyon(20.1)

Çıktısı
1
Ayni tip degil

Görüldüğü gibi fonksiyon içindeki 20 satısının 1 ile aynı tip olması durumunda 1, farklı tip olması durumunda mesaj ile dönen bir karşılaştırma yapmış olduk.


Windows Komut Satırında Dosya Senkronizasyonu Yapmak

Bilgisayarınızda bulunan dosyaları başka bir bilgisayar, dosya paylaşımı veya disk üzerine yedeklemek için windows komutlarından xcopy kullanılabilir. Bu komut size herhangi bir program kurmadan dosya yedeklemesi ve klasör senkronizasyonu sağlar.

Xcopy için seçenekler

/D - elirtilen tarihte veya sonrasında değişen dosyaları kopyalar. Tarih verilmezse, yalnızca kaynak saati hedef zamanından daha yeni olan dosyaları kopyalar.
/I - Hedef yoksa ve birden fazla dosya kopyalamak hedefin bir dizin olması gerektiğini varsayar.
/E - Boş olanlar da dahil olmak üzere dizinleri ve alt dizinleri kopyalar.
/Y - Üzerine yazmak istediğiniz varolan hedef dosyayı üzerine yazdırır.
/H - Gizli ve sistem dosyalarını kopyalar.
/R - Salt okunabilir dosyaların üzerine yazmayı sağlar.

Dosyaları bir dizinden diğerine senkronize etmek için xcopy'yi şöyle kullanabilirsiniz:

xcopy c:\kaynakdirectory c:\hedefdirectory /D /I /E /F /Y /H /R

Uzak bir sunucu ile senkronizasyon yapmak için hedef dizin olarak yalnızca bir sunucu adresi ve dizin adı kullanabilirsiniz:

xcopy c:\kaynakdirectory \\server\hedefdirectory /D /I /E /F /Y /H /R

Bir sunucu dizini için geçici bir yerel sürücü oluşturmak istiyorsanız pushd komutunu kullanabilirsiniz.

pushd \\server\hedefdirectory

Bir batch dosyası hazırlamak isterseniz notepad içinde

@echo OFF
echo : XCOPY Batch Dosya Yedekleme
xcopy {KAYNAK_PATH} {HEDEF_PATH} /D /I /E /F /Y /H /R
echo : Islem Tamam
pouse

Yazarak Yedekleme.bat şeklinde bir bat dosya uzantısı ile kaydedin ve üzerine tıklayarak çalıştırın.

Linux Ubuntu'da LFTP Kullanımı

LFTP genelde yedek alma veya klasör senkronizasyonu için kullanılan bir dosya transfer metodudur. Özellikle klasör içeriği senkronizasyonunda çok başarılı bir uygulamadır. kullanılan Syntax aşağıdaki gibidir.

lftp [-d] [-e cmd] [-p port] [-u user[,pass]] [site]
lftp -f script_file
lftp -c commands
lftp --version
lftp --help

İlk olarak Linux bilgisayar üzerine LFTP yükleyelim, burada bizim tercihimiz Ubuntu bilgisayar.

LFTP yazilimi asagidaki komut ile yüklenir.

apt-get install lftp

Dosya senkronizasyonu yapılmak isteniyor ise bir bash script hazırlanıp bununla istenildiği zaman senkronizasyon sağlanabilir.

Sh dosyasi asagidaki gibi hazirlanir.

vi ftpsync.sh
-------------------------------
#!/bin/bash
HOST='192.x.x.x'
USER='kullanıcı adı'
PASS='Şifre'
TARGETFOLDER='/'
SOURCEFOLDER='/srv/'

lftp -f "
open $HOST
user $USER $PASS
lcd $SOURCEFOLDER
mirror --reverse --delete --verbose $SOURCEFOLDER $TARGETFOLDER
bye
"
------------------------------

ftpsync.sh dosyasina çalistirma hakki verilmelidir.

chmod 777 ftpsync.sh


Bu script bilgisayarinizda SOURCEFOLDER'daki dosyalari ftp'de bulunan  TARGETFOLDER ile senkronize eder. Bilgisayarinizda bir dosya silindiginde komut çalistirildiginda FTP'den de silinecektir.--delete komutu kullanilmazsa tek yönlü senkronizasyon gerçeklesir. --reverse komutu silinip $TARGETFOLDER ve $SOURCEFOLDER yer degistirilirse senkronizasyon ters yönde gerçeklesecektir.

Linux'dan komut ile mail göndermek

Linux üzerinden komut satırında mail atabilirsiniz. Bunun için Linux bilgisayarınız üzerinde bir smtp sunucusu olmalı ve ayarları yapılmalıdır. SMTP sunucusu olarak Postfix Mail Server kullanabilirsiniz. Kullandığınız bilgisayarın dışında bir SMTP sunucusu üzerinden mail atmak istiyorsanız Postfix Mail Server'ınıza diğer smtp sunucu adresini girmelisiniz. Başka bir SMTP sunucusu kullanacaksanız;

/evc/postfix/mail.cf dosyası sonuna aşağıdaki satırları ekleyin.

myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command =
mailbox_size_limit = 0
recipient_delimiter = +
inet_protocols = all
home_mailbox = Maildir/
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
relayhost = 10.x.x.x  #SMTP sunucu IP adresi
myorigin = email.domain.com #Domain

Daha sonra Postfix servisini yeniden başlatın.

/etc/init.d/postfix reload

Komut satırında aşağıdaki komutu kendinize göre düzenleyerek mail atın.

mail -a "From: Gonderen Kisi <GonderenMail@Adresi>" -s "Konu" MailinGonderilecegi@Adres < GonderilecekBilgiIcerigi.txt

Bu komutu yazıp uyguladığınızda gönderilen mail yukarıda belirtilen mail adresinden ilgili mail adresine gönderilmiş olur. Bu komut ile mail gönderdiğinizde büyük bir ihtimalle mail spam (Gereksiz Mail) klasörüne düşecektir. Bunu önlemek için SMTP sunucu ve DNS yapılandırması düzeltilmelidir.





Python komutları 2

Bu bölümde yazacağımız Python kodlarını konsolda değil dosya haline getirerek çalıştıracağız. Kodları bir text editöründe yazarak komut satırında bu dosya çağrılmalı. Örneğin test.py isimli bir dosya hazırlayın ve içine aşağıdaki komutu girin

print "deneme"

Daha sonra dosyayı kaydedin ve dosyayı pythom komutu ile komut satırından çağırın.

python test.py

Çıktısı

deneme

Artık başlayabiliriz, Python da prosedür kullanumuna bakacağız. Python da prosedür şu şekilde yazılır.

prosedür <"değer1", "değer2", "değer3",.....>

Prosedür formatını bir örnek ile yazalım

def string():
   return s[2:]
print string("deneme")

Burada deneme kelimesi def içinde değerlendirilir ve 2. karekter ve sonrası print komutu ile yazdırılır. Çıktısı;

neme

Şeklindedir.

Bir örnek daha yapalım. Bu sefer print çıktısını def içinde yazalım

def fonksiyon(parametre1, parametre2):
print parametre1
print parametre2
fonksiyon("Deneme Metni",5)

Çıktısı;
Deneme Metni
5

Şeklinde olacaktır. fonksiyon değişkeni içinde bulunan parametre1 ve 2 def içinde yazdırılmıştır.

Bir değişken akış içerisinde farklı değerler alabilir. Python'da bir değişkenin değerinin değişip değişmediğini ID numarası ile kontrol edebilirsiniz. Bir örnek yapalım;

>>> a=4
>>> id(a)
50820716
>>> a=9
>>> id(a)
50820656

Yukarıda da görüldüğü gibi a değişkeninin farklı iki değeri için ID'si değişmektedir. Bir değişkenin değerinin akış içinde değişip değişmediğini bu şekilde görüntüleyebilirsiniz.

Örneklere devam edelim. Aşağıdaki örnekte x değişkenine fonksiyon(a) değeri atanmış, bu değer def içinde aşağıdaki gibi +1 eklenerek hesaplanıyor ve hesaplama sonucu x'e eşit olduğu gösteriliyor.

def fonksiyon(degisken):
degisken +=1
print "Sayi def degeri= " + str(degisken)
return degisken
a=9
x=fonksiyon(a)
print "Sayinin global degeri=" + str(x)

Çıktısı
Sayi def degeri= 10
Sayinin global degeri=10

Not: += ifadesi bir kısaltmadır bu kısaltma ile x=x+5 fonksiyonunun x+=5 şeklinde yazabilirsiniz.

Çıktıyı incelediğimizde her iki değerin doğal olarak eşit olduğunu görüyoruz.def içinde bulunan return komutu def dışına döneceği değeri gösterir ve son satırda yer alır. def içinde bu satırdan sonra yazılacak olan satırlar dikkate alınmaz.


Python komutları 1

Python kodlamada çıktıları görüntülemek için print komutu kullanılır. Yazılım açıldığında aşağıdaki gibi bir ekran açılacaktır, görüldüğü gibi python 2.7 kullanacağız. Komut satırında print komutu arkasında yazılacak olan rakam
veya yazı çıktırı aşağıdaki örnekteki gibi olur.

Python 2.7.14 (v2.7, 20:19:30) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

>>> print 5
5
>>> print 'deneme'
deneme
>>>

Python rakamlar üzerinde işlem yapabilirken karekterler için ' veya " kullanılması gerekir.

Python Code
Python'da dört işlemin nasıl yapıldığına bakalım.

>>> print 2 + 2
4
>>> print 3 * 3
9
>>> print 9 / 3
3
>>> print 6 - 2
4

Aynı satırda birkaç kez dört işlem yapılabilir ve parantez kullanılabilir.

>>> print (4 + (2 * 2)) / 8
1

Python da değişken tanımlamak için bir örnek yapalım.

name = 1 yazdığımızda name değişkenine 1 değerini vermiş oluruz. Python çıktısı;

>>> name = 1
>>> print name
1

Bir kaç değişken tanımlayarak dört işlem yapaılım.

>>> en=23
>>> boy=10
>>> yukseklik=3
>>> print en * boy * yukseklik
690

Değişkenler içinde dört işlem yapılarak sonuş yazdırılabilir.

>>> sonuc=en * boy * yukseklik
>>> print sonuc
690

Kelime veya cünlelerde değişkenlere atanabilir.

>>> degisken="deneme mesaji"
>>> print degisken
deneme mesaji

Python'da bir kelime veya cümle içinden bir karekter yazdırılmak isteniyor ise

>>> print "deneme" [2]
n
Şeklinde kullanılır. Yukarıdaki örnekte n 3. karekter gibi görünebilir fakat Python da ilk karekter 0. karekter olarak kabul edilir ve bu durumda n 2. karekterdir.

Değişken değerinin sadece bir bölümü yazdırılmak isteniyorsa satır sonuna [seçilen ilk karekter sırası:son karekter sırası] ibaresi eklenir.

>>> print "deneme" [1:3]
en

Sondan başlanarak başa doğru seçmek isteniyorsa -1 den başlanarak hangi karektere kadar yazılacaksa eklenir.

>>> print 'deneme' [-3:5]
em

Python da bir karekterden sonrası yazdırılacak ise

>>> print "deneme" [1:]
eneme

Python da bir karekterden öncesi yazdırılacak ise

>>> print "deneme" [:4]
dene

şeklinde kullanılır. Komut eki [:] şeklinde kullanılırsa tamamı yazılır, bu ek kullanılmadığında da ilgili kelime veya cümlenin tamamı yazılır.

>>> print "deneme" [:]
deneme

Bu özellik ard arda yazılarak istenen bölümler alınarak yazdırılabilir. Kullanımı;

>>> print "deneme" [:3] + "deneme" [4:]
denme

Bir satırda kelime ve sayı yazdırılmak isteniyorsa str() kullanılır. Bu şekilde parantez içinde işlem de yapılabilir.

>>> print "Sonuc= " + str(5+5)
Sonuc= 10

Python'da bir string içinde arama yapmak için find komutu kullanılır. Kullanımı

<string>.find("aranan kelime veya karekter") Bir örnek ile görelim.

>>> print "Bu cumle icinde arama yapilacaktir".find("arama")
16

Görüldüğü gibi arama kelimesinin 16. karekterden başladığını söylüyor. Arama sonucunda aranan kelime bulunamaz ise -1 çıktısı görüntülenecektir.

>>> print "Bu cumle icinde arama yapilacaktir".find("sonuc")
-1

Bu örnekte cümle içinde sonuc kelimesi aranıyor fakat bulunamadığı için -1 çıktısını alıyoruz. Bu aranan kelime veya karekterin bulunamadığını gösteriyor.

Belirli bir karekterden sonra arama yapmak istiyorsanız aşağıdaki kullanımı inceleyebilirsiniz. Burada 21. karekterden sonraki a harfi aranıyor ve 23. karekterde bulunuyor.

>>> print "Bu cumle icinde arama yapilacaktir".find("a",21)
23

Cümle içinde herhangi bir karekter veya kelime değiştirilecek ise replace komutu kullanılır. Kullanımı;

>>> print "Bu cumle icinde arama yapilacaktir".replace("arama","inceleme")
Bu cumle icinde inceleme yapilacaktir

Görüldüğü gibi arama kelimesi yerine inceleme kelimesi yazılmıştır.

Python türkçe dil desteği için Python Idle Python27\Lib\idlelib\ üzerinde Options > General menüsünde UTF-8 seçilmelidir.


Serkan YILDIZ

Python kodlamaya başlarken

Python kodlamaya başlarken öncelikle bir text editör ve python yazılımı gerekecektir. Editör olarak Atom veya Sublime kullanılabilir. Bu yazılımlar kod yazarken kolaylık sağlayacaktır. Notepad'de kullanabilirsiniz.

Editör yazılımına karar verdikten sonra Python yazılımını aşağıdaki linkten indirip bilgisayarınıza kurmalısınız.

https://www.python.org/downloads/

Bu link'te 3.6 ve 2.7 versiyonlarını göreceksiniz. aralarında çok küçük farklılıklar var ama en son versiyonu öğrenmenizi tavsiye ederim.

Kurulum tamamlandıktan sonra seçtiğiniz editörü açın ve aşağıdaki kodu yapıştırın

Python 3 kurduysanız
print ("deneme")

Python 2 kurduysanız
print "deneme"

Daha sonra test.py olarak dosyayı kaydedin.

Daha sonra windows komut satırında

python dosya yeri\test.py

Yazın, çıktı olarak

deneme

Yazısını görüyorsanız Python kodlamaya başlayabilirsiniz.

HTML CSS Dosyası Nasıl Oluşturulur, Nasıl Kullanılır

HTML dosyaların görsel olarak yapılandırılması için style tag'leri kullanılmaktadır. Bu tag içinde çok fazla tanım yapılacak ise her html dosyanın yüklenme süresi ve kapladığı alan artacaktır. Bunun yerine tüm html dosyaları için tek bir CSS hazırlanması ve html içinden çağrılarak kullanılması daha efektif olacaktır.

 HTML dosyası içinde CSS kullanmak için aşağıdaki link kodu kullanılır. Link tag'i her zaman Head başlığı altına yazılır.

  <link rel="stylesheet" href="style.css">

Bu kod style.css dosyası içindeki tanımlarım bu HTML dosyasına aktarılmasını sağlar. style.css dosyası bir text dosyadır ve notepad gibi uygulamalar ile hazırlanabilir.

İlk olarak bir HTML dosyası hazırlayın;

<!DOCTYPE html>
<html>
<head>
  <title>Css Örneği</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
<h1>
  :: <em>CSS Örnek Uygulama</em> ::
</h1>
</body>
</html>

Yukarıdaki kodlamayı bir dosyaya yazarak cssTest.html olarak kaydedin. Aynı dizine style.css isimli bir dosya daha oluşturun ve aşağıdaki içeriği bu dosyaya yazın.

body {
    background-color: #e3e3e8;
}
h1 {
  background-color: #ff9900;
  position: fixed;
  text-align: center;
}

Html dosyasını açtığınızda arka plan renginin ve h1 tag'i içinde bulunan metnin arka plan renginin css dosyasında tanımlandığı gibi olacağını göreceksiniz. Html tag'lerinin tamamı Css dosyası içinde görsel olarak şekillendirilebilir. Bilinen Html tag'leri için değilde spesifik bir değişiklik yapılacak ise class kodu kullanılır. Ör;

<div class=test>Deneme Mesajı</div>

Burada tanımlanan class'ın Css dosyası içinde özellikleri yazılır. Class'lar başına nokta konularak css dosyası içinde tanımlanırlar.

.test {
   text-align: center;
   color: red;
}

Bu kodlar Html dosyasına eklendiğinde "Deneme Mesajı" sayfa ortasında kırmızı renkte görüntülenir.




HTML içinde Style oluşturma

HTML dosya içerisinde bazı özellikleri belirtmek için sytle kodu kullanılır. Bu kod html içinde direk yazılarak kullanılabildiği gibi bir css dosyası referans gösterilerekte kullanılabilir.

Bu kodun üç şekilde kullanımı mevcuttur ve sonuç bu üç kullanım içinde aynıdır. Tekrarlanan kodlar için kullanım kolaylığına göre seçim yapmak gerekir.

1.<head> içinde kullanılan style

Aşağıdaki kodda style kodu head içinde yer almaktadır. Bu kod body içinde bulunan tüm div seçimlerinin yükseklik ve genişliği belirlenmiştir. .stop class'ı kullanılıyorsa arka plan renginin kırmızı olması sağlanmıştır.

<head>
<style>
  div {
    height : 50px;
    width : 50px;
    border-radius: 25px;
  }
  .stop {
    background-color: red;
  }
</style>
</head>
<body>
<div class="stop"></div>
  <div>
    This will have a red background.
  </div>
</body>

2. div kodu içinde style kullanımı.

style kodu div içinde aşağıdaki gibi kullanılır ve sadece yazıldığı div içeriğini etkiler. Sadece bir kez kullanılacak olan özelliklerde tercih edilebilir.

<body>
  <div style="background-color: red">
    Test text.
  </div>
  <div style="background-color: red">
    Test text.
  </div>
</body>

3. Css dosyası içinde style kullanımı.

Html dosyasına bir referans css dosyası eklenerek bu css dosyası içinde style komutlarını kullanarak genel style kullanımları listelenebilir ve bu dosya referans gösterilerek tekrar tekrar yazmadan class'lar ile gösterilebilir.

<head>
   <link rel="stylesheet" href="main.css">
</head>
<body>
  <div>
    This text.
  </div>
</body>

Bu örnekte main.css dosyasına aşağıdaki div içeriği yazıldığında div kullanıldığı durumda arka lanın kırmızı olması sağlanır.

div {
  background-color : red;
}

Arka plana sabit resim koymak isterseniz aşağıdaki kodu kullanabilirsiniz.

<head>
<style>
body {
  background-image: url('1.jpg');
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-size: cover;
}
</style>
</head>

HTML Programlama

HTML dosya hazırlamada kullanılan bazı kodelardan bahsedeceğiz. İlk olarak bir HTML dosyanın sahip olması gereken kodlardan bahsedelim.

HTML dosya uzantısı .html veya .htm olmalıdır. Bu dosyaların sahip olması gereken kodlar aşağıdaki gibidir.

<!DOCTYPE HTML>  - Doküman tipini tanımlar. ör: Html  5
<html> - Html  dosya başlangıç kodudur.
<head> - Meta, title, link, java script, css gibi bilgilerin bulunduğu alandır.
<title>Title</title> - Html başlık bölümüdür.
</head> - Head bölümü sonu
<body> - Websayfasının gösterilecek tüm içeriği bu bölümde yer alır.
<b>Content</b>
</body> - Body bölümü sonu
</html> - Html bölümü sonu

Yazı karekterlerinin kalın harflerle yazmak için; <b> kodu kullanılır.

<b>Yazı</b> Çıktısı Yazı şeklindedir.

İtalik yazı karekteri için <em> kodu kullanılır.

<em>Yazı</em> Çıktısı Yazı şeklindedir.

Alt satıra geçmek için <br> kodu kullanılır.
Paragraf için <p> kodu kullanılır. Kullanımı;

<p>Yazı</p> Şeklindedir.

HTML içinde birçok kod aşağıdaki formatta yazılır.

<tag işlem="değer"> içerik </tag>

Anchor = a = link komutlarına bakalım

<a href="www.serkan.net">Serkan Web Page</a>

HTML dosyaya resim eklemek için 

<img src="url" alt="Açıklayıcı Yazı"> komutu kullanılır.

HTML dosyası web sayfası içindeki genel kuralları belirliyor. Css dosyası ise HTML içeriğinin hasıl görüntüleneceğini belirliyor ve görsel özellikleri yönetiyor. Css dosyası ile yazı tipleri, kalınlıkları, renk, resim boyutları gibi özellikler yönetiliyor. Css dosyası içeriğin istediğiniz formatta görüntülenmesini sağladığı gibi web sayfanıza bir standart getiriyor. Bu dosyadaki tanımları defalarca kullanarak aynı kodları sürekli html içerisinde yazmak zorunda kalmıyorsunuz.






KU-Band ve KA-Band Teknoloji Karşılaştırması

Uydu bağlantı teknolojileri hızlı bir şekilde geliştirilmeye devam ediliyor. Günümüzde DVB teknolojisinde DVB-S2X’e kullanılırken MODCODs’da (MODulation and CODing schemes) maximum 256APSK’e ulaşıldı. Bu güne kadar uydu üzerinden internet bağlantısı için kullanılan Ku-band yerini Ka-band uydu servislerine bırakıyor. Ka-band teknolojisi genel olarak uydu üzerinden internet servisi vermek için kullanılmakta. Ka-band’ın Ku-band yerine kullanılmasının en önemli sebeplerinden biri kapasite maliyetleri. Vsat pazarında ciddi maliyet avantajı sağladığından uydu üzerinden internet Ka-band üzerinden verilmeye devam edecek. Newtec’in paylaştığı aşağıdaki öngörüye göre Ka-band kullanım kapasitesinin 2024’de 1,1Tbps’a ulaşacağı tahmin ediliyor.


Aşağıdaki grafikte Ku ve Ka-band bu gün ki kullanımı ve gelecekteki öngörü yer almakta. Görüldüğü gibi veri haberleşmesi için Ku-band kullanımı gün geçtikçe düşerken Ka-band kapasite kullanımında ciddi artış göstermekte. Fakat Ku-band kullanımının biteceği öngörüsünün olmadığını görüyoruz.


Veri haberleşmesi için kullanılan Ku-band ve Ka-band arasında bazı farklılıklar mevcut ve Ka-band teknolojisi her ne kadar yeni bir teknoloji olsa da bazı dezavantajları bulunmakta. Dolayısıyla Ka-band teknolojisi Ku-band teknolojisinin yerine tamamen geçemediğini görüyoruz. Kullanılacak uydu teknolojisinin özellikleri dikkatli bir şekilde incelenerek ihtiyaca göre bir tercih yapılmalı. Bu iki RF teknolojisi arasındaki farklılıkları, avantajları ve dezavantajları inceleyeceğiz:

İlk olarak uydu frekans bandını inceleyelim. Yukarıdaki tabloda uydularda kullanılan frekans bant’larını görüyoruz. Bu tabloya göre Ku-band 12-18Ghz, Ka-band 26-40Ghz’de çalışmaktadır.

Alıcı Ku ve Ka-band antenleri aynı boyutta ise reflektör kazancı Ka-band'ı için daha yüksek olacaktır. Bunun nedeni reflektör kazancının frekans ile doğru orantılı olmasıdır. Ka-band yüksek frekans kullanır. Ka-bandı, aynı kazanım karakteristiklerini elde etmek için Ku-band eşdeğerlerinin dörtte birine eşit olan antenlerin kullanılmasına izin verir. Örneğin, Skyware Global 1.8m Ku anten, 14,3 GHz'de 46,8 dBi'lik bir kazanç sağlarken, 1,8 m'lik aynı boyuttaki Ka anteni 30,0 GHz'de 52,5 dBi'lık bir aktarım kazancı elde ediyor. Bu, Ku anteninden neredeyse dört kat daha fazla kazanım. Ka sistemleri için daha küçük anten boyutu, taşımacılık için gerekli alanı ve ağırlığı azaltıyor. Fakat reflektör kazancı tek başına sinyal kazanımı için belirleyici değildir.

Yol sinyal gücü kaybı frekans ile doğru orantılıdır. Ka frekansları yüksek olduğundan sinyalin uydudan antene gelene kadar kaybettiği güç daha fazla olacaktır. Ku-band’daki kayıp Ka’ya göre daha azdır. Reflektör kazancının fazla olduğu Ka-band’ın yol sinyal gücü kaybının daha fazla olduğunu görüyoruz.

Bir sinyalin kalitesi taşıyıcının gürültüye oranıdır ve frekans arttıkça gürültü artar. Ka-Band frekans bandında gürültü Ku-Band frekans bandından daha yüksektir. Aynı güçte çıkılan taşıyıcı için Ku-Band sinyali daha kalitelidir.

Küçük Ka-Band spot beam'leri daha iyi EIRP (Effective (or equivalent) Isotropic Radiated Power - Efektif Izotropik Yayılma Gücü) değerine sahiptir ve daha iyi odaklanma sağlar.

Yağmur, kar ve buz 11GHz'in üstündeki RF sinyallerini absorbe eder ve frekans yükseldikçe etki artar. Bu nedenle Ka-band sinyali Ku-band sinyalinden daha fazla bozulmaya uğrar, Ka-band yağışlı hava şartlarından daha fazla etkilenir. Aşağıdaki tabloda frekans arttıkça hava şartlarından kaynaklanan zayıflamanın etkisini görüyoruz. 12GHz’de 2dB zayıflama varken 30GHz’de 13,7dB zayıflama ölçülmüş.


Ka-Band'da Ku-band ile aynı alanı kapsamak için birçok beam kullanmak gerekir. Farklı beam'lerden oluşan bir kapsama alanı için her beam üzerinde kapasite tahsisi gerekir. Bu durum geniş kapsama alanlarında toplam bant genişliğinin efektif kullanılamamasına yol açar. Ka band geniş kapsama alanında birden çok beam gerektiği durumda broadcast veya multicast yayınlar için maliyetlidir. Çoklu beam yapısında alanın tamamında yayının alınabilmesi için her beam’den yayın çıkılması gerekir bu durum aynı kapasitenin her beam için tahsis edilmelidir.

Yeni kullanılmaya başlanan Ka-band teknolojisini günümüzde kısıtlı sayıda uydu desteklemektedir. Ku-Band eski bir teknoloji olmasından dolayı kullanımı yaygındır ve birçok uydu Ku-band’da kapasiteye sahiptir. Ku-band kullanımı uydu seçiminde esneklik sağlar fakat aynı esneklik günümüzde Ka-band için geçerli değildir.

Ku-bant uyduları birbirinden sadece 2 derece uzakta konumlandırılmıştır. Uydular birbirine ne kadar yakın olursa, etkileşim o kadar yüksek olur. Bugün, Ka-bandı uyduları tipik olarak birbirinden daha uzak konumlandırılmıştır ve bu nedenle daha düşük ASI'ye (Adjacent Satellite Interference)  sahiptir.

Ka-band çoklu beam yapısı gereği farklı beam’lerde çalışan modemler için mesh yapısında çalışmak mümkün değildir. Dolayısıyla farklı beam’lerde bulunan modemler birbirleri ile konuşamaz ve hub merkezine inmeden bir haberleşme sağlanamaz. Vsat Hub merkezi üzerinden yapılan haberleşmede ise gecikme çok yüksek olacaktır.

Özellikler
KU-Band
KA-Band
Frekans
12-18 Ghz
26-40 Ghz
Beam
Tek beam
Çoklu spot beam
Kapasite maliyeti
Yüksek
Düşük
Kullanılabilir bant genişliği
Düşük
Yüksek
Anten çapı
Büyük
Küçük
Atmosfer şartlarına duyarlılık
Düşük
Yüksek
Destekleyen uydu
Çok sayıda
Az sayıda
Gürültü etkisi
Düşük
Yüksek
Sinyal kalitesi
Yüksek
Düşük
Mesh yeteneği
Var
Kısıtlı

Uydu bağlantısı ihtiyacına yönelik bir teknoloji seçerek haberleşme sağlanmalıdır. Görüldüğü gibi her iki teknolojinin avantajlı ve dezavantajlı olduğu noktalar bulunmaktadır. Hava koşulları etkisinin daha az olduğu kesintisiz bir hizmet alınmak isteniyorsa Ku-band tercih edilmeli, yüksek band genişliğinde düşük maliyetli internet veya intranet bağlantısı ihtiyacı sözkonusu ise Ka-band tercih edilebilir. Karasal bağlantılara erişim mevcut ise uydu bağlantısı sadece yedek hat olarak tercih edilmelidir.

S.YILDIZ

Kaynaklar:
https://www.intelsatgeneral.com/blog/ka-band-or-ku-band-which-is-better-for-you/
https://www.viasat.com/sites/default/files/media/documents/mitigating_the_effect_of_weather_on_ka-band_high_capacity_satellites.pdf
http://www.newtec.eu/article/article/getting-the-most-out-of-high-throughput-satellites-hts
http://www.milsatmagazine.com/story.php?number=1777337481
https://id.wikipedia.org/wiki/Berkas:Satellite_frequency_bands.jpg
http://www.skywaretechnologies.com/news/item/84-ka-vs-ku-an-unbiased-review
http://www.satmagazine.com/story.php?number=1275052403

Network Performans Test Yazılımı iPerf

Network performansınızı ölçmek için kullanabileceğiniz iPerf yazılımı çok esnek trafik oluşturma seçenekleri ile karşımıza çıkıyor. TCP veya UDP istediğiniz porttan istediğiniz paket boyutunda istediğiniz kadar eş zamanlı session açarak trafik testti yapabiliyorsunuz. Raporlama özelliği çok gelişmiş değil fakat başka araçlar kullanarak ölçüm yapılabilir. Trafik tipini oluşturmada çok başarılı olan bu yazılım client-server ikilisi ile çalışmakta.

Ayrıntılı bilgiye bu linkten ulaşabilirsiniz.
https://iperf.fr/iperf-doc.php

Kullanılabilecek komut opsiyonları;

Usage: iperf [-s|-c host] [options]
       iperf [-h|--help] [-v|--version]

Server or Client:
  -p, --port      #         server port to listen on/connect to
  -f, --format    [kmgKMG]  format to report: Kbits, Mbits, KBytes, MBytes
  -i, --interval  #         seconds between periodic bandwidth reports
  -F, --file name           xmit/recv the specified file
  -A, --affinity n/n,m      set CPU affinity
  -B, --bind      <host>    bind to a specific interface
  -V, --verbose             more detailed output
  -J, --json                output in JSON format
  --logfile f               send output to a log file
  -d, --debug               emit debugging output
  -v, --version             show version information and quit
  -h, --help                show this message and quit
Server specific:
  -s, --server              run in server mode
  -D, --daemon              run the server as a daemon
  -I, --pidfile file        write PID file
  -1, --one-off             handle one client connection then exit
Client specific:
  -c, --client    <host>    run in client mode, connecting to <host>
  -u, --udp                 use UDP rather than TCP
  -b, --bandwidth #[KMG][/#] target bandwidth in bits/sec (0 for unlimited)
                            (default 1 Mbit/sec for UDP, unlimited for TCP)
                            (optional slash and packet count for burst mode)
  -t, --time      #         time in seconds to transmit for (default 10 secs)
  -n, --bytes     #[KMG]    number of bytes to transmit (instead of -t)
  -k, --blockcount #[KMG]   number of blocks (packets) to transmit (instead of -t or -n)
  -l, --len       #[KMG]    length of buffer to read or write
                            (default 128 KB for TCP, 8 KB for UDP)
  --cport         <port>    bind to a specific client port (TCP and UDP, default: ephemeral port)
  -P, --parallel  #         number of parallel client streams to run
  -R, --reverse             run in reverse mode (server sends, client receives)
  -w, --window    #[KMG]    set window size / socket buffer size
  -C, --congestion <algo>   set TCP congestion control algorithm (Linux and FreeBSD only)
  -M, --set-mss   #         set TCP/SCTP maximum segment size (MTU - 40 bytes)
  -N, --no-delay            set TCP/SCTP no delay, disabling Nagle's Algorithm
  -4, --version4            only use IPv4
  -6, --version6            only use IPv6
  -S, --tos N               set the IP 'type of service'
  -L, --flowlabel N         set the IPv6 flow label (only supported on Linux)
  -Z, --zerocopy            use a 'zero copy' method of sending data
  -O, --omit N              omit the first n seconds
  -T, --title str           prefix every output line with this string
  --get-server-output       get results from server
  --udp-counters-64bit      use 64-bit counters in UDP test packets
  --no-fq-socket-pacing     disable fair-queuing based socket pacing
                            (Linux only)

[KMG] indicates options that support a K/M/G suffix for kilo-, mega-, or giga-


Server tarafı için şu komutu kullanmalısınız.

iperf3 -s

Client tarafı için

iperf3 -c 172.32.0.1 -u -p 4500 -n 10  -R -V

şeklinde bir komut oluşturup kullanabilirsiniz.


VSAT Sistemleri

VSAT uydu sistemi uydu kapsama alanına bağlı olarak size uydu üzerinden veri haberleşme hizmetini paylaşımlı yapıda sunan maliyeti düşük sistemlerdir.

VSAT Network
Vsat uydu haberleşme sistemi ile aşağıdaki ihtiyaçları çok geniş kapsama alanlarında sağlayabilirsiniz.
  • Internet bağlantısı
  • Intranet ağı
  • Scada, Telemetri veri haberleşme uygulamaları
  • IP Multicast; Video, Radyo yayını
  • Karasal devre yedekleme
  • IP POS data taşıma
  • Voip ses taşıma
  • GSM Backhaul
  • Otomasyon
  • Mobil araç ile bağlantı
  • Bankacılık uygulamaları (POS, Bankamatik bağlantıları, Mobil bankacılık vb...)
  • Uzaktan Eğitim
  • Mağzacılık uygulamaları
Aşağıdaki uygulamalarda Vsat Uydu bağlantı sistemi karasal bağlantılar ile rekabet edebilecek fiyat avantajı sağlar.

Küçük bant genişliği gerektiren çoklu bağlantılar.
  • IP Pos, Bankamatik bağlantıları
  • Tank, Market otomasyonu
  • Uzaktan Sayaç okuma(elektrik, su, doğalgaz, buhar vb…)
  • RTU, M2M Haberleşmesi
  • Sismik veri toplama uygulamaları
  • Hava durumu istasyonu bağlantısı
  • Uzaktan sıvı seviye ölçümü
  • RF-ID, Barkod okuyucu uygulamaları
  • Scada, Telemetri networkleri
IP Multicast Yayın Uygulamaları
  • Video Yayını
  • Radyo Yayını
  • Veri Dağıtımı
Yedekleme Devreleri
  • Karasal devre yedekleme
  • GPRS devre yedekleme
Vsat Uydu Sistemi havuz kapasite ile çalışma özelliği çoklu bağlantılarda toplam kapasitenin paylaşımlı olarak kullanılmasına olanak sağlamaktadır. Bu durum bağlantılar için maliyet avantajı sağlar. 



Google