Kategoriler


SON YORUMLAR
Boun
Birisi demişygs lys. derece yapanlar bilgisayar mühendisliğini seçmiyor diye. 2015 ygs1.si boun bilgisayar.2 a gitti. Zaten ilk 2 k dışındaki bilgisayar mühendislerine gidenler az kazanıyorlar istisnalar dışında. Çünkü genellikle yemek sepeti gib şirketler başvuru koşullarında Boğaziçi bilkent odtü başvursun diyor vs. Zaten bilgisayar mühendisi okuyan kimse kendi işini kurmalı yoksa bir şirkete köle olursunuz
parçala behçet
ben lise 4 e geçtim işte 7-8 ay sonra YGS ondan sonra LYS var ben bilgisayar mühendisligi okumak istiyorum. tek kafama takılan bir soru var. mezun olur olmaz bir işe girebiliyor muyuz yoksa bekliyor muyuz beni bu konu hakkında bilgilendirirseniz sevinirim. iyi günler.
Aleyna
Merhabalar.. Bilgisayar mühendisliği okumak istiyorum ve seçeneklerim Kocaeli Üni, Akdeniz Üni, Uludağ Üni ve Sakarya Üni. Sizce hangi üniversitenin eğitimi daha iyi bilgilendirirseniz çok sevinirim. Bir de bilgisayar mühendisliğini ingilizce okumak/okumamak ne kadar etkiliyor?

"Salim(14.07.2017 14:20:25) İstanbul Bilgisayar mühendisliği tutacak gibi ama dili türkçe olması ve internette gördüğüm kötü yorumlar beni korkutuyor.Bu yüzden ankarada ingilizce bölüm olduğu için yıldırım beyazıt üniversitesine gitmeyi düşünüyorum.Sizce İstanbul üniversitesinin bilgisayar mühendisliği söylendiği gibi kötü mü ve türkçe olması benim uluslararası bir mühendis olmamı engeller mi." İstanbul Bilgisayar Müh.ü yaz. Eğitimi İTÜ ve Boğaziçi.nin altındadır ama genel olarak Hacettepe.den, bazı açılardan da ODTÜ ve Yıldız.dan iyidir. İngilizce.yi de kendin hallet. Yıldırım Beyazıt.a gidince gerçek bir İngizlice eğitim mi alacaksın sence? Reklama bakma. Hem akademik hem piayasa şartları açısından İTÜ, Boğaziçi, Koç ve İstanbul diğer tüm üniversitelerden iyi.
Selçuk Yılmaz
Admin helal olsun sana beni bu önemli konuda çok fazla bilgilendirmiş oldun çok teşekkür ederim sana. Bütün yazanları okuyun sizinle ilgili tüm makaleleri okuyun çok işinize yarayacaktır
dolar kuru
bu siteyi uzun zamandır takip ediyorum. dolar kuru düşükken bu maaşlar çok az diye mesajlar vardı burada. dolar kuru yükselince de bu maaşlara çalışan yok diyorlar. hep anlık bakıyorlar bu yazıya... ormana üstten bakın dallarla uğraşmayın.
Tatar Ramazan
Kemalizmin temel prensipleri aşkına iş dünyası bizden isteklerini ya küçültsün ya da maaşlarını ona göre büyütsün. Sadece T-SQL bilgimle en az 2000, sadece C# bilgimle 3000TL almam lazım. Bilgisayar bilgim: C#, Java, ASP.NET, ADO.NET, T-SQL, Silverlight, WPF, LINQ, XML, XSL, HTML, Javascript, CSS, JQuery, Ajax, Web Servisleri, PL/SQL, Reporting Services. İngilizce: YDS 72 Puan. Hala afra tafra. yetersiz görmeler, mülakatta surat yapmalar, bilmem neler. Haddiniz bilin lan. Uyduruk adamlar bi ton para kazanıyo bu ülkede. Bizi 3 kuruşa s..kecekler. Yeter be!..Am buldular kılsızını arıyorlar. Biz kıllıyı da bulamıyoruz.
Salim
İstanbul Bilgisayar mühendisliği tutacak gibi ama dili türkçe olması ve internette gördüğüm kötü yorumlar beni korkutuyor.Bu yüzden ankarada ingilizce bölüm olduğu için yıldırım beyazıt üniversitesine gitmeyi düşünüyorum.Sizce İstanbul üniversitesinin bilgisayar mühendisliği söylendiği gibi kötü mü ve türkçe olması benim uluslararası bir mühendis olmamı engeller mi.
Tatar Ramazan
Rekürsif Scalar Function ALTER FUNCTION [dbo].[TSEBelgeBul] ( @BasvuruUN uniqueidentifier ) RETURNS varchar(72) AS BEGIN DECLARE @TSEBelge VARCHAR(72) DECLARE @BasvuruUN2 uniqueidentifier Select @TSEBelge=BelgeNo from Belge where BelgeUN= (select BelgeUN from BelgeBasvuru where BasvuruUN=@BasvuruUN) Select @BasvuruUN2= Basvuru.BasvuruUN FROM Belge INNER JOIN Urun ON Belge.UrunUN = Urun.UrunUN INNER JOIN Basvuru ON Urun.BasvuruUN = Basvuru.BasvuruUN where Belge.BelgeUN=(select BelgeUN from BelgeBasvuru where BasvuruUN=@BasvuruUN) IF PATINDEX(.%YLD%., @TSEBelge) b 0 set @TSEBelge=dbo.[TSEBelgeBul](@BasvuruUN2) return @TSEBelge END
Sahibe
Makalenizi beğendim.Peki Adnan Menderes ve Celal Bayar üniversitelerinin bilgisayar mühendislikleri için fikriniz varmı ?

