Pages: << 1 2 3 4 5 6 7 8 9 10 11 ... 38 >>

27/05/09

Permalink 21:23:25, by ertan Email , 671 words   Turkish
Categories: Coding, Öfkeli Coder

VB.Net Üzerine

Bu tarihlerden yaklaşık 8 yıl öncesinde Microsoft .Net adında bir platform çıkaracağını duyurduğunda üzerinde en çok durulan konulardan biriside o zamanlarda var olan VB projelerinin yeni platform'a fazla değişiklik yapmadan upgrade edilebileceğiydi.

Ufak tefek problemler dışında bu sözlerinde durdular da, şu anda Microsoft'u bulunduğu yere getiren VB'ye sadık kalarak şu anda da .Net içerisinde VB kullanabiliyoruz.

Ancak VB'ye ait hafıza yönetimi, object oriented gibi kronik problemlerden bazıları da .Net içerisine taşınmış oldu. VB 6 üzerinde çok fazla proje yapmış birisi olarak bu tür problemlerden uzak durabilmek için başından beri .Net içerisinde VB kullanmaya pek sıcak bakmadım.

Bu 8 yıl içinde IDE içerisindeki bana garip gelen özellikler dışında üretilen kod gibi çok fazla detayına girmedim ancak yakın bir arkadaşımın VB.Net üzerindeki projesinde memory problemleri çıktığı için detaylarla uğraşınca boşuna endişelenmediğim ortaya çıktı.

VB ile 5-6'dan fazla form olan bir proje üzerinde çalışıyor iseniz benzer sorunlar sizinde kapınızda olabilir.

Neler oluyor ?

Öncelikle VB syntax'ına çok alışık olmadığım için örnekleri c# ile veriyorum, umarım anlaşılır olur.

VB ile yeni bir proje açtığınızda projenizde görmediğiniz MyProject adında bir class tanımlanıyor ve bu class ile proje içerisindeki kaynaklara erişiyorsunuz. Tanımı aşağıdakine benzer halde;

Code:

internal sealed class MyProject
{
    internal static MyApplication Application { get; }
    internal static MyComputer Computer { get; }
    internal static MyForms Forms { get; }
    internal static User User { get; }
    internal static MyWebServices WebServices { get; }
}

Bu class sayesinde geliştirme yaparken gerekecek kaynaklara erişim sağlanıyor. Proje içerisindeki tanımlanan formlara da Forms üzerinden ismi ile erişilebiliyor. Örneğin "Login" isimli bir form'unuz var ise MyProject.Forms.Login.Show() diyerek login penceresinin gözükmesini sağlıyorsunuz.

Ancak sorun şu ki MyForms class'ı projeyi derlediğinizde otomatik üretilen bir class ve Login penceresi için aşağıdaki kod üretiliyor.

Code:

internal sealed class MyForms
{
  public frmLogin m_frmLogin;
  public frmLogin Login
  {
      get
      {
          this.m_frmLogin = Create__Instance__<frmLogin>(this.m_Login);
          return this.m_frmLogin;
      }
      set
      {
          if (value != this.m_frmLogin)
          {
              if (value != null)
              {
                  throw new ArgumentException("Property can only be set to Nothing");
              }
              this.Dispose__Instance__<frmLogin>(ref this.m_frmLogin);
          }
      }
  }
}

Bu koddan anlaşılacağı üzere de Login penceresine 1 kez erişildiğinde uygulama kapanıncaya kadar hafızada kalmak zorunda ve bu class üzerinde referans'ı taşındığı için garbage collector tarafından da toplanamıyor.

Bu yüzden uygulama belirli bir süre kullanıldıktan sonra hafıza kullanımı giderek artmaya başlıyor. Bu sorunu çözmek adına uğraşsamda otomatik üretilen bir kod olduğu için müdehale edemiyorsunuz.

Çözüm

Henüz uygulamış değilim ancak olası tek çözüm MyForms üzerinde m_frmLogin public olarak tanımlanmış, henüz erişim olup olmadığı konusunda fikrim yok ancak olası tek çözüm reflection ile MyForms'u taramak gibi gözüküyor.

