Parallels Desktop’da Windows Ctrl+Alt+Delete Kombinasyonu

Her ne kadar Mac OS kullanmaya başlasakta Visual Studio kullandığımız için Windows’uz yapamıyoruz. Windows oluncada haliyle kitlenen programları Ctrl+Alt+Delete kombinasyonları ile zorla kapatmamız gereken durumlar oluyor. Aşağıdaki kombinasyon yardımcı olacaktır.

CtrlAltDel1

Genç ve Fit’in Kardio Antremanları

Yazılım geliştiriciler olarak neredeyse uyku haricinde bütün zamanımızı bilgisayar başında uygulama yazarak geçiriyoruz. Ciddi projelerde aldığımız için zaman ve verimlilik bizim için çok önemli hale geldi. Aslında bakarsanız belli bir saatten sonra verimli çalışmak çok zor oluyor hatta neredeyse imkansız. Kondisyonumu ve yaşam standardımı yükseltmem için, sporu hayatımın içine almam şarttı. Son bir aydır birer gün arayla ortalama 4 km. yakın bir yolu koşuyordum ve belediyelerin sağladığı egzersiz aletlerini kullanıyordum, güzel ter atıyordum ve nabzımın da o kadar çok yükseldiğini sanmıyorum ama şöyle bir sorunum var. Sol ayak bileğimi 3 defa çatlattığım için bir yerden sonra bana ciddi ağrı yapıyordu. Eve geldiğimde 15 dk. buz yapıyordum. Spor antrenmanımı değiştirmem gerektiğini anladım.

Ama bu spor bile benim daha verimli çalışmamı %80 arttırdı diyebilirim, ayakta kalmak için kahve bile içmeme gerek kalmadı.

İnternette kısa bir araştırmadan sonra Genç ve Fit sitesini buldum. Kondisyonuma uygun olduğunu düşündüğüm için “Full Plyometrics Çabukluk, Kondisyon ve Evde Kardio Antrenmanı“ uygulamaya karar verdim. Videodaki neredeyse tüm hareketleri yaptım tabii ninja zıplaması haricinde :) ve şunu anladım ki, ben 1 ay boşu boşuna koşup ayak bileği ağrısı çekmişim. Kardio antrenmanı ile koşmaya göre çok daha fazla terledim hem de videonun yarısında öyle böyle değil, nabzımda ölçtüğüm kadarıyla 160-170 çıktı.

Araştırmalarıma bakarsak sadece kardio antremanı yetmiyor ve evimde çalışma istasyonu olması benim için ayrıca büyük bir şans. 20 defa 3 set tekrar kol, göğüs, sırt ve omuz çalışıyorum.

Bunlar sonucunda fark ettiğim değişikler ise sırtımda, kanatlarımda, ön ve arka baldır kaslarımda ve dizlerimin yanında kaslarımın çalıştığını hissediyorum. Çok daha verimli ve spora karşı isteğim çok daha artıyor. Bu mesleki olarakta beni daha verimli çalışmamı sağladı.

Eğer herhangi bir sağlık propleminiz yoksa beslenme programınızı oluşturmak için buraya bakmanızı tavsiye ederim.

Meslektaşlarım ister benim gibi biraz kilonuz olsun, isterseniz zayıf olun ama hayatınıza sporu alın. Verimliliğinizin ne kadar yükseldiğini anlayacaksınız.

Çok Katmanlı Mimari (NLayered)

MVC’ye geçiş yaptığım dönemden bu yana Model, View ve Controller katmanları gördükçe kodlarım nedense bana çok karmaşık gelmeye başladı. Kendi kuruntum herhalde dedim ama biraz araştırma yaptıktan sonra analar ne developer doğuruyor demekten kendimi alamadım :)

