Osman KURT

Yazılım Uzmanı | MVC Eğitmeni

ASP.Net MVC de Ajax İşlemi

Bu yazımız da asp.net mvc de sayfamızı post etmeden database'mize kayıt yapmaya öğreneceğiz.

İlk olarak yapmamaız gereken 1 adet mvc projesi oluşturmak (Ben mvc 4 oluşturdum). Üzerin de çalışma yapabilmemiz için bir adet database oluşturuyoruz ve 1 tablo açıyoruz içine (DataBase: KariyerSoftDB, Table Name: KariyerSoftDB, Alanlar: PageID(int), PageName(nvarchar(50)), PageDescriptions(nvarchar(max))) olarak ayarlıyoruz.

Daha sonra Model klasörümüze gelerek içine alt kısımda ki propertilerimizi ve ekleme işlemin de kullanacağımız kodlarımızı yazıyoruz (Uyeler.cs).

 

[Serializable]
    public class Uyeler
    {
        public string PageName { get; set; }
        public string PageDescriptions { get; set; }

        public bool Ekle(Uyeler uye)
        {
            bool sonuc = false;
            SqlCommand cmd = new SqlCommand("Insert into Tbl_Page (PageName,PageDescription) values (@PageName,@PageDescription)", baglan.baglanti);
            cmd.Parameters.AddWithValue("@PageName", uye.PageName);
            cmd.Parameters.AddWithValue("@PageDescription", uye.PageDescriptions);
            if (ConnectionState.Closed == baglan.baglanti.State)
                baglan.baglanti.Open();
            int deger = cmd.ExecuteNonQuery();
            if (deger > 0)
            {
                sonuc = true;
            }
            else
            {
                sonuc = false;
            }
            return sonuc;
        }
    }

    [Serializable]
    public class Sonuc
    {
        public string Mesaj { get; set; }
    }

 

Bu arada kodlarımız arasın da bulunan Baglan.cs classımız var unutmadan onu da oluşturalım.

 

public class baglan
    {
        public static SqlConnection baglanti = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=KariyerSoftDB;Integrated Security=True");
    }

 

Evet şimdi model ile olan işimiz bitti ve views kısmına geçiyoruz. Bu kısım İçin alt kısımda ki kod yapımızı kullanacağız. Yaptığımız işlemler ise bir form oluşturmak ve oluşturduğumuz bu formlarda ki runtime verileri script yardımı ile alarak json veri tipin de model yardımı ile controller kısmın da işlemek. Kodları incelediğiniz siz de emin ki mantığını kavrayacaksınız.

    <script type="text/javascript">
        $(function () {
            $("#uyeKayit").click(function () {
                var gelen = Veriler();
                var jsonData = JSON.stringify(gelen);
                $.ajax({
                    url: "/Home/UyeKayit",
                    type: "Post",
                    data: jsonData,
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {
                        var sonuc = data.Mesaj;
                        $("#Sonuclar").html(sonuc);
                    }
                })
            });
        });

        function Veriler() {
            var PageName = $("#pagename").val();
            var PageDescriptions = $("#pagedescriptions").val();
            return (PageName == "") ? null : { pagename: PageName, pagedescriptions: PageDescriptions };
        }
    </script>
    <h2>
        Mvc 3 ile Json Veri Gönderimi</h2>
    <div style="font-family: Verdana; font-size: 12px;">
        <div style="padding: 15px 0;">
            <span id="Sonuclar"></span>
        </div>
        <div style="padding: 5px 0;">
            Sayfa Adı</div>
        <div>
            <input type="text" id="pagename" />
        </div>
        <div style="padding: 5px 0;">
            İçerik</div>
        <div>
            <input type="text" id="pagedescriptions" />
        </div>
        <div>
            <input type="submit" value="gönder" id="uyeKayit" />
        </div>
    </div>

 

Son olarak controller kısmımız da kodlarımızı işlemeye geldi sıra.

 

