February 23, 2007
@ 10:14 PM

Buyrun burdan yakın.Detaylarını da burdan inceleyebilirsiniz.



 
Categories: Inceleme

February 21, 2007
@ 06:50 PM
Pek etkili gelmese de iyisi kötüsüyle Microsoft 2007 Zirvesi geçtiğimiz günlerde düzenlenmişti. Bazı sunumlara zamansızlıktan katılamamıştım. Ama şurdaki linkte sunumların hem pdf leri hem de wmv lerini indirerek inceleme fırsatı buldum. Zirveye katılamayanlar için iyi bir kaynak.
 
Categories: Internet

February 14, 2007
@ 12:46 AM

Visual Studio 2005'in hızlı kod yazma adına en güzel özelliklerinden birisi de Snippet'lar. Herzaman yazdığınız onlarca satır kodları birkaç tuş ile kaynak kodunuza ekleyebilirsiniz. Örneğin;kolay bir şekilde for döngüsünü yazmak için VS.NET 2005 editöründe for yazıp TAB'a basmanız, ya da if - else yapısı için if yazıp TAB'a basmanız yeterli.


Benzer birçok snippet hazır olarak C:\Program Files\Microsoft Visual Studio 8\VC#\Snippets\1033\Visual C# dizininde mevcut. Burdan hazırda bulunan snippet'ları inceleyerek kendinize özel snippet'lar oluşturup, oluşturduğunuz  *.snippet uzantili dosyayı ilgili dizine koyduktan sonra VS.NET 2005 editöründe kendinizin hazırlamış olduğunuz dosyanın (örneğin sqlconn.snippet) ismini (sqlconn) yazarak TAB'a basmanız yeterli olacaktır.


Bu sitede kullanıma hazır birçok snippet bulunmakta. İncelemekte fayda var.


 
Categories: .NET

VS.NET'te Start Page'i bilmeyen yoktur sanırım. Recent Projects kısmında enson oluşturduğumuz projelerimizin kısa yolları yer alır. Bu projeleri dosya sisteminden silmemize rağmen öyle bir proje olmamasına karşın Recent Projects kısmında hala görünür - ne vardı kontrol etseydi VS.NET - Neyse ki bir proje ismini regedit.exe yi kullanarak registry de aradığımda  - bir ihtimal  - HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\ProjectMRUList  yolunda Recent Projects de listelediği projeleri sakladığını gördüm. Bu kayıtları registryden silindiğinde temiz bir Recent Projects ile karşılacaksınız.


 


 
Categories: .NET

February 12, 2007
@ 11:31 PM

Hepimizi üzen malum savaşı protesto etmek için hazırlanmış akıl içerikli afişleri şuradan ve şuradan inceleyebilirsimiz. Favorim ise aşağıda.



 
Categories: Yasam

February 9, 2007
@ 04:12 AM

En son öğrencilerimiz ile kurs sonrası tekrar buluşup sohbet esnasında  "neden ms sql de mySql'deki LIMIT gibi birşey yok.. olması lazım" içerikli konuşmaya kulak kabartmıştım. Tabi bilenler hemen MsSQL 2005 de bu iş için ROW_NUMBER anahtar kelimesinin geldiğini bunla paging - sayfalama - yapılabildiğini söylediler. Ama birçok kişinin hala benzer problemler yaşadığını görüp işitiyoruz. Projemiz hala MsSql 2000 üzerinde ise ne yapabiliriz ? Tabi gecici tablolardan tutun da SP ler yazarak değişik çözümler üretmek mümküm. Ama bir yöntem var ki cidden çok tatlı ve zekice.


Diyelim ki her sayfada 50 eleman göstermek istiyorsunuz. Buna PS dielim ki bu herzaman sabit kalacaktır.Sürekli değişen ise kaçıncı PS den itibaren PS kadar kayıt alacağınız. Buna da OS dersek;


Select Top PS * from TblHede where tblHede.ID not in ( select TOP OS TblHede.ID from TblHede)   gibi bir sorgu işimizi görecektir.



Eğer ilk PS kaydi almak istiyorsak OS = 0, ikinci PS i almak istiyorsak OS = PS * 2 şeklinde ... OS = PS *n şeklinde OS'a değerler vererek sayfalama yaptırabiliriz.(PS in 50 olduğunu düşünürsek, OS ; 0, 50, 100... şeklinde artacaktır)

