Jquery with Ajax ve Mvc Örnek proje ve kısayollar

http://pluralsight.com/training/Courses/TableOfContents/mvc4-building

http://jquery.com/

http://www.mehmetduran.com/Blog/Kategori.html/jQuery/14

http://pluralsight.com/training/Player?author=scott-allen&name=mvc4-building-m6-ajax&mode=live&clip=0&course=mvc4-building

http://prodinner.codeplex.com/

http://awesome.codeplex.com/

http://www.noupe.com/tutorial/51-best-of-jquery-tutorials-and-examples.html

http://www.asp.net/mvc/tutorials/older-versions/javascript/creating-a-mvc-3-application-with-razor-and-unobtrusive-javascript

 Bir e-book kitabını buradan indirebilirsiniz.

jquery-docs-with-plugins.pdf (189,46 kb)

TSql Veri tabanını yedekleme, geri yükleme(Backup, Restore)

backup ve restore deyimleri ile biz veritabanımızın yedeğinin alırız. Bizim veritabanının yanında ben master veritbanını da yükleminizi öneririm.  Çkü master tablosunda, login nesneleri, Kofigirasyon bilgileri,  Endpointler, User database bilgileri ve sistemin çalıştırılırken gerekli default bilgileri yer alır. Full Backup ve Difransiyel Backup olmak üzere iki türlü backup alınır. Full backup veritbanının tam yedeğini, Difransiyel(fark) backupı ise en son yedekden sonraki değşikliklerin yedeğini geri alır.

backup database master to disk=N'C:\masterbackup.bak'  
go
use master
go

backup database erkanyurek to disk=N'C:\erkanyurek.bak'  
go

backup database AdventureWorks to disk=N'C:\adventureWorks.bak'  
go
-----İşlem sonucu
----Processed 20720 pages for database 'AdventureWorks', file 'AdventureWorks_Data' on file 1.
----Processed 2 pages for database 'AdventureWorks', file 'AdventureWorks_Log' on file 1.
----BACKUP DATABASE successfully processed 20722 pages in 19.309 seconds (8.791 MB/sec).
restore database erkanyurek from disk=N'C:\erkanyurek.bak' with file= 1, replace
go
--işlem sonucu
----Processed 176 pages for database 'erkanyurek', file 'erkanyurek' on file 1.
----Processed 1 pages for database 'erkanyurek', file 'erkanyurek_log' on file 1.
----RESTORE DATABASE successfully processed 177 pages in 0.455 seconds (3.186 MB/sec).

Master veya başka bir veritabanına restore işlemi yapmadan önce aşağıdaki işlemleri yapmanız gerekmektedir.

  1. Service i stop ediniz. Bunun için command prompt ta aşağıdaki kodu kullanabilirsiniz.
    net stop MSSQLSERVER
  2. Service i single-user mode da start ediniz. 
  3. Default instance için command prompt ta aşağıdaki kodu kullanabilirsiniz.
    sqlservr.exe –m 
  4. Named instance için ise command prompt ta aşağıdaki kodu kullanabilirsiniz.
    sqlservr.exe -m -s <instancename>
  5. Şimdi restore işlemini yapacağız. Bu işlemi sqlcmd ile command prompt tan gerçekleştireceğiz. Aşağıdaki SQL script i command prompt ta sqlcmd den sonra çalıştırınız.
    SQLCMD
    RESTORE DATABASE master FROM DISK = 'c:\masterbackup.bak' WITH REPLACE;
    GO
  6. Restore işleminden sonra SQL Server service i stop olup sqlcmd nin çalıştığı ekran kapanacaktır.
  7. SQL Server ı start edin
    net start MSSQLSERVER

Referans :http://turgaysahtiyan.com/

Web Api, Attibute Base Routing

Web api gelişmekte olan bir teknoloji.. Web api ApiControler türeyen bir anlamda MVC deki controler gibi çalışan bir mekanizma. Bize içerek döndüren yapı var. Bire de bu makalede Attirib Base Contoler hakkında bilgi sahibi olmamızı sağlayacak linkleri vereceğim.