"Merve Şefaat(05.11.2015 09:36:22) Sizce İTÜ mü Boğaziçi mi?" ALINTI Soru çok doğru sorulmuş.
Orkun
En önemli kısma geldim burayı anlatmayacağız dediniz ne yapayım subnetworkingde teorik bilgiyi ben ?

İTÜ.nün yazılımının zayıf olduğuna dair bir yanlış bilgi var. İTÜ donanımcıdır doğru ama poiyasada rastladığım en iyi yazılımcılar ya İTÜ ya da Boğaziçi mezunuydu. Birçok İTÜ bilgisayar müh öğrencisi bu durumdan şikayetçi. Utanmasalar bütün kodlamaları assembly de isteyecekler falan diyenleri var. Onlara tek sözüm İTÜde aldığınız eğitimin ne anlama geldiğini okulu bitirmeden anlayamazsınız. ABDdeki en iyi ünivlerde önünüzü açar, sizi piayasa ortamı olsun akademik ortam olsun her yerde öne çıkartır.
Tatar Ramazan
En iyi bilg. müh. eğitimini veren yerler: 1- İTÜ 2- YILDIZ TEKNİK 3- İSTANBUL Bazı cahiller bir şey bilmeden buradaki sıralamaya itiraz ediyor. Ulan ben iyi üniversite okusaydım mesleğimden şikayet eder miydim? Başıma ne geldiyse ilgisiz, bilgisiz hocaların yüzünden geldi. İTÜ C++ dilini iyi öğretir. YILDIZ da C dilini iyi verir. Bu kadar basit. Çoğu üniversite bunu bile yapamaz öğrencileri harcar. Çünkü C dilinde struct yapısını öğrenince sınıfları da öğrenirsin. Sonra kalıtım, interface halledersin. Gerisi çorap söküğü gibi gelir. Hadi görüşürük..

Bilgisayar Mühendisleri
Here is the website inspired me to use 
it as a guide when I tried to define 
myself as an engineer candidate a few 
years ago. It really helped me to work
 and study feeling in confidence with 
