URL ReWriting ve CSS sorunu

Yağız Gönüler tarafından yayınlanmıştır 6. Ekim 2009 15:55

Dün geceden beri birkaç projeme url rewriting uygulamaya çabalıyordum. Bugün sonuç aldım ancak bu kez de css patlıyordu.

Yani ilgili sayfaya gittiğimde url rewrite yapıyor fakat sayfanın css'ini okumuyordu. Pek nadir görülen bir sorun bu.

Çözüm yollarını ise az önce buldum. İlgililere duyurulur :)

1- CSS dosyasınızın başına "/" koyacaksınız, örneğin:
<link href="/style.css" rel="stylesheet" type="text/css" />

2- CSS dosyanızın adresini direkt yazacaksınız, örneğin:  
<link href="http://www.bilmem.com/style.css" rel="stylesheet" type="text/css" />

Çok şükür bu derdi de atlattım ve derhal sizle paylaşmak istedim. İyi çalışmalar dilerim :)

7 kişi tarafından 3.7 olarak değerlendirildi

  • Currently 3,714286/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , ,

Programlama İpuçları

Application State ile online ziyaretçi sayısını hesaplamak

Yağız Gönüler tarafından yayınlanmıştır 2. Temmuz 2009 11:51

Web uygulamarında tüm kullanıcıların ortak kullandıkları verileri tutmak için Application nesnesi kullanılır. Unutulmamalı ki Application State'ler web farm veya web gardenlarda paylaşılamaz. Application State hakkında verilebilecek en basit ve en klasik örnek ziyaretçi sayısını hesaplamaktır.

Uygulama başladığında Application_Start event'i oluşur ve bu event Global.asax'ta handle edilir. Burada Counter adlı elemanımıza 0 değerini atıyoruz. Websayfamıza giren her kullanıcı için bir session başlatarak Session_Start eventinde bu elemanımıza 1 ekliyoruz. Sessionlar sonlandığında ise Session_End eventinde elemanımızı 1 eksiltiyoruz. Tüm bunları Global.asax dosyamızda yaptıktan sonra Default.aspx sayfamızda ise Labelımıza elemanımızı yazdırıyoruz.

Global.asax

<%@ Application Language="C#" %>

<script runat="server">

void Application_Start(object sender, EventArgs e)

{

Application[
"Counter"] = 0;

}

 

void Session_Start(object sender, EventArgs e)

{

Session.Timeout = 1;

Application.Lock();

Application[
"Counter"] = (int)Application["Counter"] + 1;

Application.UnLock();

}

void Session_End(object sender, EventArgs e)

{

Application.Lock();

Application[
"Counter"] = (int)Application["Counter"] - 1;

Application.UnLock();

}

 

</script>

Default.aspx

protected void Page_Load(object sender, EventArgs e)

{

Durum.Text = "Şu an websayfamzda " + Application["Counter"] + " kişi online durumda..";

}

Uygulamamızda session nesnesini sonlandırmak için dilediğimiz evente aşağıdaki kodu eklememiz yeterli. Mesela bir LinkButton..

Session.Abandon();

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , ,

Programlama İpuçları

Kullanıcı adının cookie içerisine yazılması

Yağız Gönüler tarafından yayınlanmıştır 2. Temmuz 2009 11:46

Aşağıda görüldüğü gibi gayet kolay bir yöntemle User_Name adlı bir Cookies oluşturuyoruz. Bu Cookies'e Yağız değerini veriyoruz. Cookies'in bitiş zamanını 20 dakika olarak ayarladıktan sonra eğer Cookies oluşmuşsa KukiDurum adlı Label'a yazdırıyoruz. Cookie yoksa yine olmadığını Label'a yazdırıyoruz.

*** 

protected void Page_Load(object sender, EventArgs e)

