Apache Kafka ile Konuşmaya Çalışmak 01 Aralık 2017 Burak-Selim-Senyurt .Net Core Bu yazıda West-World'e Apache Kafka'yı kuruyoruz. Basit adımlardan sonra bir .Net Core uygulamasından yararlanarak Kafka ile haberleşmeye çalışıyoruz. [Daha fazla]
Go Web Sunucusunu Docker Üzerinden Yayınlamak 15 Kasım 2017 Burak-Selim-Senyurt GoLang Uzun zamandır Go ile kod yazmıyordum. Özlediğimi ifade edebilirim. Özellikle de kurallarını ve basitliğini. Ana paketteki programın başlangıç noktası olan main içerisinde HandleFunc isimli fonksiyondan yararlanarak root adrese gelecek olan talepleri indexHandler isimli operasyona yönlendiriyoruz. indexHandler içerisinde ise çok basit bir HTML içeriği bastırmaktayız. Elle tutulur bir şeyler olması açısından güncel zaman bilgisini, işletim sistemini, işlemcinin türevini yazdırdıktan sonra 0 ile 100 arasında üretilecek rastgele bir sayı da basıyoruz. [Daha fazla]
Docker Üzerinde .Net Core Uygulaması Çalıştırmak 10 Kasım 2017 Burak-Selim-Senyurt .Net Core Internet üzerinde Docker ile ilgili pek çok bilgi ve kaynağa ulaştım. Ama özellikle Asiye Yiğit'in Linkedin üzerinden paylaştığı yazılar giriş seviyesinde bilgi sahibi olmamı sağladı. Çıkarttığım notlardan yararlanarak konuyu kavramak için şekilleri tekrardan ele aldım ve kısa özet çıkarttım. Öncelikle bu notlarımı temize çekeceğim. Sonrasında Ubuntu üzerine Docker kuracağım. Ardından .Net Core 2.0 için basit bir Console uygulaması yazacağım. Son adımda ise bu uygulamayı Docker üzerinde ayağa kaldıracağım. Haydi gelin başlayalım. [Daha fazla]
Ubuntu'da İlk .Net Core Adımlarım 05 Kasım 2017 Burak-Selim-Senyurt .Net Core Bu yazımızda Ubuntu sistemi üzerine .Net Core 2.0 yükleyip basit bir Console uygulaması yazarak Linux üzerinde Hello World demeye çalışacağız. [Daha fazla]
Tek Fotoluk İpucu 160 - Bir Sertifikanın Base64 Encoded Değerini Bulmak 25 Ekim 2017 Burak-Selim-Senyurt Tek Fotoluk Ipucu Önceki yazımızda WsHttpBinding kullandığımız sertifika tabanlı bir WCF senaryo çalışmamız vardı. Aynı örneği göz önüne alarak BasicHttpBinding kullanabileceğimizi de belirtelim. Nitekim bu bağlayıcı tipi ile de Message tabanlı güvenliği sertifika bazlı gerçekleştirebiliriz. Bunun en gerekli sebeplerinden birisi de servis tüketicilerinin eski nesil uygulamalar olabilmesi sebebiyle sadece SOAP 1.1 haberleşme kurmasıdır. Olmaz demeyin oluyor. [Daha fazla]
WCF - Özelleştirilmiş UsernamePassword Validator Kullanımı 24 Ekim 2017 Burak-Selim-Senyurt WCF Bu makalemizde WCF tarafında Custom UserNamePasswordValidator kullanarak özel doğrulama işlemlerinin nasıl yapılabileceğini incelemeye çalışıyoruz. Senaryomuzda WsHttpBinding ve Message Based Security seçeneklerine yer veriyor, sertifika tabanlı bir alt yapı kurguluyoruz. [Daha fazla]
Asp.Net Core'da Bir WebSocket Macerası 18 Ekim 2017 Burak-Selim-Senyurt Asp.Net Core Web Sockets web uygulamalarında aynı anda çift yönlü haberleşmeye olanak sağlayan bir standart olarak karşımıza çıkmakta. Bu yazıda Asp.Net Core 2.0 tarafında Web Sockets kullanımına bakacağız. [Daha fazla]
.NET Core 2.0 ile Basit Bir Web API Geliştirmek 04 Ekim 2017 Burak-Selim-Senyurt Asp.Net Web API Bir süredir de .Net Core tarafına bakmak ve servis geliştirme noktasında neler yapılabileceğini incelemek istiyordum. İşlerden boşluk bulduğum bir sırada Web API nasıl yazılır araştırayım ve yaptığım örneği bloğuma ekleyeyim istedim. [Daha fazla]
Python - Flask ile Basit Bir Web Uygulaması Geliştirmek 10 Ağustos 2017 Burak-Selim-Senyurt python Python tarafında Flask paketini kullanarak web uygulamaları geliştirmek oldukça basit. Bu yazımızda şablon(template) kullanarak bir Web sayfasından Post işlemi gerçekleştirmeyi deneyeceğiz. [Daha fazla]
GoLang - Redis ile Anlaşmak 04 Ağustos 2017 Burak-Selim-Senyurt GoLang, NoSQL Bir Cumartesi gecesiydi. Dışarıda hava nemli ve sıcaktı. Bir süre önce başlayan yağmurun sesi çalışma odama tatlı tatlı geliyordu. Biraz da toprak kokusu. Evde el ayak çekilmiş sakin bir ortam oluşmuştu. GoLang öğrenme çalışmaları devam ediyordu. Dili ufak ufak kavramaya başlamıştım ama örnek senaryolar işleterek ilerlemem gerektiğini de biliyordum. Derken aklıma eskiden .Net tarafında kullandığım NoSQL sistemlerinden olan Redis ile ilgili bir şeyler yapmak geldi. [Daha fazla]
GoLang - Unit Test Yazmak 27 Temmuz 2017 Burak-Selim-Senyurt GoLang Aranızda birim test(Unit Test) yazmayan hala var mı? diyerek konuya giriş yapmak istiyorum. Yazdığımız atomik fonksiyonelliklerin taşınan ortamlarda başımızı ağrıtmasını istemiyorsak birim testleri mutlaka yazmalıyız. Belki birim testler uygulama geliştirme süresini uzatabilirler ancak uzun vadede kalp krizi geçirme riskini de azaltırlar. Üstelik test senaryoları sayesinde gerçekten ne yapmak istediğimizin farkında olarak da hareket edebiliriz. Eğer test güdümlü yaklaşımla ilerliyorsak bilinçli olarak yaptırılan hata sonrası kodun çalışır hale getirilmesi ve iyileştirilmesi(Refactoring) de önemli kazanımlarımızdır. [Daha fazla]
GoLang - Google ProtoBuf Kullanımı 23 Temmuz 2017 Burak-Selim-Senyurt GoLang Veriyi kullandığımız dile göre çeşitli şekillerde ifade edebiliriz. Eğer nesne yönelimli bir dil kullanıyorsak buradaki başrol oyuncumuz sınıflar olacaktır. Verinin nesnel olarak ifade edilişinde rol olan sınıf ve benzeri tipler, çalışma zamanında taşıdıkları içerikleri ile hareket halindedir. Bu hareket aynı uygulamana alanında olabileceği gibi uygulamalar arasında da gerçekleşebilir. Veri ağ üzerinde de hareket edebilir. Verinin bu şekilde dolaşımı sırasında bazen serileştirilmesi de gerekir. Tabii bu noktada karşımıza platform bağımsızlık, okunabilirlik, genişletilebilirlik ve performans gibi kriterler çıkar. [Daha fazla]
WCF Servis Yolunda Debelenirken 18 Temmuz 2017 Burak-Selim-Senyurt WCF Geçtiğimiz günlerde çalıştığım turuncu bankada bölümüm değişti. Yeni bölümümdeki ilk görevim ise ServiceStack yerini alabilecek bir çatının oluşturulması konusunda bir takım POC çalışmalarının yapılması. Önemli hedeflerden birisi Servislerin IIS bağımsız dinamik olarak ayağa kaldırılması ve servislere gidip gelen mesajların yakalanabildiğinin görülmesi. Epey zamandır WCF alt tarafında çalışmamıştım. Pas tuttuğumu itiraf edeyim. Tabii yazının konusu devam etmekte olan POC çalışmasının tamamını anlatmak değil ancak dinamik olarak host edilen servislere gelen ve servisten dönen mesajları nasıl yakalayabiliriz bunun bir yolunu göstermeye çalışacağım. [Daha fazla]
GoLang - Bir ORM Denemesi 17 Temmuz 2017 Burak-Selim-Senyurt GoLang Veri depolamanın en popüler yolu NoSQL veya RDBMS bazlı sistemler. 90lı yıllardan beri program yazan insanlar için de özellikle Microsoft SQL Server, Oracle ve sonrasında gelen MySQL ya da SQLite gibi yapılar da oldukça fazla oranda kullanılmaktalar. E tabii bildiğiniz üzere bu serüvenin ortalarında bir yerlerde SQL dili ve RDBMS'in yapısının, programcıların kodlama mantığına biraz ters gelişi de vuku buldu. Sonuçta SQL tarafındaki varlıkların programatik ortamda ve özellikle nesne yönelimli(Object Oriented) dünyada nasıl daha anlamlı ele alınabileceğinin yolları araştırıldı. Artık popüler olma zamanı nesne ilişkilendirmelerini sağlayan araçlardaydı. Yani Object Relational Mapping(O/RM) konusu gündemdeydi. Neredeyse bütün programlama çatılarının bu tip araçlarla yakın ilişkisi bulunmakta. Hibernate ve Entity Framework gibi en azından ülkemizde adını sıklıkla duyduğumuz araçlar dışında farklı pek çok ürün de bulunmakta. Ben de GoLang tarafında SQLite operasyonlarını incelemeye çalışırken "bir O/RM aracı var mıdır?" sorusuna cevap ararken buldum kendimi. Murat Hoca'nın kitabı, GoLang'in resmi dokümanları, Stackoverflow konuları derken gitub üzerinden sunulan GORM ile karşlılaştım. [Daha fazla]
GoLang - REST Servisimizi SQLite'a Bağlayalım 10 Temmuz 2017 Burak-Selim-Senyurt GoLang Son yazılarımızda GoLang ile web uygulamalarının geliştirilmesi üzerinde duruyoruz. Yeni şeyler öğrendikçe bunları farklı örnekler üzerinden denemeye gayret ediyorum. Bu sefer HTTP yönlendiricimizi SQLite ile çalışan basit bir REST servisi haline getirmeye çalışacağız. [Daha fazla]
GoLang - Static Web İçeriği ve JSON Üretimi 01 Temmuz 2017 Burak-Selim-Senyurt GoLang Bir önceki yazımızda yönlendiricileri tanımaya çalışmış ve github üzerinden sunulan httpRouter paketini kullanarak dinamik HTML içeriği ürettiğimiz bir örnek geliştirmiştik. HttpRouter paketi oldukça ilgimi çekti ve çeşitli örnekler ile konuyu pekiştirmeye çalıştım. Bu yeni örneğimizde static web içeriğini ve gelen taleplere göre JSON bazlı çıktı üretecek yönlendirme işlemlerini ele almaya çalışacağız. Başrol oyuncusu olarak yine Star Wars dünyasından bir kaç modeli kullanmaya gayret edeceğiz. Bu kez şu adresten yararlandığımı ifade edebilirim. [Daha fazla]
Python - PEP8 Uyumlu Kod Geliştirmek 27 Haziran 2017 Burak-Selim-Senyurt python Geçtiğimiz günlerde senelik kişisel gelişim döngümün ikinci yarısının ilk konusu olan Python'a başladım. Yine bir önceki yılın aynı dönemlerinde Raspberry Pi ile ilgili olarak Python üzerine bir şeyler yapmaya çalışmıştım. Döngünün bir sonraki adımında yine Python ile başbaşayım. Head First Python, A Brain Friendly Guilde isimli kitabı takip ediyorum. Her örneği tek tek yapmaya çalışıyorum. Bayram tatilinde ilgimi çeken bir konu ile karşılaştım. Yazdığımız python kodlarının PEP8(Python Enhancement Proposals) adı verilen standartlara uygun olup olmadığının tespiti. [Daha fazla]
GoLang - Yönlendiriciler (Routers) 26 Haziran 2017 Burak-Selim-Senyurt GoLang Yönlendirme(Routers) mekanizmaları özellikle anlamlı http taleplerinde önemli bir rol oynar. Bir tarayıcının URL satırından gelen ifadelerin sunucu tarafında ele alınması sırasında işleri kolaylaştırıcı kütüphaneler de bulunmaktadır. Sevgili Murat Özalp'ın kitabında ilerlerken GO'nun built-in yönlendirme mekanizmaları dışında github üzerinden sunulan pek çok basit ve kullanışlı çatının daha olduğunu öğrendim. Tabii burada bahsedilen kütüphaneler ağırlıklı olarak web taleplerinin bir eşleştirme koduna göre uygun fonksiyonlara yönlendirilmesi ve cevaplandırılması ile alakalıydı. [Daha fazla]
GoLang - Ticker ile Periyodik İş Çalıştırma 18 Haziran 2017 Burak-Selim-Senyurt GoLang GO dilinin en güçlü yanlarından birisi eş zamanlı programlama(Concurrent Programming) kabiliyetlerinde sunduğu performans ve kullanım kolaylıkları. Daha önceden şu yazıda Concurrency konusunu GoRoutine ve Channel kavramları üzerinden incelemeye çalışmıştım. Çalıştığım kaynaklarda ilerledikçe eş zamanlı programlama konusunda yeni şeyler de öğrendim. Bunlardan birisi time paketinden yer alan time tipi. Bu tipin NewTimer ve NewTicker isimli iki önemli fonksiyonu bulunuyor. [Daha fazla]
GoLang - Built-In JSON Desteği 16 Haziran 2017 Burak-Selim-Senyurt GoLang JSON(JavaScriptObjectNotation) ile barışık yaşamayan programlama dili neredeyse yok gibi. Özellikle son on yıl zarfında geliştirilen veya ön plana çıkan ne kadar dil varsa JSON için çekirdekten destek sunuyor. GoLang için de benzer durum söz konusu. Nasıl mı? Aynen aşağıdaki kod parçasında görüldüğü gibi. [Daha fazla]
Powershell'i Kurcalayan Bir Yazılımcı 14 Haziran 2017 Burak-Selim-Senyurt Powershell Aslında Powershell betikleri uzun zamandır yaygın ve etkin bir şekilde kullanılıyor. Sistem yöneticilerinin biraz programlama bilgisi ile veya programcıların da biraz sistem bilgisi ile bu dili temel seviyede kullanmaları mümkün. Elimizdeki Windows 7'den son sürüm Windows Server ailesine kadar pek çok sistemde Powershell betiklerini kullanabiliriz. Geçtiğimiz günlerde bir boşluk yakaladım ve en çok tavsiye edilen Powershell betikleri nelerdir öğrenmek istedim. Uzman olmadığım bir alan olsa da tanıma mahiyetinde neler yapılabileceğini görmek istiyordum. [Daha fazla]
GoLang - Bir Go Paketini Ruby'den Çağırmak 09 Haziran 2017 Burak-Selim-Senyurt GoLang Pek çok kaynak GO dilinin ileride C'nin yerini alabileceği yönünde görüşler belirtmekte. Özellikle IoT alanında bu dilin daha fazla ön plana çıkacağı vurgulanıyor. Bu düşüncenin haklı olabileceği yönünde bazı tespitlerim var. Söz gelimi GO ile yazılmış bir paketi başka bir dilden çağırmamız mümkün. C, Python, Java ve Ruby bunlardan sadece bir kaçı. [Daha fazla]
GoLang - Kalıtım için Gömülü Tiplerin Kullanımı 04 Haziran 2017 Burak-Selim-Senyurt GoLang Bir süredir GO dili ile ilgili çalışmalarıma ara vermiştim. Yakın zamanda ise sevgili Murat Özalp'in GO Programlama isimli kitabını takip etmeye başladım. Gerçekten her bölüm son derece doyurucu. Kitabı düzenli olarak hergün çalışıyorum. Bazen çok az zaman ayırsam da her gece bir kaç sayfasını okuyor ve uygulamaya çalışıyorum. Şimdilerdeki en büyük yardımcım LiteIDE isimli kod editörü(ki Murat Hoca'nın tavsiyesidir ve çok memnun kaldığım bir geliştirme aracıdır) Burada yaptığım günlük çalışmaları aksatmamaya gayret ediyor ve kendime göre hazırladığım örnekleri github üzerinde topluyorum. Geçtiğimiz gün gömülü tiplerin kullanımını öğrenmeye çalıştım. Bildiğiniz gibi GO dili tam anlamıyla nesne yönelimli bir dil değil. Her şeyden önce class gibi bir kavram olmayışı kafaları biraz da olsa karıştırıyor. Lakin struct, interface ve struct'lar ile ilişkilendirilebilen metodlar yardımıyla kalıtımı uygulayabilmek mümkün. Hatta çoğu dilde riskli olduğu için izin verilmeyen çoklu kalıtımı biraz daha güvenli bir şekilde sağlama şansımız var. Gömülü tipler(ya da struct içinde kullanılan struct tipinden değişkenler) yardımıyla bunu sağlayabiliriz. [Daha fazla]
GoLang - Web Programlamaya Giriş 27 Mayıs 2017 Burak-Selim-Senyurt GoLang Bir web uygulamasının temel malzemeleri nelerdir? Sunucu tarafında çalışan bir çatı, içeriklerin gösterildiği dinamik web sayfaları, tasarım, görsel zenginlik katan materyaller(resimler,css'ler vb), veri depolama enstrümanları ve diğerleri. Aslında internet programcılığının ilk yılları düşünüldüğünde basit HTML sayfalarının neredeyse her tür ihtiyacı karşılayacağı düşünülüyordu. Zaman geçtikçe programlama dillerinin dinamik web sayfaları ile olan etkileşimi, istemci taraflı çalışan betiklerin sunucu taraflı kullanılabilmesi de gündeme geldi. Modern programlama dillerinin neredeyse tamamı web uygulamaları geliştirebilmek için gerekli temel donanıma sahip. Backend tarafında eş zamanlı işlemlerde yüksek performans sunan GO diliyle de web tabanlı uygulamalar geliştirebilmemiz mümkün. [Daha fazla]
Tek Fotoluk İpucu 159 - GoLang ile Fonksiyonları Parametre Olarak Kullanmak 22 Mayıs 2017 Burak-Selim-Senyurt GoLang GoLang fonksiyonel programlama konusunda oldukça fazla kabiliyete sahip. Birinci sınıf fonksiyonlar(first-class functions), yüksek öncelikli fonksiyonlar(higher-order functions), closures, birden fazla değer döndüren fonksiyonlar,function literals ve kullanıcı tanımlı fonksiyon tipleri(user defined function types) bu kabiliyetler arasında. Dili anlamaya çalışırken strings paketinde yer alan FiledsFunc fonksiyonu ile karşılaştığımda etkilendiğim bir tanımlama keşfettim. [Daha fazla]