2 Eylül 2013 Pazartesi

varchar ve nvarchar arasındaki fark


Merhaba arkadaşlar bugün sizlere iş görüşmesinde bile karşıma çıkan bir konudan bahsetmek istiyorum. varchar ve nvarchar arasındaki fark nedir? Şimdi size kısa bir şekilde bu konuyu aktaracağım.


varchar sadece Unicode olmayan ASCII karakterlerleri tutmaktadır. ASCII karakterlerin tabloda tutulması için bir karakter için 1 byte'lık alan gerekmektedir.

nvarchar'da ise multilingual (çok dilli) Unicode karakterleri tutmaktadır.  Unicode karakterlerin hafızada tutulması için bir karakter için 2 byte'lık alan gerekmektedir. Eğer yazacağınız programda birden fazla dil desteği verecekseniz. nvarchar tipini kullanmanızı tavsiye ederim. 

Bu arada bu iki tipte güzel bir tarafta şudur; Char gibi bütün alanı kullanmaz sadece içerisinde kullandığı alan kadar kaplama yapar.

Örnek;

DECLARE @Charx Char(30) = 'Deneme', 
        @VarCharx VarChar(30) = 'Deneme',
        @NVarCharx NVarChar(30) = 'Deneme'

 SELECT DATALENGTH(@Charx) Charx, 
        DATALENGTH(@VarCharx) VarCharx,  
        DATALENGTH(@NVarCharx) NVarCharx



Çıktıdan da görebileceğiniz gibi char bütün alanı kullanmaktadır. varchar sadece 1 byte'lık alanı kullanmaktadır ve son olarak nvarchar ise multilingual olduğu için 2 byte'lık alan kaplamaktadır. Hangisini kullanmak size ve projenizin boyutuna bağlı herkese kolay gelsin...

İyi Çalışmalar
Aslı YILMAZ DEMİRBAŞ

14 Ağustos 2013 Çarşamba

Javascript setTimeout() objesi - Web sayfanızda sabit duran alan oluşturma

Bugün sizlere ufak ama çok işinize yarayacak bir javascript kodundan bahsedeceğim.

Web sayfanızı belli bir süre içinde farklı bir sayfaya yönlendirmek istiyorsanız bu kod çok işinize yarayacaktır. Yazımın sonunda sizin için ufak bir örnek hazırlamış olacağım. Şimdi örnek üzerinden giderek devam edelim. 


Web Design, Web Tasarım, .net yazılım uzmanı


HTML bir sayfa açtık ve bu sayfanın en üst kısmını web sayfamızın üstüne dayalı bir şekilde ayarlıyoruz. Tasarım yeteneğim olmamasına rağmen düzgün olması için uğraştım. :) Web sayfamın üst kısmına sabitlediğim alana bir <a href> objesi ile "Anasayfaya gitmek için tıklayınız" butonu koydum. Ekranın orta kısmını istediğiniz gibi dizayn edebilirsiniz. Web sitesi sahipleri bu alanı genelde reklam amaçlı kullanıyorlar. Reklam bir süre görüntülendikten sonra eğer kullanıcı reklama tıklamazsa web sayfanız ana sayfaya yönlendirilmesi için ufak bir javascript kodu yazacağız.

    <script language="javascript" type="text/javascript">
        setTimeout("AnasayfayaGit()", 15000);
        function AnasayfayaGit() {
            document.location.href = "http://www.asliyilmaz.com";
        }
    </script>

setTimeout'ta belirttiğimiz 15000 değeri 15 saniyeye denk gelmektedir. Siz kendinize uygun bir zaman dilimini gelirtebilirsiniz. Ufak ama işinize yarayabilir bir örnek olmuştur umarım.

Örnek uygulamayı buradan indirebilirsiniz.

Kolay Gelsin
Aslı YILMAZ DEMİRBAŞ

12 Ağustos 2013 Pazartesi

C# ile Progress Bar ve Timer Kullanımı

Merhaba arkadaşlar bugün sizlere c# ile progress bar kullanımından bahsedeceğim. Bununla ilgili bir örneği de yazımın sonunda bulabileceksiniz.

