Matematik Mühendisi, MBAci, eski MVP, blogger, @nedirtv editörü. Turuncu sakallı bir yazılımcı. Çalışması zor, detaycı, huysuz, yaşlı. C#, Ruby, Python, GoLang sevdalısı.
Oturum Aç
Sayfalarım
Almanac
Ben Kimim?
Java ile 24 Kahve Molası Dökümanı
Tag Bulutu
.net
.net core
.net core 2.0
.net framework
.net framework 4.0
.net remoting
.net ria services
ado.net
ado.net 2.0
ado.net data services
ado.net entity framework
ado.net entity framework 4.0
algorithms
api
asp.net
asp.net 2.0
asp.net 4.0
asp.net 4.5
asp.net core
asp.net web api
async
asynchronous programming
attribute
await
azure
bizspark
c#
C#
c# 3.0
c# 4.0
c# temelleri
class
client object model
cloud computing
clr
common language runtime
container
crud
cryptography
database
datatable
delegate
delete
dependency injection
design patterns
design principles
docker
dotnet
dynamic
entity framework
etkinlik
express
extension methods
fluent api
Framework
gelişim atölyesi
generic
get
go
go programming language
golang
google cloud platform
hello world
html
http
http get
http post
httpwebrequest
httpwebresponse
IoT
inheritance
interface
io
java
javascript
jquery
json
language integrated query
linq
linux
microservice
microsoft
microsoft teknoloji günleri
mvc
nedir?tv
nedirtv
nedirtv?com
nedirtv?com söyleşileri
newtonsoft
node
node.js
nodejs
non soap
nosql
npm
nuget
object oriented programming
odata
oledb
oop
parallel programming
plinq
post
postman
python
query
reflection
rest
rest api
rest services
restful
ruby
ruby kod parçacıkları
screencast
scrum
security
seminer
serialization
service
silverlight
soa
soap
sql
sqlite
struct
task
task parallel library
tdd
team foundation server
tek fotoluk ipucu
test driven development
tfs
thread
tpl
type
ubuntu
unit test
visual studio
visual studio 2010
visual studio 2010 ultimate
visual studio code
wcf
wcf 4.0
wcf data services
wcf eco system
wcf ria services
wcf webhttp services
web api
webcast
webhttp services
webiner
websockets
wf
wf 4.0
windows communication foundation
windows forms
workflow foundation
workflow foundation 4.0
workflow services
wpf
xml
xml web service
xml web services
Kategoriler
.Net Core (48)
.Net Framework 4.0 (15)
.Net Framework 4.5 (7)
.Net Remoting (11)
.Net RIA Services (5)
.Net Temelleri (4)
Ado.Net (47)
Ado.net 2.0 (12)
Ado.Net Data Services (11)
Ado.Net Sync Services (1)
Algoritma (6)
Angular (5)
Anti Patterns (2)
Asp.Net (18)
Asp.Net 2.0 (26)
Asp.Net 4.0 (5)
Asp.Net 4.0 Beta 2 (3)
Asp.Net 4.5 (7)
Asp.Net Core (10)
Asp.Net Web API (10)
AWS (3)
Azure (5)
BCL (1)
bing (2)
Biztalk (1)
Blazor (1)
C# (153)
C# 3.0 (9)
C# 4.0 (27)
C# 6.0 (2)
C# 7.0 (2)
CodeKata (2)
Dart (1)
Data Structures, Algorithms (5)
Deneyimler (2)
Developers Tube (3)
DevOps (3)
Dokuman (4)
Eğitimler (10)
Elasticsearch (1)
Enterprise Library (1)
Entity Framework (29)
GCP (4)
GoLang (28)
Journal (6)
Kitap Tavsiyelerim (4)
LINQ (9)
LINQ to SQL (4)
Motoko (1)
NedirTv? (23)
Node.js (19)
NoSQL (11)
Office Development (2)
Parallel Programming (21)
PLINQ (5)
Podcasts (6)
Powershell (2)
python (14)
Raspberry Pi (6)
React (3)
REST (6)
Ruby (52)
Rust (2)
Scala (1)
Seminerler (40)
Silverlight 4.0 (9)
SOA (3)
Spring Boot (3)
T SQL (6)
Tasarım Kalıpları(Design Patterns) (19)
Tasarım Prensipleri(Design Principles) (11)
Team Foundation Server (10)
Tek Fotoluk Ipucu (140)
Teknik Dışı Konular (21)
TPL (14)
Velocity Project (1)
Visual Studio (3)
Vue.js (4)
WCF (84)
WCF 4.0 (14)
WCF 4.0 Beta 1 (18)
WCF 4.0 Beta 2 (2)
WCF 4.0 RC (1)
WCF 4.5 (8)
WCF Data Services (5)
WCF Eco System (23)
WCF Öğreniyorum (4)
WCF RIA Services (11)
WCF WebHttp Services (13)
WF (12)
WF 4.0 (8)
WF 4.0 Beta 1 (5)
WF 4.0 Beta 2 (12)
WF 4.0 RC (4)
Windows Azure (3)
Windows Forms (4)
Windows Mobile (1)
Windows Phone 7 (1)
Windows Server AppFabric (2)
Windows Services (4)
Workflow Foundation Öğreniyorum (15)
WPF (12)
XML (2)
XML Web Services (13)
Aylık Durum
2021
Ekim (1)
Mayıs (4)
Nisan (2)
Mart (1)
2020
Aralık (5)
Kasım (3)
Ekim (4)
Eylül (2)
Ağustos (1)
Temmuz (2)
Haziran (2)
Mayıs (4)
Nisan (1)
Şubat (1)
Ocak (2)
2019
Aralık (4)
Kasım (2)
Ekim (1)
Eylül (3)
Ağustos (5)
Temmuz (3)
Haziran (4)
Mayıs (7)
Nisan (6)
Mart (2)
Şubat (2)
Ocak (3)
2018
Aralık (2)
Kasım (5)
Ekim (4)
Eylül (4)
Ağustos (5)
Temmuz (5)
Haziran (2)
Mayıs (4)
Nisan (3)
Mart (3)
Şubat (4)
Ocak (5)
2017
Aralık (4)
Kasım (3)
Ekim (4)
Ağustos (2)
Temmuz (6)
Haziran (7)
Mayıs (9)
Nisan (7)
Mart (5)
Şubat (7)
Ocak (9)
2016
Aralık (7)
Kasım (5)
Ekim (7)
Eylül (4)
Ağustos (1)
Temmuz (1)
Haziran (6)
Mayıs (5)
Nisan (5)
Mart (3)
Şubat (5)
Ocak (5)
2015
Aralık (4)
Kasım (7)
Ekim (1)
Eylül (4)
Ağustos (12)
Temmuz (1)
Haziran (9)
Mayıs (2)
Nisan (4)
Mart (2)
Şubat (1)
Ocak (3)
2014
Aralık (5)
Kasım (4)
Ekim (4)
Eylül (3)
Ağustos (3)
Temmuz (3)
Haziran (4)
Mayıs (2)
Nisan (3)
Mart (7)
Şubat (4)
Ocak (4)
2013
Aralık (2)
Kasım (4)
Ekim (4)
Eylül (3)
Ağustos (4)
Temmuz (4)
Haziran (10)
Mayıs (4)
Nisan (5)
Mart (26)
Şubat (8)
Ocak (7)
2012
Aralık (6)
Kasım (14)
Ekim (4)
Eylül (9)
Temmuz (12)
Haziran (7)
Mayıs (8)
Nisan (6)
Mart (8)
Şubat (8)
Ocak (8)
2011
Aralık (8)
Kasım (10)
Ekim (8)
Eylül (6)
Ağustos (8)
Temmuz (11)
Haziran (11)
Mayıs (1)
Nisan (8)
Mart (5)
Şubat (6)
Ocak (5)
2010
Aralık (6)
Kasım (6)
Ekim (6)
Eylül (10)
Ağustos (9)
Temmuz (10)
Haziran (12)
Mayıs (10)
Nisan (13)
Mart (18)
Şubat (11)
Ocak (14)
2009
Aralık (12)
Kasım (15)
Ekim (14)
Eylül (8)
Ağustos (20)
Temmuz (14)
Haziran (15)
Mayıs (14)
Nisan (17)
Mart (2)
Şubat (2)
Ocak (3)
2008
Aralık (1)
Ekim (4)
Eylül (2)
Ağustos (1)
Temmuz (1)
Haziran (3)
Mayıs (2)
Nisan (3)
Mart (4)
Şubat (4)
Ocak (4)
2007
Aralık (4)
Kasım (4)
Ekim (5)
Eylül (4)
Ağustos (5)
Temmuz (5)
Haziran (4)
Mayıs (5)
Nisan (4)
Mart (5)
Şubat (4)
Ocak (3)
2006
Aralık (4)
Kasım (3)
Ekim (4)
Eylül (3)
Ağustos (1)
Temmuz (4)
Haziran (3)
Mayıs (3)
Nisan (4)
Mart (5)
Şubat (4)
Ocak (3)
2005
Aralık (1)
Kasım (2)
Ekim (2)
Eylül (3)
Ağustos (2)
Temmuz (4)
Haziran (6)
Mayıs (1)
Nisan (3)
Mart (3)
Şubat (2)
Ocak (2)
2004
Aralık (3)
Kasım (3)
Ekim (5)
Eylül (16)
Ağustos (3)
Temmuz (5)
Haziran (4)
Mayıs (3)
Nisan (5)
Mart (4)
Şubat (8)
Ocak (18)
2003
Aralık (20)
Kasım (10)
1976
Aralık (1)
1903
Mart (1)
Son Yorumlar
Birisi Sana "Blazor Nedir?" Diye Sorarsa (3)
Abdurrahman Güngör yazdı: Oldukça detaylı, işin mantığını, teorisini başarıy...
.Net' e Nereden Başlamalıyım? (12)
Merve Çetin yazdı: Tertemiz bir makale olmuş hocam kaleminize sağlık....
Satranç ve ELO Puanlama Sistemi (4)
Zek yazdı: Çok aydınlatıcı
Duck Typing Nedir? (4)
Ahmet Berke Tuncel yazdı: "GoLang - Interface Kavramı" yazısından ...
Sql Tablolarına Resim Eklemek (5)
Smallow yazdı: Hocam grid viewe aktardım ben fotoğrafları. bunu g...
Bir Web API Hizmetinde Talepler ile CQ Arasında Mediator Kullanmak (1)
murat dinlemez yazdı: Hocam elinize sağlık. O kadar güzel anlatım olmuş ...
Ado.Net 2.0 ve SqlDependency Sınıfı Yardımıyla Query Notification (8)
Mehmet Özdemir yazdı: using System.Data; using System.Data.SqlClient; ...
Raspberry PI Derken Oluşan Python Çalışma Notlarım (4)
Şerafettin yazdı: Mrb, RPi da kurulu olan python modüllerinin isiml...
for mu, foreach mi? Yoksa Parallel.For mu, Parallel.ForEach mi? [Beta 1] (3)
Iz yazdı: Gözəl izah etmisiniz. Təşəkkürlər!
Docker Yerine Podman (Pod Manager) Kullanmak (1)
Tagi yazdı: Güzel bir yazı olmuş. Teşekkürler
Comment RSS
Copyright © 2021
Powered by BlogEngine.NET
Designed by Francis Bio
Monolitik Uygulamalarda Teknik Borçlanma ile Mücadele (Teori)
23 Ekim 2021 Burak-Selim-Senyurt Deneyimler
Yazılımcı olmanın bir gerçeği de üretim ortamından gelen problemler ile uğraşmaktır belki de. Çalışmakta olduğumuz sistemlerin giderek büyümesi, iş kurallarının zamanla karmaşıklaşması, nasıl yapılır nereye bakılır bilgisinin ayrılan iş gücü nedeniyle eksilmesi, entegrasyon noktalarının çoğalması ve daha birçok sebepten ötürü bu kaçınılmazdır. Her birimiz yazılım yaşam süresi boyunca farklı tipte mimariler üzerinde çalışırız. Örneğin 2021 yılının ilk çeyreğinde hazırladığım ve yedi yüzden fazla kişinin katıldığı “Teknik Borç Farkındalık Anketi” isimli çalışmanın sonuçlarına göre beşimizden dördünün katmanlı mimari olarak adlandırdığımız monolitik sistemlerde görev aldığını söyleyebiliriz. Hele ki sektörde yirmi yılı deviren bir yazılım geliştirici iseniz (ki yine anket sonuçlarına göre neredeyse %40ımız 10 yaşından büyük ürünlerle çalışmış) böyle bir sistemle yolunuzun kesişmemiş olması pek mümkün değildir. [Daha fazla]
Effective Engine — Bir Uzay Macerası
14 Mayıs 2021 Burak-Selim-Senyurt Asp.Net Web API
Altunizade’nin bahar aylarında insanı epey dinlendiren yeşil yapraklı ağaçları ile çevrelenmiş caddesinin hemen sonunda, köprüye bağlanmadan iki yüz metre kadar öncesinde dört katlı bir bina vardır. Araba ile geçerken eğer kırmızı ışığa denk gelmediyseniz pek fark edilmez ama yürürken önündeki geniş kaldırımları ile dikkat çeker. Ana cadde tarafındaki yeşillikler binanın ilk katlarını gizemli bir şekilde saklar. Binanın bulunduğu adanın etrafı cadde ve ara sokaklarla çevrilidir. Bir sokağın karşısında yeni yapılmış hastane ile metro çıkışı, ana cadde tarafında ev yapımı tatlılarının kokusu ile insanı baştan çıkaran pastane, eczane, kuaför, camii ve minik bir park bulunur. Dört yola bakan diğer cadde tarafında ise eskiden karakol olan ama çok uzun zamandır kreş olarak işletilen bir komşu yer alır. [Daha fazla]
Birisi Sana "Blazor Nedir?" Diye Sorarsa
08 Mayıs 2021 Burak-Selim-Senyurt Blazor
Yeni bir on yılın arifesini çoktan geçtik ve bu on yıla girmeden önce Microsoft çok önemli geliştirmelerin altına imza attı. Açık kaynak dünyasına hızlı bir girişten sonra yıllardır süregelen Mono projesi daha da anlam kazandı. Artık elimizde Silverlight, Windows Phone, Web Forms, .Net Remoting gibi kavramlar yok. Bunların yerine yenileri ve daha fazlası geldi. Xamarin ile platform bağımsız oyunlar, mobil uygulamalar, macOS ve linux ayırt etmeksizin çalışan kodlar... Dahası da var. 2017'de başlatılan ve standart haline gelen WASM(Web Assembly), Microsoft cephesinin gözünden kaçmadı. 2018 yılında deneysel bir çalışma olarak başlayan Blazor yıllar içerisinde gelişti ve şu anda üzerine yatırım yapılması gereken(mesela on yıllık Asp.Net Web Forms tabanlı ürünlerinizi modernize etmek istiyorsanız) bir konu haline geldi. Ancak ortada önemli bir sorun var. Onu bir arkadaşına nasıl anlatırsın? [Daha fazla]
Asp.Net Core - Önce Razor Sonra Blazor
03 Mayıs 2021 Burak-Selim-Senyurt Asp.Net Core
Asp.Net Core 5 cephesine baktığımızda üç temel uygulama modelini desteklediğini görürüz. Web uygulamaları, servisler ve gerçek zamanlı iletişim araçları. Gerçek zamanlı(Real-Time) iletişim tarafında SignalR karşımıza çıkar. Servisleri göz önüne aldığımızda ise Web API ve gRPC başrolde yer alır. Web tarafını düşündüğümüzde oldukça zengin bir ürün çeşitliliği söz konusudur. MVC(Model View Controller), Razor Pages, Blazor, Angular ve React tabanlı SPA'lar(Single Page Applications). Kuvvetle muhtemel Asp.Net Core 5 tarafına yeni başladıysanız ve haberleri yeterince takip ediyorsanız en çok ilgi çeken geliştirme çatısının Blazor olduğunda hem fikir sayılırız. Fakat Blazor' a doğrudan geçmeden önce bazı temellerin de öğrenilmesi gerekir. [Daha fazla]
Asp.Net Core - Dependency Lifetimes
01 Mayıs 2021 Burak-Selim-Senyurt Asp.Net Core
Asp.Net 5 tarafında Dependency Injection ile ilişkili kafa karıştıran ve saha çözümlerinde dikkat gerektiren konulardan birisi de servis yaşam süreleridir(lifetimes) Bu kısa yazıda söz konusu meseleyi basit bir şekilde anlamaya çalışacağız. Örneğimiz bir önceki yazımızda da kullandığımız .Net çözümü üzerinde geliştirilecek. Dolayısıyla kodun detaylarına github adresinden bakabilirsiniz. Ben odaklanmamız gereken kısımları ve sonuçları paylaşmaya çalışarak bakmamız gereken alanı daraltmaya çalışacağım. Dilerseniz neler yaptığımız bir bakalım. [Daha fazla]
Asp.Net Core - Dependency Injection Türleri
29 Nisan 2021 Burak-Selim-Senyurt Asp.Net Core
Hatırlayacağınız üzere bir önceki yazımızda Asp.Net 5 tarafında nasıl Hello World diyebileceğimizi incelemeye çalışmıştık(Henüz okumadıysanız bir göz atmanızda yarar var) Bu deneyimde ana odak noktamız dahili Dependency Injection mekanizmasının nasıl kullanıldığını görmekti. Kobay senaryomuzdaki en önemli noktalardan birisi de GameController sınıfı içerisinde IGameRepository yardımıyla low-level bir bileşenin kullanılmasıydı. Burada Constructor Injection tekniğinden yararlandığımızı ifade etmiştik. Bu teknik dışında kullanabileceğimiz versiyonlar da var. Metot üzerinden, bir Property yardımıyla ve Asp.Net MVC 6 ile gelen @inject direktifi yoluyla, nesne bağımlılıklarını çözümleyebiliriz. İşte bu yazımızdaki amacımız aynı senaryoyu devam ettirerek söz konusu tekniklerin nasıl uygulanabileceğini öğrenmektir. Hazırsanız başlayalım. [Daha fazla]
Asp.Net Core'a Nasıl Merhaba Deriz?
25 Nisan 2021 Burak-Selim-Senyurt .Net Core
Yazılım geliştirme işine ciddi anlamda başladığım yeni milenyumun başlarında .Net Framework sahanın yükselen yıldızıydı. C# programlama dilinin gücü ve .Net Framework çatısının vadettikleri düşünülünce bu son derece doğaldı. Aradan geçen neredeyse 20 yıllık süre zarfında .Net Framework'te evrimleşti. Microsoft'un açık kaynak dünyasına girişi, cross-platform stratejileri, Linux gibi bir zamanların ciddi rakipleri ile el sıkışarak hamle yapması sonrasında da son beş yıllık zaman diliminde .Net Core hayatımıza girdi. Bu beraberinde Microsoft'un sıklıkla yaptığı üzere bazı kavram karmaşalarını da beraberinde getirdi. En nihayetinde tek ve birleşik bir .Net 5 ortamından bahsedilmeye başlandı... [Daha fazla]
Tie Fighter Değil, Project Tye!
30 Mart 2021 Burak-Selim-Senyurt .Net Core
Açık kaynak olarak yayınlanan Project Tye, Microsoft'un deneysel projelerinden birisi. En azından konuya çalıştığım tarih itibariyle böyleydi. Projenin iki temel amacı var; .Net tabanlı mikroservis çözümlerinin daha kolay geliştirilmesini sağlamak ve söz konusu çözümleri az zahmetle Kubernetes ortamına almak(Deployment) Buna göre birden fazla servisi tek komutla ayağa kaldırmak, Redis, RabbitMQ vb normalde Sidecar container olan bağımlılıkları kolayca yönetmek, kullanılacak servislerin kolayca keşfedilmesini sağlamak(Service Discovery), uygulamaların container olarak evrilmesi için gerekli hazırlıkları otomatikleştirmek, olabildiğince basit ve tekil bir Kubernetes konfigurasyon dosyası desteği vermek, projenin genel amaçları olarak düşünülebilir. [Daha fazla]
Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir?
31 Aralık 2020 Burak-Selim-Senyurt Rust
Stackoverflow 2020 yılı geliştirici anketine göre en sevilen programlama dili olduğunu söylemeden geçmeyelim ki bu son birkaç yıldır da böyle. Fonksiyonel programlama paradigmasına ait özellikler barındıran Rust daha çok sistem seviyesinde programlama için tasarlanmış bir dil ancak farklı kullanım alanları da var. Örneğin Deno platformu, Microsoft Azure IoT Edge'in çok büyük bir kısmı, Servo isimli yüksek hızlı tarayıcı motoru, TockOS, Tifflin, RustOS, QuiltOS, Redox gibi işletim sistemleri, Linux ls komutunun alternatifi olan exa bu dil kullanılarak geliştirilmiş. Bunların dışında oyun motorları, derleyiciler, container'lar, sanal makineler(VM), Linux dosya sistemleri ile gömülü cihaz sürücülerinin geliştirilmesinde de tercih ediliyor. Bir başka ifadeyle Rust diliyle iş odaklı uygulamalar harici yazılım ve yazılım platformları geliştirildiğini ifade edebiliriz. Bu nedenle Rust donanım dostu bir dil desek yeridir. [Daha fazla]
Docker Yerine Podman (Pod Manager) Kullanmak
27 Aralık 2020 Burak-Selim-Senyurt DevOps
Heimdall üstünden birşeyler kurcalamak istediğimde yolum genellikle bir Docker imajı ile kesişiyor. Bakmak istediğim bir NoSQL veritabanı mı var, ELK üçlüsü mü gerekli, bir NGinx server ortamımı lazım ya da yeni bir servis için çalışma zamanımı hazırlamam gerekiyor... Hemen Docker kardeşimizin kapısını çalıyorum. Aslında bakarsanız Container teknolojileri denince çoğumuzun aklına Docker'dan başka bir şey gelmiyordur belki de. "Gerçekten de böyle mi?" diye düşündüğüm bir ara Docker'ın güçlü bir alternatifi olan Podman isimli ürünle karşılaştım ve onu biraz tanımaya karar verdim... [Daha fazla]
Vue için Bebek Adımları
21 Aralık 2020 Burak-Selim-Senyurt Vue.js
Yazılım işine girdiğimden beri en çok zorlandığım konu Frontend tarafta kodlama yapmak. Ne yazık ki sadece Backend tarafta kalmak lüksümüz de pek bulunmuyor. Örneğin hali hazırda çalışmakta olduğum firmada yeni nesil birçok uygulama önyüz tarafında çeşitli Javascript çatıları(Framework) kullanılıyor. Pratikte bakınca oldukça iyi bir kurgu aslında. Önyüzü Vue, React vb yapılarla geliştirip, asıl iş kuralları için arka planda yer alan .Net Core Web API servislerine gelmek. C# ve .Net Core tarafına aşina olduğum için arka planı rahatça kodluyorum, önyüz tarafında ise önceden geliştirilmiş sayfalara bakarak bir şeyler yapabiliyorum. Yani işin özü Vue.Js çatısının temellerinde sorunlarım var. Bu amaçla SkyNet'e uğradığım bir gün oturdum ekran başına en basit adımlarıyla bu işi nasıl öğrenirim bir kurcalayayım dedim. [Daha fazla]
Ocelot - .Net Core Tarafında Bir API Gateway Denemesi
16 Aralık 2020 Burak-Selim-Senyurt .Net Core
Uzun süre önce bankada çalışırken nereye baksam servis görüyordum. Bir süre sonra ana bankacılık uygulaması dahil pek çok ürünün kullandığı bu sayısız servisler ağının yönetimi zorlaşmaya başladı. Bir takım ortak işlerin daha kolay ve etkili yönetilmesi gerekiyordu. Müşterek bir kullanıcı doğrulama ve yetkilendirme kontrolü(authentication & authorization), yük dengesi dağıtımı (load balancing), birkaç servis talebinin birleştirilmesi ve hatta birkaç servis verisinin birleştirilerek döndürülmesi(aggregation), servis verisinin örneğin XML'den JSON gibi farklı formata evrilmesi, servis geliş gidişlerinin loglanması, yönlendirmeler yapılması(routing), performans için önbellek kullanılması(caching), servis hareketliliklerini izlenmesi(tracing), servislerin kolayca keşfedilmesi(discovery), çağrı sayılarına sınırlandırma getirilmesi, bir takım güvenlik politikalarının entegre edilmesi, özelleştirilmiş delegeler yazılması(custom handler/middleware), tüm uygulamalar için ortak bir servis geçiş kanalının konuşlandırılması ve benzerleri. Yazarken yoruldum, daha ne olsun :D Sonunda Java tabanlı WSO2 isimli bir API Gateway kullanılmasına karar verildi... [Daha fazla]
Mountebank ile Mock Servis Desteği Sunmak
07 Aralık 2020 Burak-Selim-Senyurt Node.js
Mountebank, ne zamandır merak ettiğim ve denemek istediğim araçlardan birisiydi. Test senaryolarında kullanmak isteyeceğimiz mock servislerini kolayca inşa edebilmemize olanak sağlayan bir araç olarak tanımlayabilirim. Örneğin test kodumuz arka tarafta belki bir veritabanına bağlanan belki başka bir servis zincirini çağıran ya da farklı bağımlıkları olan bir servisi kullanmak zorunda olabilir. Normal şartlarda bu servisin ayakta olması zorunludur ki testimiz yürüsün. Ancak o anki test vakasının ilerleyen adımlarının çalışması için illaki bu servisin vereceği çıktıya ihtiyacımız yoktur. Test vakası adımlarının devamı için o servisin vereceği çıktının sanki verilmiş gibi yapılarak ilerlenilmesi tercih edilen yöntemlerdendir. [Daha fazla]
.Net Core Tarafından RabbitMQ'ya Mesaj Göndermek ve Java Tarafından Dinlemek
24 Kasım 2020 Burak-Selim-Senyurt .Net Core
Çok sık karşılaştığımız senaryolardan birisidir; Bir uygulama kendi bünyesinde gerçekleşen bir olay sonrası başka bir uygulamayı haberdar etmek ister ya da başka bir uygulamanın yaptıklarından haberdar olmak isteyen bir uygulama vardır :) Bunun bir çok sebebi olabilir. Örneğin uygulamalar farklı teknolojilerde yazılmıştır ancak ortak iş süreçleri üzerinde koşmaktadır. Gerçek bir senaryo üzerinden hareket edersek konu daha anlaşılır olabilir. Kargo çıkışı gerçekleştiren yeni nesil bir uygulama bu çıkışlar için düzenlediği irsaliyelerin bir devlet kurumuna gönderilmesi sırasında yine aynı kurumun legacy diyebileceğimiz başka bir sisteminin süreçlerine dahil olmak durumunda olsun. Bu sürecin belli noktalarında uygulamaların birbirini haberdar etmesi gerektiğini de varsayalım. Tipik olarak gerçekleşen bir olay sonrası bu olaya ait diğer uygulamanın ihtiyacı olan bilgilerin gönderilmesi bekleniyor. Çok doğal olarak bu iletişimi senkronize etmek çok mantıklı olmaz. Nitekim anlık iş yükü çok yüksek sayılara çıkabilir ve bekleme süreleri diğer uygulamanın sürecini olumsuz etkileyebilir. Asenkron kuyruk sistemi bu dar boğazı aşmada önemli bir rol oynamaktadır. [Daha fazla]
Rust Dilinde Warp, Tokio Küfelerini Kullanarak Asenkron Web Api Geliştirmek
13 Kasım 2020 Burak-Selim-Senyurt Rust
Geçtiğimiz birkaç ay içerisinde Rust dilini öğrenmeye çalıştım. Zevkli olduğu kadar bir o kadar da zorlayıcı bir süreçti. Öğrendin mi derseniz, "Hayır!" derim :D İşlediğim konuları tekrar etmem gerekiyor. En çok sahiplenme(ownership) ve borçlanma(borrowing) konularında beynimi yaktım diyebilirim(Ah birde trait ve smart pointer konuları var!) Yinede Rust ile vakit geçirdikçe ortaya karışık bir şeyler çıkmaya da başladı. Dilin, Message Passing ve Mutex konularını öğrenmeye çalışırken karşıma Warp ve Tokio küfeleri(Crates) çıktı. Derken olay asenkron çalışan bir Web API geliştirmeye kadar gitti. Her ne kadar Warp denince aklımıza Star Trek gelse de mevzu bambaşka... [Daha fazla]
The Internet Computer (Internetin Yeniden Keşfi) ve Motoko'yu Duyunca Ben
01 Kasım 2020 Burak-Selim-Senyurt Motoko
Herkese açık olan interneti genişletip kendi yazılım sistemlerimizi, kurumsal IT çözümlerimizi, web sitelerimizi, dağıtık bir ortamda firewall'lara ve yedekleme sistemlerine ihtiyacı duymadan güvenli bir şekilde konuşlandırabildiğimizi düşünelim. Hatta bunu sağlayan altyapı ile internete konan bu sistemler arasında fonksiyon çağrımı yapar gibi kolayca haberleşebildiğimizi(ve tabii ki güvenli bir ortamda) hayal edelim. Biraz blockchain benzeri bir dağıtık sistem kurugusu gibi değil mi? Tam olarak olmasa da oradaki teorileri baz almışlar gibi görünüyor. The Internet Computer adlı bu proje ICP(Internet Computer Protocol) adı verilen ve herhangi bir merkezi olmayan bir protokolü baz alarak, küresel ortamdaki bağımsız veri merkezlerinin, web sitelerinin, backend hizmetlerinin vb yazılımların aynı güvenlik garantileriyle çalıştığı kapatılamaz bir alt evren vaat ediyor. [Daha fazla]
.Net Core Web Api Tarafında SqlKata ile Sevimli SQL İşlemleri
28 Ekim 2020 Burak-Selim-Senyurt .Net Core
Veri odaklı uygulamalarda sorgu komutlarını çalıştırmak için kullandığımız birçok hazır altyapı var. Örneğin .Net dünyasına baktığımızda en temel seviyede Ado.Net ve Object Releational Mapping tarafında Entity Framework sıklıkla karşılaştıklarımız arasında. SqlKata'da bunlardan birisi olarak düşünülebilir. Bir süredir de sağda solda okuduğum makale ve github çalışmalarından dolayı merak edip kurcalamak istediğim bir kütüphaneydi. C# ile geliştirimiş paketin temel amacı SqlServer, PostgreSql, Firebird, MySql gibi veritabanları için kod tarafında ortak bir sorgu oluşturma/derleme arabirimi sunmak ama bunu LINQ sorgu metotları üzerinden SQL dilinin anlaşılır rahatlığında, injection yemeden(Parameter Binding tekniğini kullandığı için) ve cache gibi performans artırıcıları kullanarak sağlamak... [Daha fazla]
Spring Boot ile Eski Usül Soap Based XML Web Service Yazmak Ne Kadar Zor Olabilir?
26 Ekim 2020 Burak-Selim-Senyurt Spring Boot
Kısa bir süre önce değerli bir çalışma arkadaşım kullanmaya çalıştığı Java tabanlı XML Web servis ile epeyce sorun yaşadı. Söz konusu servisi .Net tarafından tüketmeye çalışıyordu ancak XML şeması da epeyce karmaşık olan servis iletişim noktasında şema adlarına kızıyor, header içeriğini beğenmiyor sürekli naz yapıyordu. Arkadaşım allem etti kallem etti sorunun altından girip üstünden çıktı ve nihayetinde çözdü. Bu olaylara kısmen tanıklık ettikten sonra "yahu Java tarafında XML Web Service geliştirmek şimdilerde daha bir kolay değil midir!?" diye söylenmeye başladım. Yol doğal olarak beni Spring Boot'a ve resmi dokümantasyonuna götürdü... [Daha fazla]
Spring Boot ile PostgreSQL Kullanan Basit Bir Web Uygulaması Geliştirmek
19 Ekim 2020 Burak-Selim-Senyurt Spring Boot
Spring Boot maceralarımız hız kesmeden devam ediyor. Bu sefer PostgreSQL veritabanını kullanan bir Web uygulamasını resmi dokümandan da yararlanarak geliştirmeye çalışacağız. Örneğimizde veritabanı olarak PostgreSQL kullanabiliriz. Her zaman olduğu gibi sisteme kurmamız şart değil. Pekala Docker imajından yararlanabiliriz. Kurgumuz basit bir MVC düzeneği olacak. Statik bir web sayfası dışında listeleme ve yeni kategori ekleme adımlarında şablonlardan(templates) faydalanacağız. Kategorileri ifade eden bir POJO sınıfımız olacak. PostgreSQL bağımlılığı kapsamında temel CRUD operasyonlarının tamamı Spring Boot'e ekleyeceğimiz bağımlılık sayesinde zaten hazır gelecek. Bunu kategori türüne uygulamak içinse generic bir Repository arayüzünden türetme yoluna gideceğiz... [Daha fazla]
Spring Boot ile MongoDb Kullanan Bir Rest Servisinin Geliştirilmesi
11 Ekim 2020 Burak-Selim-Senyurt Spring Boot
Spring Boot, Java kod tabanı üzerine oturmuş Spring ile uygulama geliştirmeyi kolaylaştıran oldukça kolaylaştıran bir geliştirme çatısıdır. Dahili Dependency Injection mekanizması ve zengin paket desteği sayesinde otonom araçlardan akıllı televizyonlara, elektronik ticaretten bulut uygulamalara kadar birçok alanda Spring'in kabiliyetlerini oldukça etkin kullanabilmemize olanak sağlamaktadır. Birazdan sizde göreceksiniz ki az eforla oldukça etkili bir uygulama ortaya çıkartacağız. Geliştireceğimiz örnekteki amacımız resmi dokümantasyondan da yararlanarak MongoDb veritabanını kullanan basit bir REST servisi geliştirmek. Spring hayatı o kadar kolaylaştırıyor ki, onunla geliştirilen bir API servisi pek çok standardı da otomatik olarak sağlıyor. Haydi gelin nasıl olduğuna bir bakalım. [Daha fazla]
BeeWare ile Linux Platformunda Desktop Uygulaması Geliştirmek ve Android Sürümünü Oluşturmak
14 Eylül 2020 Burak-Selim-Senyurt python
Geçenlerde Python ile ilgili bir şeyler ararken BeeWare isimli çalışmaya rastladım. Her yerde python ile native uygulama geliştirmek gibi bir felsefesi vardı. Eee zaten python her platformda yüklenip kullanılmıyor mu? Yoo tam olarak olay öyle değil aslında. BeeWare ürünü macOS, Linux ve Windows platformlarında native uygulama geliştirmek haricinde iOS ve Android için de destek sunan bir araçlar ve kütüphaneler topluluğu. Söz gelimi iOS ve macOS platformundaki Objective C kütüphaneleri ile Python arasında köprü görevi gören Rubicon ObjC isimli bir araç sunuyor. Java kütüphaneleri ile bir iletişim mi gerekiyor!? O zaman Rubicon Java var. Diğer yandan cross-platform için Toga isimli bir widget kütüphanesi kullanıyor. Ayrıca python projelerini tek başına çalışabilir uygulamalar haline getirmek için(standalone native application) Briefcase isimli başka bir araca sahip ki bir çoğunu birazdan kullanacağız. [Daha fazla]
GO Ortamında Minik Bir CRUD Servisini Gin-Gonic ile Geliştirmek
03 Eylül 2020 Burak-Selim-Senyurt GoLang
Gin-Gonic hafif siklet sayılan ama yüksek performansı ile öne çıkan(muadili olan martini'den çok daha hızlı olduğu ifade ediliyor) bir HTTP-Web framework. Elbette açık kaynak bir çatı. Middleware tarafında(Yani Request ve Response'lar arasında) Recover ve Log desteği sunuyor. Tabii kendi middleware bileşenimizi yazıp ekleyebiliriz de. Recovery modülü en başından beri ekli olduğundan paniklemeyen bir framework diyebiliriz :) Yani Go çalışma zamanında HTTP talepleri ile ilgili olarak bir panic oluştuğunda uygun bir 500 cevabı verebiliyor. [Daha fazla]
Microsoft ML.Net Kullanarak Basit Bir Öneri Tahminleme Uygulaması Geliştirmek
08 Ağustos 2020 Burak-Selim-Senyurt .Net Core
Yaz başından beri Mark J. Price'ın, C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development: Build applications with C#, .NET Core, Entity Framework Core, ASP.NET Core, and ML.NET using Visual Studio Code, 4th Edition(Evet biraz uzun bir ismi var :D ) kitabıyla uğraştım. Hoş ben daha kitabı tamamlayamadan .Net 5.0 son sürümü çıktı ve hatta Mark bu sürüm için de yeni bir kitap yayınladı ya neyse :D Kitabın ilgimi çeken bölümlerinden birisi(19ncu Kısım) makine öğrenmesi ile alakalı olandı. Makine Öğrenmesi benim çok ama gerçekten çok uzak olduğum bir konu. Yine de "Algoritması benden, modeli senin için eğitirim ve basitçe kullanırsın" diyen Microsoft'un ML.Net çatısını bir kod parçasında nasıl uygulayacağımı da merak etmekteydim. En iyisi kitabın dediklerini uygulamalı olarak yapmaktı. O zaman gelin bir parça kod bir parça ML.Net bir parça MVC yazalım. [Daha fazla]
Yine Yeni Yeniden ELK(Bu sefer E ve K için docker-compose işin içinde)
22 Temmuz 2020 Burak-Selim-Senyurt .Net Core
Her ne kadar artık .Net 5.0 hayatımızın içinde olsa da bu yıl içinde bir yerlerde .Net Core 3.1 ile ELK kurgusunu yeniden değerlendirme ihtiyacı hissetmişim. Elasticsearch, Logstash ve Kibana kurgusu aslında günümüz uygulamalarında son derece popüler. Genellikle uygulama loglarının devasa şekilde biriktiği durumların çözümünde ideal bir kurgu. Uygulama loglarını standart bir formata uygun olacak şekilde Elasticsearch'e atar ve bizler de Kibana gibi arayüzleri kullanarak burayı monitör ederek çeşitli durumların kontrolünü yapmaya çalışırız. Ağırlıklı olarak üretim ortamında oluşacak hataların, dar boğazların yakalanması noktasında işimize yarayan bir düzenek olarak düşünebiliriz. Şunu da belirtmekte yarar var. Günümüz uygulamalarında hataları debug ederek bulmak yerine detaylı ve iyi bir strateji ile oluşturulmuş logları takip ederek tedbir almak son derece kıymetlidir. Benim bu çalışmadaki amacım .Net Core 3.1 üstünden ELK düzeneğini kurgulayıp loglama, izleme işlerini tekrarlamaktı. Ancak bu sefer ElasticSearch ve Kibana containerları için docker compose aracını kullanmayı da öğrenmek istemiştim. Yani çalışmanın ana noktası ilgili düzeneği Docker Compose ile kurgulamak. [Daha fazla]
NextJS ile Web API Tüketen bir React Uygulaması Geliştirmek
18 Temmuz 2020 Burak-Selim-Senyurt React
Geçen sene React ile ilgili basit birkaç örnek denemiiş olmama rağmen öğrendiklerimi çok çabuk unuttuğumu fark ettim. Gerçek saha projelerinde sıklıkla kullanmayınca böyle bir şeyin olması kaçınılmazdı. Dolayısıyla skynet çalışmaları kapsamında tekrardan pratik yapmanın uygun olacağını düşündüm. Bu sefer amacımız Star Wars için https://swapi.dev adresinden sunulan REST servisini tüketen ve karakterlerin listesini gösteren bir web uygulaması geliştirmek. Bunu yaparken hafif siklet kategorisinde sayılan ancak bir çok işi kolaylaştırdığı söylenen Next.Js isimli web framework'ten faydalanacağız. [Daha fazla]