being on the right way. I suggest this 
website to whom it may direct her/his 
to find the right career path. It 
includes many articles varies from 
real life experiences to detailed 
software engineering issues. But the 
most dignified parts for me are the 
articles in general and career titles.
Son okunan makaleler:
ViewState İçeriğini Sıkıştırmak
Bilgisayar mühendisliğinde okuyan öğrencilere tavsiyeler
Ajax kullananlar için yükleniyor resimleri
Bilgisayar Mühendisi Ne İş yapar? Program Nedir? Çeşitli Sorular?
Bir bakışta VB.net ve C# karşılaştırması
Bilgisayar mühendisliğinde okuyan öğrencilere tavsiyeler
ASP.NET - The Hashtable Object
Bilgisayar Mühendisi Ne İş yapar? Program Nedir? Çeşitli Sorular?
DataGrid ve GridView Kontrollerinde Görünmez Kolonlar
Ado.Net 2.0 - Connection Pooling' in Önemi
Bir bilgisayar mühendisinin bilmesi gereken en temel teknolojiler
Bilgisayar Mühendisleri Kaç Para Alır?
ASP.NET - Database Connection
Differences between ASP and ASP.NET
Dünya ile Rekabet Edecek Zehir Gibi Bir Bilgisayar Şirketi Kurmak
ASP.NET ile GIS Uygulamaları
Web Servislerinde Parametre Girisinin Gosterilmesi
ViewState’in Sunucuda Saklanması
Bilgisayar Mühendisleri Kaç Para Alır?
ASP .NET - The TextBox Control

Bilgisayar Mühendisleri Portalı

ViewState İçeriğini Sıkıştırmak

ViewState, ASP.NET uygulamalarında, sayfanın kendi üzerinde veri taşımasına olanak sağlayan bir yapıdır. Bu veriler, HTML kodlar içerisinde saklı alanlara (hidden field) gömülerek, istemci-sunucu arasında taşınırlar. Bu yüzden, eğer büyük ölçekli bir GridView ya da çok fazla eleman içeren DropDownList’ler gibi, ViewState’i şişirecek kontroller kullanılırsa, ciddi bir performans kaybı yaşanabilir. Böyle bir performans kaybı yaşamamak için, uygulama geliştiricisinin bir takım iyileştirmeler yapması gerekir. Yapılabilecek iyileştirmelerden biri de ViewState’in boyutunu azaltmak üzere sıkıştırma algoritmalarından faydalanmaktır.

D e f l a t e = dflt

    Sayfamızın ViewState’i içeriside a,b,c verileri olduğunu kabul edelim. Eğer biz bu verilerin sayısını 3’ten 2’ye düşüremiyorsak, toplam veri boyutunu azaltmanın tek yolu a,b,c verilerinin boyutlarını, verileri değiştirmeden azaltmak, diğer bir deyişle ilgili veri kümesini sıkıştırmaktır. Veriyi sıkıştırmak için çeşitli algoritmalardan faydalanılabilir. Bu algoritmalardan bir tanesi olan Deflate’i, .Net 2.0 ile birlikte gelen ve System.IO.Compression isim alanı altında bulunan tipler aracılığıyla, uygulamalarımızda kullanabiliriz.

System.IO.Compression
DeflateStream : Stream’leri sıkıştırmak ya da açmak için gerekli üyeleri barındırır.Deflate algoritmasını kullanır.Bu algoritma 4GB altındak her veriye uygulanabilir;ancak daha önceden sıkıştırılmış veri kümesi üzerinde deflate algoritmasını çalıştırmak, boyutu azaltmak yerine arttırabilir.
GZipStream : DeflateStream’den tek farkı,sıkıştırılmış kümeye header bilgisi ilave ederek,GZip formatına destek vermesidir.Arka tarafta kulanılan algoritmalar aynı olduğu için, bu şekilde bir formatlamaya gerek yoksa performans açısından DeflateStream tercih edilmelidir.
CompressionMode : Bir numarlandırıcıdır.Sıkıştırmak (Compress) ve sıkıştırılanı açmak (Decompress) şeklinde iki değer içerir.

 .Net 2.0 ile gelen DeflateStream ve GzipStream tipleri, System.IO.Compression isim alanı altında bulunmaktadırlar.

    Şimdi, isterseniz, bu bahsettiklerimizi bir uygulama üzerinde test edelim. Öncelikle yeni bir web projesi oluşturup, default.aspx sayfamıza bir adet GridView kontrolü atalım.
 
