Javascript unary plus (+) operator

30 Haz

Javascript ve diğer programlama dillerinde artı (+) ya da plus (+) operatörü,  toplama işlemi için kullanılmaktadır. Ancak (+) operatörünün Javascript dilinde geliştiricilere avantaj sağlayan bir özelliği daha bulunmaktadır. (+) operatörü, önünde bulunduğu operand eğer sayı değilse, onu sayıya dönüştürmeye çalışır. Operatörün kullanımı şu şekildedir:

+degisken

Yani sadece değişkenin önüne bir (+) işareti eklenir.

Dönüştürülebilen Türler

(+) operatörü aşağıdaki türleri sayıya dönüştürebilir:

  • string (sayı olarak)
  • null
  • boolean
  • integer (pozitif veya negatif)
  • float (pozitif veya negatif)
  • 0x formatındaki onaltılık sayılar.
  • scientific (exponent)  bilimsel üslü sayılar.

Dönüştürülemeyen Türler

(+) operatörü, sayıya dönüştüremediği değerleri NaN olarak verir.

  • undefined
  • string (yazılar)

Örnek

console.log(+”09″);  // Output: 9

console.log(+null);  // Output: 0

console.log(+”7″);   // Output: 7

console.log(+”-7″);  // Output: -7

console.log(+”-3.14″);  // Output: -3.14

console.log(+”3.14″);  // Output: 3.14

console.log(+false);   // Output: 1

console.log(+false);  // Output: 0

console.log(+”0xFF”);  // Output: 255

console.log(+”123e-5″);  // Output: 0.00123

console.log(+”xxx”);   // Output: NaN

console.log(+”undefined”);   // Output: NaN

Sonuç

(+) operatörü yani unary plus operatörünün Javascript dilinde kullanımı örneklerle desteklenerek incelenmiştir. (+) operatörünün pek bilinmeyen ve kullanılmayan bir kullanımı anlatılmıştır.

Putty Kullanıcı Oturum Bilgileri ile Kısayol Oluşturmak

14 Şub

Putty Nedir?

Putty, windows işletim sistemi üzerinden ssh protokolü ile bağlanılabilen  sistemlere, erişim yapabilmek amacıyla kullanılan bir terminal uygulamasıdır. Program, tek bir exe şeklinde indirilmektedir ve kurulum yapılmamaktadır. Uygulamanın arayüz görünümü aşağıdaki gibidir.

Bu arayüz kullanılarak Linux gibi işletim sistemlerine, terminal aracılığı ile erişebilmek mümkündür. Ancak, birden fazla işletim sistemine erişmek istediğimizde her defasında bu ara yüzden kullanıcı erişim bilgilerini girmek biraz zaman alıcı bir yöntemdir. Putty.exe programı, farklı kısayollar üretilerek birden fazla oturum bilgisi ile kaydedilebilmektedir.

Bu işlem için masa üstüne sağ tıklayarak yeni kısayol oluşturulur.

Kısayol ayarlarında, Putty.exe dosyası seçilir.

Oluşturulan kısayola sağ tıklayarak özellikler penceresinde Hedef bölümüne aşağıdaki şekilde kullanıcı bilgileri girilebilir.

"C:\Program Files\PuTTY\putty.exe" -ssh bayram@172.16.1.110 -pw PaSwOrD

İşlem tamamlanmıştır. Kısayola çift tıklayarak, kullanıcı oturum bilgileri girilmeden direk terminal açılacaktır.

Danimarkalı Programcılar

2 Oca

Bir konu hakkında okuduğum bilgilerin temeline inmeyi ve o konunun yazarları hakkında bilgiler edinmeyi alışkanlık haline getirdim. Okuduğum yazı ve makalelerde karşılaştığım programcıların özelliklerini ve çalışma alanlarını incelediğimde karşıma çıkan bazı ortak özellikler farkettim. Bu nedenle, bu yazıda Danimarka kökenli programcılardan ve bu programcıların dikkatimi çeken ortak özelliklerden bahsetmek istedim.

Bjarne Stroustrup
1950 doğumlu olan Bjarne Stroustrup, Columbia Üniversitesi’nde profesördür. New York’ta Morgan Stenley’in genel müdürüdür. C++ programlama dilini tasarlamış ve uygulaya geçirmiştir. C++ ile birlikte Object Oriented Programming felsefesinin temelini atmıştır.

