Author Archive

Merhabalar, bu yıl benim de katılımcı olarak yer aldığım Microsoft Yaz Okulu programının ardından yorumlarımı paylaşmak istedim. Programdan önce benim de merak ettiğim, sıkça sorulan sorular hakkında kendi fikirlerimi belirtmek istiyorum.

Microsoft Yaz Okulu bir staj programı mıdır?

Hem evet, hem hayır diyebilirim. Uygulamalı eğitimler ve staj projesinden oluşan Microsoft Yaz Okulu programı bir stajda edinilebilecek deneyimden fazlasının elde edilebileceği bir yerdir ve çoğu üniversitede staj olarak sayılmaktadır.

Katılım ücretli mi, kabul edilmek zor mu?

Katılım ücretsiz. Bunun dışında öğlen yemekleri de oldukça güzel ve ücretsiz. Çay, kahve, ice tea, kola gibi içecekler de ücretsiz. Ayrıca usb bellek, cd çantası ve çok sayıda kitap gibi hediyeler de bulunmakta. Kabul edilme oranı ise bu sene %5 civarı.

Microsoft Yaz Okulu kimlere hitap ediyor?

Katılımcılar genel olarak bilgisayar mühendisliği öğrencilerinden oluşmakta. Bunun dışında diğer bölümlerden katılımcılar da var. Eğitimler genelde giriş seviyesinde oluyor ancak konular hızlandırılmış olarak işlendiğinden biraz ön bilgisi olan katılımcılar için daha faydalı bir program diyebilirim.

Microsoft Yaz Okulunun katılımcılara ne gibi katkıları oluyor?

Microsoft Yaz Okulu, teknik anlamda gelişme fırsatı sağlamanın yanı sıra sosyal gelişime de katkıda bulunan bir program diyebilirim. Farklı üniversitelerden katılımcıların bulunduğu bu program güzel arkadaşlıkların kurulabileceği bir çalışma ortamı sağlıyor. Değerli kazanımların elde edildiği programda, Microsoft’un Most Valuable Professional ünvanını verdiği, alanında uzman kişiler ile tanışma imkanı elde ediliyor. Microsoft Yaz Okulu genel olarak öğrenciler için verimli ve keyifli bir staj dönemi olarak geçiyor ve program sonunda öğrencilere Yaz Okulu Katılım Belgesi veriliyor.

Eğitimlerde hangi konular işleniyor?

Bu seneki programda ana başlıklar:

26-27 Temmuz: Windows Server 2008 R2 – Muammer Benzeş
28-30 Temmuz: SQL Server 2008 R2 – Hakan Ulagan
2-3 Ağustos : C# – Sefer Algan
4 -6 Ağustos: ASP.NET & Silverlight – Daron Yöndem
9 -10 Ağustos : XNA GS – Engin Yıldız
11 Ağustos: Sharepoint – Evren Ayan
12-13 Ağustos: Windows Embedded -Umut Yeşilmen
16 Ağustos: Windows Phone – Ekin Özçiçekçiler
17-20 Ağustos: Staj Bitirme Projesi

Günümüzde, fiziksel ortamda gerçekleşen her işlemin internet dünyasına taşınması ile internet oldukça önemli bir yapı olarak karşımıza çıkmıştır. Artık insanlar her işlerini internet üzerinden yapabilir, yönetebilir hale gelmiştir.

Hızla büyüyen internet ağı dünyanın en büyük veritabanı olarak düşünülebilir. İnternetin bir bilgi okyanusu haline gelmesi insanlara birçok alanda kolaylık sağlamaktadır. Ancak bu durum insanların istediği bilgiye kısa sürede ulaşmasını zorlaştırmakta ve istenmeyen bilginin ayıklanması kullanıcı için problem oluşturmaktadır. İnternette bilgiye ulaşma aşamasında insanların zamanının büyük bir bölümü istenilen bilginin aranması ve gereksiz bilginin ayıklanmasıyla geçmektedir. Bu çalışmada bilgi çıkarımı ve doğal dil işleme yöntemlerinden faydalanılarak insanların istenilen bilgiye erişme sürelerinin kısaltılması hedeflenmiş ve bilgi çıkarımının kaynağı olarak internet seçilmiştir.

Emlak aramanın gerek yatırımcılar gerek bireysel müşteriler için genellikle oldukça vakit alan bir iş olması genel amaçlı arama motorlarının yanı sıra emlak aramaya özel geliştirilmiş bir arama motoru ihtiyacını doğurmaktadır. İnsanların üzerindeki bu yükü hafifletmek, istenilen sonuca ulaşmak için harcanan zamanı kısaltmak için internette emlak aramanın tek çatı altında toplanması bu çalışmanın temelini oluşturmaktadır.

Devamını Oku »