Benim yaptığım uygulamada progresbar ve timer öğeleri birlikte kullanılmaktadır. Öncelikle progresbar kullanımı için bir class oluşturuyorum. Bu class 3 degiskeni kapsıyor. Bunlar sıra ile;

showProgressBar = ProgressBar objesinin görünürlüğüyle oynayabilmek için eğer bu değeri "false" olarak verirsek progressbar çalışacaktır fakat görünürde olmayacaktır.

maxValue = ProgressBar objesinin ulaşacağı maksimum değeri bu değişkenle veriyoruz.

progressValue = ProgressBar objesinin anlık değerini bu değişkenden ayarlıyoruz. 

    
    class Degiskenler
    {

        private bool showProgress;

        public bool ShowProgress
        {
            get { return showProgress; }
            set { showProgress = value; }
        }
        private int maxValue;

        public int MaxValue
        {
            get { return maxValue; }
            set { maxValue = value; }
        }
        private int progressValue;

        public int ProgressValue
        {
            get { return progressValue; }
            set { progressValue = value; }
        }  

    }


Şimdi "Degiskenler" class'ından türetme yapıyoruz ve formun load işlemiyle birlikte değişkenimizin showprogress degiskenini true yapıyoruz ve maksimum değerini 50 olarak belirliyoruz. Sonra bu değerleri progressbar tanımlıyoruz. Sonrasında timer öğemizin start methodunu çalıştırıyoruz.

         Degiskenler d = new Degiskenler();
        private void Form1_Load(object sender, EventArgs e)
        {
            d.ShowProgress = true;
            d.MaxValue = 50;          
            ProgressBarim.Visible = d.ShowProgress;
            ProgressBarim.Maximum = d.MaxValue;
            progressTimer.Start();
        }


Şimdi sıra timer'ın tick metodunu doldurmada tick sizin belirlediğiniz aralıkla çalışacaktır. Bu aralığı timer'ın interval değerini değiştirerek yapabilirsiniz.

Interval = 1000 mili saniye ( 1 saniye yapar ).

Biz şimdilik sadece 100 mili saniye ile devam edelim işimize her 100 mili saniyede tick metodumuz çalışacaktır. Şimdi Tick metodumuzu yazalım:


        private void progressTimer_Tick(object sender, EventArgs e)
        {
          
            d.ProgressValue += 1;
            ProgressBarim.Value = d.ProgressValue;


            if (ProgressBarim.Maximum == ProgressBarim.Value)
            {
                d.ShowProgress = false;
                progressTimer.Enabled = false;
                ProgressBarim.Visible = d.ShowProgress;
                btnBlogger.Visible = btnFacebook.Visible = btnLinkedIn.Visible = btnTwitter.Visible = true;
            }
        }

Tick methodu her çalıştığında değişkenin değerini 1 arttırıyoruz ve maksimum değerine eşit hale gelene kadar bu döngü sürüyor.  İf döngüsünün içine girdikten sonra artık orada ne yapmak istediğiniz size kalmıştır. Bu arada timer'ınızın enable'ını false yapmayıda ihmal etmeyelim. Örneği aşağıdaki linkten indirebilirsiniz.


Herkese Kolay Gelsin

Aslı YILMAZ DEMİRBAŞ





9 Ağustos 2013 Cuma

ASP.Net Yazılım Geliştirme Süreci

Merhaba arkadaşlar bu aralar makale yazım işlemlerine ağırlık vermiş durumdayım. Şu anda aktif olarak geliştirmekte olduğum "Öğrenci Takip Sistemi" projemin sonlarına gelmiş bulunmaktayım. Testleri ile birlikte yaklaşık 1 ayı geçkin bir süremi alan program pazartesi günü dershane yetkilileri tarafından teste tabi tutulacaktır. Umarım sorunsuz bir şekilde bu sürecide geçirmiş olurum. Şimdi size kısaca ve kendi bilgim çerçevesinde bu süreçten biraz bahsetmek istiyorum. Öncelikle projeyi kağıt üzerinde şekillendirme yolunu seçtim. Önce tam anlamıyla projenin süreçlerini belirledim. Sonra bu doğrultuda ilk olarak MS SQL Server üzerinde Database oluşturma işlemlerini yaptım tabi ki hiç bir zaman ilk oluşturduğunu database eksiksiz olamıyor ilave field'lar ilerleyen süreçlerde proje geliştikçe database'imize dahil olacaktır. Ama temel database'i oluşturmada kağıt üzerinde şekillendirdiğimiz projenin bize oldukça faydası olacaktır.