Anders Hejlsberg
1989 yılında Borland firmasında Turbo Pascal ve sonrasında Delphi programlama dillerini geliştirdi. 1996 yılında Borland firmasından ayrılarak Microsoft ile çalışmaya başlamıştır. Microsoft tarafında C# programlama dilini geliştirmektedir.

David Heinemeier Hansson
1979 doğumlu olan Hansson, Ruby on Rails programlama dilinin çatısını oluşturmuştur.

Lars Bak
Javacript ve Sanal makineler üzerinde uzman olan Lar Bak, Google tarafından üretilmiş olan Chrome tarayıcısında da kullanılan olan V8 Javascript motorunu geliştirmiştir.

Rasmus Lerdorf
Rasmus Lerdorf, PHP web programlama dilinin mucidi ve Apache sunucu projesi mühendislerindendir. Danimarka kökenli Kanadalıdır.

Yukarıda bahsedilen programcıların tümünün ortak özelliği, Danimarka kökenli olmaları ve çok önemli programlama dillerini geliştirmiş olmalarıdır.

Programlama dillerinin temelinde Biçimsel diller ve Automata teorisi yatmaktadır. Danimarkalı programcıları bir dil geliştirmeye iten şey nihayetinde bu teorinin iyi benimsenmiş olması olabilir. Bundan daha da önemlisi, İskandinav(Danimarka, İsveç ve Norveç) ülkelerinin dünyaca ünlü gelişmiş bir eğitim sistemine sahip olmaları olabilir.

SSL Güvenlik Protokolü ve SSL Sertifikası

29 Haz

İş dünyasının ve ticaretin internet ortamına taşındığı günden itibaren internetin güvenliği sürekli sorgulanmıştır. Milyonlarca internet site arasından müşteri bilgilerinin güvenliğini ve mahremiyetini sağlayanlar öncelikli olarak tercih edilmiş ve rekabette bir adım önde olmuştur.

İnternet üzerinden yapılan iletişimin güvenliği noktasında iki önemli soruna çözüm bulunmalıdır.

  1. Veri gönderen ve alan tarafın, iletişim süresi boyunca birbirlerini tanıdıklarından emin olmaları gerekir. Alıcı tarafın, üçüncü şahıslar olması durumunda kişisel bilgiler, hesaplar gibi önemli verilerin güvenliği tehlikede demektir.
  2. Alıcı taraf, gönderilen verinin iletişim yolu üzerinde hiç değiştirilmeden geldiğinden emin olmak durumundadır.

Uzmanlar güvensiz ağ üzerinde güvenlik üzerinde kafa yorarak http protokolüne güvenlik mekanizmasını ekleyip https protokolünü oluşturmuşlardır.

  • http: hyper text transper protocol.
  • https: secured  hyper text transper protocol.

HTTP Protokolü

Protokol kavramı bilgisayar dünyasında gerçek hayatta ki sözlük anlamından farksızdır. Günlük hayatta protokoller iki taraf arasında uyulacak kuralları belirlemek amacıyla imzalanan anlaşma metnidir. Bilgisayar dünyasında ise haberleşen taraflar arasında belirlenen dijital iletişim kurallarıdır. Gönderen tarafın ve alıcı tarafın ilgili protokol kurallarına göre veri göndermesi ve alması gerekmektedir. HTTP protokolü sunucudaki 80 numaralı port üzerinden haberleşir.

HTTP protokolü, belli kurallar dahilinde istemci ve sunucu arasında talep/cevap göndermeyi sağlayan bir protokoldür.

https-ranking-signal-02 - Kopya

Örneğin bir tarayıcı sunucuya gönderdiği talepte protokol gereği şunları söyler:

  • Benim metodum GET,
  • Ulaşmak istediğim kaynak URL şudur,
  • QueryString parametrelerim şunlar,
  • Kabul ettiğim Accept-Encoding gzip, deflate
  • Tarayıcı dilim en-EN
  • Tarayıcı bilgilerim şunlar gibi.

