20 Mayıs 2014 Salı

Google Chrome SSL Hatası ve Çözümü

 Son dönemde ISP sağlayıcılardan kaynaklandığını düşündüğüm bir sorun oluştu. Adres çubuğuna bir keyword girdiğinizde SSL hatası uyarısı verip sayfa ya hiç açılmıyor yada olması gerekenden çok daha geç açılıyor.
 Bu durum Google ile sıkca işi olan biz Developer'lar için cinnet sebebi olabilecek seviyelere gelebiliyor. Aşağıda denediğim bir yöntem ile bu durumu aştım. Aslında yaptığım sadece SSL i biraz daha az kullanmak, ama işe yarıyor.

* Ayarlar kutusuna gelin,"arama motorlarını yönet" butonuna basın.
    1. kutucuğa:  http://64.15.117.59
    2. kutucuğa:  http://64.15.117.59/search?output=search&q=%s

Yazıp kaydedin,sorun düzelecektir.

17 Mayıs 2014 Cumartesi

Asp.Net webforms ile dinamik subdomain oluşturma 2

Daha önce de bu çözümün farklı bir yolunu açıklamıştım.Daha önceki makeleyi buradan okuyabilirsiniz. Ancak daha kısa ve daha sorunsuz bir yolu daha varmış, o kısmı da paylaşmak istiyorum.

IIS Maneger i açıyoruz ve sitemizin bindings kısmına girip aşağıdaki gibi bir kayıt ekliyoruz. Ancak bu kaydı daha öncesinden default web sitenizden kaldırmış yada default web sitenizi suspend durumuna getirmiş  olmanız gerekli.


Bu kayıt ne işe yarıyor? Bu kayıt ile IIS e şu komutu vermiş oluyorsunuz. Sunucuya 80 portundan gelen tüm istekleri bu web sitesine yönlendir. Böylece olmayan bir subdomain isteği dahi olsa isteği işleyebililir hale geliyorsunuz. İyi çalışmalar.

13 Mayıs 2014 Salı

Ajax Html Data Post ile Data Encoding Problemi

 .Net 3.5 ve üzeri bir framework ile çalıştığımız projede Ajax post ile html data transferi yapmak istediğinizde aşağıdaki gibi bir hata alırsınız.
  Bunun sebebi, .net validation kütüphanesinin gelen veriyi tehlikeli bir data olarak kabul etmesidir. Bu datayı Jquery & Javascript ile ne kadar encode etmeye çalışırsanız çalışın, hatadan tam olarak kurtulamazsınız, çünkü ilginç bir şekilde client side yaptığınız encode işlemleri her zaman aynı sorucu çıkartamayabiliyor.
  Ancak aşağıdaki kodu Web.Config dosyasına eklediğiniz takdirde bu problemi bir daha yaşamazsınız. Server 'de ve local makinenizde aynı sonuçları üretir.

<httpRuntime requestValidationMode="2.0" />

Jquery ile QueryString işlemleri

JavaScript ile  client side olarak QueryStringler üzerinde işlem yapacaksanız, aşağıdaki methot a QueryString ismini parametre olarak verdiğinizde size verilen parametreye ait QueryString value sini geri döndürecektir.

   $.fn.GetQueryString = function (name) {
        name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
            results = regex.exec(location.search);
        return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));

    }

Json serializer ve Datetime verileri

 Veritabanından DateTime tipinden gelen bir veriyi Json formatında serilize etmeye çalıştığınız anda json data size kullanmak istediğiniz gibi gelmez.
 Aşağıdaki methot ile en basit haliyle, gelen Json verisinden isteğiniz gibi bir çıktı üretebilirsiniz.

    $.fn.JsonDatetime = function (jsonVal) {
        if (jsonVal==null) {
            return null;
        }
        var ticks_string = jsonVal.substring(6);
        var ticks_number = parseInt(ticks_string);
        var orgDate = new Date("dd-MM-yyyy");
        orgDate = new Date(ticks_number);
        var parsedDate = (orgDate.getDate() + "-" + (orgDate.getMonth() + 1) + "-" + orgDate.getFullYear());
        return parsedDate;

    }

5 Mayıs 2014 Pazartesi

Kötü yönetim ve zararlarından bir kaçı.

   
 Kötü yönetim en büyük tahribatı kuşkusuz zaman üzerinde yapar. Bu yazımda zaman maliyetini en çok israf eden ve en anlaşılabilir olması açısından Start-up projelerinde diğerlerinden daha sıkca rastlanan bir durumun örneğini vermek istiyorum.

 Örneğin projemize teknik bilgisi ekipdeki developerlere göre çok düşük bir teknik yönetici atandı, yada yöneticiniz zaten böyle biri. Adam gitmiş seçkin üniversitelerden mezun olmuş, proje yönetimi ile eğitimler almış,farklı bir alanda daha önce yöneticilik yapmış.
