.Net Developer Mülakat Soruları ve Cevapları

.Net Developer Mülakat Soruları ve Cevapları

Güncel olarak sizlerle en son teknoloji, metodoloji, teknikler, kütüphaneleri ama özellikle mülakatlarda sorulabilecek ve sorulan bilgileri burada paylaşmayı düşünüyorum.

📂 C#

📃 Coalescing Operator Nedir?

Bir değişkenin null olması durumunda eğer Coalescing Operatör’ün ne olduğunu bilmiyorsak alttaki gibi bir kontrol ve null olması durumunda gerekli işlemleri yaparız. Örnek olarak alttaki gibi.

Ama alttaki gibi kolayca Coalescing Operatör’ü kullanılarak tek satırda null check ve varsayılan değer atama işlemini yapabiliriz.

📃 C# Struct ile Class Arasındaki Farklar Nelerdir?

Temelde classlar structların yapabildiği herşeyi yapabilmekte. Peki aradaki temel fark nedir? Bu sorunun cevabı OOP mimarisinde yatmaktadır. struct ile classların arasındaki en büyük fark (OOP’un en güçlü özelliği) kalıtımdır. structlar kalıtımı desteklememektedir. Bu sorunun kısaca cevabı budur. Bu cevaptan sonra diyebilirsiniz ki classlar structların bütün özelliklerini yerine getirebiliyorlarsa o zaman C#’ta structlar neden var derseniz, structlar daha performanslıdır. Yüksek performas gerektiren bazı özel durumlarda class yerine struct tercih edilebilir. Böylece classların referans özelliğinden kaynaklı ek işlemlerin olmamasıyla performans artacaktır.

📃 Abstract class ile Interface Arasındaki Farklar Nelerdir?

  • Interface ve abstract class’lar new anahtar sözcüğü ile oluşturulamazlar.
  • Bir sınıf birden fazla interface’i kalıtım olarak alınabilir ama bir sınıfa bir tane abstract class kalıtım alınabilir.
  • Interface içerisinde boş metodlar tanımlanabilir ama abstract class’larda hem boş metodlar tanımlanabilir hemde içi dolu metodlar tanımlabilir.
  • Abstract sınıflar içerisinde metod gövdeleri tanımlanıp özellik değerleri ayarlandığı için genellikle sonradan geliştirilmek için kullanılıır ama interface ise body ve değer set edilemediği için tamamen interface üzerinden tüm üyeleri implemente edilerek geliştirmelere yapılması gereken durumlarda kullanılır.
  • Abstract class’lar içerisinde sadece abstract olarak işaretlenmiş metod ve özellikler implement edilmek zorundadır fakat interface içerisindeki tüm özellik ve metodlar implement edilmek zorundadır.
  • Bir class bir tane abstract class’ı kalıtım olarak alabilir ama bir class istenilen sayıda interface’i kalıtım olarak alabilir.
  • Interface içerisinde özellik ve metodlarda erişim belirleyiciler kullanılmaz herşey public olarak kabul edilir fakat abstract sınıflarda kullanılabilir.
  • Abstract sınıflara diğer sınıf ve interface’ler kalıtım olarak geçilebilir fakat interface’e herhangi bir yapı kalıtım olarak geçilemez.

📃 C#’da Class’a Farklı Bir Interface Birde Class Inherit Etmem Gerekiyor Sırası Önemli mi?

Evet önemli çünkü bir class’a en fazla bir tane class inherit edilebiliyor ama istenilen sayıda interface inherit edilebiliyor bu durumda eğer class ve interface inherit edecekseniz öncelikle class virgül ile ayırarak diğer interface’lerinizi eklemelisiniz.

Örnek verecek olursak alttaki gibi bir kullanımda “Error CS1722 Base class ‘A’ must come before any interfaces” hatası alacaksınız. Bu hatanın nedenini zaten bir üstteki paragrafta söylemiştik inherit durumunda önce class sonrasında diğer interface’leriniz eklenmelidir.

Yani olması gereken sözdizimi şu şekildedir.

📃 SortedList Nedir?

Sortedlist verileri key-value(anahtar-deger) olarak saklanmaktadır. Sortedlist’in farkı içerisindeki verileri sıralı olarak saklamasıdır. Sıralama key değerine göre asc(a-z) türünde yapılmaktadır. Sıralama metin yada sayısal değer üzerinden yapılabilmektedir.

📃 C# x Özelliği Hangi Versiyonlarda Geldi?

C# özelliklerinin birçoğunun hangi versiyonda kodlarımıza dahil olduğu çoğu zaman bilemeyebiliyoruz ama bu tablodan yola çıkarak hangi versiyonda kodlarımıza dahil olduğunu bilebilirsek geliştirmelerimize bu doğrultuda yön verebiliriz.

VersiyonÖnemli Özellikler
C# 1.0
  • Temel Özellikler
C# 2.0
  • Generics
  • Partial Türler
  • Anonim Metodlar
  • Iterators
  • Nullable Türler
  • Private setters (Özellikler)
  • Method group conversions (delegates)
  • Covariance and Contra-variance
  • Static Sınıflar
C# 3.0
  • Implicitly typed local variables
  • Object and collection initializers
  • Auto-Implemented properties
  • Anonim Türler
  • Extension Metodlar
  • Query Sorguları
  • Lambda Sorguları
  • Expression trees
  • Partial Metodlar
C# 4.0
  • Dynamic binding (late binding)
  • Named and optional Argümanlar
  • Generic co- and contravariance
  • Embedded interop types
C# 5.0
  • Async Özelliği
  • Caller Bilgisi
C# 6.0
  • Expression Bodied Methods
  • Auto-property initializer
  • nameof İfadesi
  • Primary Yapısı Metod
  • catch bloğunda await kullanımı
  • Exception Filtreleme
  • String Interpolation
C# 7.0
  • out variables
  • Tuples
  • Discards
  • Pattern Matching
  • Local Metodlar
  • Generalized async return types
  • throw Expressions

📃 Virtual, abstract, interface, Sealed ve static keywordlerini kısaca açıklayınız.

Interface (Arayüz), İçinde sadece kendisinden türeyen sınıfların içini doldurmak zorunda olduğu içi boş metot tanımlarının yapıldığı bir yapıdır.

Abstract (Soyut), içerisinde normal yani içi dolu metotların, değişkenlerin ve interface’lerdeki gibi abstract (boş) metodların tanımlanabildiği yapılardır.

Sealed: Miras(Inheritance) alınmasını istemediğiniz sınıflar için kullanabileceğiniz bu keyword sayesinde kullanılan class hiçbir şekilde başka bir class’a miras olarak geçilemez. Özetle Sealed, sınıflar için kalıtım yapmayı, üyeler için ise override edilmeyi önler.

Örnek

Üstteki kodu çalıştırdığınızda ‘B’: cannot derive from sealed type ‘A’ hatasını fırlatacaktır. A sealed olarak işaretlendiğinden B’ye miras olarak geçemedim ama sealed olarak işaretlenmiş bir class’a sealed olmayan bir class miras olarak geçilebiliyor.

Örnek

Bu şekilde bir kullanımda herhangi bir sorun çıkmayacaktır.

Static, Yalnızca kendi sınıfı içerisinde yine static olarak tanımlanan yapılarla eşleşebilen global yapılardır.

Virtual (Sanal), Sınıf içerisinde sanallaştırmak istediğimiz yani çakışma durumunda veya gövdesinin gerçekleştirdiği işlemin uygun olmadığını  düşündüğünüz zaman ezmek istediğimiz metot türleridir.

📂 Javascript

📃 JSON (JavaScript Object Notation) Nedir, Nasıl ve Nerede Kullanılır?

Json, Javascript uygulamaları için oluşturulmuş bir veri formatıdır. Javascript Object Notation’ın kısaltmasıdır. Json’ın çıkış amacı veri transferlerinde verilerin XML’den daha az yer kaplamasını sağlamaktır. Şu an sadece Javascript uygulamalarında değil, yazılım geliştirmede kullanılan bir çok teknolojide Json formatındaki veriler tercih edilmektedir.

📃 Pure Javascript Kodlamada Nesne Özelliklerini Döngüye Nasıl Sokarsınız?

Bunun için forin kullanarak nesne özelliklerine döngü üzerinden tek tek erişebilirsiniz. Alltaki örnekte name, surname ve birthday özelliklerine forin ile nasıl ulaşıldığını ve sayfaya çıktı olarak özellik değerini nasıl bastığımızı görebilirsiniz.

📂 ASP.NET

📃 WCF nedir? Neleri içerir?

Windows Communication Foundation, .Net framework 3.0’ın çıkartılmasıyla birlikte, .Net framework ile yazdığınız uygulamaların birbiri ile konuşmasını sağlayan bir kütüphanedir. .Net Remoting, XML Web Servisleri, MSMQ, Net pipe, tcp/ip gibi pek çok farklı yöntemi tek bir çatı altında toplar.

WCF ile geliştirilen servisler, SOAP spesifikasyonu ile HTTP , TCP , MSMQ gibi transfer protokolleri üzerinden sunulmaktadır.

📃 ASP.NET Web Forms ile ASP.NET MVC farklılıkları nelerdir?

İlk maddeyi işin genel özeti olarak yazacağım, gerisini okumak size kalmış.

  • İLK MADDE : Web programlamaya (güncel tabiriyle bulut bilişim) çağımızın teknolojisi diyebiliriz ve web tabanlı bir yazılım geliştirmeye çalıştığımızda karşımıza başlıca iki adet geliştirme dili çıkıyor PHP ve ASP.NET, php şuan konumuz değil onun için ASP.NET üzerinde duracağım. 2 dili de yüksek seviyede kullanan biri olarak, Web Forms ların ortaya çıkış amacı, ileriyi gören Microsoft firmasının, Visual Studio kullanarak masaüstü program geliştiren programcılarını kaybetmemek amacı ile geliştirdiği, programcılarına web programlamayı (server side ve client side) öğretmek yerine Visual Studio ve ASP.Net Web Forms öğreten, fakat öğretirken web teknolojilerinden çok çok uzak bıraktığı bir teknolojidir. MVC (Model-View-Control) ise tüm web teknolojilerini özgürce kullanabileceğiniz, geliştirilmesi kolay ve web programlama geliştirme mantığına uygun bir mimari desendir.
  • ASP.NET Web Forms bir çok hazır kontroller ile kullanıcıya kısa vadede yardım sağlayabilir ancak uzun vadede sıkıntılar ortaya çıkacaktır.
  • MVC de ise bu kontrolleri kendi mantığınız ile yazdığınız için yapabilecekleriniz hayal gücünüzle sınırlıdır.
  • ASP.NET Web Forms da birim test yapmak çok zordur, MVC de ise çok kolaydır.
  • Performans olarak MVC daha verimlidir.
  • ASP.NET Web Forms da tekrar kullanılabilir kodlar yazmak daha zordur, ve kendinizi sürekli tekrar etmek zorunda kalırsınız. MVC de ise bu durum tam tersidir.
  • MVC de HTML üzerinde tam kontrol sağlarsınız.
  • MVC Ekip çalışmasına tam uyumu iken, ASP.NET Web Forms ekip çalışmasına uygun değildir.
  • MVC de SEO ve URL routing işlemleri özünde tanımlıdır.
  • Eğer Hava Durumunu gösterecek basit bir sayfa yapmak istiyorsanız ASP.NET Web Forms kullanmanız sizi hızlandırır.
  • Daha gelişmiş komplike uygulamalar yapmak ve öğrenmek istiyorsanız MVC kullanmanız gerekmektedir.
  • Şuan MVC daha yeni bir teknoloji olduğundan ASP.NET Web Forms kadar kaynağı yoktur.

MVC

Model : Projenin iş mantığının tasarlandığı bölümdür, veritabanı modelleri başta olmak üzere görüntü verebilecek ve işlem yapılabilinecek modelleri burada tanımlarsınız. Bu modelleri projenizde size fazlasıyla yardımı olurlar. Doğrulama (Validation) işlemleri bu bölümde yapılabilinir.

View : Projenin arayüzü veya kullanıcı arabimi de denilebilir (User Interface – UI), Bu bölümde HTML dosyaları üzerinde işlemler gerçekleştirilir.

Control : Projenin akışını, Model ile View arasındaki etkileşimleri kontrol eder. View dan gelen istekler Model yarımıyla yorumlanıp ne yapılacağı konusunda değerlendirilir. Fonksiyonel işlemlerin yapıldığı katmandır.

📃 .Net Core DI Yapısına Enjekte Edilen Tipler için Nesne Yaşam Süreleri

Önceki kısımlarda bahsettiğim gibi kendimize ait tipleri veya harici kütüphanelerden gelen tipleri de ASP.NET Core’un DI yapısına enjekte edebiliyoruz. Bu şekilde tip bağımlılıklarını projenin giriş noktası olan ConfigureServices metodundan yönetmemiz mümkün oluyor.

Yukarıdaki örnekte ILogger tipi için singleton bir nesne oluşturmuştuk. Singleton ile birlikte Transient ve Scoped olmak üzere nesne yaşam süresine karar verebileceğimiz 3 farklı yöntem bulunuyor. Aşağıda bu yöntemleri kısaca açıklamaları bulunuyor:

Transient: Nesneye yapılan her çağrıda yeni bir nesne oluşturulur. Stateless nesneye ihtiyaç duyulan durumlarda kullanılır. AddTransient() metodu aracılığıyla Transient tipinde bağımlılıklar oluşturabiliriz.

Scoped: Yapılan her request’te nesne tekrar oluşur ve bir request içerisinde sadece bir tane nesne kullanılır. Bu yöntem için de AddScoped() metodu kullanılıyor. Transient ve Scoped kullanım şekilleri nesne oluşturma zamanları açısından biraz karıştırılabilir. Transient’da her nesne çağrımında yeni bir instance oluşturulurken, Scoped’da ise request esnasında yeni bir instance oluşur ve o request sonlanana kadar aynı nesne kullanılır. Request bazında stateless nesne kullanılması istenen durumlarda Scoped bağımlılıkları oluşturabiliriz.

Singleton: ASP.NET Core uygulaması başlatıldığında register edilen nesneye ait sadece bir tane instance oluşur ve uygulamadaki her yerden bu referans çağrılır. Uygulama yeniden başlatılana kadar bu nesne referansı kullanılır, farklı bir nesne referansı ikinci kez oluşturulmaz. Bu yöntem için de AddSingleton()metodunu kullanıyoruz.

📃 .Net Core’daki Tag Helper nedir?

.Net Core ile birlikte gelen Tag Helpers (Etiket Yardımcıları), Razor HTML yardımcıları ile yazılan kodu daha markup diline yakın olarak yazılmasını ve View’lerin daha okunabilir olmasını sağlar. Dolayısıyla anlamasını ve geliştirmesini daha kolay hale getirir.

Örnek bir Address adında element nasıl tanımlanır?

<address /> elementi alttaki gibi kullanılabilir olacaktır.

📃 MVC kavramları Nelerdir?

Razor, HttpGet, HttpPost, ViewBag, ViewData, TempData, Controller, View, PartialView, Filter kavramlarını birer cümle ile açıklayınız.

Razor: Asp.Net Mvc 3 teknolojisiyle birlikte gelen görüntüleme biçimidir.

HttpGet: Tarayıcı üzerinden direk olarak sonuç almak istenildiğinde kullanılır. Özel bilgiler bu method türünde gönderilmemelidir.

HttpPost: Kullanıcı girdileri ile sunucuda bir şeyler değiştirmek istendiğinde kullanılır. Özel bilgiler bu method türünde gönderilebilir.

ViewBag: Verilerimizi Controller dan View kısmına aktarmak için kullanırız. ASP.Net MVC 3 ile birlikte gelen yeni ve runtime içerisinde oluşan dinamik bir nesnedir.

ViewData: Verilerimizi Controller dan View kısmına aktarmak için kullanırız. ASP.Net MVC’nin tüm sürümlerinde çalışmaktadır.

TempData: Verilerimizi Controller dan View kısmına aktarmak için kullanırız. View içerisinde veriyi ekran çıktısı olarak görüntüler veya Views‘ler arasında taşır.

Controller: Projedeki tüm işlemlerin (veritabanı işlemleri, hesaplamalar, veri aktarımı v.b) yapıldığı kontrol bölümüdür.

View: Proje tamamlandığında kullanıcının gördüğü arayüzdür.

PartialView: Sayfaların istediğimiz kısmına rahatça ekleyebileceğimiz, özel işlevleri yerine getirebilen, ancak kendi başına çalışmayan, bir sayfanın içerisinde entegre halde çalışan kısımlardır.

Filter: WEB uygulamanıza gelen her bir isteğin arasına girip belirli evrelerinde ihtiyaca göre işlemler yapabilen mekanizmalardır.

📂 Yazılım Genel

📃 Deep ve Shallow Copying Arasındaki Fark Nedir?

Java’da bir nesnenin kopyalanabilmesi için bilinen en basit yöntem. O nesneden sıfır bir nesne daha oluşturarak nesnenin özelliklerini yeni oluşturduğumuz nesneye atmaktır. Örneğin CopyConstructor ile

Bu aslında Java ve C++ Shallow Copy (Sığ Kopyalamaya) karşılık gelen property referanslarının birbirine eşlenmesi anlamına gelirki String, int, float vb. primitiv structure’larda bir ortaklık yok iken Collection, Sub Class vb. kısımların kopyalana iki sınıf tarafından paylaşılması anlamına gelir. Java Object’inde yer alan clone() fonksiyonu da böyle bir kopyalamaya karşılık gelir.

