Rust Dilinde Warp, Tokio Küfelerini Kullanarak Asenkron Web Api Geliştirmek

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]

Basit Bir .Net Core Worker Servisi(Linux Daemon Olarak)

.Net Core Worker Service'ler ile planlanmış görevlerin arka planda icra edilmesi mümkün. Mesela belirli aralıklarla sistemden veri toplayıp kullanan bir Windows Service bu şekilde geliştirilebilir. Lakin o zaman .Net Core kullanmanın bir esprisi kalmıyor öyle değil mi? :) Bunun yerine bir Linux servisi geliştirmeyi ne dersiniz? En azından nasıl geliştirilebileceğini öğrenmeye. İşte benim amacım Heimdall(Ubuntu-20.04) üzerinde Linux Daemon olarak çalışacak bir servis yazmak. Örneğin günlük hava durumu bilgilerini 24 saatte bir toplayıp Redis üzerinde saklayan bir servis pekala güzel ve eğlenceli olabilir(Belki de olmaz, neyse) Daha önceki örneklerde kullandığımız Redis Docker Container'ı burada da kullanabiliriz. Öyleyse ne duruyoruz. Haydi kodlamaya. [Daha fazla]

Sıkça Duyduğum Deno'ya Hello Dedim

Şu sıralar adını sıklıkla duyduğum ve NodeJs'in yerini alır mı almaz mı tartışmalarını(ki öyle bir şey yok) okuduğum Deno'yu basit bir örnekle inceledim. Javascript haricinde dahili olarak Typescript desteği de sunan, V8 üzerinde koşan ve Rust ile yazılmış bir çalışma zamanı olarak nitelendiriliyor Deno. Ben nasıl bir geliştirme tecrübesi yaşatacağını tatmak istemiştim. Klasik kurgu olarak REST tipinden bir servisin birkaç operasyonunu icra etsem yeterliydi. Örnek verileri almak için International Chuck Norris veritabanını kullandım :D Keza biraz eğlence katmak lazımdı olaya. Hatta verileri SQLite veritabanında tutmak da fena olmayacak. [Daha fazla]

Hey Raspi! Gerçekten Çok Güçlü Bir Bilgisayara İhtiyacım Var mı?

Almanya’daki kuzenlerimden biri olan Haluk abi orta öğrenimi için dayımlar tarafından İstanbul’a gönderilmişti. Şu anda 94 yaşında olan anneannem ve rahmetli Hasan dedemin Barbaros mahallesindeki bahçeli evlerinin üst katında sokak tarafına bakan oturma odasında yaşıyordu. Benim ilkokul sıralarında olduğum zamanlardı. Rahmetli Ali dayım orta okul sınıf geçme hediyesi olarak Haluk abime üstünde Commodore 64 yazan bir bilgisayar almıştı. Vaktinin çoğunu resim yaparak ve 37 ekran renkli televizyona bağlanmış Commodore’unda oyun oynayarak geçiriyordu. [Daha fazla]

Vue ve NW.js ile Desktop Uygulaması Geliştirmek

Daha önceden Electron ile cross platform desktop uygulamalarının geliştirilmesi üzerine çalışmıştım. Bu kez eskiden node-webkit olarak bilinen NW.js kullanarak WestWorld üzerinden desktop uygulaması geliştirmek istedim. NW.js cephesinde de aynen Electron'da olduğu gibi Chromium, Node.js, HTML, CSS ve javascript kullanılmakta. Lakin ufak tefek farklılıklar var. Electron'da entry point yeri Javascript script'i iken NW.js tarafında script haricinde bir web sayfası da giriş noktası olabiliyor. Build süreçlerinde de bir takım farklılıklar var. [Daha fazla]

HTTP/2 Server Push Nasıl Bir Şeydir?

HTTP/2 protokolü ile gelen önemli özelliklerden birisi de, tek bir TCP/IP bağlantısında sunucudan istemciye birden fazla dosya içeriğinin gönderilebilmesidir. Yazının ilerleyen kısımlarında kaynakçada işlenen node.js örneğini ele alacak ve çalışma zamanındaki işleyişleri irdelemeye çalışacağız. [Daha fazla]

Bilmiyordum, Öğrendim : SQL Merge

Gün geçmiyor ki çevremdeki insanlardan yeni bir şey daha öğrenmeyeyim. İş yerindeki sıkıcı sayılabilecek SQL sorguları arasında gezinirken takım arkadaşım Mustafa'nın bir önerisi üzerine SQL Merge komutunu araştırmaya başladım. 2008den beri var olan benim bihaber olduğum bu komutu öğrenirken keyifli anlar yaşadım. Normalde çok kötü bir SQLciyimdir ama Merge komutunu uygulamalı olarak denedikten sonra şirketteki o kallavi sorgunun hem daha da hızlandığını hem de daha okunur hale geldiğini gördüm. Sonunda konuyu kaleme alıp paylaşmanın iyi olacağını fark ettim. Haydi gelin başlayalım. [Daha fazla]

Electron ile Cross-Platform Uygulama Geliştirmek

Haftasonu kendimi bir şekilde ilginç bir maceranın içerisinde buldum. West-World'de Windows Forms benzeri bir uygulama yazabileceğimi ve bunu hem macos hem de windows platformunda yapabileceğimi öğrendim. Bunun için HTML, Node.js ve CSS yeterli. İşin aslı electron isimli açık kaynak geliştirilen ürün sayesinde platform bağımsız masaüstü uygulamaları geliştirmek mümkünmüş. Hızlı bir deneyim için interneti taramaya ve basit bir "Hello World" yazmaya karar verdim. Amacım West-World(Ubuntu) üzerinde geliştireceğim masaüstü uygulamasını hem macox hem de windows üzerinde çalıştırabilmekti... [Daha fazla]

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]

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]

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]

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]

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]

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

Docker Üzerinde .Net Core Uygulaması Çalıştırmak

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]

Python ve Flask ile REST Tabanlı Servis Geliştirmek

Bir süredir Python ile ilgili çalışmalarıma aralıklarla da olsa devam etmeye çalışıyorum. Malum iş yoğunluğu ve sıkışık proje takvimi nedeniyle eskisi kadar vakit ayıramıyorum. Bu nedenle öğrenmek istediğim konuları önceliklendirme yoluna gittim(Kendi çalışma programımda bir backlog oluşturup öğeleri önceliklendirdiğimi ifade edebilirim) Genellikle backend tarafında programlama yaptığımdan olsan gerek listenin üst sıralarında servis tabanlı geliştirmeler yer alıyor. Onlardan birisi de REST tabanlı servis uyarlamaları. [Daha fazla]

Recep Duman ile Raspberry Pi Hakkında Konuştuk

Bu yaz için kendime güzel bir hobi buldum. Raspberry PI. Biraz geç kalmış olabilirim bunun için ama merak ettiğim IoT(Internet of Things) konusunun önemli parçalarından birisiydi. Üstelik çocukların programlamayı öğrenmesi için de kullanılan vakıf destekli açık kaynak bir çalışmaydı. Hatta bu sene gerçekleştirebilyseydik eğer NedirTv?com etkinliğinde Raspberry Pi ile ilgili sunum yapacak olan DevNot yazarlarımızdan Recep Duman arkadaşımız ile aynı ekipte çalışıyor olmamız gibi bir gerçek de vardı. Kolları sıvadım ve işe koyuldum. [Daha fazla]