[HttpPost]
        public ActionResult UyeKayit(Uyeler uyeler)
        {
            Uyeler uye = new Uyeler();
            uye.Ekle(uyeler);
            string bilgiler = string.Format("Adınız : {0}, Soyadınız : {1}", uyeler.PageName, uyeler.PageDescriptions);
            //return Json(new Sonuc() { Mesaj = bilgiler });
            return Json(new Sonuc() { Mesaj = "İşleminiz Başarı İle Gerçekleşmiştir" });
        }

 

Kaynak Kod:

osmankurtnetjson.rar (6,48 mb)

Yararlı olması dileğiyle;

Osman KURT

.Net Yazılım Uzmanı

Windows 8 Deneyimim

Yaklaşık 1 haftadır kullanmakta olduğum windows 8 hakkın da sizlere ilk izlenimlerimi aktarmak için bu yazıyı yazıyorum. Belki de ilk söylenecek şeylerden 1 tanesi microsoft yine yapmış :D Windows 7 ile gelen iyi işler furyası windows 8 ile devam ediyor bence. Belki inanmayacaksınız ama pc gerçekten de windows 8 ile başka bir hal aldı. Gerek grafik arayüzü gerekse de performansı ile başka bir bilgisayar oldu diyebilirim. Düşük ram tüketimi sayesin de daha fazla işlemi aynı anda kasmadan yapma şansınız var. Ayrıca gereksiz görsellikler saf dışı bırakılmış ve oluşturulan pencerele üst kısımların da iconlar eklnerek işlemlerin daha hızlı yapılması sağlanmış.

Gelelim metro arayüze öncelikle şunu söylemem gerek ki kotalı bağlantılar için metro arayüzü kabus olabilir çünkü inanılmaz bir veri akışı var ama ufak bir işlemle bu akışlar çevrimdışı bırakılabiliyor. Herşey bir tıkla elinizin altın da . Microsoft mühendisleri gerçekten güzel düşünmüş. Ayrıca Microsoft google modelini de iyi kavramış tek bir hesap üzerinden (hotmail, outlook) bütün işlemlerinizi gerçekleştirebiliyorsunuz ki windows 8 harika bir engterasyon ile geliyor.

Artık facebook ya da twitter gibi sosyal ağlara girmanize gerek kalmadı çünkü hepsi metro arayüz de mevcut.

Hele bir de skype var ki sormayın gitsin. Bütün herşeyle entegre çalışabiliyor. Messenger'ın neden öldüğü belli oldu. Hem masaüstü hemde metro uygulaması süper bence.

Diğer metro uygulamaların dan bahsetmiyorum zaten anlatmak yetmez yaşamak gerek.

Ama önemli nokta da şu metro uygulamaları geliştirmek. Biz developer için metro uygulamaları hazırlamak harika olur. Microsoft onu da düşünmüş ve bizim için alt yapıyı hazırlamış. Ne diyeyim ellerine sağlık Microsoft.

Geçen ineta-tr ekibinin gerçekleştirdiği bir seminere gittim Microsoft İstanbul ofisin de gerçekleşti. Orada bir kaç kişi metro demo uygulaması geliştirdi, gerçekten de kolay ve zevkli bir iş hazır tepmlateler sayesin de işiniz oldukça kolaylaşıyor. yalnız xmal ile çalışmayı bilmekte fayda var.

Şimdiden kolay gelsin size görüşmek üzere,

Osman KURT

.Net Yazılım Uzmanı

Neden ASP.Net MVC Diyenlere Gelsin

ASP.NET Web Forms’un Nesi Yok ki!?