Deep Copy ismindeki kopyalamada ise nesne içerisinde yer alan tüm referanlar için yeni bellek alanlarının alındığı ve en içteki primitiflere kadar kopyalamanın yapıldığı kopyalama türüdür. Bunun için 3 yöntemden birisi tercih edebiliriz.

  • Nesneyi serialize edip bir yerlere yazıp tekrar çekmek,
  • Reflection ile tüm property’leri dönerek yeni property bellek alanlarını alıp, bu alanların değerlerini set etmekdir
  • Yada kendimiz nesne deep copy yapacak şekilde kopyalamayı gerçekleştirmek.

📃 Polymorphism – Polimorfizm (Çok Biçimlilik)

Aynı arayüzden türemiş olan class ‘ların arayüz üzerinden metodlara ve özelliklere set edilerek arayüz üzerinden metod ve özelliklere sınıfın ne olduğunu gözetmeksizin erişilir ve kullanılır hemen basit bir örnekle bakalım bu özelliğe.

Üstteki örnek görüntüde gördüğünüz gibi şekil(IShape) adında bir interface’imiz var bu interface’de draw adında bir metod var. Bu interface’den türemiş olan 3 tane sınıf var Üçgen(Triangle), Rectangle(Kare), Circle(Daire) bunlarda IShape arayüzünden türediğinden draw adında ortak bir metodları var ve artık belirli bir class’ı değil IShape arayüzünden türemiş olan herhangi bir class’ı geçebileceğiz. Buda bizım çok biçimli kuralına uyduğumuzu gösteriyor.

📃 Yazılım Yaşam Döngüsü Nedir? (Software Development Lifecycle)

Yazılım Yaşam Döngüsü Nedir? (Software Development Lifecycle)
Bir yazılım projesinin geliştirilmesi, sadece kodlamadan oluşmamaktadır. Basitçe bir proje geliştirilirken projenin planlama, analiz, tasarım, üretim ve test aşamaları yer almaktadır ve almalıdır. Bu aşamalar bir kere gerçekleştirildikten sonra proje tamamlanmayabilir. Bu aşamaların bir döngü halinde düşünülmesi gerekmektedir. Proje tamamlandıktan sonra gelecek istekler, hata düzeltmeleri, projeye eklenecek yeni modüller vs konular için bu süreç devam etmektedir. Bu döngüye yazılım geliştirme yaşam döngüsü adı verilmektedir.

📃 Http nedir? Neden kullanılır? Http ile neler yapılabilir?

Http, Hyper Text Transfer Protocol (Hiper Metin Transferi Protokolü)  kelimelerinin baş harflerinden oluşan bir kısaltmadır. İnternette sunucular ve son kullanıcılar arasında bilgilerin nasıl aktarılacağına dair kurallar ve yöntemleri düzenleyen bir sistemdir. Web sitelerine ait bilgileri tarayıcınıza indirme işlemi yapar.

📃 SOLID nedir? SOLID başlıklarını kısaca açıklayınız.

Robert Cecil Martin aracılığıyla 2000’li yıllarda hayatımıza girdi. OOP geliştirme yapmak için uyulması gereken bazı kurallardan oluşmaktadır.

  1. (S)ingle Responsibility Principle(Tek Sorumluluk Prensibi): Her method ve class’ın tek bir sorumluluğu olur örnek olarak database işlemleri yapan bir class içerisinde log’lama işlemlerini yürüten işlemler konulmamalı yada loglama class’ımız var ise bu class içerisinde loglama haricinde başka bir şeylerin dahil edilmemesi gerekiyor ve metod’lardada aynı şekilde switch/case ile yönlendirmemek gerekiyor her metodun tek bir sorumluluğu olmalıdır.
  2. (O)pen/Closed Principle(Açık/Kapalı Prensibi): Değişime kapalı ama geliştirmeye açık şekilde kodlamanın kurgulanması gerekiyor mesela bugün log’lamaları xml’de yapıyorsunuz ama bir karar ile loglamanın artık xml’de değilde database’de yapılması istendi varolan kodlarınızda değişiklik değil güncelleme yapılması gerekiyor misal olarak xml log’laması yapan Single Reponsibility kuralına uymuş olan bir class’ınız var ve bu class ILogger arayüzünden türetilmiş Database loglaması yapacak class’ımızda bu arayüzden türetilip metod içerikleri ona göre yazılır böylelik bu değişiklik değil geliştirme olmuş olur. Kısacası Uygulama gelişime açık, değişime kapalı olmalıdır. Yani yeni eklenen bir modül için kodda gereksiz if blokları gibi değişiklikler olmamalıdır. Bunun yerine kalıtım yoluyla sorun çözülmelidir.
  3. (L)iskov ‘s Substitution Principle(Liskov’un yerine geçme prensibi): Liskov’un yerine geçme prensibi alt sınıflardan oluşturulan nesnelerin üst sınıfların nesneleriyle yer değiştirdiklerinde aynı davranışı göstermek zorunda olduklarını söyler. Yani;türetilen sınıflar, türeyen sınıfların tüm özelliklerini kullanmak zorundadır. Eğer kullanmaz ise ortaya işlevsiz, dummy kodlar çıkacaktır. Bu durumda üst sınıfta if else blokları kullanarak tip kontrolü yapmamız gerekebilir ve böylelikle Açık Kapalı prensibine de ters düşmüş oluruz. Interface Segregation Prinsiple kısmında interface’le üzerinden bu konu anlatılırken burada abstract class’lar üzerindeki kullanımdan bahsediliyor.
  4. (I)nterface Segregation Principle(Arayüz ayrımı prensibi): Bir arayüze gereğinden fazla kullanılmayacak özellik eklenmemelidir. Kullanılabilecek özellikler, metodlar eklenerek kullanılmalıdır.
  5. (D)ependency Inversion Principle(Bağımlılığın ters çevrilmesi prensibi): Bu prensibe göre de bir sınıf diğer bir sınıfa doğrudan bağımlı olmamalıdır. Aralarındaki bağ soyut bir kavram üzerinden sağlanmalıdır. Bu soyut kavram interface de olabilir abstract class da olabilir.

Solid’e ek olarak Kiss, Yangi, Dry, Reuse Release Equivalence, Common Closure prensipleri de bulunmaktadır.

Kiss(Keep it Simple Stupid – Basit Aptal Tutmak): Bir problemin birçok durumda birden fazla çözümü vardır ve biz yazılımcılar kendi bilgi/birikimlerimizi en iyi yansıtan, en karmaşık kod yapısını kullanmaya eğilimli olabiliyoruz. Kiss prensibine göre çözümlerimiz mümkün olduğunca sade/anlaşılır olmalı. En basit ve en optimum çözüm yöntemini seçerek uygulama geliştirmeliyiz.

Yangi(You Aren’t Gonna Need It! – Buna ihtiyacım yok!): Yangi prensibine göre, “o an” ihtiyacımız olmayan kodları sisteme dahil etmemeliyiz, ileride eklenebilecek özellikler hakkında öngürüde bulunup ek geliştirmeler yapmamalıyız.

Dry(Don’t Repeat Yourself – Kendinizi Tekrar Etmeyin): Proje içerisinde aynı kodu tekrar tekrar yazıyorsanız dry prensibine uymuyorsunuz demektir. Tekrarlı kod yapısında değişiklik olması, kullandığınız her yerde tek tek değiştirmenizi gerektirebilir ve ayrıca sistemi gereksiz yere karmaşık hale getirecektir. Böyle bir durumda, tekrarlı kodları merkezileştirecek bir çözüm üretmemiz gerekmektedir.

Reuse(Release Equivalence Principle): Sistemde kullanılan paketler/namespace’ler arasındaki bağımlılıkları yönetmek “tekrar kullanılabilir” yapılar kurmakla mümkün olur.

Common Closure(Ortak Kapama Prensibi): Single Responsibility’nin namespace’ler için uyarlanmış halidir. Aynı sebepten değişebilecek sınıflar aynı namespace altında bulunmalıdır. Böylelikle sistemde oluşabilecek değişikliklerin tüm sistemi etkilemesinin önüne geçilmesi amaçlanır.

📃 Library ve Framework kavramlarını kısaca açıklayınız.

Library (Kütüphane), Önceden yazılmış hazır metotların olduğu alandır. İhtiyaca göre projemize dahil eder ve kullanırız.

Framework (Çatı), Önceden hazırlanmış belirli standartlar halinde kütüphanelerin bulunduğu bir iskelettir. İhtiyaca göre projemizi o iskelete dahil edip inşa ederiz.

📃 Nesne ve Sınıf farkı nedir?

  • Sınıf (class) soyut bir veri tipidir. Nesne (object) ise onun somutlaşan bir cismidir.
  • İlk önce sınıf tanımlanır ve kullanılmayı bekler, biz o sınıftan bir nesne türetirsek artık o sınıf bir anlam taşımaktadır,
  • Sınıflar genelde şahıs, yer ya da bir nesnenin ismini temsil ederler,
  • Sınıflar methodları ile nesnelerin davranışlarını, değişkenleri ile ise nesnelerin durumlarını temsil ederler.
  • New operatörü ile daha önce oluşturulan sınıftan bir nesne yaratılır,
  • Yaratılan nesne içerisine sınıfımızın bize sağladığı kullanım alanlarını kullanarak nesnemizi oluşturup kullanmaya başlayabiliriz,
  • Örnek vermek gerekirse, Ağaç bir sınıftır, alt sınıf ise ne ağacı olduğunu belirtebilir, mesela elma ağacı örneği verirsek, mevcut sınıfın özelliklerinde meyve olan elmanın özelliklerinden tutunda ağacın dal sayısına kadar çeşitli parametreler veya ağacın yıllık üretim miktarını hesaplayan metotlar olabilir,

Detaylı Açıklamalar;

Gerçek hayat problemleri sınıf şablonları kullanılarak bilgisayar ortamına daha kolay ve anlaşılabilir bir biçimde aktarılabilir.

Sınıflar ve kodlar düzenli bir biçimde saklanarak zaman kaybı yaşanmaz.

Nesne yönelimli programlamada herhangi bir projede kullanılmak üzere yaratılan bir sınıf başka projelerde tekrar kullanılabilir.

Düzgün arabirimlerle birleşen sınıflar yaratabilir ve bu sınıfların birbirlerini minimum düzeyde etkileyecek şekilde programlar tasarlanarak birimsellik özelliğinden faydalanılabilir.

Sınıf yapısı

Metotlar üç ayri erisim kuralına göre tanımlanabilir. Bunlar public, protected ve private olarak adlandırılmıştır. Metotların bir geri dönüş değeri de vardır. Bir metodun geri dönüş değerinin boş olması istendiğinde bir prosedür ya da bunun mümküm olmadığı dillerde boş veri türü olan void kullanılmaktadır.

Verileri de metotlar da olduğu gibi üç erişim kuralı ile tanımlanabilir.

Yapıcı ve yıkıcı metotlar (constructordestructor) otomatik olarak sistem tarafından çağrılır. Yıkıcı metotlar, nesnelerin bellekten silinmesi sırasında çağrılır. Böylece işi biten nesne için bellekte ayrılmış olan kısım, yeni nesneler için tekrar kullanılabilir. Yıkıcı metotlar hiçbir parametre almaz ve değer döndürmez.

Arayüz ve metotlar

Nesneler, dış dünya ile etkileşimlerini metotlar aracılığı ile tanımlarlar. Metotların içinde bulundukları nesnenin verilerine özel erişim hakları vardır. Nesnenin verilerini işleyen ve görevlerini yerine getiren bu metotlar, o nesnenin davranışı olarak kabul edilir. Metotlar, dış dünya ile nesnenin arayüzünü oluşturur. Örneğin televizyonun önündeki düğmeler, televizyonun içinde bulunan elektrik tesisatı ve kullanıcı arasındaki arayüz olarak kabul edilir. Bu düğmeye basarak televizyonu açıp kapatabilir veya başka bir işlev yerine getirilebilir. Bu örnekteki her metot bir düğme tarafından temsil edilmektedir ve birlikte bütün butonlar televizyon nesnesinin arayüzünü içerirler.

Arayüzlerin yardımcı metotu olarak bilinen statik metot (İng. static method) ise içinde tanımlanmış olduğu sınıfa aittir. Statik metot, nesnelere ait olan bir metot (İng. instance method) ile aynı erişim hakkına sahip degildir. Bir statik metodun ait olduğu sınıftan türemiş olan nesnelerin verilerine bu statik metodun erişme hakkı yoktur. Statik metot, ancak ait olduğu sınıfın statik verilerine erişebilmektedir. Televizyon sınıfından türemiş olan televizyon neslerinin sayısını bulmak ise televizyon sınıfında bulunan statik metoda ait bir görev olduğunu örnek olarak verebiliriz.

📃 Design Pattern Nedir ve Pattern Çeşitleri Nelerdir?

Creational – Yaratıcı Tasarım Desenleri

Singleton Pattern

Bu tasarım deseninde, bir sınıfın sistem içinde yalnızca bir tane nesnesi oluşturulabilir. Tek bir arayüz sunularak, bu nesneye yalnızca buradan erişim sağlanabilir. Bu desen kullanılarak, sistem içinde değeri değişmeyen, genel değişkenler bu oluşturulan tek nesneye konulabilir. Sistemde tek nesne yaratılabilme, statik değişken ve yordamlar sayesinde olur. Statik değişken ve yordamlar, nesneye dayalı programlanın esnekliğini, dinamik nesne yaratılma özelliklerini engellediği için bazı yazılım mühendisleri tarafından eleştirilebilir.

Builder Design Pattern

Factory Pattern

Fabrika yordam tasarım deseni, nesne yaratma sorumluluğunun bir yordama verilmesidir. Yaratılan nesne, bir sınıf hiyerarşisindeki alt sınıflardan biridir. Hangi alt sınıfın yaratılacağı kararı fabrika yordam içinde verilir. Bu yordam ile belirli bir sınıf hiyerarşisindeki alt nesnelerden birinin yaratma sorumluluğu belirli bir arayüze verilerek sistemden soyutlanmış olur. Böylece nesneleri yaratma kodlarında, kod tekrarları önlenmiş olur. Sistem içinde sınıfların yaratılacağı yer tek olduğu için, ilgili mantıklar tek bir yerde toplanabilir.

Var olan bir nesneden, kopyalama yöntemi ile yeni nesne yaratmak için bu tasarım deseni kullanılır. Nesne yaratmak için “new” operatörü kullanılmaz. Yazılım dillerindeki “clone” gibi, nesne kopyalama yordamlarından faydalanılır. Örneğin java programlama dilinde, bir nesnenin kopyalanabilmesi için, nesnenin “Cloneable” arayüzünden türemiş olması gereklidir.

Prototype(Kopya Nesne)

Bazı nesneler çok büyük olup, çok kaynak harcıyor olabilir. Bu nesnelerin yeniden yaratılması yerine, klonlanması performans ve kaynak kullanımı açısından tasarruf edilmesine yarar. Bu durumlarda “Kopya Nesne” tasarım deseni kullanılabilir.

Behavioral – Davranışsal Tasarım Desenleri

Visitor Pattern: Bu örnekte, bir şirkette çalışan Personel hiyerarşisi bulunmaktadır. Bu hiyerarşide, İşçi ve Yönetici alt sınıfları vardır. Bu sınıf hiyerarşisinde farklı işlemler yapabilmek için ziyaretçi tasarım deseni kullanılacaktır. Bu işlemler maaş hesaplama ve çalışma saatlerini düzenleme işlemleridir. Bunun için PersonelZiyaretçisi üst sınıfı yaratılır. Farklı tipteki maaş hesaplama ve çalışma saati hesaplama işlemleri için de MaaşHesaplamaZiyaretçisi ve ÇalışmaPlanıZiyaretçisi alt sınıfları yani ziyaretçi sınıfları oluşturulur. Bu ziyaretçi sınıfları işçi ve yönetici sınıfları üzerinde çeşitli işlemler yapabilirler. Sistemi deneyen Şirket istemci sınıfı da örnekte yer alır.

Structural – Yapısal Tasarım Desenleri(Objeler arası iletişim kurulması)

Repository Pattern: Tek bir amaca hizmet eden işlemler için kullanılmalıdır Solid – Single Responsibility kuralı burada hemen öne çıkıyor .Net ortamında özellikle her entity için klasik yapılan Find, Add, Delete, Create işlemleri haricinde yapılacak ekstra işlemler ilgili entity’e özel oluşturulmuş repository içerisinde yapılmalıdır Repository sadece Entity nesneleri için kullanılması gereken bir yapı değildir amacı tek bir iş olan tüm işlemler için kullanılabilir.

UnitOfWork Pattern: Entityframework’de sıklıkla kullanılan entity nesneleri ile tablolara erişmemizi sağlayan tüm DbSet<T> türündeki özellikler DbContext arayüzünden türemiş bu UnitOfWork tasarım desenini kullanmış Context sınıfı üzerinden db işlemlerimizi gerçekleştiririz aynı mantıkta Repository’lerimizide UnitOfWork yapısı üzerinden erişerek kolay kullanılabilir, erişilebilir ve anlaşılabilir bir yapı oluşturabiliriz.

📃 Referance ve Value Type nedir?

Value Type, Bilgileri hafızanın stack bölgesinde direk olarak saklayan nesnelerdir. Null değer alamazlar. Char, Bool örnek verilebilir. Çoğu yerde Value Type için eş anlamlı olduğundan Primitive Type’da denmektedir.

