14 Nisan 2014 Pazartesi
ORACLE USER AUDIT TRAIL DB LOG
18 Mart 2014 Salı
13 Şubat 2014 Perşembe
IISExpress ve SSL
22 Ocak 2014 Çarşamba
Sql Server 2008 Sayaç Tablosu
Merhaba,
Sql Server 2008 üzerinde belli bir kural bazında sayaç bilgisi tutan bir tablomuz olsun.
Böyle bir senaryoda en büyük hata, tahmin edeceğiniz gibi istekte bulunan kodun aynı sayıyı almasıdır.
Konuyla ilgili çok güzel bir makale.
Hem uygulama kodu hem de DB procedure kodu çözümleri içeriyor.
Tavsiyemiz, tek database varsa DB çözümünün uygulanması (uygulama instance sayısı her zaman tek olmaz).
http://www.codeproject.com/Articles/607329/Thread-safety-with-SQL-Server-2008
Serkan
13 Aralık 2013 Cuma
Global Temporary Tables GTT
15 Kasım 2013 Cuma
ORA-02293 NOT NULL CHECK CONSTRAINT
24 Eylül 2013 Salı
asp.net mvc bundle 403 hatası
Asp.Net MVC uygulamalarımızda bundle kullandığımız zaman, bundle ismi fiziksel bir path ile aynı olursa css veya js isteklerine 403 forbidden cevabı dönüyor.
Bunun sebebi ilk olarak IIS handler’ların çalışması ve fiziksel dizine isteğin yönlendirilmesi.
Çözüm basit;
bundle ismini değiştirin (önerilen) veya aşağıdaki alıntıda yer alan B maddesini uygulayın. İstekleri .Net karşılasın.
There are two fixes for this (you only need to do ONE)
A) Remove the extensions from the bundle names. (recommended) This will cause .NET to process the request and run it through the BundleModule.
B) Add this to your web.config in the system.webServer section which will cause .NET to run .js and .css requests through the BundleModule.
<modules runAllManagedModulesForAllRequests="true">
<remove name="BundleModule" />
<add name="BundleModule" type="System.Web.Optimization.BundleModule" />
</modules>
Big shout out to Ray Moro who figured out the actual cause and shared it with me on my blog:http://blog.cdeutsch.com/2012/11/fixing-404-errors-for-aspnet-mvc-apps.html
18 Eylül 2013 Çarşamba
Asp.Net 4.5 Kurulumu Ardından Ajax Isteklerinde Yaşanan Bir Hata
Merhaba,
Web sunucularimiza .Net Framework 4.5 kurduktan sonra ilginc bir problem yasamaya basladik.
Bazi IE9 ve alti kullanan userlarin browserlarinda kitlenmeler olustu. Ayni senaryoyu farkli bowserlar ile denedikleri zaman sıkıntı yasamadilar (chrome, IE10 gibi).
Konuyu arastırdigimizda sorunumuza en uygun asagidaki linke ulastık.
Yine bu linkte yer alan asagidaki cozumu uyguladik ve hata tekrar yasanmadi.
<system.webServer>
<serverRuntime uploadReadAheadSize="0" />
</system.webServer>
How to set the uploadReadAheadSize in IIS 7.5
- Launch "Internet Information Services (IIS) Manager"
- Expand the Server field
- Expand Sites
- Select the site you want to make the modification for.
- In the Features section, double click "Configuration Editor"
- Under "Section" select: system.webServer>serverRuntime
- Modify the "uploadReadAheadSize" section
- Click Apply
4.5 icin bu tip sorunlari cozen bir fix/patch var mi diye arastirdigimizda;
Download yapilamayan bir hotfix rollup;
http://support.microsoft.com/kb/2828841/en-us
Bir update paketi;
http://www.microsoft.com/en-us/download/details.aspx?id=36359
ve asagidaki bilgilerle (4.5.1 preview);
ile karsilastik.
Isterseniz fix’i kurabilir, isterseniz uploadReadAheadSize değerini değiştirip devam edebilirsiniz.
Serkan
16 Ağustos 2013 Cuma
WCF Servislerinde Unity Kullanımı
13 Mart 2013 Çarşamba
Init Metodunda ViewState Kullanımı
Merhaba
Asp.Net uygulamalarında, Controllerin Init metotlarında atama yapılan ViewState değerleri saklanmaz.
ViewState değişimleri InitCompleted işleminde izlenir duruma gelmektedir.
Eğer Init metodunda ViewState ataması yapmak zorundayım derseniz, öncelikle TrackViewState() metodunu çalıştırmanız gerekir.
Dikkat etmeniz gereken bir nokta; Init metodu içerisinde ViewState içerisinde saklanan değerleri okuyamazsınız.
Serkan
7 Mart 2013 Perşembe
debug=true'lardan kurtulmanın kökten çözümü
deploylarda web.config debug=true mu gitti diye düşünmek zorunda kalmazsınız:
<configuration>
<system.web>
<deployment retail=”true”/>
</system.web>
</configuration>
debug=true dersek ne olur?
14 Şubat 2013 Perşembe
26 Kasım 2012 Pazartesi
TFS Boyut Yönetimi
Test, development ortamlarında cok gerekli degilse tarihce tutmayın. Canli ortam icin Keep All demeyin. Son 20 gun gibi yonetilebilir rakamlar belirleyin.
Build tanımlarinda sag click yapip edit build definition’a tıklanır. Acilan pencerede retention policy kısmında bahsettigim ayarlamalar yapılabilir.