{

esponse.Cookies["User_Name"].Value = "Yağız";

Response.Cookies["User_Name"].Expires = DateTime.Now.AddMinutes(20);

if (Request.Cookies["User_Name"] != null) KukiDurum.Text = "Hoşgeldin " + Request.Cookies["User_Name"].Value + " !";

else

KukiDurum.Text = "Cookie yok!";

}

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , ,

Programlama İpuçları

ViewState'inizin boyutunu öğrenmek

Yağız Gönüler tarafından yayınlanmıştır 25. Haziran 2009 10:34

Aşağıdaki kodları aspx sayfanızın html tarafındaki body tagleri arasında istediğiniz bir yere koyarak viewstate'inizin boyutunu öğrenebilirsiniz.

*** 

<script type="text/javascript">

var size = document.getElementById("__VIEWSTATE").value.length;

document.write(size+"bytes");

</script>

2 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

Programlama İpuçları

Birden fazla tekrar eden kayıtları Sql ile tespit etmek

Yağız Gönüler tarafından yayınlanmıştır 19. Haziran 2009 14:01

Sıkça kullanmak zorunda kalabildiğimiz bu konuyu Cengiz Han hoca paylaşmış, hemen arşivime ekliyorum.

Örnek olarak PERSONEL_KIMLIK adında ve çeşitli türlerde personel kimlik bilgilerini tutabilen bir tablo üzerinde aynı PERSONEL_NO ve aynı KIMLIK_BILGI türüne sahip kayıtların olduğunu varsayalım. Yani yeni kimlik bilgisi girilirken, eski kaydın silinmediği bir durum olabilir.

SELECT * FROM PERSONEL_KIMLIK p1
where exists (
              select 1 from PERSONEL_KIMLIK p2
              where p2.PERSONEL_NO=p1.PERSONEL_NO
              and p2.KIMLIK_BILGI_TURU=p1.KIMLIK_BILGI_TURU
              group by PERSONEL_NO,KIMLIK_BILGI_TURU
              having p1.id<max(p2.id)
              ); 

Sorgu neticesinde tekrar eden kayıtları görebiliriz. Bundan sonra ya update edeceğiz ya delete. O artık bizim elimizde :) 

Tıpkı Cengiz hocanın dediği gibi, bu sorgulara ihtiyacımız olmaması dileğiyle.

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Programlama İpuçları

GridView'de AllowPaging yaparken diğer sayfalara veri gelmeme, gözükmeme sorunu

Yağız Gönüler tarafından yayınlanmıştır 16. Haziran 2009 11:43

Bildiğimiz gibi Asp.Net'te GridView'in en işlevsel özelliklerinden biri de AllowPaging özelliğidir. GridView'imizi seçip Properties penceresinden AllowPaging değerini True yaparak bu özelliği aktif hale getirebiliiz. Böylece veritabanımızdan sayfa başına 10 tane gelebilecek şekilde verilerimiz sıralanır. Tabi bu 10 rakamı default değerdir. İstersek bunu arttırabilir yada azaltabiliriz.

AllowPaging yaparken dikkat etmemiz gereken nokta, GridView üzerindeki 2. veya başka bir sayfaya geçildiğinde yine verilerin veritabanından düzgün biçimde gelmesidir. Eğer aşağıdaki verdiğim kodları GridView'in PageIndexChanging özelliği içerisine yazmazsak 2.yada başka bir sayfaya geçtiğimizde verilerimiz veritabanından gelmez.

Öncelikle diyelimki bir BindData adında bir fonksiyon yazdık. Verilerimiz bu fonksiyon sayesinde veritabanından geliyor.

private void BindData()
{
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" + Server.MapPath("veritabani.mdb"));
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM tblveri", con);
DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}

Bu kodla ilgili veritabanımızın tblveri tablosundaki tüm veriler GridView'imize doluyor. AllowPaging olayını True yaptığımızı varsayalım ve GridView1'in PageIndexChanging olayına aşağıdaki kodlarımızı yazalım.

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
BindData();
}