Bu güne kadar genellikle Linux ortamına hep uzak kalmıştım, staj bahanesiyle Ubuntu ile biraz haşır neşir olmaya başladım. Öncelikle Ubuntu 10.04 LTS sürümünün yeni logosunu ve kullanıcı arayüzünü beğendim, patlıcan rengi yeni tema oldukça modern ve estetik olmuş.

Özellikle benim gibi yıllarca Windows üzerinde çalışmış Linux dağıtımlarıyla pek alakası olmamış kişilerin işine yarayabilecek bir kaç uygulamadan bahsetmek istiyorum:

WUBI: Windows UBuntu Installer

Windows ve Ubuntu’yu birlikte kullanmak istediğimizde çeşitli disk bölümleme veya başlangıç ayarlama sorunları ile karşılaşabiliyorduk. WUBI ile Ubuntu kurulumu sıradan bir yazılım kurulumu basitliğine indirgenmiş. Kurulum sihirbazını indirip çalıştırdıktan sonra disk bölümleme veya boot dosyalarını düzenleme gibi işlemlere gerek kalmadan Ubuntu’nun son sürümü kuruluyor.

http://wubi-installer.org

Mono Project: Linux üzerinde .NET uygulamalarınızı çalıştırın

C#  ve Asp.NET’in kullanım rahatlığından vazgeçemeyenler için oldukça faydalı bir proje. Microsoft yazılım geliştirme ortamlarında geliştirilen uygulamaların diğer platformlarda çalışmaması, MS Visual Studio’nun kullanım rahatlığına gölge düşürüyordu. Ancak Mono Project sayesinde uygulamalarımızı diğer platformlarda da çalıştırabilmekteyiz. MS Visual Studio ile oldukça benzerlik gösteren Mono ile Ubuntu üzerinde yaptığım denemelerin çoğu başarılı oldu. C# konsol uygulamalarını derlediğimde sorunsuz çalıştılar. Ancak MS SQL bağlantısı içeren Asp.NET projemi Ubuntu’da MS SQL Server kurulu olmadığı için doğal olarak çalıştıramadım. Sorunsuz bir sistem olduğunu söyleyemem ancak oldukça başarılı.

http://www.mono-project.com

Wine Development HQ: Windows uygulamaları Linux’ta

Wine için her ne kadar “Wine Is Not an Emulator” denilse de, gözlemlediğim kadarıyla Wine, Windows’un kütüphanelerini taklit eden bir Windows emulatörü. Wine sayesinde Windows’ta çalışan çoğu uygulamayı Linux ortamında çalıştırabilmekteyiz. Ayrıca Wine’ın Uygulama Veritabanında (AppDB) birçok programın incelemesi, düzgün çalışıp çalışmadığı ve nasıl kurulacağı hakkında detaylı bilgi mevcut.

http://www.winehq.org

Paylaşılamayan ortak kaynakları graf boyama yöntemi ile kaynağı kullanmak isteyen birimlere atayabiliriz. Bu çalışmada bir graf boyama örneği olan çakışmayan ders programı oluşturma gerçeklenmiştir. Aynı dersi alan öğrencilerin bulunduğu derslerin ders programında aynı zaman dilimine konması önlenmiş ve zaman mümkün olan en efektif biçimde kullanılmıştır.

Kaynak Kodlar:
Devamını Oku »

Bu çalışmada ilk giren ilk çıkar (FIFO) mantığı ile çalışan kuyruk veri yapısının basit bir uygulaması yer almaktadır. Bankada kuyruklar bulunmaktadır ve sıranın en önündekine her birim zamanda hizmet edilir. Hizmet süresi sıfır olan eleman sıradan çıkar. Yeni gelen müşteriler bekleme süresi en kısa olan kuyruğa eklenir.

Kaynak Kodlar:
Devamını Oku »

Shell sort algoritması insertion sort’un üzerine kurulu bir algoritmadır. Neredeyse sıralı olan dizileri sıralamada tercih edilir. Eleman sayısının yarısı kadar bir ofset değeri atanır ve elemanlar ofset aralıklarıyla insertion sort ile sıralanır ve bu işlem artan adım değerleri için yapılır. Daha sonra ofset yarılanır. Ofset değeri 1 den küçük olduğunda algoritma durur.

Kaynak Kodlar:
Devamını Oku »

Huffman algoritması ayrık durumları bulunma yüzdelerine göre değişken uzunlukta kodlama esasına dayanır. Gerçek hayattaki veriler çoğunlukla heterojen yapıdadır, ayrık durumların bulunma oranlarının birbirine yakın olmadığı durumlarda bu algoritma ile ortalama kod uzunluğu kısalarak yerden kazanç sağlanabilir.
Bu çalışmada yapılan Huffman algoritmasının basit bir simülasyonu olmakla birlikte herhangi bir sıkıştırma veya ağaç oluşturma söz konusu değildir. Verilen Huffman ağacına bakılarak girilen kod çözümlenmiştir.

