Docker SQL Server Kullanımı

West-World'e daha önceden Microsoft SQL Server sürümünü kurmuş ve basit denemeler yapmıştık. Esasında bu şart değildi. SQL Server'ın Linux platformu için olan Docker imajını da kullanabilirdik. İşte bu yazımızda docker imajını baz alarak, Entity Framework çatısının kullanan basit bir Web API servisini nasıl geliştirebileceğimizi öğrenmeye çalışacağız. [Daha fazla]

Eğlenceli SignalR

Bu yazımızda, Chart.js kütüphanesini kullanarak, tarayıcı üzerindeki bir grafiğin SignalR üzerinden nasıl beslenebileceğini incelemeye çalışıyoruz. Bunu yaparken Chart.js'in nefis özelliklerini kullacağız ama daha da önemlisi verilerin belirli periyotlarla istemci tarafına akmasını ve grafik üzerinden anlık(SignalR kullanmamızın bir sebebidir) olarak izlenebilmesini sağlayacağız. [Daha fazla]

Elasticsearch'ü West-World'e Kurdum

Elasticsearch bir veritabanı üzerindeki google arama motoru olarak düşünülebilir. Özellikle arama ve raporlama konularında hız avantajı sağlayan açık kaynak bu ürünün kurulumu da kullanımı da oldukça kolay. Bu yazımızda Ubuntu 16.04 üzerine Elasticsearch'ü kurmaya çalışacağız. Kurulum sonrası Postman'den yararlanarak RESTful bazlı API servislerini deneyeceğiz. Ardından Serilog'a el atacağız ve bir Web API üzerinden Elasticsearch'e nasıl log atabileceğimizi göreceğiz. Son olarak bu log'ları görsel bir arabirimden izleyebilmek adına Kibana ürününü kullanacağız. Kibana'yı ve Elasticsearch'ü Docker imajları üzerinden de deneyimleyeceğiz. [Daha fazla]

ITIL'ın Farkına Vardım

Seksenli yıllarda İngilizlerin Central Computer and Telecommunications Agency isimli departmanı, IT hizmetlerindeki sıkıntıların tespiti ve doğru yolun bulunması amacıyla ITIL olarak kısaltılan bir konseptin temellerini ortaya koymuş. Tam olarak açılımı Information Technology Infrastructure Library şeklinde. Ona kütüphane denmesinin makul bir sebebi de süreçlere ait pratikleri içeren beş kitaptan oluşması. O yıllarda temelleri atılan ITIL zaman içerisinde yeni versiyonları ile birlikte gelişmeye devam etmiş. Bugün pek çok IT firmasının(ki sadece IT ile sınırlamak doğru değil nitekim içerisinde hizmet geçen her alanda ele alınabilir) uygulamaya çalıştığı bir, bir…Şey…Immm…Bir ne? [Daha fazla]

Satranç ve ELO Puanlama Sistemi

Satranç oynamayalı yıllar olmuştur. Lise yıllarında okurken kadim dostum Burak Gürkan ile karşılıklı maçlar yapardık. Kerata çok iyiydi. Çoğunlukla kaybederdim. Yine de hoşuma giden bir oyundu. Herhalde dostlar arasında yapılabilecek en güzel aktivitelerden birisidir. Sebat etmek, stratejik düşünmek, saygı göstermek, kabullenmek, odaklanmak. Faydaları saymakla bitmez. En faal oynadığımız yıllarsa 1990 ile 1993 arasındaydı. Burak ailesi ile birlikte Kadıköy'ün sakin sokaklarından birisinde otururdu. Sabahçı olduğumuz için öğleden sonraları zaman zaman evlerine giderdim. Annesi Nimet Hanım'ın lezzetli sütlü kahvesi yanında mutlaka tahinli çörek de olurdu. Burağın odası arka bahçeye doğru bakardı. Herhalde hayatımın orada geçen hiç bir dakikasında tek çıt dahi duymamışımdır. O günleri özlediğimi itiraf edebilirim. Çok fazla ve hatta neredeyse hiç problemimiz yoktu(Üniversite sınavı, okul dersleri ve kızlardan başka) [Daha fazla]

Basit Bir JsonConverter Uyarlaması

