Pages: << 1 ... 5 6 7 8 9 10 11 12 13 14 15 ... 38 >>

03/10/08

Permalink 10:58:29, by burku Email , 555 words   Turkish utf-8 (TR)
Categories: Yaşam & Gezi

İtalya Gezintisi - Bölüm 2

1. bölümde Floransa'yı anlatmıştım biraz. Floransa'dan sonra Roma'ya geçtik. Roma'da şehir merkezine ortalama bir saat uzaklıkta, odalarının müstakil ev gibi olmasının dışında iyi yönü olmayan bir otele gittik. Öyle ki otelin etrafında sadece akşamları açık olan pizzacı dışında yemek bulunabilecek en yakın yer yürüyerek yarım saat uzaklıktaydı.

Ertesi gün yine sabahın köründe kalkarak Pompei'e gittik. Vezüv yanardağının patlayarak eteklerinde kurulmuş olan Pompei'in üzerini lavlarla örtmesi tarihteki en dehşet verici olaylardan biridir. Aslında dehşet verici olduğunu bilmemizin nedeni olayın 79 yılında gerçekleşmiş olması ve yaklaşık 1700 yıl sonra şehrin bozulmamış olarak tesadüfen ortaya çıkmasıdır. Bozulmamış olmasının nedeni şehrin üzerini kaplayan lavların taşlaşması ve altındakileri havadan ve nemden korumuş olmasıdır.

Yani ortada Tanrı'nın cezalandırıp taş yaptığı insanlar diye bir şey yoktur. Ölümler yanardağın patlamasından dolayı etrafa yaydığı gaz ve dumandan zehirlenerek olmuş, daha zonra da lavla kaplanmışlar, lav da kuruyup taşlaşmıştır. Cezalandırma meselesinin sözkonusu olmasının nedeni Pompei halkının cinsel sapkınlık halinde yaşadığının öne sürülmesidir. Pompei refah içinde ve zamanına göre çok gelişmiş bir yermiş. Bir şehir düşünün ki İstanbul'un şehir düzeni yanında ahır gibi kalıyor.

pompei

Adamlar su borusu döşemişler. Unutmayın ki bunlar şimdiki zamandan 2000 yıl önce oluyor. Hamamlarının duvarlarının içine gömülmüş sıcak su dolaşımını sağlayan bir çeşit kalorifer sistemleri bile var. Ekmek fırınları var, bildiğimiz fırın.. Evlerin duvarları fresklerle süslü. Tabi çoğu yerlerinden sökülmüş ve müzelere taşınmış.

pompei

Tiyatrolarını gördük. Yağışlı havalarda tiyatronun üzerini kapatıyorlarmış. Kölelik varmış.

Şehirde binlerce insan bulmuşlar. Birkaçını şehrin içinde sergiliyorlar. İlk gördüğümde itiraf etmeliyim ki çok üzüldüm. Böyle bir ölümü yaşamayı hiçkimse istemez. Bir köle elinde kemerle kalakalmış, kimbilir kaç tanesi o şekilde öldü. Köleleri evden çıkarken kaçmasın diye kemerle bağlarlarmış.

pompei

Madem bu sefa düşkünü insanlar cezalandırıldı, efendiler kaçmaya çalışırken, o evin içinde kemerle bağlanmış çırpınan zavallı kölelerin suçu neydi?

Vezüv hala aktif olan bir yanardağ. Yani her an patlayabilir. Eteklerinde yüzbinlerce insan yaşıyor. Toprağı verimliymiş. Kocaman limonlar yetişirmiş :)

Pompei gezimiz bir veya iki saat sürdü çünkü günün tamamı diğer ekstra Capri gezisine ayrılmıştı. Capri bir ada ve Brigitte Bardot o adanın sahilinde kapri pantolonuyla gezdiği için bu adı almış. Yani magazinsel değeri olan bir yer. Bu yüzden biz o geziyi tercih etmedik, onun yerine Napoli'de kendi başımıza takılmayı seçtik.