Sorumlu olduğu alanlar projedeki hataların giderilmesi, development in geliştirilmesi ve ekibin yönetimi. Yöneticimiz üniversite hayatında veritabanı ve kod eğtimi almış ama yaptığı en büyük örnek proje bitirme ödevi olarak yaptığı tırt bir proje, web den de bihaber.

 Neyse, start veriliyor ve bir süre sonra projenin bir bölümünde sorun oluşuyor. Toplantı tertipleniyor, developer çalışanlar problemin detayı hakkında yöneticiyi bilgilendiriyor. Bu toplantı teknik seviyesi yeterli bir yöneticiyle olsa çok kısa sürede biter, hatta bu toplantıya yönetici sadece kendisi girerdi. Burada harcanan ciddi bir zaman maliyeti söz konusu. Bilgilendirme sonucunda yöneticinin teknik bilgisi yeterli olmadığından bir sonuç çıkartamıyor. Sonuç için tekrar developerlerden fikirler alıyor. Aldığı bu fikirlerden eleme yapıp problemin çözümü için en uygun stratejiyi belirliyor ve buna göre bir aksiyon planı oluşturuluyor.

 Bu başlı başına hatalarla dolu ve acemice bir planlamadır, nedenlerine basitçe şöyle sıralayabiliriz.

 1. Problemin teşhisi ve teknik detaylar için yöneticinin çok ciddi bir bilgilendirme alması gerekmektedir,ki bu her zaman doğru yapılamaz, eşittir gereksiz zaman maliyeti.

2. Developer kod yazmak için vardır, yönetici ise düşünmek ve iş geliştirme için. Developer i dinlemek iyidir. Ancak bir developer gününün büyük kısmını kod yazmak ile geçiriyordur ve teknik de olsa büyük resmi göremez,kendi bakış açısıyla yaptığı değerlendirmeleri vardır,faydalıdır. Ancak yapılacak en iyi aksiyon planının developerden geleceğini beklemek yeterince düşünmesini bilmeyen,yapılan çalışmalardan bihaber olan teknik yöneticilerin işidir. Daha da komik olanı uygulanan başarısız bir çözüm stratejisi sonucu  bu yöneticiler genelde sorumluluğu developerlerin üzerine yıkar (: Projeye hiçbir katma değerleri olmaz.

3- Developerler arasında fikir ayrılıkları olabilir, bir kısmı farklı çözümü savunur. Birini seçtiğiniz takdirde diğerleri motivasyon kaybına uğrar. Alınan kararların tüm ekip tarafından doğru bir çözüm olarak algılanabilmesi için yöneticinin fikirlerine saygı duyulmalıdır,en doğru düşüncenin bu olacağı ekip tarafından benimsenmelidir. Bu konuyu aşağıda detaylandıracağım.

3. Developer sıkılır, bu can sıkıcı toplantılarda asık suratlıdır ve bir an önce toplantının bitirilip çalışmalara başlamak ister, çünkü bu toplantıdan bu problem için diğerlerinin faydalı bir çözüm önerisi çıkarma olasılığı yoktur,ona göre zaman israfıdır,haklıdır. Yöneticisinin diplomalı torpilli bir salak olduğunu düşünür, kendi bakış açısıyla yine haklıdır. Çünkü yönetici kendisini değil, kendisi yöneticiyi yönlendirmektedir. Hiç bir konuda özgün ve sağlıklı fikri olmayan, development aşamasına en ufak bir faydası olmayacağını düşündüğü bir yöneticisi vardır. Tüm bu olumsuz gelişmeler developer üzerinde isteksizlik yaratır.

 Genel olarak değerlendirirsek bir yönetici öncelikle yönettiği insanların saygısını kazanmalıdır. Bu değer en iyi, karşılaşılan problemlerde ekibine vereceği işe yarar hayat kurtaran yönlendirmeler, tavsiyeler ile kazanılır. Bu beyaz yakalı personelin çalıştığı tüm sektörlerde böyledir. Hiçbir çalışan çalıştığı yerde problem yaşayıp performansı düşsün proje aksasın istemez, tam tersi performansı yükselsin, proje kazandırsın, göze batsın ve zam alsın ister. Ancak bazı yerlerde tıkanır, baskı altına girer. Bu anlarda en çok ihtiyaç duyduğu şey işe yarar bir çift kelime, bir tavsiyedir, etrafta dolaşan kafasında ampul yanan birisidir. Bu anlarda yöneticisinden gelecek harika bir çözüm önerisi onun yöneticisine karşı olan saygı ve sevgisini arttıracak(en sağlamından) etkenler olacaktır.



  Ve bu tavsiyeyi verebilecek yetenek ise diploma ile, dolgun cv ile oluşmaz, benzer sıkıntıları daha önce pek çok kez yaşanmış tecrübe edilmiş olması gerekmektedir. Bu yeteneği geliştirecek kaynak biraz zeka, çokça tecrübedir.