1 Ağustos 2013 Perşembe

C# ‘da iki tarih değeri arasındaki farkı bulma

C# ta kodlama yaparken iki tarih arasındaki farkı  bulma sistem kütüphanesinde yer alan TimeSpan yapısı ile yapılır  bunun için aşagidaki kodlar işimizi görecektir .

// Timespan kullanımı

using System;

TimeSpan obj = DateTime.Parse("01/08/2013") - DateTime.Now;

Console.WriteLine("Yılbaşına sadece {0} gün, {1} saat, {2} dakika, {3} saniye kaldı.", obj.Days, obj.Hours, obj.Minutes, obj.Seconds);

9 Temmuz 2013 Salı

''SELECT TOP 100 PERCENT'' NEDİR ? NEDEN KULLANILIR ?

select top 100 percent  Çok nadir kullanılan hatta kimi zaman araştırıpta zor bulacağınız bir konu olduğuna eminim. Peki  TOP PERCENT neden kullanılır, ve en önemlisi TOP 100 PERCENT nerede kullanılır. Öncelikle TOP PERCENT ifadesi ile belirlediğiniz yüzdelik dilimi çekersiniz  Küçük bir örnek verirsek eger ;  Şehir tablomuzdaki kayıtların %10 kadar olanını çekiyoruz.

Örnek 1

SELECT TOP 10 PERCENT SehirAdi,SehirID FROM Sehirler ORDER BY SehirID
Diyekim ki bir view oluşturdunuz ve bu view içinde ORDER BY ifadesi kullanmak istiyorsunuz. Normal şartlarda TOP 100 PERCENT olmadan view’da ORDER BY kullanamazsınız İşte burada TOP 100 PERCENT devreye giriyor. Yukarıdaki SELECT sorgumuzu view’da kullandığımızı düşünelim.
Örnek 2 

CREATE VIEW 

AS

SELECT TOP 100 PERCENT SehirAdi,SehirID FROM Sehirler ORDER BY SehirID 

GO
Kısacası verilerinizi bir view’dan getiriyorsanız ve sıralı yapmak istiyorsanız bunun en kısa ve pratik yoluTOP 100 PERCENT kullanmaktır.

Facebook Hesabıma Virüs Bulaştı Nsıl Temizlerim

Facebooka giriş yapın



Hesap Ayarları bölümüne tıklayın. Açılan sayfada sol kısımda yer alan Uygulamalar sekmesini tıklayın.

Karşınıza Facebook hesabınıza izin verdiğiniz uygulamalar gelecektir. Çoğunlukla burada yer alan uygulama adıyla sizin yerinize etkinliklerde bulunan uygulama adı aynı olmakta. Bu nedenle öncelikle sizi rahatsız eden uygulamaları buradan bulup kırmızı ile işaretli olan “X” tuşuna basarak o uygulamaları kaldırmalısınız.

Facebook Video Vürüsü Temizleme


Facebook kolaylıklarının yanında, son zamanlarda can sıkıntısı ile gündeme gelmeye devam ediyor. Bu can sıkıntılarından biri de ”İzleyin bence süper oldu” şeklinde virüsün facebook adresinize bulaşması. Bu virüs; Chrome tarayıcısı üzerinden çalışan virüs, web tarayıcınızın kontrolünü bir eklenti vasıtası ile ele geçirerek Facebook hesabınızı kontrol altına alıyor. Kullanıcılar, Faceook hesaplarını her açtığında bir müzik ile karşılaşıyor. Peki bunu nasıl silebilirim? diyorsanız aşağıdaki adımları takip etmeniz gerekmektedir.
  • Başlat
  • Çalıştır
  • “regedit” komutu giriyoruz ve entera basıyorsunuz.
  • Hkey_local_machine-software > policies > google > chrome > adımlarını takip ettikten sonra asasdgfdfsfclbonhleeank şeklinde karmaşık isimde dosya olacaktır. Siliyoruz ve tarayıcımızı yeniden başlatıyoruz.   Muhtemelen bu işlemleri yaptığınız taktirde virüsten kurtulmuş olacaksınız. kolay gelsin ;)

26 Haziran 2013 Çarşamba

Bilgisayar Açıldığında Num Lock'da Açık Olsun

