11 Eylül 2015 Cuma

Visual Studio 2013 eklentisi (qt addin) ile yeni qt projesi oluşturma

Visual studio 2013 üzerinden menüde FILE->New->Project dediğimiz zaman eğer qt ve eklenti kurulumunu önceki yazıdaki gibi düzgün yaptıysak aşağıdaki gibi bir ekranla karşılaşmalıyız :
Gördüğümüz üzere yeni proje ekranına Qt5 projects isimli bir bölüm eklenmiş. Biz örnek amaçlı en üstteki Qt application kısmını seçip altta "Name" yazan yere herhangi bir isim yazalım. Ben denemeqt yazdım.
Ardından ekrana Qt proje sihirbazı gelecek,Burada şimdilik Next Next Finish diyebiliriz.Biraz bekledikten sonra yeni proje oluşturulmuş şekilde aşağıdaki gibi açılacaktır.


Source dosyalarımız bir adet main.cpp ve qt dosyalarımız.Ayrıca kullanıcı arayüzünün değiştirebildiği bir adet ui dosyası da Form Files kısmının altında duruyor.
Şimdi sıra geldi projemizi derlemeye.
Öncelikle benim kullandığım programlama ortamı 64 bit için olduğundan yukarıda seçili derleme seçeneklerinin 64 bit seçili olduğundan emin oldum :

Ardından 64 bit için projemizin bizim qt eklentisini kullanıp kullanmadığını kontrol edelim.
Önce projemizi solution explorerden seçip Yukarıdaki menüden QT5 -> Qt project settings i seçelim ve versiyonun bizim yüklediğimiz qt versiyonu olduğundan emin olalım, değilse veya boşsa bu versiyona değiştirelim ve Ok'a basalım :

Artık projemizi build edebiliriz, derlerken eğer qt proje ayarı doğru ayarlanmadıysa çeşitli hatalar verebilir. Ancak qt addinimiz doğru ayarlandıysa sorun çıkmayacaktır. Projemizi derledik ve karşımıza şöyle bir çıktı geldi :


Buradaki mocing uicing gibi kavramlar qt'ye özel kavramlar ve daha sonra açıklamaya çalışacağım.
Exe dosyası meydana geldi artık programı çalıştırabiliriz.
Programı f5 e basarak çalıştırdığımda "Qt5Cored.dll eksik - missing" hatası aldım,
Bunun nedeni ise bu dll'in exe ile aynı yerde olmaması, ancak visual studio ile programı çalıştırırken bu gerekli dllleri nerelerde araması gerektiğini belirtebiliriz .
Projeye sağ tıklayıp Properties->Debugging sekmesinde Environmentte $(QTDIR)\bin' in sonuna bir slaş eklediğimde sorun çözüldü :


Artık f5 e basarak programı çalıştırdığımızda karşımıza boş bir ekran gelmesi lazım:

Bu ekranı ve kodu değiştirme işlemlerine daha sonraki yazılarda bakalım

Visual Studio 2013 eklentisi ile Qt kullanılması ve kurulması (Qt Addin)

Qt, C++ ile ana olarak gelişmiş arayüzler geliştirilmesini sağlayan ve başka diğer özellikleriyle programlada ihtiyaç duyulacak gereksinimleri kolaylaştıran, C++ diliyle yazılmış çok büyük ve kapsamlı bir frameworktür.
Qt denildiğinde genel olarak akla arayüzler gelir ancak Qt diğer programlama gereksinimlerini de karşılayan, kendine has IDE ve düzenleyicileri bulunan ve birçok geliştirme ortamını destekleyen bir uygulama çatısıdır.
C++ programlamacılara bir tavsiye olarak mutlaka bu frameworkü kullanmalarını öneririm.
Visual studio geliştirme ortamı da QT'nin entegre edilebileceği ve QT programlama yapılabilecek bir geliştirme ortamıdır. QT için özel yapılan Visual studio eklentileriyle (qt addin), Qt programlama ortamını Visual Studio ortamıyla birleştirebilirsiniz. Bu entegre özelliklerden daha sonraki yazılarım da bahsedeceğim.Bu yazıda ise Visual studio 2013 ortamına Qt'nin nasıl eklenip, çalışan bir qt projesi oluşturmaktan bahsedeceğim.

