6 Şubat 2018 Salı

url rewrite web.config ayarları PATTERNSYNTAX

<rule name="target redirect" stopProcessing="true" patternSyntax="ECMAScript">
          <match url="^(.*)fiyatlari$" />
          <action type="Rewrite" url="zurna.aspx" />
        </rule>



Yazım Kuralları (patternSyntax)

patternSyntax özelliği ile söz dizimi kuralları belirlenir.


Bu özelliğe desen tanımlamak için aşağıdaki 2 yöntemden birisi kullanılır

  1. ECMAScript (Regex)

    Perl uyumlu (ECMAScript standardına uyumlu) regular expression sözdizimi. Bu, herhangi bir kural için varsayılan seçenektir. EcmaScript ile javascript regular expression aynı şeydir.

    Desen formatı örneği: "^ ([_ 0-9a-zA-Z -] + /)? (Wp -. *)"
  2. Wildcard (Joker)

    IIS HTTP yönlendirme modülünde kullanılan joker karakter sözdizimi

Öneriler (Hangisini Tercih Etmeli)

  1. Regex eşleştirmesi daha güçlüdür, ancak yürütme süresi az da olsa fazladır.
  2. Joker karakter eşlemesi, Regex'den göre performansı daha iyidir ve anlaşılması kolaydır.
  3. Her iki motor da varsayılan olarak büyük-küçük harf duyarlı değildir.
  4. Büyük / küçük harfe duyarlı eşleme, büyük / küçük harfe duyarsız eşleşmeden daha iyi performans gösterir.


---------

İfadelerde kullanabileceğiniz joker karakter kalıplarına bazı örnekler:
K arakterler
Eşleştirmek için kullanın
? veya _ (alt çizgi)
Tek bir karakter
* veya %
Sıfır veya daha fazla karakter
#
Tek bir rakam (0 - 9)
[karakterlistesi]
karakterlistesi içindeki herhangi bir tek karakter
[!karakterlistesi]
karakterlistesi içinde bulunmayan herhangi bir tek karakter
[a-zA-Z0-9].
Herhangi bir alfasayısal karakter
[A-Z]
A-Z aralığındaki herhangi büyük harfler.
Not: Karakter aralığı belirlediğinizde, karakterlerin artan sıralama düzeninde görünmesi gerekir. Örneğin, [Z-A] geçerli bir kalıp değildir.

1 Şubat 2018 Perşembe

OO Javascript te in Operatorü ve hasOwnProperty

Bir nesnede herhangi bir property nin olup olmadığı sorgusu if ile yapılmaz.

// aşağıdaki kod satırı güvenilmezdir if (person1.age) { // do something with age }

Çünkü javascripte if şartında true ve false sonuç döndürürken, true ve false neticesini etkileyen truthy ve falsy değerler vardır.

truthy doğru olarak kabul edilecek tüm değerler anlamındadır. Aşağıdaki değerler true döndürür

  1. an object (nesne), 
  2. a nonempty string (boş olmayan bir dize), 
  3. a nonzero number (sıfır olmayan bir sayı),
  4.  true (doğru)



falsy yanlış olaran  kabul edilecek tüm değerler anlamındadır.  Aşağıdaki değerler false döndürür


  1. değer atanmamış (null),
  2. tanımlanmamış(undefined),
  3. 0, 
  4. yanlış (false),
  5. NaN, 
  6. boş bir dize (empty string)

Örneği hatırlayalım
// aşağıdaki kod satırı güvenilmezdir if (person1.age) { // do something with age }

kişinin yaşı 0 olması durumunda ya da farklı bir örnekte negatif bir sonuç çıkmasında yaş property si olmasına rağmen negatif sonuç verebilir.

Bir property nin varlığını test etmek için daha güvenilir yol in operatörünü kullanmaktır

In operatörü belirli bir adla belirli bir property i arar ve verilen anahtar hash table da mevcutsa bulursa doğru döndürür.

Örnek


var person1 = { name: "Nicholas", sayName: function() { console.log(this.name); } }; console.log("name" in person1); // true1
console.log("sayName" in person1); // true1
console.log(person1.hasOwnProperty("name")); // true
console.log(person1.hasOwnProperty("sayName")); // true

hasOwnProperty metodu in operatörü gibi property nin object içerisinde olup olmadığı testini yapar.

delete person1.name; // true - not output, property i siler
console.log("name" in person1); // false, az önce silindi


Literal Object ile Örnek:
var a={"sayi1":100,"sayi2":125}
undefined
a
("sayi1" in a)
true
a.hasOwnProperty("sayi1")
true









28 Ocak 2018 Pazar

Javascript Undefined ve NULL


undefined, bir değişken bildirildi ancak henüz bir değer atanmamış olduğu anlamına gelir.


 null, bir atama değeridir. Hiçbir değeri temsil etmemek üzere bir değişkene atanabilir.




Ayrıca, undefined ve null iki farklı türdedir:


null bir nesne ise undefined bir türün kendisidir (tanımsızdır).


Atanmamış değişkenler, JavaScript tarafından varsayılan değer olan undefined ile başlatılır.


JavaScript hiçbir zaman null değerini ayarlamaz.


if cümlecikleri
javascriptte dinamil tip çevirme olduğu için  eşitlik karşılaştırması == (iki eşit) yerine === (3 eşit, denk,hem içerik hem tipi aynı olsun anlamındadır) ile yapılır.

