Osman KURT

Yazılım Uzmanı | MVC Eğitmeni

ElasticSearch Kurulumu

Windows bilgisayarımıza elasticsearch kurmak için ilk yapmamız gereken şey java'nın bilgisayarımızda kurulu olması.(Çünkü ElasticSearch java dilinde geliştirilmiştir)

Java kurulumundan emin olduktan sonra yapmamız gereken https://www.elastic.co/downloads/elasticsearch linkinden zip dosyamızı download etmek.

Sonrasında indirdiğimiz dosya üzerinde bin klasörü altında elasticsearch.bat dosyamızı çalıştırmamız yeterli olacaktır. 

Kurulum tamamlandığında http://localhost:9200 adresinde "ElsaticSearch" çalışmaya başlayacaktır. İlgili adrese gittiğinizde karşınıza çıkacak görüntü alt kısımdaki gibi olacaktır. 

*Sürüm farklılıkları olabilir.

{
  "name" : "osman",
  "cluster_name" : "KURT",
  "version" : {
    "number" : "6.2.2",
    "build_hash" : "72cd1f1a3eee09505e036106146dc194xxxxxxxx",
    "build_timestamp" : "2015-11-18T22:40:03Z",
    "build_snapshot" : false,
    "lucene_version" : "5.3.1"
  },
  "tagline" : "You Know, for Search"
}

Osman KURT

Yazılım Uzmanı

ElasticSearch Nedir?

ElasticSearch Nedir?

ElasticSearch, java programlama dili kullanılarak open source geliştirilmiş ve lucene alt yapısı üzerine kurulmuş ölçeklenebilir, full text search tabanlı bir engine'dir

En belirgin avantajları arasında;

  • Cluster yapısı çok basittir
  • Rakiplerine göre çok fazla kaynak tüketmez
  • Kendi içinde yüksek erişilebilirlik (high availability) sunar
  • İndexleme mantığı olduğu için hızlı arama yapar
  • Doküman ve indeksleme kavramı çok kullanılır
  • Dokümanları JSON olarak indexler
  • Mapping kavramı vardır. Bir belgenin arama motoruna nasıl aktarılması gerektiğini tanımlama sürecidir
  • Shared ve Replica kavramı vardır


Ülkemizde de başta www.kariyer.net olmak üzere birçok firmada elasticsearch kullanımı mevcuttur. Dünya genelinde ise Netflix, IBM, Slack, Linkedin, Ebay gibi büyük firmalar kullanmaktadır.

Bu link üzerinden indirebilirsiniz.


Marvel Nedir?

Marvel, elasticsearch'ün sunmuş olduğu bir arayüzdür. Bu arayüz sayesinde elasticsearch üzerinde kurulu olan bütün node'ların durumlarını görebiliriz. Bunların yanı sıra döküman sayılarını takip edebilir ve gelen tüm request'lerin oran bilgilerine ulaşabiliriz.


Sense Nedir?

Sense, elasticsearch query'lerini browser üzerinde çalıştırmamızı sağlayan bir araçtır. Bu sayede herhangi başka bir araca gerek duymadan sense üzerinden sorgularımızı çalıştırabilir ve sonuçlarını görebiliriz. Bunların yanı sıra Index, Mapping ve Document ekleme/silme gibi işlemleri de yapabilmekteyiz.

Sense ve Marvel için kibana kurulumu yapılması gerekmektedir. Bu linkten indirebilirsiniz.


Osman KURT
Yazılım Uzmanı

Custom Validators Kullanımı

Merhabalar,

Bu örnek daha önceki yazılarımdan fluent validation kullanıma ek olarak yazıldı. Mesela elimizde bir Array olsun ve bu Array üzerinden item kontrolü yapalım. Bu örneği sadece item kontrolü olarak düşünmeyelim de özelleştirilmiş kontrolleri buradan yapabileceğimizi düşünelim.

Basit ama işinize yarayacak bir örnek.

public class PersonValidator:AbstractValidator<Person> { 
  public PersonValidator() {
   RuleFor(x => x.Pets).Must(list => list.Count <= 10).WithMessage("Hata Mesajı");
  }
}

Osman KURT

C# ile HTML Kodlarını Temizleme

Merhabalar,

Bugün sizlere bazı text içeriklerde gelen html kodlarının Regular Expression ile nasıl temizlenmesi gerektiğini anlatacağım.