Referance Type, Bilgileri hafızanın stack bölgesinde tutar yalnız heap bölgesinde bir referans değeri tutar. Null değer alabilir. String, Class örnek verilebilir.

📃 Compiler Nedir?

Compiler (Derleyici), Herhangi bir programlama dilinde yazılmış kaynak kodlarını, makine koduna çeviren uygulamadır.

📂 Veritabanı Genel

📃 Left Right Inner ve Outer join arasındaki farklar nedir?

  • Leftjoin adında anlaşılacağı üzere sol yani ana tablonun yanına birleştirilecek tabloyu getirmenizi sağlar, Örnek verecek olursak, bir personel tablonuz var id isim ve mail alanlarından oluşan birde maaşlar tablonuz var içinde personel id ve maaşı şeklinde, sorgumuzda personelin adının yanına maaşlarını getirmek istiyorsak personel left join personel_maaslari şeklinde kullanmamız gerekir
  • Rightjoin ise yukarıdaki anlatılan örneğin sol değil sağdaki tablo üzerinden işlem yapılmak istenirse kullanılır.
  • Left ve Right joinin temel farkı, left joinde personel tablonunda 5 id li bir personel var fakat maaşları tablosunda ise bunun karşılığı yok “personel” left join kişiyi getirir fakat maaşı kısmını null olarak yazar,
  • Right join ise tam tersi olarak kullanırsınız, tüm maaşları listeler ve karşılığı var ise personel getirir yok ise null atar.
  • Innerjoin ise leftjoin ve right joinden farklı olarak, personel ve maaşları tablosunda sadece eşleşen alanları getirir, yani gösterilen veriler içinde personelin kendisi ve maaşı mutlaka olması gerekir eğer birinden biri yok ise o personel veya maaşından hiçbir detay göremezsiniz.
  • Outerjoin ise inner joinin tam tersi olarak kullanılır, iki tablo arasından eşleşmeyen veya boşta kalan verileri listelemeye yardımcı olur.

Detaylı açıklamalar;

sql_joins

Inner Join

Çok basit olarak inner join bir-e-bir join anlamına gelmektedir. İki tablonuz olduğunu düşünün TabloA da Alan1 adlı bir alanınız var bu alanda A,B,C değerleri var,
TabloB de Alan1 de ise A,B,K değerleri var.

Eğer iki tablo arasında inner join kurarsanız sonuç ta dönecek listede sadece A ve B değerleri olacaktır. Çünkü inner joinde yanlızca eşit olan kayıtlar döner.


Outer Join

Çok basit olarak outer bir-e-çoklu join anlamına gelmektedir (MsSQL Server da çok-a-çoklu join de kurulabilmektedir). İki tablonuz olduğunu düşünün TabloA da Alan1 adlı bir alanınız var bu alanda A,B,C değerleri var, TabloB de Alan1 de ise A,B,K değerleri var.

Eğer iki tablo arasında outer join kuracaksınız ve sizin için TabloA daki tüm kayıtlar TabloB de ise sadece TabloA da bulunanlar gelir.

Left Outer Join

Join kelimesinin sol tarafındaki tabloyu baz alarak eklemek için kullanılır.

Right Outer Join
Join kelimesinin sağ tarafındaki tabloyu baz alarak eklemek için kullanılır.


Full Outer Join (MySQL için Cross Outer Join)

Her iki tablodaki tüm verileri getirmek için kullanılır.


Join’ nin sade halinde kullanılan “*” karakteri ise sadece Ms SQL Server’a özeldir. Oracle da ise bu karakter yerine “(+)” işareti kullanılmaktadır ve alan isimlerin sonuna bir boşluk bırakarak yazılır.

Örnek olarak : WHERE TabloA.Alan1 = TabloB.Alan1 (+)

OUTER cümlesi kullanılmasada olur. (Left Join gibi)

📃 DDL, DML, DCL, TCL Nedir?

DDL (Data Definition Language) Nedir?

Veri Tanımlama Dili (DDL) deyimleri tabloları, veritabanı yapısı veya şema tanımlamak için kullanılır.

Bunlardan bazıları;

CREATE – Veritabanındaki nesneleri oluşturmak için kullanılır.
ALTER – Veritabanı nesnelerinin yapısını değiştirmek için kullanılır.
DROP – Veritabanındaki nesneleri silmek ya da başka bir ifadeyle ilgili nesneleri bütünüyle kaldırmak için kullanılır.
TRUNCATE – Kayıtlar için ayrılan tüm boşluklar dahil, bir tablodaki tüm kayıtları kaldırılır
COMMENT – Veri sözlüğüne yorum eklemek için kullanılır.
RENAME – Bir nesneyi yeniden adlandırmak için kullanılır.

DML (Data Manipulation Language) Nedir?

Veri İşleme Dili (DML) deyimleri tablo ya da şema nesneleri içindeki verileri yönetmek için kullanılır.

Bunlardan bazıları;

SELECT – Veritabanından kayıt çekmek için kullanılır.
INSERT – Tabloya kayıt ya da kayıtları eklemek için kullanılır.
UPDATE – Tablodaki kayıt ya da kayıtları güncellemek için kullanılır.
DELETE – Tablodan kayıt ya da kayıtları silmek için kullanılır (Veriler silinse de ancak kapladığı alan kalır)
MERGE – UPSERT işlemi (ekleme veya güncelleme), başka bir ifadeyle birleştirme yapar.
CALL – PL/SQL veya Java alt programını çalıştırır.
EXPLAIN PLAN – Verilere erişim yolunun detaylarını açıklamak için kullanılır.
LOCK TABLE – Kontrolü eş zamanlılığı sağlamak için kullanılır.

DCL (Data Control Language) Nedir?

Veri Kontrol Dili (DCL) deyimleri yetkilendirme ya da ayrıcalıkları belirlemek için kullanılır.

Bunlardan bazıları;

GRANT – Belirli bir kullanıcı ya da gruba veritabanının belirtilen nesnelerine erişim ayrıcalıklarını verir.
REVOKE – GRANT komutu ile verilen ayrıcalıkların bir kısmını ya da tümünü geri almak için kullanılır.

TCL (Transaction Control) Nedir?

İşlem Kontrol (TCL) deyimleri DML ifadeleri tarafından yapılan değişiklikleri yönetmek için kullanılır.

Bunlardan bazıları;

COMMIT – Yapılanları kalıcı hale getirir. İşin tamamlanmasını sağlar.
SAVEPOINT – Daha sonra geri dönülecek bir dönüş noktası belirler.
ROLLBACK – Son COMMIT’e kadar olan yeri geri alır.

📃 SQL’de deadlock nedir? Nasıl Çözülebilir?

Veritabanına gönderilen iki ayrı işlemin birbiri ile bağlantılı olup ikisininde görevinin yapma koşulunun diğer işlemin sonucuna bağlı olması, diğer işlemin bitmesini beklemesi gerektiği yani sonsuz bekleyişe girilen ölümcül kilitlenme durumudur. Bu işlemler önceden tespit edilip deadlock durumunda daha önemli görülen işleme öncelik atanarak çözümlenebilir.

📃 SQL’de CLE (Common Table Expression) nedir?

CLE, Bir sorgunun yürütülmesi anında elde edilmiş geçici sonuçları bir veya daha fazla kere kullanılmasını sağlayan ortak tablo ifadelerdir. En önemli özelliği kendi kendini çağırabiliyor olması ve aynı sorgu içerisinden birden fazla çalıştırılabiliyor olmasıdır. Daha çok recursive(Öz-yinelemeli) işlemler için geliştirilmiştir.

📃 SQL’de index nedir? Neden kullanılır?

index, ilişkili tablonun indexleme alanı olarak kullanılan kolondaki verilere göre sıralanmış biçimde işleme konulmasını sağlar. SQL’de sorguların geç cevap vermesi durumunda kullanılır.

📃 Rapor response süresi nasıl kısaltılır?

Bir rapor hazırladığınızı düşünün, 10 ilişkili tablo joinlenmiş durumda. Bu rapor saniyede 100.000 request alıyor. Response zamanı 45 sn. Bu raporun response zamanını kısaltmak için neler yapılabilir?

Index, Rebuild, Reorganize, BTree, Join ve Subquery’ler detaylı incelenmeli, kullanımları kontrol edilmeli, Order By için kullanılan alanlar kontrol edilmeli yada kullanılması zorunlu değilse order by kaldırılmalı, gereksiz joinler temizlenmeli, where kısmında olabildiğinde key veya index’li alanlar kullanmaya özen gösterilmelidir.

📂 SQLSERVER

📃 SqlServer Veri Tipleri ve Boyutları Nelerdir?

Bigint: -9,223,372,036,854,775,808 ile 9,223,372,036,854,775,807 arasındaki sayıları tutar. 8 baytlık yer kaplar.
Int: -2,147,483,648 ile 2,147,483,648 arasındaki sayıları tutar. fiziksel olarak 4 baytlık yer kaplar.
Smallint: -32,768 ile 32,767 arasındaki sayıları tutar. 2 baytlık yer kaplar.
Tinyint: 0 ile 255 arasındaki sayıları tutar. 1 baytlık yer kaplar.
Decimal (x,y): Boyutu 5 ile 17 byte arasında değişir. ondalıklı sayıları tutmaya yarar. İki parametre alır. İlk parametre (x) sayının kaç karakter uzunluğunda olacağını, ikinci parametre (y) ise bu karakterlerin kaçının ondalık kısım olduğunu ifade eder. Örneğin decimal(5,2) şeklinde tanımlanan bir değişken 123,45 değeri alabilir.
Numeric (x,y): Kullanımı ve özellikleri decimal ile aynıdır.
Float: Çok büyük ve çok küçük kesirli sayılar için kullanılan veri tipidir. Boyutu 4 ile 8 byte arasındadır.
Real: Float ile aynı özelliklere sahip.
Money: -922 337 203 685 47,5808 ile 922 337 203 685 477,5807 arası parasal veri tutabilir. 8 baytlık yer kaplar.
Smallmoney: -214 748,3648 ile 214 748,3647 arası parasal veri tutabilir. 4 baytlık yer kaplar.
Datetime: 1 Ocak 1753 ile 31 Aralık 9999 tarihleri arasındaki herhangi bir tarihi saatiyle birlikte tutar. 3.33 milisaniyelik bir hassasiyete sahiptir. 8 baytlık yer kaplar.
Smalldatetime : 1 Ocak 1990 ile 6 Haziran 2079 tarihleri arasındaki herhangi bir tarihi saatiyle birlikte tutar. 10 dakikalık bir hassasiyete sahiptir. 4 baytlık yer kaplar.
ANSI standartlarına uyan herhangi bir karakter 1 byte yer kaplar. Ancak Unicode karakterler ise hafızada 2 byte yer kaplar. Unicode karakterler farklı dillere özgü karakterlerdir.Türkçe’ de kullandığımız ç,ğ,ş,ö gibi harfler bizim dilimize özgüdür ve ANSI standartlarında yer almamaktadır.
Char(n): Boyutu1 ile 8000 arasında değişir. Maksimum 8000 karakter tutar.
Nchar(n): Boyutu 2 ile 8000 arasında değişir. Maksimum 4000 karakter tutar.
Varchar(n): Boyutu1 ile 8000 arasında değişir. Maksimum 8000 karakter tutar.
Nvarchar(n): Boyutu 2 ile 8000 arasında değişir. Maksimum 4000 karakter tutar.
Nvarchar(MAX): Maksimum 2 gigabyte (536.870.912 karakter) veri saklar.
Text: Maksimum 2 gigabyte (1.073.741.824 karakter) veri saklar.
Ntext: Maksimum 2 gigabyte (536.870.912 karakter) veri saklar.
Örnek olarak char(10) olarak tanımladığımız değişkene “ali” değerini de yazsak “mehmet” değerini de yazsak kapladığı alan 10 byte dır.Fakat varchar(10) olarak tanımladığımız bir değişkene “ali” değerini yazarsak 3 byte “mehmet” değerini yazarsak 6 byte yer kaplar. yani veriye göre kapladığı alan değişir. char ve varchar arasındaki fark budur.
nvarchar(10) olarak tanımladığımız değişkene “ali” değerini yazarsak kaç byte yer kaplar “mehmet” değerini yazarsak kaç byte yer kaplar?
Nvarchar ile varchar arasındaki fark birisi Türkçe karakterleri desteklerken diğeri desteklemez.
Nvarchar(5) olarak tanımladığımız bir değişkene “Mehmet” değerini atarsak ne olur.
Binary(n): Boyutu 1 ile 8000 byte arasında değişir. Sabit boyutta binary veri tutmak için kullanılır.
Varbinary(n): Boyutu 1 ile 8000 byte arasında değişir. Değişken boyutta binary veri tutmak için kullanılır.
Varbinary(MAX): Boyutu maksimum 2 gigabyte tır. Değişken boyutta binary veri tutmak için kullanılır.
Image: Boyutu maksimum 2 gigabyte tır. Sadece resim dosyaları için değildir tüm dosyalar tutulabilir.

📃 UNION ile UNION ALL Arasında Ne Fark Var?

UNION ile birleştirdiğiniz bir sorgudaki tüm alanlardaki veri farklı bir sorgudaki tüm alanlardaki farklı bir veri ile eşleşirse tek bir satır gösterimi sağlanır ama UNION ALL’da istediği sayıda aynı veri eşleşsin tümü gösterilir.

📃 HAVING BY Niçin Kullanılır?

Where koşulları içerisinde aggregation fonksiyonları olan count, avg, max, min gibi fonksiyonları kullanamadığınızda bu fonksiyonlar ile oluşturmak istediğiniz koşulları having by ‘da tanımlamalısınız. Örnek sözdizimi ise şu şekildedir.

📃 SQL Server’da Temporary Table ve Table Variable Arasındaki Farklar Nelerdir?

  1. Temporary Table’da # işareti ile tablo oluştururken Table Variable’da @ işareti ile oluşturulur.
  2. Temporary Table oluşturulduktan sonra DDL işlemleri yapabiliriz. Yeni bir kolon ekleme imkanımız olur. Table Variable ise ALTER,CREATE,DROP gibi DDL komutlarını desteklemez.
  3. Temporary Table’lar TempDB’ de tutulmaktadır. Table Variable ise In – Memory olarak saklanmaktadır.
  4. Temporary Table Transaction yapısını desteklemektedir. Table Variable ise Transaction yapısını desteklemez.
  5. Temporary Table’larda kullanıcı tanımlı fonksiyonlara (UDF) izin verilmezken Table Variable’larda kullanıcı tanımlı fonksiyonları (UDF) kullanmaya izin verilir.
  6. Temporary Table’ler index’leri destekler ayrıca Primary Key ve Unique Key ile oluşturulan index’ler de desteklenir. Table Variable’larda ise index’ler desteklenmez.
  7. Temporary Table’lar tanımlandıkları ortamda erişilebilir. Eğer Global olarak tüm ortamlardan erişime açık olması istenirse Temporary Table oluşturulurken ‘#’ yerine ‘##’ kullanılmalıdır. Oluşturulma türüne göre hem yerel hemde global erişime destek verir. Table Variable’lar ise tanımlanan ortamdan erişilebilir. Global erişim türü mevcut değildir.
  8. Table Variable türündeki tablolar, Temporary Table türündeki tablolara göre çok daha hızlı çalışırlar.
  9. Temporary Table; nested stored procure’lerde kullanılabilirken, Table Variable; nested stored procedure’lerde kullanılamaz.
  10. SELECT INTO ile Temporary Table oluşturabilirken, SELECT INTO ile Table Variable oluşturamazsınız.
  11. Stored Procedure’de içinde Temporary Table varsa stored procedure her seferinde recompile olurken Table Variable varsa recompile işlemi gerçekleşmez.
  12. Temporary Table büyük tablolarda Table Variable’a göre daha performanslı çalışır.
  13. Eğer satır sayısı 100’ün altındaysa genellikle Table Variable kullanılır. Satır sayısı 100 ün üzerindeyse Temporary Table kullanılması daha iyidir.

📂 Front End

📃 Single-Page Application(SPA) Nedir?

Sayfanın tek seferde yüklenmesinden sonra manuel olarak ve kodsal bir yenileme yapmadığımız sürece olması gereken sadece ihtiyaç duyulan kısımların sayfa değişimlerinde istekde bulunup oluşturulmasıdır her sayfada ortak olan kısımların SPA projelerinde tekrar tekrar oluşturulmasına gerek yoktur bundan dolayı Multi-Page application’a göre oldukça hızlıdır. SPA projelerinin listesini alttaki maddelerden bulabilirsiniz.

📃 Multi-Page Applicaion(MPA) Nedir?

Gereksiz yere her yapılan istekde sayfa tekrar yenilenerek istekde bulunan sayfa içeriği ve ortak olarak kullanılan tüm içerikler(html,js,css) tekrar tekrar indirilmek zorunda kalacaktır buda oldukça büyük bir performans ve zaman kaybına sebebiyet vermektedir.

📃 Angular Universal Nedir?

Server side render işlemi yapılarak seo sorunu giderilmesi sağlanılan Angular çözümüdür. Eğer seo ihtyiacı olunmayan yani arama motoru ile işiniz olmayan kapalı bir iş yapacaksanız Angular Universal kullanmak bazı ekstra kodlamalar ve konfigürasyonlardan dolayı gereksiz zaman kaybıdır

📃 SPA Frameworkleri Nelerdir?

React, VueJS, Knockout, Angular, EmberJS, MeteorJS

CSS media kuralları ne işe yarar?