23/09/08

Permalink 11:19:54, by burku Email , 6 words   Turkish utf-8 (TR)
Categories: çizim

Tekerlekli yeşil adam

Vektörlerle oynamaya bayılıyorum. :>>

Illustrator + tablet + eğlence

Permalink 10:58:44, by burku Email , 568 words   Turkish utf-8 (TR)
Categories: Yaşam & Gezi

İtalya Gezintisi - Bölüm 1

Tur şirketiyle İtalya'ya gittik.

Buradaki işlemlerden bahsedeyim...

Öncelikle pasaportunuz olmalı. Vakti geçmişse uzatmalısınız. Pasaportla ilgili her türlü işlemi emniyette yapıyorsunuz.

Biz Barbaros'ta önümüze çıkan Jolly Tur'la gittik. Vize işlemlerini onlara bıraktık. Bize üzerinde tamamlamamız gereken belgeler yazan bir kağıt verdiler. Çalıştığımız şirketlerden bir sürü belge. Banka hesaplarımızın dökümüne kadar her şeyi götürdük. Bunun için iki üç git gel yapmamız gerekti. Çünkü tur şirketinde çalışanlar belgelerin neler olması gerektiğini tam olarak bilmiyor. Konsolosluktaki adamlarına gönderiyorlar, onlar eksik var derse arayıp söylüyorlar. Vizeyi almaya gittiğimizde de turun adamını kapıda beklemek zorunda kaldık. Hatta havaalanında bile turun adamını bekledik.

Tur şirketinin ayarladığı en iyi kişi rehberimizdi. Sokakları karış karış bilen ve tarihi yalamış yutmuş bir insan, Tülin Hanım..

Turla seyahat etmek dayanıklılık testi gibi birşey. Neredeyse üç günümüz otobüsle yollarda geçti. Sabahın köründe kalk, sonra haldır huldur oradan oraya koş, saatlerce sokaklarda yürü, gez.

Uçakla Slovenya'ya gidip oradan İtalya'ya girdik. Tüm gün otobüsle güneye gittik. İlk durduğumuz yer Floransa oldu. Floransa'nın bir kazası olan Montecatini'de gece ölü gibi uyuduk.

Montecatini

Yorgunluktan akşamki Pizza turuna katılamadık.

Bu arada turun sadece rezervasyon yaptırırken ödediğiniz paradan ibaret olduğunu düşünüyorsanız yanılıyorsunuz. Ekstra denilen gezintiler oluyor. Adından da anlaşılacağı gibi bunlardan ekstra para alınıyor.

Sabah kalkıp Floransa'nın merkezine gittik. İtalya'nın sanat çılgınlığını görmeye oradan başladık. Adamlar yüzyıllardır hiç bir eseri ellememiş, bozmamış, özenle korumuş. Her köşede binlerce turist. Turizmden para basıyorlar.

Eserlerin çoğunu müzelerde saklıyorlar, meydanlara da kopyalarını yerleştiriyorlar. Michelangelo'nun Davut heykeli gibi...

Bir sokak var, sağlı sollu kolonlarda İtalyan sanatçı, filozof, bilim adamı heykeli...Buyrun bu da büyük insan Michelangelo...

Sokağın ortasında yerlere şu şekilde resim yapan insanlar var. Taksimin ortasında böyle bir kızın yere resim yaptığını düşünün, kaç tane adam etrafında cep telefonuyla orasının burasının fotoğrafını çeker, başına neler gelir sizce?...

Aşağıda gördüğünüz heykel değil, insan. Kıpırdamadan - arada tabiki pozisyon değiştirerek - birkaç saat duruyorlar. Kutularına para atarsanız sizinle birlikte fotoğraf makinesine poz veriyolarlar.

Ertesi gün müze şehir Siena'ya gittik. İnsanı aptallaştıracak derecede ayrıntı barındıran dev gotik yapılar var. Santimetreyi bile boşa harcamamışlar.

