Kategoriler


SON YORUMLAR
Tatar Ramazan
Bilgisayar mühendisliğinden şikayet etmeyeyim diyorum ama bütün veriler beni haklı çıkarıyor. Aşağıda yazdık okuyun: Yazılım uzmanı pozisyonu için; 1-) Kariyernette 2000-3000 TL arası maaş veren 100 ilan var. 2-) 3000-6000 arası maş veren 100 ilan 3-) 6000 ve üzeri veren sadece 5 ilan var Bu mu iyi para kazandıran meslek?! Memurluğu iyi ki bırakmamışım. Bir de adamın canını çıkarıyorlar. Her çıkan teknolojiyi öğrenmeni bekliyorlar. İstanbulda kiralar 2000.den başlıyor. 6000 TL bile yüksek maaş falan değil. 2008.de mezun oldum. O zaman da aynı paralar veriliyordu. Zaman geçtikçe aday sayısı artıp rekabet kızıştıkça maaşlar düşüyor, vasatlaşıyor. 2010 yılında 5000 TL kazanan grafikerler duyuyordum. Mesleğimiz yerlerde sürünüyor. Memur olmak ta zorlaşınca uyanık iş veren size iyi para verir mi sanıyorsunuz? Nasıl olsa kaçamazsınız Devlet.e...KPSS zor artık.

