Archive for the Category »Microsoft .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

Project ‘Library’ could not be opened Visual Studio Error

Project ‘Library’ could not be opened because the Microsoft Visual C# 2008 compiler could not be created. QueryService for {…}
hatasının çözümü:

cmd >devenv /ResetSkipPkgs
komutunu çalıştırmanız yeterlidir. Sorun çözülmüş olacaktır. IDE nizi yeniden başlatıp çalışmalarınıza devam edebilirsiniz.

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.

Parse Url in C#.NET

Regex pattern = new Regex("(?
http(s)?|ftp)://(?([A-Za-z0-9-]+\\.)*(?[A-Za-z0-9-]+\\.[A-Za-z0-9]+))+((:)?(?
[0-9]+)?(/?)(?
(?[A-Za-z0-9\\._\\-]+)(/){0,1}[A-Za-z0-9.-/]*)){0,1}");

ya da

string url = "http://my.domain.com:8000?arg1=this&arg2=that";
System.Uri uri = new System.Uri(url);

// port bilgisi
int port = uri.Port;

// host adı (my.domain.com)
string host = uri.Host;

// protokol bilgisi
string protocol = uri.Scheme;

// saf url
string cleanURL = uri.Scheme + "://" + uri.GetComponents(UriComponents.HostAndPort, UriFormat.UriEscaped);

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.