Öncelikle elimizde çalışan bir Visual Studio 2013 olduğundan emin olalım (aşağıda gösterilen adımlar uyumlu diğer visual studio ve qt addin versiyonlarıyla benzer şekilde tekrarlanabilir)

İlk olarak Qt'nin indirme sayfasından ücretsiz olarak Qt ve Qt addin kurulumlarını indiriyoruz (şu an için qt.io sitesinde):
Qt 5.5.0 : http://download.qt.io/official_releases/qt/5.5/5.5.0/  bu sayfada aşağıdaki resimde işaretlenmiş olan qt versiyonunu indirin, ben windowsda visual studio ile 64 bit programlama yapacağımdan qt'nin bu versiyonunu indirdim, değişik platformlar için değişik versiyonları yine o sayfada mevcut. Bu indirdiğimiz exe dosyasına tıklayalım ve kurulama başlayalım. Önceden qt hesabı istemiyordu, şu an bir qt hesabı oluşturmanızı istiyor kurulum ilk olarak.Ardından qt'yi kuracağı yeri soruyor default olarak C:\Qt\Qt5.5.0 adresi bunu değiştirmenize gerek yok. Ardından kurulumu ileri diyerek tamamlayın.Kurulumdan sonra Launch Qt Creator dememize gerek yok çünkü biz Visual studio kullanacağız, Qt creator ise qt'nin kendisinin bütünleşik bir geliştirme ortamı.


İkinci olarak http://download.qt.io/official_releases/vsaddin/ adresinden aşağıda resimde gösterilmiş olan en son visual studio qt eklentisini indirin ve kurulumu tamamlayın,
Ardından Visual studio ortamınızı yeniden başlatın. Addin kurulumunu doğru yapmanız durumunda üst menüde QT5 menüsünün belirdiğini göreceksiniz.
Buradaki adımımız ise yüklenen qt eklentisine ilk olarak yüklediğimiz qt versiyonunun adresini göstermek. Yukarıdaki QT5 yazan menüye tıklatın "Qt options"a tıklatın. Gelen küçük pencereden sağ taraftan "Add" deyin, Çıkan küçük pencereden "Path" kısmına tıklayıp, Qt'yi yüklediğiniz adresi seçin.(en dipteki msvc klasörüne kadar)


Belirtilen klasörü seçince aşağıdaki gibi bir ekran gelecek ve Ok diyebiliriz artık.

Artık qt eklentisini visual studio'ya ekledik ve kullanıma hazır qt projeleri oluşturabiliriz.




















26 Haziran 2015 Cuma

Visual Studio 2015 C++ 64 bit için Edit and Continue özelliğini duyurdu

Visual Studio 2013'ün C++ 64 bit programlar için Edit and Continue özelliğini desteklememesi, 64 bit C++ programlama yapan geliştiriciler için bir takım sorunlara neden oluyor.
Bunu sorun yapan kullanıcılar Microsoft User Voice sayfasında bir konu açtılar ve 64 bitte C++ için Edit and Continue özelliğinin eklenmesini istediler.
Visual Studio ekibi yeni yaptığı bir açıklamayla VS 2015 ’e C++ x64 için Edit and Continue özelliğinin eklendiğini ancak halen deneme aşamasında olduğundan çeşitli sorunlarla karsilasilabilecegimizi belirtti. Belirtilen User Voice sayfası ve vs ekibinin cevabı :http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/4126415-x64-edit-and-continue-for-c?tracking_code=8c1d06040f68d7c5b07e9cb5267f9345
Yapılan açıklama :
http://blogs.msdn.com/b/visualstudioalm/archive/2015/04/29/c-enc-in-visual-studio-2015.aspx

13 Haziran 2015 Cumartesi

Windows 8.1 sistem yansıması yedekleme

Arama bölümünden Dosya geçmişi ile dosyaların yedek kopyalarını kaydete tıklanır
Sol alt köşeden sistem yansıması kaydet seçilir
harici bir diskin takıl olduğundan emin olunup bu disk seçilir
yedeklenecek diskler seçilir (seçili olanların kalması tavsiye edilir, diğer disklerde veriniz varsa onu da seçebilirsiniz)
windows yedekleme harddiskin ana klasöründe ayrı bir klasör açıp dosyaları buna yazacaktır. ilerki bir tarihte yeniden yedekleme yapmak istediğinizde bu dosyaları algılayıp üzerine yeni yedekleri yazacaktır