Bilgisayar, tablet, telefon ve benzeri tüm ekranlarda yatay scrollbar’sız ve sorunsuz bir şekilde çalışan aktif tasarımlar ile responsive site yapımını sağlar.

Web ortamında Client Side ve Server Side nedir? Client Side ve Server Side çalışan dillere örnekler veriniz?

Server Side, web sitesine dosyaları barındıran ve bu dosyaları internette paylaşmanıza olanak tanıyan bilgisayardır. Örnek diller; ASP.Net, PHP, Python, Ruby, Java

Client Side, server’lara dosyaları açması ve belli işlemleri gerçekleştirmesi için HTTP ve HTTPS protokelleri üzerinden istek gönderen taraftır. Örnek dil; JavaScript

State Management nedir? Neden kullanılır? Yerine alternatif bir şey kullanılabilir mi?

Verilerin istemci ve sunucu arasında gereksiz gidip gelmesinin oluşturduğu dezavantajdan kurtulmak için ASP.NET’te geliştirilmiş bir durum yönetim kavramıdır. İstemci taraflı ve sunucu taraflı durum yönetimi teknikleri bulunmaktadır. Alternatif ~ Cache

Authentication ve Authorization nedir?

Authentication(Kimlik Doğrulama), Kullanıcının kimliğini kontrol etmek.

Authorization(Yetki, izin), Kullanıcını kaynaklara erişimini doğrulamak. Bir kullanıcı sisteme giriş yapabilmek için authentication’a, o sistemde bir işlem yapabilmek için authorization‘a ihtiyaç duyar.

Middleware yapısı nedir?

Middleware yapısı, ASP.NET’teki HttpModule nesnelerine benzetilebilir. Uygulama başlangıcında runtime’a eklenen middleware bileşenleri, eklendiği sıraya göre pipeline’ı oluşturmakta ve bir request geldiğinde bu sıraya göre tüm bileşenler çalışmaktadır. Eğer middleware bileşeni yaptığı kontrollerde bir sorunla karşılaşırsa request’i kesip sonlandırır ve ya her şey yolunda gidiyorsa sırasını salıp kendisinden sonraki middleware bileşenine yol verir.

SOAP servis ile REST servis Nedir? Benzerlik ve farklılıkları nelerdir?

SOAP (Simple Object Access Protocol) yani Basit Nesne Erişim Protokolü, internet üzerinden küçük miktarda bilgileri yada mesajları aktarma protokoludur. SOAP mesajları XML formatındadırlar ve  genellikle HTTP protokolu bazende TCP/IP kullanılarak gönderilirler. SOAP bizi XML tabanlı kullanıma mecbur bırakır. Bu konuda esnek değildir. SOAP üzerinde güvenlik sağlamak daha kolaydır. SOAP için geliştirici araçları daha iyidir. Kullanmak için yardımcı olacak daha çok kaynak bulunabilir.

REST (REpresentational State Transfer) yani Temsili Durum Transferi, istemci ve sunucu arasında veri alışverişinin basit bir yoludur. REST mimarisi standart bir tanımlamaya ihtiyaç duymaz. REST ile veri alışverişini JSON, XML hatta Text formatında bile yapabilirsiniz. Esnek bir yapıya sahiptir. REST mimarisinde de HTTP metodlarından yararlanılır. Uygulamanın daha hızlı çalışmasını sağlar.

Web Api nedir?

HTTP, üzerinden REST servisler geliştirmek için kullanılan bir framework’tür.

SQL Trigger nedir?

Trigger (Tetikleyici), veritabanında bir işlem yapıldığında başka bir işleminde otomatik yapılması isteniliyorsa kullanılır. Trigger’lar Delete, Insert ve Update işlemleri üzerinde çalışırlar.

Partial class nedir? Neden kullanılır?

Sınıfların karışık yapıda olmasını engellemek için büyük bir sınıfı belirli parçalara bölmek için kullanılan anahtar kelime Partial’dır. Kullanım amacı, Çok sayıda sınıf elemanı içeren bir sınıfın yönetilebilir ve anlaşılabilir olmasını sağlamak içindir. Örneğin partial kullanarak sınıfın özelliklerini bir yerde, metotlarını başka bir yerde tanımlayabiliriz. Her ne kadar sınıfımız parçaya ayrılmış gibi görünse de program çalıştırıldığında sınıfımız tek bir sınıf gibi hareket edecek ve parçaya ayrılmış olan kodlarımız derlenip program tarafından bir bütün olarak çalıştırılacaktır.

TFS nedir? Neden kullanılır? Alternatifleri nelerdir?

Team Foundation Server (TFS), bir yazılım projesinde ekip olarak birlikte çalışmayı amaçlayan ve Microsoft Visual Studio ile entegreli olarak çalışan bir Server sistemidir. Bu sistem sayesinde aynı anda projeyi yapan yazılımcılar ve proje yöneticileri projenin durumunu görebilir, geliştirebilir ve gelişmiş raporlama sistemleri oluşturabilirler.

Alternatifleri: Git, Mercurial SCM, Subversion, VirsualSVN vb.

Kısa Kısa Bazı Terimlerin Açıklamaları

DNU, DNX, DNVM: DNX (.NET Execution Environment), yeni nesil .NET uygulamalarının çalışmasını sağlayan runtime bileşenidir. DNVM (.NET Version Manager), belirli bir DNX versiyonunun bilgisayara kurulması, güncellenmesi ve düzenlenmesini sağlayan tool’dur. DNU (.NET Utilities), DNX dosyasında bulunan bir Package Manager kütüphanesidir.

Lazy Loading: Bir kod bloğunun, nesnenin ve ya program parçacığının sadece ihtiyaç duyulduğunda çalıştırılmasıdır.

Refactoring: Kodun yeniden gözden geçirilip iyileştirilmesi.

Serialization: Bir nesnenin serileştirilerek byte dizisine çevrilmesidir bu şekilde programlamada kullanacağımız nesnelerin veritabanında stream olarak saklamamız mümkün olacaktır.

Deserialization: Buda serialization işleminin tersidir serileştirilmiş bir nesnenin tekrar stream’den nesneye dönüştürülme işlemidir.

TDD(Test driven development): Önce test sonra kod.

Recursive: Kendi kendini çağıran metodlar için kullandığımız durum.

DDD: Domain Driven Development içerisinde katmanlı mimari olarakda adlandırılabilecek Presentation Layer, Domain, Layer v.b. layer’ları kapsayan, refactoring, clean code, repository gibi olayları geliştirmede ve proje bütününde kullanmayı prensip haline getirmeye çalışan bir design pattern’dir.

Monkey Test: oraya buraya rasgele tıklayıp, değer girip ekran sapıtıyor mu diye bakmak.

e2e:(End Two End): uçtan uca test.

Overloading: Overloading yani aşırı yükleme, metot isimlerinin aynı fakat aldığı parametrelerin tiplerinin ya da sayılarının farklı olduğu durumlara overloading denir.

Auto Detect Changes: Entity Framework içinde performansını artıran bir mekanizmadır.

DbSet: Code First’de veritabanında tablonun tanımlanmasını sağlayan property‘dir.

DbContext: Code First’de veritabanındaki map işlemleri yapılan sınıf’dır.

API: Herhangi bir uygulamanın belli işlevlerini diğer uygulamalarında kullanabilmesi için oluşturulmuş bir modüldür.

TFS Build and Release Management: TFS’in içinde bulunan projelerin test ve sürüm yönetimini yapmamızı sağlayan tool’larıdır.

Scrum: Çevik yazılım geliştirme prensiplerini hayata geçiren yazılımcılardan oluşan küçük guruplara verilen isimdir.

Agile: Dünya üzerinde kabul edilen yöntemler arasında en hızlı ve güvenli proje geliştirme yaklaşımıdır.

SQL Always On: Uygulamaların yüksek erişilebilir olması ve sistemde oluşacak bir hata sonucu sistemin çalışmasının minimum seviyede aksamasının sağlayan bir SQL teknolojisidir.

SQL Replication: Kaynak veri tabanının aynısı, sürekli yenilerek, başka bilgisayarlarda da tutulma teknolojisidir.

Performance Tuning: SQL performans yönetimi teknolojisidir.

PolyBase: Yapılandırılmış ve yapılandırılmamış verilerinizi T-SQL’in basitliğiyle sorgulamanıza olanak tanıyan teknolojidir.

QueryStore: SQL Server‘de plan değişikliklerinden dolayı yaşanılan performans problemleri için geliştirilmiş bir teknolojidir.

Power BI: Microsoft’un ürettiği bir iş zekası çözümüdür. Görselliği güçlü, interaktif raporlar-dashboardlar tasarlamamız için üretilmiştir.

MicroStrategy: Bir iş zekası şirketidir.

DataZen: Raporlama servisidir.

2FA: Two Factor Authentication’ın kısaltması olan bu yapı ile üye girişlerinde güvenliği arttırması amacıyla genellikle mobil uygulamamız üzerinden push notificaiton yada sms ile gönderilen şifrenin sisteme girilmesiyle giriş işleminin sağlanabildiği yapıdır.

ETL: Extract-Transform-Load, kullanılacak verinin dış kaynaklardan çıkarılması, verinin iş süreçlerine göre temizlenmesi, birleştirilmesi, dönüştürülmesi ve yüklenmesi sürecidir.

SSRS: SQL Server Reporting Service, adından da anlaşılacağı gibi raporlama servisidir.

SSIS: Microsoft, SQL Server Reporting Services uygulamasını oluşturarak bir çok raporlamı işlemini kolayca yapabilmeye olanak tanır durumdadır.

CMS: Content Management System, içerik yönetimi sistemlerine verilen nelen isimdir.

CRM: Customer Relationship Management yani Müşteri İlişkileri Yönetimini; müşteriyi tanımak, müşteri ihtiyacını anlamak, ona uygun hizmetler ve ürünler geliştirmek ve bu bilginin organizasyon içinde paylaşılması olarak tanımlanır.

ERP: Enterprise Resource Planning yani Kurumsal Kaynak Planlama; yazılımları, bir işletmenin, satıştan muhasebeye, üretimden insan kaynaklarına, envanterden CRM’e, aklımıza gelen tüm fonksiyonlarını kapsayan entegre bilgi sistemleridir.

Sharepoint: Büyük ölçekli şirketlerde şirket içerisindeki farklı farklı depertmanlardaki elemanların birbirleri ile çok rahat bir şekilde iletişime geçebilmeşerini sağlayan bir yapıdır.

Sharepoint Farm: SharePoint sitelerini yayımlayan WSS (Windows SharePoint Services) sunucular topluluğudur.

Sharepoint WebPart: WebPart Portal uygulamalarının yapı taşları ve içeriğin saklandığı bölümdür.

XSLT: Extensible Stylesheet Language Transformations yani Genişletilebilir Biçimlendirme Dili Dönüşümleri XML tabanlı, XML dokümanlarını dönüştürmek için kullanılan bir dildir. Orijinal dokümanı değiştirmeden, yeni bir doküman oluşturmaya olanak sağlar.

PowerShell: Microsoft tarafından Windows komut satırı cmd.exe ve Windows Script Host’a alternatif olarak geliştirilen yeni nesil bir komut satırı uygulamasıdır.

Active Directory: Microsoft ağlarında kullanılan dizin hizmetidir. Veritabanı, kullanıcılar, bilgisayarlar, mekanlar, yazıcılar gibi organizasyonun tüm bilgilerini saklar.

Exchange:  Microsoft tarafından üretilen bir haberleşme yazılımıdır.

IIS: Internet Information Services, Web sayfalarının yayınlanmasını ve web uygulamalarının çalışmasını sağlayan, istemcilerden HTTP ve FTP üzerinden gelen talepleri Microsoft Windows sunucu tabanlı işletim sistemlerinde karşılayan birimdir.

Application Pool: Aynı sunucuda bulunan farklı web uygulamalarının birbirinden farklı havuzlarda tutulmasını yani birbirlerinden izole edilmesini sağlayan kavramdır.

SSL: Secure Sockets Layer, server ile alıcı iletişimi esnasında verilerin şifrelenerek gönderilmesini sağlayan katmandır.

FTP: File Transfer Protocol, bir bilgisayardan bir başka bilgisayar yada server arasında bağlantı kurma ve dosya paylaşım protokolüdür.

Real Time Communication: Real Time Communication eş zamanlı iletişim kurmak için bir standarttır.

Heroku: Bir bulut bilişim (cloud computing) uygulama altyapısı servis sağlayıcısıdır.

AJAX: Asynchronous JavaScript and XML, tüm sayfayı kullanıcıya tekrar yükletmeden ekrana getiren veya servera gönderen bir çok programlama dili ile uyumlu çalışan bir tekniktir.

jQuery: HTML dokümanların yönetiminde, animasyonların oluşturulmasında, etkileşimli Web sayfaların hazırlanmasında kullanılan Javascript kütüphanesidir.

Angular JS: Front-end gelirştirmede kullanılan bir Javascript kütüphanesidir.

Backbone: Front-end gelirştirmede kullanılan bir Javascript kütüphanesidir.

Node JS:  Javascript motoru üzerinde çalışan, Event-driven, nonblocking I/O modeli kullanan, ölçeklenebilir uygulamalar geliştirmek için dizayn edilmiş bir platformdur.

Knockout: Front-end gelirştirmede kullanılan bir Javascript kütüphanesidir.

Ember JS: Front-end gelirştirmede kullanılan bir Javascript kütüphanesidir.

Ionic: Hybrid mobil uygulamalar geliştirmek için Web geliştiricilere sunulmuş bir front-end framework’üdür.

Cordova:  Web tabanlı mobil uygulamalar yazmanızı sağlayan bir uygulama geliştirme framework’üdür.

Bootstarp: Açık kaynak kodlu, ücretsiz bir CSS framework’üdür.

SubQuery: SQL’de sorgu içerisine sorgu yazmaktır.

MS SQL Bileşenleri; Management Studio, Database Engine, Analysis Services, Integration Services nedir, ne işe yarar?

Managment Studio: SQL Server’ın tüm bileşenlerine erişmeye, bu bileşenleri yapılandırmaya, yönetmeye ve geliştirmeye yönelik tümleşik bir ortamdır.

Database Engine: Verileri depolama, işleme ve güvenliğini sağlamak için kullanılan veritabanı altyapısıdır. Veritabanı motoru kuruluş içerisinde ihtiyaç duyulan en zorlu verilere bile kontorollü ve hızlı bir şekilde erişilmesini sağlar.

Analysis Services: Bu servis veritabanına Online Analytical Processing (OLAP) yani çevrim içi analitik işleme ve veri madenciliği işlevselliği kazandırmak için kurulan bir çekirdek hizmetidir.

Integration Services: Entegrasyon servisleri ise kurumsal düzeyde veri entegrasyonu ve veri dönüşümleri yapabilmek için kullanılan bir platformdur. Kopyalama ve dosya indirmelerinde, e-posta ileti göndermelerde, veri ambarlarının güncellenmesinde, veri madenciliği ile verileri temizleme işlemlerinde SQL servislerinin zor yapacağı işleri kolaylaştırmak için hazırlanmış bir servistir.

Immutable Nedir ve .Net Framework Tarafında Immutable Tipler Nelerdir?

“Immutable” kelimesinin Türkçe karşılığı “Değişmez”. Peki immutable(değişmez)  object ne demek ? Bir tip Immutable dediğimizde aklımıza ne gelmeli ?

Immutable nesnelerin state’i object yaratıldıktan sonra değiştirilemez. Siz nesneyi yaratırken içerisinde bulunacak olan değerleri verirsiniz ve sonrasında bu değerleri değiştiremezsiniz. Eğer bir Immutable nesnenin state’ini değiştirmek isterseniz vermek istediğiniz state’i taşıyacak olan yeni bir nesne yaratmak zorundasınız.

.NET Framework tarafında Immutable tipler neler diye baktığımızda karşımıza ilk sırada string tipi çıkıyor. Aslında string tarafında  tipik senaryolara hepimiz hakimizdir. Bir for döngüsü içerisinde + kullanarak string birleştirmek yerine StringBuilder tipini kullanmak gibi tricklerin altında string tipinin aslında Immutable olması yatmakta. Zaten string tipinin içerisindeki metotlara bakarsanız çoğunun dönüş tipi stringtir.

Örneğin string.Concat metoduna 2 farklı string verirseniz bu 2 stringi birleşimini içerisinde bulunduran yeni bir string yaratılır.

.NET Framework içerisinde bulunan ama ayrı olarak NuGet package olarak sunulan Immutable Collections da aslında yukarıda bahsettiğimiz Immutable kavramının collectionlar üzerinde implemente edilmiş hali.

Immutable tipler thread-safety konusunda bizlere kolaylık ve iç rahatlığı sağlasa da her tipi immutable yapmak da doğru değil. Yazılım dünyasındaki her kavramda her güzellikte olduğu gibi bunu da gereken yerlerde kullanmak önemli. 😉

İsimlendirme Standartları Nelerdir?

Underscore isimlendirme standart’ına göre tanımlanan değişkenlerde birden fazla kelime bulunuyorsa bunları ayırmak için “_” kullanılır Örnek: Murat_Oner

Generic class nedir?

Normal sınıftan farkı, kullanılacak olan tiplerin sınıf tanımlama aşamasında belirtilmesidir. Yani tasarım anında tipin belli olmamasıdır. Aynı işi farklı veri türlerinde yapmak için birden fazla sınıf tanımlıyorsanız kullanmak gerekir. List nesnesinin generiz olarak aldığı türe göre siz bu listeye belirlediğiniz tipe göre eklemeler yapıyorsunuz eğer generic tip olmadan List olduğunu düşünürsek object olarak geçecektik ve sürekli liste elemanını çekmek isterken cast edecektik.

