Ubuntu Kurulum Sonrası Windows Ses Problemi

Eğer bilgisayarınızda Windows XP ve Ubuntu işletim sistemleri varsa önce Ubuntuyu açıp daha sonra bilgisayarı yeniden başlattığınızda Windows Xp işletim sistemine geçtiğiniz zaman Creative Audigy ses kartınızdan (diğer kartlar hakkında bilgim yok) ses alamazsınız. Direkt Windows XP’i açtığınızda ise bir problem gözükmemektedir. Bunun sebebi bir bug. Bug numarası da 453395. Bu sorundan kurtulmak için Ubuntuya login olup aşağıdaki komutu yazın

 sudo gedit /etc/init.d/alsa-utils

ve açılan belgeden

mute_and_zero_levels “$TARGET_CARD” || EXITSTATUS=1

satırını bulup başına # koyarak yorum haline getirin. Daha sonra bilgisayarınızı yeniden başlatıp Windows XP işletim sistemine giriş yaptığınızda ses probleminizin ortadan kalktığını göreceksiniz.

ASP.NET Control Bug

Son zamanlar da hep karşılaştığım sorunlardan bahsediyorum ama bu kez bahsedeceğim sorunun kaynağı ben değilim 🙂 Microsoft’ta kabul etmiş bug olduğunu. 

Asp.Net kontrolleri ile çalışırken, bir ASP.Net kontrolünden kendi kontrolümü türettim ve daha sonra sayfama eklemeye çalıştığımda

The type name “X” does not exist in the type “X”

tarzında bir hata alıyordum. Yanlış gözüken hiçbir şey yoktu ama hata veriyordu. Daha sonra – google sağolsun – aynı sorunla karşılaşan ve bunu bildiren birinin daha olduğunu öğrendim. Sorunun nedeni ise bir bug’mış. Namespace ile sınıf ismi aynı olduğu zaman veriyormuş bu hatayı, tam da benim yaptığım şey. Microsoft’tan gelen cevapta ise bunun bug olduğunu kabul etmişler ama ASP.NET 4’te bunu düzeltmeyeceklerini bildirmişler. Nedeni ise sorunun basit bir çözümü olmasıymış. Fazlasına burdan ulaşabilirsiniz.

Statik Değişkenler ve Garbage Collection

Günümüzde uygulamalar büyüyüp, çalıstıkları cihazlar küçüldükçe bellek kullanımı daha da önemli hale geliyor. Ben de uygulamalarımızda bellek kullanımını azaltacak basit ve bilinen ama oldukça önemli bir kaç şeyden bahsetmek istiyorum. Bunlar statik değişkenler ve garbage collector.

Statik değişkenlerin normal değişkenlerden farkı statik değişkenlere ulaşmak için yeni bir nesne oluşturmamız gerekmez, sınıfımız üzerinden bu değişkenlere erişebiliriz. Ayrıca statik olmayan değişkenlerimiz her nesne ile ayrı olarak oluşturulur ve farklı degerlere sahip olur ama statik değişkenlerin tek bir değeri vardır. Örneğin uygulamamızda bir sınıftan sadece 3 tane nesne olusturulmasına izin vermemiz gerektiğini düşünelim. Eğer böyle bir durumda statik bir değisken kullanmasaydık, her nesne oluşturduğumuzda geçici nesneler oluşturup,, bu geçici değiskenlerin değerlerini artırıp bir yerde tutmamız gerekecekti. Bu da zaman ve bellek kaybı demek olurdu. Ancak statik değiskenler sayesinde tek bir değisken aracılığıyla kontrolümüzü sağlayabiliriz. Statik degişkenlerin mantığını anlamak için basit bir kod yazalım.
Öncelikle bir tane sınıf oluşturalım.
    
    class StatikDeneme
    {
        private int deger=0;
        public static int statikDeger=0;
 
        public int Deger
        {
            get
            {
                return deger; 
            }
            set
            {
                deger = value;
            }
        }

    }

Daha sonra formumuzun üzerine 2 tane buton sürükleyelim ve butonlaın altına sırayla şu kodları yazalım.

        private void button1_Click(object sender, EventArgs e)
        {
            StatikDeneme cs = new StatikDeneme();
            cs.Deger = 4;
            cs.Deger++;
            StatikDeneme.statikDeger++;
            MessageBox.Show(cs.Deger.ToString() + ”  ” + Class1.statikDeger.ToString());
        }

        private void button2_Click(object sender, EventArgs e)
        {
            StatikDeneme cs = new StatikDeneme();
            cs.Deger = 4;
            cs.Deger++;
            StatikDeneme.statikDeger++;
            MessageBox.Show(cs.Deger.ToString() + ”  ” + Class1.statikDeger.ToString());
        }