http://attributerouting.net/

http://weblogs.asp.net/scottgu/archive/2013/04/19/asp-net-web-api-cors-support-and-attribute-based-routing-improvements.aspx

http://blogs.msdn.com/b/yaohuang1/

WebApiTestClient paket ile bir örnek 

http://blogs.msdn.com/b/yaohuang1/archive/2012/12/02/adding-a-simple-test-client-to-asp-net-web-api-help-page.aspx

LinQ methotlarını uzatılmış ve generic metodlarla yazma

Merhaba arkadalar be bu makalede bazı linq deyimlerinin yaptığı işlemleri yapan yöntemler yazacağım. Burada amacım generic metod ve extention methodları daha iyi kavramak. Linq sorgusunda ben bir anlamda where karşılık gelen bir yöntem yazıyorum.

public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);
public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, int, bool> predicate);

Normalde metadatasına baktığımızda görüldüğü gibi where deyimi aşırı yüklenmiştir. Parametresi Func<> tipinden bir delegedir. Ben burada bir değişiklik yapıp Predicate<T> tipinde bir parametre geçiyorum. Bu delege Func<T,Bool> delegesinin nerdeyse aynısıdır.

 

using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] dizim = { 4, 6, 7, 8, 90, 6, 10 };
            foreach (var item in dizim.Bul(x => x % 2 == 0))
                Console.WriteLine(item);
        }
    }

    public static class ee
    {
        public static IEnumerable<T> Bul<T>(this IEnumerable<T> deger, Predicate<T> sunum) //uzatılmış bir bul yöntemi
        {
            foreach (var item in deger)
            {
                if (sunum(item))
                    yield return item;
            }
        }
    }
}

z

z

z

 

FrameWork 4.5 getirdikleri

http://msdn.microsoft.com/en-us/library/vstudio/ms171868.aspx

 

Generic Method ve IComparable<T> arabirimi

Bazen bir methada farklı tiplerde parametre geçirmek veyadöndürmek isteyebilirsiniz. Bu metodu da bazı koşullu olarak bazı yerlerde kullanmak isteyebiliriz. Bu gibi durmlarda gereric methodlar kullanacağız. IComparable<> arabirimi Compare isminde int değer dondurren bir method içerir.  Bu değer Nesne parametredeki nesneden buyukse 1, eşitse 0, kucukse -1 değer dondurur. Array sınıfının Sort methodu dolaylı olarak bu arabirimi kullanır.

using System;

namespace GenericMethodlar
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 5, b = 26;
            Degistir<int>(ref a, ref b);
            Console.WriteLine("a={0},  b={1}",a,b);

            //a = 7;
            BuyukseDegistir(ref a, ref b);
            Console.WriteLine("a={0},  b={1}", a, b);
        }
        static void  Degistir<T> (ref T sag, ref T sol)
        {
            T gecici;
            gecici = sag;
            sag = sol;
            sol = gecici;
        }
        //şimdide ICompareble arabiriminden kalıtım almış iki nensneyi karşılaştıralım. Koşul her iki nesne karşılatıralaibilr olmalı.
        static void BuyukseDegistir<T>(ref T sag, ref T sol) where T : IComparable<T> 
        {
            T gecici;
            if (sag.CompareTo(sol) > 0)
            {
                gecici = sag;
                sag = sol;
                sol = gecici;
            }
        }
    }
}

 

First(), FisrtOrDefault(), Single(), SingleOrDefault()

Merhaba Arkadaşlar bugun sizlere Linq sorgularınından biribirine benzeyen First(), FisrtOrDefault(), Single(), SingleOrDefault() deyimlerini anlatmaya çalışacağım.

First() deyimi sorgu sonucun ilk değerinin verir, değer yoksa hata verir. FisrtOrDefault() sogu sonucunun ilk değerini verir, sonuc yoksa varsayıla değeri verir. Single() deyimi sorgu sonucunun yine ilk değerinin verir. sonuc yoksa ve birden fazla ise hata verir. SingleOrDefault ise sorgu sonucun ilk değerini verir. Sonuc yoksa default , birden fazla ise hata fırlatır.