.Net MVC Html Helper Nedir?

———————- ?

Fibonacci değerini nasıl hesaplarsın?

———————- ?

.NET VE .NET CORE arasındaki farkları yazınız ?

———————- ?

Primary key, Foreign key Nedir?

———————- ?

Clustured Index Ve Non-Clustered Index nedir?

———————- ?

GROUP BY Niçin Kullanılır?

———————- ?

TSQL – NOSQL FARKI

———————- ?

Transaction nedir?

———————- ?

Sql Stored Procedure Nedir?

Database server’ında tutulan ve ilk derlenmeden sonra bir daha derlenmeye ihtiyaç duyulmayan SQL ifadeleridir. DB Server’ında tutulduğu için çok hızlı çalışırlar, hızlı çalışmasının sebebi ise bir kez derlendikten sonra bir daha derlenmeye ihtiyaç duymamalarıdır. Halbuki uygulama katmanında yazmış olduğumuz SQL kodu her çağırmada tekrar tekrar derlenmek zorundadır.

Sql Function Nedir?

———————- ?

Sql Function ile Stored Procedure Arasındaki Fark Nedir?

User Defined functionStored Procedure
Function geriye bir değer veya tablo döndürmek zorundadır.Stored procedure geriye değer döndürebilir veya hiçbir değer döndürmez.
Sadece Select ile kullanılabilir. DML işlemlerinde kullanılamaz.Select ile kullanılabileceğiz gibi, DML işlemlerinde de kullanılaibilir. (insert,update)
Çıkış parametreler desteklenmez. Sadece giriş parametreleri desteklenir.Hem çıkış hem giriş parametreleri kullanılabilir.
Try-catch yapısı ile kullanıma izin vermez.Try-cacth yapısı ile kullanıma uygundur.
Transaction yapısını desteklemez.Transaction yapısı ile kullanılabilir.
Tablo türü değişkenler ile kullanılabilir.(Temp Table) Geçiçi tablolar ile kullanıma izin vermez.Hem (Temp Table) geçici tablo hemde tablo türü değişkenler ile kullanılabilir.
Bir function, stored procedure çalıştıramaz.Stored Procedure function’ları çalıştırabilir.
Function’lar SELECT deyimi ile çağrılabilir.Stored Procedure Select/Where/Having ile çağrılamaz. Çalıştırmak için Execute/Exec komutu kullanılmalıdır.
Function’lar Join yapısı ile kullanılabilir.Stored Procedure’ler Join yapısı ile kullanılamaz.

Sql View Nedir?

———————- ?

WPF Nedir Ne İçin Kullanırız?

———————- ?

İnternet ve intranet nedir ve arasındaki başlıca farklar nelerdir?

  • En basit tabirle internet dış ağ, intranet iç ağ olarak bilinir.
  • internet dünya çapında bir ağ sistemidir, intranet ise özel bir ağdır, Ör; Şirketler, kurumlar ve ev gibi.
  • ikisinde de bilgisayarlar birbirine dolaylı olarak bağlı sayılırlar.
  • Aklınızda daha iyi kalması için bir örnek vermek istiyorum; Evinizde 4 oda ve hepsinde birer bilgisayar olduğunu varsayalım, bu bilgisayarlar bir switch aracılığı ile birbirlerine bağlı olsun, bu durumda tüm bilgisayarlar birbirleriyle bizim belirlediğimiz şekilde haberleşip dosya alış verişi yapıp, birbirleriyle mesajlaşabilir. Bu ağın artı bir switch ile komşularınıza başka biriyle sokağa, mahalleye, şehre, ülke ve dünyaya bağlandığını düşünün işte buna da internet deniyor.
  • Bu ağlarda cihazlar birbiriyle TCP/IP üzerinden bağlanırlar.
  • Mesela evinizde modeme bağlı bilgisayarınız 192.168.0.11 gibi bir ip adresi alırken, modeminiz dış ağdan yani internetten 85.100.150.120 gibi farklı ipler aldığını görürsünüz.
Detaylı açıklamalar;

Intranet, erişimi sadece bir organizasyon ve çalışanlarının ya da üyelerinin erişimine açık olan, bir veya daha çok bilgisayar ağının birbirine bağlı olduğu dahili ve özel bir ağ ya da bağlantı biçimidir. Bu tip ağlar şirketlerde bilgi paylaşımı ve iletişimi kolaylaştımak için kullanılır. Bilişim sanayilerinde intranetler mutlaka gereklidir, çünkü işleri yüksek derecede veri paylaşımı ve bilgisayar kullanıcıları arasında bağlantı kurmaktır. Bu tip bir intranet çoğunlukla bir web sitesi aracılığıyla işlem görüp yerel bir server tarafından çalıştırılarak kaynak paylaşım ortamı gibi davranır. Yani özel bi yapıya indirgenmiş internet olarak tanımlanabilir.  Böyle özel bir website tabanlı ağ HTTP, SMTP ve FTP gibi internet protokolleri kullanılarak kontrol edilir. Bununla birlikte, her intranet özel bir website kullanmayabilir. Bazı organizasyonlar için intranet sadece dosya paylaşımı için kurulabilir. Bu yüzden website ya da internet protokollerine ihtiyaç duyulmaz.

İnternet aracılığıyla bilgiye ulaşmanız zaten internetin (veya International Network) sizin için ne yapabileceği hakkında fikir sahibi olduğunuzu gösterir. Şehrinizde küçük bir bölgede bulunan bir küçük ağın diğer küçük ağlarla birleşimi lokal bölge ağlarını (LAN) oluşturur. Tüm bu lokal ağlar birleşerek geniş alan ağlarını (WAN) oluştururlar. Bu geniş alan ağlarının entegre edilmesi ulusal ağları oluşturur. En sonunda tüm bu ulusal ağların birleştirmesi de sonuç olarak interneti ortaya çıkarır. İnternet protokolleri kullanarak dünyanın her yerindeki bilgisayarları birbirine bağlayan tek bir ağın varlığı bilgi paylaşımı ve yönlendirilmesini mümkün kılmıştır. İnternet ve intranet arasındaki ana fark ise intranet birkaç yüz bilgisayarın ağını kapsarken, internetin ise dünyanın her yerinde bulunan milyardan fazla bilgisayarın ağını kapsamasıdır! Hala geliştirilen bir set internet protokolleri (HTTP, FTP, SMTP, vs.) ile veri transferi gerçekleştirilir.

Extranet şirket çalışanlarının dışarısı ile işbirliği ve iletişimini sağlayan özel iş ağıdır. Extranet, iş ilişkilerini geliştirmek ve yönetmek konusunda çok önemli rol oynar. Extranetler Intranetler ile benzerdir fakat Extranetlerde iş partnerleri, önemli müşteriler, tedarikçiler gibi seçili kullanıcılara dışarıdan erişim izni verilmiştir. Extranet kullanıcıları dikkatle seçilmiş bir gruptan oluşur ve  kullanıcılara güvenlik açığı verilmemeye özen gösterilir. Extranetleri güncel tutmak için gerekli kaynaklar vardır, bu durum şirket çalışanlarının içerik yönetim yazılımı hakkında eğitimli olmasını gerektirir.

Web Api ve Web Service arasındaki fark nedir?

  • Her web servisi bir Web Api dir, ancak Web Api ler web servisi değildir. Yani Web Api web servislerini kapsar.
  • Web servisleri internete bağlı cihazlarda çalışan uygulamaların konuşmaları şeklinde özetleyebiliriz.
  • Web Api ler için durum daha gelişmiştir.
  • Web servisler internet üzerinden haberleşirler. Web Api lerin çalışma mantığı daha farklıdır. Bir uygulamanın apisini kendi uygulamanıza entegre ederek o uygulamadan faydalanabilirsiniz.
  • Web servisler sadece üç hizmeti kullanabilirler SOAP, REST ve XML-RPC. Web api ler için herhangi bir kısıt yoktur.
  • Yukarıdaki bilgiler temel düzeyde bir özettir. Detaylı açıklamaları aşağıda bulabilirsiniz.
Başlıca Web Api Özellikleri
  • Http Get, Post, Put ve Delete metodlarıyla çalışabildiğinden CRUD işlemelrini destekler,
  • Response’larda HttpStatusCode ve Accept Header parametreleri bulunur,
  • Response’lar kullanıcının istediği türde MediaTypeFormatter tarafından formatlanabilir,
  • OData desteği bulunmaktadır ve Query yazması oldukça kolaydır,
  • Bir uygulama içerisinde veya IIS üzerinde host edilebilir,
  • MVC’nin bazı özelliklerini taşır (routing, controllers, action results, filter, model binders)
Web Servisler
  • Http protokolü ile XML üzerinden iletişimi gerçekleştiren yöntemdir.
  • XML olduğu için farklı platformlar birbiriyle iletişim halindedir.
  • Web servislerinde veriler XML olarak tutulur ve SOAP kullanılarak iletişim gerçekleştir.
  • Örnek bir web servis olarak sitenize eklediğiniz güncel Hava Durumunu düşünebilirsiniz.

HTML ve XML arasındaki başlıca farklar Nelerdir?

  • XML in açılımı Extensible Markup Language dir.
  • XML farklı sistemler arasında veri alışverişi yapmak üzere ortak dil olarak tasarlanmıştır.
  • XMLin asıl amacı veri taşımaktır.
  • İkiside işaretleme dilidir.
  • HTML veriyi görüntülemek içindir, XML ise veriyi saklamak ve transferini sağlamak içindir.
  • İki dilde TAG lar yardımıyla yazılır.
  • HTML internette yayınlamak istediğiniz web sayfalarını kullanıcılara göstermeye yarayan dildir.
  • HTML sayfası sadece client yani sunucu tarafında çalışır.
  • XML dinamik verileri saklaya bilirken, HTML ise statik web sayfaları gösterir.
  • HTML webin temelini oluşturur, HTMLi kullanmadan web sitesini yayınlayamazsınız.
  • İkisininde öğrenimi kolaydır.
Detaylı Açıklamalar;
XML nedir?

XML (Extensible Markup Language – Genişletilebilir İşaretleme Dili) yapılandırılmış belge ve verilerin evrensel formatıdır. XML sayesinde her birey ve kuruluş gerektiğinde kendi veri ve belgelerini belirtmek için kendi saklama ve aktarma biçimlerini belirlemek zorunda kalmaz. Farklı taraflar ortak bir formatta anlaşarak kolayca iletişim kurabilirler. Herhangi bir konuda bilgi içeren belge XML’le belirtilebilir. Örneğin şu okuduğunuz dokümanı XMLle belirtmek istersek şöyle yazmamız yeterlidir.

Bu veri, belli bir yapıda olduğu için herhangi bir şekilde kullanılmaya veya dönüştürülmeye uygun durumdadır. XSLT (Extensible Stylesheet Language Transformation) ile HTMLi çevrilebilir. XPath’la içerisindeki bir soru /faq/body/item[id=”2″] şeklinde erişilebilir. (Not : Bu belge gerçekten bir XMLle yazılmış, XSL’le HTMLe transform edilmiştir.)

Aynı bilgiyi SQL’le yapmaya çalışsaydık bir çok tablo yapmamız gerekirdi. Kendimize göre bir format uydursaydık, onun içinden bir bilgiye erişmek için parse etmemiz, HTMLi dönüştürmemiz için de tek tek her elemanı bulup başına sonuna HTML tag’ları eklememiz gerekirdi. Bütün bu işler XMLle birlikte kolayca yapılabilir hale gelmiştir. XML’in özellikleri arasında Unicode olması, metinli (insanlar tarafından okunabilir) olması da sayılabilir.

XML nerelerde kullanılır?

Her yerde! XML’in kullanılmadığı çok yer vardır ama kullanılamayacağı hemen hemen hiç bir yer yoktur. HTML üretmek için, makineler arasında iletişim kurmak için hatta veritabanı olarak bile kullanılabilir.

XML kimindir?

Kimsenin! XML kimsenin malı olmayan evrensel bir standarttır. W3 Consorsium (W3C) adlı kar amaçsız bir organizasyon tarafından geliştirilmiştir. IBM, Microsoft, Sun dahil bir çok büyük şirket W3C’nin çeşitli çalışmalara katılmaktadır.

XML hakkında nerden bilgi bulabilirim?

Google’da ‘XML’ yazarsanız bile çok sayıda kaynağa erişebilirsiniz. Burada sadece otorite sayılabilecek link’ler verilmiştir. Ancak bunlar daha çok, XML’i hiç bilmeyenler için değil öğrenmekte olanlar için bilgi içerir.

  • http://www.w3.org
  • http://www.xml.org
  • http://java.sun.com/xml
  • http://www.ibm.com/developerworks/xml/
  • http://msdn.microsoft.com/xml
  • http://www.godoro.com
XML’le HTML arasındaki fark nedir?

XML genel amaçlı bir dilken HTML sadece web sayfalarını oluşturmak için kullanılır. HTML sabit etiketlerden oluşurken XML’de herkes istediği etiketi kullanabilir. HTML hatalara karşı nispeten hoşgörülüyken XML’de belgenin doğruluğunu sağlamak için sıkı bir kontrol vardır. Aslında XML’in geniş kullanım alanı düşünüldüğünde karşılaştırma yapmanın bile doğru olmayacağı görülür.

HTMLi geliştirmek yerine niye XML ortaya çıkartıldı?

Son gelişmelerle birlikte yetersiz kalmaya başladı. Radikal bir değişikliğe ihtiyaç duyulduğu için XML ortaya çıktı. XML ayrıca HTMLi kapsayan daha büyük bir sistem olduğundan, HTMLi hiç kullanılmadığı alanlarda da kullanabilir durumdadır.

XML HTMLin yerine geçecek mi?

Hayır. Web sayfalarında XML’in bir alt kümesi olarak (XHTML) kullanılmaya devam edecek. Bir çok yerde XML’deki veri yine XML formatı olan XSLT ile XHTMLe dönüştürülerek kullanılmaya devam edecektir.

XHTML XML midir?

XHTML, HTMLin işlevini gören ama XML’in kurallarına da uyan bir formattır. HTMLi üreten Web Concorsium’u artık XHTML kullanılmasını öneriyor.

HTML bilen biri kolayca XML öğrenebilir mi?

XML HTMLi çok aşan bir teknoloji. Ancak ikisi de <etiket name=”value> şeklinde kullanılan birer markup dili olduğu için HTMLi bilenler bilmeyenlere göre daha avantajlı durumda olabilirler. Ancak HTML bilgisi XML’in bütün kullanımlar için yeterli değildir.

XML öğrenmeden önce HTML öğrenmek gerekir mi?

Hayır. Eğer XMLi web sayfalarında kullanmak gibi amaç yoksa HTMLi öğrenmeye gerek olmayabilir.  XML öğrenen kolaylıkla HTMLi de öğrenebilir. Sadece HTMLe özgü etiketlerin anlamlarını bilmek yeterli olacaktır.

XMLde etiketler büyük küçük harf duyarlıdır. <ad> ile <Ad> farklı etiketlerdir.

<ad> Emre </ad> DOĞRU
<Ad> Emre </ad> YANLIŞ

XMLde etiketler düzgün sırayla kapatılmalıdır.

<b><u>Emre Supçin</b></u> YANLIŞ
<b><u>Emre Supçin</u></b> DOĞRU

Aralık (space) tuşu, sekme (tab) tuşu ya da yeni satır tuşu ile elde edilen boşluğu ifade eden beyaz boşluk (white space) XML’de korunur. HTML birden fazla olan beyaz boşluk karakterini tek beyaz boşluğa indirir.

Apache ve IIS arasındaki başlıca farklar

  • İkisi de sunucu yazılımıdır.
  • IIS Microsoft firmasının bir ürünü olup, sadece Windows işletim sistemleri üzerinde çalışmaktadır.
  • Apache ise bir topluluğun olup Windows ve Linux işletim sistemlerinin üzerinde çalışmaktadır.
  • Apache açık kaynak kodludur, IIS ise açık kaynak kodlu değildir.
  • IIS açılımı Internet Information Service dir.
  • IIS üzerinde genellikle .net çatısı altında olan ASP.NET sayfaları çalıştırılır. Bunun yanında PHP de çalıştırılır.
  • Apache de ise PHP çalıştırılır fakat ASP.NET uygulamaları desteklenmez.
  • Apache Java uygulamalarını da sorunsuz çalıştırır.
  • Apache en verimli şekilde Linux işletim sisteminde çalışır.
  • İkisinide gerekli ayarlarını yaptığınızda aynı sunucuda kullanabilirsiniz, tabi sunucunuz Windows olmalı.
Detaylı açıklamalar;

Apache HTTP Server, genellikle Apache olarak bilinen, World Wide Web in gelişmesinde önemli bir rol oynayan web serverdır. Apache, Netscape Communications Corporation Web server’da (bu günlerde Sun Java System Web Server olarak biliniyor) geçerli bir seçenekti ve geliştiğinden beri diğer Unix- tabanlı web serverlarına işlevsellik ve performans açısından rakiptir. Apache , Apache Yazılım Kuruluşu’nun himayesi altında olan açık bir topluluk tarafından geliştirilir ve devamlılığı sağlanır. Uygulama çok çeşitli işletim sistemleri için elverişlidir, Unix, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft Windows, OS/2, TPF, ve eComStation ‘da dahildir.