Şimdi sıra yavaş yavaş kod yazma işlemine gelmektedir. Biz türk milletinin aceleciği nedeniyle hemen kod yazmaya başlarız. Ama vaktiniz kısıtlı değilse ve daha doğru bir yolla kod yazmak istiyorsanız ilk başta "
Pseudocode"(Sözde Kod) yazımı yapınız. Sözde kod yazımı hakkında bilgisi olmayan arkadaşlar internetten biraz araştırma yaparak genel bilgiye sahip olabilirler. Ama temel bir açıklama yaparak konuya devam etmek isterim.
-----------------------------------------

Sözde Kod : bilişim bilimleri alanında algoritmalar ve programlar oluşturulurken ve aktarılırken kullanılan, günlük konuşma diline benzer ve belli bir programlama dilinin detaylarından uzak anlatımlardır. Programın yapısının ve çalışma mantığının yüksek seviyeli bir biçimde, gerektiği yerde doğrudan doğal dil cümleleriyle, ama yine de bir program yapısı ve akışı içinde anlatılmasıdır. Böylelikle sözde kodu okuyan ya da yazan birisi, programlama dillerinin söz dizim detaylarına dikkat etmek zorunda kalmadan, programın ve algoritmanın çalışma mantığını düşünebilir.
Sözde kod örneği;
kayit degeri = databaseden gelen index değeri
for ( tüm kayitlar )
if ( siradaki kayit indexi < kayit degeri)
kayit degeri = siradaki kayit indexi
değerleri yükle (kayitdegeri)

Gerçek kod örneği;
int kayitdegeri = db.Ogrenciler.LastIndex();
for(i=0; i<db.Ogrenciler.Count(); i++)
{
     if( db.Ogrenciler[i].Code < kayitdegeri )
          kayitdegeri = db.Ogrenciler[i].Code
     DegerleriYukle(kayitdegeri);
}

-----------------------------------------
Yukarıda örneklendirerek bilgi vermeye çalıştım ben öğrenci takip sistemi programını yazarken işin aciliyeti nedeniyle belli yerlerinde pseudocode ( sözde kod ) yazarak yapmaya çalıştım. Tüm kodlamayı bu şekilde yapamasanız da karışık algoritmaları bu yöntemle yaparsanız. Daha doğru ve hızlı sonuçlara ulaşabileceğinizi düşünüyorum. 
Bundan sonraki süreç kodlamanın yazılması ve tabi ki ciddi bir test sürecidir. Biz yazılımcıların kod yazarken çok düz mantık kullandığımız için bazen çok gözle görülür hataları göremiyoruz. Örneğin; kullanıcı kaydet butonuna basıp sistemden çıkacak diye düşünüyoruz. Ama kullanıcı bizim gibi düşünmeyip yukarıdaki çarpı butonuna basıp çıktığında sistem hata verebiliyor. Bu yüzden test olayı her zaman için en can alıcı noktasıdır. Mümkünse testi sizden başka biri yapmalı bence tecrübe ile sabittir :D
Bu yazımda can sıkıntısından sizlere sahip olduğum bilgileri ve yazılım geliştirirken izlediğim yolları aktarmaya çalıştım. Umarım yardımcı olabilecek bir şeyler aktarabilmişimdir.
Kolay Gelsin
Aslı YILMAZ DEMİRBAŞ 




7 Ağustos 2013 Çarşamba

HTML sayfada javascript ile div print

Merhaba arkadaşlar,