30 Mayıs 2015 Cumartesi

Visual Studio 2013 yüklemesi sertifika zinciri hatası

Visual Studio 2013'un eski sürümlerinden birini veya bir sürümünü uzun zamandır güncelleme almayan bir bilgisayara yüklediğimizde aşağıdaki fotoya benzer hatalar alabiliriz ve bu Visual studio 2013 kullanımını olumsuz etkiler (windows.h bulunamadı hatası, windowssdkdir bulunamadı hatası,dxgidebug bulunamadı hatası vs.)
Windows Software Development Kit Sertifika zinciri güvenilen bir kök yetkili kullanılarak oluşturulamaz.

Bu sorunun kaynağı güncelleme yapılmadığı için kök sertifikalarının yenilenmemiş olması ve Visual Studio 2013'ün önemli ayarlarının yüklenememesi. Bu da VS 2013'ü kullanılamaz hale getirebilir.
Zaten Visual Studio 2013 kurulurken Minimum gereksinim olarak Windows 7 service pack 1'i istemekte.
Çözüm olarak Windowsa gerekli güncellemeleri indirerek kurmak var. Bu güncellemeler kök sertifikalarını yenileyen güncellemeler ve birkaç diğer güncelleme. Aşağıdaki linklerde 64 bit için olan güncellemeler var. 32 bit için olanlar ise güncelleme numarası girilerek aratılabilir.
https://www.microsoft.com/en-us/download/details.aspx?id=26609 (rootsup.exe)
https://www.microsoft.com/en-us/download/details.aspx?id=45633
https://www.microsoft.com/tr-tr/download/details.aspx?id=36805
https://www.microsoft.com/tr-tr/download/details.aspx?id=30566
https://www.microsoft.com/tr-tr/download/details.aspx?id=36334

Burada yüklenmesi gereken en önemli güncelleme ilk sırada olan.
Eğer Visual studio'yu kurduysanız,bu güncellemeleri kurduktan sonra denetim masası programlardan visual studio'ya sag tıklayıp repair(onar) diyebilirsiniz.
Eğer halen kurmadıysanız önce bu güncellemeleri yüklemeniz gerekiyor. Daha iyi bir performans için Visual studio 2013'un update 4'ünü kurmanız da tavsiye edilir.

19 Mart 2014 Çarşamba

C int ve unsigned int farkı ve dönüşümü

Evet arkadaşlar signed ve unsigned arasındaki en önemli fark signed yani normal int negatif değerleri de tutabilir, ancak unsigned int sadece 0 ve pozitif sayıları tutabilir. Bir önemli fark da onların hafıza da gösterimi ve gösterebilecekleri değer aralıkları.
Mesela sizin makinenizin word boyutu 8 bit olsun, yani şu anki 32 bit ve 64 bit'lik makinelerimizin yerini 8 bitlik mini makinemiz alsın. O zaman sizin makinenizin gösterebileceği en büyük sayı bit gösterimi olarak : 1111 1111 olur değil mi? Yani 2^8 - 1 = 255 (aritmetik hesapla 2^0*1 + 2^1*1 + 2^2*1 + ... ) . O zaman bizim makinemiz 32 bit olduğunda tutabileceği en büyük sayı kaç olur : 2^32 - 1 yani 32 tane 1 yan yana. Tutabileceği sayı derken genel olarak bir int'in hafızadaki boyutu bir pointer yani word boyutuna eşit olur. Yani sizin bilgisayarınız 32 bit ise programlama dilinden diline ve derleyiciden derleyiciye değişir ancak genelde bir int'i tutmak için 4 byte ayrılır. 4 bayt ise 32 bittir. ( sizeof(int) fonksiyonuyla bit int'in kaç byte olarak yorumlandığını görebilirsiniz. )
Bu 32 tane 1'i yan yana koyup ulaşabileceğiniz en büyük rakam unsigned int olarak tanımlayabileceğimiz bir sayıdır. Dikkat ederseniz bütün bitleri kullandık ama bu sayının negatif mi pozitif mi olduğunu nasıl anlayacağız. Böyle bütün bitleri sayının değerini hesaplamak için kullandığımız gösterime unsigned yani işaretsiz int denir. Örneğin bir int'i göstermek için 4 byte yani 32 bit kullanan C'nin gösterebileceği en büyük rakam : 4294967295 yani 2^32 -  1 yani 32 tane birin ikilik düzende aritmetik toplamına eşittir. Bu düzende gösterebileceğimiz en küçük rakam 0'dır yani 32 tane 0 biti. En büyük rakamı zaten söyledik. Ancak negatif sayıları gösteremeyiz. Siz :

