28 Kasım 2011 Pazartesi

Bir uygulamanın ikinci açılışında daha hızlı açılmasını sağlayan nedir?

Bilgisayarda bir uygulamanın ilk açılışında nefret verdirecek kadar yavaş, diğer açılmalarında da hızlı açıldığını fark etmişsinizdir. Buna göre
  1. Daha önce hiç açılmamış (bilgisayara kurulduktan sonra 1 kere bile çalıştırılmamış) uygulamalar en yavaş.
  2. Daha önceden açılmış ancak bilgisayar yeniden başlatıldıktan sonra ilk defa çalıştırılacak uygulamalar orta yavaşlıkta
  3. Bilgisayar açıkken açılıp kapatılmış uygulamalar yeniden açılırken hızlı,
  4. Zaten çalışan bir uygulamadan bir tane daha açtığımızda oldukça hızlı açılmaktadır.
Peki bunun nedeni nedir? Neden bir uygulamayı ilk açtığımızda beklemek zorundayız?
Bunun birçok sebebi vardır. Ancak belli başlı olanları yazacak olursak :

1.Durum için (Bilgisayara kurulduktan sonra bir kere bile çalıştırılmamış uygulama) :
Birçok uygulamanın en son ne yaptığı, hangi kullanıcılara hangi hizmetleri verdiği, kullanıcıların hangi ayarları yaptığı... gibi durumları tutan verilere ihtiyacı vardır. Bu program daha önce bir kez olsun çalıştırılmamışsa henüz var olmayan bu ayar dosyalarını yaratması, işletim sistemiyle bağlantısını kurması, internete bağlanması gerekiyorsa işletim sistemine bunu belirterek kullanıcıdan izin istemesi.. gerekmektedir. Yapılan bu ilklemeler ve izinler yüzünden daha önce hiç açılmamış bir uygulama oldukça geç açılmaktadır.

2.Durum için (Bilgisayar yeniden başlatıldıktan sonra ilk defa çalışacak uygulama) :
Bir programı açtıktan sonra beklememizi gerektiren işlemler, bu durumdaki işlemlerdir. Bir uygulamayı ilk defa çalıştırıldığında, yapılacak tüm işlemler harddisk üzerinden gerçekleştirilir. Çünkü bu uygulama bilgisayar açıldığından beri hiç çalıştırılmamıştır ve tüm yükleme işlemlerini harddisk üzerinden gerçekleştirmesi gerekmektedir. Bu yükleme işlemlerinin de birçok türü vardır. Ancak başlıcaları şunlardır :
  • Registery üzerinden programa ait verilerin kontrol edilmesi
  • Programa ait klasörler taranarak, programa ait ayar dosyalarının kontrolü
  • Programın kullandığı frameworklerin yüklenmesi (.NET framework, Java framewokü, özel frameworkler...) ve derlenmesi
  • Uygulamanın RAM üzerine yüklenmesi ...
