Gelecek Bilişimde

Ahmet Serdar Çavdar

Swift ile Programlama - Değişkenler ve Sabitler

Apple'ın yeni gözdesi Swift ile blog yazılarıma geri dönüyorum, ilk konu ise Değişkenler ve Sabitler. Uzun uzun anlatmak yerine konular hakkında kısa notlar olarak aktarmayı düşündüğüm yazılarımı geri bildirimlere göre genişletmek istiyorum.

Program esnasında bir defa tanımlayacağımız ve bir daha değişmeyecek değerler için sabitleri kullanıyoruz. Örneğin kimsenin ad-soyad bilgisi değişmez, mahkeme kararıyla değiştirebilirsiniz belki ama bu bizim konumuz değil :) Üstelik istisnalar kaideyi kuvvetlendirir.

  1. let ad = "ABC"
  2. let soyad = "XYZ"
  3. ad = "QWE"
  4. /* Eğer yeni bir değer atamaya çalışırsak
  5. Cannot assign to "let" value "ad"
  6. şeklinde bir hata alırız.*/

Değişkenlere ise program içinden yeni değerler atayabiliriz.

  1. var yasadigiSehir = "İstanbul"
  2. yasadigiSehir = "Bursa"

Birden çok değişkeni ya da sabiti aynı satırda tanımlamak da mümkün.

  1. let ad = "ABC", soyad = "XYZ"
  2. var yasadigiSehir = "İstanbul", kilo = 35.5, ehliyetiVarmi = false, yas = 12

Bâzı durumlarda değişkenlerimize bir ilk değer atamak istemeyebiliriz. Böyle durumlarda değişkenin adından sonra iki nokta üst üste koyarak değişken tipini belirtmemiz gerekir.

Ayrıca, Swift virgüllü ifadelerde eğer değişken tipi belirtilmediyse her zaman Double olarak ayarlar. Bu nedenle Float olarak tanımlamak istediğiniz bir değişkenin de tipini belirtmelisiniz.

  1. var yasadigiSehir : String, kilo : Double, ehliyetiVarmi : Bool, yas : Int

Aynı tiptedki değişkenleri aşağıdaki şekilde tek satırda ve tek seferde tanımlayabiliriz.

  1. var yasadigiSehir, calistigiFirma, arabaModeli : String

Son olarak farkettiyseniz bir çok programlama dilinin aksine satır sonlarına noktalı virgül ( ; ) koymadık, çünkü Swift'de böyle bir zorunluluğunuz yok. Ancak aynı satırda iki farklı ifade kullanacaksanız birbirinden ayırmak için kullanabilirsiniz. Örneğin

  1. var mesaj = "Merhaba Dünya" ; println(mesaj)

Yukarıdaki kod mesaj adındaki bir değişken tanımlayıp ona "Merhaba Dünya" stringini atıyor ve hemen arkasından aynı satır içerisinde bu değikenimizi ekrana yazıyor.

Son olarak açıklama satırlarından bahsedeyim. İki farklı şekilde kullanabileceğimiz açıklamalar şöyle:

1. Her satırda çift slaş yaparak açıklamalarımızı yazabileceğimiz gibi

  1. //Bu şekilde yer satırda çift slash koyarak açıklama ekleyebiliriz

2. tek slaş ve yıldız ile başlayıp istediğimiz kadar satıra açıklama yazdıktan sonra yıldız ve tek slaş ile açıklama kısmını kapatabiliriz.

  1. /* Buraya
  2. istediğiniz
  3. kadar
  4. açıklama
  5. ekleyebilirsiniz
  6. */

Bu yazı için sanırım bu kadar yeterli. Herkese kolay gelsin :)

Windows 8 Hyper-V ve VMWare Workstation 9 birlikte çalıştırma

Çok ama çok uzun bir aradan sonra ilk fırsatta karşılaştığım bir problem ve çözümünden hızlıca bahsedeceğim. Bu yazıyı okuduğunuza göre sizinde başınıza geldiği gibi Hyper-V yüklü bir Windows 8 işletim sistemi üzerine VMWare kurmaya çalıştığınızda ilginç bir hata alıyorsunuz;