Aslında kısa cevap olarak, “fazlası” bile var denilebilir. Evet belki de Web Formları ilk zamanlarda çok iyi bir fikirdi. Fakat gerçekte durum biraz daha karışık. Gerçek hayatta Web Formlarını projelerde kullandıkça bazı durumlar ortaya çıkmıştır. Tabi bu durumlar zaman içinde bir çok kullanıcının deneyimi ile ortaya çıkmış eksikliklerdir. Bu eksiklik ya da gereksiz fazlalıkları şu şekilde maddelendirebiliriz:
•View State Ağırlığı: View State olarak bilinen, istekler arasında durumları muhafaza etme mekanizması, client ve server arasında çok büyük boyutlarda veri transferine sebep oluyor. Bu veri boyutu, mütevazi bir sitede bile yüzlerce kilobayta varabiliyor. Üstelik bu veri, gönderilmekle kalmıyor tekrar geri geliyor ve her istekte veri iletimindeki miktar katlanarak büyüyor. Bu server üzerindeki bandwidth kullanımını artırdığı gibi, sitenin yavaş tepkilerinden dolayı site ziyaretçilerinin sinirlerinin bozulmasına da sebebiyet veriyor.
•Sayfa Yaşam Döngüsü: Sayfa yaşam döngüsünün önemli bir parçası olan, client yani istemci tarafındaki event‘lar(olaylar) ile server tarafındaki event handler kodları arasındaki iletişim, aşırı derecede kompleks, karışık ve bir o kadar da narin, çıt kırıldım olabiliyor. Çok az geliştirici View State hataları olmadan çalışma zamanında bileşenlerin(kontrollerin) üzerinde düzgün bir şekilde değişiklik yapabiliyor ya da çok az geliştirici gizemli bir şekilde çalışmayan event handler‘ları farkedebiliyor.
•Kod Ayrımı Hakkındaki Yanlış Düşünceler: ASP.NET’in code-behind modeli, HTML kodları ile uygulama kodlarını farklı bir dosyada ayırmaya yarıyor. Sunum kısmı ile uygulama kod kısmını ayırdığı için bu model, oldukça alkış getirdi ve takdir gördü. Fakat gerçekte, geliştiriciler sunum kodları(server kontrollerini değiştirmek gibi..) ile uygulama mantık kodlarını(veritabanını kodları gibi…) bu korkunç code-behind sınıflarında birleştirmeye başladılar. Bu da çoğu zaman manasız ve narin, kolay bozulan bir sonuca dönüşmesine yol açmıştır ve açmaktadır.
•HTML Üzerinde Kısıtlı Kontrol: Server kontrolleri kendilerini HTML olarak render ederler yani bize sonuç HTML kodları olarak gelir. Fakat bu çoğu zaman sizin istediğiniz HTML kodundan gereksiz bir çok kod barındırır. ASP.NET 4′den önce genellikle bu çıktı kodu, web standartlarına uygun değildi veya bunlar üzerinde iyi bir CSS kullanımını zorlaştırıyordu. Ayrıca server kontrolleri Javascript tarafından ulaşılması zor olan, tahmin edilmesi zor ve karışık ID değerleri üretiyorlardı. Her ne kadar ASP.Net 4 ile bu problemler azaltılmışsa da beklediğiniz HTML’yi elde etmeniz halen sıkıntılı olabiliyor.
•Zayıf Soyutlama: Web Formları mümkün olduğunca HTML’yi sizden gizlemeye çalışır. Yeni ve özel bir davranışı tanımlamaya çalıştığınızda, genellikle bu soyutlamayı bozarsınız. Ki bu sizi postback event mekanizmasında ters mühendislik metodları kullanmanızı ya da istediğiniz HTML’yi elde etmek için duygusuz ve absürd kodlar yazmanıza sebep olur. Ben buna amele mantığı kod yazmak diyorum . Ek olarak tüm bu soyutlama hadisesi, işin ehli web geliştiricileri için sinir bozucu bir engelden öteye gidememektedir.
•Düşük Test Edilebilirlik: Her ne kadar unit-test yani otomatikleştirilmiş testlere ilgim olmasa da, unit-test kullanan geliştiriciler için Web Formları bir çileden ibaret olmuştur. Web Formlarının bu kapalı hali unit testi için uygunsuz bir durum teşkil etmektedir Projeye unit-test dahil etmenin zorluğu da cabası…

Her ne kadar ASP.NET 4 ile burada bahsedilen bazı problemlere çözüm getirilmeye çalışılmışsa da halen çoğu kısıtlamalar ve eksikliker aynen durumunu muhafaza etmektedir.

Model, View, Controller