Bugün ki konumuz html bir sayfa içerisinde sadece belli bir div'in javascript kodları ile print alınmasını sağlamak. Kendim böyle bir sorun yaşadığım için bulduğum bilgileri sizler için derledim. Ekteki dosyadan html olarak örneği inidrebilirsiniz. Öncelikle html sayfamıza bir adet div ekliyoruz ve div'imizin id'sini belirliyoruz. Biz şimdilik "printableDiv" diyelim.

        <div id="printableDiv">
             Merhaba Dünya...
        </div>

Şimdi javascript kodlarımızı yazalım; burda önemli nokta şudur. Browser'ınızın popup engelleyicisinin kapalı olması gerekmektedir. Çünkü aşağıda yaptığımız işlem doğrultusunda yukarıda yazmış olduğumuz div'in popup olarak farklı bir pencerede açıp o pencerenin yazma işlemini gerçekleştirme yoluna gideceğiz.


      <script language="javascript" type="text/javascript">
          function PrintEtBakalim(strid) {
              var prtContent = document.getElementById(strid);
              var WinPrint = window.open('', '', 'letf=0,top=0,toolbar=0,sta­tus=0,scrollbars=1');
              WinPrint.document.write(prtContent.innerHTML);
              WinPrint.document.close();
              WinPrint.focus();
              WinPrint.print();
          }
    </script>

Şimdi sıra butonumuzu hazırlamada bir adet image objesi koyuyoruz ve "onclick" eventini dolduruyoruz. Bu benim butonum artık siz nasıl bişey yaparsınız bilemem :D

<img alt="" src="images/printcurrentpage.png" onclick="PrintEtBakalim('printableDiv')" value="sdf" style="cursor: pointer"/>


Örnek programı buradan indirebilirsiniz.

Umarım yardımcı olabilmişimdir.

Kolay Gelsin
Aslı YILMAZ DEMİRBAŞ









28 Eylül 2012 Cuma

Android Geliştirme Ortamı Kurulumu

Merhaba Arkadaşlar,

Bu blogu açtım açmasınada aylardır tek bir satır bir şey yazamadım. Gerek iş yoğunluğu gerek isteksizlik şeklinde bir sürü bahanem olmuştur. Ama şimdi android denen güzide mobil uygulama geliştirebileceğimiz ortama yeni adım atarken öğrendiğim şeyleride sizlerle paylaşmaya başlayayım dedim. Bunların ilk aşaması olan android uygulama geliştirme ortamının kurulması aşaması ile işleme başlamak en doğrusu olacaktır diye düşünüyorum.


Önce kurulum için gerekli olan programlarımızı indirelim.

1. Java Development Kit ( JDK )
2. Android SDK
3. Eclipse

Yukarıdaki uygulamaları linklere tıklayıp indirebilirsiniz. Şimdi gelelim kurulum işlemlerine...

Öncelikle Java Development Kit'in hangi sayfasından hangi JDK yı indireceğimize bakalım. Aşağıdaki resimdede görüldüğü üzere şuanda en son versiyon olan 7u7 yi bilgisayarımıza indiriyoruz.


Yukarıdaki butona tıkladıktan sonra aşağıdaki ekran gelmektedir. Bu ekranda "Accept License Agreement"' seçeneğini seçerek lisansı onaylamanız gerekmektedir. Daha yine aşağıdaki resimde de görüldüğü gibi işletim sistemi kaç bit ise ona göre gerekli olan JDK' yı indirebilirsiniz.



Java JDK bilgisayarınıza indikten sonra sıra Android SDK'ya gelmektedir. Aşağıdaki resimdede görüldüğü üzere "Download the SDK for Windows" butonuna basmanız Android SDK'nın inmesi için yeterli olacaktır.



Ve son olarakta eclipse ide'nin yüklenmesi gerekmektedir. İsterseniz Classis 4.2'yi yükleyebilirsiniz. Fakat benim bu konudaki tercihim "Eclipse IDE for Java Developers" yönünde olacak. Yalnız hangisini programı seçerseniz seçin. Bilgisayarınıza kurabilmeniz için bilgisayarınızın işletim sisteminin bit'i ile uyumlu olanı indirmeniz gerekmektedir.