eşit değil karşılaştırması != yerine !== ile yapılır.


if (b===undefined) console.log("b undefined dir")

if (a===null) console.log("a nuldur")











Nesne Oluşturmak (Constructing Objects)





1. Kurucu Fonksiyon ile nesne oluşturmak (Constructing an Object with a Constructor Function)

nesne oluşturmanın ilk yöntemidir.


function Book(title, author, published, hasMovie) { this.title = title; this.author = author; this.published = published; this.hasMovie = hasMovie; this.display = function() { console.log(this); }; } var book1 = new Book("The Hound of the Baskervilles", "Sir Arthur Conan Doyl e", 1901, true); book1.display();


Kurucu fonksiyon diğer fonksiyonlara benze fakat kurucu fonksiyonları diğer fonksiyonlardan farklı bir yöntemle çağırırız (invoke ederiz.) new anahtar kelimesini kullanarak çağırırız.

new anahtar kelimesi fonksiyonu kod çalıştırmak yerine kurucu nesne oluşturmak için kullanacağımızı belirtir. (aynı zamanda içerikte bulunan kod çalıştırılır)

Kurucu fonksiyon içinde nesneye atıfta bulunmak için this anahtar kelimesi kullanılır.

this anahtar kelimesi ile belirtilen öğeler publicdir. fonksiyon içinde var ile tanımlananlar ise private dir. Kurucu fonksiyonlarda bilgi gizleme (encapsulation) yapılabilir.

Kurucu fonksiyonlarda return kullanımına gerek yoktur. Javascript programcı yerine otomatik olarak bu işlevi yapar.


Bir fonksyion kurucu fonksiyon olmadan da geriye nesne döndürebilir.

function makeObj() { return { x: 1 }; }
undefined
var myObj = makeObj();
undefined
myObj
Yukarıdaki örnekte makeObj bir kurucu fonksiyon değildir. Çünkü new anahtar kelimesi ile çağırmadık. Normal fonksiyon olarak çağırdık return ifadesi ile literal olarak oluşturulan nesne döndürüldü.

Alışkanlık olarak kurucu fonksiyonlar büyük harfle başlar, normal fonksiyonlar ile küçük harfle başlar.

bir instance in kurucu fonksiyonuna ulaşmak için instancename.constructor yazılır

kapsüllemeye örnek

// constructor function function Website() { // private members var privateUrl = 'http://www.internalpointers.com'; var privatePrint = function() { console.log(privateUrl); }; // public members this.printUrl = function() { privatePrint(); }; };
undefined
var InternalPointers = new Website();
undefined
InternalPointers.printUrl(); // 'http://www.internalpointers.com'
VM25649:7 http://www.internalpointers.com
undefined
InternalPointers.privatePrint(); // TypeError: InternalPointers.privatePrint is not a function
VM26303:1 Uncaught TypeError: InternalPointers.privatePrint is not a function at <anonymous>:1:18
console.log(InternalPointers.privateUrl); // undefined
VM26611:1 undefined
undefined


2. Literal kullanarak nesne oluşturma (Constructing an Object Using a Literal)

singleton class gibidir. Bir kez oluşturulur. new keywordü ile instance almaya gerek kalmadan static class gibi property ve methodlarına dışarıdan erişilebilir.

Tüm öğeleri public dir.

var book2 = { title: "The Adventures of Sherlock Holmes", author: "Sir Arthur Conan Doyle", published: 1892, movie: true,
display: function() { console.log(this); } };



kurucu fonksiyonla oluşturduğunuz nesnenin bir çok örneğini alabilirsiniz (instance). Literal notasyonda ise sadece bir örnek alabilirsiniz. bir nesneyi birden çok oluşturmak gerekiyorsa kurucu fonksiyonla nesneyi oluşturmak gerekir. Sadece bir kez oluşturmak yeterli ise literal notasyon bu işlevi yerine getirir.


3. Genel Bir Nesne Oluşturucu Kullanarak Bir Nesnenin Oluşturulması (Constructing an Object Using a Generic Object Constructor)


Literal nesne oluşturmanın diğer yolu, boş bir nesne ile başlamak lazım oldukça eklemektir.

İki yöntemle boş bir nesne oluşturabilirsin.

var obj1 = { }; var obj2 = new Object();



oluşturdukdan sonra öğe tanımlama
var book3 = new Object(); // same as var book3 = { }; book3.title = "A Study in Scarlet"; book3.author = "Sir Arthur Conan Doyle"; book3.published = 1887; book3.movie = false; book3.display = function() {console.log(this);};

book3.display();
VM27322:7
undefined



4. Dizi Nesneleri Oluşturmak (Constructing Array Objects)

Diziler nesnedir.
dizi nesnesi oluşturmanın iki yolu vardır

a. Array kurucu fonksiyonu
var a1 = new Array();
undefined
a1[0] = 1;
1
a1[1] = 2;
2
a1[2] = 3;
3
[1, 2, 3]

b. Literal notasyon


var a2 = [1, 2, 3];
undefined
a2




Diğer nesneler gibi, dizi için kurucu fonksiyonu incelemek için constructor komutunu kullanabilirsin. a2.constructor




















.

url rewrite web.config ayarları PATTERNSYNTAX

<rule name="target redirect" stopProcessing="true" patternSyntax ="ECMAScript">           <match url...