Lisansının altından piyasaya sunulan, açık kaynaklı ve bedava yazılım olarak nitelendirilmiştir. Nisan 1996’dan beri, World Wide Web deki en popüler HTTP serverdır. Haziran 2008’den itibaren (update), bütün sitelerin % 49.12 ‘sine hizmet etmiştir.

IIS

  • Web sayfalarının yayınlanmasını ve web uygulamalarının çalışmasını sağlayan, istemcilerden HTTP ve ftp üzerinden gelen talepleri microsoft windows sunucu tabanlı işletim sistemlerinde karşılayan birim Internet Information Services (IIS )’dir.
  • Yazımız içerisindeki IIS’in özelliklerine ve görevlerine,bununla birlikte asp.net ve Web Servisleri geliştirirken yazılım ortamı ayarlarına değineceğiz.
  • Windows Sunucu şletim sistemlerinin en önemli parçalarından birisi olan IIS, HTTP ve FTP protokollerini başarılı bir şekilde kullanarak önemli bir görevi yerine getirir.
  • IIS (Internet Information Services)
  • Windows işletim sistemlerinin web sunucusu olarak kullanılır.
  • Apache Software Foundation (ASF) tarafından geliştirilir. ASF, Apache yazarları tarafından 1999’da yazılım için yasal bir şemsiye olması için oluşturulmuştur.
  • Açık kaynak kodlu bir yazılımdır, lisansı ücretsizdir. Yazılım firmaları, kurumlara verdikleri hizmetten (kurulum, teknik destek, vb) kazanç sağlarlar.
  • 1995’ten beri geliştirilmektedir. Son sürümü 1.3.22’dir. Yapısal değişikliklerin yapılacağı Apache 2.0’ın geliştirilmesi hala devam etmektedir, beta aşamasındadır.
  • Internetteki web sitelerinin %60’ı Apache üzerinde çalışmaktadır. Apache, en yakın rakibi Microsoft’un web sunucularının 3 katı pazar payına sahiptir.
  • Web sunucular arasındaki bu oran, son iki yıl içerisinde %1-2 civarında oynamalarla sabit kalmıştır.
  • Ekim 2001 itibarıyla 19 milyonun üzerinde web sitesi Apacheyi kullanmaktadır.
IIS Kim Kullanıyor?

Web siteleri IIS üzerinde çalışan farklı sektörlerden birkaç kurum :

  • Cumhurbaşkanlığı
  • Turkcell
  • Migros
  • Garanti Bankası
  • Sabah Gazetesi
  • Sabancı Üniversitesi
  • Orta Doğu Teknik Üniversitesi
  • AGB Anadolu Ajansı
  • Türkiye Odalar ve Borsalar Birliği
  • İstanbul Menkul Kıymetler Borsası
Apache Kim Kullanıyor?

Web siteleri Apache üzerinde çalışan farklı sektörlerden birkaç kurum :

  • Oracle
  • Mercedes-Benz
  • Ericsson
  • Amazon
  • Compaq
  • BBC
  • Hewlett-Packard
  • Icq
  • Financial Times

1. Microsoft Internet Information Server (kısaca IIS) ve Apache gibi sanal web servisi sağlayan şirketler tarafından yoğunlukla kullanılan web sunucularının IP adresi başına servis verdikleri alan adlarının sayısının diğerlerine oranla çok daha yüksek olduğu rahatlıkla varsayılabilir. Burada verilen değerler, metodoloji kısmında açıklandığı gibi alan adı bazında değil IP adresi/sunucu bazında yapılmış değerlendirmelerdir.
2. Cisco web sunucusu, Cisco işletim sistemleri (Cisco IOS, Cisco PIX OS gibi) çalıştıran cihazlarda çalıştırılan yazılımdır. Çoğu durumda hemen yalnızca ilgili sistemin yönetim arabirimi için kullanılır. Yüzdenin bu denli yüksek çıkması şaşırtıcı olmakla beraber, görüldüğü kadarıyla çoğu Internet üzerinden ulaşıma açık olan Cisco sisteminden kaynaklanmaktadır. Özellikle IIS ve Apache için geçerli duruma zıt olarak Cisco web sunucularının hemen her durumda IP başına tek bir  alan adına servis verdiğini düşünmek yanıltıcı olmaz. Ancak bu tür cihazların doğası gereği her cihaz birden fazla IP adresine sahiptir ve bu IP’ler ayrı ayrı teste tabi tutulmuş olabilir, bunu güvenilir bir şekilde tespit etmek mümkün değildir.

3. RomPager ve Nucleus web sunucuları görüldüğü kadarıyla çeşitli markalardaki DSL modemler ve yönlendiricilerin yönetim arabirimleri için kullanılan sunuculardır.

Uygulama sunucu özellikle HTTP isteklerini kotarır, uygulama sunucusu ise farklı tipteki protokollerle uygulamalara iş mantığını sunar. Web sunucusu HTTP protokolünü kullanır. Web sunucusunun çalışma mantığını anlamak kolaydır. Web suncusuna bir istek geldiğinde, sunucu bu isteği basitçe bu isteği en iyi karşılayabilecek programa aktarır. Web sunucusu, sunucu taraflı programın işlediği ve ürettilen yanıtı geri döndüren bir ortamdan fazla işlevselliği sağlamaz. Sunucu taraflı program genellikle görev (transaction) işleme, veritabanı bağlantısı ve mesajlaşma gibi işlevleri kendisi sağlar.

Jquery ve Ajax arasındaki başlıca farklar Nelerdir?

  • Jquery bir ekip tarafından geliştirilmiş açık kaynaklı javascript kodlama kütüphanesidir.
  • Ajax JavaScript ve XMLHttpRequest kullanımı ile web sayfalarında etkileşimli uygulama yapmanızı sağlayan script dilidir.
  • Ajax, web kodlamada bir uygulanış şekli, Jquery ise bir kütüphanedir.
  • Ajax’ın amacı one-page(tek sayfa) üzerinde uygulama yazmak için yardımcı olmaktır.
  • Ajax ile kodlama yaparak sayfayı yenilemeden yani client tarafından sunucuya arka planda istekler gönderip alabilirsiniz.
  • Ajax genelde web 2.0 ı geliştirip 3.0 yapmış gibi kabul edilir.
  • Jquery dünyada en çok bilinen javascript kütüphanesidir.
  • Jqueryde yoğun bir şekilde animasyon kullanabilirsiniz.
  • İkisi birbiriyle kıyaslanamaz.
Detaylı Açıklamalar;
AJAX Nedir?

AJAX (Asynchronous Javascript and XML) birileri tarafından geliştirilmiş bir teknoloji olmayıp, daha çok bir yöntemdir ve içerisinde bir çok teknolojiyi barındırır. Bir yöntem olarak ajax, internet tarayıcılarının asenkron olarak sunucudan istekte bulunmasını sağlayarak web uygulamalarının kullanıcı arabirimini masaüstü uygulamalara bir adım daha yaklaştırır. Geleneksel web uygulamalarında, internet tarayıcıları sunucudan, sayfanın tüm içeriğini getirmesi için istekte bulunur. Kullanıcı gelen sayfa üzerinde bulunan bir bağlantıyı tıklayarak ya da doldurduğu bir formu göndererek yeni bir istekte bulunabilir. Sunucu gelen bu yeni istek için yine kullanıcıya sayfanın tamamını gönderir.

Ajaxın açılımı asenkron javascript ve xml dir, etkileşimli web uygulamaları yazmanıza yardımcı olur.

Ajax XHTML, HTML veya CSS teknolojilerini kullanır, işlemlerinizi dinamik olarak yapar.

Jquery nedir?

Web yazılımlarda aktif olarak kullanılan ve Flash uygulamaların en büyük rakibi olan teknoloji sayesinde fotoğraflar, slaytlar, tab menüleri ve galerilerin geliştirilmesi çok daha kolaydır.

Web yazılımlar ile ilgili çalışmalar yapan kişilerin öncelikle CSS ve HTML ile tanışacaklarını söylemiştik. Burada Jquery ile bu prograların bağlantılı olmasındaki en büyük etken; Jquerynin CSS kodlar ile iç içe olmasıdır. CSS teknolojisi kullanılarak oluşturulan statik siteler, görselliği artırılmış animasyon barındıran web siteleri haline gelecektir. Sitenizin çok daha görsel içerikli ve eğlenceli olması konusunda sizlerin en büyük yardımcılarından birisi olacaktır.

Son yıllarda hızla yaygınlaşan wordpress furyasında da en etkili aktörlerden birisi Jquery dir. Bu teknoloji sayesinde WordPress, görselliğini ve kullanım kolaylığını bir adım daha ileriye taşımıştır. Jquery sisteminin en büyük avantajlarından birisi de sadeliğidir. Evet, bu sistemle gereksiz kodlar bir kenara bırakılmış, daha az kodla çok daha iyi işler başarılma konusunda önemli bir yol kat edilmiştir.

Javascript Every Fonksiyonu Nedir Neden Kullanılır?

Javascript every fonksiyonu ile yazdığımız kuralların tüm kayıtlar için geçerli olmasını bekleriz böylelikle tüm kayıtlar için kuralımız doğru çalışırsa true doğru çalışmaz ise false dönecektir.

Örnek

WWW ve HTTP arasındaki başlıca farklar Nelerdir?

  • HTTP bir transfer ve iletişim protokoldür.
  • WWW w3 standartlarından biridir.
  • HTTP’nin açılımı HyperText Transfer Protocol – Hiper-Metin Transfer Protokolü dür.
  • WWWnin açılımı ise World Web Web – Dünya çapında ağ dır.
  • İnternette bir web sayfası görüntülemek için HTTP protokolünü kullanırız.
  • HTTP ile haberleşen istemci ve suncuların gelenin bulunduğu ağa WWW denir.
  • WWWler genelde web sayfası olarak ta bilinir.
  • Webin temelini internet oluşturmaktadır.
  • Http protokolünün varsayılan port numarası 80 dir.
  • HTTP,WWW dünyasında iletişim sağlayan bir araçtır.
Detaylı açıklamalar;

HTTP bir protokol olup, yazı ve çeşitli medya öğelerini sunuculardan istemcilere ileten ve istemcilerin yani biz bilgisayar kullanıcılarının bu öğeleri görmemi sağlar.

“World-Wide Web” yani WWW HTTP ile konuşan sunucuların geniş ağını ifade etmek için kullanılır. HTTP, mevcut bilgilerin kullandıkları protokolün dünya çapındaki adıdır.

Tarayıcı, internet kullanıcısının isteğini sunucuya gönderir. DNS sunucularının, alan adlarının, adres isimlerinin ve fiziksel konumların tutulduğu diğer araçlarla iletir. Kullanıcı www.arasindakifark.net sitesi için istekleri karşılayan bilgisayara doğru gönderir. Bu bilgisayar belirli şartların sağlanması durumunda ve sitenin dosyalarının mevcut ve çalışır halde olması durumunda size yani son kullanıcıya hazırlanmış halde gösterir. Bu görüntüler tasarıma bağlı olarak tarayıcıdan tarayıcıya göre değişebilir.

Http (Hyper Text Transfer Protocol) internette sunucular ve son kullanıcılar arasında bilgilerin nasıl aktarılacağına dair kurallar ve yöntemleri düzenleyen bir sistemdir. Bir web sitesine bağlanmaya çalıştığınızda, siz adresin başına bunu yazmazsanız da tarayıcınız bunu otomatik olarak ekler, çünkü sunuculardan web sitelerine ait bilgileri indirebilmeniz için, http protokolü ile bir istekte bulunmanız gerekmektedir. Adreslerin başına eklenen http, sunucuya web sitesi ile ilgili bilgileri size http kuralları çerçevesinde iletmesi komutunu verir ve iletişim başlar. Bu protokol TCP/IP ile haberleşir. TCP bilginin doğru bir şekilde iletilmesinden, IP ise istemci ve sunucunun adresinin bulunmasından sorumludur. Http ile iletişim request ve response cümlelerinden oluşur. Browser üzerinden bir adres girildiğinde bu istek ilgili adrese gönderilir ve geriye bir cevap cümlesi döndürülür. Daha sonra browser tarafından geriye döndürülen bu cevap cümlesi işlenerek kullanıcıya ekranda gösterilir. Http connectionless bir protokol olduğundan muhabere ile ilgili socket nesneleri daima açık tutulmaz. İstek yapılır, karşılığında bir cevap alınır ve muhabere socket nesneleri derhal sonlandırılır.

Mssql ve Mysql farkı nedir?

  • İkisi de en çok kullanılan veritabanları dır,
  • Mssql adından da anlaşılacağı üzere Microsoft Corporation firmasının bir ürünüdür,
  • Mysql ise Oracle firmasının bir ürünü olup açık kaynak kodlu bir projedir,
  • Mysql genel kullanım sürümü ücretsizdir, Mysql Enterprise Edition ise ücretli bir sürüm dür,
  • Mssql in ücretsiz sürümü ise Mssql Express Edition dur.
  • Mssql i kolay yönete bilmeniz için geliştirilen Managament Stuio adlı ücretsiz araç mevcuttur.
  • Mysql’i yönetmek için kullanılan, Oracle firması tarafından geliştirilen Mysql Workbench yönetim aracıdır.
  • SQL’in açılımı Structured Query Language dir. Veritabanlarına erişim ve işlenmesi için standart dildir.
  • Mysql daha çok PHP projelerinde tercih edilir, Mssql ise C# ve ASP.Net projelerinde,
  • Mysql ücretsiz Mssql ücretli algısı yanlıştır, ikisininde ücretsiz ve ücretli verisiyonları bulunmaktadır,
  • Java ile iki veritabanı da rahatlıkla kullanılabilir,
  • Linux platformunda Mysql, Windows platformunda Mssql tavsiye edilir.

Aşağıdaki tabloda iki veritabanı arasındaki teknik veriler karşılaştırılmıştır. (Türkçe de olduğu gibi kullanılan, anlam taşıyan kelimeler olduğu gibi kullanılmıştır.)

Veritabanı Özelliği

MySQL

SQL Server

Kaynak Kodu AçıkX
Çokul platform desteği, 32bit ve 64bit (Linux ve Windows)X
Genişletilebilir Hafıza Motoru (MyISAM, InnoDB, Merge, Memory, Archive, Cluster)X
 Clustered YapıXX
ANSI SQL, SubQueries, Joins, Cursors, Prepared StatementsXX
Stored Procedures, Triggers, SQL and User-Defined FunctionsXX
Updateable ViewsXX
ACID Transactions with Commit, RollbackXX
Distributed TransactionsXX
Row-level LockingXX
Snapshot/Consistent Repeatable Reads (readers don’t block writers and vice-versa)XX
Server-enforced Referential IntegrityXX
Strong Data type support (Numeric, VARCHAR, BLOB, etc)XX
High-Precision Numeric Data typesXX
Indexing (clustered, b-tree, hash, full-text)XX
Dynamic Memory CachesXX
Unique Query Cache (stores query and result set)X
Cost-Based OptimizerXX
Unicode, UTF-8XX
XML, XPathXX
Geospatial supportXX
ReplikasyonXX
Table and index PartitioningXX
VLDB (terabytes) capableXX
High-speed, data load utilityXX
Online ve Zamanlı YedeklemeXX
Otomatik Restart/ Çökme KurtarmaXX
Otomatik Depolama Yönetimi (auto-expansion, rollback management)XX
Sıkıştırma ve Arşiv TablolarıXX
Information Schema/Data DictionaryXX
Security (GRANT/REVOKE, SSL, fine grained object privileges)XX
Built-in data encryption and decryptionXX
Built-in Task SchedulerXX
Drivers (ODBC, JDBC, .NET, PHP, etc)XX
GUI management and development toolsXX

myisam ve innodb arasındaki fark nedir?

  • İkiside tablo yapısı için işlem motorlarıdır, veritabanı veya tabloyu oluştururken seçebilirsiniz.
  • Myisam select işlemlerinde daha hızlıdır. Full text aramayı destekler.
  • innodb full-text aramayı desteklemez.
  • Insert ve Update işlemlerinde innodb daha fazla performans gösterir.
  • Myisamda tablo kilitleme yapabilirsiniz.
  • Innodb de transaction yapabilirsiniz (Commit ve Rollback), bu durum herhangi bir problemde verileri geri getirmenizi sağlar.
  • Eğer programımızda çok fazla okuma ve listeleme işlemleri var ise Myisam seçmeliyiz.
  • Programımız daha çok girdi, güncelleme ve silme işlemleri içeriyorsa innodb tercih etmelisiniz.
  • Myisan foreign key desteklemez, innodb destekler.
  • innodb, Row level-lock yapısındadır, işlem yapmak için tüm tabloyu kitlemez.
  • innodb daha fazla sistem kaynağı tüketir.
Detaylı açıklamalar;

MyISAM, MySQL’in en eski veritabanı depolama motorudur. Standart depolama motoru olarak kabul görür. Tablolar, fiziksel diskin üç ayrı konumunda tutulur. Tablo başına 64 indeks oluşturulabilir. ForeignKey kullanımını desteklememektedir.

InnoDB ise güvenlik açısından tercih edilen bir veritabanı motorudur. İlişkisel veritabanını geçişi Foreign Key sayesinde sağlamaktadır. Aynı anda birden fazla kullanıcının UPDATE/DELETE işlemlerini sorunsuz bir şekilde yapılmasını sağlayacak şekilde tasarlanmıştır.