<asp:GridView ID="grdProducts" runat="server" />

Daha sonra kod tarafına geçip, GridView kontrolümüze, AdventureWorks’ün Production.Product tablosunu bağlayalım ve sayfayı bu haliyle çalıştırıp, kaynağına bakalım.

default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
   string _connString="data source=localhost;database=AdventureWorks;integrated security=SSPI";
   using (SqlConnection _conn = new SqlConnection(_connString))
   {
      string _query = "SELECT * FROM Production.Product";
      SqlDataAdapter _da=new SqlDataAdapter(_query,_conn);
      DataTable _dt = new DataTable("Products");
      _da.Fill(_dt);
      grdProducts.DataSource = _dt;
      grdProducts.DataBind();
   }
}



Yukarıda, - ufak! - bir bölümünü gördüğümüz ViewState’in boyutu 340076 byte olmakla birlikte, bir de tüm bu HTML kodların, sunucu-istemci arasında taşınıyor olması, ciddi bir problemin göstergesidir. Dolayısıyla bu denli bir ViewState’in de asla optimize edilmeden kullanılmaması gerekir.

Bu ViewState’i ziplesek de mi saklasak, ziplemesek de mi saklasak?

    Getireceğimiz çözüm aslında WinZip,WinRar gibi programların çalışma mantıklarından farklı değildir. Örneğimizde, içerisinde Compress() ve Decompress() metodlarını barındıran bir sınıfa ihtiyamıcız olacaktır. Öyleyse bu metodları aşağıdaki gibi oluşturalım.

ZipState.cs
public static byte[] Compress(byte[] data)
{
   MemoryStream ms = new MemoryStream();
   DeflateStream stream = new DeflateStream(ms, CompressionMode.Compress);
   stream.Write(data, 0, data.Length);
   stream.Close();
   return ms.ToArray();
}

public static byte[] Decompress(byte[] data)
{
   MemoryStream ms = new MemoryStream();
   ms.Write(data, 0, data.Length);
   ms.Position = 0;
   DeflateStream stream = new DeflateStream(ms, CompressionMode.Decompress);
   MemoryStream temp = new MemoryStream();
   byte[] buffer=new byte[1024];

   while (true)
   {
      int read = stream.Read(buffer, 0, buffer.Length);
      if (read <= 0)
      {
         break;
      }
      else
      {
         temp.Write(buffer, 0, buffer.Length);
      }
   }
   stream.Close();
   return temp.ToArray();
}

     Her iki metod da parametre olarak bir byte dizisi alıp,geriye yine bir byte dizisi döndürken, DeflateStream tipinden örneklediğimiz nesneyle  sıkıştırma-açma işlemini gerçekleştirmektedirler (Kodun nasıl işlediği üzerinde uzun uzun durmayacağım, bu kısmı siz değerli okurlara bırakıyorum).
    Sınıfımız hazır olduğuna göre, geriye, sayfamızın SavePageStateToPersistenceMedium() ve LoadPageStateFromPersistenceMedium() metodlarını ezerek, ViewState’i "bizim istediğimiz şekilde" oluşturmak kalıyor.

default.aspx.cs
protected override void SavePageStateToPersistenceMedium(object state)
{
   LosFormatter formatter = new LosFormatter();
   StringWriter writer = new StringWriter();
   formatter.Serialize(writer, state);
   string viewState = writer.ToString();
   byte[] data = Convert.FromBase64String(viewState);
   byte[] compressedData = ZipState.Compress(data);
   string str = Convert.ToBase64String(compressedData);
   ClientScript.RegisterHiddenField("__CompressedVIEWSTATE", str);
}

