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. [Dah 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. [Dah 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. [Dah 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. [Dah 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. [Dah 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. [Dah 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. [Dah 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. [Dah 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. [Dah 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... [Dah 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. [Dah 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. [Dah 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? [Dah 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. [Dah fazla]

Atlas ile Node.js Üzerinden Haberleşmek

Bu yazımızda MongoDb'nin Cloud sistemi olan Atlas üzerinde bir proje oluşturarak işe başlıyoruz. Sonrasında Cluster üretip gerekli konfigurasyon ayarlamalarını yaparak MongoDB Compass uygulamasıyla bağlantı gerçekleştiriyor, örnek bir veritabanı ile koleksiyon oluşturup içerisine doküman ekliyoruz. Son aşamada bu içeriği Node.js ile yazdığımız bir kod parçası yardımıyla Ubuntu ortamına indirmeye çalışıyoruz. [Dah fazla]

.Net Core ile Amazon DynamoDB'yi Kullanmak

Epey zamandır NoSQL veritabanı sistemlerini kurcalamıyordum. Ağırlıklı olarak da .Net tarafında nasıl kullanılabildiklerini incelediğimi hatırlıyorum. 2017nin son çeyreği ve 2018 için kendime koyduğum hedeflerden birisi ise .Net Core dünyasını daha yakından tanımak. West-World'ün kurulum amacı da özellik bu. Sonuç olarak Amazon'un DynamoDb'sini .Net Core tarafında nasıl kullanabileceğimi incelemeye karar verdim. Bir süredir AWS Console üzerinden bir şeyler araştırıyor ve Amazon Web Service ürünleri hakkında giriş niteliğinde bilgiler edinmeye çalışıyorum. [Dah fazla]

Bir Web API Servisini Github Hesabıyla Yetkilendirmek

Senaryomuzda basit bir Web API Servisi bulunuyor. .Net Core ile geliştirilen servisin bir Controller'ı için yetkilendirme(Authorization) sürecini uygulatmak istiyoruz. Burada OAuth 2 standardını ele almak, kullanıcı yetkilendirme yöneticisi ve bilet(Token) tedarikçisi olarak Github'dan yararlanmak istiyoruz. Temel olarak Web API servisimiz Consumer, Github'ın kendisi ise Service Provider olarak düşünülebilir. Tabii bu senaryonun gerçekleşmesi için bizim Github'a bir proje kaydettirmemiz ve özellike Redirect URI bilgisini Consumer rolündeki uygulamamız için bildirmemiz gerekiyor(Az sonra yapacağız) [Dah fazla]

Apache Üzerinden Bir Web API Hizmeti Sunmak

Bu yazımızda West-World üzerine Apache kuruyor ve 80 portuna gelen talepleri Kestrel'e yönlendirerek bir Asp.Net Web API hizmetini nasıl sunabileceğimizi incelemeye çalışıyoruz. Daha önceden NginX için gerçekleştirdiğimiz vakayı Apache tarafı için ele aldığımızı ifade edebiliriz. Tabii farklı olan bazı noktalar var. Yine de teorinin aynı olduğunu ifade edebiliriz. Bakalım Apache, Ubuntu üzerinde nasıl Reverse Proxy Server haline geliyor. Haydi başlayalım. [Dah fazla]

Hackathon'dan Node.js'i Tanımaya

Javascript yüzyıllardır(abartmayı severim) front-end tarafında en güçlü yazılım geliştirme dillerinden birisi. Bu dil üzerine kurulmuş bir çok Framework(çatı) bulunmakta. Hatta bazıları tamamen sunucu bazlı çalışacak şekilde tasarlanmış. Node.js bunlardan birisi. Onunla kesişmem çalışmakta olduğum firmadaki bir kaç arkadaşımın katılacağı Hackhatorn yarışması sayesinde oldu. Yarışmaya katılımın ön koşulu olarak istenen bir projenin Node.js, MongoDb ve Heroku kullanılarak yapılması isteniyordu. Kıt kanaat bilgi birikimimle hemen şu Node.js nedir neler yapılabiliyordur diye bakınmaya başladım. Derken Cumartesi gecesi kendimi onu tanımaya dahası anlamaya çalışırken buldum. Şu an için iş yerindeki projelerimizde de olsun Node.js ile yürüyeceğimiz bir yol haritamız olmasa da sunucu taraflı çalışan Javascript temelli bir çatı neymiş öğrenmek istedim. Örnekleri karıştırırken de benim için hızlı bir giriş niteliğinde olan aşağıdaki örnek kod parçası ile işe başladım. [Dah fazla]

.Net Core Konfigurasyon Yönetimi Üzerine

Çalışma zamanına bilgi taşımanın ve bazı ayarlamalar için gerekli değerleri okumanın en popüler yollarından birisi de bildiğiniz üzere konfigurasyon dosyalarından yararlanmak. Zaman içerisinde app.config, web.config gibi XML tabanlı konfigurasyon dosyalarına aşina olan bizler, .Net Core ile birlikte JSON formatlı içeriklerle çalışmaya başladık. .Net Core tarafında bu JSON içeriklerini yönetmek oldukça kolay. Farklı yöntemlerimiz var. Dahası Dependency Injection yeteneklerinden yararlanılabildiği için özel sekmelerin(section) sınıflara bağlanması da münkün... [Dah fazla]

AWS Elastic Beanstalk Macerası

Bu yazımızda Django çatısından üretilmiş standart bir web uygulamasını, Amazon'un Platform As A Service olarak konumlandırdığı Elastic Beanstalk üzerine nasıl taşıyabileceğimizi öğrenmeye çalışıyoruz. Yolda tabii ki başımıza garip garip olaylar da geliyor. Özellikle sonlara doğru yaşadığımız sıkıntıları çözmeye de çalışıyoruz. Haydi gelin başlayalım. [Dah fazla]

Asp.Net Core Routing Mekanizmasını Kavramak

Bu yazımızda Asp.Net Core routing mekanizmasını yakından incelemeye çalışacağız. .Net tarafında MVC zamanlarından beri kritik bir yere sahip olan talep yönlendirme mekanizması .Net Core tarafında da etkili bir biçimde kullanılmakta. Bir kaç farklı örnek yaparak mekanizmanın nasıl çalıştığını anlamaya çalışalım. [Dah fazla]