Sayfalar

Programlama Dilleri Hakkında Ücretsiz Kitaplar

İnternet üzerindeki yasal ve ücretsiz kitaplara ulaşmak biraz zaman alıcı. Bu nedenle benim de yararlandığım bazı kaynakları sizinle paylaşmak istiyorum. Eski olduklarının bilincinde olmakla birlikte yararlanabilir özellikte oldukları konusunda ısrarcıyım. Başka kaynaklara eriştikçe buraya ekleyeceğim.

Türkçe Kaynaklar:
İngilizce Kaynaklar:

Neden Dev C++ Kullanmamalıyız?

wxDev-C++ Logo
wxDev-C++'nın Logosu


Bildiğiniz gibi Dev-C++, Bloodshed Software firmasının Windows işletim sistemi için ürettiği "Bütünleşik Geliştirme Ortamı (IDE)". Gerek birçok kitapta kurulumu-kullanımı geçmesi, gerek derleyici seti ile birlikte kurulabilmesi ve belki de en önemlisi ücretsiz olması nedeniyle oldukça yaygın kullanılan bu yazılımın son güncellenme tarihi oldukça eski. Kısacası artık güncelleme ya da hata düzeltme işlemi yapılmamakta. IDE ile birlikte gelen MinGW sürümünün güncellenmesi elle yapılabilir fakat bu zaman kaybı anlamına geliyor.

Form tasarımı
wxDev-C++'nin yerleşik aracı ile form tasarımı

Benim sistemimde de sorun çıkaran Dev-C++ yazılımı yerine aynı proje üzerinden çatallanmış wxDev-C++, çok platformlu wxWidgets görsel kullanıcı arayüzü (GUI) kütüphanesinin yanında görsel form tasarım aracı da barındırıyor. Yine ücretsiz olarak dağıtılan bu ide yakın sayılabilecek bir zamanda (Ekim 2011) güncellenmiş ve güncellenmeye devam edeceği söyleniyor. Dev-C++'nin bütün özelliklerini kapsayan uygulama aynı zamanda Microsoft'a ait C++ derleyicisinin 2003 ve 2005 sürümlerini kullanmayı da sağlıyor.

wxDev-C++'nin kurulum dosyasına http://wxdsgn.sourceforge.net/?q=node/4 adresinden ulaşabilirsiniz.

Bugün yılın kaçıncı günü? - 2 -

Bir önceki örnek kod "artık yılı" hesaba katmadan işlem yapıyor, bu nedenle şubat ayının 29 çektiği tarih için hatalı sonuç üretiyordu. Bu sorunu çözmek için bir işlev ekledim ve sizlere sunuyorum.

Bugün yılın kaçıncı günü?

Girilen ay ve günden hesapla yılın kaçıncı günü olduğunu hesaplayan C programının kodları aşağıdadır. Uygulama tabi ki yıla göre hesaplama yapmıyor (şubat hiçbir zaman 29 çekmiyor).

C++ ile toplam, ortalama ve varyans hesaplama

C++ ile girilen sayının tabanını değiştirme

Aşağıdaki kod parçası girilen sayıyı onluk tabana çevirir. ASCII oyunları ve assert makrosunu görmek için incelemekte fayda var.

C++ ve Winsock ile WAN IP adresini öğrenme

Not: Tekrar gözden geçirilecek girdi.
Çoğu zaman WAN IP'mizi (internete bağlandığımız ip) öğrenmede zorluk yaşarız. Windows'un ağ soketleri ve karşı sunucuya yüklediğimiz ufak bir betik yardımıyla internete eriştiğimiz ip adresini öğrenebiliriz. Burada kendi bilgisayarımdaki sunucuyu kullandım. Sunucum istekleri 85 nolu porttan dinlemekte ve php betiğine tarayıcı üzerinden http://localhost:85/IPAdres/index.php ile erişilebilir durumda. Görüleceği üzere bağlandığım karşı bilgisayar ve yolladığım HTTP başlığı da buna göre ayarlı. Siz kendi şartlarınıza göre ayarlayabilirsiniz. İstemci için C++ kodları: PHP destekli bir sunucuya yolladığımız php betiği:

C dili ve Windows ortamında Türkçe karakterler içeren klasör ve dosyalara erişme