HTTP protokolünün kurallarını, sunucu bilgisayar da bildiği için tarayıcının ne söylediğini anlayabilir ve ona göre ilgili kaynaktaki bilgiyi cevap olarak geri gönderir.

HTTP protokolü güvenlik gerektirmeyen bir ağ üzerinde çalışabilmek amacıyla tasarlanmıştır.

HTTPS Protokolü

HTTPS protokolünün oluşturulma amacı güvensiz bir ağ ortamında güvenli bir iletişim yolu oluşturmaktır. Çünkü HTTP protokolü man-in-the-middle diye tabir edilen saldırılara açıktır. Bu tür saldırılarda ağı dinleyen saldırganlar, kişisel hesap bilgilerini ve parolaları kolay bir şekilde ele geçirebilirler. HTTPS bu tür saldırılardan korunmak amacıyla tasarlanmış bir protokoldür. HTTPS = HTTP + SSL şeklinde bir formül ile ifade edebiliriz. HTTPS protokolü sunucudaki 443 numaralı port üzerinden haberleşir.

https-ranking-signal-02

Bir web sitesinde https protokolünün kullanılmasını gerektiren durumlar özetle şu şekildedir.

  • E-ticaret ve ödemek işlemleri gerçekleştirilen sitelerde maddi kayıpları önlemek amacıyla kullanılır.
  • Kişisel hesapların oluşturulduğu sitelerde kişisel verilerin korunması ve kullanıcı güvenliği amacıyla kullanılır.
  • Kullanıcıların kötü niyetli şahıslar tarafından oluşturulan benzer sitelere gitmesini engellemek için bilgilendirmek amacıyla kullanılır.

https ile veri mahremiyeti ve bütünlüğünü sağlamak amacıyla verinin şifrelenmesi ve iletişime geçilen sunucuların güvenliği doğrulanmış olması gerekmektedir. Veri şifrelemesi için doğrulanmış ve güvenilir sunucu sertifikaları kullanılır. Bu sertifikalara SSL sertifikaları denir. SSL sertifikaları, SSL protokolünün bir parçasıdır.

SSL Protokolü

SSL protokolü, ağ üzerinden gönderilen bilginin sadece doğru adreste deşifre edilerek okunabilmesi amacıyla tasarlanmış kriptolama protokolüdür. Protokol kuralları gereği gönderilen bilgi gönderici tarafında şifrelenir, ve sadece ulaşması istenen tarafta deşifre edilmesi garanti altına alınır. Böylece her iki tarafta doğrulamalar yapılarak veri mahremiyeti ve bütünlüğü sağlanmış olur.

ssl

Veri şifrelemede güvenliğin seviyesi şifreleme anahtarının uzunluğuna göre değişir. Örneğin 8 bit anahtar 0-255 arası değerler alacağından 256 olasılık sıra ile denenerek anahtar bilgisi elde edilebilir. SSL protokolünde genelde 128 ve daha fazla bit ile şifreleme kullanılır. 128 bit şifreleme durumda 2128 adet değişik anahtar kullanılmaktadır. 128 bitlik şifrenin çözülmesi için çok büyük yatırım maliyetleri ve çok uzun süre gereklidir.

SSL protokolü ile iletişim kurulabilmesi için SSL sertifikalarına ihtiyaç duyulur ancak olmazsa olmaz bir şart değildir.

SSL Sertifikaları

SSL Sertifikaları, internet işlemlerini güvenli hale getiren veri şifreleme işleminin önemli bir bileşenidir. Sertifikalar, veri gizliliğini ve bütünlüğünü sağlamak amacıyla web sitelerinin kimlik bilgisini doğrulayan dijital belgelerdir. SSL sertifikaları SSL protokolü aracılığıyla kullanıcıların güvenli bir oturum başlatmalarını sağlar. Sertifika olmadan şifreleme anahtarları ve web sitesini tanıtan şirket bilgileri olmayacağından güvenli bir bağlantı sağlanamaz.

Sertifikalar tanınmış resmi kuruluşlar tarafından sağlanır. Bu kuruluşlara Certificate Authority(CA) denir. Sertifika içeriğinde veri şifreleme için kullanılacak olan bir public key ve sertifika veren kuruluş bilgileri bulunur. Sertifika veren kuruluşlar istemci bilgisayarların sertifika depolarında bulunduğundan sunucu ile iletişime geçen bir internet tarayıcısı bize ilgili sitenin sertifikasının güvenilir bir kuruluş tarafından verilip verilmediğini veya geçerli olup olmadığını uyarılar şeklinde belirtir.