“Error: This product may not be installed on a computer that has Microsoft HyperV installed”

1

Kurulumu gerçekleştirmek için yapılması gerekenlerse sırasıyla aşağıdaki gibi;

1- Windows Tuşuna bir kes basın ve “turn windows features” yazın.

2- Yeniden “Windows” + “W” tuşlarına aynı anda basın. Bu şekilde Setting kısmında “Turn Windows features on or off” kısmını bulmuş olursunuz.

2

 

3- “Turn Windows features on or off” kısmına tıklayın.

4- Açılan pencereden Hyper-V özelliğini bularak yanındaki tiki kaldırın ve “OK” düğmesine basarak işlemi onaylayın.

3

 

5- Bilgisayarınızı restart etmeniz gerektiğini söyleyen ekran çıktığında yine onaylayarak bilgisayarınızın yeniden başlatılmasını bekleyin.

4

 

6- Sonrasında VMWare’ı kurabilirsiniz.

5

 

7- Kurulum bittikten sonra yeniden “Turn Windows features on or off” kısmına girerek Hyper'-V’yi işaretleyerek işlemimze devam ediyoruz.

6

 

Arkasından yeniden restart etmemizi söyleyen ekran geliyor.

7

Ve bu şekilde kurulumlarımızı tamamlamış oluyoruz. Aynı anda hem Hyper-V’yi hem de VMWare’ı kullanabiliriz. Ancak önemli bir hatırlatma yapmayı da ihmal etmeyelim. VMWare’da 64 bit işletim sistemlerini kullanmayı düşünüyorsanız Hyper-V’yi devreye almayın, sadece kullanacağınız zaman 7 işlemi tekrarlayın ve sonrasında VMWare kullanacaksanız tekrar off edin.

Eğer böyle yapmaz ve VMWare’da 64 Bit bir işletim sistemi kurmaya çalışırsanız aşağıdaki gibi bir hatayla karşılaşırsınız.

“64-bit guest operating systems are not supported by this host and will not run.”

8

 

İyi çalışmalar dilerim.

Fine Grained Password Policy ile Farklı Parola Ayarları

Şimdi hep beraber hayal edelim;

Güvenlik konusunda paronayaklaştık. Network’ümüzdeki kullanıcıların şifrelerini her 10 günde bir değiştirmelerini istiyoruz. Üstelik daha önceki kullandıkları 24 şifreyi de yeniden kullanamasınlar. Şifrelerini 2 kez yanlış girerlerse 1 saat boyuncada hesapları kilitli kalsın. Bu arada kolay şifre de yok tabi, şifreler karışık olsun ki tahmin edilemesin. İçinde küçük harf, büyük harf, sayı ve özel karakterler de olsun, en az da 10 karakter olursa bu iş tamamdır :) (Şekil-1 ve Şekil-2)

Gropu Policy Management Editor 
Şekil-1

 Gropu Policy Management Editor
Şekil-2

Ayarlarımızı güzelce yaptık, hemen uyguladık. Kullanıcılar biraz mırın kırın etti ama olsun. Bazen güvenliğin öneminden bahsederek, bazen duymamazlıkdan gelerek tüm şikayetleri bertaraf etmeyi de başardık. Ta ki patron duruma el koyana kadar.

Patron kararlı, öyle karışık şifreler falan istemiyor. Anlattınız anlattınız ancak 90 günde bir çocuklarının isimlerini dönüşümlü olarak kullanmaya ikna ettiniz, onun dışında Nuh diyor Peygamber demiyor.

Kullanıcılardan gelen şikayetlere o kadar göğüs gerdiniz, neredeyse hepsini durumun gerekliliğine ikna ettiniz ve şimdi tüm çabalar boşa mı gidecek? Tabi ki hayır…

Microsoft bu ya da buna benzer durumlar için network yöneticilerini düşünmüş ve Windows Server 2008 ile birlikte “Fine Grained Password Policy”yi hizmetimize sunmuş. ADSI (Active Directory Service Interfaces) Edit üzerinden ulaşabileceğimiz ayarlarla kişi ya da gruba özel password policy’ler yaratabiliriz. Tek şartımız Domain Functional Level’in Windows Server 2008 olması. Yani Active Directory kurulumu esnasında Set Domain Functional Level ekranında Windows Server 2008’i seçerek network’ünüzdeki tüm Domian Controller’ların Server 2008 olduğunu belirtmiş olmalısınız.