Böylece GridView'de AllowPaging yaptıktan sonra diğer sayfalara "veri gelmeme, gözükmeme" sorununu da aşmış oluyoruz. Forumlarda en çok yanıt arayan sorulardan biridir..

2 kişi tarafından 3.0 olarak değerlendirildi

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

Programlama İpuçları

Sistemdeki tüm providerları görüntülemek

Yağız Gönüler tarafından yayınlanmıştır 9. Haziran 2009 11:37

Bazı zamanlar işe yarayabiliyor. Yukarıdaki gibi bir tasarım hazırladım windows formuma. 1 button ve 1 datagridview'den oluşuyor. Button'un tıklama eventine aşağıdaki kodları yazıyorum ve sonucu alıyorum. İcraatı yapan değerli sınıfımızın adı DbProviderFactories. Bu sınıfın bağlı olduğu namespace'in adı ise System.Data.Common.

private void button1_Click(object sender, EventArgs e)
{
DataTable tablom = new DataTable();
tablom = System.Data.Common.DbProviderFactories.GetFactoryClasses();
dataGridView1.DataSource = tablom;
}

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

Programlama İpuçları

Asp.Net'te sayfanın dosya adını öğrenmek

Yağız Gönüler tarafından yayınlanmıştır 9. Haziran 2009 10:40

Asp.Net'te bulunduğumuz sayfanın dosya adını bulmak için Page nesnesinden yararlanıyoruz ancak bunun için ufak 2 işlem daha yapıyoruz.

Visual Basic .Net:

SayfaDosyaAdi = Page.ToString.Replace("_aspx", ".aspx").Remove(0, 4)

C#: 

SayfaDosyaAdi = Page.ToString().Replace("_aspx", ".aspx").Remove(0, 4);

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , ,

Programlama İpuçları

Fare imlecinin konumunu bulmak

Yağız Gönüler tarafından yayınlanmıştır 27. Kasım 2008 15:36

Bazen çok işe yarar bir kod olabiliyor. Windows formuma 1 adet button ekledim ve click eventine aşağıdaki kodları yazdım. Tıklandığında messagebox yardımıyla bana imlecin koordinatlarını verecek.

Point p = Cursor.Position;
MessageBox.Show((p.X - this.Location.X) + " : " + (p.Y - this.Location.Y));

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

Programlama İpuçları

Windows'ta yüklü olan programı çalıştırmak

Yağız Gönüler tarafından yayınlanmıştır 27. Kasım 2008 15:25

Windows projelerimizde yine sık kullandığımız kodlardan birini daha yayınlamak istiyorum. Windowsumuzda yüklü bir programı, projemizden çağırmak için öncelikle aşağıdaki fonksiyonu deklare ediyoruz.

[DllImport("kernel32")]
public static extern long WinExec(string lpCmdLine, int nCmdShow);

Burada lpCmdLine isimli değişken programın adını tutmaktadır. nCmdShow ise programın açılış ekranının şeklini tutar. Mesela ekranı kaplaması için 2, orjinal boyutu için 9 ve simge durumunda bulunması için 6 değeri verilebilir. Daha sonrasında forma bir button ekleyip click eventine aşağıdaki kodları yazıyorum.