Bilgisayarınız açılır açılmaz Num Lock ışığı açık kalması için ufak ayarlamalar yapmalısınız.hemen yaptığım işlemleri sırasıyla anlatmaya başlayayım.Ek olarak şunu da belirteyim bu işlemi Windows’un tüm işletim sistemlerinde (Windows XP , Windows 7 , Windows Server 2003 , Windows 8 vb.) uygulayabilirsiniz.
İlk olarak Başlat > Çalıştır > regedit > yazıp enter tuşuna basıyoruz.Daha sonra gelen ekrandan


HKEY_USERS/.DEFAULT/Control Panel/Keyboard seçeneklerini takip edin.Daha sonra karşınıza gelen ekrandan  InitialKeyboardIndicators seçeneğine çift tıklayın ve varsayılan değeri 2 olarak yapıp tamam butonuna basın ve regedit penceresini kapatın.
Artık bilgisayarınızın açılışında NumLock otomatik olarak açık gelecek ve şifrelerinde rakam bulunan arkadaşlar her seferinde NumLock tuşunu aktif etmekten kurtulacak :)

9 Nisan 2013 Salı

Garbage Collector Nedir? Ne Zaman Kullanılmalı ?


Bir süreç (process) başladığı anda boş bir bellek yeri bu süreç için ayrılır. Buna “Managed Heap” denir. (Devamında heap bellek olarak belirteceğim ) Pointer’lar aracılığıyla heap bellekten nesnelerin yerleri tutulur. Çalışma zamanında oluşturulan nesneler, uygulama tarafından ihtiyaç duyulmadığı zamanlarda, heap bellekten temizlenir. Bu işlem için “Garbage Collector” mekanizması kullanılır.

Uygulama “new” operatörünü çalıştırdığı zaman “heap” belleğe gider ve yeterli bir yer olup olmadığına bakar. Yeterli yer varsa “pointer heap” bellekteki bu yeri gösterir, nesnenin “constructor” metodu çalıştırılır ve adres döndürülür.

Peki, bu yer doluysa uygulama ne yapar?
İşte bu anda “Garbage Collector” devreye girer ve uygulamanın ihtiyaç duymadığı tüm objeler “heap” bellekten temizlenir.

“OutOfMemoryException”: Temizlenecek obje yoksa ve yeterli yer hala sağlanamamışsa “new” operatörü “OutOfMemoryException” uyarısını verir.

“Garbage Collector” Nasıl Çalışır?
Her uygulama başlarken bellekte bir yer ayırdığını belirtmiştik. Burayı gösteren ilk adres bizim uygulamanın başlangıç noktasıdır.  Bir uygulama için birden çok başlangıç noktası mevcuttur. “Static” veriler için bir başlangıç noktası, “cpu register”ları için bir başlangıç noktası gibi.

“Garbage collector”,  “heap” bellekteki her şeyi temizlenecek nesneler olarak algılar ve bir başlangıç noktasından başlayarak tüm nesneleri kontrol eder ve bir “graph” oluşturur. Bu başlangıç noktasındaki tüm nesneleri kontrol edip “grap” oluşturduktan sonra diğer başlangıç noktasına geçer ve oradaki tüm nesneleri kontrol eder.

“Garbage collector” çok akıllı bir algoritmaya sahiptir. Örneğin, diyelim ki herhangi bir nesne iki başlangıç noktasında da var. “Garbage collector” bu nesneye geldiği zaman bu nesneyi zaten “graph”a eklemiş olduğunu anlar ve bu nesnenin altındaki nesneleri kontrol etmez. Böylece daha hızlı çalışmasını sağlar ve sonsuz döngüye girmesini engeller.

Tüm başlangıç noktalarını ve nesneleri kontrol ettikten sonra oluşan “graph”ı “liner” şekilde kontrol ederek tek tek “heap” belleğe yeniden yerleştirir, aralıklı olanlar varsa bu aralığı da kaldırır. Nesnelerin yeni adresleri olmuşsa bu adresleri gösteren “pointer”ların yeni adresi göstermesini de sağlar. İşlem sonunda gereksiz olan nesneler “heap” bellekten temizlenmiş olur.

