29 Eylül 2021 Çarşamba

Python Class ve Metodları

Merhaba,

Basit bir örnek ile Python Class ve Class Metodlarının nasıl oluşturulduğunu görelim.

Alttaki örneğimizde Car isimli bir class oluşturacağız. Bu class ın içinde __init__ ile tanımlanan metod bu class üzerinden oluşturulacak her obje örneğini tanımlanan özellikler ile başlatacaktır. Yani oluşturulan her Car objesi doornum, color, motor ve model özellikleri ile başlatılacaktır. Bu özellikleri self.değişken şeklinde __init__ içinde tanımlıyoruz. Bu özellikler oluşturulan her Car objesinde farklı verilebilir. Sınıf özelliği ise oluşturulan her objede aynı olacaktır. Bunu ise type değişkeni ile sınıf içinde tanımlıyoruz. 

class Car:
    type = "Personal"

    def __init__(self, doornum, color, motor, model):
        self.doornum = doornum
        self.color = color
        self.motor = motor
        self.model = model

Artık bir Car objesi oluşturabiliriz.

carx = Car(4,"white",1600,"Opel Astra")

Hatta oluşturulan carx objesinin özelliklerini ekrana bastırabiliriz.

print(carx.model)
print(carx.type)

Buraya kadar bir sınıfa özellik tanımlayarak obje oluşturmayı gördük. Peki bu objenin bazı aksiyonlar almasını istersen ne yapacağız ? Bu durumda metodlar devreye girer. Sınıf içinde tanımlanacak metodlar o sınıfa çeşitli aksiyon alma yeteneği katarlar. Alttaki şekilde ekleyebiliriz.

def printInfo(self):
    print(f"Model is : {self.model} , Color is : {self.color}")


def radio(self, action):
    '''
    Radio Open/Close Codes
    '''
    print(f"{self.model} > Radio {action}")
Yukarıdaki metodlardan birincisi Car üzerinden türetilen objenin bazı özelliklerini ekrana basar.

İkincisi ise aracın radyosunu açar yada kapatır. 

Tam bir örneklemeyle kodlarsak :

class Car:
    type = "Personal"

    def __init__(self, doornum, color, motor, model):
        self.doornum = doornum
        self.color = color
        self.motor = motor
        self.model = model

    def printInfo(self):
        print(f"Model is : {self.model} , Color is : {self.color}")

    def radio(self, action):
        '''
        Radio Open/Close Codes
        '''
        print(f"{self.model} > Radio {action}")

carx = Car(4,"white",1600,"Opel Astra")
print(carx.model)
print(carx.type)
carx.printInfo()
carx.radio("OPEN")
print()
carm = Car(2,"red",2000,"Renault Clio")
print(carm.model)
print(carm.type)
carm.printInfo()
carm.radio("CLOSE")

Kodu çalıştırdığımızda çıktımız alttaki şekilde olacaktır.







Teşekkürler,

Cem Selmanoğulları

23 Eylül 2021 Perşembe

Xamarin Forms (C#) ile IOS&Android uygulamalarımız için LDAP entegrasyonu

Merhaba,

Bugün Xamarin Forms (C#) ile IOS&Android uygulamalarımız için LDAP entegrasyonu üzerine bir örnek paylaşmak istiyorum. Öncelikle ldap entegrasyonu için alttaki Nuget paketini yüklemeniz gerekiyor.





Novell.Directory.Ldap.NETStandard nuget paketi ile ldap otantikasyon ve ldap arama işlemlerini rahatlıkla yapabiliriz.

Öncelikle bir LdapConnection yaratıyoruz. (.Connect) ile url ve portu verilen ldap sunucusuna bağlanıyoruz. (.Bind) ile bağlantı üzerinden ldap üzerinde arama yapmaya yetkili bir kullanıcı ile otantikasyonu yapıyoruz. Sonrasında  vereceğimiz Ldap SearchBase içinde belirlediğimiz attrs ("givenname", "cn" , "uid" , "mail" , "address") değerlerini getirecek şekilde aratmamızı yapıyoruz. Bağlantımızda Search i çağırdığımızda bunu LdapSearchResults olacak şekilde tanımlıyoruz. Sonrasında ise bu LdapSearchResults içinde gezinerek istediğimiz bilgileri ekrana bastırıyoruz.


void ldap_check() {
    using (var cn = new LdapConnection())
    {
        cn.Connect("192.168.121.120", 389); //636 ssl
        try
        {
            //cn.SecureSocketLayer = true;
            cn.Bind("cn=admin,dc=localdomain,dc=local", "password");
            Console.WriteLine(" ::: LDAP BAŞARILI  ::: " + cn.ToString() + " ::: ");

            string[] attrs = { "givenname", "cn" , "uid" , "mail" , "address"};
            string SearchBase = "uid=selman,ou=People,dc=localdomain,dc=local";
            LdapSearchResults lsc = (LdapSearchResults)cn.Search(SearchBase,
            LdapConnection.ScopeBase , "(objectClass=*)", attrs, false);

            while (lsc.HasMore())
            {
                LdapEntry nextEntry = null;
                try
                {
                    nextEntry = lsc.Next();
                    Console.WriteLine(">>> " + nextEntry.ToString());
                }
                catch (LdapException e)
                {
                    throw e;
                }
                break;
            }
        }
        catch (LdapException f)
        {
            Console.WriteLine(" LDAP HATA : " + f.ResultCode.ToString());
            return;
        }
        catch (Exception f)
        {
            Console.WriteLine(" LDAP HATA : " + f.Message);
            return;
        }
    }
}


Çıktımız alttaki gibi olacaktır :

::: LDAP BAŞARILI  :::  Novell.Directory.Ldap.LdapConnection

LdapEntry: uid=selman,ou=People,dc=localdomain,dc=local; 

LdapAttributeSet:   LdapAttribute: {type='givenName', value='cem'} 

                                LdapAttribute: {type='uid', value='selman'} 

                                LdapAttribute: {type='cn', value='cemselman'} 

                                LdapAttribute: {type='mail', value='cemmailselman@gmail.com'}

Thread finished:  #11

 

Teşekkürler,

Cem Selmanoğulları


7 Eylül 2021 Salı

Django projesini varolan veritabanı ve tablolar ile birlikte çalıştırmak

Merhaba,

Yeni bir Django projesi oluşturdunuz. Veritabanını bağladınız fakat veritabanında birçok tablo var. Bu tabloları da kullanabilmek ve Django models.py dosyasına dahil etmek istiyorsunuz. İşte bu durumda python yönetim komutlarından inspectdb oldukça işimize yarıyor. Alttaki komutu çalıştırıp yeni bir models.py dosyası oluşturuyoruz. Bu dosya halihazırda veritabanında bulunan tablolar üzerinden oluşturuluyor. Sonrasında bu models.py dosyasını manuel olarak düzenleyip gerçek models.py dosyamıza taşıyoruz. Makemigration ve migrate işlemlerini yaparak işlemi tamamlıyoruz.



$ python manage.py inspectdb > models.py

Dilerseniz geçici models.py oluşturmadan direkt inspectdb analiz çıktısını ekrana da bastırabilirsiniz.



$ python manage.py inspectdb


Teşekkürler,

Cem Selmanoğulları