Bu programları indirdikten sonra sıra geldi yazılımların birbirleri ile enterasyonlarını sağlayarak android uygulama geliştirme ortamını kurmaya. Öncelikle sorunsuz bir şekilde Java JDK'yı bilgisayarımıza kuruyoruz. Bu ilk işlemin ardından Eclipse programımızı çalıştırıyoruz. Eclipse programı kurulum gerektirmeden çalıştırılabilen bir programdır. Dolayısıyla indirdiğimiz klasör içinden çıkan "eclipse.exe" ye çift tıklayarak programı çalıştırabiliriz. 

Eclipse'i çalıştırdıktan sonra "Help > Install New Software" seçeneğini tıklıyoruz. Açılan pencerede artık Android Plugin'ini yükleyebilmemiz için bize aşağıdaki gibi bir pencere gelmektedir. 



Açılan bu yeni pencerede yeni bir yazılım eklemek için "Add" butonuna tıklıyoruz ve karşımıza ekleme yapabilmemiz için aşağıdaki ekran gelmektedir. Önce bir isim belirleyelim sonrada adress kutusuna "https://dl-ssl.google.com/android/eclipse/" bağlantısını verelim.



Girmiş olduğumuz adreste mevcut olan yazılım paketlerini getiren bir ekran gelecek karşımıza bu ekranda var olan tüm yazılımları işaretleyip "Next" tuşuna basarak kurulum işlemine başlamasını sağlıyoruz.



Bu işlemlerden sonra artık Android'imiz yüklenmiş oluyor. Şimdi sırada Android SDK'mızı update etmeyi öğrenmeye ve AVD Device Manager aracılığı ile Sanal Android Makinası kurulumu yapacağız.



Android SDK Manager butonuna tıkladığımızda aşağıdaki Android Paketlerini yükleme ekranı açılmaktadır. Ekranda görüntülenen "Installed" checkbox'ının işaretini kaldırdığımızda yüklemesi yapılmamış paketler görüntülenecektir. Bu paketleri yükleyerek gerekli güncelleme işlemlerini yapabilirsiniz. Eğer Windows işletim sistemi ile uyumlu olmayan paketler mevcut ise onlarında yanlarında "Not compatible with Windows" notu belirtilmektedir.


Sıra geldi geliştirdiğimiz uygulamaları görebilmemizi sağlayacak sanal android uygulaması kurulumlarına bunun için yine Eclipse programının Windows Menüsünden "AVD Manager" butonunu seçmeye, karşımıza aşağıdaki gibi bir ekran gelmektedir. 


Eğer Android ile bir uygulama geliştirdiyseniz ve bu uygulamayı çalıştırmak istiyorsanız. Uygulamayı çalıştırabilmeniz için işte bu sanal makinalara ihtiyacınız vardır. Örneğin; Android 2.1 ile bir uygulama geliştirdiniz. Bu uygulamayı çalıştırabilmeniz için "Android 2.1" sanal makinasına ihtiyacımız vardır.
Eğer programı çalıştırdığınızda 2.1 sanal makinası sisteminizde mevcut değilse eclipse en yakın sanal makinayı     seçerek programınızı çalıştırır. Şimdi birlikte yeni bir sanal makina eklemesi yapalım. Yukarıdaki resimdeki "New" butonuna basalım ve işlemlerimize başlayalım.


Açılan ekranda "Name" alanına sanal makinamızın adını verelim ben genelde sanal makinayı hangi Android versiyonu için açıyorsam isimlendirmeyide o şekilde yapmayı seçiyorum. 
Diğer bir alan ise "Target" alanı bu alanda da Android versiyonunu seçiyoruz. Sıradaki alanımız  "Size" alanı burada SD kartınızın kaç MB alan kullanacağını belirtiyoruz. Gerekli durumlarda "Skin" alanından ekran boyutlandırmasını yapabilirsiniz. "Create AVD" butonuna bastıktan sonra artık yeni bir Sanal Android Makinamız oluşmuş olacaktır. Uygulamalarınızı rahat rahat geliştirebilirsiniz. Oldu da sorun yaşadınız bana mesaj atabilirsiniz. Bende sizlere yardımcı olmaya çalışırım arkadaşlar hepinize kolay gelsin.