Yeniden göz atacak olursak, “new” operatörü çağrıldı, uygulama “heap” belleğe gitti ve yer olmadığını anladı. “Garbage Collector” devreye girdi ve istenen yer ayarlandı. Uygulama “new” operatörünü tekrar çalıştırarak işleme devam eder.

“Garbage Collector”un çalışmasını kısaca özetleyecek olursak, “heap” belleğimizde yer lazım fakat uygun yer yok. “Heap” belleğimiz dolu. O zaman “garbage collector” devreye girer.

“Generations”: “Garbage Collector” algoritması gördüğümüz gibi arka planda birçok iş yapmakta. Peki, bunu daha efektif bir hale nasıl getirebiliriz sorusunun cevabı burada “Generations”.

“Garbage Collector” bu mantık ile bazı kurallar tanımlar.
  • Yeni oluşturulan nesnelerin yaşam süresi daha kısadır.
  • Eskiden oluşturulmuş nesnelerin yaşam süresi daha uzundur.
  • Yeni oluşturulmuş nesneler birbirleriyle daha sıkı bir ilişki içindedir ve kullanım zamanları çok yakındır.
  • “Heap” bellekteki bir bölüme ulaşmak, tüm “heap” belleği dolaşmaktan daha hızlıdır.

Şimdi çalışma mantığına bakalım.
  • Uygulama çalıştırıldığında “heap” bellek boş olarak oluşturulur.
  • Dolduğunu varsayalım ve “Garbage Collector” gelip gereksiz nesneleri temizledi. Bu ilk temizlemede, temizlenmeyen, yani sağ kalan tüm nesneleri “Generation 0” olarak tanımlar.
  • Tekrardan doldu ve yine GC çalıştırıldı. “Generation 0”dan sağ kalanları “Generation 1” olarak tanımlar ve yenilerden sağ kalanları da “Generation 0” olarak tanımlar.
  • Yine doldu ve yine GC çalıştırıldı. “Generation 1”den sağ kalanları “Generation 2” olarak tanımlar ve “Generation 0”dan sağ kalanları “Genaration 1” olarak tanımlar. En yenilerden sağ kalanları “Generation 0” olarak tanımlar.
  • GC çalıştırıldığı zaman sadece belli bir bölgeyi tarama işlemi yapabilir. Yani çalıştırıldı diyelim, tüm “heap” belleği kontrol etmek yerine ilk önce “Generation 0”a gelip bakar, buradaki gereksiz nesneler silindikten sonra yeterli yer sağlanmışsa işlemi bitirir. Diyelim ki bu işlemden sonra hala istenen yer bulunamadı. O zaman “generation 1”i de kontrol eder. Yine olmadıysa “generation 2”yi de kontrol eder. Gördüğünüz gibi kademeli olarak kontrol etmiş olduk.  Performans açısından bize olumlu sonuçlar verir.

void GC.Collect (Int32 Generation)
void GC.Collect()
Finalization: Bir diğer özellik de “finalize” metodu. Sınıflarda bu metodu “override” ederek daha sağlıklı ve garantili bir temizleme işlemi gerçekleştirebiliriz. “Garbage Collector” bu nesneyi temizlemek isteyince, ek olarak “finalize” metodunu da çalıştıracaktır. Böylece istediğimiz işlemleri de yapmış olacaktır.

  • Belleğe eklenme süresi daha uzundur.
  • “Cpu” ekstradan daha fazla kullanılmış olur.
  • “Generation” olarak eski olarak tanımlanır ve bu nesneyi direk veya dolaylı olarak gösteren nesneler de bu şekilde etkilenmiş olur.
  • “Finalize” metodu çalıştırıldığı zaman bu metoda erişim yapılamaz.

Bazen uygulama kapatıldığı halde “heap” bellekteki bazı nesnelere erişim sağlanabilir, bu da bu nesnenin bir “thread” ya da başka bir süreç tarafından kullanılması ile olabilir ya da uygulama kapanırken bazı nesneleri oluşturabilir. Bu nesnelerin “finalize” metotları çalıştırılmamış olacak ve istediğiniz temizleme işlemi gerçekleşmeyecektir.

