Tag-Archive for » C#.NET «

Enterprise Library 5.0

Enterprise library aşağıda yer alan alt başlıklar altında gelişimini sürdüren ancak gelişen teknojiye de aynı yönde cevap veren ve Microsoft tarafından desteklenen açık kaynaklı bir uygulamadır. Bu alt başlıklar;

  • Caching
  • Configuration Sources
  • Cryptography
  • Data Access
  • Exception Handling
  • Interception
  • Logging
  • Security
  • Validation
  •  Unity

halinde listelenebilir.

Enterpirse Library, temel olarak yazılımcının daha az kod yazarak aynı işi yapması için kolaylıklar sunar. Cross Cutting Concerns ayrımını daha iyi yapmamızı ve yazılımcının sadece “neyi yazması gerekiyorsa, o’na yönelmesini” sağlayan açık kaynak kodlamanın önemini bilen ve avantajını kullanan yazılımcıların el kitabı da denilebilir.

Uygulamanın destek sayfasından uygulamayı indirebilir, Hands On Labs ları kendiniz deneyebilir, Developer Guide ile uygulamalarınıza Enterprise Library yi entegre edebilirsiniz.

Yukarıdaki alt başlıkların açıklaması ve örneklerini ilerleyen günlerde eklemeye çalışacağım…

write less and best, do more and powerfull apps

C# ile Sınırsız Html(ul,li) Menü (Recursive Functions)

En çok başımızı ağrıtan uygulamalardan birisi de sınırsız menü yapım işlemleridir.Dannyz arkadaşıma lazım olan bu menünün C# ile kodlanmış olan halini burda paylaşmak istiyorum.

Oracle veritabanı :

CREATE TABLE SINIRSIZ_MENU
(
  ID      INTEGER,--menü id
  ADI     VARCHAR2(20 BYTE) NOT NULL, -- menü adı
  UST_ID  INTEGER, -- menü üst id, eğer üst id yoksa değeri null olmalıdır
  URL VARCHAR(255) -- adres
)

C# kodları :

public string Sinirsizmenu(string pPrnt)
{
            var dbs = new VeritabaniBaglantiYap("thegkmnkc", "localhost", "****");
            var dt = dbs.SorguSonucu("select coalesce(M.UST_ID,0) ust_id,id,adi from sinirsiz_menu m order by m.id asc"); // DataTable
            var diziler = new Hashtable();
            var indArr = new int[dt.Rows.Count];
            for (var i = 0; i < dt.Rows.Count; i++)
            {
                var tmp = new Hashtable();
                tmp["baslik"] = dt.Rows[i]["ADI"].ToString();
                tmp["parent"] = dt.Rows[i]["UST_ID"].ToString();
                tmp["url"] = dt.Rows[i]["URL"].ToString();
                diziler[dt.Rows[i]["ID"].ToString()] = tmp;
                indArr[i] = Convert.ToInt32(dt.Rows[i]["ID"].ToString());
            }

            var hasChilds = false;
            var mnuStr = "";
            for (var i = 0; i < diziler.Count; i++)
            {
                var enm = (Hashtable)diziler[indArr[i].ToString()];
                var enim = enm.GetEnumerator(); //IDictionaryEnumerator
                enim.MoveNext();
                var anahtar = indArr[i].ToString();
                var baslik = enim.Value;
                enim.MoveNext();
                var prnt = enim.Value.ToString();
                enim.MoveNext();
                var url = enim.Value.ToString();

                if (pPrnt != prnt) continue;
                if (!hasChilds)
                {
                    hasChilds = true;
                    mnuStr += "<ul>";
                }
                mnuStr += "<li><a href="\">" + baslik + "</a>";
                mnuStr += Sinirsizmenu(anahtar);
                mnuStr += "<li>";
            }
            if (hasChilds)
                mnuStr += "</ul>";
            return mnuStr;
}

bu ilk hali, daha sonra optimizasyon yapıp yayınlayacağım yine burada, ancak istenilen yapıyı oluşturuyor şimdilik.

Lucene.Net

 

      Daha önceleri kendi çaba ve gayretlerimle MsSql veritabanı ve Visual Studio 2010 .Net ortamında c# ile geliştirdiğim indexleyici, terimsel frakans (term frequency) hesaplama, vektörel işlemleri (vector space model) kendi başına yapabildiğini öğrendiğim bir .NET kütüphanesidir kendileri.

    Ufak çapta yaptığım bir araştırma sonucunda bulduğum ilk kaynaklar, aşağıdadır.

     İleride yaptığım örnekleri de buraya ekleyeceğim, aynı zamanda Lucene.Net ile ilgili detaylı bilgileri vereceğim.