protected override object LoadPageStateFromPersistenceMedium()
{
   string viewstate = Request.Form["__CompressedVIEWSTATE"];
   byte[] data = Convert.FromBase64String(viewstate);
   byte[] uncompressedData = ZipState.Decompress(data);
   string str = Convert.ToBase64String(uncompressedData);
   LosFormatter formatter = new LosFormatter();
   return formatter.Deserialize(str);
}

    Çözümü test ettiğimizde, daha önce 340076 byte olan ViewState’in, sıkıştırma sonrası 49204 byte’a düştüğünü görürürüz.Bu da %85 gibi bir sıkıştırma oranı anlamına gelmektedir.

Dikkat!

    Bu noktada Deflate algoritmasının her koşulda aynı sonucu üretmediğinin altını çizmek gerekir (Çizdim bile:)).Hatta algoritma düzgün çalışmaz ve veri sıkıştırılamazsa, Compress() metodunun döndürdüğü verinin boyutu, eklenen header’larla birlikte, orjinal boyutun da üstüne çıkabilir.Örneğin, projemize eklediğimiz ve boş olan default2.aspx sayfası, ViewState’inde 52 byte veri tutarken,Deflate algoritmasını kullandığımızda, boyut 164 bytea yükselmektedir.

default2.aspx - Sıkıştırılmadan önce ViewState
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGQkufqAWsUnKW76l4cm6MlUAAAAAA==" />

default2.aspx - Sıkıştırma işleminden sonra ViewState
<input type="hidden" name="__CompressedVIEWSTATE" id="__CompressedVIEWSTATE" value="7b0HYBxJliUmL23Ke39K9UrX4HShCIBgEyTYkEAQ7MGIzeaS7B1pRyMpqyqBymVWZV1mFkDM7Z28995777333nvvvfe6O51OJ/ff/z9cZmQBbPbOStrJni
GAqsgfP358Hz8i/u9f8zed/aa/7o89OLi3f2/n/r17s/8H" />

 Deflate algoritması, her koşulda aynı sonucu üretmeyebilir.Bu yüzden, verinin orjinal boyutunun aşılıp aşılmadığının kontrol edilmesi gerekir.

Peki ya yükleme süreleri?

    ViewState’i sıkıştırmak, sunucu için ekstra iş demektir. Dolayısıyla, test sonuçlarının daha sağlıklı bir hal alabilmesi için, yaptığımız işlemlerin sunucuda yansımalarını da izlemek gerekir. Bu amaçla Trace özelliğinden faydalanılabilir.

default.aspx - Sıkıştırma yok


default.aspx - Sıkıştırma var

 Trace özelliğini kullanmak için, sayfanın @Page direktifinde, Trace="true" olduğunu söylemek gerekir.

Sonuç olarak

    ViewState’i sıkıştırırken kullandığımız algoritma, sonucu belirleyecektir. Deflate algoritması bu anlamda başarılı bir algoritma olsa da her zaman aynı sonucu üretmeyebilir. Dolayısıyla optimizasyon yaparken göz çıkarmamak gerekeceğinden, sayfanın yayınlanmadan önce, sıkıştırmanın ne ölçüde başarılı olduğu mutlaka test edilmeli, sunucuda meydana gelen gecikme süreleri izlenmedilir.
    Tabi ki, ViewState ile ilgili yapılabilecek optimizasyonlar yalnızca "sıkıştırma işlemi" ile sınırlı değildir. Sıkıştırmanın yanında, ViewState’in session içerisinde ya da SQL’de saklanması gibi konular da vardır  Biz bu makalemizde, yalnızca, sıkıştırma algoritmalarından nasıl faydalanabileceğimizi inceledik. Bir dahaki makalede görüşmek üzere,hoşçakalın...

Bu makaleyi beğendin mi? Yorumunu Yaz!







Sizden Gelen Yorumlar:

Yorum Yazın




Copyright© 2001-2017. Bilgisayar Mühendisleri Portalı | Bütün hakları saklıdır.