Bir diğer durum da, bir nesne başka bir nesneyi gösteren “pointer”a sahip ve bu ikisi de “finalize” metoduna sahip. İçteki nesnenin “finalize”ı önce çalışabilir ve istenmeyen sonuçlar doğurabilir. O yüzden içteki nesnenin “finalize”ına erişimin engellenmesi önerilen bir çözümdür.

“Finalize” metodu kullanılması gerekiyorsa, çok hızlı çalışabilecek bir şekilde tasarlanması önerilen bir diğer çözümdür.

“Dispose” Metodu”: “Dispose” metodu çağrıldığı zaman, nesnenin tutmuş olduğu kaynakları serbest bırakır. Bu metodun birden fazla çağrılması “exception” hatasını döndürür. Örneğin, zaten kaynakları serbest bırakılmış bir nesneye tekrardan “dispose” metodunu kullandırmak gibi.

Program Ekle/Kaldır Fonksiyonuyla Silinemeyen Programları Nasıl Kaldırabiliriz


Bazen yanlışlıkla programı bilgisayarınızdan silmek için programın klasörünü silersiniz. Bu durumda “Denetim Masası / Program Ekle-Kaldır” fonksiyonunda o programı kaldırmaya çalıştığınızda kalkmaz. Bunun için herhangi bir program kullanmanıza gerek yoktur. Bilgisayarınızdan "Başlat/Çalıştır/Regedit" adımlarını izleyerek işlemleri gerçekleştirebilirsiniz.