Akış Diyagramı:


Kaynak Kodlar:
Devamını Oku »

Verilen bir grafın minimum spanning tree’sinin bulunması en düşük maliyet ile bütün noktaların kapsanması açısından özellikle istasyonlar arasında ağ kurulumunda önem taşır. Bu çalışmada Kruskal’ın algoritmasını kullanarak basit bir minimum spanning tree implementasyonu yapılmıştır. Kaynaktaki graf n tane edge’den(u,v ve ağırlık değeri içeren bir struct) oluşan bir dizi şeklinde gösterilmiştir. MST bulma aşamasında hangi noktaların hangi alt graflara bağlandığını takip edebilmek için label[] adlı bir dizi kullanılmıştır. Derste de gördüğümüz bu algoritma ile graf üzerindeki bir MST’yi kolaylıkla bulabilmekteyiz.

Akış Diyagramı:


Kaynak Kodlar:
Devamını Oku »

Bağlı liste yapısını kullandığımızda eleman aramak başarım açısından oldukça maliyetli oluyordu. N tane eleman olması durumunda teorik olarak N tane elemanı kontrol etmek durumunda kalıyorduk. Binary search tree yapısı bize arama yapma ve eleman eklemede oldukça hızlı bir çözüm sağlıyor. log2(N+1)-1 tane karşılaştırma işlemi ile sonuca ulaşabiliyoruz.

Bu çalışmada ağaç yapısını gerçeklerken elemanların indislerinin daha kolay gözlenebilmesi ve algoritma takibinin daha kolay olması için dizi gösterimi kullanıldı. Dengeli olmayan ağaçlarda dizi yapısını kullanmak hafıza alanı açısından maliyetli olabilir. Bu yüzden bu örnekler oluşturma aşamasında uygun sıra ile dengeli olarak yerleştirildi. Ancak kullandığımız yapı self-balancing olmadığından zaman içerisinde yapılacak modifikasyonların bu dengeyi bozması olasıdır. Ayrıca elemanları sıralamak da bize ek işlem yükü getiriyor.

Daha geniş kapsamlı uygulamalarda struct yapısı kullanılarak işaretçiler yardımıyla yapılacak bir gerçekleme hafıza alanını daha etkili kullanma adına daha mantıklı olacaktır. Eğer bizim için en önemli ölçüt arama hızı ise self balancing tree yapısı alternatif olarak düşünülebilir.

Akış Diyagramları:

Kaynak Kodlar:
Devamını Oku »

Son zamanlarda hayvan hakları hakkında konuştuğumda “Ne yani et yemeyelim mi şimdi, öyle ise sen neden yiyorsun?” gibi geribildirimler alıyorum. Evet, vejetaryen değilim et de yiyorum süt de içiyorum ve bunu, hayvansal besin tüketmenin günümüz şartlarında hayvanlar için de en iyisi olduğunu düşündüğüm için yapıyorum.

Öncelikle günümüzde ev hayvanları dışında beslenen hayvanlar çoğunlukla gelir elde etmek için yetiştiriliyor. Ne yazık ki kimse koşup oynasınlar diye kuzu, dana, tavuk beslemiyor. Durum bu olunca hayvansal besin tüketmemek bu sektörün zayıflamasına, dolayısıyla yetiştirilen hayvan sayısının azalmasına yol açıyor. Hepimizin vejetaryen olması ne yazık ki hayvanları özgürleştirmez, talep azaldığında zamanla üretim de azalır ve bugün her yerde görebildiğimiz bazı hayvanlar çocuklarımızın yalnızca hayvanat bahçelerinde görebildiği hayvanlar haline gelebilir. İleride insanlar hayvan hakları bilinci kazandıklarında sadece koşup oynasınlar diye hayvan yetiştirmek istediklerinde bile soyu azalıp hayvanat bahçesine düşen bu hayvanları bulmakta zorluk çekebilirler. Şu anda hayvanların iyi kötü bir yaşamları var; annesini göremeyen civcivlerin, gökyüzünü göremeyen danaların keşke daha iyi şartlarda bir yaşamları olsa, ama dünyaya hiç gelmemeleri yenilmek için gelmelerinden ve sadece bir üretim birimi olarak görülmelerinden daha kötü.

Hayvansal besin tüketmemin sebeplerinden bazıları bunlar ve günümüzde hayvansal besin tüketmenin en azından toplumsal bir hayvan sevgisi, hayvan hakları bilinci kazanılana kadar, soylarının devamı için hayvanların yararına olduğunu düşünüyorum.