MVC başlıca şu üç ana daldan oluşan bir yazılım geliştirme tekniğidir:
•Model: İletimde kullanılan ya da veritabanı gibi ortamlarda kullanılan veriyi ifade eden basit sınıflardır. Web programlamada bu genelde formun POST verileri ya da veritabanındaki bir tabloyu ifade eden bir sınıf olabilir. Sonuçta View ve Controller arasında veri iletimini Modeller ile gerçekleştirmekteyiz.
•View: Sunum kısmıdır. Yani bu web prgramlama için html sayfasıdır. Razor söz konusu olduğunda dosya uzantısı “.cshtml” dir. Eğer Aspx görünüm motoru kullanılıyorsa bu uzantı “.aspx” olacaktır. Görünüm motorları(View Engine) ve Razor hakkında ileride daha genişçe bahsedeceğiz.
•Controller: Esas iş gören uygulama kodlarıdır. Mesela bu, form verilerini veritabanına ekleyen bir sınıf olabilir. Sonuçta view katmanının kullanıcıya gösterilmesi için gerekli işlemleri controller gerçekleştirecektir.

Sizi çok terim ile boğmak istemiyorum. Daha fazla bilgi edinmek isterseniz burayı ziyaret edebilirisiniz.

Bir iletişim sayfasını gözümüzün önüne getirelim. Ne vardır basit bir iletişim sayfasında? Ad soyad, e-posta gibi bilgilerin girildiği bir textbox, mesajın yazılacağı bir textarea ve mesajın gönderileceği bir submit düğmesi. Submit düğmesine tıkladığınız anda, form post edilir ve gerekli kontroller yapılarak e-posta gönderilir ya da kullanıcıya hata verilir. MVC mantığı ile düşündüğümüzde, içinde textbox, textarea, button bulunduran sayfamız View katmanıdır. Form post olduktan sonra gelen verilerin uygunluğunu test eden ve e-postanın gönderimini sağlayan kısım ise Controller‘dır. Model ise bu iki katman arasında gelip giden form’un post verilerinin şablonudur. Bu örnek için textboxlardaki ad soyad ve e-posta bilgileri ve textarea’daki mesaj verisi Model ile ifade edilir.

Model ve Controller “.cs” uzantılı bir dosyada bulunan sınıflardan ibaretken View “.cshtml” uzantılı c# ve html kodlarının karışık olduğu bir dosyadır. Bu uzantıların C#’a ait uzantılar olduğunu ifade etmek istiyorum. Eğer Vb.Net kullanıyorsanız bu uzantılar “.vb” ve “.vbhtml” olacaktır. Veya Razor yerine başka bir görünüm motoru kullanıyorsanız “.cshtml” uzantısı değişiklik gösterecektir.

MVC aslında yeni bir teknoloji olmadığı gibi mucidi Microsoft da değildir. MVC, kökleri 1978 yılına dayanan ve Xerox PARC da Smalltalk projelerinde kullanılmış bir yöntemdir. Fakat günümüzde web programlamada ciddi ölçüde popülerlik kazanmıştır. Özellikle Ruby on Rails ile bu had safhaya ulaşmıştır. Ruby on Rails‘in bu popülerliği o kadar artmıştır ki Microsoft’un gözünü açmasına sebep olmuştur. Ruby on Rails‘in bu başarısını, kullandığı dilden çok, içine monte edilen MVC ve ORM mimarilerine bağlamak gerekir. Microsoft sadece MVC’ye el atmamış, ayrıca bir ORM mimarisi olan Entity Framework ve beraberinde LINQ de .NET’e dahil olmuştur. Evet ORM’nin ünlü olmasına sebep LINQ ve Entity Framework değildir aslında.

Şu an için bir çok dilde MVC yapısını kullanan kütüphaneler mevcuttur. Mesela php’de CakePhp, Symfony ve Mojavi MVC kütüphanelerine en güzel örneklerdendir. Fakat bulabileceğiniz çoğu MVC kütüphanesi Rails’den esinlenmiştir.

Belki şu an için kafanızda MVC ne olduğuna dair somut bir fikir oluşmamış olabilir. Makelenin sonununda vereceğimiz küçük örneği kendiniz yaparak somut fikir edineceğinizi tahmin ediyorum.

ASP.NET MVC

