29 Nisan 2016 Cuma

Node.js 'de Sipariş Oluştur ve Gönder -10


function siparisOlustur(siparisNo) {
   
console.log("Müşterinin Sipariş Numarası: ", siparisNo)
   
siparisiHazirlaVeGönder(function () {
       
console.log("Gönderilen Sipariş: ", siparisNo);
   
});
}

function siparisiHazirlaVeGönder(fonksiyonuÇağır) {
   
setTimeout(fonksiyonuÇağır, 5000);
   
//SetTimeOut'un anlamı: Hey program; debug'a başladıktan 5 saniye sonra beni aktif et.
    // Beni aktif edene kadarki süreçte kendi işlerine devam et.
}
siparisOlustur(1);
siparisOlustur(2);
siparisOlustur(3);
siparisOlustur(4);
siparisOlustur(5);

Sonuç:
Müşterinin Sipariş Numarası:  1

Müşterinin Sipariş Numarası:  2

Müşterinin Sipariş Numarası:  3

Müşterinin Sipariş Numarası:  4

Müşterinin Sipariş Numarası:  5

Gönderilen Sipariş:  1

Gönderilen Sipariş:  2

Gönderilen Sipariş:  3

Gönderilen Sipariş:  4

Gönderilen Sipariş:  5

Program ilk başladığında, Müşterinin Sipariş Numarası (5 adet sipariş numarası) yazdırıldı.
SettimeOut komutundan dolayı; Gönderilen Siparişler (5 adet sipariş) program çalıştıktan 5 saniye sonra yazdırıldı.


Node.js 'de Veri Yazdırma -9

var kisi = {
    isim:"Ahmet",
    soyisim: "Öz",
    numara: 66
}
console.log(kisi);
console.log(kisi.isim);
console.log(kisi.soyisim);

function toplama(a,b) {
    return a + b
}

console.log(toplama(3,7));
console.log(toplama(5,(kisi.numara)));
console.log("Sayıların toplamı = " + toplama(5,(kisi.numara)) + "'dir " +
 "(" + 5 + " + " + kisi.numara + " = " + (5 + kisi.numara) + ")");

function boşFonksiyon() {};
console.log(boşFonksiyon());
console.log(toplama(kisi.isim, kisi.soyisim));
Sonuç:

27 Nisan 2016 Çarşamba

Csharp'ta Varsayılan Değer Atama -8

Csharp’ta; oluşturulan bir class’ın property’lerine nasıl varsayılan değerler (default values) atanılacağı gösteriliyor:

using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Text;

namespace asd
{
    class Program
    {
        public class Kisi
        {
            public int Id;
            public string Name;
            public string Gender;
            public string City;
            public Kisi()
            {
                Name = "Ahmet"; //2
                Gender = "Erkek"; //2
            }
            //Kisi _kisi = new Kisi();
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Welcome");
            var kisi1 = new Kisi();
            kisi1.City = "ankara"; //1
            Console.WriteLine("Mainstream'desin");
            Console.WriteLine(" ");
            Console.WriteLine(kisi1.Name); //varsayılan olarak 2 nolu kısımda yazıldı
            Console.WriteLine(kisi1.Gender); //varsayılan olarak 2 nolu kısımda yazıldı
            Console.WriteLine(kisi1.City); //1 nolu kısımda elle yazıldı
            Console.WriteLine();

            var kisi2 = new Kisi(); //
            Console.WriteLine(kisi2.Name); ////varsayılan olarak 2 nolu kısımda yazıldı
            Console.WriteLine(kisi2.City); ////varsayılan olarak City property'sinde veri yok. O yüzden Null olacaktır.
            Console.ReadKey();
        }
    }
}


Indexer in C#

 İndexer, bir class'ın array gibi davranmasını sağlar.


