Arayı fazla açmadan hemen ikinci makaleyi yazmak istedim. Üniversitede aldığım derste yaptığım “Sigaraya Son”  projesinde kullanıcı sigarayı bıraktığı tarihi girecekti ve program kullanıcının kaç gündür sigara içmediÄŸini hesaplayacaktı. Aslında yapılması gereken bugünün tarihi ile kullanıcının girdiÄŸi tarihi çıkartmaktı fakat bu iÅŸ .Net’de olduÄŸu kadar kolay deÄŸildi.

Bu fonksiyon, çağırıldığı tarihten kullanıcının girdiği tarihi çıkartıyor. Fonksiyonda önemli olan üç noktayı anlatmak istiyorum;
Mavi renkli kısım tarihin hangi format da olduÄŸunu söylüyorsunuz. Tarihleri veri tabanında “string” olarak tutmam bana, farklı ülkelerin tarih/saat formatında kullanılabilmesi için kolaylık saÄŸladı. Bazı ülkeler Ay-Gün-Yıl ÅŸeklinde kullanabilir fakat ben veri tabanına Gün-Ay-Yıl ÅŸeklinde yazdığım için ve bunu da SimpleDateFormat sınıfında belirttiÄŸim için ekstra’dan bir iÅŸlem yapmama gerek kalmadı.
Tarihin farkını almak için .Net’de ki gibi DateTime türünden iki sınıfı çıkartmak yetmiyor. Öncelikle Date sınıfı türünden bir deÄŸiÅŸken tanımlıyorsunuz ve bu deÄŸiÅŸkenin “long” geri dönüş tipinde olan .getTime() fonksiyonunu çağırıp, çıkartma iÅŸlemini yapıyorsunuz. Elde ettiÄŸiniz sonucu yine Date sınıfının yapıcı fonksiyonuna parametre olarak geçiyorsunuz. Artık elinizde iki tarihin farkını tutan bir nesneniz var.
Son olarak kırmızı kare içine aldığım kısım kaç gündür içilmediÄŸini hesapladığım algoritma. Java’da iki tarih arasında ki farkı hesapladığınız da 1.Ocak.1970 tarihinin üzerine ekliyor. Örnek verecek olursak; iki tarih arasında ki fark 1 yıl 2 ay 3 gün ise fark sınıfı; 4 Mart 1971 tarihini tutacaktır. Bunun için doÄŸru sonucu elde etmem için kırmızı kare içindeki ufak algoritmayı yazdım.
Projenizde tarih ile ilgili bir iÅŸlem yapıyorsanız bu kod parçacığı mutlaka iÅŸinize yarayacaktır. İyi çalışmalar…
Uzun bir arayı Android yazısı ile sonlandıracağım aklıma gelmezdi. Åžahsen Android’den pek fazla haz etmesem de her iki cihaz’dan birinin Android’li olacağını görmezden gelmek de olmaz. Bu sene üniversitede açılan Android dersi için yaptığım proje vesilesiyle tanıştığım Android iÅŸletim sisteminin sanıldığı kadar çok da kompleks bir yapısı olduÄŸunu düşünmüyorum. Android ile ilgili bir kaç yazı yazmayı planlıyorum ve bu yazılarım daha çok kendim proje geliÅŸtirirken karşılaÅŸtığım temel ihtiyaçların dışında (custom listview, tab control, button click vb.) çok ileri düzey olmayan ama hemen hemen her proje de kullanılan özellikler olacak. Bu yüzden bu yazımda uzun uzun “Custom Listview” kullanmayı anlatmayacağım.
Custom Listview nasıl eklenir sorusunun cevabı için bu yazıyı okumaya başlayanları hayal kırıklığına uğratmamak adına bir kaç link vermek istiyorum;
http://eureka.ykyuen.info/2010/01/03/android-simple-listview-using-simpleadapter/
http://www.programlamadefteri.com/tag/android-custom-listview
http://www.vogella.de/articles/AndroidListView/article.html
http://saigeethamn.blogspot.com/2010/04/custom-listview-android-developer.html
Â
Genel’de tüm bloglarda yazılar birbirlerinin kopyası ÅŸeklinde devam ediyor. Benim bu yazıda anlatacağım ise görsellik adına çok ihtiyacınız olacak bir ÅŸey. Öncelikle problemi tanımlayalım; Normal bir CustomListView oluÅŸturduÄŸum da karşıma iki sorun çıktı; birincisi her satırın sonunda ince bir siyah çizginin olması, ikincisi ise satırları yukarı aÅŸağı gezdiÄŸim de arka plan renginin siyah oluyor olmasıydı.
 