HTTPS ile Güvenli İletişimin Adımları

HTTPS protokolü üzerinden bir internet tarayıcısı ve sunucu arasında gerçekleştirilen iletişim adımları şu şekilde gerçekleşir.

https://www.thesslstore.com/blog/wp-content/uploads/2016/02/howsslworks-1.png
https://www.thesslstore.com/blog/wp-content/uploads/2016/02/howsslworks-1.png

 

Adım-1: İstemci internet tarayıcısında https protokolü üzerinden sunucuya bir talep gönderir.

Adım-2: Sunucu kendisine ait şifreleme yöntemini belirten genel anahtarı(public-key) bulunduran bir sertifikayı istemciye gönderir.

Adım-3: İstemci tarayıcısı, sertifikanın:

  • Güvenli bir CA tarafından üretilip üretilmediğini,
  • Sertifikanın hala geçerli olup olmadığını,
  • Sertifikanın ilgili siteye ait olup olmadığını kontrol eder.

Adım-4: Tarayıcı public-key kullanarak rasgele simetrik şifreleme ile bilgileri şifreleyerek sunucuya gönderir.

Adım-5:Sunucu simetrik şifreyi private-key yardımı ile çözerek veriye ulaşır.

Adım-6: Sunucu istemciye html dökümanını şifreleyerek geri gönderir.

Adım-7: İstemcinin internet tarayıcısı şifreyi çözerek html dökümanını görüntüler.

Anlamsal Yazılım Sürüm Numaraları – Semantic Versioning

25 Ağu

Bir yazılım ürünü hakkında bilgi edinmek istediğimizde About(Hakkında) diyalog kutuları veya Readme(Beni Oku) metin dosyalarına bakarız. Bilgiler içerisinde yazılım adı, şirket adı, telif hakkı gibi bilgiler yanında yazılımın sürüm numaraları da bulunur.

Yazılım ürünü, bir masaüstü programı ise hakkında kutusu aşağıdaki gibi olacaktır:

internet explorer
internet explorer about box

Bir .Net kütüphanesi ise AssemblyInfo dosyasında versiyon numarası aşağıdaki gibi olacaktır:

.Net Kütüphanesi AssemblyInfo
.Net Kütüphanesi AssemblyInfo

Her iki durumda da versiyon numaraları noktalarla ayrılmış 4 adet sayıdan oluşmaktadır. Bazı yazılım ürünleri, 3 basamaklı şekilde gösterilmektedir. Öncelikle bu ifade şekillerinin ne anlama geldiğini bilmeliyiz ki yazılımın bize ne söylemek istediğini anlayalım.

version control
sürüm numaraları

Genellikle 1.0.35.40 gibi dört sayıdan oluşan yazılım sürüm numaralarının her bir basamağı:

  1. Basamak Major
  2. Basamak Minor
  3. Basamak Build
  4. Basamak Revision

olacak şekilde ifade edilmektedir.

Burada 1.0.40 gibi üç basamaklı sürüm numaraları için bir not düşecek olursak:

  1. Basamak Major
  2. Basamak Minor
  3. Basamak Revision

şeklinde ifade edilmektedir. Yani Build basamağı ihmal edilmiştir.

1 Major: Yazılım sürümünün ilk basamak numarası, büyük(major) sürüm numarasıdır. Bir yazılımın ilk ana sürümü için bu numara 1 olacaktır. Yazılımda köklü değişiklikler olduğunda bu versiyon numarası değiştirilir. Örneğin yazılım geliştirme sürecinde bir teknoloji değişikliği yapıldığında veya ana işlevlerde değişiklikler yapıldığı durumlarda major sürüm numarası bir arttırılır.

2 Minor: Yazılım sürümünün ikinci basamak numarası, küçük(minor) sürüm numarasıdır. Yazılımın çalışma şeklini değiştirmeyen yeni özellikler eklendiğinde, service pack gibi iyileştirici düzenlemeler yapıldığında minor sürüm numarası bir arttırılır.