Çok katmanlı mimarı hakkında Microsoft’un best practicelerini incelemenizi tavsiye ederim. Veritabanı işlemleri yapıldığı DAL (Data Access Layer), arayüz ile veritabanı arasındaki işleri yapan BLL (Business Logic Layer) katmanlar hakkında http://msdn.microsoft.com/en-us/library/aa581776.aspx (DAL) ve http://msdn.microsoft.com/en-us/library/aa581779.aspx (BLL) sayfalarını incelemenizi tavsiye ederim.

Bunlar haricinde katmanlar arası veri akışı sağlayabileceğiniz Entities, kendi helperlarınızı tutabileceğiniz Utilities ve verilerinizi dışarıya açmak için Service katmanlarıda oluşturabilirsiniz.

Bu mimari uygulama sürecin uzatsada yapınız mükemmel şekilde hiyerarşik ve modüler hale geliyor. Hele ki takım çalışması olan uygulamalarınız için size kolaylıklar sunuyor.

Katmanlı mimariyi anladıktan sonra, kendimi biraz daha Yazılım Geliştirici olduğumu hissetmeye başladım :)

Html.BeginForm’u Post Sonrasında Js ve JQuery İşlemleri

Üzerinde çalıştığım projemde dosya yükleme eklemem gerekiyordu. Bütün view’lerimde Ajax.BeginForm ile post ediyordum ve post sonrası js işlemleri için parametre olak OnSuccess kullanıyordum. Upload işlemini Html.BeginForm ile yapmak zorunda kalınca OnSuccess’den mahrum kaldım.

Html.BeginForm ile post sonrasında js kütüphanelerimi aşağıdaki gibi bir yöntemle çalıştırdım :)

JS Kütüphanesi:

function querystring(key) {
    var re = new RegExp('(?:\\?|&)' + key + '=(.*?)(?=&|$)', 'gi');
    var r = [], m;
    while ((m = re.exec(document.location.search)) != null) r.push(m[1]);
    return r;
}

$(document).ready(function () { 
    if (querystring('i') == "FRAME_CLOSE") {
        alert("Başarıyla eklenmiştir.");
        parent.jQuery.fn.colorbox.close();
    }
    else if (querystring('i') == "DOSYA_BOYUT") {
        alert("Dosya boyutu en fazla 10 MB olabilir.");
    }
    else if (querystring('i') == "DOSYA_TIP") {
        alert("İzin verilen dosya formatları: *.jpg, *.pdf, *.doc, *.docx, *.xls, *.xlsx, *.udf");
    }
    else if (querystring('i') == "DOSYA_YOK") {
        alert("Lütfen yüklemek istediğiniz dosyayı seçiniz.");
    }
    else if (querystring('i') == "HATA") {
        alert("Lütfen formu kontrol ediniz.");
    }
    else if (querystring('i') == "WEB_HATA") {
        alert("Beklenmedik bir hata oluştu. Lütfen tekrar deneyiniz.");
    }
});

Controller.cs:

[HttpPost]
public ActionResult FileUpload(int id)
{
     try
     {
         return Redirect("/Muvekkil/EvrakYeni?i=FRAME_CLOSE");
     }
     catch (Exception ex)
     {
         return Redirect("/Muvekkil/EvrakYeni?i=WEB_HATA");
     }
}

OpenSSL Heart Bleed Zafiyeti ve BugFix

İnternetin çok büyük bir kısmında kullanılan şifreleme teknolojisinde “Heartbleed” olarak tanımlanan ciddi bir güvenlik açığı tespit edildi. Tumblr da bundan etkilenmiş durumda.

Adres çubuğunda gördüğümüz; parolalarımızı, kişisel postalarımızı, kredi kartı bilgilerimizi koruduğunu düşündüğümüz küçük kilit işareti (HTTPS) aslında tüm bu gizli bilgileri bu açığın farkında olan kişiler için erişilebilir kılıyormuş.

İnternet üzerindeki tüm sitelerde özellikle de yüksek güvenlik gerektiren e-posta, dosya depolama ve banka hizmetlerini gerçekleştirdiğin alanlarda kullandığın ve bu güvenlik açığından etkilenmiş olabilecek tüm parolaları değiştirmek iyi olacaktır.