public static string RemoveHtml(string text)
{
     return Regex.Replace(text, @"<(.|\n)*?>", string.Empty);
}

Osman KURT
Yazılım Uzmanı

C# İpucu, string.join Kullanımı

Merhabalar,
Kısa ama zaman kazandıracak bir kod string join. Var olan bir listemizi istediğimiz şekilde string bir veri olarak joinlemeye yani birleştirmeye yarayan bir kod. Alt kısımda bulunan basit örneği incelediğiniz de ne demek istediğimi gayet iyi anlayacaksınız.
List Liste = new List();
Liste.Add("Osman");
Liste.Add("KURT");
string deger = string.Join(",", Liste);

Çıktı: Osman,KURT

Gördüğünüz gibi listemizi yan yana birleştirme işlemi uygulamak bu kadar basit.

Osman KURT
Görüşmek üzere

Asp.Net ile Kalıcı Permanent 301 Yönlendirme Nasıl Yapılır?

Web uygulamanızda bir linki kalıcı olarak değiştirmek, farklı bir adrese taşımak istiyorsanız bunu arama motorlarına, örneğin google, 301 hata kodu ile bildirmeniz gerekmektedir.

Örnegin osmankurt.net/arsiv.aspx şeklindeki sayfanızın adresini günün birinde osmankurt.net/gecmis.aspx şeklinde değiştirmek isteyebilirsiniz. Arama motorları eski sayfanın adresini daha önceden indekslediği için bunu arama motorlarına bildirmezseniz SEO açısından hatalı bir işlem yapmış olursunuz.

Arama motorlarında üst sıralar da yer almak istiyorsak ve geçmiş index değerlerimizi korumak istiyorsak. Bunu iyi uygulamak zorundayız.

Örnek;

 
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.osmankurt.net/YazilimUzmani");
Response.End();
} 

Görüşmek üzere

Osman KURT
Yazılım Uzmanı

C# İki Liste Arasında ki Farkı Bulma

Merhaba arkadaşlar,

Bu yazımda MVC eğitimi kapsamında elimizde var olan iki liste arasında ki farkı bulmayı sağlayan kod parçacığını inceleyeceğiz. Elimiz de string veri tutan iki adet liste olduğunu varsayalım. Bunların içinden de birinde olup diğerinde olmayan item'ları bulmayı deneyelim. Çok basit bir kod parçası mevcut bu iş için. Ekstra herhangi bir işleme gerek kalmadan işimizi halledebiliyoruz.

Örnek Kod parçası;


 
List ListeBir = new List();
List ListeIki = new List();

ListeBir.Add("osmankurt.net");
ListeBir.Add("kariyersoft.com");
ListeIki.Add("osmankurt.net");

var ListelerArasiFark = ListeBir.Except(ListeIki).ToList();

Bu kod bloğu istediğimiz işlemi yapıyor arkadaşlar.
Başka bir yazıda görüşmek üzere,

Osman KURT
Yazılım Uzmanı & MVC Eğitimi

Json Veriyi Serializer ve Deserialize Etme

Projelerimiz de bolca kullanmakta olduğumuz json veri alışverişini sağlarken kullanmamız gereken bir method. Göndereceğimiz veriyi json formatına çevirirken yada gelen json veriyi istediğimiz formata çevirirken kullanmaktayız ve olmazsa olmazlarımızdan.

Örnek kod parçası;

        public static string JsonSerializer<T>(T t)
        {
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
            MemoryStream ms = new MemoryStream();
            ser.WriteObject(ms, t);
            string jsonString = Encoding.UTF8.GetString(ms.ToArray());
            ms.Close();
            return jsonString;
        }

        public static T JsonDeserialize<T>(string jsonString)
        {
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
            MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
            T obj = (T)ser.ReadObject(ms);
            return obj;
        }

 


Görüşmek üzere,

Osman KURT
Yazılım Uzmanı

 

C Sharp ile Datagridview deki Kayıtları Excele Aktarma

Bu yazımda DataGridview de listelediğimiz verileri excel dosyasına aktarmayı göstereceğim. Biliyorsunuz ki projelerimizde kullandığımız verileri bazen farklı alanlarda da kullanmamız icab edebilir. O zaman ne yapacağız database de sakladığımız verileri excel gibi programlara dökeceğiz ki hedefe ulaştırmak daha kolay olsun. Lafı zuatmadan kodlarıma geçmek istiyorum ben. İşe ilk olarak Microsoft.Office.Interop.Excel.rar (166,77 kb) dosyamızı indirdikten sonra projemize referans alarak başlayalım ve alt kısımdaki kodlarımızı cs tarafına yazalım.