MVC mimarisi, Web Forms mimarisinden farklı bir yapıya sahiptir. Web Formlarında tut-taşı mantığı ile çok hızlı bir şekilde siteler oluşturabilirsiniz. Fakat iş yukarıda da bahsettiğimiz gibi özelleştirmeye ve temiz html kodlarına geldiğinde, durum biraz değişiyor. ASP.NET MVC, temiz, standartlara uyumlu html kodları üretmenin farkındadır. Ve barındırdığı Html yardımcı metodları, Web Formların aksine, ciddi ölçüde temiz ve standart uyumlu kodlar üretirler. Küçük bir kontrol için bile bir çok hantal ve karışık kodlar üretmek yerine, CSS ile şekillendirilmiş gayet basit ve hoş kodlar üretir.

Hemen akla gelen, Web Formlarındaki gibi, kodları hazır, menü ve tarih seçici gibi bileşenleri olsa iyi olmazmıydı. Bunun için en iyi çözüm jQuery gibi javascript bileşenleri olacaktır. İşin gerçeği Web Formları kullanırken bile Web Formlarının varsayılan bileşenleri yerine bu tarz bileşenleri daha fazla kullanmaktayız. Bununla birlikte ASP.NET MVC dahili jQuery desteğine sahiptir. Eğer bir fikir edinmek isterseniz buraya göz atabilirsiniz.

Web Formlarının aksine, ASP.NET MVC ile üretilmiş sayfalar View State namına hiç bir veri içermezler. Bu yüzden küçük bir site için bile yüzlerce kilobayt boyutunda olan bu hantallıktan kurtulmuş olursunuz.

Ayrıca ASP.NET MVC mükemmel bir yönelendirme sistemine sahiptir. Bu sayede şu şekildeki bir urlyi:

/web_motoru/Makaleler/Default.aspx?islem=goster&makale_id=41567&sayfa=1

daha temiz ve kullanıcılar için ve seo için daha uygun bir şekle zahmetsizce çevirebilirsiniz:

/makale/mvc-ve-razor/sayfa-1

Böylesine bir yapı hem SEO için hem kullanıcılar için hem de güvenlik için daha kullanışlı olacaktır.

Bunun dışında söyleyebileceğim başka bir şey de, ASP.NET MVC’nin açık kaynak kodlu olduğudur. Bunun bize getirdiği en büyük faydalardan biri şüphesiz debug aşamasında ortaya çıkmaktadır. Sistem bileşenlerinin nasıl çalıştığını görebileceğiniz gibi geliştiricilerin yorumlarını bile kodlarda görebilirsiniz.

Başka bir şey ise, MVC stateless dediğimiz bir yapıya sahiptir. Yani Web Formlarında olduğu gibi sayfanın o anki durumu kayıt altında tutulmaz. Tersine bu yapıya tamamen karşı bir yapıya sahiptir. Bu yüzdendir ki önceden bahsettiğimiz gibi View State’e ihtiyaç duymaz ve kullanmaz.

Razor