Teknik Referans: http://www.kayhankayihan.com/openssl-heartbleed-zafiyeti-ve-bugfix/

Windows Azure Dosya Transferi

Üzerinde çalıştığım projeyi Windows Azure’de test etmek istemiştim. Projeyi publish yaptıktan sonra Windows Azure’ye dosyaları FTP ile transfer ettim. Azure’de siteyi çalıştırdığımda web.config hatalarından tutunda, referancelere kadar bir sürü hata aldım. Üzerinde 1-2 gün kafayı yedikten sonra, bin klasörü içindeki dll’lerin dosya boyutlarını fark ettim. Publish edilen dosya boyutları ile transfer edilenler aynı değildi. Sizde bunu gözden kaçırıp benim gibi kafayı ütülemeyin :)

HttpContext.Session Özelliği

Bilişim kariyerimdeki yazılım geliştirme ile uğraştığım senelere bakacak olursak, her halde en bıkmış olduğum olduğum konu sessionlardır.

Ne zaman üyelik sistemi veya session ihtiyaç duyduğum bir uygulama üzerinde uğraşsam beni bir huzursuzluk kaplıyor :) Yıllardır bu bende tramva olarak sürer ve en sonunda bununla ilgili birşeyler yazıp içimi dökmek istedim.

Her yazılımcının bildiği gibi HttpContext.Session özelliği kullanımı üç başlık altında özetleyebiliriz. Uygulamaları olarak gideceğimiz için ilk önce string tipindeki değişkenlerimizi oluşturuyoruz.

string _ad = "Hüseyin";
string _soyad = "Yıldırım";
string _sehir = "Manisa";

Sessionlarımıza değişkenlerimizi kayıt ediyoruz.

Session["ad"] = _ad;
Session["soyad"] = _soyad;
Session["sehir"] = _sehir;

Sessionlarımızdaki değeri okuyoruz.

_ad = (string)(Session["ad"]);
_soyad = (string)(Session["soyad"]);
_sehir = (string)(Session["sehir"]);

Web Form sınıfı dışında ise böyle kullanıyoruz.

HttpContext context = HttpContext.Current;
context.Session["ad"] = _ad;
_ad = (string)(context.Session["ad"]);

Teoride her şey ne kadar kolay ama uygulamada hatam nerede yaaa ama bulacağım sorunu ;)

Azure SQL Server Migration Wizard

Üzerinde çalıştığım ASP.NET MVC 4 ile yazdığım projeyi Windows Azure üzerinden yayınlamayı planladığım için ufak bir deneme yapmak istedim.

Web sitesini hizmeti oluşturdum, FTP ayarlarını yapılandırıp publish ettiğim dosyaları hostinge transfer ettim.

Sıra  SQL Server hizmetine veri tabanını import etmeye gelmişti. SQL Server hizmetini ekleyip, veri tabanımı oluşturdum ama verileri atamadım tabi :) SMO ile bağlanmak istediğinizde bağlanmayacaktır, çünkü IP adresinize SQL Server’ınıza bağlanmak için izin vermeniz gerekmektedir.

azure_sql_server_ip_izin

 

Bağlansanız dahi hemen kolay olmuyor. Bende SQL Server Express 2008 R2 kurulu ve backup, generate script olarak datalarımı göndermeye çalışsam da başaramadım.

İnsan kendi kendine bu kadar zor olamaz diyor. Google’de araştırmalarım sonucunda Azure SQL Server Migration Wizard‘ı buldum.

azure_sql_server_migration_wizard

Programı çalıştırdığınız da yapmak istediğinizi seçin ve ilk önce kaynak SQL Server bilgilerini girerek veri tabanızı seçin, sonrada Azure SQL Server bilgilerinizi girerek datalarınızı zahmetsizçe gönderebilirsiniz.