Osman KURT

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

Asp.Net ile Kalıcı Permanent 301 Yönlendirme Nasıl Yapılır?

Web uygulamanızda bir linki kalıcı olarak değiştirmek, farklı bir adrese taşımak istiyorsanız bunu arama motorlarına, örneğin google, 301 hata kodu ile bildirmeniz gerekmektedir.

Örnegin osmankurt.net/arsiv.aspx şeklindeki sayfanızın adresini günün birinde osmankurt.net/gecmis.aspx şeklinde değiştirmek isteyebilirsiniz. Arama motorları eski sayfanın adresini daha önceden indekslediği için bunu arama motorlarına bildirmezseniz SEO açısından hatalı bir işlem yapmış olursunuz.

Arama motorlarında üst sıralar da yer almak istiyorsak ve geçmiş index değerlerimizi korumak istiyorsak. Bunu iyi uygulamak zorundayız.

Örnek;

 
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.osmankurt.net/YazilimUzmani");
Response.End();
} 

Görüşmek üzere

Osman KURT
Yazılım Uzmanı

ASP.Net'de Encoding ve Decoding Yapımı

Kullanım yerleri farklılık gösterebilir fakat daima işimize yarayacak bir kod bloğu. Özellikle QueryString ile veri gönderirken açık olarak parametre göndermek ciddi bir güvenlik zafiyetidir. İşte tamda bu alanda kullanmamız gereken bir özellik.

public static string Encode(this string str)
        {
            byte[] toEncodeAsBytes = UnicodeEncoding.Unicode.GetBytes(str); 
            return Convert.ToBase64String(toEncodeAsBytes);
        }

 

public static string Decode(this string str)
        {
            byte[] encodedDataAsBytes = Convert.FromBase64String(str);
            return UnicodeEncoding.Unicode.GetString(encodedDataAsBytes);
        }

Görüşmek üzere

Osman KURT
Yazılım Uzmanı

ASP.Net MVC Entity Framework Select, Insert, Update ve Delete işlemi

Microsoftbazı projeleine yıllar boyu destek verirken bazı projelerinide elinin tersi ile itiyor ve kısa sürede öldürebiliyor. Bunlara örnek vermek gerekirse XP :)

XP uzun yıllar hayatımızda olan bir işletim sistemi. Belki de belli bir zamana kadar microsoft'un bizlere kazandırdığı en değerli ürünüydü ama herşey gibi onunda sonu geldi tabi. Diğer türlü öldürdüğü yazılımlarına teknolojilerine gelirsek mesleğimle ilgili olan linq teknolojisi. Zamanın öğreneilmesi gereken bir teknolojiydi ama microsoft ani bir kararla artık bu teknolojiyi update etmeyeceğini ve yoluna entity framework ile devam edeceğini açıkladı.

Benimde gerçekten kullanmaktan zevk aldığım bir teknoloji her ne kadar arka kısımda bazı "?" işaretleri olsada kullanmakatan zevk alıyorum diyebilirim.

Bu yazımda size kısaca insert, update ve delete işlemlerinden bahsedeceğim. İlk olarak insert işleminden başlayalım isterseniz.

Firmalar adında bir tablomuz olsun ve bu tablomuzun FirmaAdi alanına 1 adet kayıt eklemek isteyelim.

Firmalar FrAdd = new Firmalar();
FrAdd.FirmaAdi = fir.FirmaAdi;
entity.Firmalar.Add(FrAdd);
entity.SaveChanges();

İşte bu kadar basit. Tablomuzu türetiyoruz verimizi eşitliyoruz hangi tablomuza kayıt atacağımızı belirledikten sonra Entity SaveChanges diyerek kayıt işlemimizi tamamlıyoruz. Unutmamamız gereken nokta her işlemden sonra Entity.SaveChanges(); mutlak suretle yazmamaız aksi takdirde yapılan işlem gerçekleşmeyecek.

Peki update kodumuz nasıl olacak.