unsigned int a = -45 ;

dediğiniz zaman sizin hiç istemediğiniz işler yapar C. Buna değineceğiz.
Peki negatif sayıları nasıl bir bit gösterimiyle gösteririz? Burada two's complement denen ve çoğu sistem tarafından kullanılan bir uygulama var. Örneğin sayımız 8 bitli 8 bitin 8'ini de o sayının değerini hesaplamak yerine en soldaki biti işaretini belirlemek için kullanırız. En soldaki bit eğer 0 ise bu sayı pozitif en soldaki bit 1 ise bu sayı negatiftir. Peki örneğin sayımız :

10001111

bu sayının değerini nasıl hesaplarız? Normalde unsigned olsaydı direk (2^0*1 + 2^1*1 + 2^2*1 + 2^3*1 + 2^4*0 + 2^5*0 + 2^6*0 + 2^7*1 ) yani 143 olarak hesaplardık. Ancak burada durum farklı. Bu sayı bir signed int yani normal int yani negatif sayıları da gösterebilmesi lazım yani ilk bit işaret biti olacak. O zaman işlemimiz şu şekilde :

 10001111  = 2^0*1 + 2^1*1 + 2^2*1 + 2^3*1 + 2^4*0 + 2^5*0 + 2^6*0  -  2^7*1
                    = 15 - 128 = -113

yani son bite kadar normal toplama işlemimizi yaparken en soldaki biti yani 2^7*1'i işlemimize çıkarma olarak ekliyoruz.  Bilgisayarımız int tutmak için 32 bit ayırıyorsa o zaman ilk 31 biti aritmetik olarak toplayıp 32. biti çıkarırız aynı olay. Signed integer yani normal int' in tutabileceği en küçük değer o zaman eğer 32 bit ise bir int :
10000000000....000000 yani 0+0+0+...+0+0+0 - 2^31
yani -2^31
tutabileceği en büyük değer ise tabiki baştaki bitin 0 olması lazım pozitif olması için :
01111111111111111.....1111   (32 bit var yani)
2^0*1 + 2^1*1 + .....  + 2^30*1   -  2^31*0 (bu değer zaten 0)
ilk 31 terimin toplamı formülümüzden  2^0*1 + 2^1*1 + .....  + 2^30*1 = 2^31 - 1 .
Yani büyüklük olarak unsigned int bize int'e karşı avantaj sağlıyor ancak unsigned int negatif sayıları gösteremiyor.

Peki biz bir yanlış yaptık gittik unsigned int'i int'e eşitledik veya tam tersi :

Bunu yaparken C hata vermez ve sayıların bit gösterimlerini değiştirmez. Bit gösterimleri aynı kaldığı için çok büyük problemlerle karşı karşıya kalabiliriz. Mesela sizeof(int)'i 4 olan yani bit int'i göstermek için 4 byte kullanan C dilimizde  :

unsigned u = 4294967295u; // unsigned olarak gösterebilecek max sayi
int i  = (int) u ; // u'ya casting yaptik
printf("u esittir %u ve i esittir %d ",u,i);  // %u unsigned sayilar icin

yazıp çalıştırırsak :

