ASPxPopUpControl Genişlik Problemi

DevExpress kontrollerinden ASPxPopUpControl kullanırken, bir yerde genişliğini 100% yapmam gerekti. Ama nedense bir türlü ayarlayamadım. Genişliği piksel olarak verdiğim de ise hiçbir sorun çıkmıyordu. Sonuçta biraz google’lama sonucunda çözümü buldum. Belki birilerine daha yardımı dokunabilir. Öncelikle şunu da söyleyeyim. Bu çözümü DevExpress Team önermiş yani bir nevi sorun olduğunu kabul ediyorlar.

Öncelikle bir javascript fonksiyonu yazıyoruz. (popup, kontrolümüzün ClientInstanceName’i)

    function GenislikAyarla(){
var width = _aspxGetDocumentWidth();
popup.SetWidth(width);
         }

Daha sonra kontrolün init client side event’inde bu fonksiyonu çağırıyoruz.

UpdatePanel Kullanırken…

Asp.Net ile uygulama geliştirirken hepimiz bir kere bile olsa updatepanel kullanmışızdır. Bazen bunu kullanılabilirlik için yaparken bazen de performans için yapabiliyoruz. Eğer updatepanel’i performans için kullanıyorsak dikkat etmemiz gereken bir nokta var. Örneğin bir web uygulaması yazdık. Bu uygulamada sol tarafta ağır sorgular sonucu getirilen bilgiler listeleniyor. Sağ tarafta ise basit kullanıcı işlemleri yapılıyor. Uygulamamızı çalıştırdığımızda sol taraftaki işlemler nedeniyle sayfadaki her postback’de sayfamız geç yükleniyor. Oysa biz sağ taraf güncellenirken sol tarafta işlemlerimize devam etmek istiyoruz. Hemen updatepanel aklımıza geliyor. İki tane updatepanel kullanıyoruz sağ ve sol taraf için. Tabii ki UpdateMode’u nu da conditional yapmamız gerektiğini biliyoruz. Evet tamam şimdi oldu. Mu? Uygulamamızı tekrar çalıştırdığımızda sağdaki updatepanel’de bir güncelleme yaptığımızda sayfamızın yine yavaş geldiğini görürüz. Bunun nedeni sadece bir updatepanel güncellenmesine rağmen ASP.Net sayfasının yaşam döngüsü nedeniyle sol taraftaki kodun bağlama işlemi de tekrar edilir. Bir de custom control ya da user control kullanırsanız, bunu farketmek daha da zor olacaktır. Bunu aşmak için belirli sayfanın yaşam döngüsünde postback’e neden olan kontrolleri takip ederek, belirli işlemlerin yapılmamasını sağlamalıyız. Mesela örneğimizdeki sol taraftaki databind işlemi için sadece bir timer ise yada belirli bir buton ise databind işlemini gerçekleştirmesini sağlayabiliriz.

Einstein’s Big Idea

Evet bu aralar teknik birşeyler yazmadığımın farkındayım. Ama günlüğün bir  amacı da  insanlarla faydalı olacağını düşündüğün şeyleri paylaşmaksa, günlüğümün hala görevini yerine getirdiğini söyleyebilirim.

Bu kez bir belgeseli tavsiye edicem. Belgeselin adı Einstein’s Big Idea (Einstein’ın Büyük Fikri ) ve bu fikirde e=mc^2. Ama gelgeseli güzel kılan yönü bu formülü merkeze koyup sebeplerinden başlayıp, sonuçlarına gitmesi. Yani bir nevi süreci anlatıyor. Elektromanyetik dalgalardan başlayıp, Einstein’a uğrayıp, atom bombasına oradan da Cern Laboratuvarlarına kadar geliyor. Bu süreci ise hiç teknik olmayan bir dille ve birçok biliminsanının insani yönlerinden de kesitler sunarak anlatıyor. İnternette Türkçe dublajlı olarak mevcut.

Not : Bu arada Einstein resimlerde görülen yaşlı adam kadar masum değilmiş 🙂

3 Idiots

Gecenin bu vaktinde bloğa yazmak ta nerden çıktı diyebilirsiniz. Ama bu sefer farklı bir amaçla yazıyorum, naçizane bir film önericem. 3 Idiots. Aralık 2009 çıkışlı, belki konuşulmuştur önceden ama o zaman askerde olduğum için kaçırmış olabilirim.

Ben yatmadan önce kafa dağıtmak için film ararken, şans eseri izlemeye başladım. Film bir Bollywood filmi. Önyargım ve filmin biraz vasat başlaması nedeniyle bir ara kapatıcaktım ama hadi dedim biraz daha sabredeyim. İyi ki de öyle yapmışım. Ama film baya bi uzun yaklaşık 2 saat 40 dakika. Yani 4 bölüm dizi çıkarabilirlerdi 🙂 Neyse dediğim gibi filmi izlemeyi iyiki bırakmamışım. Oldukça güzel bir film. İçinde kaçınılmaz bir şekilde müzikler ve danslar da var. Bollywood filminde bunların olmaması da garip  olurdu.

Filmi uzun uzadıya anlatmayacağım. Filmin kahramanları bir mühendislik okulunda ( tamamen tesadüf, bilsem açmazdım, mühendis mühendis yeter ya  ), tabi kahramanlarımızın birinin hayata bakış açısı biraz değişik. Ve tabii bu bakışı açılarının sonucunu da filmin sonunda görüyoruz.