int[] urunler = { 3,4,5,6,7,2,3,4,5};
                int us = urunler.FirstOrDefault(x => x % 2 == 0);
                Console.WriteLine(us);
                //sonuc 4
int[] urunler = { 3,4,5,6,7,2,3,4,5};
                int us = urunler.FirstOrDefault(x => x % 12 == 0);
                Console.WriteLine(us);
                //sonuc 0
int[] urunler = { 3,4,5,6,7,2,3,4,5};
                int us = urunler.SingleOrDefault(x => x % 12 == 0);
                Console.WriteLine(us);
                //sonuc 0
int[] urunler = { 3,4,5,6,7,2,3,4,5};
                int us = urunler.SingleOrDefault(x => x % 2 == 0);
                Console.WriteLine(us);
                //sonuc hata fırlatır. fazla sonuc var.
int[] urunler = { 3,4,5,6,7,2,3,4,5};
                int us = urunler.Single(x => x % 12 == 0);
                Console.WriteLine(us);
                //sonuc hata fırlatır.
int[] urunler = { 3,4,5,6,7,2,3,4,5};
                int us = urunler.Single(x => x % 7 == 0);
                Console.WriteLine(us);
                //sonuc 7// tek sonuc var.

Bir sonraki yazımızda görüşmek üzere.

 

http://www.flickr.com/photos/stosh_26/

delegate, Func<T>, Predicate<T> , LinQ ifadeleri

Merhaba, LinQ teknolojisi c# 3.0 ile gelen bir teknolojidir. Bu teknoloji ile uzatılmış methodlar ile tanışmık olduk.  Func<T>, Predicate<T> gibi delegeler yine bizim linq ile gelmiştir. Ben yine sıfırdan başlayacağım. Func<T>, Func<T,TResult> gibi 15, 16 adet çeşidi bulunmaktadır.

http://msdn.microsoft.com/en-us/library/yxcx7skw.aspx bu linkden bu tipleri görebilrisiniz.

namespace delegateAnonimMethodlar
{
    delegate  int delegem(int sayi);
    class Program
    {
        static void Main(string[] args)
        {
            delegem islemyap = new delegem(kub);

           Console.WriteLine(islemyap.Invoke(5));
        }

        static int kub(int sayi)
        {
            return sayi * sayi * sayi;
        }
    }
}

Şimdide aynı kodu AnonysMethod kullanarak yapalım. (İsimsiz yöntemler). İsimsiz methodlar sadece bir iki defa kullanılacak yerlerde kullanılabilir.

namespace delegateAnonimMethodlar
{
    delegate  int delegem(int sayi);
    class Program
    {
        static void Main(string[] args)
        {
            delegem islemyap = delegate(int sayi)
                {
                    return sayi*sayi*sayi;
                };

           Console.WriteLine(islemyap.Invoke(5));
        }
    }
}

Şimdide lambada operatörü kullanarak yapalım..

namespace delegateAnonimMethodlar
{
    delegate  int delegem(int sayi);
    class Program
    {
        static void Main(string[] args)
        {
            delegem islemyap = (sayi)=>sayi*sayi*sayi;
           Console.WriteLine(islemyap.Invoke(5));
        }
    }
}

Şimdi bir sayı dizisinden FindAll methodunu kullanarak  dörde bölünensayıları çekelim.  

namespace delegateAnonimMethodlar
{
    class Program
    {
        static void Main(string[] args)
        {
            var sayilar = new List<int> { 2, 4, 5, 6, 98, 76, 45, 32, 45 };
            var bulunanlar=sayilar.FindAll(bul);
            
            foreach (var item in bulunanlar)
	        {
                Console.WriteLine(item);
	        }
        }
        static bool bul(int sayi)
        {
            return sayi % 4 == 0;
        }
    }
}

Şimdide lambada ifadesiyle aynı işlemi yapalım..