Benim yapmak istediğim ise her satırın sonunda şık bir çizgi ve satırları gezerken arka plan renginin siyah olmaması. İlk önce siyahlığı kaldıralım;
Bu tek satırlık kod sayesinde artık satırlar arasında gezdiğimizde arka plan rengi siyah değil şeffaf olacaktır, böylece arka plan resmimiz gözükecektir. Elbette RGB renk kodunu yazarak istediğiniz rengi gösterebilirsiniz.
Geriye tek bir sorunumuz kaldı o da siyah çizgiler. Bu siyah çizgi üzerine iki tane özellikten bahsetmek istiyorum; android:divider ve android:dividerHeight.Â

android:divider özelliÄŸini “@null” diyerek hiç bir ayraç olmamasını saÄŸlayabileceÄŸiniz gibi yine RGB renk kodlarını yazarak default olan siyah renk yerine baÅŸka bir renk olarak ayraç ekleyebilirsiniz. android:dividerHeight özelliÄŸi ise siyah çizginin kalınlığını belirliyor, 0dp diyerek hiç göstermeme ÅŸansınız olabileceÄŸi gibi 10dp diyerek kalın bir ayraç ekleyebilirsiniz.
Bunları yaptıktan sonra son olarak kendi ayraç resmimi ekleyerek aşağıdaki görüntüyü elde ettim.