Biraz hack tipi bir çözüm ancak null olmayan ve ekranda gözükmeyen tüm m_frmLogin tipi değişkenleri zorla dispose edecek bir kod eklemeyi düşünüyorum. Eğer sorunsuz olarak çalışırsa bu yazıyı güncelleyerek buraya eklerim.

Sonuç

VB.Net eski uygulamaların yeni platform'a taşınması için bir kapı idi ancak bu kapıyı artık kullanan kimse kalmadı, yeni başlayan ve ortalama ve altı ağırlıkta uygulama geliştirmek için hazırlanmış bir dil, özet olarak hızlı sonuç gerektirmeyen ciddi uygulamalar için kullanılmasını tavsiye etmiyorum.

Evet syntax'ı biraz daha karışık ama eski alışkanlıkları bırakıp yerine daha ortak kullanımı olan c temelli, yazdığınız kodun gözüktüğü gibi çalışacağını bildiğiniz .Net'in doğal dili c# ile geliştirme yapmanızı tavsiye ederim.

17/05/09

Permalink 16:36:25, by burku Email , 150 words   Turkish
Categories: İstanbul'da hayat

Enki Bilal Sergisi

Sergisi olmasaydı bu adamı tanımam gecikebilirdi. Bu da hoş olmazdı. Cehalet kötü, öğrenmek güzel.

Müthiş resimleri var. Ben bu resimleri ilk gördüğümde aklıma ilk gelen Kenan Yarar oldu. Ben onu tek zannediyordum... Meğer bir numara bambaşkaymış.;D

Azmettim ve bu sergiye sanattan anlayan bir arkadaşımla gittim. Onun yorumu, eserlerin biraz rasgele yerleştirilmiş olması, açıklama yazısında dünyanın gidişatıyla ilgili klişelerin bulunduğu ve çerçevelerde ışığı yansıtan cam kullanılmaması gerektiğiydi.

Ben ise ağzımdan salyalar akmakta olduğu için herhangi bir eleştiride bulunamadım. Ne çizimler, nasıl renkler, nasıl karakterler vay, vay, vay... Cennet gibiydi.. Taksim'de Yapı Kredi Sermet Çifter Salonu'nda 14 Haziran'a kadar görülebilir. Türk bir hayranı olan Cem Şerbetçi'nin çabalarıyla gerçekleştirilmiş. Sağolsun... Fotoğraflar çektim. Buyrun.

Permalink 15:58:44, by burku Email , 376 words   Turkish
Categories: İstanbul'da hayat

Köprü yolu

Marka ve dövme. (hakaret gibi)

Bu da marka ve slogan.

Kuralsız bir şehir...

İstanbul'da köprüyü geçmek sabır gerektirir."Köprüyü geçene kadar ayıya dayı de" evet bu kesinlikle uyulması gereken bir kural. Köprü yolu dediğimiz bir yol vardır. Orada 7 şerit ve milyonlarca araç bulunur.

Otobüs

Neden bilmem insanlar otobüse daha durağa gelmeden ve birbirlerini iterek biner. Kimsenin beklemeye tahammülü yoktur. Herkesin işi çok acildir ve herkes birbirinden nefret etmektedir. Herkes öne geçmek için bir diğerinin üzerine basmaya hazırdır ve herkes somurtmaktadır. Bu yüzden bazı otobüsler duraktan 20 metre ötede durur da durakta durmaz. Hatta durdurmaya çalışırsanız şoför suratınıza türükerecek gibi bakarak uzaklaşır oradan. Bu beni çok kızdırır.

Burada her gün ölme tehlikeniz vardır. Otobüs yolu boş buldu mu delice hızlara ulaşır. Ayaktaysanız iyice tutunmalısınız. Luna parka gitmeye gerek yok! Belediye otobüsü var!

Anlayamadığım bir nokta daha, otobüs şoförlerinin akbil satıyor olmasıdır. Otobüse bindiniz ama akbil, bilet hiçbirşeyiniz yok, sadece paranız var...Korkmayın, otobüs şöförünün size satacak akbili vardır! Hem bir ton insan dolusu arabayı sürüp hem de bozuk para arar sonra. Ne güzel... Tıpkı münübüsler gibi.