Gördügümüz gibi iki butonumuzun altındaki kod da aynı. Simdi uygulamamızı çalıştırıp rasgele butonlara basalım. Butonlara her basışımızda ilk (statik olmayan) değer değismezken, ikinci (statik olan) değerin arttığını görebiliriz. Bu şekilde statik bir değişkenle kolayca SingleTon desenini uygulayabiliriz.

Garbage Collector’lara gelince. GC’ler uygulama sırasında oluşturulmuş ancak kullanılmayan değiskenlerin yok edilmesini sağlar. Böylece nesneler hafızada gereksiz yer kaplamamış olur. GC’lar C# ta otomatik olarak çağrılır. Geliştirici bu zamanı bilemez ancak System.GC.Collect() metodu ile istedigi zaman bu işlemi gerçekleştirebilir. Yıkıcı metodlar (Destructor) nesnelerin yok edilmesinden hemen önce çağrılır. C++’da nesneler yok edilirken, bellekte oluşturulan dinamik alanlar iade edilmez. Bu nedenle geliştiricinin yıkıcı metod içinde bu alanlarıiade etmesi gerekir. C#’ta ise bu bellek alanlarının iadesi otomatik olarak yapılır. Bu nedenle yıkıcı metodlar genellikle statik veya global degiskenlerin değerlerini değiştirme amacı ile kullanılır. Örneğin uygulamamızda sadece 5 veritabanı bağlantısına izin vereceğimizi düşünelim. Bu durumda statik değişkenimizi yapıcı metodlarda bir artırırız ve 5’e ulaşıp ulaşmadığını kontrol ederek bağlantı nesnesinin oluşturulmasına izin veririz. Bağlantı nesnesinin yıkıcı metodunda ise statik değişsken değerimizi bir azaltırız. Böylece bir bağlantı nesnesi ne ihtiyaç kalmadığı zaman nesne yok edilirken, biz de bir bağlantı nesnesi hakkı daha kazanmış oluruz.

Kordaci TablePlus – Dinamik Tablo

    

                Arkadaşlar merhaba html tablolar web tasarımı ya da programlamasıyla uğraşanlar için vazgeçilmezlerden birisidir. Her ne kadar katmanlar bazı alanlar da tabloların yerini alsada veri listeleme konusunda hala en büyük araç tablolar. Bununla birlikte -malesef- tablolar bize çok fazla esneklik tanımıyor. Örneğin listelediğimiz veriler üzerinde sıralama ya da sayfalama yapamıyoruz. Ben böyle bir şeye ihtiyaç duydum ve biraz araştırdım ama bulabildiğim javascript çözümleri ya ücretli ya da yetersizdi. Ben de bunun üzerine kendim bir çözüm üretmeye karar verdim. Tabii şimdilik sadece sıralama ve sayfalama (sorting-paging) yapıyor, ama üzerine daha fazla çalışmayı planlıyorum.Umarım bu çözüm sizlere de yardımcı olur.

 Kordaci TablePlus Özellikleri

  • Kullanımı oldukça basittir. Tablonuzun class’ına tblkordaci yazmanız yeterlidir.
  • Kolonlarda sayılar ve yazılar üzerinde küçükten büyüğe ve büyükten küçüğe sıralama yapmanızı sağlar.
  • Verileri kendi belirleyeceğiniz miktarda bölümlere ayırarak sayfalama ile daha düzenli bir listeleme sağlar.
  • Sıralama yapmak istemediğiniz kolonlarda kolon başlığının sınıfını nosorting yaparak sıralama özelliğini engellemenizi sağlar.
  • İsterseniz sayfalama özelliğini bir parametre değiştirerek iptal edebilirsiniz.
  • İster hazır tema kullanabilir, isterseniz de tema özelliğini devre dışı bırakıp kendi stilinizi kullanabilirsiniz.
  • Minimum kolon genişliği ya da kolonların yazı hizalama yönlerini belirtebilirsiniz.
  • Türkçe karakterlerle de sorunsuz sıralama yapabilirsiniz.
  • IE7+,Opera,Firefox,Chrome

Ücreti

        Script GPL ve MIT lisansları altındadır. Yani ücretsiz bir şekilde kullanabilirsiniz.

        Ancak işinize yararsa ve bir destekte bulunmak isterseniz.

Kullanımı

        Kordaci TablePlus’ı kullanabilmeniz için html sayfasında tableplus.kordaci.js dosyasını eklemeniz ve uygulamak istediğiniz tablolarınıza tblkordaci class ismini vermeniz yeterli. Eğer parametreler de değişiklik yapmak isterseniz tablonuzun bulunduğu sayfada aşağıdaki gibi parametrelerinizi belirtmeniz gerekmektedir.

<script>
table_init_params ={
    enablePaging:true,
    enableTheme:true,
    minColumnWidth:”100px”,
    textAlign:”right”
    }   