Microsoft sadece MVC ve ORM mimarilerini ASP.NET ortamına taşımakla kalmamış yeni bir görünüm motoru da kazandırmıştır. Görünüm Motoru(View Engine), uygulama kodları ile(bu makale için C#), html ve benzeri text tabanlı verileri iç içe kullanmanızı sağlar. ASP.NET MVC için tanımlanmış bir çok görünüm motoru bulunmaktadır. Bunların başlıcaları, Spark, SharpTiles, NHaml, WebForms(ASPX) ve Razor.

Kısacası; Spark, html benzeri bir gramere, SharpTiles java kullanıcılarına yakın bir gramere ve NHaml ise Rail benzeri bir gramere sahip. WebForms ise bildiğimiz ASPX görünüm motorudur. Tüm kodlar <% ve %> işaretleri arasına yazılır.

Razor, Microsoft tarafından geliştirilmiş olan yep yeni bir gramere sahip bir görünüm motorudur. Yeni gramer derken sakın korkmayın. Çünkü Razor diğer görünüm motorlarında olduğu gibi sizi yeni bir grameri öğrenmek zorunda bırakmaz. Kullanacağınız dil yine C# gibi bir .net dili olacaktır. Kısaca Razor:
•Az yer kaplayan, kompakt, anlamlı ve akıcı bir yapıya sahiptir.
•Öğrenmesi çok kolaydır.
•Sizi yeni bir dil öğrenmek zorunluğundan kurtarır.
•Çok çok iyi bir Intellisense desteği mevcuttur.
•Unit-test’lerine uygun bir yapısı mevcuttur.

Kaynak: Fatih Tolga ATA, bu yazı o kadar açıklayıcı olmuş ki soran arkadaşlar için iyi olur dedim :D

.Net yazılım uzmanı

.Net Yazılımcılar Buraya

.Net yazılımcı arkadaşlar ineta Türkiye ekibi yine dop dolu bir programla karşınız da.

Benim de bir ucundan içinde bulunduğum ineta-tr ekibi yeni gelişen yazılım teknolojilerini .net yazılımcı arkadaşlara aktarmak ve bazı konularda aydınlatmak amacı ile Microsoft İstanbul ofisin de güzel bir organizasyon da bulunmuşlar. Alt kısım da konuşmacılar ve program işleyişi hakkın da detaylı bilgiyi bulabilirsiniz ne diyeyim umarım kaçırmazsınız çünkü gerçekten ihtiyacımız olan şeyler bunlar.

Daron Yöndem, Engin Polat, İbrahim Kıvanç ve Muammer Benzeş'in konuşmacı olarak yer alacağı etkinliğin programı şu şekilde :

 

Osman KURT | .Net Yazılımcı

Görüşmek üzere,

Osman KURT

.Net Yazılım Uzmanı

.Net MVC'de Tek Sayfa da Birden Fazla Model Kullanımı

Yeni yazmakta olduğum bir proje de karşılaştığım bir problem arkadaşlar, birden fazla modelimizi tek sayfa da kullanmak. Mvc de sayfa kodlama nasıldır kısaca onu özetlemek gerekirse, Bildiğiniz üzere bir ader modelimiz vardır modelimiz de propertilerimizi tanımlarız, daha sonra oluşturduğumuz modelimizi view sayfamıza referans olarak ekleriz views ekranımızın iç kısmını doldurduktan sonra controller kısmın da ise arka plan kodlarımızı gerçekleştiririz.

Buraya kadar herşey normal, peki aynı sayfa içinde iki modeli de kullanmak gerekir se ne yapacağız. İşlem basit arkadaşlar. Bir adet daha model oluşturuyoruz ve daha önceden oluşturduğumuz ve aynı sayfa da kullanmak istediğimiz modellerimizi bu modele ekliyoruz. Eklediğim örnek ta tam kullanımı mecuttur. Daha sonra en son oluşturduğumuz modeli views ekranımıza model olarak atıyoruz. Artık en son oluşturduğumuz ana modelimize eklenen bütün modellerimiz tek sayfa da kullanımımıza açık hale geldi. Kolay gelsin.

Gerekli örnek uygulamanın ufak bir giriş kısmını eklediğim örnek de bulabilirsiniz gerekli icelemeyi yaptıktan sonra fikir sahibi olacağınızdan eminim arkadaşlar.

Görüşmek üzere,

Osman KURT

.Net Yazılım | Yazılım Uzmanı

Örnek Uygulama (263,11 kb)

Windows 8'e Geçmenin Zamanı

Windows 8'e geçmenin zamanı geldi belki de. Biliyorsunuz microsoft windows 8 konusun da çok iddialı bir reklam kampanyası hazırladı ve piyasaya hızlı bir giriş yaptı. Birde bunu 75 TL yapınca e geçmemek olmaz tabi. Elinde windows 7 keyi olan yada olmayan herkes :D windows 8 e dediğim gibi 75 TL karşılığın da sahip olabilirler. Denemek te fayda var derim çünkü yaptığım izlenimler de hızlı açılma ve daha bütünleşik bir yapı kullanıcıları oldukça mutlu etmiş. Ne diyim yolumuz açık olsun.

Microsoft Windows 8 Upgrade

Görüşmek üzere,

Osman KURT

Yazılım Uzmanı

Dreamspark Üyesi Herkese 1 Yıllık Windows 8 Developer Üyeliği Hediye

Microsoft tarafından öğrencilere bazı programları ücretsiz lisanlama hizmeti sunan dreamspark yine öğrenciler için çok güzel bir olaya imza attı. Windows 8 rüzgarının estiği şu zamanlar da microsoft windows 8 için bol bol uygulama geliştirilsin diye mağazalarının kapılarını öğrencilere ardına kadar açtı.

Tek yapmanız gereken bir adet dreamspark üyeliği elde etmek ve daha sonra ilgili sayfadan promosyon kodumuzu almak. İlk sefer de kredi artınızdan 4 $ gibi bir para transferi yapılıyor fakat microsoft bu parayı da belli bir süre sonra hesabınıza geri yatırıyor.

Ne diyelim hazır orta da böyle bir rüzgar varken kapılmanın ve birşeyleri elde etmenin zamanı geldi belkide. 

Teşekkürler Microsoft...

Görüşmek Üzere

Osman KURT

Yazılım Uzmanı

 

ASP.Net'de Kaliteli Resim Küçültme ve Boyutlandırma, Ölçeklendirme

İnternet dünyasının hızlı şekilde büyümesi ve günlük hayatımızın vazgeçilmez öğesi olması ile birlikte hayatımızın bütün media datalarını internet ağı üzerinde bulundurur olduk. Firmalar da kendi sayfalarında yada ürünlerini pazarladıkları e-ticaret sayfalarında oldukça sık şekilde media dosyaları paylaşmakta. Doğru olanı da budur zaten ama doğruyu biz yazılımcıların yapması gerekmekte. Mesela 100 ürün resminin olduğu bir sayfayı düşünelim tanesi 1 MB olan 100 adet resim dosyası ve orjinal boyutlarda koyulmuş düşünsenize sadece ürün listelemek için 100 MB :D kotamızın 4 GB olduğunu düşünürsen 40 kere aynı siteye girmek yeter :D Şimdi yazılımcı olarak alacağımız önlemlerin başında resim ölçeklendirme gelir. Nasıl mı? İşte alt kısımda ki kodla yapıyoruz. Önce class dosyamız var onu bir oluşturalım isterseniz.

public class fotograf
{
    public static void yukle(FileUpload fu, int Ksize)
    {
        System.Drawing.Image orjinalFoto = null;
        HttpPostedFile jpeg_image_upload = fu.PostedFile;
        orjinalFoto = System.Drawing.Image.FromStream(jpeg_image_upload.InputStream);
        KucukBoyut(orjinalFoto, Ksize, fu.FileName);       
    }
    protected static void KucukBoyut(System.Drawing.Image orjinalFoto, int boyut, string dosyaAdi)
    {
        System.Drawing.Bitmap islenmisFotograf = null;
        System.Drawing.Graphics grafik = null;

        int hedefGenislik = boyut;
        int hedefYukseklik = boyut;
        int new_width, new_height;

        new_height = (int)Math.Round(((float)orjinalFoto.Height * (float)boyut) / (float)orjinalFoto.Width);
        new_width = hedefGenislik;
        hedefYukseklik = new_height;
        new_width = new_width > hedefGenislik ? hedefGenislik : new_width;
        new_height = new_height > hedefYukseklik ? hedefYukseklik : new_height;

        islenmisFotograf = new System.Drawing.Bitmap(hedefGenislik, hedefYukseklik);
        grafik = System.Drawing.Graphics.FromImage(islenmisFotograf);
        grafik.FillRectangle(new System.Drawing.SolidBrush(System.Drawing.Color.White), new System.Drawing.Rectangle(0, 0, hedefGenislik, hedefYukseklik));
        int paste_x = (hedefGenislik - new_width) / 2;
        int paste_y = (hedefYukseklik - new_height) / 2;

        grafik.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        grafik.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
        grafik.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default;

        System.Drawing.Imaging.ImageCodecInfo codec = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()[1];
        System.Drawing.Imaging.EncoderParameters eParams = new System.Drawing.Imaging.EncoderParameters(1);
        eParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 95L);

        grafik.DrawImage(orjinalFoto, paste_x, paste_y, new_width, new_height);
        islenmisFotograf.Save(HttpContext.Current.Server.MapPath("/klasor/" + dosyaAdi), codec, eParams);
    }
}