using System; namespace CodeInConsole { class IndexerCreationClass { private string[] val = new string[3]; public string this[int index] { get { return val[index]; } set { val[index] = value; } } } class main { public static void Main() { IndexerCreationClass indexerCreationClass = new IndexerCreationClass(); // Yukarıya dikkat edelim. IndexerCreation, aslında bildiğimiz klasik bir class. // Ama aşağıda bu class'ı string array'ı gibi kullanıyoruz. // Aşağıda klasik bir class olan IndexerCreation'un bir objesinin // nasıl bir array gibi davrandığını görüyoruz. indexerCreationClass[0] = "Text 1"; indexerCreationClass[1] = "Text 2"; indexerCreationClass[2] = "Text 3"; Console.Write("Printing values stored in objects used as arrays\n\n"); Console.WriteLine("First value = {0}", indexerCreationClass[0]); Console.WriteLine("Second value = {0}", indexerCreationClass[1]); Console.WriteLine("Third value = {0}", indexerCreationClass[2]); } } }

26 Nisan 2016 Salı

Unable to update database to match... -5

Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration.

Database’de değişiklik yapıldığı halde, database’i update etmezsek bu hatayla karşılaşabiliriz.
Automatic Migration disabled olduğunda da bu hatayla karşılaşırız. Automatic Migration’u Enable yaptığımızda, güncellemeler otomatik olarak yapılır ve bu hatayla karşılaşmayız.

Ayrıca Package Manager Console’a update-database yazarak, db’yi güncelleyebilir ve bu hatayı giderebiliriz.

Database’i update etmek, database’deki bazı verilerin kaybolmasına yol açabilir. Bu durum, update-database komutunun çalışması konusunda kullanıcıyı uyaracaktır ve komut çalışmayacaktır. Eğer, verilerin kaybolmasını göze alıyorsak:
update-database -Force komutunu kullanarak database’i “kaba kuvvet uygulayarak” güncelleyebiliriz.

Bu gibi hataları aşmak için, elle yeni bir migration eklememiz de gerekebilir. Yeni migration eklemek için, Ayrıca Package Manager Console’a  add-migration ÖrnekMigration yazmamız gerekir. ÖrnekMigration yerine, tabi ki istediğimiz herhangi bir text’i girebiliriz.
Kodu çalıştırdığımızda, migration’umuz oluşturulacaktır.

String or binary data would -3

Hatamız: String or binary data would be truncated. The statement has been terminated.

Database'de oluşturduğumuz bir field'ın karakter uzunluğu ile kod tarafında düzenlenmiş olan bu field'ın karakter uzunluğu çakışıyorsa bu hatayı alabiliriz.

Örneğin DB tarafındaki Name field'ı nvarchar(20) ise ve kod tarafındaki Name field'ı 20 değil de örneğin 30 olarak girilmişse bu hata alınacaktır. Bu iki veriyi birbirine eşitlediğimizde sorun çözülecektir.

25 Nisan 2016 Pazartesi

Input string was not in a correct format -2

hata: Input string was not in a correct format.Input string was not in a correct format.

Bu hata birçok şekilde oluşabilir. Bizim projemizde şu durumda karşımıza çıktı;

[DisplayFormat(DataFormatString = "{dd-mm-yyyy}", ApplyFormatInEditMode = true)]
        [Display(Name = "Alış Tarihi")]
        public DateTime SatisTarih { get; set; }

Düzenleme şu şekilde yapıldığında hata ortadan kalktı.

[DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        [Display(Name = "Alış Tarihi")]
        public DateTime SatisTarih { get; set; }

ASP.NET MVC'de Search İşlemi -1

Öncelikle View’da form oluşturmamız gerek. Çünkü arama şartlarını bu form ile Controller’a ileteceğiz.


@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{}

Burada yazdığımız “Index” = Action
“Home”  = Controller’ın adı
Formmethod.Get ise; bu form ile yaptığımız işlemin bir “Get” operasyonu olduğunu gösteriyor.
Arama şartlarını (Kişiye göre ara / Türe göre ara) Radio Buttonlar aracılığıyla seçeceğiz.

@Html.RadioButton("SearchBy", "SearchByBook", true); <text> İsme Göre</text>
    @Html.RadioButton("SearchBy", "SearchByRating") <text> Puana Göre</text>
    @Html.RadioButton("SearchBy", "SearchByAuthor") <text> Yazara Göre</text>
    @Html.RadioButton("SearchBy", "SearchByGender") <text> Türe Göre</text>

RadioButton’un aldığı ilk parametre görüldüğü gibi “SearchBy” olarak girildi.  Yazdığımız “SearchBy”, RadioButton’un ismidir. Bu ismi, Controller kısmında kullanacağız.

RadioButton’un ikinci parametresi de “SearchByBook”. Bu parametre ile, kullanıcının neye göre arama yaptığını (isim,tür,puan vb) anlamış olacağız. Bu arada üçüncü parametre olan “true” ise, bu Radiobutton’un otomatik olarak seçili gelmesini sağlayacak.
Ve bir TextBox ve  “Ara” isminde bir button oluşturalım ve kullanıcının yazdığı veriyi Server’a gönderelim.

@Html.TextBox("SearchTerm")

    <input type="submit"
           value="Ara!" class="buttonSearch" />

Görüleceği üzere; TextBox’un ismi “SearchTerm” olarak girilmiştir. Bu ismi kullanarak, Controller kısmında, kullanıcının TextBox’a yazdığı ve gönderdiği veriyi elde etmiş olacağız. Şimdi Controller kısmına geçelim.

   public ActionResult Index(string searchBy, string searchTerm)
{
if (searchBy == "SearchByBook")
{
Return View(_sampleContext.Books.Where(b => b.BookName.StartsWith(SearchTerm)).ToList)

….

Şimdi ise View ve Controller’da tam olarak ne olup bittiğini anlayalım:

@Html.RadioButton("SearchBy", "SearchByBook", true);

Bu radiobutton un adı SearchBy, değeri ise SearchByBook’tur.
Controller kısmında:

public ActionResult Index(string searchBy, string searchTerm)

String SearchBy yazmıştık. Bu SearchBy parametresiyle; ismi SearchBy olan buttonlarımızın “Value’sini alıyoruz” Örneğin bi üstteki radiobutton’un değeri SearchByBook idi.. Yani kullanıcı eğer bu radiobutton’u seçer ise şayet; biz controller’daki searchBy parametremize SearcyByBook değerini atamış oluruz. SearchBy parametresinde gerçekleşen işlem budur.
String SearchTerm ile ise; kullanıcının TextBox’a yazdığı veriyi çekmiş olduk..

@Html.TextBox("SearchTerm")

Burada gerçekleşen işlem de aynı mantık ile ilerliyor. TextBox’un adını bildiğimiz üzere “SearchTerm” olarak girmiştik. Dolayısıyla kullanıcının TextBox’a yazmış olacağı herhangi bir kelime veya harfi; Controllerda bulunan String SearchTerm parametresine atamış olacağız.

public ActionResult Index(string searchBy, string searchTerm)

Yani ne yapmış olduk? Kişinin neye göre arama yapacağını (türe göre mi, isme göre mi, yoksa puana göre mi) SearchBy parametresine atmış olduk è View kısmında radiobuttonların ismi SearcBy idi ve bu ismi kullanarak seçilen RadioButton’un değerine ulaşmış olduk.

SearchTerm parametresine ise, yine aynı şekilde kullanıcının, SearchTerm isimli TextBox’a yazmış olduğu veriyi, yine Controller’da bulunan String SearchTerm parametresine atamış olduk.

Ve bu parametrelere atanmış olan verileri elde ederek; kullanıcının istediği şekilde olan arama sonuçlarını listeleterek kullanıcıya sunmuş olduk.

Return View(_sampleContext.Books.Where(b => b.BookName.StartsWith(SearchTerm)).ToList)

Kodların derlenmiş hali:

VIEW:
@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
    <b>Ara: &nbsp&nbsp</b>
    @Html.RadioButton("SearchBy", "SearchByBook", true); <text> İsme Göre</text>
    @Html.RadioButton("SearchBy", "SearchByRating") <text> Puana Göre</text>
    @Html.RadioButton("SearchBy", "SearchByAuthor") <text> Yazara Göre</text>
    @Html.RadioButton("SearchBy", "SearchByGender") <text> Türe Göre</text>
    <br />
    @Html.TextBox("SearchTerm")
    <input type="submit"
           value="Ara!" class="buttonSearch" />
}


CONTROLLER:
public ActionResult Index(string searchBy, string searchTerm) 
        {
            if (searchBy == "SearchByBook")
            {
                return View( "abc", _myLibraryContext.Books.Where(x=>x.BookName.StartsWith(searchTerm)).ToList());
            }
            if (searchBy == "SearchByRating")
            {
                return View("abc", _myLibraryContext.Books.Where(n => n.Rating.ToString() == searchTerm));
            }
            else
            {
                return View("abc", _myLibraryContext.Books.ToList());
            }
       }