ÖzellikMyISAMMemoryInnoDBArchive
Depolama sınırları256TBRAM64TBHiçbiri
İşlemlerYokYokEvetYok
Ayrıntı KilitlemeTabloTabloSıraSıra
MVCCYokYokEvetYok
Coğrafi veri türü desteğiEvetYokEvetEvet
Mekansal indeksleme destekEvetYokYokYok
B-tree indeksiEvetEvetEvetYok
Karma endekslerYokEvetYokYok
Tam metin dizinlerinde aramaEvetYokYokYok
Kümelenmiş indekslerYokYokEvetYok
Veri önbellekleriYokN/AEvetYok
Indeks önbellekleriEvetN/AEvetYok
Sıkıştırılmış veriEvetYokEvetEvet
Şifrelenmiş veriEvetEvetEvetEvet
Küme veritabanı desteğiYokYokYokYok
Çoğaltma desteğiEvetEvetEvetEvet
İlişki kurma destekYokYokEvetYok
Yedekleme / nokta-in-time kurtarmaEvetEvetEvetEvet
Sorgu önbelleği destekEvetEvetEvetEvet
Güncellenebilir Veri Sözlüğü için istatistiklerEvetEvetEvetEvet

Mysqli ve Mysql arasındaki başlıca farklar nelerdir?

  • Mysqli,Php üzerinden MYSQL veritabanı işlemlerini gerçekleştirmek üzer ortaya çıkan eklentidir. Açılımı MySQL Improved – Geliştirilmiş MySQL dir.
  • Mysqli eklentisi MySQL  4.1 sürüm sonrasında çıkan yeniliklere uyum sağlayabilir,.
  • Mysqli güvenilir, geliştirilmesi kolay bir yapı sağlar.
  • Mysql ise bildiğiniz üzere bir veri tabanıdır.
  • Mysqli bir veritabanı değil PHP ilse Mysql üzerinde işlemler gerçekleştirmeye yarayan bir eklentidir.
  • Sorgu sonucu dönen veriler ilave işlemlere gerek kalmadan nesneye atanabilir.
  • Mysqli kullanmanızda SQL injection ve diğer  saldırıları karşı koruma sağlayabilirsiniz. Daha yüksek performans alabilir ve daha kullanışlı fonksiyonlar yazabilirsiniz. Veritabanı karışıklığını önler, Birden fazla veritabanına bağlanma gibi bir durumda daha faydalıdır.
  • mysql genişletmesi’nin (extansion) geliştirilmesi durmuştur. Sadece hatalar giderilmektedir.
  • Benchmarklarda mysqli’nin performansı mysqli geçer.
  • Mysql genişletmesi gelişmiş veritabanı özelliklerini desteklemez.
  • Mysql genişletmesi prosedürler halinde çalışır.
  • Mysql genişletmesini yeni sürülen php sürümlerinde kullanamayabiliriz.
Detaylı açıklamalar;

PHP Sürüm 5 ve öncesinde MySQL sunuculara bağlantı sağlayan MySQL eklentisi, çok başarılı olmasına rağmen MySQL sürüm 4.1 sonrası ile çalışırken sorunlar yaşamaktadır. Ayrıca MySQL eklentisi, bu sürümle sunulan yeni özellikleri ve protokollere destek verememektedir. Bu nedenle PHP geliştirilmesi ve bakımı karmaşık olan MySQL eklentisinin yerine MySQL-i (MySQL Improved – Geliştirilmiş MySQL) eklentisini duyurmuştur.

MySQL-i eklentisi MySQL sürüm 4.1 sonrası sunulan yenilikleri etkin olarak kullanabilmekte ve güvenilir, geliştirilmesi kolay bir yapı sağlamaktadır. MySQL-i ile sunulan en dikkat çekici yenilikler şu şekildedir;

  • Object-Oriented Interface (Nesne Tabanlı Arabirim)
  • Prepared Statements (Ön Hazırlıklı Sorgular)
  • SQL İnjection ve diğer  saldırıları karşı koruma
  • Daha yüksek performans
  • Daha çok ve daha kullanışlı fonksiyonlar
  • Birden fazla veritabanına bağlanma gibi bir durumda daha faydalıdır.
  • Veritabanı karışıklığını önler.

PHP’de kendi resmi dökümantasyonunda da bunun sinyalini vermeye başlamış; “mysql” fonksiyonlarının sayfasında aşağıdaki gibi bir öneriyle karşılaşıyoruz;

Normal Bağlantı kodlarıMySQL-i bağlantı kodları
<?php
$link = mysql_connect(“Localhost”, “root”, “1234”);
mysql_select_db(“OgrenciVeritabani”);
mysql_query(“SELECT * FROM ogrenciler”);
mysql_close();
?>
<?php
$link = mysqli_connect(“localhost”, “root”, “1234”, “OgrenciVeritabani”);
mysqli_query($link, “SELECT * FROM ogrenciler”);
mysqli_close($link);
?>

mysqli_nedir

Bir veritabanını web ortamından kullanılabilmesi için bir arayüze ihtiyaç duyulur. Çoğu veritabanının kendi web arayüzleri mevcut olmakla birlikte pahalıdırlar. Bu arayüzler “veritabanı sunucu”-“web sunucu” ilişkisini kurarlar. Bu arayüzlere web programlama dili de denilmektedir.

Bazı web programlama dilleri vardır ki bunlar ücretsiz olarak temin edilebilmektedir. Bunlar web sunucu ile etkileşimli olarak çalışırlar. PHP, perl, java ve c gibi programlama dilleri bunların arasında sayılabilir. Bunlardan PHP, oracle gibi ticari olan, MySQL gibi ücretsizleri direkt desteklemenin yanında ODBC sürücülerini de (veritabanlarına baglanmada aracılık eden programlar) desteklemektedir. Böylece her veritabanını desteklemektedir.

Birbirleriyle en ideal olarak analaşan Apache web sunucu, MySQL veritabanı ve PHP dili artık kaçınılmaz üçlü olmuşlardır.

MySQL Neden Gerekli

Etkileşimli web sayfalarında kaçınılmaz olan veri kutuphanesinin bir veritabaninda olmasidir. Veriye erişim hızı, veri guvenliği, çok kisinin kullanıyor olması gibi nitelikler bir veritabanından beklenen özelliklerdir. Veritabanının ücreti, destek bulabilmek, kullanacağınız arayüz programi (PHP gibi) ile uyumluluğu gibi parametreler veritabanı seçimini etkilemektedir. MySQL veritabanında aranan bu özelliklerin olması, bu dilin seçimini sağlamaktadır.

Char ve Varchar Arasındaki Başlıca Farklar Nelerdir?

  • Veritabanı uygulamalarında metinleri tutmak için kullanılan alanlardan iki tanesi Char ve Varchar dır.
  • Char veritipi, 0 ile 255 karakter içeren verileri tutabilir.
  • Varchar ise 65bine yakın karakterde veri saklayabilir.
  • Eğer bir alan için Char tanımlamış sanız, o alanda minimum değer olsa da maksimum değer saklansa da kapladığı boyut değişmez.
  • Varchar kullanırsanız sakladığınız verinin büyüklüğü kadar yer kaplar.
  • CHAR(10) ve Varchar(10) alanları farklı boyutlarda yer kaplar.
  • Char sabit uzunlukta veri tipi olarakta bilinir, Varchar ise değişken uzunlukta veri tipi olarak bilinir.
  • Devamlı benzer veya aynı verilerle çalışıyorsanız seçmeniz gereken tip Char olmalı, örneğin T.C. Kimlik numaralarının tutulduğu bir alanın tipiniz belirlemeniz gerkiyor, T.C. Kimlik numaraları 11 adet sadece sayılardan oluştuğu için Char kullanmanız uygun olacaktır.
  • Eğer tutacağınız alan değişken ise Varchar kullanmanız performans açısından uygun olacaktır.
  • Char ve Varchar saklama alanları Unicode karakterleri desteklemez.

Oracle ve Mssql Farkı Nedir?

  • İkisi de en çok kullanılan veritabanlarındandır,
  • Mssql adından da anlaşılacağı üzere Microsoft Corporation firmasının bir ürünüdür,
  • Oracle ise Sun firmasının bir ürünüdür.
  • Oracle Database Express Edition sürümü ücretsizdir, diğer Oracle veritabanı ürünleri ücretlidir,
  • Mssql in ücretsiz sürümü ise Mssql Express Edition dur.
  • Mssql i kolay yönete bilmeniz için geliştirilen Managament Stuio adlı ücretsiz araç mevcuttur.
  • Oracle yönetmek için kullanılan çeşitli araçlar mevcuttur, bunların başında PL/SQL ve Oracle Sql Developer vardır,
  • SQL’in açılımı Structured Query Language dir. Veritabanlarına erişim ve işlenmesi için standart dildir.
  • Oracle daha çok Java ve JSP projelerinde tercih edilir, Mssql ise C# ve ASP.Net projelerinde,
  • İkisininde ücretsiz ve ücretli verisiyonları bulunmaktadır,
  • Java ile iki veritabanı da rahatlıkla kullanılabilir,
  • Linux ve Sun platformunda Oracle, Windows platformunda Mssql tavsiye edilir.
  • Oracle Windows işletim sistemi üzerinde de randımanlı çalışmaktadır.

Mysql, Mssql, Oracle Özellik Farkları Nelerdir?

ÖzellikMicrosoft SQL ServerMySQLOracle
ÖzetMicrosofts relational DBMSWidely used open source RDBMSWidely used RDBMS
Database modelRelational DBMSRelational DBMSRelational DBMS
Websitewww.microsoft.com/­sqlserverwww.mysql.comwww.oracle.com/­us/­products/­database
Dökümanwww.microsoft.com/­sqlserver/­en/­us/­default.aspxdev.mysql.com/­docwww.oracle.com/­technetwork/­indexes/­documentation/­index.html
GeliştiriciMicrosoftOracleOracle
Çıkış Yılı198919951980
Mevcut SürümlerSQL Server 2014, April 20145.6.24, April 201512 Release 1 (12.1.0.2), July 2014
LisanscommercialOpen Sourcecommercial
Servis Hizmeti Şeklinde Çalıimanonono
Geliştirme DiliC++C and C++C and C++
İşletim SistemiWindowsFreeBSD
Linux
OS X
Solaris
Windows
AIX
HP-UX
Linux
OS X
Solaris
Windows
z/OS
Data schemeevetevetevet
Typingevetevetevet
XML Desteğievet
Secondary indexesevetevetevet
SQLevetevetevet
API’ler ve diğer metotlarOLE DB
Tabular Data Stream (TDS)
ADO.NET
JDBC
ODBC
ADO.NET
JDBC
ODBC
ODP.NET
Oracle Call Interface (OCI)
JDBC
ODBC
Desteklenen Yazılım Dilleri.Net
Java
PHP
Python
Ruby
Visual Basic
Ada
C
C#
C++
D
Eiffel
Erlang
Haskell
Java
Objective-C
OCaml
Perl
PHP
Python
Ruby
Scheme
Tcl
C
C#
C++
Clojure
Cobol
Eiffel
Erlang
Fortran
Groovy
Haskell
Java
JavaScript
Lisp
Objective C
OCaml
Perl
PHP
Python
R
Ruby
Scala
Tcl
Visual Basic
Sunucu tarafındaki scriptlerTransact-SQL and .NET languagesevetPL/SQL
Triggersevetevetevet
Partitioning methodstables can be distributed across several files (horizontal partitioning); sharding through federationhorizontal partitioning, sharding with MySQL Cluster or MySQL Fabrichorizontal partitioning
Replication methodsyes, but depending on the SQL-Server EditionMaster-master replication
Master-slave replication
Master-master replication
Master-slave replication
MapReducehayırhayırhayır
Foreign keysevetevetevet
Transaction conceptsACIDACIDACID
Concurrencyevetevetevet
Durabilityevetevetevet
In-memory capabilitiesevetevet
User conceptsUsers with fine-grained authorization conceptUsers with fine-grained authorization conceptfine grained access rights according to SQL-standard

Firewall ve Proxy Arasındaki Başlıca Farklar Nelerdir?

  • Firewall Türkçe deyişle Güvenlik Duvarı, bir bilgisayarın veya bir networkun yerel veya dış tehditlerden korunması amacıyla kurulan mekanizma,
  • Firewall bir donanım veya yazılım olabilir veya ayrı bir donamım içinde donanıma özgü bir yazılım olabilir,
  • Proxy Türkçe deyişle Vekil Sunucu, internete erişen cihazların erişimi sırasında arada bir sunucu üzerinden internete erişmelerini sağlayan bir sistemdir,
  • Firewall tam olarak bir güvenlik aracıdır, Proxy ise kullanım alanına göre değişen bir güvenlik aracı olabilir,
  • Firewall’un öncelikli amacı ağa zarar vermek yada sızmak isteyenen istekleri engellemektir,
  • Firewall ve Proxy, ikiside birer geçit noktasıdır,
  • Gelişmiş Firewall sistemlerinde Proxy ayarları yapılandırılabilinir,
  • Ücretli ve Ücretsiz Proxy sunucuları kullanıcılara sunulmuştur,
  • İkisi de paket yönetim sistemleridir,
  • Proxy’ler kullanıcıların erişimini hızlandırabilir,
Detaylı Açıklamalar;

Güvenlik Duvarı veya Firewall, güvenlik duvarı yazılımı, bir kural kümesi temelinde ağa gelen giden paket trafiğini kontrol eden donanım tabanlı ağ güvenliği sistemidir. Birçok farklı filtreleme özelliği ile bilgisayar ve ağın gelen ve giden paketler olmak üzere İnternet trafiğini kontrol altında tutar. İP filtreleme, port filtreleme, Webfiltreleme, içerik filtreleme bunlardan birkaçıdır.

Birçok kişisel bilgisayar işletim sistemleri, Internet’ten gelen tehditlerine karşı korumak için yazılım tabanlı güvenlik duvarları içerir.Ağlar arasında veri aktaran birçok yönlendirici firewall bileşenleri içerir ve, birçok firewall temel yönlendirme işlevlerini gerçekleştirebilir.

İnternet küresel kullanım ve bağlantı açısından oldukça yeni bir teknoloji iken Firewall teknolojisi 1980’lerin sonunda ortaya çıkmıştır.

Proxy, internete erişim sırasında kullanılan bir ara sunucudur. Bu durumda, örneğin bir ağ sayfasına erişim sırasında doğrudan bağlantı yerine:

  • Tarayıcı vekil sunucuya bağlanır ve hangi sayfayı istediğini söyler
  • Vekil sunucu gerekiyorsa o sayfaya bağlanır ve içeriği alır
  • Vekil sunucu tarayıcıya içeriği gönderir

Bilgisayar ağlarında,bir vekil sunucu diğer sunuculardan kaynakları isteyen istemcilerin talepleri için bir aracı olarak davranan sunucudur. Bir istemci vekil sunucuya bağlanır, bazı servisler ister,örneğin bir dosya,bağlantı,ağ sayfası veya farklı bir sunucudan uygun diğer kaynaklar gibi vevekil sunucusu, kolaylaştırmak ve karmaşıklığını kontrol etmek için bir yol olarak talebi değerlendirir. Bugün birçok vekil, ağ vekilleridir.

Vekil sunucu,internete erişim sırasında ara makine olarak kullanılan makinedır. İnternete erişim sırasında vekil görevi görürler. İnternete erişim sırasında direkt bağlantı yerine bu tür bağlantılar üzerinden bağlanılır ve ana bağlantıyı isteyen makine geçici olarak kimliğini gizleyebilir. Çünkü internete bu makinalar üzerinden bağlanıldığından karşı tarafın, bağlanan makineyi değil üzerindeki vekil sunucuyu görecektir. Bu tür makineler son zamanlarda özellikle hackerlar tarafından kimlik gizlemek için pek tercih edilmiyor. Daha çok ülke kısıtlaması olan sitelere giremeyen kullanıcıların bu yöntemi kullanrak internete girebilmesi gibi. Örneğin Türkiye’de YouTube’un kapalı olduğunda bu yöntem üzerinden girilebilmesi gibi.[2]

Bu teknoloji, birçok avantaj sağlar:

  • Fazladan hız: vekil sunucu, çok ziyaret edilen sayfaları önbelleğine alabilir. Bu durumda, o sayfa ziyaret edilmek istendiğinde dünyanın öbür ucundaki bir sunucuya bağlanmak yerine önbellekteki bilgi okunur.
  • Fazladan kontrol: vekil sunucu, istenen sayfalara erişim verip istenmeyenlere erişim vermeyebilir. Kimin hangi sayfaya girdiğini bellekte tutabilir. Gerekiyorsa, içeriği değiştirerek (örneğin küfürleri silerek) verebilir.
  • Fazladan güvenlik: vekil sunucu, virüslü dosyaları otomatik olarak temizleyebilir. Ayrıca, ağda hiç kimsenin internete doğrudan erişimi olmadığı için bir virüsü veya zararlı bir programı yayma ihtimalini de azaltır.
  • Fazladan gizlilik: Özellikle Çinliler, Google ve Vikipedi gibi Çin hükümetince yasaklanan sitelere bağlanmak için bu yönteme başvururlar.
  • Asgari erişim: Kullanıcılar, özellikle hükümet tarafından yasaklanan (teknik tabiriyle “erişimi engellenen”) internet sitelerine bağlanmak için bu yönteme başvururlar.

Genelde internet servis sağlayıcılar, şirketler ve büyük ağlar (kampüs ağları gibi) tarafından kullanılır.