Siena'da her yıl bizdeki cirite benzer bir oyun oynanırmış. Halk mahallelere göre bölgelere ayrılmış. Salyangozlar, kaplumbağalar gibi isimleri var. Bu bölgeler kendi aralarında Siena'nın koskoca meydanında atlarla bu oyunu oynar, kazanan da şenlikler yapar, o yılın şampiyonu olurmuş. Oyunun adı da yabancı değil, Palio...

Sırada Pompei, Napoli, Roma, Venedik ve Lubliana var. Önce kısa bir ara...

22/09/08

Permalink 08:32:37, by ertan Email , 78 words   Turkish utf-8 (TR)
Categories: Haberler

Bu siteye erişim mahkeme kararıyla engellenmiştir

Yeter artık, hangi siteye girsek artık bu mesajı görmek sinirleri bozmaya başladı.
En son olarak fazla mesai sitesinde son aymazlık gönderilmiş.

Oxford Üniversitesi profesörlerinden, dünyaca ünlü İngiliz bilim adamı Richard Dawkins'in web sitesi, www.richarddawkins.net mahkeme kararına ilişkin sayı ve detaylar belirtilmeksizin Türk Telekom tarafından erişime engellendi.

Belkide başka bir adsl internet sağlayısına başvurmanın zamanı geldi geçiyor.

20/09/08

Permalink 11:37:07, by ertan Email , 1435 words   Turkish utf-8 (TR)
Categories: c#, Coding, Yazılım

kod kalitesi üzerine

Bir yazılımın kalitesini ölçerken hafıza kullanımı, performans, stabil kalma, hata adedi, yazılımcı "din"i inançlarına uygunluk vs gibi ölçekler kullanırsınız peki karşınızda duran kod dosyası için kaliteyi nasıl ölçersiniz?

Bakalım;

  • Satır adedi?
  • Hız?
  • Okunabilirlik?
  • Notlar (Comments)?
  • Hata kontrolleri ?

Siz bu listeye istediğiniz kadar aklınıza gelenleri ekleyebilirsiniz ve hepsi pasta'nın bir dilim'ini paylaşır. Bazılarından ödün verip diğerini yükseltebilirsiniz ancak hangi dilimlerin daha çok yer kaplayacağı asıl sorundur.

Satır Adedi

Bazı yazılımcılar (-ki buna kendimi tutamayıp bende dahil oluyorum) ürettikleri yazılımın satır adedi ile övünürler. Aslında satır adedinin yüksek olması her zaman (ama her zaman) kötüdür. Satır adedinin artması yazılımın karmaşıklaşması, bakımının zorlaşması, hatalı/kötü/bilmeden bir "reuse" yada varsa object oriented kullanımının işaretidir.

Aynı işi yapan 2 yazılım için satır adedi daha düşük olan'ın yönetimi her zaman için daha kolaydır. Herhangi bir hata olması durumunda neden'i bulmanız her zaman daha kısa sürecektir. Bu yüzden mümkün olduğu kadar satır adedini az tutmak gerekli.

Satır adedi daha çok projenin boyutu ile ilgili bir ölçektir. Fazlası her zaman kötüdür.

Gerekmediği sürece yeni bir satır eklememek ilerideki saçlarınızın yerinde ve koyu renkte kalmasına yardımcı olur.

Hız

Hızlı çalışan bir yazılım her zaman için tercih edilir ancak bu konuda 2 kez düşünmek gerekli.

Okunabilirliği yüksek ama yavaş çalışan bir kodu, bakınca kimsenin hiç bir şey anlamadığı ama hızlı çalışan bir kod'a çoğu zaman tercih etmeniz gerekir.

Neden?

Eğer tek başına bir yazılım geliştiriyorsanız bu çoğu zaman sizin için bir sorun yaratmaz ama bir ekip ile çalışıyorsanız ekip'deki herkesin sizin becerilerinize sahip olması gibi bir imkanınız olmayacaktır.