Yukarıdaki örneğin çok abartılı olduğunu kabul ediyorum. Tam tersi şekilde tüm ayarlarınızın kurulumdaki varsayılan ayarlar olduğunu varsayarsak (Şekil-3), network’ünüzdeki bir gruba ya da bazı kullanıcılara (örn: finans bölümü) normalden daha sık şifre değiştirmelerini gerektiren özel bir password policy de ayarlayabilirsiniz.

 Gropu Policy Management Editor
Şekil-3

İlk örneğimize bağlı kalarak konuyu anlatmaya devam edelim:

Patron’un Özlem, Ege ve Ezgi isminde üç çocuğu var ve 90 gün aralıklarla bu üç ismi şifre olarak kullanmak istiyor.

Şimdi gelin hemen ayarlara geçelim, konunun sonunda anlatımla ilgili videoyu bulabilirsiniz.

Start –> Administrative Tools – > ADSI Edit üzerinden (Şekil-4) ya da Start –> Run –> adsiedit.msc komutuyla ADSI Edit pencersini açalım.

 ADSI Edit
Şekil-4

Açılan pencerenin solundaki ADSI Edit’e sağ tıklayıp “Connect to” kısmına tıkladığımızda yeni bir pencere açılır.(Şekil-5) Üzerinde çalıştığımız bilgisayarda işlem yapacağımız için hiç bir değişiklik yapmadan “OK” düğmesine bastığımızda gerekli bağlantı kurulur. (Şekil-6)

ADSI Edit 
Şekil-5

 ADSI Edit
Şekil-6

Açılan menüde Şekil-7’deki gibi alt menülerde ilerleyerek CN=Systems’in altında CN=Password Settings Container kısmına gelelim.

Sağ taraftaki alana sağ tıklayarak sırasıyla New->Object… kısımlarına tıklayalım.

ADSI Edit 
Şekil-7

Şimdi açılan pencerede sırasıyla aşağıda vereceğim değerleri girelim ve Next’e tıklayalım.

  1. cn: PatronaOzel – Policy’mize bir isim veriyoruz.
  2. msDS-PasswordSettingsPrecedence: 1 – Eklediğimiz tüm ayarlar içindeki önceliği belirttiğimiz integer (sayısal) alan.
  3. msDS-PasswordReversibleEncryptionEnabled: false – Encryption kullanmayacağımız için false diyoruz. Eğer isteseydik true değeri yazmamız gerekirdi. Girdiğimiz değerden de anlaşılacağı gibi bu alana Boolean(Mantıksal) bir değer girmeliyiz.
  4. msDS-PasswordHistoryLenght: 2 – daha önce kullanılan kaç şifrenin hatırlanarak yeniden kullanmamıza izin vermemesi gerektiğini integer olarak belirttiğimiz alan. Toplam 3 isim kullanacağımıza göre n-1=2 şifre gerisine kadar hatırlamalı.
  5. msDS-PasswordComplexityEnabled: false – Belirleyeceğimiz şifrenin basit mi yoksa karışık mı olacağını boolean olarak belirteceğimiz alan. Şifre kısmında sadece isim kullanacağımız için bu alana da false değerini verdik.
  6. msDS-MinimumPasswordLenght: 3 – En küçük şifre uzunluğu alanı. En kısa isim Ege olduğu için bu alana 3 değerini girdik.
  7. msDS-MinimumPasswordAge: 00:00:01:00 – En küçük şifre yaşı. Bir şifre değişimi işleminden sonra en çabuk ne zaman yeniden şifre değiştirebiliriz sorusunun cevabını Duration (Süre) olarak belirlediğimiz kısım. Formatı gün:saat:dakika:saniye şeklinde olmalı. Biz bu kısma bir dakika olacak şekilde bir değer girdik.
  8. msDS-MaximumPasswordAge: 90:00:00:00 – En büyük şifre yaşı. Şifrenin ne kadar bir süre sonra değiştirilmek zorunda olduğunu belirttik. Formattan da anlaşılabileceği gibi bu süre doksan gün.
  9. msDS-LockoutThreshold: 20 – Burada kaç şifreden sonra hesabımızın kitleneceğini belirttik.
  10. msDS-LockoutObservationWindow: 00:00:05:00 – Yanlış girilen şifrelerin sayısını tutan sayacın ne kadar süre sonra kendisini sıfırlayacağını süre olarak ayarladık.
  11. msDS-LockoutDuration: 00:00:05:00- Burada ise kitlenen bir hesabın kendi kendine ne kadar bir süre sonra yeniden kullanılabilir hale geldiğiyle ilgili değeri girdik.