</script>

Değiştirebileceğiniz Parametreler

enablePaging : Sayfalama özelliğini açar ya da kapatır. Aldığı değerler true,false. Varsayılan true
pagingRecordCount :  Sayfalama yapıldığı takdirde sayfada gösterilecek kayıt sayısı. Varsayılan 5 
enableTheme : Tema kullanımını belirler.  Aldığı değerler true,false. Varsayılan true
themeNo : Tema numarasını belirler. Şu anda bir tema bulunmaktadır. Varsayılan 1             
textAlign : Kolonlardaki yazıların hizalamasını belirtir. Varsayılan “left” 
minColumnWidth : Minimum kolon genişliğini belirler. Varsayılan “100px”

Not : Tema için (renk ve başlık resimleri) yardımcı olabilecek arkadaşlar lütfen benimle iletişime geçsin.

Not 2: Arkadaşlar her türlü öneri, hata bildirimi ya da sorunuz için lütfen yorum bırakın.

Demo Sayfası : http://www.mehmetkordaci.com/kordacitableplus/example.html

İndirmek İçin : http://www.mehmetkordaci.com/kordacitableplus/tableplus.v.1.11.zip

Flex Builder Derleme, Serial vb hatalarının çözümü

Flex Builder’ı kurdukta sonra Serial’ı girdiğinizde sürekli tekrar istemesi, ya da herşey doğru olmasına rağmen derlememesi, ya da uninstall etmemesi gibi hatalar çıkabiliyor. Bu hataları aşağıdaki gibi düzeltebiliriz.

Adobe Flex Builder 3′ü kurduğunuz dizindeki (varsayılan olarak C:\Program Files\Adobe\Flex Builder 3\) FlexBuilder.ini dosyasını açmak ve şu iki satırı eklemek:

-Duser.language=en
-Duser.location=us

Yazılımı bir dahaki açışınızda seri noyu girin ve sorunsuz olarak kullanın.

z-index, flash nesnesi, menü yerleşim sorunu

Daha önceden birkaç sitede flash nesnesinin açılan menülerin üzerinde kaldığına, dolayısıyla menünün açılan kısımlarının kullanılamadığına şahit olmuştum. Açıkcası bu nedendir diye o zamanlar merak edip araştırmamıştım ama aynı problem bu kez benim başıma geldi. Çözümü ise şöyle : Her nedense flash nesneleri normal z-index ile katmanlamayı dikkate almıyor. Bunun için öncelikle flash nesnemize (objectler tagi arasına)

<param name=”wmode” value=”transparent” />

tagini eklememiz gerekiyor. Daha sonra embed tagi içine ise

wmode=”transparent”

özelliğini ekliyoruz. Tabi bu flash nesnemize bir adette id veriyoruz. Son olarak CSS’miz içerisinden z-index değerlerini girerek sorunumuzu hallediyoruz. Örnek olması açısından kodları da aşağıda veriyorum. CSS’deki menu menünün içerisinde bulunduğu div’in idsi, flashnesne ise flash nesnemizin idsi.

Flash nesnemiz 

——————        

<object id=”flashnesne” classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ codebase=
“http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0″
width=”527″ height=”164″ title=”baslik”>
            <param name=”wmode” value=”transparent” />
            <param name=”movie” value=”flash/fl.swf” />
            <param name=”quality” value=”high” />
           <param name=”BGCOLOR” value=”#FFFF33″ />
           <embed src=”flash/fl.swf” mce_src=”flash/fl.swf” width=”527″ height=”164″ quality=”high” pluginspage=”http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash” type=”application/x-shockwave-flash” bgcolor=”#FFFF33″ id=”flashnesne” wmode=”transparent” ></embed>
</object>

CSS dosyasındaki özelliklerimiz 

——————

#menu
{
z-index: 2;
}
#flashnesne
{
z-index: 1;
 
}

NTLDR eksik hatası çözümü

         Ev arkadaşımın (Çağrı) laptopunda açılışta Ntldr eksik hatası veriyordu. Kısa bir araştırma sonunda çözümü bulduk. Size de lazım olabilir o yüzden kısaca yazıyorum.

1-) Xp CD sini takıp bilgisayarı CD’den başlatın.
2-) Kurulum ekranında R tuşuna basın.
3-) Sizden yönetici şifresi isteyecektir. Eğer varsa girin yoksa enter’ a basıp devam edin.
4-) Daha sonra kendi sürüclerinize göre aşağıdaki kodları yazın, dosyaları kopyalamak için.
copy e:\i386\ntldr c:\
copy e:\i386\ntdetect.com c:\
5-) fixboot yazıp, enter’a basın.
6-) fizmbr yazıp, enter’a basın.
7-) exit yazıp çıkın.