Elimizde aynı anlamları taşıyan ama key adları farklı olan JSON içerikleri bulunmakta. Farklı paketleri kullanan servislerden dönen farklı cevaplar oluşuyor. İstemci tarafı aynı anlamdaki bu farklı çıktılar için farklı sınıflar tasarlamak istemiyor. Acaba ters serileştirme işlemi sırasında araya girip farklı key değerlerini aynı nesne örneğinin özelliklerine atamamız mümkün olabilir mi? JsonConverter sınıfını kullanarak konuya çözüm üretmeye çalışıyoruz. [Daha fazla]

Web API'leri Swagger ile Zenginleştirelim

Bu yazımızda Web API servislerimizi OpenAPI Specification'da belirtilen dokümanlaştırma standartlarına göre nasıl zenginleştirebileceğimizi incelemeye çalışıyoruz. Web api servisinin ne işe yaradığını gösteren ve sunduğu operasyonları hızlıca test edebilmemize olanak tanıyan Swagger arabirimini de deneyimliyoruz. [Daha fazla]

West-World'ün RabbitMQ ile Tanışmasının Zamanı Gelmişti

Küçük bir çocukken, soğuk bir kış gününde ablamın elini tutmuş Kadıköy'deki büyük postaneye doğru yol aldığımı hatırlarım. O yaz mektuplaşmak için adresini aldığım arkadaşıma yazdıklarımı göndermek istiyordum. Hayal mayal hatırladığım anlar. İlkokul zamanlarından kalma. Üzerinden onca yıl geçmiş durumda. Gönderen belli, alıcı belli, mektup ortada, pulları üstünde, yazılanlar içinde, taşıyıcı PTT her zaman ki gibi hizmetimizde. Tabii postaneye gelen bir çok mektup daha var. Hepsinin göndericisi ve gideceği adresler de belli...Diyerek girizgahımızı yapıyoruz. Konumuz Linux üzerine RabbitMQ kurmak ve .Net Core ile onu kullanmak. [Daha fazla]

Azure Üzerinde Redis Cache Kullanımı

Bu yazımızda Azure üzerindeki minik maceralarımıza devam ediyoruz. Amacımız bir Redis Cache hizmetini devreye almak ve basit bir .Net Core istemcisinden yararlanarak kendisiyle konuşmak. Önce portaldan yararlanarak bir Redis Cache hizmetini devreye alacağız. Ardından StackExchange.Redis paketini kullanıp istemci tarafını geliştireceğiz. Redis'e ECHO komutu ile mesaj gönderecek ve kullanıcı tanımlı nesne örneklerini de nasıl kullanacağımız irdeleyeceğiz. Haydi gelin başlayalım. [Daha fazla]

Linkedin Bağlantılarını Elde Etmek

Linkedin üzerindeki bağlantılarınızın listesini elde etmek ister misiniz? Aslında bu sanıldığı kadar kolay değil ancak nasıl yapıldığını öğrenmeye çalışırken OAuth 2.0 standartları ile kendimizi doğrulatmamız gerekiyor. Kabaca pek çok platformun yaptığı gibi bir yol izlememiz gerektiğini söyleyebiliriz. Gelin maceramıza başlayalım ve OAuth 2.0 tabanlı bir sistemin nasıl işlediğini anlamaya çalışalım. [Daha fazla]

Simple Stack ile Bir Başka TDD Pratiği

Code Kata pratiklerine ara vermeden devam etmekte yarar var. Bu videomuzda da Test Driven Development odaklı bir pratiği icra etmeye çalışıyoruz. Çok basit ve ilkel bir Stack sınıfını yazmaya çalışacağız. Bildiğiniz üzere Stack veri yapısı Last In First Out(LIFO) ilkesine göre çalışan bir nesne modeli. Bu code kata senaryomuz için dört farklı test senaryomuz olacak. Stack'e son giren nesnenin çekilmesi, Stack'e birden fazla nesnenin atılıp eklenme sıralarına göre çekilmeleri, boş bir stack oluşturulması halinde null döndürülmesi ve sonr olarak null bir öğenin Stack'e eklenememesi. Bu kez dinlendirici Study Soundtrack listesi eşliğinde ilerliyoruz. [Daha fazla]