En son ekranda Finish demeden önce bir bilgiyi aktarmalıyım. Yaptığımız bu policy’yi hangi kişi ya da gruplara uygulayacağımızı eklemenin iki yolu var:

Birinci yol:

En son ekranda Finish demeden önce More Attributes’e tıklayalım.

 ADSI Edit
Şekil-8

Açılan pencerede “Select a property to view” seçeneğinde msDS-PSOApliesTo seçeneğini seçelim.

ADSI Edit 
Şekil-9

Edit Attribute kısmı için ise Actvie Directory Users and Computers ‘da View menüsünden Advanced Features’ı seçtikten sonra Patron kullanıcısına gelerek sağ tıklayı Properties’e gelelim.

 Active Directory Users and Computers
Şekil-10

Attribute Editor sekmesinden distinguishedName kısmına çıft tıklayarak ya da View’e tıklayarak String Attribute editor penceresini açalım ve içeriğini kopyalayalım.

Active Directory Users and Computers 
Şekil-11

Active Directory Users and Computers 
Şekil-12

Sonrasında ADSI Edit’e gelerek ilgili alana yapıştıralım ve Add düğmesine tıklayıp arkasından OK’e tıklayalım ve Finish diyerek işlemi bitirelim.

 ADSI Edit
Şekil-13

İkinci yol ise:

Finish dedikten sonra CN=PatronaOzel’e sağ tıklayıp Properties’e gelelim.

 ADSI Edit
Şekil-14

ms-DS-PSOAppliesTo kısmına çift tıklayarak ya da Edit’e tıklayarak açılan pencereden Add Windows Account butonuna tıklayalım.

Açılan pencereden Patron kullanıcısını seçip OK-OK-OK yapalım ve kullanıcıyı eklemiş olalım.

 ADSI Edit
Şekil-15

Bu iki yöntemden birini kullanarak Patron kullanıcısını ekledikten sonra gelin hep beraber ayarlarımız aktif olmuş mu deneyelim.

Vista’ya patron kullanıcısı ile logon olduktan sonra Ctrl+Alt+Del’e basarak açılan ekrandan Change a Password diyelim ve efe kelimesini yeni şifre olarak ayarlamaya çalışalım.

   Windows Vista
Şekil-16

 Windows Vista
Şekil-17

Denedik ve şifreyi ege olarak ayarlayabildik. Diğer tüm kullanıcılar Default Group Policy’deki ayarlara uyarken patron kullanıcımız artık bizim ayarladığımız policy’ye göre hareket edebiliyor.

Şimdi gelin bir de bu işlemleri video olarak görelim ve yazımızı bitirelim :)

MCT Plus© – TTT – Eğitimcinin Eğitimi’ni Tamamladık

28-30 Nisan tarihleri arasında Sinerji Eğitim ve Danışmanlık firmasının düzenlediği eğitimi tamamladık. Sayın Ebru Polat eğitmenliğinde gerçekleştirdiğimiz bu etkinlikle bir kez daha anladık ki, insanın kendini geliştirmesinin sonu yok.

Çok yoğun, çok keyifli ve inanılmaz derecede faydalı bir eğitim oldu. Tanıştığım yeni arkadaşlarımın hepsi birbirinden kaliteli insanlardı. Hem konularına hakim, hem de enerjik, eğlenceli, keyifli hocalar. Böyle bir eğitimi almış olmaktan, eğitimin içeriği yanında onlarla tanışmam açısından da çok mutluyum.

