25 Tem 2008 Her Yazılımcının Bilmesi Gereken 10 Konsept Kategori: Yazılım Etiketler: MicrosoftYazılım 1 Yorum 10 Iliskilsel VeritabanlarıIliskisel veritabanları, çok büyük web servislerinde kötü performanslar sergiledigi için son zamanlarda sevilmiyor. Ancak yazılım dünyası daha uzun bir süre onları kullanmaya devam edecek. Iliskisel veritabanlarında veriler tablolarda kayıtlar olarak tutuluyor ve genellikle SQL adı verilen dil ile bu veriler sorgulanıyor. SQL'in veri ekleme, silme, güncelleme, filtreleme ve birden çok tablodaki verileri bir arada getirme gibi güzel yetenekleri var.Iliskisel veritabanlarında veri yazıp okuma isini performanslı bir sekilde halledebilmek için SQL, stored procedure'ler (yerlesik yordamlar), constraint'ler (kısıtlamalar) gibi pek çok konuya hakim olmak gerekiyor.9 GüvenlikHack olayları ve veri güvenligi önem kazandıkça güvenlik bilgisinin de önemi artıyor. Veri güvenligi; kullanıcı yönetimi, yetkilendirme, bilgi aktarımı gibi pek çok kavram içeren genis bir konu.Kullanıcı yönetimi, bir sistemde her kullanıcının kendisini ilgilendiren bilgilerle muhattap olması ve diger kullanıcıların bilgilerini görememesi ile alakalı. Yetkilendirme, kullanıcıların yalnızca izin verilen islemleri yapabilmeleriyle alakalı. Daha çok sirketleri ve is akısı bulunduran sistemleri ilgilendiriyor. Yeni gelistirilen OAuth protokolü, web servislerde güvenligi saglamak konusunda yardımcı oluyor. Bu sistemi flickr kullanıyor.8 Cloud ComputingCloud Computing, bir isin daha hızlı yapılması için aynı anda birden fazla bilgisayarın çalıstırılması esasına dayanan paralel programlamadan yola çıkılıp gelistirilmis bir yöntem. Yararlananılabilecek hizmetlerin zaman, kullanıcı yogunlugu gibi parametrelere baglı olarak degismesi esasına dayanıyor.7 Es ZamanlılıkEs zamanlılık, birden fazla isin bir programın kendi içinde aynı anda yapılması ile alakalı. Örnegin java ile yazılan uygulamalarda bunun için thread'ler kullanılıyor.Üretici / Tüketici modeli tipik bir örnek. Üretici durumunda olan kısım sürekli olarak islenecek verileri üretiyor, tüketici olan kısım ise sürekli olarak bu verileri alıp isliyor. Bu iki kısım aynı anda çalısıyor. Her thread'in kendi içinde çalısma mantıgı ayrı olsa da thread'ler verileri aynı anda ve ortak olarak kullandıgı için çalısırlarken yapabilecekleri hataları önlemek uzmanlık gerektiriyor. En karmasık thread kütüphanelerinden birisi Doug Lea tarafından üretilmis ve java çekirdeginde yerini almıs.6 CachingHafif uyku'nun kaseleme dedigi caching, normalde veritabanında tutulan verilerden çok sık kullanılanların hızlı ulasılabilecek bir yere alınması ve buradan hızla kullanılması anlamına geliyor. Örnegin bir kitap siteniz varsa ve geçen haftanın popüler kitaplarını listeleyen bir kısım mevcutsa, bu verileri her gerektiginde hesaplamak yerine haftada bir kez hesaplayıp uygun bir yere kaydediyor ve gerektiginde buradan okuyorsunuz.Cache'lenen verilerin tamamını bellekte tutmak maliyetli bir islem oldugu için, bellekte tutulacak verilerin seçilmesi için uygulanacak yöntemleri seçmek yine uzmanlık gerektiriyor.Facebook'un da aralarında oldugu bir çok modern uygulama, Brad Firzpatrick tarafından gelistirilen memcached adlı sistemi kullanıyor.5 HashingHashing, verilere hızlı ulasmak için baska bir yöntem. Bu yöntemde, her verinin içerigine bakılarak bu veriye özel daha kısa bir veri üretiliyor ve bu kısa veriler index olarak kullanılıyor. Index içerisinde arama yapmak da çok daha hızlı oluyor.Hashing yapılırken her verinin farklı bir hash kodunun olması ve bu hash kodlarının hızlı ulasımı mümkün oldugu kadar kolaylastıracak sekilde ayarlanması farklı bir uzmanlık gerektiriyor.4 Algoritmik Karmasıklık SeviyesiÇok yaygın olarak büyük O harfi notasyonuyla ifade edilen karmasıklık seviyesi, bir algoritmanın hızının, algoritmanın isledigi veri miktarına göre degisimini belirliyor. Örnegin O(n) ile ifade edilen bir algoritma, n tane veriyi t zamanda isliyorsa 2n tane veriyi 2t zamanda isler. O(n^2) ile ifade edilen algoritma ise n tane veriyi t zamanda islerken 2n tane veriyi t'nin karesi kadar zamanda isler. Islenen veri miktarları çok büyük olunca, bunları isleyen algoritmanın karmasıklıgı çok büyük önem kazanıyor.3 Katmanlı MimariKatmanlı mimari, bir yazılımın çalısması için gereken bilesenlerin piramit seklinde yapılandırılması gerektigini ifade ediyor. Piramitin her katmanındaki bilesenin çalısması, kendi altında bulunan bilesenlere baglı olabilir ancak kendi üzerinde çalısanlara baglı olamaz.Bu konuda bilgi alınabilecek Structure 101 ve SA4J adlı iki güzel kaynak var.2 Kurallar ve SablonlarIsimlendirme kuralları ve sablonlar üzerinde en çok durulan ve muhtemelen en önemli tasarım desenleri.Isimlendirme kuralları yazılım gelistirilirken kullanılan tüm isimlendirmelerin ortak kurallara dayanmasını gerektiriyor. Örnegin JUnit adlı java bileseni, test metodlarını, isimlerinin basında yer alan test kelimesi sayesinde tanıyor.Sablonlar ise verilerin gösterimlerinin verilerden bagımsız bir sekilde yapılması ile ilgili. Örnegin XML verilerini göstermek için XSL sablonları kullanılır.1 ArayüzlerArayüz, yazılımdaki en önemli konsept. Yazılım gelistirirken problemleri mümkün oldugunca basit modellemek ve bu modellere mümkün oldugunca basit ve anlasılır arayüzler sunmak gerekiyor.Bu konudaki tavsiyeler söyle:Asla ileride kullanıslı olabilecek metodlar yazmayın. Minimalist olun. Daha önce yaptıgınız hatalar ile yüzlesmekten korkmayın. Hatalarınızı düzeltmeye açık olun. Sabırlı olun ve süreçten zevk alın. Adım adım ilerleyin. Kaynak:bildirgec.org
13 Haz 2008 Code Behind Tarafında Javascript Çalıştırma Kategori: Yazılım Etiketler: ASP.NETYazılım 4 Yorum Page.RegisterStartupScriptBu komut ile code behind tarafında javascript kodlarını çalıstırabiliyoruz. Bu en çok ASP.NET`de messagebox neden yok diyenlerin isine yarıyor :) Page.RegisterStartupScript metodunu çalıstırırabilmemiz için iki parametre yollamamız gerekiyor. Bunlar key ve script`dir.Key parametresi çalısacak script için benzersiz bir key, Script parametresi de client da çalısmasını istedigimiz scriptdir.string alert = "<script language=JavaScript>alert(`ASP.NET Messagebox`)</script>";Page.RegisterStartupScript("x", alert);
25 Şub 2008 Programci Çocugun Pratik Zekasi Kategori: Geyik Etiketler: Yazılım 4 Yorum Ögretmen kagitlari uçak yapip onlari sinifta atan ögrencisine ceza verir. Tahtaya 500 defa "Sinifta kagitlari uçak yapmayacagim" yazmasini ister. Oda pratik bir zeka ile isi halleder :)))
11 Şub 2008 Yazılım Uzmanı Olamamanın 10 Kanıtı Kategori: Yazılım Etiketler: MicrosoftYazılım 2 Yorum Adem Aktepe'nin Sitesinde gördüm ve gerçekten dogru bilgiler oldugu için bebde blogumda yayınlamak istedim. Yazılım uzmanı olup olmadıgınıza siz karar verin :) Yazan: Justin James1: Kendi kendine ögrenmek yerine kursları tercih ediyorsunuzYazılım Uzmanı ilk ise basladıgında gerekli tüm bilgiyi biliyor oldugu varsayılır. Firmanın belirli bir egitim politikası olsa bile gerçekte firmanın yardımı ile alacagınız egitimler hiç bir zaman gerçeklesmez. En iyi ihitimalle bir iki kitap almanız için bir ödenek ayrılır. Yönetim ekibinin düsüncesine göre yazılım uzmanı problem çözmeyi bilen akıllı bir kisidir ve bu yüzden de egitime ihtiyacı yoktur. Öte yandan kurs masrafları karsılanan yazılım uzmanının her zaman firmayı terkedip gitme ihtimali oldugu için firmanın yatırım yapması pek düsünülemez (olsa iyi olurdu tabii ama gerçek hayat bu). Bu durumlar göz önüne alındıgında kendi kendinize ögrenebiliyor olmanız gerekir. Eger bu disiplin sizde yoksa yazılım uzmanı olmayı aklınızdan bile geçirmeyin.2: Normal çalısma saatlerini seviyorsunuzYazılım projelerinin geç bitme olayını herkes bilir. Zamanında biten projeler bile projenin hayatı boyunca çogu kereler geç kalma durumuna düsmüstür. Eger 9'dan 5'e bir iste çalısmayı seviyor ve yazılım projelerinin uzun çalısma saatlerine ve gecelemelerine dayanamayacagınızı düsünüyorsanız yazılım uzmanı olmayı aklınızdan çıkarın. Patronunuz, ürünün zamanında müsteriye ulastırılmasını, sizin oglunuzun spor müsabakasından yada televizyonda seyretmek istediginiz programdan daha önemli tutacaktır.3: Küçük maas artıslarını kıdem yükselmesine tercih ediyorsunuzTeknolojik degismeleri uygulamayan bir firmada çalısmıyorsanız, simdi bildiginiz seyler seneye ya geçersiz yada az ödeyen konuma gelecektir. Bugün gözde olan teknolojiler seneye isimleri bile hatırlanmayan garip teknolojiler olabilir. Isin sırrı hızlı biçimde degismektir. Yeni teknolojileri hızlı (herkesden önce) ögrenip konu hakkında otorite olmaya bakın. Hiç yeni bir teknoloji ögrenmeden aynı koltukta oturup, maasınıza gelecek zammın hayat standardınıza yetecegini düsünüyorsanız yanılıyorsunuz. Ya deneyimlerinizi ilerletip aynı firmada kıdem yükseltmeli yada baska bir firmaya geçerek aldıgınız maası yükseltmelisiniz.4: Ekip çalısmasında insan iliskileriniz pek iyi degilYazılım uzmanları her ne kadar a-sosyal insanlar olarak bilinsede bir araya geldiklerinde hararetli konusmalar yaparlar ve kendileri gibi olan insanlarla hemen kaynasıp sosyallesirler. Hangi dükkanda indirim var veya dün aksamki diziden bahsetmedikleri için dısarıdan kulak misafiri olanlara Fransızca gibi gelir ama aslında çok sosyal insanlardır. Ekip içinde çalısamıyor ve iletisimin düsük oldugunu düsünüyorsanız yada ekip arkadasları ile baglantı kuramıyorsanız; problem genellikle sizdedir. Aynı deneyimleri yasamamıs kisilerin baglantı kurmaları beklenemez.5: Kolayca sinirleniyorsunuzYazılım dünyası pek çok engellerle doludur. Belgeler genelde tam degildir, sizden önceki yazılımcı okunmaz bir kod yazmıstır, proje müdürünün anlasılmaz kuralları vardır, herkesin uyması beklenen... liste daha da uzatılabilir. Sonuç olarak kimse sürekli bela okuyan ve ekrana küfür eden birisi ile aynı çatı altında olmak istemez. Eger 8 saatlik bir ugrasın sonunda konuyu 10 dakikada çözebileceginizi görüp deliriyorsanız bu kariyer sizin için degildir.6: Ekip elemanlarının fikirlerine kapalı isenizYazılım gelistirmede genelde problemlerin birden fazla çözümü vardır her yigidin bir yogurt yiyisi oldugu gibi. Eger gelen kritikleri ve diger çözümleri göz ardı ediyorsanız önemli bir noktayı gözden kaçırıyor olabilirsiniz. Sektörde yani olan ve deneyimleri sizden az olan birinin yapacagı bir tavsiye size pek çok sey kazandırabilir. Tabii bu tavsiyeye önem verip uygularsanız.7: Detay adamı degilsinizProgramlama olayı komplex bir olaydır ve dikkat ister. Eger Conan The Barbarian filminden daha karmasık bir filmi izlerken kayboluyorsanız yada bir yeni nesil ev kredisi formunu doldururken zorlanıyorsanız yazılım uzmanlıgı büyük ihtimalle sizin için degildir. Bazen unutulan bir virgül, basarı ile basarısızlık arasındaki çizgiyi çizer. Eger bu virgülü arayıp bulacak yapıya ve sinir esnekligine sahip degilseniz kariyeriniz belli limitler içinde yer alır.8: Yaptıgınız isten onur duymuyorsunuzKitaba göre yazılım üretmek ve orta derece ile geçecek bir is çıkartmak mümkündür. Problem, kitapların sürekli güncelleniyor olmasıdır. Yazılım gelistirmek bir fabrika isi degildir. Fabrikada isler belirli bir prosedüre göre gider ve beyin seviyeniz ne olursa olsun prosedürü uyguladıktan sonra is ortaya çıkar. Yazılım gelistirme daha çok bilimsel bir istir ve bagımsız düsünce gerektirir ki bu da yaptıgınız isten gurur duymanızı saglar. Bir isi yanlıs yoldan yapıp üretime geçildiginde ancak yeteri kadar çalısmasını saglayabilirsiniz fakat göz ardı ettiginiz o hata problem açmıyor gibi görünsede ileride problem açacaktır. Yazılımcı olarak yaptıgınız isin gurur duyulacak bir is oldugunu düsünmüyorsanız ürettiginiz ürünün kalitesi düsük olacaktır ve kariyerinizin sürekliligi ile dogru orantılı olacaktır. Siz ayrıldıktan sonra arkanızdan konusulmasını istemiyorsanız (gerçi agzınla kus tutsan arkandan konusacaklardır) haysiyet ve onurunuzu korumak için yaptıgınız isin tam olmasına dikkat edin. En azından sizin içiniz rahat olur.9: Önce ates edip sonra soru soran tiplerden misiniz?Yazılım uzmanı bir parça kod yazmadan önce bir planlama asaması geçirir ve kod yazmaktan daha fazla zaman planlamaya ayrılır. Eger kod yazma aracınızı açıp Allah ne verdiyse kod yazmaya baslıyorsanız %100 ihtimalle iki ay sonra yazdıgınız kod tamamı ile degisecektir. Konu hakkında düsünen, planlayan yazılım uzmanı ise daha az hata ile daha kısa sürede kod yazacaktır. Çogu programcıların neden 10 parmak yazamadıgının nedeni de budur; isin zor kısmı ne yazacagını bilmektir. Eger düsünen bir insan degilseniz yazılım uzmanlıgı sizin için bir kariyer degildir.10: "Geek" tipini sevmiyorsunuzHaklı kimi nedenlerden dolayı, mühendis veya teknik kisilerin yakınında olmaktan hoslanmıyor olabilirsiniz. Eger Dilbert gibi bir kisilikten çekiniyorsanız yazılım uzmanlıgını düsünmeyin bile. Tabii ki her yazılım uzmanı böyle degil ama sektörün büyük bir çogunlugunu olusturuyor ve aralarında haliniz yaman olur.Kaynak:ademaktepe.com
30 Ara 2007 Google’dan çalışanlarına inanılmaz hizmetler Kategori: Yazılım Etiketler: WindowsYazılım 1 Yorum ABD'li ekonomi dergisi Forbes, 446 sirketin 100 bin çalısanı arasında yaptıgı arastırmaya göre, Google ABD'de çalısılabilecek en iyi sirket seçildi. Bu seçimde, Google'ın çalısanlarına sundugu imkan ve hizmetler etkili oldu. Google'ın Kaliforniya'da bulunan 'Googleplex'inde çalısanlar isyerlerine köpeklerini getirip, ofislerinde köpekleriyle oynayabiliyorlar. Yalnız Google'ın buradaki tek sartı köpeklerin ofislerde 'ihtiyaçlarını' gidermemesi. Dünya çapında 10 bin kisiye istihdam saglayan Google'ın ana merkezinde 11 adet kafeterya bulunuyor. Kafeteryalarda sunulan taze meyve suları, çikolatalar, içeceklerin hepsi ücretsiz.ÜCRETSIZ CHECK UP IMKÂNI Googleplex'in bünyesinde voleybol sahasından masaj odalarına, dalga havuzlarından pinball makinelerine kadar birçok zevke uygun hizmetler bulunuyor. Googler (Google çalısanlarına verilen isim) çalısma saatleri içerisinde istedigi zamanda bu hizmetlerden yararlanabiliyor.Merkezde kimse takım elbise ve kravat takmıyor. Hatta ise pijamayla gelenler bile var. Google çalısanlarına bu merkezde ücretiz saç kesimi, kuru temizleme, araba servisi de veriyor. Google, çalısanlarının saglıgını da unutmamıs. Gün içinde 5 doktor herhangi bir saglık riskine karsı hazır bekliyor. Google, çalısanlarına ücretsiz check-up servisi de veriyor. Kaynak: Haber3.com