FizzBuzz ile Basit Bir TDD Pratiği

DevOps felsefesinin içerdiği önemli pratiklerden birisi de test süreçleridir ve bu noktada TDD(Test Driven Development) büyük önem taşımaktadır. TDD, temel olarak Unit Tests, Integration Tests, User Acceptance Tests gibi pratikleri içerir ve en azından bunların DevOps süreçlerine dahil edilmesi beklenir. Ancak TDD ve DevOps söz konusu olunca daha bir çok test tekniği vardır. Smoke Testing, Penetration Testing, Stress Testing, A/B testing, Fuzz Testing ve Boundary Testing gibi. [Daha fazla]

Nasıl bir Web API Tasarımı?

Web API'ler dahası RESTful API türünden servisler çok uzun zamandır hayatımızda. Benim de gerek blog yazılarımdaki örnekler olsun gerek iş yerinde kullandıklarımız olsun sürekli haşırneşir olduğum enstrümanlar. Ancak son zamanlarda okuduğum kaynaklardan sonra bir çok isimlendirme hatası yaptığımı fark ettim. Nedir bu işin doğru yolu diyerek ortak standartları araştırmaya başladım. Elde ettiğim bir takım sonuçlar oldu. Bu sonuçlardan basit bir çizelge de hazırladım. Öncesinde bir kaç kısa bilgi verelim. [Daha fazla]

Post Görünümlü Put

Hiç bir REST servisine Post talebi gönderip aslında onun Put işlemini yapmasını istediğiniz oldu mu? Bir kaç değişik sebepten dolayı tasarlayacağınız REST tabanlı servisin bu tip senaryolara hizmet verebilir olmasını isteyebilirsiniz. Haydi gelin bir .Net Core Web API için bunu nasıl yapacağımıza bakalım. [Daha fazla]

Blockchain Eliptik Eğri Şifreleme Algoritması

Blockchain ve onu baz alarak günümüzün popüler ilgi alanlarından birisi haline gelen BitCoin, kriptolamada Elliptic Curve Cryptography(ECC) olarak adlandırılan bir algoritmayı kullanmakta. Bu yazımızda temel matematik bilgilerimizi işin içerisine katıp, Fermat'nın Little Therorem'ine uğrayacak, Modüler aritmetik'ten yararlanıp, grup kavramı ve eliptik eğriler üzerinden geçerek algoritmanın temel dayanak noktalarını öğrenmeye çalışacağız. [Daha fazla]

Google Cloud Pub/Sub Service Macerası

Bu makalemizde Google Cloud Platform'un önemli servislerinden birisi olan Pub/Sub API'yi incelemeye çalışıyoruz. gCloud ile komut satırından topic oluşturup, buna abone oluyor ve mesaj yayınlayıp, yayınlanan mesajı okuyoruz. Ardından .Net Core ile geliştirdiğimiz uygulamada Google.Cloud.PubSub.V1 paketini kullanarak mesaj yayınlama ve yayınlanan mesajları okuma işlemlerini nasıl gerçekleştirebileceğimize bakıyoruz. [Daha fazla]

Stream ve Pipe Mevzusu

Node.js tarafında anlaşılması en zor konulardan birisinin stream'ler olduğu söyleniyor. Özellikle event ve multi-process gibi konularlar yakın temas içerisinde. Ancak benim dikkatimi çeken nokta okuduğum bir yazı üzerine önüme gelen performans. Özellikle büyük veri ile çalışan bir web sunucusu söz konusu ise stream nesnelerinin pipe mekanizması ile birlikte kullanılıyor olması önem arz eden bir konu. Gelin ne demek istediğimi benden daha iyi özetleyecek basit bir örnek ile konuya giriş yapalım. [Daha fazla]

Pug, Pug, Pug

Bu makalemizde Node.js üzerinde express kullanarak basit bir web sayfasının nasıl gösterilebileceğini incelemeye çalışıyoruz. Ancak farklı olarak Pug(eski adı Jade) isimli paketten yararlanarak html içeriğini çok daha farklı bir şekilde tasarlıyoruz. Bu tasarım sırasında HTML'in klasik açısal ayraç sistemini terk ediyor ve girintili(tab'lı) yazım stiline geçiyoruz. [Daha fazla]

Node.js ile Basit Cluster Kurguları

NodeJS ile yazdığımız uygulamaları genel olarak node [application_name.js] şeklinde çalıştırıyoruz/çalıştırıyordum. Aslında bu durumda söz konusu uygulama tekil bir iş parçası olarak(Single Thread) çalışmakta. Dolayısıyla birden fazla iş parçacığını çalıştırıp tüm işlemci/çekirdek gücünü almaktan yoksun kalıyoruz. Aslında özellikle web sunucuları/servisleri geliştirebileceğimiz etkili bir ortam söz konusu iken bu tip bir avantajdan faydalanamamak yazık olurdu. NodeJS ile birlikte gelen cluster isimli modül bu konuda önemli fonksiyonellikler sunuyor. [Daha fazla]

West-World'ün Uzaydan Gelen SQL Server ile Tanışması

Bizim kuşağın yazılımcıları uzun yıllar boyunca çeşitli çatışmalar içerisinde yer aldılar. Java'mı, .Net mi, SQL mi Oracle'mı, SOA'mı Microservices'mı....Bu ve benzeri tartışmalar uzun yıllar sürecek mi diye düşünürken birden şartlar değişmeye başladı. Mesela Microsoft açık kaynak dünyası ile el sıkıştı, ortaya .Net Core'u koydu. Hatta Java Developers Day'a altın ortak bile oluverdi. Ne alıp veremdikleri vardı ki bu ayrı dünyalarda yaşadıklarını zanneden standart koyucuların... [Daha fazla]

Mocha'nızı Node.js ile Alır mıydınız?

Bu yazımızda Node.js kodlarımızı test etmek için kullanabileceğimiz Mocha ve Should çatılarına değiniyoruz. Çok basit bir node.js fonksiyonelliğini test edereken behaviour driven development(BDD) odaklı yaklaşıma da çok çok yüzeysel anlamda vurguda bulunuyoruz. Should çatısını kullanırken kendi özel assertion fonksiyonlarımızı nasıl yazabileceğimize de kısaca bakıyoruz. Özetle test yazmanın nasıl keyifli hale getirildiğine bakıyoruz. [Daha fazla]

Azure, Azure! Bu Fotoğrafta Neler Görüyorsun?

Pluralsight sağolsun Azure konusundaki çalışmalarıma devam ediyorum. Ufak ufak öğretilerin üzerinden geçerken de neyin nasıl yapıldığını adım adım öğrenmeye çalışıyorum. Bu yazımızda zun zamandır hepimizin varlığından haberdar olduğu Cognitive Services özelliklerinden birisine bakacağız. Azure'un yapay zeka destekli makine öğrenme hizmetlerinden olan Compture Vision enstrümanını kullanarak bir fotoğrafı bizim için nasıl yorumlayableceğini göreceğiz. [Daha fazla]

Azure ile İlk Maceram (App Service)

Yazımızdaki temel amacımız Azure'un desteklediği dillerinden birisini kullanarak geliştirilen uygulamayı buluta alıp, yayınlamaktan ibaret. Konuyu araştırdığım tarih itibariyle PHP, Java, Ruby, Go ve pek tabii .Net Core için destek sunuluyor. Ben elimin bir süredir de sıcak durduğu Node.js dilini seçtim. Azure'un App Service hizmetini Linux tabanlı bir ortam üzerinde deneyimlemeyeceğiz. Aslında App Service bir web hosting hizmeti olarak düşünülebilir. Kurulumu oldukça kolaydır ve bir plana bağlandığında dağıtım gibi işlemlerde basittir. Gelelim işlemlerimizi nerede yapacağımıza? [Daha fazla]

Google Cloud Storage Kullanımı

Bu yazımızda Google Cloud Storage hizmetini nasıl kullanabileceğimizi incelemeye çalışıyoruz. Özellikle fiziksel depolama olarak kullanabileceğimiz bu hizmeti hem komut satırından hem de .Net Core ortamından kullanmayı deniyoruz. Bir Bucket oluşturup, fotoğraf yüklüyor, yüklediğimiz içerikleri kendi ortamımıza çekiyoruz. [Daha fazla]