30 Nisan 2014 Çarşamba

Flat File mi? Sql Server mi?

 Büyük datalar ile çalışıyorsanız ve çok fazla temp datanız varsa bir süre sonra sunucunun işlemcisini çok fazla meşgul etmeye başlar ve uygulamanızın çeşitli noktalarını aksatabilecek IO exceptionları alırsınız.

 Sql Server her ne kadar Windows un bir parçası gibi çalışıyor olsa da ne kadar iyi konfigure ederseniz edin şayet bulk insert işlemleri yoğun bir projede çalışıyorsanız, Sql Server external bir uygulama gibi algılanmadığı için windows tarafından herhangi bir işlem kısıtlaması getirilmeden sistem kaynaklarını sonuna kadar zorlayacaktır. Geçmişte bir projede buna benzer bir problem yaşamış ve çözüm üretmemiz istenmişti.

 NoSql çözümleri üzerinde araştırmalara başladık. Projeye entegrasyon zaman maliyetinin diğer seçeneklere göre oldukca düşük olması ve olası bug fixing aksiyonlarının daha kısa zamanda neticelenmesi gibi etkenlerden dolayı diğer seçenekleri eleyip flat file db üzerinde çalışmalara başladım. Yaklaşık 800.000 satırlık bir data üzerinde yaptığım performans analizlerinin sonuçları oldukça etkileyiciydi. Test sonuçlarında Sql Server e kıyasla %70  ile %90  arası bir performans artışı olmuştu, ve bu sonuçlar da uygulamanın çiçek gibi olacağı anlamına geliyordu (:

 Ancak ek bilgi olarak şunu da belirteyim. Eğer bulk insert sırasında performans ihtiyacınız read işleminden daha fazla ise dataları byte formatında kaydedin. Bu işlem byte i tekrar text datasına parse ederken kullanacağınız zamanı başka işlemlerde kullanabilirmeniz anlamına gelir. Ama her şekilde byte de kaydetseniz text formatında da kaydetseniz, write yada read olayının birinde parse edilecek o datalar (:  Onun için hangi bölümde manevra alanınız daha fazla bunu tespit edin.

12 Nisan 2014 Cumartesi

Yazılımcıların izlemesi gereken 2 yapım


  Matrix'den sonra içeriğinde yazılım,yapay zeka barındıran yapımlar pek rastlayamadık. Bu yazıda yapay zeka ve kodlarla ilgili olanların ilgisini çekebileceğini düşündüğüm bir film ve bir televizyon dizisinden bahsedeceğim.

 Matrix yapay zeka ve teknolojiden ziyade felsefi yönleriyle ağır basan bir yapımdı. Bundan bir milyon yıl sonrasını da tahmin etmeye çalışırsak Matrix de bulunan yapay zeka ve teknoloji ortamının oluşması imkansız. Ancak felsefi konuları irdelersek başlık ile alakasız bir içerik ortaya çıkabilir (:

Gelelim ilk konumuza;

 Her
  Golden Globe ve Oscar ödülleriyle dikkat çeken filmde Joqun Phoenix(Thedore) in ve filmde hiç görünmemesine rağmen kurgunun inandırıcılığında önemli bir pay sahibi olduğunu düğündüğüm Samantha yı seslendiren Scarlett Johansson un etkiyeci bir performansı var.
  Senaryo kısaca gelişen teknoloji ile yapılan insansı bir yazılımın insanlar ile arasındaki ilişkileri anlatıyor.
  Eminim yapay zeka ile ilgili fikri olan birçok kişi kurgu hakkında benim gibi düşünmüştür. İnsan gibi konuşan bir makine yapılabilir, insan gibi düşünen bir makine de yapılabilir. İnsan gibi öğrenen hatta bunu çok daha hızlı yapabilen makine de yapılabilir.. Ama insan gibi duyguları olan bir makine! Bu olasılığı en baba yapay zeka hayalperesti düşünmez çünkü yapılamaz.


  Neden yapılamaz? Makinenin konuşması ve düşünmesi için nihai bir amaca hizmet etmesi gerekir. Bu amacın ne olacağına karar verebilir ve buna göre makineyi programlayabilirsiniz. Ama acıma duygusunun, merhametin yada Aşk ın hizmet ettiği nihai bir amaç yoktur. Beyin in referans aldığı matematiksel mantığa tamamen aykırıdır, Kalpten gelen bir emirdir. Kalp beynin aksine bencil değildir, aksiyon planlarını kendi çıkarına göre en iyi olabilecek şekilde hesaplamak yerine, acıma merhamet nefret yada Aşk etkenlerini de kullanarak hesaplar ve yorumlar.

 Bunun için sık sık kendimiz ile çelişkiye düşeriz. Önemli ve riskli bir aksiyon,eylem yapacağımız zaman beyin yeni yapacağınız bir aksiyon planının ne şekilde olması gerektiğini söyler. Ama kalbiniz bunun doğru olmadığını düşünür. Burada bir hakeme ihtiyaç vardır, bu da karakterdir. Karakter nihai karar vericidir, iki seçenekten birini seçer ve düşünce eyleme dönüşür. Ve bir karaktere sahip olan makine yapamazsınız..

 Tamam imkansız ama ya yapılsaydı? Ya makineleri duyguları olan ve bir karaktere sahip olan bir insan gibi programlayabilseydik,nasıl bir şey olurdu acaba? İşte senaryo burada ilgi çekici bir hale geliyor.

Dipnot olarak baltayla senaryonun beline beline vuran bir sahneden de bahsetmeden geçemeyeceğim. Asyalı çekik gözlü güzel bir kadın Thedore yi romantik bir akşam yemeği sonrası evine davet ediyor. Ama bizim Thedore robot Samantha ya aşık olduğu için onca ısrara rağmen teklifi geri çeviriyor,güzelim kadını ağlatıyor.(Burada az kalsın kapatıyordum)Bu sahne için Amerikan tarzı bir "Cmoon" ifadesi aşırı olmaz herhalde. Teknoloji ne kadar gelişirse gelişsin hiçbir erkek güzel bakımlı bir kadını bir robot a tercih etmez.Bu sahne bilimkurgu sahnesi olamaz (:


 Revolution

  "Her" kadar populer olmadığı için önce yapım hakkında kısa bir özet geçeyim. NBC yapımı bir televizyon dizisi.
Başrollerdeki oyuncular;
Yunanistan kökenli güzel oyuncu Tracy Spiridakos(Charlie Matheson),
Breaking Bad dizisinde Gustavo Fring roluyle hatırlayacağımız Giancarlo Esposito(Tom Neville),
Elizabeth Mitchell(Rachell Matheson)
Billy Borke(Miles Matheson)
Zak Orth (Aaron Pitman)

 Oyunculuk performansı olarak pek üst seviye diyebileceğimiz bir yapım değil, just it stop, dont please gibi repliklerin fazlalığı insanı rahatsız edebilecek duruma gelebiliyor. Yazılımcıların yada yazılıma ilgi duyanların en çok ilgi göstereceği karakter yetekli bir yazılımcı olan Aaron Pitman. Ama genel olarak değerlendirdiğimizde Tracy Spiridakos drama sahnelerinin hakkını sonuna kadar veriyor. Daha birçok yapımda görebileceğimizi düşündüğüm yetenekli bir oyuncu.

 Senaryo kısaca yaşanan teknolojik bir kıyamet sonrasında yaşananları ele alıyor. Bir askeri program için nano ve yazılım teknolojileri ile mikro boyutlarda robotlar üretiliyor.Ancak kontrolden çıkıyorlar ve saf enerji bağlamında her şeyi tükettikleri için ise elektrik kullanılamaz hale geliyor.

 Senaryoyu diğer tüm bilimkurgu dizilerinden ve filmlerinden ayıran bu robotların yetenekleri ve gerçekciliği. Robotlar nanotik boyutlarda olduğu için gözle görülmesi imkansız. Dünyanın her yerindeler, denizlerin dibinde yada insanların damarlarında,beyinlerinde dolaşıyorlar.Düşünceleri okuyabiliyorlar. Sürekli iletişim halindeler. Bahsettiğim "Her" filminin aksine bir duyguları yok, bir amaçları var,  daha fazla öğrenmek. Bu da senaryoyu Her filmindeki senaryoya göre daha gerçekçi yapıyor.

 Her şeyi bilen, her yerde olan,kimsenin göremeyeceği bir robot. Bir tür insan yapımı Tanrı.. Bu kesinlikle şimdiye kadar izlediğim diğer tüm bilimkurgu yapımlarında olmayan bir tema. Dünyayı ele geçirmek isteyen bir kötü adam olsaydım bu robotu yapmak için çalışmalara başlardım herhalde (:

 Konu hakkında yorumlarınızı bekliyorum efenim,keyifli seyirler (:

11 Nisan 2014 Cuma

Asp.Net webforms ile dinamik subdomain oluşturma


  Sanal subdomain oluşturma ihtiyacı hissedersek ve projemiz webforms ise işimiz biraz sıkıntılı. Ama çaresi yok değil. Google search sırasında webforms örnekli basit kayda değer bir kayıt bulamadım, genelde Mvc çözümleri ve dns servere user32.dll ile yapılan müdahaleler şeklindeydi. Bende diğer kaynaklara göre daha basit olduğunu düşündüğüm çözümü paylaşmak istedim benim gibi sorun yaşayanlar için (:

 Uzatmayalım, "www.domain.com/urun" gibi bir istek geldiği zaman ""www.domain.com/" isimli sitemizin dns ine göre sunucumuz isteği tanıyor ve cevap veriyordu. "test.domain.com" gibi bir isteğin de dns kaydı olmadığı için sunucumuz gelen isteği çözümleyemiyor ve cevap veremiyordu. Burası dikkatimi çekti, çünkü her ne kadar subdomain de olsa istek ".domain.com" olarak bitiyordu ve bu isteği bir yerde yakalayabilmemiz lazımdı. Ampul o an yandı ve olmayan subdomainleri karşılayabilmek için özel bir dns kaydı olabilirmi diye düşündüm. Kısa bir süre sonra sonuca ulaştım.

 Dns kayıtlarınıza "*.domain.com" isimli bir A kaydı daha eklediğiniz zaman gelen tüm subdomain istekleri iis default sayfasına yönleniyor. Yani "hede.domain.com" isimli bir subdomaininiz olmasa bile serveriniz isteğe cevap verebilecek hale geliyor.

 Buraya kadar güzel isteği yakaladık. Şimdi iki seçeneğimiz var.

 1- Sayfayı default pageden alıp gerçek sitemize yönlendireceğiz

 2- İsteği burada işleyeceğiz.

1. seçenek pek doğru sayılmaz,çünkü bir istek için bir iki işlem yürütmüş olacağız. 2. seçenek en mantıklısı. Ancak bu işlemi kullandığınız panellerde yapmanız biraz zor, IIS arayüzüne girip öyle yapmanız gerekli.

Burada işaretli olan site sayfamızın "*.domain.com" dns adresini ekledikten sonra olmayan domainleri karşılayacak olan default sitemiz.


Şimdi 1-Gelişmiş özellikleri tıklıyoruz ve ardından default web sitemizin dizinini gerçek web sitemiz ile değiştiriyoruz. 

Artık Default web sitemiz bizim gösterdiğimiz yerden cevap vermeye başlayacak. Ancak bu ayarları yaparken 2 sitenin de App Poollarının aynı seçenek olmasına dikkat edin.

Ancak istekleri Application_Start olayında işleyemiyoruz, yada henüz bulamadım (: Ama Application_BeginRequest olayında aşağıdaki gibi isteğimizi evire çevire kullanabiliriz.


Bu kadar (: Olabildiğince basit olarak açıklamaya çalıştım, herkese iyi çalışmalar.