Firmalar FirmaDetay = (from a in entity.Firmalar where a.FirmaID == id select a).FirstOrDefault();
FirmaDetay.FirmaAdi = fir.FirmaAdi;
entity.SaveChanges();

Bu işlemimiz de bu kadar. İlk yapılan update yapılacak verimizi select yapmak istediğimiz alandaki değişiklikleri eşitledikten sonra Entity.SaveChanges(); diyerek yapılan işlemi DB ye Execute etmek.

Kısaca silme kodumuz ise aynı şekilde select işlemi yapıldıktan sonra,

var FirmaDetay= (from a in entity.Firmalar where a.FirmaID== id select a).FirstOrDefault();
entity.Firmalar.Remove(FirmaDetay);
entity.SaveChanges();


Bu işlemimiz de son bulduğuna göre artık yazımızı sonlandırmanın zamanı geldi select işlemi hem Update hemde Delete kod bloglarında olduğu için yeniden yazma gereği duymadım. O kısımdan bakabilirsiniz.

Tekrar görüşmek üzere,

Osman KURT
Yazılım Uzmanı

Fancybox Kullandınız mı?

Son yazımda sizlere twitter bootstrap css ve jquery dünyası yazımla seslenmiş tasarımın yeni yüzünü anlatmıştım. Bugün de fancybox dediğimiz lightbox'ın yeni yüzünü anlatacağım. Daha doğrusu tavsiye edeceğim. Web Tasarımı ve yazılımı yapan arkadaşlar müşterilerimiz artık akıllandı :D gerçekten de mantıklı ve göze güzel gelen şeyler istiyorlar.(İstisnalar hariç) Artık biz de normal web sayfalarını bırakmalıyız bence. Sönük butonlar açılan sayfalar vs vs. 

Artık son zamanlar da kullanma alışkanlığı kazandığımız lightbox olayı var ki fancybox ile bu durum uçtu, tasarımı çok farklı yerlere götürdü. Donanımların arttığı yazılım tekniklerinin geliştiği performansın doruk noktalara ulaştığı günümüz de ve unutmadan değerlenen zamanı da eklemek lazım, internet dünyasınında ki yeniliklerini meslek icabı takip etmeniz gerek ki ekmeğini yiyesiniz.

Neyse bugünlük bu kadar alt kısımda linki veriyorum indirin entegre edin kullanımı document kısmın da mevcut istedğiniz gibi kullanın araştırın öğrenin.

Buradan İndirebilirsiniz...

Editörün notu: zaman telafisi en zor şey kıymetini bil ona göre kullan, akbil değil ki bu bitince para ver dolsun...

Görüşmek üzere,

Osman KURT
Yazılım Uzmanı

Visual Studio 2013 Test Zamanı

Microsoft son zamanlarda yapmış olduğu iddialı işlerden olan windows 8'i geliştirmekle kalmayıp diğer bir göz bebeği olan visual studio ailesine de yeni bir üye kazandırdı.

(Visual Studio 2013)

Windows 8.1 ön sürümünün geliştiriciler ve meraklılar için piyasaya sunulması bir yana windows 8 platformuna uyguluma geliştmek için kullanılan visual studio 2013'ün piyasa ön sürüm olarak sunulması eminim ki birçok yazılım geliştirici arkadaşı daha da mutlu etmiştir. Visual studio'yu kullananlar bilir demek pekte yalan olmaz.(Sahibinden satılık araba tarzı oldu ama)

Eğer sizde en kısa zaman da visual studio 2013'ü test etmek isterseniz dreamspark üyeliğiniz varsa alt kısımda ki linkten

https://www.dreamspark.com/Student/Software-Catalog.aspx

eğer yok ise

http://www.microsoft.com/visualstudio/eng#2013-downloads linkinden indirebilir ve test etme imkanı bulabilirsiniz.

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

 

Neden MVC?