long programicagir;
programicagir = WinExec("C:\\Windows\\System32\\notepad.exe”, 2);

Bu kodlarla ilgili programın çalışabildiğini göreceksiniz. Ben notepad'i örnek olarak aldım. WinExec() fonksiyonu çalıştığı zaman sayısal bir değer döndürür. Çağırdığımız program eğer hard disk'te yoksa 2, sürücü veya ilgili klasör yoksa 3, yeterli ram yoksada 8 değerini verir.

3 kişi tarafından 4.3 olarak değerlendirildi

  • Currently 4,333333/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

Programlama İpuçları

Random sayı üretmek

Yağız Gönüler tarafından yayınlanmıştır 26. Kasım 2008 15:35

Websayfamdaki Programlama İpuçları bölümüne başlarken kodların hem vb.net hemde c#.net hallerini yazıyordum. Karar değiştirdim ve projelerimde hangi dili kullanıyorsam onu kodlamaya karar verdim. Neticede online convert sayfalarından diğer dildeki halini de görebilirsiniz. Bunun için özellikle burayı tavsiye ederim. Hepimizin en çok kullandığı kodlardan biri de random sayı üretme kodlarıdır. Random sınıfı kripto işlemleri için yeterli değil. .NET Framework ile birlikte gelen RandomNumberGenerator sınıfından yararlanıp istediğimiz amaçlar işler için rastgele sayılar üretebiliriz. Bu sınıfı kullanabilmek için aşağıdaki satırı namespace olarak eklemeliyiz:

using System.Security.Cryptography;

Şimdi kodlara geçelim. Ben Memik Yanık'ın algoritmasını kullanıyorum projelerimde. Dolayısıyla farklı yerlerde görürseniz şaşırmayın Smile

Aşağıdaki örnekte ilk olarak 10 elemanlı bir byte dizisi hazırlanıyor. Rastgele hazırlamak istediğimiz sayının daha uzun veya kısa olmasını istiyorsak, byte tipindeki dizi değişkenin eleman sayısında değişiklik yapmamız gerekiyor.

Private void Form1_Click(object sender, EventArgs e)
{
byte[] Dizi = new byte[10];
RandomNumberGenerator Sayi;
Sayi = RandomNumberGenerator.Create();
Sayi.GetBytes(Dizi);
string Str="";
for (int i = 0; i < Dizi.Length; i++)
Str = Str + Dizi[i].ToString();
textBox1.Text = Str;
}

Devamında RandomNumberGenerator tipinde bir değişken tanımlayıp Create() metodu ile RandomNumberGenerator nesnesi hazırlanıyor. Bu sınıfın GetBytes() metodu parametre olarak aldığı Byte dizisinin içeriğini rastgele dolduruyor.

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

Programlama İpuçları

Bilgisayarınız ne zamandan beri açık?

Yağız Gönüler tarafından yayınlanmıştır 21. Kasım 2008 13:10



Ne kadar işinize yarar bilmiyorum ama aşağıdaki kodlar vasıtasıyla bilgisayarınızın ne kadar zamandır açık olduğunu öğrenebilirsiniz. Mutlaka işinize yarayacak bir tarafı olabilir logger uygulamalarında falan Smile

C#:

public string getuptime()

            String cevap = String.Empty; 
            cevap += Convert.ToString(Environment.TickCount / 86400000) + " gün, "
            cevap += Convert.ToString(Environment.TickCount / 3600000 % 24) + " saat, "
            cevap += Convert.ToString(Environment.TickCount / 120000 % 60) + " dakika, "
            cevap += Convert.ToString(Environment.TickCount / 1000 % 60) + " saniye."
            return cevap; 
}

Visual Basic .Net:

Public
Function getuptime() As String
        Dim cevap As String = String.Empty
        cevap += Convert.ToString(Environment.TickCount / 86400000) + " gün, " 
        cevap += Convert.ToString(Environment.TickCount / 3600000 Mod 24) + " saat, " 
        cevap += Convert.ToString(Environment.TickCount / 120000 Mod 60) + " dakika, " 
        cevap += Convert.ToString(Environment.TickCount / 1000 Mod 60) + " saniye." 
        Return cevap
End Function

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , ,

Programlama İpuçları

Sayfanızda javascript sorunu gözükmesin

Yağız Gönüler tarafından yayınlanmıştır 20. Kasım 2008 14:46



Aşağıdaki satırları head tagi içerisine kopyalarsanız, sayfanızın sol alt köşesinde eğer varsa javascript kodları görünmez hale gelecektir.
Bunun çok daha uzununu biliyordum ancak kısasıyla beni tanıştıran Hakan Coşar kardeşime teşekkürler.