Sanırım böylesi daha şık oldu
Her ne kadar bölümümü Bilgisayar Mühendisliği olarak değiştirmiş olsamda mikro denetleyicilere olan ilgim ve heyacanım tam olarak geçmiş değil
. Texas Instruments’ın düzenlediÄŸi yarışmayı sizlere duyurmak istedim. Son kayıt zamanı henüz geçmiÅŸ deÄŸil 15 Kasım’a kadar vakit var. Ayrıca ilk 1.000 KiÅŸiye MSP430 Launcpad hibe ediyorlar.
Yarışma hakkında ayrıntılı bilgi için; http://www.mcu-turkey.com/ ve http://www.cizgi-tagem.org/activity/request.aspx?key=mcuturkey
Ön Bilgi;
Etkinlik Kapsamı
MCU Turkey Texas Instruments MikroDenetleyici Proje Yarışması ve Hibe Programı, Çizgi TAGEM ve Empa Elektronik firmalarının üniversiteler, meslek yüksek okulları ve meslek liseleri için geliştirdiği bir etkinliktir. Etkinliğin amacı teknik eğitim veren üniversite ve meslek okullarımızın mikrodenetleyici derslerinde öğrencilere yaparak ve görerek eğitim sağlamalarında yardımcı olmaktır.
Litaratürde proje bazlı eğitim olarak geçen bu eğitim tarzında öğrencilerin gruplara ayrılarak yarışması kurgulanmıştır. Etkinlik kapsamında 1.000 adet Texas Instruments MSP430 LaunchPad mikrodenetleyici eğitim kiti yarışmaya katılacak bu üniversitelere ve teknik okullara hibe edilecektir.
Etkinlik sonunda yarışma sürecini en iyi değerlendiren ve en iyi proje hazırlayan öğrenciler ödüllendirilecektir.
Etkinlik Tavimi ve Değerlendirme Süreci
Yarışma Başlangıcı: 15 Ekim 2010
Hibelerin Gönderilmeye Başlanması: 1 Kasım 2010
Blog’a Son EriÅŸim: 25 Ocak 2011
Juri Değerlendirmesi ve Sonuçlar: 10 Şubat 2011
Hediyeler
Yarışma Üniversiteler, Meslek Yüksek Okulları ve Meslek Liseleri şeklinde üç farklı kategoride düzenlenmektedir. Her kategori için hediyeler aynıdır. Birincilik Hediyesi: Asus NoteBook, İkincilik Hediyesi: TI HawkBoard, Üçüncülük hediyesi: TI BeagleBoard
Imagine Cup 2011 Türkiye Lansmanı
Microsoft’un her yıl düzenlediği öğrenciler arası en büyük Teknoloji Yarışması Imagine Cup 2011 Türkiye Lansmanı bu yıl Bahçeşehir Üniversitesi ev sahipliğinde gerçekleşecek. Yarışmanın Türkiye Finali Microsoft İstanbul ofisinde, dünya finalleri ise Amerika Birleşik Devletleri’nde New York’da düzenlenecek. ImagineCup yarışması, bilişim ve bilgisayar teknolojileri sektörünün farklı alanlarında üniversite öğrencilerinin parlak fikirlerini hayata geçirmelerini sağlayan uluslararası bir yarışmadır. Yarışmanın hem Türkiye ayağı hem de Dünya Finalinde yarışmacıları büyük ödüller bekliyor. Yarışmaya kayıt olmak için www.imaginecup.com adresini kullanabilirsiniz. Lansman’da ilk ağızdan Jüri üyelerinden, geçtiğimiz yılın yarışmacılarından ve Microsoft’dan bilgiler alabilir sorularınızı sorabilirsiniz.
Zaman : 03 Kasım ÇarÅŸamba · 13:30 – 15:30
Yer : Bahçeşehir Üniversitesi Fazıl Say Sahnesi
Konuşmacılar
Oturum -1
Mehmet Tunçkanat – Microsoft Turkiye Akademik Programlar Müdürü – Imagine Cup nedir ?
Hansın Doğan – UNDP Istanbul Direktörü – Birleşmiş Milletler Binyıl Kalkınma Hedefleri
Amintas Neto – Microsoft Ortadoğu ve Afrika Akademik İlişkiler Direktörü – Imagine Cup Deneyimi ve Brezilya’nın başarısının sırrı
Kerem Özsü – Microsoft RD , Imagine Cup Dünya Finali Jüri Üyesi – Jüri Üyesi gözü ile Imagine Cup Dünya Finali projeleri
Oturum -2 – Panel – GeçmiÅŸ Yıllar Imagine Cup Yarışmacıları Deneyimleri
Clea(i)r Ekibi – Bahcesehir Universitesi
Yasemin Çelik – Galatasaray Üniversitesi – Imagine Cup 2010 Türkiye 1.si
Alkım Şenkan – Yeditepe Üniversitesi – Imagine Cup 2009 Türkiye 1.si
Umut Erkal – Yeditepe Üniversitesi – Imagine Cup 2009 Gömülü Sistemleri Dünya 4.sü
Kasım 2nd, 2010
Genel |
Yorum Yok
Hemen hemen hepimizin başına gelmiÅŸtir; fonksiyonda ufak bir deÄŸiÅŸlik yaparız sonrasında ona baÄŸlı bazı fonksiyonlar çalışmaz hale gelir. Bunu ya Tester’lar fark eder ya da son kullanıcılardan gelen bildirimlerden anlarız. GeçtiÄŸimiz günlerde, varlığını daha önce duyduÄŸum ama kullanmadığım bir teknolojiyi anlatacağım; “Unit Test”. Visual Studio 2010 ile birlikte gelen yeniliklerden bir tanesi olan “Unit Test” bize büyük bir kolaylık saÄŸlıyor.Tester’lara gitmeden önce kendimiz çok hızlı ve kolay bir ÅŸekilde Test fonksiyonlarımızı hazırlayıp kendimiz test edebiliyoruz. Böylece fonksiyonlarımızda bir deÄŸiÅŸiklik yaptığımızda aklımızda “acaba baÅŸka bir yer bozuldu mu?” gibi endiÅŸeler taşımıyoruz.
Basit bir örnek ile başlayalım; aritmetik işlemleri yapacağımız Aritmetik isminde bir sınıfımız olsun ve aşağıdaki fonksiyonlara sahip olsun.