Eski arşivimden bulduğum bir videoyu paylaştıktan sonra devam edeyim :)

Gelelim eğitime :)

İlk gün kısa bir tanışmanın ardından sunumlara geçtik. Herkes 4’er dakikalık sunumlarının videoya çekilmesinden sonra, başladık teker teker izleyip yorumlamaya. Farkına vardığımız ya da varmadığımız bir sürü pozitif ya da geliştirilmeye açık yönlerimizi tespit ettik ve günü bitirdik.

2. Gün yoğun bir tempoyla başladı ve akşama kadar neredeyse hiç hız kesmedi. Pratik olarak doğru yaptığımız ama neden öyle yaptığımızdan çok ta emin olmadığımız bir çok konunun yanında, tamamen yanlış yaptığımız bir çok noktanında farkına vararak günü tamamladık.

Ve 3 gün, eğitim aynı süratle devam etti. Öğleden sonra ise yeniden 4’er dakiklaık sunumlarımızı gerçekleştirdik. Ebru hanımın da katkılarıyla bu kadar kısa bir sürede bu kadar gelşme olduğunu farkedince çoğumuz şaşkınlığımızı saklayamadık.

Sadece eğitmenlik anlamında değil, sosyal hayatımızda da kullanabileceğimiz bir sürü donemiz oldu elimizde diye düşünüyorum.

Sanırım son yaptığım sunumun dosyasını da buraya koysam iyi olacak. Barnes and Noble firmasının çıkardığı nook eReader tanıtım sunumu. Ürünü eğitime başladığımız gün internet üzerinden sipariş verdim . Eğitimin 2. günü kantinde konusu açılınca sanırım biraz fazla şevkle özelliklerinden bahsedince aklıma geldi ve son gün sunumunda nook’u tanıtmaya karar verdim. Aldığım geri bildirimlere göre de iyi ki öyle yapmışım. Ürünün elime ulaşmasını sabırsızlıkla bekliyorum. Geldiği gibi incelemesini burada yayınlıyor olacağım.

SQL Server 2008 Veri Tipleri - 1

Serverdaki kayıtlar arttıkça tasarım esnasında veri tipini doğru kullanmış olmanın önemi kendini gösterir. Veritabanının hazırlanması esnasında dikkat edilmesi gereken konuların en başında gelen veri tipi seçimi, o kolonda tutulacak her türlü veri için yeterli olmalı ancak bunu yaparken de kullanılabilecek en küçük alana karşılık gelmeli. Yani marjinal faydayı sağlayacak tipi kullanmalıyız.

SQL Server 2008 veri tiplerini 7 başlık altında inceleyebiliriz.

  • Karakter Veri Tipleri ( Character Data Types )
  • Kesin Sayısal Veri Tipleri ( Exact Numeric Data Types )
  • Tahmini Sayısal Veri Tipleri ( Approximate Numeric Data Types )
  • Parasal Veri Tipleri ( Monetary Data Types )
  • Tarih ve Zaman Veri Tipleri ( Date and Time Data Types )
  • İkili Veri Tipleri ( Binary Data Types )
  • Özel Amaçlı Veri Tipleri ( Special Purpose Data Types )

1. Karakter Veri Tipleri

En çok kullanılan veri tiplerinden biri olan karakter veri tiplerini metinsel ifadeleri tutmak için kullanırız. İçerecekleri karakter sayısını parantez içinde parametre olarak alırlar. Genelde “n” ve “var” öneklerinden birini ya da ikisini birden alırlar.

“n” ve “var” öneklerini tek tek anlatmak yerine yeri gelince değinmek daha iyi anlamamızı sağlayacağı için hemen veri tiplerini anlatmaya başlayalım.