yeşekkür ederiz beğendim
Dilara
Merhaba, ben bilgisayar mühendisliği öğrencisiyim yabancı dilimde var ama sitelerden okuduğum yorumlardan dolayı gelecek kaygısı yaşıyorum,nasıl bir yol izlemem gerek lütfen yorumlarınızla bana yardımcı olur musunuz?
sultan b.
makaleniz gerçekten yardımcı ve aydınlatıcı fakat örnekler verirken sürekli .abi, adam. vs özneler kullanmanız beni rahatsız etti. bilgisayar mühendisi olmak isteyen bir kadın olarak açıkçası bu durum beni biraz umutsuzluğa sürüklemedi de değil.
irfan
https://www.udemy.com/linux-and-bash-shell-scripting-from-beginner-to-intermediate/learn/v4/overview
Tatar Ramazan
İlerde düzelecek inşaallahu Teala her şey. Herkes hakkını eninde sonunda alır. Son gülen iyi güler. Başlangıçta bütün mühendisler aynı alır ama kendini geliştiren ilerleyen dönemlerde farkı açar.
tatar ramazan-a
tatar ramazan ağlamayı bırak. kendi şirketini kurma vaktin gelmiş. devletten ayrıl. işveren ol artık. herkesi eleştirmeyi bırak. eleştirilmeyecek bir şirket kur.
bir zamanlar anadoluda
zamanında iyi sürünmüş, iyi aşağılanmış ve itlerin çakalların arasında yaşamış, onlarla savaşmış itliği çakallığı halen öğrenen birisi olarak tavsiyeler: 1- kendini geliştirmek tam bir saçmalıktır (Google vb. mülakatlara falan girmek gibi durumlar hariç) 2- herşey çevrenle başlar çevrenle biter, iş bulma da karı da kız da çevrene bakar. başta suratıma bile bakmayan kızlar, popülerlğimi (milletçe akıllı, çalışkan, başarılı, zengin, cool diye nitelenmek gibi) görünce köpeğim oldu selam dahi vermiyorum yine rahat vermiyorlar. 3- nasıl populer oldum? çalışarak mı? en az çalışanlardandım. 4- algıyı yöneteceksiniz. kendinizi satmayı bileceksiniz. reklamınızı yapacaksınız. kendini satamazsanız ne kız gelir ne iş verirler. 5- o beğenmediğin 3 birimlik erkek veya işe giren eleman, potansiyeli 1 ise 3 gösterir sen 10 ken bişr gösteremezsen, ne karı gelir ne birşey. yarın karın da sygı duymaz gözünün önünde başkasıyla sikişir.
Tatar Ramazan
Site sahibine 2008 de mail atmıştım danışmıştım. O günden beri siteyi takip ederim. Ateşli yazıları kendimi geliştirmemde etkili olmuştur. İstanbul üniversitesi iyi eğitim veriyor diye yorum yazan da bendim. Çok uyanığımdır. Zekam keskindir. Keşke üniversitem de biraz yol gösterseydi. Dersler, kitaplar belli sen niye hocalardan rehberlik bekledin diyecek olursanız: Tamam da bir sürü programlama dili var. Hangisinden başlayacağım, ne bileyim? C dilini öğrenin sonra C# veya java dan devam edersiniz diyebilirlerdi. Bunu bile yapamadılar. Bölüm başkanı da değişmişti. İyi şeyler yapayım derken daha kötü batırdı. Nesne tabanlı programlama dersinde for döngüsü gördük C sharpta. En azından takip programı yaptırdı bize işte. ADO.NET, SQL Server öğrendik. Ama sınıf nesne tabanlı programlamayı bir türlü sökemedi. Çünkü C dilinde struct konusunu öğrenmeyince sınıfları da özümsemek zor oldu. Debelendik durduk. İTÜ, Yıldız Teknik, İstanbul gibi üniversitelerin farkı burda. Bu kadar basit! C, C++ dilini iyi veriyor adamlar. Yahu C dilinin konularını tahtaya yazsaydı araştırma görevlisi bana yeterdi bile. Mıy mıy mıy yapıp durdular 4 sene boyunca. Ben ilk yarıyıl tatilinde (5 haftaydı) evde İntegraldan 200 soru çözüp vize finalden 100-100 almış adamım. Görün işte ben bile geri kalıyorsam programcılıkta öğretimde sorun var demek ki. Site sahibine kalsa üniversite önemli değil. Tabi kendisi İstanbul üniversitesinde iyi eğitim aldı. Kötü öğretimi, ilgisizliği tatmadı.
Tatar Ramazan
Eve şanssızdım her açıdan bundan sonra mutlu olur muyum bilmiyorum. Biz imanlıyız umudumuzu kesmeyiz. Yazdıklarımda doğruluk payı da var ama. Meslek ve sektörde bir sürü sıkıntı var. Sektör yöneticileri ve Üniv. hocaları niye bir araya gelip sorunları çözemiyor. Bilişim sektörü daha verimli büyük olabilirdi. Yazılım çağı diyorsak bu işe bir el atmalıyız. Mesleğimden şikayet ederim ama aynı zamanda ateşli gayretli adamımdır. Üniversitede gene hasta takip programı, satranç oyunu, E-Ticaret sitesi ve irili ufaklı 30 tane program yapmıştım. Çok boş mezun olmadım. Sınıfın ineklerindendim. Marmara bölgesinde 92 den sonra kurulan bir üniversitede okudum. Hocalar ilgisiz ve bilgisizdi. Sınıfın % 70 i C dilini öğrenemeden mezun oldu. Şunu şöyle yapın demekten aciz adamları hoca diye başımıza niye koyuyorlar? Sistemde de saçmalık var. Derslerin çoğu işe yaramıyor. Lise 1 den itibaren programlama çalışsaydım şimdi çok farklı olurdu. Boş yere zaman kaybı okumak. İnsanlara da zulmetmeyin gayrı. Bilim adamı olmak isteyen üniversitede kalsın. Bana Java, .NET, Oracle lazım kardeşim. Okumayanların eşi, arabası var. Ben sürünüp duruyorum. Memur maaşıyla bi şey yapamıyorsun ki. 2 ay önce 5000 tl oldu işte. Harita mühendisine de veriyorlar o kadar zaten. Benim sadece SQL bilgim onları ezmeye yeter.
HARUN AYDIN
YAZI BENİ DE ETKİLEDİ.BENDE BİLGİSAYAR ALANINDA İLERLEMEK İSTİYORUM.İLGİM DE VAR AMA YETERLİ BİLGİM YOK.BU YAZIDA ANLADIM Kİ GEREK DE YOKMUŞ İYİ BİR OKULDAYIM İYİ BİR ÜNİVERSİTE DE KAZANMAK İÇİN ELİMDEN GELENİ YAPICAM. BU YAZI İÇİN ÇOK TEŞEKKÜR EDERİM..
Mehmet Cemil Bayhan
Çok harika bir makale yazmışsınız.Ellerinize sağlık. Beni bayağı gaza getirdi gerçekten. Ben şuan lise 3 öğrencisiyim. Şimdiden bilgisayar hakkında bilgi sahibi olmaya çalışıyordum ama sizin bu yazınızı okuduktan sonra fikrim değişti. Artık şuan düşüneceğim tek şey YGS-LYS. SİZE NE KADAR TEŞEKKÜR ETSEM AZDIR. ÇOOOOOK TEŞEKKÜR EDİYORUM.........😆😉😊
Mehmet Cemil Bayhan
Çok harika bir makale yazmışsın ızgara.Ellerinize sağlık. Beni bayağı gaza getirdi gerçekten. Ben şuan lise 3 öğrencisiyim. Şimdiden bilgisayar hakkında bilgi sahibi olmaya çalışıyordum ama sizin bu yazınızı okuduktan sonra fikrim değişti. Artık şuan düşüneceğim tek şey YGS-LYS. SİZE NE KADAR TEŞEKKÜR ETSEM AZDIR. ÇOOOOOK TEŞEKKÜR EDİYORUM.........😆😉😊
eskidevir-yenidevir
sizin şanssızlığınız olmuş. işler yolunda gitmemiş diye anlıyorum.

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
ASP.NET - The Hashtable Object
Bilgisayar Mühendisliğini yeni kazandım, neler yapmalıyım?
ASP .NET Maintaining the ViewState
ASP.NET - The SortedList Object
ASP.NET - The ArrayList Object
Bilgisayar Mühendisleri Kaç Para Alır?
VNC Nedir? (Virtual Network Computing)
Bilgisayar Mühendisi Ne İş yapar? Program Nedir? Çeşitli Sorular?
Flash CS4’ün Getirdiği Yenilikler
Dünyanın En İyi 500 üniversitesi 2007 Sıralaması Açıklandı
Bilgisayar Mühendisleri Kaç Para Alır?
Soru sormayı bilmek?
Database programlama...
Yazılım Mühendisliği ve Bilgisayar Mühendisliği arasındaki farklar
Bir bilgisayar mühendisinin bilmesi gereken en temel teknolojiler
Bilgisayar Mühendisleri Kaç Para Alır?
ASP.NET 2.0 - New Features
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler
Bilgisayar Mühendisi olacaklara üniversite seçme rehberi?

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.