Mühendislik deyince sıkıcı gelebilir ama sıkıcı bir film değil, mühendislikle de alakası yok ( bakış açısına göre değişir tabi 😛 ) . Ben vaktiniz olduğu bir zaman izlemenizi tavsiye ederim. Başlarda sıkılırsanız bırakmayın izlemeyi sonradan saracaktır zaten.

DevExpress Kontrolleri SetEnabled Sorunu

DevExpress kontrollerini kullanırken eğer server tarafında yazdığınız kodda Enabled property’sini kullandıysanız. Örneğin

ASPxTextBox1.Enabled=true;

gibi, Client Side Eventler ‘de kontrolün enablad özelliğini değiştirmek istediğiniz de (SetEnabled fonksiyonu ile)  beklediğinizden farklı ve hatalı sonuçlarla karşılaşırsınız. Buna engel olmak için eğer bir kontrolün enabled özelliğini client side’da değiştireceksek ve server side’da da bu özelliğe müdahale etmemiz gerekiyorsa Enabled yerine ClientEnabled property’sini kullanmalıyız.

Kitabıma Kavuştum

Code Complete 2

Günlerdir beklediğim (13 gün oldu sipariş vereli) kitaba (Code Complete 2) nihayet kavuştum. Türkiye’de güvendiğim sitelerde tükendiği için Amazon’dan sipariş vermek zorunda kaldım. Ama fiyat olarak daha ucuza bile geldi 🙂 Belki çevremdeki arkadaşlardan temin edebilirdim ama kitaplığımda bulunmasını istediğim bir kitap olduğu için alma ihtiyacı duydum. Bir kaç kitap daha var almayı planladığım onları umarım Türkiye’de bulabilirim.

Bir paragrafta Amazon’a bu kadar iyi çalıştıklarını bilmiyordum. İlk alışverişim olduğu için biraz şüpheliydim ama hiçbir sıkıntı olmadan tam da söyledikleri günde elime geçti kitap. Ayrıca kargo ücreti de beklediğimin çok altındaydı. Yurtiçi gönderi ücreti kadar nerdeyse.  Bu arada eğer Amazon’dan alışveriş yapacaksanız. Amazon.com yerine Amazon.co.uk’u hatta Almancanız varsa Amazon.de’yi tercih etmenizi öneririm. Kargo ücreti ve elinize geçiş süresi bakımında oldukça fark ediyor.

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.

Ubuntu Ve Hatalar(ım)

Bilgisayarımda ekstradan Pardus olması yetmezmiş gibi bir de Ubuntu kurmaya karar verdim. Kurulumu hiç sorun çıkarmadı, arayüzü kullanımı da gayet güzeldi. Ama hadi dedim biraz kurcalayayım. Sanırım kurcalarken bir kaç okuma yazma izniyle oynamışım, Ubuntu da o güzel karşılamanın ardından işletim sistemi olduğunu hatırladı ve ard arda hatalar vermeye başladı. Ubuntuya login olmaya çalıştığımda

Could not update ICEauthority file /home/mehmet/.ICEauthority

Yapılandırma sunucusu ile ilgili bir sorun var.

/usr/lib/linconf/-4/gconf-sanity-check-2 durum 256 ile çıktı

Naitilus gerekli /home/mehmet/desktop dizini oluşturulamadı

hatalarını veriyordu ve sonra öyle bomboş bir ekranda kalıyordu. Biraz arayınca – zaten o zaman izinlere fazla bulaştığımı anladım – çözümlerini buldum.

İlk sorundan kurtulmak için

sudo chown mehmet:mehmet /home/mehmet/.ICEauthority

sudo chmod 664 /home/mehmet/.ICEauthority

ikinci hatadan kurtulmak için

chmod 755 /etc/gconf/gconf.xml.*

komutlarını kullanarak izinleri yeniden düzenledim.

Üçüncü hataya ise benim komutlarla uğraşırken mehmet kullanıcısına ait home dizinine başka bir kullanıcıya erişim iznim vermem neden olmuş. Onu da düzeltip yeniden başlattım. Ama yine aynı sorun vardı daha sonra

/etc/init.d/gdm restart

komutu ile GDM’yi (Gnome Display Manager) yani masaüstü giriş yöneticisini restart ettiğimde yeniden masaüstüme kavuşmuş oldum.

Ubuntu macerası oldukça eğlenceli gidiyor ama aynı zaman da bir o kadar da vakit alıyor. Bundan sonra da yaptığım hataları ve çözümlerini -bulabilirsem tabii ki : ) – burdan yazmaya devam edicem.

EQATEC Profiler

          Bir programdan bahsetmek istiyorum bugün. Adı başlıktan da anlaşılacağı gibi EQATEC Profiler. Peki ne işe yarar bu program. Yazdığınız uygulamanın performansını gösterir diyebiliriz özetle. Daha doğrusu programınızda hangi nesneler kaç kez çağrılmış, bunlar ne kadar süre işlem gerçekleştirmiş, en fazla zaman harcanan kısım hangisi gibi bilgilere EQATEC Profiler sayesinde ulaşabiliyorsunuz. En güzel yanı ücretsiz olması, piyasada ücretli ya da ücretsiz daha iyi uygulamalar tabii ki vardır. Ama bu bana fazlasıyla yardımcı oldu.

        Peki ben nasıl tanıştım bu programla. Continue…