dersek "u esittir 4294967295 ve i esittir -1" gibi bir sonuç alırız. Amaaa biz i'yi 4294967295'e eşitlemiştik nasıl -1  olduu. Bunun nedeni 4294967295u sayisi 32 tane 1  bitinden oluşuyor ancak unsigned. Unsigned sayinin değerinin bitlerden nasıl hesaplandığından bahsettim. Biz i'yi u'ya esitlediğimizde i'nin bit dizilimi u'ya eşit oluyor yani i'de de 32 tane bir var ancak signed yani two's complement gösterimiyle int. Onun değerini hesaplarken o zaman :
2^0*1 + 2^1*1 + ..... + 2^29*1+ 2^30*1 - 2^31
2^30'a kadar olan değerlerin toplamı 2^31-1 bildiğimiz üzere. 2^31-1-2^31 = -1.
Yani bütün bitleri 1 olan bir integer aslında -1'dir :)
Bunu değişik sayılar üzerinde de deniyebilirsiniz bit dizilimleri aynı olmasına rağmen sayıların türlerinin farklı olmasından dolayı (unsigned int ve int) değerlerinin hesaplanma yönteminin farklı olduğunu görebiliriz.
Ben sadece unsigned int ve int' den bahsettim ancak aynı olay short unsigned short vs. de de geçerli.

Peki

unsigned u1 = -45 ;    
printf("u1 esittir %d",u1);

dediğimiz zaman ne olur? Burada unsigned int negatif sayıları gösteremeyeceğinden u1'in değerini çok büyük bir sayı olarak gösterir -45 ile alakası olmayan bu da bit dizilimlerinin değişmemesi ve unsigned int ve int'de farklı yorumlanmasından kaynaklanmaktadır.
Kısaca algoritma şu şekildedir :
Eğer int'ten unsigned int e çevirme yapıyorsak çevirdiğimiz sayıya x diyelim :
Eğer x 0'dan küçükse yani unsigned sayının gösteremeyeceği bir sayıysa : x'in değerine 2^w değeri eklenir burada w int'in gösterildiği bit sayısıdır bizim örneğimizde 32. Yani yukarında u1'in değeri -45+ 2^32. Eğer x 0'dan büyük ise değeri değişmez.
Eğer unsigned int'ten int'e çevirme yapıyorsak çevirdiğimiz sayıya x diyelim :
Eğer x 2^(w-1)'den küçükse yani int'in gösterebileceği en büyük sayıdan küçükse, x'in değeri değişmez. Eğer x max int'ten büyükse o zaman x'den 2^w'yi çıkartırız ve yeni x in değeri x-2^w olur.
Bunu kendimiz int'in ve unsigned int'in gösterebileceği en büyük ve en küçük sayıları deneyerek kendimiz de görebiliriz. Kendimiz de hesaplayabiliriz unutmamamız gereken nokta bit dizilimlerinin aynı kaldığı.










24 Mart 2012 Cumartesi

Windows yüklemesi sonrası ubuntu

Eveet windowsumuzu yükledik ancak bu seferde bilgisayarın yükleme menüsünde ubuntu yok yada direk windows geliyor bize. Bu durum ubuntu yüklemesinin ardından başka bir bölüme windows yüklendiğinde ortaya çıkan bir gelişme. Bunun nedeni windowsun ubuntu'da bulunan grup yükleyicisini silmesi veya zarar vermesi. Bunu engellemek için neler yapabiliriz : 
öncelikle özetini geçeceğim şu linkteki önerileri takip edebilir : https://help.ubuntu.com/community/RecoveringUbuntuAfterInstallingWindows
Adım adım anlatalım : 
1.ubuntu cd'mizi veya önceden hazırladığımız ubuntu yükleme usb'sini takıyoruz (nasıl ubuntu yükleme usb'si hazırlanır bir önceki yazıda mevcut)
2.Bilgisayar ilk açıldığındaki bios menusunden gerekli tuşlara basarak ne taktıysak ondan yükleme yapmasını söylüyoruz . (cd taktıysak yükleme (boot) menüsüne girip cd'yi mesela usb için aynı şekilde)
3. Yüklüyoruz gelen menüden Boot-repair'i seçiyoruz ve buradan da recomended repair'i seçiyoruz
4. gerekli işlemler bittikten sonra bilgisayarı yeniden başlatıyoruz ve grub yükleme menüsü bize hem ubuntu hem de windowsu gösteriyor olması lazım eğer bu olmazsa bilgisayar açıldıktan sonra sol shift tuşuna basarsak windows ve ubuntu arasında gidip gelebiliriz.
a