namespace delegateAnonimMethodlar
{
    class Program
    {
        static void Main(string[] args)
        {
            var sayilar = new List<int> { 2, 4, 5, 6, 98, 76, 45, 32, 45 };
            var bulunanlar=sayilar.FindAll(x=>x%4==0);
            
            foreach (var item in bulunanlar)
	        {
                Console.WriteLine(item);
	        }
        }
    }
}

Şimdide linq da kullanılan, where  genişletilmiş metodu ile  Func<> deyimini kullanarak sorgu yazalım.. Func deyiminin farkı birden fazla parametre geçirmemizdir.

static void Main(string[] args)
        {
            var sayilar = new List<int> { 2, 4, 5, 6, 98, 76, 45, 32, 45 };
            var bulunanlar = sayilar.Where(bul);
            
            foreach (var item in bulunanlar)
	        {
                Console.WriteLine(item);
	        }
        }
        static bool bul(int s)
        {
            return s > 10;
        }

Tabii bu ornekde bir parametre kullanıldığı için ve dönüş değeri bool olduğu için  Predicate<> deyiminden pek farkı olmayacak. Tabii örneği kısaltarak yamak çok oğrıu olacaktır.

static void Main(string[] args)
        {
            var sayilar = new List<int> { 2, 4, 5, 6, 98, 76, 45, 32, 45 };
            var bulunanlar = sayilar.Where(s=>s>10);
            
            foreach (var item in bulunanlar)
	        {
                Console.WriteLine(item);
	        }
        }

Bir Örnek daha yapalım..

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace delegateAnonimMethodlar
{
    class Program
    {
           public static void Main()
           {
              Random rnd = new Random();
              var sepet = new List<Urun>();
              sepet.AddRange( new Urun[] { new Urun(1,"elma",12), 
                                                 new Urun(2,"armut",20),
                                                 new Urun(3,"portakala",30),
                                                 new Urun(4,"ayva", 10),
                                                 new Urun(5,"muz",5) } );
              int[] fiyat = { 10, 20, 30, 40 };
              int bul = fiyat[rnd.Next(0, fiyat.Length)];
              Console.WriteLine("Rastgele üretilen fiyat {0}:", bul);
              foreach (var item in sepet.FindAll( x => x.Fiyat  <= bul))
                 Console.WriteLine("{0}: {1}", item.Name, item.Fiyat);
           }
    }
    class Urun
    {
        public Urun(int id, string ad, int fiyat)
        {
            Id=id;Name=ad;Fiyat=fiyat;
        }
        public int Id {get; set; }
        public string Name {get;set; }
        public int Fiyat { get ; set; }
    }
 }

Şimdide msdn.com dan bir örnek ile açıklayalım. Burada point bir struct dır.

using System;
using System.Drawing;

public class Example
{
   public static void Main()
   {
      // Create an array of Point structures.
      Point[] points = { new Point(100, 200), 
                         new Point(150, 250), new Point(250, 375), 
                         new Point(275, 395), new Point(295, 450) };

      // Find the first Point structure for which X times Y   
      // is greater than 100000. 
      Point first = Array.Find(points, x => x.X * x.Y > 100000 );

      // Display the first structure found.
      Console.WriteLine("Found: X = {0}, Y = {1}", first.X, first.Y);
   }
}
// The example displays the following output: 
//        Found: X = 275, Y = 395

Bir sonraki yazımda görüşmek üzeri hoşçakalın.

 

LinQ ile Xml verisi çekme