içerdeki sorgu (select top os ....) bir imleç olarak ya da indeks olarak düşünürsek, OS = 50 dediğimizde; tblHede tablosundaki ilk 50 kayıt dışındaki - not in  sayesinde - kayıtlardan ilk 50 kayıtı al demiş oluyoruz. OS  = 100 dediğimizde de tblHede tablosundaki ilk 100 kayıt dışında kalan kayıtlardan ilk 50 tanesini getir demiş oluruz ki burda PS'in değişmediğine değişenin OS olduğuna dikkat etmemiz gerekir.



Büyük datalarda ne kadar efektif sonuç üretir tartışılır :)


 
Categories: Inceleme



namespace CodeFn
{
    class Bisi
    {
        private int _hede;
        public int Hede {
            get { return _hede; }
            set { _hede = value; }
        }
        private string _hode;
        public string Hode {
            get { return _hode; }
            set { _hode = value; }
        }
        public Bisi(int hede, string hode)
        {
            Hede = hede;
            Hode = hode;
        }
        public override string ToString()
        {
            return Hede.ToString() + "-" + Hode;
        }
    }
    class HedeColl : List<Bisi>
    {
        public HedeColl()
        {
            Add(new Bisi(1, "elma"));
            Add(new Bisi(22, "muz"));
            Add(new Bisi(4, "portakal"));
        }
    }
    class Program
    {
        private static void Main(string[] args)
        {
            Predicate<Bisi> match = new Predicate<Bisi>(BulBakalim);
            List<Bisi> meyveler = new List<Bisi>(new HedeColl());
            Bisi bisi = meyveler.Find(match);
            if (bisi != null)
            {
                Console.WriteLine("Bulunan bisi [{0}]", bisi.ToString());
            }
            else
            {
                Console.WriteLine("bisi bulunamadı");
            }
        }
        public static bool BulBakalim(Bisi bisi)
        {
            if (bisi.Hode == "muz")
            {
                return true;
            }
            return false;
        }
    }
}


 
Categories: Code

Bu güzelim editörü daha da güzelleştiren klavye kısa yollarının - mesela bir kod bloğunu seçtikten sonra Ctrl+K+C - neler olduğunu merak ediyorsanız şu dosyayı (pdf) indirip inceleyebilirsiniz. Hatta poster yapıp duvarınıza asabilirsiniz.



 
Categories: .NET

February 5, 2007
@ 12:18 AM

Genelde içeriği bol olan sitelerde http://.../hede/hode/1 (*) gibi linklerin olduğunu görürüz. Bizler ise gendle http://.../hede/hode.aspx?bisi=1 gibi QueryString ifadelerinden yararlanarak içeriği kullanıcıya yansıtırız.


Peki asp.net'te (*) daki gibi bir kullanımı nasıl sağlarız. Bunun için HttpHandler dan yararlanmak lazım - dikkat ederseniz uzantı yok url'de. Bu durumda IIS hemen 404 hatasını yollayacaktır kullanıcıya-  Ama birçoğumuz sitelerimizde IIS'a müdahale edemiyoruz. Peki ne yapabiliriz bu durumda. En iyisi bir HttpModule yazıp linklerimizi http://.../hede/hode/1.aspx şeklinde düzenleyebiliriz. (Aslında yapmak istediğimiz http://.../hede/hode.aspx?bisi=1 dir.) Bunun için HttpContext sınıfının RewritePath metodundan yararlanabiliriz. HttpModule konusu ile ilgili bilgileri şurdaki linkten edinebilirsiniz.


using System;

using System.Collections.Generic;

using System.Text; using System.Web;

namespace rewmod

{

class hede : IHttpModule

{

public void Dispose(){}

public void Init( HttpApplication context ) {

    context.BeginRequest += new EventHandler(context_BeginRequest);

}

void context_BeginRequest( object sender, EventArgs e ) {

    string makalePattern = "makale/";

    string oldUrl = HttpContext.Current.Request.Path;

    int startIndex = oldUrl.IndexOf(makalePattern);

    if (startIndex != -1) {

        int endIndex = oldUrl.IndexOf(".aspx");

    if (endIndex != -1) {

        startIndex += makalePattern.Length;

    string makaleNumber = oldUrl.Substring(startIndex, endIndex - startIndex);

    HttpContext.Current.RewritePath("~/amac.aspx?id=" + makaleNumber);

}

}

}

}

}


web.config içeriği.

..

<system.web>

    <httpModules>

        <add name="hede" type="rewmode.hede"></add>

    </httpModules>

....


 
Categories: Code