Yeni Proje : İndirim Kuponu

Yer aldığım yeni proje nu bitirdik. Kasım 2016’da altyapısına başladığımız proje Ağustos 2017 itibari ile bitti.

indirimkuponu.com.tr adresinde yayına aldığımız projede, alışveriş sitelerinde geçerli İndirim Kuponu kodlarına tek yerden erişim imkanı sağlayarak tasarrufa imkan sağlıyoruz.

Nasıl Yapıyoruz?

Alışveriş siteleri, satışlarını optimize etmek için çeşitli indirim ve hediye kampanyaları düzenliyor. Biz de aracı şirketler aracılığıyla alışveriş sitelerinin indirim kuponlarına ve kampanyalarına web sitemizde yer veriyoruz.

Neden Yapıyoruz?

İndirim Kuponu’nu açmaya karar verdik çünkü üssel olarak büyüyen bir pazarda kullanıcıların ihtiyaçlarına düzgün bir şekilde cevap verecek bir altyapı sunmak istedik.

Alışveriş sitelerindeki bu kampanyalar sayesinde ciddi miktarlarda tasarruf sağlamak mümkün.

Neler var?

Hepsiburada, Boyner, Teknosa, Defacto… Türkiye’de hizmet veren aklınıza gelebilecek tüm alışveriş sitelerine ait indirim kuponu ve kampanyalara İndirim Kuponu’nda yer verdik. Giyimden elektroniğe, kozmetikten aksesuara kadar birçok kategoride binlerce indirim kuponundan web sitemiz aracılığıyla faydalanarak ayda yüzlerce lira tasarruf etmeniz mümkün.

Teknik altyapı

Projede ASP.NET MVC altyapısı ve Microsoft SQL veritabanı kullandık. Göz bebeğimiz olan Entity Framework Code First kullanarak zamandan ve emekten kazandık diyebiliriz. Tüm sayfalar HTML5 ile hazırlanmış ve mobil dostudur.

İndirim Kuponu’nu kodlarken nesne tabanlı programlama ilkelerine sadık kaldık. Bunun yanı sıra, Singleton, Abstract Factory, Repository Pattern gibi desenleri de kullanarak güzel bir altyapı sağladık.

https://indirimkuponu.com.tr adresinden İndirim Kuponu projesini inceleyebilirsiniz.

Fazlasını Oku

C# : Bir web sitesinin RSS beslemelerini elde etmek

Merhaba arkadaşlar,
Bir web sitesine girdiğimde tarayıcıda görünen rss simgesi hep dikkatimi çekmiştir. Tarayıcının o web sitesindeki rss beslemelerini nasıl tespit ettiğini hep merak ediyordum. Bugün tesadüfen öğrendim <head> </head> tagleri arasına yazılan birtakım kodlar sayesinde tarayıcılar ve arama motorları bu web sitesinin RSS beslemelerinden haberdar oluyorlarmış.

O kod şöyle;

Bunu öğrendikten sonra girilen url’nin beslemelerini döndüren basit bir uygulama yazdım, bugün onu paylaşacağım.

Öncelikle Nuget’ten HtmlAgilityPack’i projeye dahil etmek gerekiyor. HtmlAgilityPack, html kodlarındaki elementlere Regex ile uğraşmadan erişebileceğiniz kullanışlı bir paket.

  public class Feed
{
public string url { get; set; }
public string title { get; set; }
}

Önce Feed adında bir sınıf yazdım, bu sınfın title ve url adında iki adet property’si var.

   static bool ParseUrl(string url)
{
if (string.IsNullOrEmpty(url))
return false;

if (Regex.IsMatch(url, "^http://", RegexOptions.IgnoreCase))
return true;

return false;
}

ParseUrl metodu girilen url’nin geçerli bir url olup olmadığını kontrol eden, geriye true veya false döndüren bir metot.
Basitçe girilen url boşsa false, http:// ile başlıyorsa true döndürüyor.

  static IEnumerable<Feed> findFeed(string url)
{
HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(url);

var nodes = doc.DocumentNode.SelectNodes("//link[(@type='application/rss+xml' or @type='application/atom+xml') and @rel='alternate']");

var query = from feed in nodes
select new Feed
{
title = feed.Attributes["title"].Value,
url = feed.Attributes["href"].Value
};
return query;
}

Yukarıdaki findFeed metodu ise kendisine parametre olarak gelen url’deki web sitesini htmldocument olarak kaydediyor. nodes tanımamasında ise bu htmldocument içerisindeki yazının başında belirttiğim şablona uyan elementleri HtmlNodeCollection olarak döndürüyor. Son bölümde ise bu koleksiyondan LINQ ile Feed sınıfına ait nesneler üretiyoruz. ve döndürüyoruz.

Ve main metodu:

 static void Main(string[] args)
{
IEnumerable<Feed> feeds;

Console.Write("Url girin: ");
string url = Console.ReadLine();

if (ParseUrl(url))
feeds = findFeed(url);
else
{
Console.WriteLine("Hatalı url girdiniz.");
return;
}


Console.WriteLine("\n" + url + " adresindeki bulunan beslemeler:\n");
foreach (Feed f in feeds)
{
Console.Write("Başlık: {0} URL:{1} \n", f.title, f.url);
}
Console.ReadLine();
}

Kullanıcıdan url isteniyor, url geçerliyse findFeed metodu ile beslemeler bulunup listeleniyor.

Programın çıktısı da şöyle:

Fazlasını Oku