Yazılımın içinde bu hızlı çalışan ama dokunulamayan kısımları bıraktığınız her parça dönüp dolaşıp size gelecektir.

Yıllar önce yazdığım (-ki şu an ne iş yaptığını bilsem de nasıl yaptığı konusunda en ufak bir fikrim olmayan) bir kod örneği vereyim;

Code:

void putpixel16(int x,int y,unsigned char * segment)
{
   register unsigned char * vidmem;
   register unsigned short int packed;
  
   vidmem = (unsigned char * ) (segment + ( y * SCREEN_WIDTH + x ) * SCREEN_BYTEPERPIXEL);
 
   _asm { mov eax,vidmem }
   _asm { mov edi,eax    }
   _asm { mov al,ColR   }
   _asm { and al,0f8h    }
   _asm { mov bl,ColG   }
   _asm { and bl,11100000b }
   _asm { shr bl,5       }
   _asm { or al,bl       }
   _asm { stosb          }
   _asm { mov bl,ColG   }
   _asm { and bl,1ch     }
   _asm { shl bl,3       }
   _asm { mov al,ColB   }
   _asm { shr al,3       }
   _asm { or al,bl       }
   _asm { stosb          }
}

ve aynı kodun daha anlaşılabilir hali;

Code:

void putpixel16(dword x,dword y,unsigned char * segment)
{
   register unsigned short int *vidmem;
   register unsigned short int packed;
 
   vidmem = (unsigned short int * ) (segment + ( y * SCREEN_WIDTH + x ) * SCREEN_BYTEPERPIXEL );
 
   packed = (ColR << 11) | (ColG << 6) | ColB;
 
   * vidmem = packed;
}

Bu örnekle putpixel'i (ölümcül doğası itibariyle) c ile yazın demiyorum, sadece örnektir

Eğer ölümcül değil ise her zaman okunabilir olanı tercih etmek, sabahları işe gittiğinizde yüzlerce sorun yerine internetten haber sitelerini gezmenize yardımcı olacaktır.

Okunabilirlik

Bir kod parçasınının okunabilirliği üzerine yüzlerce şey anlatabilirsiniz ancak en iyisi örnek;

Code:

for (int i = 1; i < num; ++i) { meetsCriteria[i] = true; }
for (int i = 2; i < num / 2; ++i) {
int j = i + i;
while (j <= num) { meetsCriteria[j] = false; j += i; }
}
for (int i = 0; i < num; ++i) {
if (meetsCriteria[i]) { Console.WriteLine(i + " meets criteria"); }
}

Bu örnekde tek bakışta işlemlerin nasıl ilerlerdiğini anlamak zor. İşleyişi çözmek için kod üzerinden fazladan 3-5 sn daha geçirmeniz gerekli, bunun yerine aşağıdaki gibi bir düzen daha iyi olacaktır. Okurken gözlerin kamaştığı bir düzen yerine;

Code:

for (int i = 1; i < num; ++i)
{
  meetsCriteria[i] = true;
}
 
for (int i = 2; i < num / 2; ++i)
{
  int j = i + i;
  
  while (j <= num)
  {
    meetsCriteria[j] = false;
    
    j += i;
  }
}
 
for (int i = 0; i < num; ++i)
{
  if (meetsCriteria[i])
  {
    Console.WriteLine(i + " meets criteria");
  }
}

tercih etmeniz her zaman için başkaları ve bir zaman sonra sizin için sağlıklı olandır.

Buna göre her "statement" olarak geçecek bloğu "{" , "}" arasına alabilirsiniz.

Mantıksal olarak ayrı iş yapılan yerlerde boş bir satır bırakabilirsiniz.

Akışı göstermek için indent verebilirsiniz. Ident'ler için her editör/programcı farklı boşluk seviyesi (2,4,8..) kullandığı için editörü Tab karakteri yerine boşluk koymak üzere ayarlarsanız başka birisi baktığında da aynı düzeni görür.

Notlar