<script LANGUAGE="JavaScript">
function CC_noErrors() {
return true;
}
window.X_onerror = CC_noErrors;
</script>

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

Programlama İpuçları

Türkçe harflerin unicode karşılıkları

Yağız Gönüler tarafından yayınlanmıştır 11. Kasım 2008 15:22

Özellikle websayfamda ve uğraştığım web projelerinin birçoğunda çok yardımını gördüm aşağıdaki kodların. Mesela websayfamda sağ menüdeki last.fm widget'inin .cs dosyasını editlerken çok yardım aldım.

  • ğ - \u011f
  • Ğ - \u011e
  • ı - \u0131
  • İ - \u0130
  • ö - \u00f6
  • Ö - \u00d6
  • ü - \u00fc
  • Ü - \u00dc
  • ş - \u015f
  • Ş - \u015e

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: ,

Programlama İpuçları

Uygulamanın aynı anda birden fazla çalışmasını önlemek

Yağız Gönüler tarafından yayınlanmıştır 11. Kasım 2008 11:51



Yeni bir kategoriye başlamış bulunuyorum: Programlama ipuçları. Çok kısa kodlarla çok işe yarar işler yapacağız. Biraz nutukvari bir ifade oldu ama işin özeti forumlarda çok sorulan ve çözümü kolay olan sorunlara yardımcı olmak. Bu konuda sormak istediklerinizi iletişim bölümünden bana ulaştırabilirsiniz.

İlk ipucum bir windows uygulamasının aynı anda birden fazla çalışmasını önlemeye dair. Yukarıda task manager'da görüyoruz, sidebar.exe isimli program iki kez çalışıyor ve bilgisayarımızı gereksizce yoruyor. İşte bunu önlemek için visual studio.net yardımıyla formumuzun load olayına aşağıdaki kodları yazıyor. Hem vb hem de c# olarak kodları yazdım. Ayrıca kodun işlevini visual studio'dan debug ederek göremezsiniz, exe'den çalıştırarak farkı görebilirsiniz. İpuçlarım devam edecek..

C#:

Process[] workPr = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName ); 
    foreach (Process pro in workPr)

    if (Process.GetCurrentProcess().Id != pro.Id) 
    { 
    pro.Kill(); 
    }
}

Visual Basic .Net:

Dim workPr As Process() = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName)
For Each pro As Process In workPr
If Process.GetCurrentProcess().Id <> pro.Id Then
pro.Kill()
End If
Next

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , ,

Programlama İpuçları



Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.
Sitedeki kod ve tasarım değişiklikleri ise Yağız Gönüler tarafından geliştirilmiştir.
2008 © www.yagizgonuler.com

Paslaş

       

Anket

Mesleğinizden arta kalan zamanınızı nelere harcıyorsunuz?







Sonuçlar

Calendar

<<  Şubat 2012  >>
PaSaÇaPeCuCuPa
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

Yazıları geniş takvimde göster

Ne(ler) Okuyorum?


Ne Dinliyorum?

Zeki Müren - Dediler Zamanla Hep (3 saat önce)
Şükrü Tunar - Rast Taksim (4 saat önce)
Şükrü Tunar - Aydın Zeybeği (4 saat önce)
Şükrü Tunar - Uşşak Çiftetelli (4 saat önce)
Şükrü Tunar - Uşşak Taksim (4 saat önce)
Şükrü Tunar - Anadolu Oyun Havası (4 saat önce)
Şükrü Tunar - Hüzzam Taksim (4 saat önce)
Şükrü Tunar - Hovarda Zeybeği (4 saat önce)
Şükrü Tunar - Uşşak Çiftetelli (4 saat önce)
Şükrü Tunar - Uşşak Taksim (4 saat önce)

İstanbul'da Hava

ISTANBUL

Ziyaretçi Sayısı