Minibüs

Minibüslerden bahsetmişken... Bir otomobil için trafikteki iki numaralı kabus belediye otobüsüyse, bir numara minibüstür. Minibüsler çılgın, umarsızdır. En müthiş numaralarıysa merkezi duraklarda otobüslerin önünde durarak devamlı kornaya basmalarıdır.

Taksi

Taksi İstanbul'da mesela İzmir'le karşılaştırıldığında çok ucuz. Çok kullanılıyor. Özel otomobillerin pek sevmediği, hatta kabus kategorisinde minibüsle bir numara için yarışacak bir araç olduğunu iddia edebilirim. Taksiler uyanık, girişken, meraklı ve hatta şakacı olabiliyor. Ama bir gün bir araç kullanacaksam onu bir taksici gibi kullanmak isterim. Teknikleri mükemmel :>>

Boğaziçi köprüsü : Yoğun
F.S.M köprüsü : Yoğun
Çamlıca : Yoğun

16/05/09

Permalink 22:48:18, by ertan Email , 104 words   Turkish
Categories: Coding, Algoritma Soruları

bir sayının 2 üzeri olup olmadığını bulmak

Yetki kontrolleri için hazırladığımız kütüphanede ihtiyacımız olduğundan ve birazda enteresan bir problem olduğu için buraya da yazmak istedim.

elinizdeki herhangi bir sayının 2 üssü bir sayı olup olmadığını kontrol edecek bir fonksiyon yazın. hızlı çalışması için optimize edin.

örneğin;

8 (2 ^ 3) için true verecek.
128 (2 ^ 7) için true verecek.
132 için false ferecek.

not : hızlı çalışması gerektiği için logaritma gibi fonksiyonlar en son seçenektir.

sonradan gelen düzenleme : yazının güncelliğini koruması için doğru olmayan çözümleri yayınlıyorum sadece.

sonradan gelen ek düzenleme :

Bu açıklamayı yaptığıma biraz üzülüyorum ama 2'nin üsleri ile 2'ye bölünebilir olmak farklı şeylerdir.

Örnek;

6 rakamı 2'ye bölünebilir ama 2 üssü bir rakam değildir.
8 rakamı 2'ye bölünebilir ve 2 üssü (2^3) bir rakamdır.

29/04/09

Permalink 21:24:15, by burku Email , 247 words   Turkish
Categories: web tasarımı

Editplus seven gider alır!

Bu başlığı attım. Çünkü Editplus aldım. Yıllardır kullandığım editöre en sonunda parayı bastırıp sahip oldum. 35 dolar. En önemlisi de her sabah programı açtığımda "Bugün denemenizin 468. günündesiniz.." türündeki yazıyı artık görmüyor, onun mahçubiyetini üzerimde hissetmiyorum. (Pazarlama stratejileri başarılı demek :) Gerçi genelde Türk'lere işlemez böyle numaralar ama...)

Bu Editplus da nedir? Kendisi WYSIWYG ( What You See Is What You Get - yani Dreamweaver gibi yaptığın işi anında görebilme ) olmayan bir HTML editörüdür. Tabi yaptığınız işin önizlemesini görebilirsiniz. Ama bunun için CTRL+B yaparsınız, yeni döküman açar gibi sayfayı açar. Yani yok öyle şunun kenarından tutup çekeyim de tablo olsun, arkadaş da kafasına göre onun kodunu yazsın..

Her türlü özelliğini kendinize göre ayarlayabilirsiniz. Farklı yazılım dillerinde de kullanabileceğiniz gibi en basit örnek olarak otomatik tamamlamayı istediğiniz şekle sokabilme imkanınızı söyleyebilirim. Satırlarca kod için tek harf yeterli olabilir böylece.

Dreamweaver'dan haz etmiyorum. Kendisi benim gözümde web tasarım topluluklarının kalitesini bir hayli düşüren ve ortada HTML'i bilmeyen bir trilyon "web tasarımcısı"nın dolaşmasını sağlayan programdır.

Destekleyin, satın alın, program kullanmayı değil HTML yazmayı öğrenin.

<< 1 2 3 4 5 6 7 8 9 10 11 ... 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