ERP ve CRM farkı nedir?

  • CRM (Customer Reletionship Management), Müşteri İlişkileri Yönetimi demektir,
  • ERP (Enterprise Resource Planning) kurumsal kaynak planlaması demektir,
  • İkiside işletmenizin idaresi için gerekli olan bilgisayar yazılımlarıdır,
  • CRM kullanarak Müşterilerinizi ve elinizdeki ürünlerin müşterilerinizle olan ilişkilerini takip edip yönetebilirsiniz,
  • ERP ise daha detaylı olarak CRM de içine alan, bir işletmenin tüm işlevlerini tek program altında toplayıp yönetimini kolaylaştıran yazılım sistemlerine verilen addır,
  • CRM tek başına işinizi görebilir, ancak ERP nin içinde mutlaka bir CRM olmak zorundadır,
  • ERP ticari ve mali verilerden “yönetici için anlamlı bilgiler” üretilmesini sağlar.
  • ERP iş süreçlerinde yürütülen faaliyetlerin daha katma değerli hale getirilmesini hedefler.
  • ERP tasarım, satış, hizmet süreçlerinin müşteri odaklı olarak yürütülmesi için gerekli temel bilgileri üretir.
  • ERP’in temel misyonu şirket için gerekli Yönetim Bilgi Sistemi’nin oluşturulmasıdır. Bu nedenle Resmi Muhasebe yapısı ile birlikte yönetimsel bilgilerin üretileceği Yönetim Muhasebesi yapısının kurulmasını amaçlar.
  • ERP operasyon süreçlerindeki gizli israfların ve atıl kapasitelerin ortaya çıkarılmasını kolaylaştırır.
  • ERP işlerin (örneğin, teslimatların) “tam zamanında” ve“hatasız” yürütülmesi için gerekli mekanizmaların şirket içinde oluşturulmasını sağlar.
  • ERP süreçlere performans hedeflerinin konmasını ve sonuçların izlenmesini sağlar.
  • ERP temel iş süreçleri üzerinde “sürekli iyileştirme” sistemlerinin kurulmasını mümkün kılar.
  • CRM, Bütün müşteri değer halkalarına dağılan bütünleşik çözümler
  • CRM, Gelişmiş planlama ve tahmin araçları
  • CRM, İşbirlikçi ticaret proseslerini destekler
  • CRM, Kaynak zincirine dikişsiz ilişki kurmayı sağlar
  • CRM, Ticari islem yönetim yetenekleri sağlar
  • CRM, Fiziksel olarak tatmin etme ve yerine getirebilme sağlar,

Detaylı Açıklamalar;

Müşteri ilişkileri yönetimi programları işletmeler için model oluşturmaktadır. İşletmelerin mevcut müşterilerini korumaları, gelecekte müşteri sadakati oluşturmaları açısından müşteri beğenilerine uygun şekilde hareket edebilecekleri yazılımlar ile müşteri bilgilerini kayıt altında tutarak işletme davranışlarını geliştirmeye müşteri ilişkileri yönetimi denilir. Satış programıPazarlama programıMüşteri servisleri programı ve teknik destek programı kısımları müşteri ilişkilerinin temel yapısını oluşturur.

  1. Müşteri ilişkileri yönetimi
  2. 1.Müşteri ilişkileri yönetimi tipleri
  3. 1.1.Satış gücü otomasyonu
  4. 1.2.Pazarlama
  5. 1.3.Müşteri servisleri ve destek
  6. 1.4.Toplantılar, gündem
  7. 1.5.Hedefler
  8. 1.5.Sosyal medya
  9. 1.6.Üyelikler
  10. 2.Müşteri ilişkileri başlangıç sorunları
  11. 3.Müşteri ilişkileri programları
  12. 4.İlgi alanları
  13. 5.Teknolojiler

Pazarlama, CRM üzerinden yapılan pazarlama süreçleri ve pazarlama sonuçlarını değerlendirme üzerine oluşturulur. Çok noktadan farklı kanallarla yapılan satış pazarlama faaliyetlerinin tüm süreçleri kayıt altına alınarak pazalamanın aktif olarak tamamlanması sağlanır. Kampanyalar, İndirimler, Kuponlar, Kart sistemleri gibi müşteri ilgisini çekmeye yönelik yapılan CRM taraflı pazarlama faaliyetleri Kanallardaki faaliyetler;

CRM Kanal Faaliyetleri

  • Adrese teslim pazarlama ve CRM Adrese mektup, bülten, broşür olarak yapılmakta.
  • Haberler ve Basın pazarlama ve CRM Haberlerde Web sitesi ve mesleki web sitesi haber sitesileri, Yazılı ve görsel basın olarak haber niteliğinde.
  • Mobil ve Ev telefonu pazarlama ve CRM Telefon ve sms ile bildirilerek, Mail üyelikleri ve mail haber sistemleri ile.
  • Sosyal pazarlama ve CRM Sosyal medya Facebook, Twitter, Google+, Linkedin üzerinden tanıtımlarda.
  • Video pazarlama ve CRM Video tanıtım olarak Youtube, Vimeo ve dailiy motion üzerinden.
  • Sıcak Pazarlama ve CRM saha çalışması ve sıcak temas olarak pazarlama faaliyetleri yapılmaktadır.

Ürün geliştirmesi, Müşteri ihtiyaçları, Müşteri istekleri, Temel gereksinimler, Ürün ya da hizmetin giderdiği temel sorun ve sorunlar, Kullanım özellikleri konularında müşterilerin ve firmaların bir ekosistem kurmaları gerekmektedir. Ürün ve hizmetler kendilerini iyileştirmek ve geliştirmek zorundadır. Geliştirme ve destek süreçlerinde müşteri servis ve destek sistemi ne kadar iyi yürürse ürün başarısı aynı oranda yükselir ve ürün ömründe artma olur. Satış ve karlılık servis destek süreçlerine birebir bağlıdır. Müşteri ortamları ile üretim ortamlarının yakınlaştırılması ( Kullanım Ortamı ) Ürün ya da hizmet müşteri tarafından kullanılan, tüketilen ortama en uygun şekilde hazırlanıp tüketim ortamındaki araçlara ve ihtiyaçlara göre yapılandırılması gereklidir. CRM geliştirme ortamı ile saha ortamı arasındaki farklılıkları en aza indirmeyi sağlayacak ihtiyacı en az bilgi ve destek ile kullanılmayı sağlayan üretim ve hizmete yaklaşmayı sağlamak amacıyla süreçleri kayıt altına alır.

Dilek, İstek, Şikayetler Müşteriler tarafından iletilen dilek, istek ve şikayetler CRM süreçleri açısından büyük önem oluşturur. Müşteri kendi istediklerini üretim ve işletme açısından tam olarak ifade edemeyebilir. Bu süreçlerin kayıt edilerek konu tam olarak anlaşılması sorun giderilmesi ürün ve pazarlama sürecinin başarısını sağlar.


ERP, işletmelerde mal ve hizmet üretimi için gereken işgücü, makine, malzeme gibi kaynakların verimli bir şekilde kullanılmasını sağlayan bütünleşik yönetim sistemlerine verilen genel addır. Kurumsal kaynak planlaması (KKP) sistemleri, bir işletmenin tüm veri ve işlemlerini bir araya getirmeye veya bir araya getirilmesine yardımcı olmaya çalışan ve genelde kullanımı kolay olan sistemlerdir. Klasik bir KKP yazılımı işlem yapabilmek için bilgisayarın çeşitli yazılım ve donanımlarını kullanır. KKP sistemleri temel olarak değişik verilerin saklanabildiği bütünleşik bir veritabanı kullanırlar.

Kurumsal kaynak planlaması anlam olarak, işletmenin tüm kaynaklarının birleştirilip, verimli olarak kullanılması için tasarlanmış sistemlere denmektedir. KKP kavramı ilk olarak üretim çevrelerinde kullanılmaya başlansa da; günümüzde KKP sistemleri çok daha geniş bir alanda telâfuz edilmektedir. KKP sistemleri, bir işletmenin iş alanına ya da ismine bakmadan, işletmenin tüm temel işlemlerini kendi yapısı altında toplayabilir. İşletmenler, kâr amacı olmayan kuruluşlar, vakıflar, hükümetler veya diğer varlıklar KKP sistemlerini kullanabilirler.

KKP sistemleri iki veya daha fazla yazılımı bir araya getirerek bir yazılım paketi halinde de sunulabilir. Bu gibi sistemlere KKP yazılım paketleri denir. Teknik olarak ise KKP yazılım paketleri hem maaş bordro akışlarını hem de muhasebe işlevlerini bünyesinde barındırır.

Buna rağmen, KKP yazılım paketi tanımı daha çok büyük ve geniş uygulamalar için kullanılmaktadır. Bir KKP sistemi kullanıcının, iki veya daha fazla bağımsız yazılımın arayüzü ile karşılaşmasını engeller ve ek avantajlar sağlar. Yazılımların standartlaşmasını, birçok yazılım kullanmak yerine tek bir yazılım kullanılmasını, tüm veriler genellikler tek bir veritabanında saklandığından kolay ve yüksek rapor alma, durum değerlendirme gücünü sağlar.

Bir KKP yazılımı bünyesinde genelde bağımsız olarak çalışan üretim, finans, müşteri ilişkileri yönetimi, insan kaynakları, stok yönetimi gibi çeşitli uygulamalar bulunabilir.

Veritabanı notları

SELECT INTO deyimi
SELECT INTO deyimi daha çok tabloların kopyalarını yapmakta veya bir kümenin kopyasını disk üzerinde oluşturmak için kullanılır.
Yapı

Yedekleme amacıyla kopya oluşturma
Örneğin Kişiler tablosunda bir takım değişiklikler yapılacaksa önceden Kişiler tablosunun yedeğini almakta yarar vardır.

Bu örnekte Kişiler tablosunun Kişiler_yedek tablosuna bir kopyası yazılmaktadır. Bu tablonun ayni server üzerinde olan bir başka veritabanına kopyası da yapılabilir.
Örnek:

Bu SQL deyimi Kişiler tablosunun bir kopyasını Northwind veri tabanına adı Kişiler olan bir tabloya kopyalayacaktır. Her iki durumda da INTO dan sonra gelen tablo adı, kopyanın yapılacağı veritabanında bulmamalıdır. Tüm bir veri tabanını kopyalamak yerine, INTO deyimi ile bir SELECT sonucu elde edilen bir sonuç kümesini bir tablo haline getirebiliriz.
Örnek:

Bu SQL deyimi 9 nolu öğrencinin aldığı dersleri, derslerin alındığı dönemleri ve notları TRANSRIPT_9 adlı bir tabloya kopyalamaktadır.
CREATE VIEW deyimi
Yapı

Önce view deyiminin ne olduğunu öğrenelim. Bir view, bir SELECT deyimi ile elde edilen bir sonuç kümesine dayalı oluşturulan bir sanal tablodur. Bunu anlamak için aşağıdaki örneği inceleyelim.
Örnek:

Bu SQL deyimi bize SQL Server içinde her zaman kullandığımız veritabanında TRANSRIPT adında bir view oluşturur. Bu view bir sanal tablo olarak düşünülebilir. Bu sanal tablonun kolonları ve kolonların alındığı özgün alanlar düşünülerek aşağıdaki gibidir:

Artık bu sanal tabloyu SELECT deyimlerinde kullanabiliriz.
Örnek:

Bir başka view örneği verelim.
Örnek:

Şimdi bu view bir SELECT deyiminde kullanalım
Örnek:

Not: Veri tabanı view da oluşan datayı saklamaz. Dolayısıyla bir viewun geçtiği SQL deyimi her çalıştırıldığında ilgili view sanal kümeyi yeniden oluşturur.

VPN ve Firewall arasındaki fark nedir?

  • VPN Türkçe deyişle Sanal Özel Ağ, ağa bağlı bir cihazın sanal diğer bir ağ üzerinden iletişim sağlamasıdır,
  • Firewall Türkçe deyişle Güvenlik Duvarı, bir bilgisayarın veya bir networkun yerel veya dış tehditlerden korunması amacıyla kurulan mekanizma,
  • Firewall tam olarak bir güvenlik aracıdır, VPN ise kullanım alanına göre değişen bir güvenlik aracı olabilir,
  • Firewall bir donanım veya yazılım olabilir veya ayrı bir donamım içinde donanıma özgü bir yazılım olabilir
  • VPN internet üzerinde verilerini korumak ve bağlantılarını şifrelemek için kullanılabilir
  • VPN üzerinden geçen tüm trafik çalınmaya veya okunmaya karşı şifrelenir
  • VPN bir güvenlik geçitidir,
  • Firewall’un öncelikli amacı ağa zarar vermek yada sızmak isteyenen istekleri engellemektir,
  • Firewall ve VPN, ikiside birer geçit noktasıdır,
  • Ücretli ve Ücretsiz VPN ağları kullanıcılara sunulmuştur,
  • İkisi de paket yönetim sistemleridir

Güvenlik Duvarı veya Firewall, güvenlik duvarı yazılımı, bir kural kümesi temelinde ağa gelen giden paket trafiğini kontrol eden donanım tabanlı ağ güvenliği sistemidir. Birçok farklı filtreleme özelliği ile bilgisayar ve ağın gelen ve giden paketler olmak üzere İnternet trafiğini kontrol altında tutar. İP filtreleme, port filtreleme, Webfiltreleme, içerik filtreleme bunlardan birkaçıdır.

Birçok kişisel bilgisayar işletim sistemleri, Internet’ten gelen tehditlerine karşı korumak için yazılım tabanlı güvenlik duvarları içerir.Ağlar arasında veri aktaran birçok yönlendirici firewall bileşenleri içerir ve, birçok firewall temel yönlendirme işlevlerini gerçekleştirebilir.

İnternet küresel kullanım ve bağlantı açısından oldukça yeni bir teknoloji iken Firewall teknolojisi 1980’lerin sonunda ortaya çıkmıştır.

Virtual Private Network’ün, yani Sanal Özel Ağ‘ın kısaltmasıdır. sayesinde ağlara uzaktan erişim sağlanır. VPN sanal bir ağ uzantısı oluşturduğu için, VPN kullanarak ağa bağlanan bir cihaz, fiziksel olarak bağlıymış gibi o ağ üzerinden veri alışverişinde bulunabilir. Kısacası Virtual Private Network, İnternet ya da başka bir açık ağ üzerinden özel bir ağa bağlanmayı sağlayan bir bağlantı çeşididir. VPN üzerinden bir ağa bağlanan kişi, o ağın fonksiyonel, güvenlik ve yönetim özelliklerini kullanmaya da devam eder. En önemli iki uygulaması OpenVPN ve IPsec’dir.

VPN istemcisi, İnternet üzerinden bağlantı kurmak istediği kaynakla sanal bir noktadan-noktaya (point-to-point) bağlantı kurar, kaynak ya da uzaktan erişime geçmek istediğisunucu kimlik bilgilerini kontrol eder ve doğrulama sonrasında istemciyle uzaktan erişime geçtiği sunucu arasında veri akışı gerçekleşir. Veriler, akış sırasında noktadan-noktaya bağlantı gibi üst bilgi kullanılarak kapsüllenir. Üst bilgi, verilerin bitiş noktasına erişimleri için paylaşılan veya ortak ağ üzerinden yönlendirme bilgileri sağlar.  Özel ağ bağlantısını taklit etmek için, gönderilen veriler gizlilik amacıyla şifrelenir. Paylaşılan veya ortak ağda ele geçirilen paketlerin şifreleri, şifreleme anahtarları olmadan çözülemez. Özel ağ verilerinin kapsüllendiği ve şifrelendiği bağlantı VPN bağlantısı olarak bilinir.

İki çeşit VPN bağlantısı vardır. İlki uzaktan erişim VPN, diğeri ise siteden siteye VPNdir.

Proxy, internete erişim sırasında kullanılan bir ara sunucudur. Bu durumda, örneğin bir ağ sayfasına erişim sırasında doğrudan bağlantı yerine:

  • Tarayıcı vekil sunucuya bağlanır ve hangi sayfayı istediğini söyler
  • Vekil sunucu gerekiyorsa o sayfaya bağlanır ve içeriği alır
  • Vekil sunucu tarayıcıya içeriği gönderir

Bilgisayar ağlarında,bir vekil sunucu diğer sunuculardan kaynakları isteyen istemcilerin talepleri için bir aracı olarak davranan sunucudur. Bir istemci vekil sunucuya bağlanır, bazı servisler ister,örneğin bir dosya,bağlantı,ağ sayfası veya farklı bir sunucudan uygun diğer kaynaklar gibi vekil sunucusu, kolaylaştırmak ve karmaşıklığını kontrol etmek için bir yol olarak talebi değerlendirir. Bugün birçok vekil, ağ vekilleridir.[1]

Vekil sunucu,internete erişim sırasında ara makine olarak kullanılan makinedır. İnternete erişim sırasında vekil görevi görürler. İnternete erişim sırasında direkt bağlantı yerine bu tür bağlantılar üzerinden bağlanılır ve ana bağlantıyı isteyen makine geçici olarak kimliğini gizleyebilir. Çünkü internete bu makinalar üzerinden bağlanıldığından karşı tarafın, bağlanan makineyi değil üzerindeki vekil sunucuyu görecektir. Bu tür makineler son zamanlarda özellikle hackerlar tarafından kimlik gizlemek için pek tercih edilmiyor. Daha çok ülke kısıtlaması olan sitelere giremeyen kullanıcıların bu yöntemi kullanrak internete girebilmesi gibi. Örneğin Türkiye’de YouTube’un kapalı olduğunda bu yöntem üzerinden girilebilmesi gibi.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir