Image for post
Image for post

Versiyon kontrol sistemleri (version control systems) depo (repository) içerisindeki değişiklikleri sürümler halinde tutabilmemize ve bu değişiklikleri kolayca yönetebilmemize imkan sunan sistemlerdir.

İhtiyaç nasıl ortaya çıktı?

Herhangi bir dosya da değişikliğin hangi zamanda kim tarafından ve neden yapıldığının kaydına ve takım çalışmalarındaki çakışmaların doğru yönetilebilmesine duyulan ihtiyaçlar sonucunda versiyon kontrol sistemleri ortaya çıkmıştır.

İstediğimiz bir anda geçmiş bir sürüme tamamen ya da kısmi olarak dönmemiz tutulan bu kayıtlar ile mümkün olabilmektedir.

Versiyon kontrol sistemi kullanmıyorsak, 3 yıl önce yaptığımız bir değişikliği ne zaman ve neden yaptığımızı hatırlayamayabiliriz değil mi? …


Image for post
Image for post

Normalde yazılarımı günlük hayata girmeden ve herhangi bir siyasi/dini görüş içermeyecek şekilde hazırlıyorum fakat bu konuda günlük hayata girmem gerekti, zira gördüğüm kadarıyla teknik meselelerden azıcık anladığını düşünen herkes, bu projeyi teknik yönden baya bir yerden yere vurdular 🙂 Bende alıp göğsüme basmak ve konuyu naçizane değerlendirmek istedim…

Exxen projesinin kurucusu Acun ILICALI hakkında hızlıca bir araştırma yaptığınızda göreceksiniz ki kendisi bir “ Girişimci”. Girişimcilik tanımlarına baktığımızda ise karşımıza çıkan ilk tedirgin edici kelime risk ‘tir.

Peki bunların Exxen’in açılışında oluşan teknik vs. sorunlar ile girişimciliğin ne ilgisi var?

Öncelikle devam etmeden önce youtu.be/-y6Rn1TszM8?t=556 bu videoyu bir izlemenizi şiddetle tavsiye…


Image for post
Image for post

API, Application Programming Interface’in Türkçesi ile Uygulama Programlama Arayüzü’nün akrostişi ile ortaya çıkan ve günümüzde yoğun şekilde hayatımızda yer alan olmazsa olmazımız bir terimdir.

Peki ihtiyaç nereden çıktı, neden uygulama programlama arayüzleri kullanıyoruz?

Bildiğiniz üzere kullanıcı arayüzleri (ui, user interface) üzerinden veriler sunar ve formlar vs. aracılığıyla veriler alırız. Buraya kadar her şey çok güzel fakat ya bu verilerin bir uygulamadan başka bir uygulamaya aktarılması ya da ui ile veri sunma/alma katmanını ayırmak gerekirse ne yapacağız? (Örn: React,Flutter vs. uygulamanın bir web sunucusuna veri gönderip alması.)

Ya da uygulamamızda sunduğumuz işlevlerin dışarıdan kullanılmasını istiyorsak ne yapacağız?

İşte tam olarak bu…


Image for post
Image for post

Veritabanı sistemlerinde, işlemlerin (transaction) güvenli olarak gerçekleştirilebilmesine odaklanan standart bir özellik kümesinin kısaltmasıdır.

Bir veritabanı sisteminin tam olarak güvenli veri işleme özelliğine sahip olduğunu söyleyebilmemiz için bu özellik kümesine sahip olması beklenmektedir.

ACID; Atomicity (Bütünlük), Consistency (Tutarlılık), Isolation (Yalıtım), D urability (Dayanıklılık) akronimi ile ortaya çıkmıştır. ACID’i oluşturan birbirinden önemli bu özellikleri tek tek ele alalım.

Atomicity (Bütünlük)

Bir işlemin bütünlüğünü garanti eder ve ilgili transaction içeriğindeki sorgulardan birisinin çalışması bile başarısız sonuçlanırsa tüm transaction başarısız sayılmalıdır. Yani bir transaction başarılı sayılabilmesi için içeriğindeki tüm sorguların başarılı olarak çalışmış olması gerekmektedir.

Örneğin; bir işlem (transaction) içerisinde products, brands ve stocks tablolarında veri…


Image for post
Image for post

Arayüz Ayrımı Prensibinin odak noktası; eğer bir sınıf implement ettiği interface’e ait tüm nesneleri kullanmıyor ya da o interface ilgili sınıf için eksik kalıyor ise tüm ihtiyaçların doğru şekilde belirlendiği yeni bir interface oluşturulmalı ve artık bu yeni interface kullanılmalıdır.

Bu sayede interface kullanımında ortaya çıkan olası karmaşıklıkların önüne geçebiliriz.

Kısaca bu prensibi uygulamadığımızda ortaya çıkabilecek basit bir problemi örneklendirelim;

Elimizde ICar adında bir interface olsun ve ICar içerisinde turnLight, openDoor, closeDoor metodları bulunsun. A sınıfı ICar’ı implement eden bir sınıf ve inherit ettiği tüm metodları destekliyor. Fakat B sınıfında closeDoor işlevi bulunmuyor fakat implement etmek zorunda olduğu için gövdesini…


Image for post
Image for post

API servislerinde kullanılmak üzere Facebook tarafından açık kaynak olarak geliştirilmiş, veri sorgulama, değiştirme, abonelik vs. işlevlerini destekleyen, söz dizimi bakımından JSON’a benzeyen fakat özel bir söz dizimine (syntax) sahip sorgulama dili ve yanı sıra bir mimaridir.

Son zamanlarda hayatı biraz yoğun tempoda yaşadığımdan bu yazıyı hazırlamaya/tamamlamaya yeni fırsat bulabildim. GitHub reposunu takip edenler için; 1 ay önce yayınlanmış örnek proje var ama konunun açıklaması arkasından gelmiş oldu 🙂 Evet şimdi gelelim konumuza… Konuya girişi “RestAPI yerine, RestAPI gibi ama daha tatlısı” gibi bir giriş yapabilirdim fakat ben bu hakkımı yazının sonuna doğru pekiştirmek için kullanacağım.

Öncelikle GraphAPI altyapısındaki terimleri kısaca…


Image for post
Image for post

Bilindiği üzere SQL Server’da varsayılan olarak sa (system administrator) kullanıcısı bulunur fakat bu kullanıcıyı uygulamalarda kullanmamalıyız. Ya da uygulamanın erişebileceği tabloları, yapabileceği eylemleri kısıtlamak isteyebiliriz. İşte tam bu noktada bize yeni kullanıcılar gerekir…

Giriş Hesabı Oluşturma

Öncelikle master DB’yi seçip aşağıdaki komut ile giriş hesabı oluşturmalıyız.

CREATE LOGIN "<LOGIN_NAME>" WITH PASSWORD = '<PASSWORD>';

Örneğin;

CREATE LOGIN "api-app" WITH PASSWORD = 'FYRqk9dxRkxCCHeKU6';

Yukarıdaki örnek ile api-app adında ve FYRqk9dxRkxCCHeKU6 şifresine sahip bir giriş hesabı oluşturduk.

Kullanıcı Oluşturma

Şimdi bir kullanıcı oluşturup giriş hesabımız ile bağlamalıyız.

CREATE USER <USER_NAME> FROM LOGIN [<LOGIN_NAME>];

Örneğin;

CREATE USER "api-app" FROM LOGIN [api-app];

Yukarıdaki örnek ile…


Image for post
Image for post

Eğer uygulamanız Azure üzerinde koşuyor ise ve IP bazlı olacak şekilde bir istemciden gelen trafiği engellemek ya da yalnızca belirlediğiniz istemcilere izin vermek istiyorsanız bu makale size yardımcı olacak 🙂

Şimdi gelin bunları nasıl yaptığımızı görelim…

Portalda giriş yaptıktan sonra ilgili App Service’i bulun ve sonra sol menüden Networking’e tıklayın. Ardından sağ kısımda en allta bulunan Access Restrictions altındaki Configure Access Restrictions bağlantısına tıklayın.


Image for post
Image for post

Netscape tarafından geliştirilen SSL, Secure Sockets Layer kısaltmasını yani Güvenli Giriş Katmanı’nı ifade eder. Günümüzde SSL yerini IETF tarafından SSL’i temel alan TLS, Transport Layer Security yani Taşıma Katmanı Güvenliği’ne bırakmıştır.

Bu nedenle bu makalede SSL 3.0 üzerine inşa edilerek ortaya çıkan TLS üzerinden verilerin güvenliğinin nasıl sağlandığı konusuna değineceğim.

TLS Asimetrik Şifreleme kullanır, bu nedenle public(açık) ve private(gizli) olmak üzere iki anahtara ihtiyaç duyar. Bu anahtarlar kullanılarak veriler şifrelenir ve çözülür. Şifrelemeden bahsettiğimize göre demek ki TLS’de veriler şifreleniyor…

TLS, Veri Gizliliği, Veri Bütünlüğü ve Kimlik Doğrulama yeteneklerine sahiptir. Veri şifrelendiğinde gizliliği sağlanır ve şifrelerken kullanılan anahtar kaynağın kimliği…


Image for post
Image for post

Endişelerin Ayrılması (Separation of Concerns) tasarım ilkesi düşük bağlılığa ve benzer sorumluluklara (cohesion) sahip bileşenler ile kümeler/kapsüller oluşturmamıza, sorumluluk sınırlarının net bir şekilde belirlenerek ayrılmasına odaklanır.

SoC ile sürdürülebilir, geliştirilebilir ve tekrar kullanılabilir bilşenlerimiz ve bu bileşenler sayesinde projeler olur.

SoC ile temelde soyutlama (abstraction) yapılır. Soyutlama yaparken dikkat etmemiz gereken nokta ise birbirleri ile benzer bileşenleri gruplayarak (bunlar; dosyalar, sınıflar, fonksiyonlar ve kod blokları olabilir) bu kümeleri yakın şekilde konumlandırmaktır.

Bu sayede hem yönetimi daha kolay olacak hemde çok daha düzenli bir mimarimiz olacaktır. Geliştirme yaparken olası bir sorun oluşması halinde ya da mevcut projede bir sorun oluşması durumunda…

Halil Şafak KILIÇ

Software Developer, Web Developer — Ankara, Turkey halilsafakkilic.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store