Başlıkta sözü edilen işlemleri yapmak göründüğü kadar kolay olmasa gerek. Dilimize özgü karakterler içeren klasör ve dosyaları aşağıdaki kod ile listeleyebiliriz.
Not: Kaynak kodu dosyasını UTF8 (BOM'suz) olarak kaydetmeyi unutmayınız.

C++ ile sözcükteki harflerin frekansını bulan uygulama

Bu kod parçasında yine "düzgün uygulama yazma" alıştırması yapıyoruz. Bu bakımdan ufak hileler değil de kodların okunabilirliği, standarda uyum ve yeniden kullanılabilirlik üzerinde durdum. Çok gerekli olmasa da iterator kullanımını görmek açısından uygun birkaç satır içeriyor.

C++ ile Palindrom Tümce Tespiti

Uzun zamandır C++ ile ilgilenmiyordum. Gerek bilgimi tazelemek gerekse düzgün kod yazma alıştırması yapmak için aşağıdaki kodu yazdım. STL algoritmalarından reverse_copy'nin nasıl kullanılacağı açıkça görülmekte.

Sony Xperia Neo V ile zorunlu ICS deneyimi

Birkaç gün önce (01.06.2012) cep telefonumda, kapanınca açılmama sorunu olduğunu keşfettim. Cihaz olması gerektiği gibi çalışıyor, kapatma rutinleri başarıyla gerçekleşiyor fakat kapandıktan sonra tekrar açmak için bataryayı söküp, takmak gerekiyordu  (Sony Ericsson'un bu modelinde reset tuşu mevcut değil). Sorunu Sony Mobile forumlarında ve internetin geri kalanında araştırdım. Benimle aynı sıkıntıyı yaşayan kimseye ulaşamadım. Geri kalan her şey düzgün olduğundan suçu yazılıma atıp, yazılım güncellemesi yapmaya karar verdim. ICS'ye geçişimin nedeni de bu yanlış düşünceydi.


İlk seçeneğim Sony'nin PC Companion yazılımıydı. ICS güncellemesini (hiçbir bilgimin silinmeyeceğine güvenerek) bu yazılımla yaptım. Sonuç hüsrandı. Elime oldukça yavaş bir cep telefonu geçtiği gibi sorun da çözülmemişti. Ne yazık ki Sony'nin kendi uyarılarından sonra ICS güncellemesi yapmayı da düşünmüyordum fakat GB sürümüne dönmek için -garanti kapsamı içinde kalacağım- herhangi bir yol yoktu. SEUS (Sony Ericsson Update Services) uygulamasıyla GB sürümüne dönebileceğimi varsayarak gerekli yazılımı kurdum ve işlemlere devam ettim. Bu sefer belirgin ölçüde hızlanma olmasına rağmen performans kabul edilebilirlikten uzaktı. Üstüne üstlük sorunun çözüldüğü de kesin değildi. Paşa paşa donanım ile ilgili bir arıza yaşadığımı kabul etmek zorunda kaldım. Cihaz servise gitti ve yenisiyle değiştirildi (servis bununla ilgili açıklama yapmadı,  artık elimde kutusundakinden farklı IMEI'ye sahip bir telefon var). ...ve evet servisin garanti belgesi yanında faturayı da ısrarla istemesine anlam veremedim.

Artık sorun çözüldüğüne göre yapmam gereken telefonu hızlandırmaktı. Bunun için yapabileceğimiz şeyler kısıtlı. İhtiyacınız olmayan uygulamaları kaldırmak ise ilk gerçekleştirmeniz gereken eylem. Daha sonra harici bellek kartını formatlamayı deneyebilirsiniz. Bu ikisini yapıp telefonu tekrar başlattığımda ise elimde GB'ye yakın hızda çalışan (fakat daha gelişmiş) bir telefon vardı.

Yeni güncelleme ile şimdiye kadar gözlemlediğim durumları sıralamakta yarar görüyorum:

1. Yüz tanıma ile kilit açma gelmiş, kullanmayı planlamıyorum.
2. Medya Aktarım Modu (MTP) açık olmasına rağmen bilgisayara bağladığımızda yanlış bilgi mesajı gelmekte. Çok önemli değil, çünkü olması gerektiği gibi çalışıyor.
3. FB haricindeki gereksiz olduğunu düşündüğüm yazılımlar rom'dan çıkarılmış. Bu durum hoşuma gitti.
4. Cihazdaki gecikmeler farkedilir ölçüde arttı.
5. GB iken bir türlü gerçekleşmeyen Picasa eşitleme gerçekleşiyor gibi duruyor (Picasa'nın ne olduğunu bile bildiğim söylenemez fakat eşitleme sırasında kırmızı ünlem işareti artık yok:))
6. Sözcük düzeltmesi geliştirilmiş, dilimiz daha iyi destekleniyor.
7. Kamera ile ilgili değişiklikler yapılmış (sorunlu olduğu söyleniyor) fakat henüz bir hata ile karşılaşmadım. Büyük ihtimalle daha gelişmiş ayarlar yapmaya çalışırken karşılacağım.
8. SE forumlarında okuduğum kendini yeniden başlatma sorunu ile bir sefer karşılaştım.
9. Pil ömrü gözle görülür ölçüde düştü (GB iken kullandığımın iki katı kullanıyor olduğum da bir gerçek)
10. GB sürümünde iken kolaylıkla ekran görüntüsünü alabiliyordunuz. Artık kapatma tuşu + ses kısma düğmesine aynı anda basıp 2-3 saniye bekleyerek alabiliyorsunuz.
11. Çok beğenerek kullandığım timescape ve xperia gallery uygulamaları performans sorunlarından dolayı kullanılmayacak hale geldi.
12. Telefon ilk kez açıldığında oldukça yavaş kullanılır hale gelmekte.
13. Wi-fi bağlantısı kopma sorunları yaşamaya başladım.
14. Telefonun hiçbir yerinde Ericsson ibaresi geçmiyor.

Sonuç olarak Sony değerli birkaç puanı kaybetmiş gözüküyor. Cep yakmayan fiyatı ve özellikleri ile şık olduğunu düşündüğüm bu cihaz, hatalı politikanın kurbanı olmuş. Bunun yanında, üreticinin müşteri memnuniyeti ve şikayetlerini dinlemekte gönülsüz olduğu hissine kapıldım. Sorunlu olduğu açık bir ROM'u sırf daha önceden söz verdim diye kullanıcılara dayatmak pek akıllıca değil. En azından kullanıcının eski sürüme dönmesi için fırsat verilmesi gerekiyordu ki bu garanti dışı kalmadan telefonu servise götürmekle mümkün. Kısaca bu telefona sahip olan kişilerin GB'den memnun oldukları süre boyunca güncellemeyi akıllarına getirmemesini önermekteyim ta ki sorunlardan arındırılmış bir ICS rom'u piyasaya dağıtılana kadar.