char (p) : Sabit uzunlukda karakter dizisi alabilir. En fazla 8.000 karakter (8.000 byte) alabilir. İçine alacağı verinin uzunluğu tam belli olduğu durumlarda kullanılır. Örneğin TC Kimlik numaralarının uzunluğu 11 karakterdir ve değişmez. Dolayısıyla bu alan için char(11) veri tipi tanımlayabiliriz. Girdiğimiz değer 11 karakterin altında da olsa kalan kısmı boşluk karakteriyle doldurarak 11 karaktere tamamlar. Gerekmediği durumlarda kullanmamız durumunda daha sonra girdiğimiz veriyi işleyebilmek için trim etmek gibi ekstra işlemler yapmamıza neden olacaktır.

nchar(p) : “n” öneki unicode karakter seti kullandığını gösterir. Bunun anlamı daha geniş bir karakter aralığına sahip olmakla birlikte char veri tipine göre kapladığı alanın 2 katı olduğudur. ANSI standartlarında bir karakter 1 byte yer kaplar, ancak unicode karakterler için bu yeterli değildir ve 2 byte yer kaplar. Dolayısı ile en fazla 4.000 karakter (8.000 byte) tutabilir. Örneğin farklı dillerde destek verecekseniz (hem japonca, hem arapça vs) kullanılması uygun olacaktır.

varchar(p) : “var” öneki gireceğimiz verinin uzunluğunun değişken olduğu durumlarda kullanacağımız karakter veri tipidir. Yani “kolonda tutualacak her bir veri p sayıda oalcaktır” diyemeyeceğimiz ya da demeyeceğimiz durumlarda kullanılabilir. “var” öneki variable (değişken) kelimesinin kısaltılmasından gelir. varchar veri tipi en fazla 8.000 karakter (8.000 byte) içerebilir. Örneğin “serdar” kelimesi char(10) tipinde tutulursa sabit 10 karakterlik alan ayrılacağı için 10 bytle’lık yer kaplar, oysa varchar(10) tanımlı bir kolonda 6 harften oluştuğu için 6 bytelık yer kaplayacaktır. Kişi isimleri, e-posta adresi, doğumyeri, vs verileri bu veri tipinde saklayabiliriz.

varchar(MAX) : SQL Server 2005 ile hayatımıza giren veri tiplerinden bir tanesi varchar(MAX) ve (MAX) parametresi. Aslında text ile aynı olmasına karşın üstünlük olarak içinde tuttuğu verinin uzunluğuna göre boyutunun değişmesi ve mesela iki kolondaki verinin eşitliğinin sorgulanması gibi özellikler sağlaması sayılabilir. En fazla 2.147.483.647 karakter (2 gigabyte) alabilir.

nvarchar(p) : Değişken uzunluktaki unicode veriler için kullanılır. En fazla 4.000 karakter (8.000 byte) tutabilir. Yukarıdaki örnekle devam edersek, unicode olmasından dolayı her bir karakterin 2 bytelık alan işgal etmesinden dolayı “serdar” kelimesi için nvarchar(10) veri tipi 6*2 byte =12 byte yer kaplayacaktır.

nvarchar(MAX) : ntext’e alternatif olarak yine SQL Server 2005 ile kullanılmaya başlanan nvarchar(MAX), değişken uzunluktaki unicode veriler için kullanılır. En fazla 1.073.741.823 karakter (2 gigabyte) tutabilir.

text : Değişken uzunluktaki veriler için kullanılır. Alacağı karakter en fazla 2.147.483.647 (2 gigabyte)’dir. varchar(MAX)’ın gelmesiyle kullanımı yavaş yavaş azalmaktadır.

ntext : En fazla 1.073.741.823 karakter ( 2 gigabyte) alabilir. Değişken uzunluktaki unicode veriler için kullanılır.

text ve ntext varchar(MAX) ve nvarchar(MAX)’ın gelmesiyle beraber misyonunu tamamlamış görünüyor. Her ne kadar geriye dönük uyumluluk açısından baktığımızda çok doğru gözükmese de Microsoft SQL Server’ın ileriki versiyonlarında text, ntext ve image veri tiplerini kaldıracağını duyurmuş durumda.

Bu yazımda SQL Server 2008 veri tiplerine hızlı bir giriş yapmış olduk. Birdahaki bölümlerde konuyu irdelemeye devam edeceğiz.