Birçok yazılım geliştirici arkadaşımızın emin ki aklında olan ve hala cevap bulamadığı sorulardan biridir.

Neden MVC?

Arladaşlar aslın da bu soru o kadar da zor bir soru değil. Olayı basite indirgeyerek düşünmek gerekirse .Net insanlar üzerinde şöyle bir etki yaratıyor, (" sürükle bırak programcılığı! "). Aslında pek de haksız sayılmazlar. Çünkü o kadar çok kompanentler var ki piyasa da neredeyse size ihtiyaç bile kalmıyor. Ama bunların iyi olduğu kadar kötü olduğu taraflar da var.

Birincisi hız. Her ne kadar artık pc ler çok çok iyi donanımlı da olsa internet hızlarımız o kadar olmasa da fena sayılmazken ne olursa olsun kullanıcı hıza ihtiyaç duyacaktır. Bu da yazılımcının maharetine bakar tabi ki. Eğer siz proje boyunca hazır kompanentler kullanırsanız emin olun projenizin hızı ne sizi ne de bir başkasını tatmin edecektir.

İkinci si ise esneklik. Hazır gelen ve çerçevesi belli olan bir şey üzerin de ne kadar değişiklik yapabilirsiniz ki?

-Bence çok az.

İşte buna benzer sebeblerden ötürü MVC yazmak mantıklı. Çünkü en bastinden textbox ı bile kendimizin yazması gerkmekte. Repeater Datalist vb hiçbirşey yok.

Sonuç olarak Microsoft işi olması gerektiği gibi yapmaya karar verdi. Siz de işi olması gerektiği gibi yapın bence.

Görüşmek Üzere

Osman KURT

Yazılım Uzmanı 

ASP.Net de Excelden Veri Okuma ve Okunan Veriyi SQL'e Aktarma

Bu yazımda sizlere geçen bir projemde kullanmış olduğum bir kod yapısından bahsedeceğim. Excelden veriyi okumak ve okunan veriyi sql e kod kullanarak kaydetmek.

Öncelikle sayfamıza bir adet gridview ekliyoruz. Daha sonra c# tarafımıza geçerek excelden verilerimizi çekerek gridview içine dolduruyoruz.

 

protected void Page_Load(object sender, EventArgs e)
    {
        GridView1.DataSource = getirTumATSTablo();
        GridView1.DataBind();
    }

    DataTable getirTumATSTablo()
    {
        string dosya_adres = @"D:\osmankurt.xls";
        OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dosya_adres + ";Extended Properties=Excel 8.0");
        baglanti.Open();

        string query = "select * from [Sayfa1$A1:C800] ";
        OleDbDataAdapter oAdp = new OleDbDataAdapter(query, baglanti);
        DataTable dt = new DataTable();
        oAdp.Fill(dt);
        return dt;

    }

 

Şimdi sayfamıza bir adet buton atıyoruz ve butonumuza çift tıklıyoruz. Açılan kod satırımıza alt kısımda ki kodlarımızı yazıyoruz.

 

foreach (GridViewRow row in GridView1.Rows)
        {
            SqlCommand cmd = new SqlCommand("insert into Mail (A,B) values (@A,@B)", baglan.baglanti);
            cmd.Parameters.AddWithValue("@A", row.Cells[0].Text);
            cmd.Parameters.AddWithValue("@B", row.Cells[1].Text);
            if (ConnectionState.Closed == baglan.baglanti.State)
                baglan.baglanti.Open();
            cmd.ExecuteNonQuery();
            baglan.baglanti.Close();
        }

 

Bu kodumuzda yaptığımız işlem gridview içindeki satırları tek tek dolaşarak her satırda yazılı veriyi veritabanımıza kaydetmek. Algoritması son derece basit. Aslında bu işi direk yapan kod bloklarımız var fakat ben böyle bir yöntemle okumaya gittim.

Görüşmek Üzere,

Osman KURT

Yazılım Geliştirici ve Grafiker | Ineta K12 Spekaer