January 2007 - Posts

PHP ve MYSQL gibi açık sistemlerin kalesi Yahoo da Vista dalgasına kapılıyor mu ne ?

Önce .Net Framework ile çıktılar.. Vizyonumuz 10 sene sürecek 3 fazdan oluşacak dediler..
 
Klasik ASP ile yarım saatte yaptığım tabloyu DataGrid dedikleri bir şeyle 3 dakikada yaptılar.
 
Buna birinci dalga dediler..
 
İlk dalgaya Borland firması kapıldı.
 
Yazılımcıların en büyük silahı Delphi'yi tahttan indirdiler, Delphi 8.0 sürümünü .Net altyapısı üzerine kurdu.
 
Object Oriented Database kavramına SQL 2005 ile birlikte ilk adımı attılar. VS.NET 2007 ile birlikte çıkardılar.
 
Buna ikinci dalga dediler.
 
XAML diye bir şey çıkardılar. Flash'ın vektörel cazibesini masaüstüne taşıyacağız dediler.
 
IDE yi hazırlamadan .NET Framework 3.0 ı çıkardılar.
 
Üçüncü ve son dalganın habercisi idi bu.
 
Daha üçüncü dalga gelmeden PHP ve MYSQL in kalesi İnternet devi Yahoo da "Yahoo Messsenger for Windows Vista" yı piyasaya sürmek üzere.
 
Haydi hayırlısı..
Posted by Selçuk Yavuz | 3 comment(s)
Filed under:

Double Postback

ASP.NET 2.0 ile geliştirdiğimiz bir uygulamada enteresan bir bug'a rastladım.

GridView içerisinde ki CommandFiled'lar sağlıklı bir şekilde çalışıyorken. ButtonType özelliğini Image yaptığımızda postback işlemi iki kere gerçekleşiyor.

<asp:GridView ID="GridView1" runat="server">
     <Columns>
        
<asp:BoundField DataField="Name" HeaderText="Name"/>
         <asp:CommandField ShowDeleteButton="True" ButtonType="Image" DeleteImageUrl="~/Images/Icons/Delete.png" />
    </Columns>
</asp:GridView>

Uzunca bir süre kodumu inceledim nerede hata yaptım diye. "double postback" anahtar kelimeleri ile yaptığım bir araştırma sonucunda bunu bir bug olduğunu gördüm : http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=156012

Microsoft yetkilileri "We are investigating this issue" desede Bug'ı bildiren WebGolem hayli ilginç bir çözüm sunmuş :

http://connect.microsoft.com/VisualStudio/feedback/Workaround.aspx?FeedbackID=156012

Entered by WebGolem on 7/4/2006

insert the following lines in your RowCommand event:

if (Request["x"] == null || Request["y"] == null)
{
     Response.End();
}

Posted by Selçuk Yavuz | with no comments
Filed under:

Visual Source Safe ve UnauthorizedAccessException

Projelerinizi geliştirirken Visual Source Safe kullanıyorsanız Check Out yapmadan dosyaları değiştiremediğinizi biliyorsunuzdur.

Siz Check Out yapanada kadar dosyalarınız local'inizde read-only olarak tutulur.

Bu yüzden System.IO.StreamWriter yada başka bir namespace ile projenizdeki herhangi bir dosyanın içeriğini değiştirmeye çalışırsanız UnauthorizedAccessException hatası alacaksınız.

Read Only özelliğini kaldırsanız dahi debug halinde bu VSS bu dosyayı tekrar read only yapacaktır.

Bu yüzden projenizi debug etmeden evvel değiştirmeyi düşündüğünüz dosyayı önce Check Out yapın.

Posted by Selçuk Yavuz | with no comments
Filed under:

Ardarda rasgele sayı

Bir döngü içerisinde birbirinden farklı rasgele sayıya ürettiğinizde sayıların neredeyse aynı olduğunu göreceksiniz. Rasgele sayı üretiminde kullanılan algoritmadaki parametreler sistem saatinden alındığı için döngü içerisinde üretilen sayılar birbirine çok yakın yada aynı olacaktır.

Bunu engellemek için döngü içinde System.Threading.Thread.Sleep(123); yazıp döngüyü biraz yavaşlatıp sistem saatinin değişmesini bekleyebilirsiniz ancak. Bu programınızın oldukça yavaşlamasına neden olacaktır.

Daha hızlı bir yöntem için ise aşağıdaki biri Random sınıfına bir Seed değeri atayabilirsiniz :  

System.Text.StringBuilder sb = new System.Text.StringBuilder();

for (int i = 0; i < 1000; i++)
{
    byte[] RandomBytes = new byte[4];
    System.Security.Cryptography.
RNGCryptoServiceProvider rng;
    rng =
new System.Security.Cryptography.RNGCryptoServiceProvider();
    rng.GetBytes(RandomBytes);
    // Convert 4 bytes into a 32-bit integer value.
    int Seed = (RandomBytes[0] & 0x7f) << 24 | RandomBytes[1] << 16 | RandomBytes[2] << 8 | RandomBytes[3];
    Random Rnd = new Random(Seed);
    int rasgele = Rnd.Next(1, 10);
    sb.AppendFormat("{0}\n");
}

Response.Write(sb.ToString());

 // Ozan Vural'a teşekkürler..

Posted by Selçuk Yavuz | with no comments
Filed under:
More Posts