Kod içinde yazılan notlar için kötü örneklerde bazen hiç not olmaz yada yazan kişi her satırın ne olduğuna dair kendince açıklamalar yapar. Bu konuda iyileştirme yapmak istiyorsanız her zaman için yazdığınız kodun ne yaptığı yerinde neden bu şekilde olduğuna dair notlar düşün.

Bu mantıkla baktığınızda her satırda açıklama yapmak yada not yazma zahmetini en aza indirmiş olursunuz.

Hata kontrolleri

Bu konu yeni öğrenen yazılımcılar için belkide en çok hata yapılan konu. Bu yüzden biraz daha detay vermeye çalışıyorum. .Net için konuşuyorsak "hata" olarak konuşulan başlık "exception" olarak geçer. .Net dünyasında kontrolü yapılmamış her exception için Windows'un mavi ekranları olarak algılanabilir ve Windows tabanlı uygulamalar için;

yada ASP.Net için

İyi yazılmış bir .Net uygulaması için asla ama asla bu tip ekranları görmemeniz gereklidir. Bunun anlamı hata kontrolleri yeterince yapılan bir uygulamada exception oluşması gereklidir. Exception'ın Türkçe anlamıda zaten "kural dışı durum" olarak geçer.

.Net dünyasında exceptionlar tepeden baktığınız durumda 2 kategoriye ayrılır. Çalıştırma (Execution) hataları yada bug'dan kaynaklanan hatalar.

Örneğin NullReference, InvalidOperation, ArgumentNull gibi hatalar uygulama genellikle bir bug olduğunu gösterir. Bu tür hataları azaltmak için yapabileceğiniz en iyi çözüm parametre alan methodlarda gerekli kontrolleri yapmaktır. Örneğin;

Code:

void Save(Order order)
{
   Database.SaveObject(order.Customer);
   Database.SaveObject(order.Order);
}

Gibi bir method içerisinde parametre olarak gönderilen Order tipi objenin null olup olmadığı kontrolü yapılmıyor. Uygulama içerisindeki bir hata yüzünden null parametre gönderildiğinde size bu NullReference exception olarak gözükecektir. Bunun yerine;

Code:

void Save(Order order)
{
   if (order == null)
      throw new ArgumentNullException("order");
      
   Database.SaveObject(order.Customer);
   Database.SaveObject(order.Order);
}

şeklindeki bir kontrol olası hataları daha erken bulmanızı sağlar.

Execution hatalarına örnek olarakda FileNotFound, SerializationException gibi hatalar olabilir. Bu tür hatalarda genellikle yeterince kontrol yapılmadan işlem yapıldığında ortaya çıkar. Örneğin dosyanın varlığını kontrol etmeden dosyayı açmak gibi. Yapılması gereken dosyanın var olup olmadığını kontrol ederek kullanıcının anlayacağı bir mesaj vermek en doğrusudur.

Execution hatalarında elbetteki olası tüm kontrolleri yapmanız mümkün değil ancak sık olabilecek hataları önceden kontrol etmeniz yeterlidir. Bunun dışındaki hatalar için standart exception dialoglarını kendinize özgü hata ekranları ile değiştirmeniz her zaman için iyi bir fikirdir. Böylece handle etmediğiniz bir hata olduğunda uygulamanın size mail atabilmesi, hata log'larına kayıt gibi fantastik imkanlarınız olabilir.

Standart exception dialoglarını değiştirmek için AppDomain.CurrentDomain.UnhandledException event'ini kullanabilirsiniz. Handle edilmeyen herhangi bir exception oluştuğunda bu event tetiklenir. Örnek olarak buradaki adresde bazı bilgiler bulabilirsiniz.

<< 1 ... 5 6 7 8 9 10 11 12 13 14 15 ... 38 >>

September 2010
Mon Tue Wed Thu Fri Sat Sun
 << <   > >>
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
This blog contains all user blogs in rdg network

Search

The requested Blog doesn't exist any more!

XML Feeds

blog soft