Basit olarak bu sınıfın fonksiyonlarına bir test projesini adım adım oluşturalım;

Kodumuzun bir yerdinde saÄŸ tuÅŸa tıklayıp “Create Unit Tests…” seçeneÄŸini seçiyoruz.

Çıkan ekranda hangi fonksiyonlar için test fonksiyonları üretmek istediÄŸimizi seçebiliyoruz. Projemizde test edilmesini istemediÄŸimiz fonksiyonlar varsa buradan eleyebiliyoruz. Aynı ÅŸekilde farklı namespace’lerdeki sınıflarımızı ve fonksiyonlarımızı buradan görüp tek bir test projesinin altında toplayabiliyoruz.

Test projemizin adını yazıp “Create” butonuna basıyoruz.

Solution Explorer penceresinde TestProject adında bir test projesi otomatik olarak oluÅŸtu aynı ÅŸekilde “AritmetikTest.cs” adında test kodlarımızın olduÄŸu bir .cs dosyasıda oluÅŸturuldu.

AritmetikTest.cs sayfasını açtığımızda her fonksiyon için bir test fonksiyonu oluşturulduğunu görüyoruz. Şimdi bu fonksiyonların içlerini inceleyelim;

Fonksiyonu incelediÄŸimizde Aritmetik sınıfını target isminde üretildiÄŸini görüyoruz. Otomatik olarak a ve b isimli parametre deÄŸiÅŸkenleri de tanımlanmış. “Expected” isimli deÄŸiÅŸken bizim beklediÄŸimiz sonucu girebileceÄŸimiz bir deÄŸiÅŸken, “actual” ise fonksiyondan geri dönen deÄŸeri tutan deÄŸiÅŸken. Assert sınıfının AreEqual fonksiyonu ise bizim beklediÄŸimiz ve fonksiyondan geri dönen deÄŸiÅŸkeni karşılaÅŸtırıyor, eÅŸit deÄŸilse hata veriyor.

Visual Studio’da bu imlece bastığımızda test projemizdeki tüm test fonksiyonları çalıştırıyor ve bize sonucu gösteriyor.

Toplama fonksiyonumuz baÅŸarılı bir ÅŸekilde tamamlandığını, Çıkarma ve Çarpma test fonksiyonlarında uyarı mesajı, Bölme fonksiyonumuzda ise hata olduÄŸunu görüyoruz. Bölme fonksiyonundaki Exception parametre deÄŸiÅŸkenleri default 0 olduÄŸundan ve 0′a bölme hatalı olduÄŸundan kaynaklanıyor.

CarpTest fonksiyonunda ufak bir deÄŸiÅŸiklik yapalım. Fonksiyona a = 5 ve b = 5 deÄŸerlerini verelim, çarpma da hata yaparak 20 yazalım, sonra beklediÄŸimiz deÄŸeri ve fonksiyondan dönen deÄŸeri karşılaÅŸtıralım. EÄŸer fonksiyondan gelen deÄŸer 20′den büyük ise bir uyarı mesajı verelim. Test fonksiyonumuzu çalıştırdığımızda aÅŸağıdaki sonuçları alacağız;

Birinci hata yine BolTest fonksiyonundaki değerleri (0,0) değiştirmediğimden kaynaklanıyor, CikarTest fonksiyonunda da uyarı mesajımızı verdik, CarpTest fonksiyonundaki hata ise 5*5 işleminden 20 sonucunu beklediğimizden kaynaklanıyor. Toplama fonksiyonumuz ise başarıyla tamamladığımızı söylüyor.
Temel olarak bir sınıfın fonksiyonlarına “Test Projesi” ve “Test Fonksiyonları” oluÅŸturduk. “Unit Test” iÅŸlemi Visual Studio 2010 ile gerçekten çok basit ve hızlı. İlerleyen zamanlarda daha karmaşık fonksiyonlar içinde örnekler yapacağız.
Uzun zamandır makale ekleyemiyordum, bundan sonra ümid ediyorum ki daha fazla makale ekleyeceğim. (En azından bunun için çalışacağım)
BaÅŸka bir makalede görüşmek üzere…