Tfs silinen bir dosyayi veya dizini gercekten silmiyor. Visual Studio Tools/Options kısmında yer alan Source Control ayarlarinda silinenleri goster kısmını sectigim zaman korkunc gercekle karsilastim. Onlarca proje muhtemelen isim degisikligi gordugunden veya baska bir yere tasindigindan dolayı silinmis. Bunlar database’te yer tutmaya devam ediyor.
Soyle bir goruntuyle karsilasirsaniz hemen mudahale edin.
Kalıcı olarak silmenin tek yontemi tf destroy komutu.
Komutun kullanimi su sekilde:
tf destroy $/”[TFS uzerindeki path]” /collection:[Tfs adresi http://localhost:8080/tfs/defaultcollection] /startcleanup /keephistory /stopat:T
- Komut tfs kurulum dizinine konumlanildigi zaman calisiyor.
- Tfs uzerindeki path i ogrenmek icin klasorun uzerinde sag click ile properties’e basilir, $ ile baslayan path alinir.
- startcleanup yazilmadigi taktirde silme islemi scheduled job’a birakiliyor. Yazilirsa temizlik hemen basliyor.
- keephistory ve stopat:T ikilisi son versiyonun saklanmasini sagliyor. Digerleri siliniyor. Silinmis dosyalari detroy yaparken bunu eklemeye gerek yok. stopat yerine belirli bir tarih girilebiliyor (son 1 haftalık versiyonlari sakla kisminda isinize yarayabilir)
- tf destroy komutu ile ilgili detayli bilgi asagidaki linkten alinabilir.
http://msdn.microsoft.com/en-us/library/bb386005(v=vs.100).aspx
Tfs 16 mb’dan buyuk binary dosyalari versiyonlamiyor. Her degisimde eskisini ve yenisini ayrı satır olarak saklıyor.
23 Ağustos 2012 Perşembe
Radwindow VisibleOnPageLoad
ScriptManager.RegisterStartupScript(this,this.GetType(), "key", "Sys.Application.add_load(showWindow);", true);
<script type="text/javascript">
17 Ağustos 2012 Cuma
Çok Sayfalı Raporlarda Performans Problemi
- Öncelikle raporun yapısını ve sql’lerini inceledik ancak bir sonuca varamadık.
- Sonrasında raporun ihtiyaç duyduğu tabloları dolduran, rapora parametre geçen kısımları didikledik, yine bir sonuca varamadık.
- İşin ilginç yanı; Uygulamadan raporu çektğimizde gerçekten çok yavaş, ancak reporting service üzerinden aynı parametrelerle aynı işlemi yaptığımızda çok hızlı sonuç alıyorduk. Hatta reporting service logları da gayet temiz görünüyordu.
6 Ağustos 2012 Pazartesi
Page, UserControl LifeCycle ve Veri Doldurma İşlemleri
Selamlar,
Asp.Net uygulaması geliştiren birçok developer mutlaka page ve user life cycle’larla ilgili bir dokuman, makale veya forum entry’leri okumuştur.
User control içerisinde yer alan dropdown list’e SelectedValue ataması yaparken, atamaya çalışılan nesne Items içerisinde yer almıyor hatası ile hemen hemen hepimiz karşılaşmısızdır.
Bu tarz hataları azaltmak ve developer’ın çözüm bulmakla vakit kaybetmesini engellemek için Bimar içerisinde geliştirdiğimiz projelerde temel prensiplerimiz şunlardır.
1) Sayfada basit bir dropdownlist var.
a. Sayfanın load metodunda dropdownlist itemlar doldurulur. Doldurma işlemi !IsPostBack if bloğu içerisinde yapılmalıdır. Böylelikle her postback’te gereksiz işlem yapılmaz.
b. Itemlar doldurulduktan sonra istenirse selectedvalue set edilir.
2) User control içerisinde dropdownlist var ve bu kontrol sayfada kullanılıyor (örnek kullanıcı seçim user controlu)
a. User controlun init metodunda dropdownlist itemlar doldurulur. Doldurma işlemi !IsPostBack if bloğu içerisinde yapılmalıdır. Böylelikle her postback’te gereksiz işlem yapılmaz.
b. Sayfanın load metodunda, istenirse usercontrol içerisindeki dropdown’ın selected value’su set edilir.
User controlun init metodu Page’in load metodundan önce, load metodu ise Page’in load metodundan sonra çalışır.
3) User control içerisinde load on demand control (radcombo, autocomplete extender textbox vb. ) var ve bu kontrol sayfada kullanılıyor.
a. User controlun init metodunda herhangi bir doldurma işlemi yapmaya gerek yok.
b. Sayfa ilk açıldığı zaman bu kontrolde bir değer gösterilmek isteniyorsa, usercontrol’e ilgili PK değerini alan ve datayı saklandığı yerden getirip ekrana basan bir metot yazılmalı.
Biz bu işlemleri daha anlamlı metotlarda görebilmek için base classlar oluşturduk (Page ve UserControl’lerin). Bunların Load metotlarını override yaptık ve içerisinden ilgili metotların virtual signature’a sahip olanlarını çağırdık. Virtual metotların içlerini child Page ve UserControl’lerde doldurduk. Böylelikle developer’ın IsPostBack gibi kontrolleri yapmadan kod yazmasını sağladık.
İyi çalışmalar
Serkan