private void button1_Click(object sender, EventArgs e)
{
  excele_aktar(dataGridView1);
}
void excele_aktar(DataGridView dg)
{
  dg.AllowUserToAddRows = false;
  System.Globalization.CultureInfo dil = System.Threading.Thread.CurrentThread.CurrentCulture;
  System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-us");
  Microsoft.Office.Interop.Excel.Application Tablo = new Microsoft.Office.Interop.Excel.ApplicationClass();
  Microsoft.Office.Interop.Excel.Workbook kitap = Tablo.Workbooks.Add(true);
  Microsoft.Office.Interop.Excel.Worksheet sayfa = (Microsoft.Office.Interop.Excel.Worksheet)Tablo.ActiveSheet;
  System.Threading.Thread.CurrentThread.CurrentCulture = dil;
  Tablo.Visible = true;
  sayfa = (Worksheet)kitap.ActiveSheet;
  for (int i = 0; i < dg.Rows.Count; i++)
  {
    for (int j = 0; j < dg.ColumnCount; j++)
    {
      if (i == 0)
      {
        Tablo.Cells[1, j + 1] = dg.Columns[j].HeaderText;
      }
      Tablo.Cells[i + 2, j + 1] = dg.Rows[i].Cells[j].Value.ToString();
    }
  }
  Tablo.Visible = true;
  Tablo.UserControl = true;
}

Yazımız bu kadar arkadaşlar.

Görüşmek Üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

C# da Webbrowser Kullanımı Textbox'ı Otomatik Doldurma Ve Butona Otomatik Basma

Arkadaşlar nerede kullanacağınızı bilemem ama yararlı bir kod paylaşacağım size. Nerede kullanacağınızı bilmiyorum çünkü bazı arkadaşlar bu kodu pek de iyi şeyler için kullanmıyorlar. Güvenlik açıkları olan siteler için tam bir baş belası işin aslı.

Bu yazımızda c# form tabanlı çalışacağız.İlk olarak formumuza 1 adet web browser,1 adet textbox ve 1 adet buton ekleyelim. Toolbax'ımızda mevcuttur. Şimdi buraya kadar  tamamladıksa asıl konuya geçelim gözümüze hemen daha önceden localde oluşturduğumuz web projesini çalıştıralım ve adres satırında ki adresi formumuza eklediğimiz webbrowser'ımızın url kısmına ekleyelim. URL kısmıa ekledikten sonra projeyi çalıştırdığımız da webbrowser kısmında localde ki sitenin çalıştığını göreceksiniz. Şimdi hangi tarayıcıyı kullanıyorsunuz bilmiyorum ama kaynak kodundan yada öğeyi denetle alanından sayfada ki textbox ın adını öğrenmemiz gerek ki değeri atayalım. Öğrendikten sonra birde butonumuzun adını aynı kısımdan öğrenmemiz lazım. Bunları da öğrendikten sonra atl kısımda ki kodlarımız işimizi görecektir. Formumuzda bulunan butona çift tıklayarak alt kısmıda ki kodları yazalım.

 

webBrowser1.Document.GetElementById("textboxın adı").InnerText = textBox1.Text;
foreach (HtmlElement el in webBrowser1.Document.All)
{
if (el.Name == "buton ismi")
{
el.InvokeMember("click");
}
}

ya da;

 

webBrowser1.Document.GetElementById("email").InnerText = epostaAdresi;
webBrowser1.Document.GetElementById("pass").InnerText = sifre;
webBrowser1.Document.Forms[0].InvokeMember("submit");


 

Arakadaşlar kodlarımız bu kadar. Bu kodlar webbrowser içinde ki textbox a bizim formumuza eklediğimiz textboxın içindeki değer gelecek ve butona otomatik şekilde basılacak ve işlem kendiliğinden gerçekleşecek. Tahmin edersiniz ki bunu bir döngüye soktuğumuz da nasıl tehlikeli bir yapı olduğunu görüyoruz.

Arkadaşlar bu kodları yararlı olması için paylaştım kötü amaçlar için kullanmayacağınızdan eminim.

Görüşmek üzere

Osman KURT

Yazılım Geliştirici ve Grafiker