Arkdaşlar var olan bir xml dosyasından veri çekmek  için şöyle bir kod yazabilriiz. AdvantureWorks veritabanın uygun classlar oluşturarak  yazmak istersek

    public class Customer
    {
        public string CustomerID { get; set; }
        public string CompanyName { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
        public string Region { get; set; }
        public string PostalCode { get; set; }
        public string Country { get; set; }
        public string Phone { get; set; }
        public string Fax { get; set; }
        public Order[] Orders { get; set; }
    }

    public class Order
    {
        public int OrderID { get; set; }
        public DateTime OrderDate { get; set; }
        public decimal Total { get; set; }
    }

      public class LinqSamples
        {
            private List<Customer> customerList;
            public List<Customer> GetCustomerList()
            {
                if (customerList == null)
                    createLists();

                return customerList;
            }

            private void createLists()
            {

                // Customer/Order data read into memory from XML file using XLinq:
                customerList = (
                    from e in XDocument.Load("Customers.xml").
                              Root.Elements("customer")
                    select new Customer
                    {
                        CustomerID = (string)e.Element("id"),
                        CompanyName = (string)e.Element("name"),
                        Address = (string)e.Element("address"),
                        City = (string)e.Element("city"),
                        Region = (string)e.Element("region"),
                        PostalCode = (string)e.Element("postalcode"),
                        Country = (string)e.Element("country"),
                        Phone = (string)e.Element("phone"),
                        Fax = (string)e.Element("fax"),
                        Orders = (
                            from o in e.Elements("orders").Elements("order")
                            select new Order
                            {
                                OrderID = (int)o.Element("id"),
                                OrderDate = (DateTime)o.Element("orderdate"),
                                Total = (decimal)o.Element("total")
                            })
                            .ToArray()
                    })
                    .ToList();
            }
        }
    }

 Ayrıca LinQ ile xml' de CRUD ve xml dosyası oluşturma ve yazma işlemlerini http://onursalkaya.blogspot.com/search/label/LINQ bu makaleden bilgi alabilirsiniz.

Kaynak: msdn.com

 

Foreach, Enumerable, IEnumerable,IEnumerator, yield operatörü

Bu makalemizde Foreach, yield, IEnumerable, IEnumerator deyimlerin derinlemesine kod yazarak inceleyeceğiz. Fakat ben yine anlatımlara, sonradan ilave edtme düşüncesiyle özet olarak geçeceğim.  

static void Main(string[] args)
        {
            string[] Listem = new string[] { "ali", "ahmet", "mehmet" };
 
            IEnumerable<string> elemanlar = Listem;
            foreach (string eleman in elemanlar)
            {
                Console.WriteLine(eleman);
            }
            //veya
            foreach (string eleman in Listem)
            {
                Console.WriteLine(eleman);
            }
            //görüleceği her iki dongu aynı şeyi yapar. 
            //çünkü elemanlar nesnesiArray bir tiptir elemanlar nesnesi. ve Array sınıfı
            //Array sınıfıda IEnumerable arabiriminden kalıtım almıştır.
            Console.WriteLine(elemanlar.GetType().BaseType.ToString());
        }
    }

Şimdi bir ürün ve sepet classları yazalım ve bunu foreach ile sayacak hale getirelim.

using System;
using System.Collections;
using System.Collections.Generic;

namespace deneme
{
    class Program
    {
        static void Main(string[] args)
        {
            Sepet  urunler = new Sepet();

            foreach (Urun urn in urunler)
            {
                Console.WriteLine(urn.Ad);
            }


            //while kullanarak da  bunu listeleyebilirim.
            IEnumerator sepetim = urunler.GetEnumerator();
            //UrunNumeratorlu sepetim1 = urunler.GetEnumerator() as UrunNumeratorlu;

            while (sepetim.MoveNext())
            {
                Urun urunum = (Urun)sepetim.Current; 
                Console.WriteLine(urunum.Ad);
            }
        }
    }

    class Sepet : IEnumerable
    {
        private Urun[] _urunSepeti;

        public Urun[] UrunSepeti
        {
            get { return _urunSepeti; }
            set { _urunSepeti = value; }
        }

        public Sepet()
        {
            UrunSepeti = new Urun[]
            {
                new Urun(1, "elma"),
                new Urun(2, "portakal"),
                new Urun(3, "Muz"),
                new Urun(4, "Kiraz")
            };
        }

        public IEnumerator GetEnumerator()
        {
            return new  UrunNumeratorlu(_urunSepeti);
        }
    }