Şimdi ise Default.aspx sayfamıza 1 adet fileupload ve 1 adet buton koyalım daha sonra da butonumuza çift tıklayalım. Gelen click event'mize alt kısımda ki kodumuzu yazalım ve işlemimizi tamamlayalım.

protected void Button1_Click(object sender, EventArgs e)
    {
            fotograf.yukle(FileUpload1, 150);
     }

 İşlemimiz bu kadar arkadaşlar. Artık kaliteli bir şekilde resimlerimizi boyutlandırabiliriz.

Görüşmek üzere,

Osman KURT

Yazılım Uzmanı

Sefer ALGAN ile 28 Saat OOP (Object Oriented Programming) Eğitimi

Sefer hocamla beraber 28 saat 4 haftalık OOP serüvenimiz bugün itibari ile son bulmuştur arkadaşlar. Kendisine verdiği değerli bilgiler için çok teşekkür ederim.

Kendisinin zaten Türkiye de C# denilince akla gelen ilk kişi olduğunu biliyorduk ama buna canlı bir şekilde tanık olmakta ayrı bir keyifdi doğrusu. Uzun zaman dır kendisini sosyal medyadan ve kitaplarından takip ediyordum bu sayede birebir tanışma fırsatını da yakalamış oldum. Çok keyifli ve şakacı bir insan olduğunu rahatlıkla söyleyebilirim.