3 Build: Yazılım sürümünün üçüncü basamak numarası, geliştirme sürecinde tamamlanan iterasyonları ifade eden sürüm numarasıdır.  SDLC (Software Development Life Cycle) methodolojilerini uygulayan takım çalışmalarında Waterfall veya Spiral gibi iterasyon temelli döngüler tamamlandığında belli modüller oluşur. Her döngü tamamlandığında build sürüm numarası bir arttırılır.

4 Revision: Yazılım sürümünün dördüncü basamak numarası, düzeltilen hataların(bug) sayısını gösteren sürüm numarasıdır. Hiçbir yazılım mükemmel değildir. Gözden kaçan hatalı noktalarda yazılım istendiği şekliyle çalışmayacaktır ve bu noktaların düzeltilmesi gerekecektir. Her hata düzeltme işlemi sonrasında dördüncü sürüm numarası bir arttırılır.

Kaynaklar:
http://semver.org/
https://www.open-mpi.org/software/ompi/versions/

 

Blog sayfam 4 yaşında

19 Ağu

Bugün 19 Ağustos 2015. Blog sayfam 4 yaşında. Geride bıraktığımız senelerde birçok yeni konuyu paylaşma fırsatı buldum. Olumlu olumsuz birçok eleştiri aldım. Bir o kadar yeni arkadaş edinme fırsatı buldum. Özelden gelen sorulara elimden geldiğince cevap vermeye ve sizlere yardımcı olmaya çalıştım. Özetle işin hakkını vermeye çalıştım.

Yazsam da yazmasam da zaman her türlü geçiyor. Yazmayı ve paylaşım yapmayı, geçen zamanı boş geçirmemek adına faydalı bir aktivite olarak görüyorum.

Sayfamı oluştururken belli bir yazı hedefi oluşturmadım. Fakat epeyce yazı ve yorum birikimi oldu. Bu bağlamda beni sürekli gelişime iten okuyucularıma da sonsuz teşekkürlerimi sunuyorum.

Önümüzdeki yılda yeni yazılarda buluşmak dileğiyle…

HTTP Content Negotiation Kavramı

16 Mar

Content Negotiation işleyişi HTTP protokolüne özgü bir kavramdır. Anlam olarak tercüme edecek olursak, client ve server arasında yapılan bir içerik anlaşması veya müzakeresidir diyebiliriz.  Amacı, aynı URI ile farklı döküman türlerinde içerik sunabilmektir. Yani daha genel bir ifadeyle kaynak gösterim şeklinin kullanıcılar tarafından belirlenmesi diyebiliriz. Content Negotiation ile ilgili resmi dökümanlar buradaki w3.org sayfasında bulunmaktadır.

Content Negotaition 1.1
Content Negotaition 1.1

Kullanıcıların sunucu kaynaklarına ulaşmak için kullandıkları internet tarayıcıları kendi yetenek türlerine göre kaynak türünü seçmek için HTTP protokolünde belirlenmiş olan kurallara uygun talepte bulunurlar. Örneğin bir X tarayıcısı JPEG dökümanlarını işleyebilecek yeteneği yoksa fakat PNG dökümanlarını işleyebiliyorsa sorgu sırasında bu isteğini HTTP Accept Header (istek başlığı) bilgisi olarak sunucuya iletir. Örneğin Accept istek başlığı ile sunucuya kullanıcının medya türü tercihini Accept:image/png şeklinde belirtir.

Burada Accept istek başlıkları superset/subset biçiminde temsil edilmektedir. Örneğin Accep:image/png örneğinde “image superset’tir, “png ise subset’tir.

Örnek medya türleri için Accept Header bilgileri:

  • Accept: application/json
  • Accept: image/png
  • Accept: image/*
  • Accept: text/xml

Accept istek başlığında birden fazla tercih de belirtilebilir. Örneğin:

Accept: text/html, text/xml, image/jpeg, */*

Burada talebi gönderen taraf text/html, text/xml, image/jpeg ile açıkça belirtilmiş medya türlerinin tercih ettiğini, bunun yanında */* ile farklı medya türleri varsa onları da kabul edebileceğini  ifade etmektedir. Burada sunulan bir dizi medya türü vardır. Bu medya türlerine üstünlük katsayısı vererek öncelik tercihi yapmak da mümkündür. Örneğin:

Accept: text/html, text/xml, image/jpeg, */* ; q=0.01