Burada açılmaya yük bindiren iki etmense harddisk üzerinden yapılan okuma işlemleri ve frameworklerin derlenmesi işlemidir.
Harddisk işlemleri zaman alır, çünkü harddisk bilgisayarın en yavaş parçasıdır. İşlemci ne kadar hızlı olursa olsun, verinin alınma hızı harddiskin hızına bağlıdır.
Framework işlemleri zaman alır, çünkü hem harddiskten okuma hem de derleme gerektirir. Derleme işlemleri ne diyenlere :
-- Günümüz uygulamalarının çoğu ya üst düzey dillerle(C#, Java..) yazılmıştır, ya da üst düzey dillerle yazılmış başka uygulamaları,kütüphaneleri kullanmaktadır. Bu üst düzey dillerle yapılan uygulamalar, kütüphaneler ise yazıldıkları anda makine diline çevrilmez, ara bir dil şeklinde (Intermediate Language) tutulurlar. Bilgisayarın bu uygulamaları anlayabilmesi için, önce bunları kendi anlayabileceği 0-1 şekline çevirmesi gerekir. Bu işleme ise derleme (compile) denir. (Bkz: .Net için : CLR, Java için : JVM)

Bunun yanında, bu uygulamanın kullandığı kütüphanelerin daha önceden başka uygulamalar tarafından kullanılmış olması, daha önceden bir derleme işlemini gerektireceğinden, kısmen de olsa uygulamanın daha hızlı açılmasını sağlar.

3.Durum için (Bilgisayar açıkken daha önce kullanılmış bir uygulamanın yeniden açılması) :
  • Bir uygulama daha önceden açıldığında, birçok işlem daha hızlı gerçekleşir çünkü, daha önceden derlenmiş uygulama sistem dosya önbelleğinde (file system cache) zaten vardır. Doğrudan bu kullanılabilir. Eğer yoksa, yeniden derleme yapılır. 
  • Bunun yanında bazı uygulamalar daha hızlı açılmak amacıyla, açılışları sırasında sisteme ajan yazılımlar bırakırlar ve bu sayede ikinci ve sonraki seferlerde daha hızlı açılırlar.
  • İşletim sisteminin tüm kontrolleri yeniden yapmasına gerek kalmaz, çünkü bir önceki seferde bu kontroller zaten yapılmıştır.
4.Durum için (Zaten çalışan bir programdan bir tane daha açmak):
En hızlı yöntemin bu olacağı aşikardır. Birçok kontrol yapılmaz, derleme yapılmaz,ram üzerine aktarılacak veri sayısı oldukça azdır..

8 Kasım 2011 Salı

İnternetteki her adımınız takip mi ediliyor?

:: Görsel ::
powsley.blogspot.com/
Hemen söyleyeyim : Evet. Bunun bir çok çeşidi var. Bazıları sosyal sitelere koyduğunuz veriler yüzünden -ki ne seviyede takip edileceği bu durumda kişiler tarafından belirlenebilir-, diğeri ise bir siteye girer girmez hakkınızda alınan bilgiler. Peki nasıl?

1 - Kişinin kendi isteğiyle verdiği veriler: Kişisel bloglar, sosyal sitelerde paylaşılanlar, foursquare'de paylaşılan konum bilgisi,  facebook beğenileri, twitter twitleri bu sınıfa ayrılabilir. Bu verilerin kimler tarafından görülebileceğine izin verebildiğiniz için, sizin istediğiniz kadar takibe alınabilirsiniz. Örneğin facebook raklamları. Herhangibir siteye giderek beğen'e tıkladığınızda, bu sitede yapmış olduğunuz beğeni başkaları tarafından görülebilir hale gelmektedir. Başka bir arkadaşınız bu siteye girdiğinde facebook şöyle diyecektir : "X arkadaşın ve Y kadar kişi bu siteyi beğendi, sen de beğencen mi?" Eğer bu şekilde izlenmek istemiyorsanız, bu ayarları değiştirebilirsiniz.
  • Facebook için : http://www.facebook.com/settings?tab=ads
  • Google+ için : https://plus.google.com/+1/personalization
2 - İstek dışı izlenmelerimiz : 1. izlenme şeklinin bizim isteğimiz ve bilgimiz dahilinde olduğunu söylemiştik. Yani, biz bir siteye gidip +1, beğen veya paylaş butonlarından birine basmadıkça internetteki gezinmemiz gizli kalacaktı. Peki gerçekten öyle mi? Sadece tıkladığımız sürece mi izleniyoruz? Tabii ki hayır. Facebook, Google, Twitter... gibi siteler, diğer siteler için ücretsiz hizmetler sağlıyor. +1, beğen, facebook yorum, follow on twitter.. gibi hizmetler bunlar. Bu hizmetlerse girilen siteden değil de bu büyük siteler üzerinden çalıştığından, internette gizli bir dolaşma zor hale geliyor? Mesela hangi hizmetler bizi takip ediyor? :
  • Google plus, google adsense, google analytics
  • Facebook beğen, Facebook yorum,
  • Twitter follow
Peki nasıl?
Büyük sitelere X, küçük sitelere Y diyelim. X sitesi Y sitesine kullansın diye bir kod veriyor. Diyor ki : al bu kodu sitenin bir yerine yapıştır, ben de sana Z hizmetini sağlayayım. Y sitesi de bu güzelim hizmeti kaçırmamak için hemen kabul ediyor tabii.

Oysa X sitesi, kendi sitesi üzerinde çalışan bir JavaScript, veya kendi sitesi üzerinden çalışan bir <iframe> kodu vermiş oluyor. Bu durumda, X sitesi Y sitesine kaç kişinin geldiğini, nereden geldiğini, kim olduğunu biliyor.

Kaç kişi geldiği, nereden geldiği tamam da, kim olduğunu nereden bilsin yahu?
Şöyle : Siz internet kullanıcısı olarak Y sitesine giriyorsunuz. Ancak 5 dk önce X sitesinde bulunduğunuzdan, ve henüz çıkış yapmadığınızdan cookie, session bilgileriniz X sitesinin elinde oluyor. X sitesi de Y sitesine verdiği kodları kendi üzerinden çalıştırdığından, siz Y sitesinde geziyorum diye düşünürken, X sitesi tarafından izleniyorsunuz.

Üstelik sadece girdiğiniz site değil, o sitede hangi sayfalara girdiğiniz, sayfada kaç dakika durduğunuz, o sayfaya nereden geldiğinize kadar tüm bilgilerinize erişilebiliyor.

Nasıl engellerim?
Basit. Facebook, Google, Twitter gibi sitelerde işinizi bitirdikten sonra logout(çıkış) butonuna basarak. Yani, siz X sitesinden çıkış yapmadığınız sürece ve Y sitesi X sitesinin hizmetini kullandığı sürece internetteki tüm hareketinizin izlenmesi kaçınılmaz.
Related Posts Plugin for WordPress, Blogger...