Bu 4 hafta 28 saatlik serüven sonrasında geriye kalanlar ise Sefer hocam imzalı bir sertifika, hocamla birlikte çekindiğimiz resim ve belki de en önemlisi OOP ne demek onu öğrenmek.

*Sefer hocamın hoşuma giden sözlerinden belki de en önemlisini paylaşmak istiyorum, "Class yazmak demek OOP yapmak demek değildir." gerçekten de çok güzel bir söz sanırım bütün bu eğitimin amacını kısaca özetledi bu söz.

Tekrardan teşekkürler hocam teşekkürler firmam :D

 

DROPBOX Nedir?

 

Zamanımızın en önemli teknolojilerinden biri şüphesiz ki "Cloud Computing" ,“Bulut Bilişim”. Bu teknolojininde en güzel kullanımlarından biri ise Dropbox. Dropbox'u en kısa tanımıyla dosya paylaşım platformu olarak tanımlayabiliriz ki işini en iyi yapanlardan. 

Bilgisayar kullanıcıları dosyalarına her türlü platformdan (internet) online olarak ulaşmak istiyorlar. Eğer birden çok bilgisayar kullanıyorsanız (Ofis,Ev,Tablet,Mobil), bu dosyaların senkronizasyonu günümüzde önemli bir hal aldı.

Örneğin, bilgisayarınızdaki bir dosyaya, anında telefonunuzdan ulaşabilmek çok sık ihtiyaç duyulan bir özellik haline geldi.

Bu senkronizasyonu ise Dropbox aracılığıyla yapmak hem çok kolay hemde ücretsiz (Başlangıç:2 GB). Öncelikle yapmanız gereken Dropbox'un sitesine girip bir account yaratıyorsunuz. Daha sonra ise siteden bir uygulama (Masaüstü programı) indiriyorsunuz. (14 MB kadar) Uygulama yüklenirken size belirli bir dosya yeri soruyor. Kurulum bittikten sonra o dizindeki (folder) bütün dosyalar otomatik olarak internetle senkronize olacak. Daha sonra bu dosyalarınızı internetten Dropbox sitesine girerek de görebilirsiniz.

Ücretsiz olarak 2GB yer sunan dropbox kapasitenizi isterseniz ücretli olarak artırabilmeniz mümkün. Kapasitenizi artırmanın bir başka yolu ise arkadaşlarınıza Dropbox'u önermek. Her getirdiğiniz kullanıcı için 500 MB yer kazanıyorsunuz (16 GB'a kadar).

Görüşmek üzere,

Osman KURT

Yazılım Uzmanı