Üstünlük katsayısı 1.0 ve 0.0 arasında bir değer alır ve “q” ile gösterilir. Burada text/html gibi üstünlük katsayısı belirtilmemiş türlerin katsayısı otomatik olarak 1.0 atanır. Ancak */* kalıbı 0.01 gibi düşük bir öncelik olarak belirlenmiştir.

İnternet tarayıcıları medya tiplerine göre kendi öncelik katsayılarını belirlerler. İnternet tarayıcıları kullanmadan fiddler gibi bir araç yardımıyla HTTP talepleri oluşturup, Header seçeneklerini kendimiz belirleyebiliriz.

Bir kaynaktan gelen dökümanın medya türü farklı olabileceği gibi dil seçimi de farklı olabilmektedir. Aynı şekilde Accept Header bilgisinde istediğimiz dili belirtebiliriz. Örneğin, Accept-Language: tr şeklinde.

İçerikle ilgili bir diğer Header bilgisi ise Content-Type şeklinde belirtilen ve kaynağa erişmek isteyen kullanıcının hangi medya türünde döküman istediğini bildiren içerik bilgisidir. Örneğin Content-Type:application/json şeklinde belirlenen bir Header bilgisi kullanıcının JSON veri istediğini belirtmektedir.

Günümüzde kaynak kullanımı sadece tarayıcılar tarafından değil, mobil uygulamalar tarafından da ağırlıklı olarak kullanıldığı göz önüne alındığında Content Negotiation kavramı özellikle REST servisler oluşturulurken dikkat edilmesi gereken konulardan bir tanesidir. Çünkü REST servisleri HTTP tabanlı çalıştıkları için servis geliştiriciler olarak HTTP dünyasını ve kurallarını iyi tanımamız gerekmektedir. Bu sayede neyi neden kullandığımızı bilerek ilerleyebiliriz.

.Net Framework Gelişim Tarihine Genel Bakış

7 Mar

Microsoft .Net Framework ile ilgili tarihi geçmişe bir göz atarak eskiden günümüze(2015) yani 4.5.1 framework sürümüne kadar nasıl bir gelişimin olduğunu genel hatlarıyla incelemeye çalışalım.

.Net Framework 1.0: 2002 yılında duyurulmuş ilk versiyonsdur. Visual Studio .Net geliştirme aracı ile birlikte sunulmuştur.

.Net Framework 1.1: 2003 yılında duyurulan bu versiyon ile birlikte Visual Studio 2003 geliştirme aracı da piyasaya sürülmüştür. .Net Framework 1.1 ile birlikte ilk defa Asp.Net Mobile control araçları denenmiştir. Ayrıca birden fazla ve farklı Framework sürümünü aynı bilgisayarda çalıştırabilme özelliği olan side-by-side özelliği eklenmiştir. Güvenlik ile ilgili yeni gelişmeler eklenmiştir.

.Net Framework 2.0: 2005 yılında Visual Studio 2005 geliştirme aracıyla birlikte duyurulmuştur. Bu framework ile birlikte Generic, Nullable tipleri, IPV6 desteği ve CLR 2.0 gibi önemli özellikler eklenmiştir.

.Net Framework 3.0: 2006 yılında duyurulmuş olup Visula Strudio 2005 üzerinden devam etmiştir. Bu sürüm ile birlikte WCF(Windows Communication Framework), WPF(Windows Presentation Framework), WF(Workflow Foundation) gibi yenilikler geliştiricilerle buluşturulmuştur. Bu yenilikler ile iletişim, sunum  ve iş akışları gibi ayrımlar ilk defa belirgin bir şekilde altyapı olarak yapılmış oldu.

.Net Framework 3.5: 2008 yılında Visual Studio 2008 gelitirme aracı ile beraber duyurulmuştur. LINQ ve Addin/Plugin Model gibi özellikler eklenmiştir.

.Net Framework 4.0: 2010 yılında Visual Studio 2010 il birlikte duyurulan bu sürümde bir çok yeni özellik eklenmiştir. Parallel Computing, Code Contracts, Lazy Initializations, Dynamic Language RuntimeIn-process side-by-side hostingBackground garbage collection ve CLR 4.0 şeklinde önemli eklemeler yapılmıştır.

.Net Framework 4.5: 2012 yılında Visual Sturio 2012 ile beraber duyurulmuştur. Paralel Programlama üzerinde yeni gelişmeler async/await yöntemi, asenkron işlemler, 64-bit platformlarda 2 gigabayt’tan (GB) büyük diziler için destek, Sıkıştırılmış dosyaların boyutunu azaltmak için Zip sıkıştırma işlevinde geliştirmeler yapılmıştır.

.Net Framework 4.5.1: 2013 yılında Visual Studio 2013 ile birlikte duyurulmuştur. Derlemeler için otomatik bağlama yeniden yönlendirme, .NET Framework güncelleştirmelerinden sonra daha hızlı uygulama başlatma, çok çekirdekli JIT geliştirmeleri ve ASP.NET uygulama askıya alma gibi ek performans artışları yapılmıştır. Sunucularda arka plan çöp toplama işlemi ile daha iyi performans sağlanmıştır.

Yazılım Proje Dizin Yapısı Oluşturmak

4 Mar

Projelerimizi oluştururken kendimize bir dizin standardı belirleyip, belirlediğimiz bu düzene sadık kalarak ilerlemek işlerimizi bir nebze kolaylaştıracaktır. Şu an için kodlama standartları gibi geleneksel bir standart yayınlanmamış olsa da programcıların yaygın olarak kullandığı bir dizin yapısı vardır.  Bu dizin yapısına göre kaynak kodlar, dış kaynak kütüphaneleri ve dökümantasyon gibi kavramlar ayrı ayrı tutulmak üzere belirlenmiştir.

Proje Dizin Yapısı
Proje Dizin Yapısı

Bir çok açık kaynak projeyi indirip incelediğimizde bu yapıya benzer bir dizin ağacına rastlarız. Bu ağaçta belirtilen kavramlar:

  • doc: Kod ile ilgili dökümanların bulunduğu dizindir. Geliştiricinin karşılaştığı sorunlar, çözümler, resimler, ip ucu olabilecek kısa yollar v.s bu dizinde bulunur.
  • lib: Proje için gerekli olan dış kaynak kütüphaneleri bu dizinde bulunur. Örneğin Nuget paketleri, Github üzerinden indirilip referans alınabiliecek başka kaynak kodlar.
  • src: Porjemizin kaynak kodunu barındırdığımız yer bu dizindir. Örneğin Visual Studio Solution veya Eclipse projesini bu dizine olşutururuz.
Proje ve Kaynak Kod
Proje ve Kaynak Kod Yapısı

Yukarıda lib dizininde dış kaynaklı kütüphanelerin bulunacağını belirtmiştik. Burada Visual Studio ile çalışanların Nuget paketlerini otomatik olarak lib dizinine indirebilmesi için gerekli bir ayar yapılmalıdır. Proje kaynak kod dizini içerisine yani yukarıda ki şemada src olarak adlandırılmış olan dizine nuget.config adında bir ayar dosyası oluşturulmalıdır . Bu ayar dosyasına şu satırları eklemek yeterlidir.

<settings>
    <repositoryPath>..\lib</repositoryPath>
</settings>

Artık Nuget Package Manager tarafından indirilen dosyalar doğrudan lib dizinine kaydedilir.

Bu yapıda oluşturulan çalışmaları versiyon kontrol sistemlerine derli toplu bir şekilde aktarmak mümkün hale gelmektedir.

NOT: Bu ayarlar Visual Studio 2013 üzerinde başarıyla denenmiştir. Sonraki çıkacak versiyonlarda bu ayarların değişme olasılığı vardır.

Blog temasında değişiklik yapıldı

14 Şub

WordPress tarafında default temalar arasında olan ve benim de uzun yıllardır kullandığım iNove temasını değiştirmeye karar verdim. iNove teması worpress resmi sitesinde hala yer almakta. Ancak güncelliğini yitirmiş durumda.

iNove Tema WordPress
Eski iNove Tema WordPress

Bu temanın yerine yine wordpress resmi sitesinde yer alan The Box adlı temayı kullanmaya karar verdim.