(Not: Çalıştır"ı klavyeden çalıştırmak için "Windows tuşu ile R" tuşuna basabilirsiniz.)
  • HKEY_LOCAL_MACHINE "i yanındaki + yı tıklayın açılan listeden sırasıyla,
  • Software, aynı şekilde takip edin
  • Microsoft
  • Windows
  • CurrentVersion
  • Uninstall
  • (RunRegeditHKEY_LOCAL_MACHINE Software Microsoft Windows CurrentVersion Uninstall)
Bu adımları takip ettiğinizde Program-Ekle kaldır fonksiyonunda yer alan listeyi göreceksiniz. Listeden kaldıramadıklarınızı "DELETE" tuşuna basarak dilediğiniz şekilde kaldırabilirsiniz.
Sevgilerim ile...

28 Mart 2013 Perşembe

Yazılım Mühendisliğinin Yeri


Yazılım mühendisi, bankacılık, otomotiv, telekomünikasyon vb. sektörler olmak üzere her alanda kullanılan bilgisayar sistemlerinin, yazılım tasarımını hazırlayan ve sisteme entegre edip uygulamasını yapan kişidir.
Bir yazılım mühendisi, hazırlanacak yazılım ile ilgili müşteri ilişkilerini kurar, müşterilerden aldığı bilgiler doğrultusunda analiz yapar, tasarım yapar, program yazar, programı test eder, yazdığı programda eksiklik varsa düzeltir, yazılımı sorunsuz şekilde çalışır hale getirdikten sonra, gerekli durumlarda kullanım yönergesini hazırlayarak, kullanıcıların eğitilmesini sağlar, mesleği ile ilgili gelişmeleri takip eder.

Yazılım mühendisliği alanında akademik ve teknolojik çalışmalar yapmak için çeşitli alet, araç ve gereçlere ihtiyaç vardır. Bu araçlar, bilgisayar, bilgisayar programlama dilleri, yazılım geliştirme programları, yazıcı, tarayıcı, yazılım mühendisliği alanında uluslararası kural ve uygulamalarla ilgili çeşitli doküman, kitaplar, kalite standartları v.b. Yazılım mühendisiliği alanında akademik ve teknolojik çalışma yapmak isteyenlerin; üst düzeyde genel yeteneğe sahip, mantık yürütme ve tasarım yeteneği olan, fen ve matematik alanlarına ilgi duyan, bildiklerini başkalarına aktarabilme ve etkileme (ikna) yeteneği olan,  dikkatli, sabırlı, ekip çalışmasına yatkın, yeni fikirlere açık, kendisini sürekli geliştirebilen kimseler olması gerekir.
Yazılım ve bilgi teknolojileri mimarisi alanında yapılan araştırmalar; veritabanları, veritabanı programcılığı, yazılım proje yönetimi, ölçümü ve testi gibi konuları ele almaktadır.
Web ve oyun programlama alanında yapılan araştırmalar web programlama, bilgisayarda grafik ve animasyon geliştirme, insan bilgisayar etkileşimi ve elektronik ve uzaktan öğrenme ortamlarının tasarımı ve geliştirilmesi konularına odaklanmaktadır.
Veri madenciliği alanında yapılan araştırmalar arasında veri ambarlarının ve çok büyük veri tabanlarının sorgulanabilmesi, bulanık mantık kullanarak verilerin segmentasyonu, kümelenmesi, kestirimi ve tahmininin yapılması gibi modelleme çalışmalarını içermektedir.

Store Procedure- Yapı Olusturma


Store Procedure, C# veya java gibi yazılım dillerinde kullandığımız fonksiyonun aynısıdır. Tek fark bunu veri tabanında uygularız. Store procedure, birden fazla sorguyu aynı anda çalıştırabilme imkanı verdiği gibi dışarıdan parametreler alarak bu parametrelerin değerine uygun olarak da sorgu çağırmamıza yardımcı olur.
Store Procedure Oluşturmak

25 Mart 2013 Pazartesi

CODE NIGHT ETKİNLİĞİ


Yazılım Dilleri Günü'nün ardından 23 Mart Gecesi başlayıp 24 Mart sabahına kadar devam eden Code Night etkinliğine de bu yazıda değinmekteyim.
Etkinlik, Mühendislik fakültesi bilgisayar labaratuvarlarında gerçekleştirilecekti. Fakat YGS sınavının olması burada olmasının önüne geçti. Bu sebeple Elazığ'da bir cafede ve bu kafenin sinevizyon salonunda gerçekleştirildi.
Yazılım Kulübünün organize ettiği bu etkinlik kod yazmaktan çok sanki eğitim şeklindeydi. Saat 21:00 civarında başlayan bu etkinliğe, ilk önce Team Foundation hakkında bilgiler vermek üzere Fatih Boy bilgi birikimlerini bizlere aktardı. Team Foundation'a kısaca değinmek gerekirse; projeler için tasarlanmış olup takım içerisindeki verimi ve iletişimi arttırmak, iş durumunu izleme, takımdaki rolleri yönetme, iş süreçlerini çıkartma ve kullanıcılara sunduğu araçlarla proje yönetimini kolaylaştırarak ürünün daha sağlıklı ve hızlı bir şekilde çıkmasını sağlamada kullanılmaktadır.

Bu eğitimden sonra Veysel Uğur Kızmazl'a katmanlı mimari yapısını kullanarak blog sitesi yapım süreci üzerinde durduk. Örnek bir blog sitesi yapıldı ve bunun yapım aşamaları kodlarıyla beraber bizlere detaylı bir şekilde anlatıldı.
Sabah ezanı okunduğu sıralarda da bu etkinlik son bulmuştu. Sonra yerini sohbet ortamı aldı. Uykuyla karışık komedi havası hakimdi diyebilirim :)
Organizasyon sabahın ilk ışıklarına kadar sürdü. Katılan kişilerin çok keyif aldıklarına eminim. Bu organizasyonun gerçekleşmesinde payı olan herkesin eline sağlık. Ayrıca Yrd. Doç. Dr. Murat Karabak hocamızada kısa sürede olsa katılımlarından ve ikramlarından dolayı buradan da teşekkür etmek istiyorum. Fatih Boy ve V.Uğur Kızmaz'a ne kadar teşekkür etsek az.


Umarım önümüzdeki dönemlerde de üniversitemizde bu tür organizasyonlar gerçekleştirilir.

EGİTİM

Aslında bazı eğitimciler çok bilgili ama dandik eğitim müfredatı yüzünden öğrenciler gibi onlar da sistemin kurbanı oluyorlar! Yazık yani!

"Sen de Yaz"


  • Yarışma için son başvuru tarihi 7 Nisan. 
  • Adaylar projenin doküman ve sunularını ise Nisanın sonunda teslim edecekler. 
  • Bütün projeler arasından 10 tane finalist belirlenecek. 
  • Mayıs'ın başında ise finalistler jüri önünde performanslarını sergileyecekler aynı zamanda kendileri için stand açılacak.
  • Detaylı bilgi için Yazılım Kulübünün web sayfası incelenebilir.