    class Urun
    {
        private int _id;
        private string _ad;

        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        public string Ad
        {
            get { return _ad; }
            set { _ad = value; }
        }

        public Urun(int id, string ad)
        {
            Id = id;
            Ad = ad;
        }
    }
    class UrunNumeratorlu : IEnumerator
    {
        private Urun[] _Urunler;
        int _index;

        public UrunNumeratorlu(Urun[] urunler)
        {
            _Urunler = urunler;
            Reset();
        }

        public object Current
        {
            get { return _Urunler[_index]; }
        }

        public bool MoveNext()
        {
            return ++_index < _Urunler.Length;
        }

        public void Reset()
        {
            _index = -1;
        }
    }
}

Şimdi de UrunNumeratorlu bir sınıf yazmamıza gerek kalmadan yield operatorunu kullaran da aynı şeyi yapabiliriz.  Adeta Enumarator için yazılmış bir deyimdir.

public IEnumerator GetEnumerator()
        {
            for (int i = 0; i < UrunSepeti.Length; i++)
                yield return UrunSepeti[i];
        }

Artık bu satırdan sonra UrunNumeratorlu clasına yapmaya gerek kalmadı. Yield operatörünü açıklayan bir örnek daha yapalım.z

class Program
    {
        static void Main(string[] args)
        {
            foreach (int item in Tekler(3,19))
            {
                Console.WriteLine(item);
            }
        }

        static IEnumerable Tekler(int x, int y)
        {
            for (int i = x; i < y; )
            {
                i += 2;
                yield return i;
                
            }
        }
    }

Ekran çıktısı 5-19 arasındaki tek sayılar olacaktır. Şİmdi son bir örnek yapalım. msdn.com adresinden biraz alıp, düzenlediğim bir örnekle makalemizi noktalayalım.

 

using System;
using System.Collections;
using System.Collections.Generic;


namespace deneme
{
    class Program
    {
        static void Main(string[] args)
        {
            var urunler = new Urunler();

            foreach(Urun urun in urunler.SonrakiUrun)
            {
                Console.WriteLine(urun.Ad);
            }

        }
    }

   public class Urun
   {
        public int Id  { get;set;}
        public string Ad { get ; set; }
   }


    public class Urunler
    {
        public IEnumerable<Urun> SonrakiUrun
        {
            get
            {
                yield return new Urun { Id = 1, Ad = "elma" };
                yield return new Urun {Id=2,Ad= "armut"};
                yield return new Urun {Id=3,Ad= "çilek"};
                yield return new Urun {Id=4,Ad= "kiraz"};
            }
        }
    }
}

 Şimdi de gereric IEnumerable<T> gereic arabiriminden kalıtım aldıralım.

namespace generic
{
    class Program
    {
        static void Main(string[] args)
        {
            Sepet sepet = new Sepet();
            foreach (var item in sepet)
            {
                Console.WriteLine(item.Ad);
            }
        }
    }
    class Urun
    {
        public int id { get; set; }
        public string Ad { get; set; }
        public  double Fiyat { get; set; }
    }
    class Sepet :IEnumerable<Urun>
    {
        Urun[] urunler;
        public Sepet()
        {
            urunler = new Urun[] { 
                new Urun{ Ad="elma", Fiyat=45, id=1},
                new Urun{ Ad="potiş", Fiyat=15, id=2},
                new Urun{ Ad="ssss", Fiyat=25, id=1}
            };
        }
        public IEnumerator<Urun> GetEnumerator()
        {
            for (int i = 0; i <urunler.Length; i++)
            {
                yield return urunler[i];
            }
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return this.GetEnumerator();

        }
    }
}

 Bir sonraki yazımızda görüşmek üzere.

 

The file '/Custom/Widgets/Calendar/widget.cshtml' does not exist.The file '/Custom/Widgets/Category list/widget.cshtml' does not exist.The file '/Custom/Widgets/Tag cloud/widget.cshtml' does not exist.The file '/Custom/Widgets/Page List/widget.cshtml' does not exist.The file '/Custom/Widgets/Month List/widget.cshtml' does not exist.