Osman KURT

Yazılım Uzmanı | MVC Eğitmeni

C# Async Programlama - Task Kullanımı

Async programa denilince akla ilk gelen 2 seçenek vardır. 

  • Task 
  • Thread

Async programlama ile daha sıklıkla kullanılan Task yapısı thread yapısına göre üst seviyede. Task yapısını kullanarak daha gelişmiş işlemler yapabiliriz. Thread pooling yapısını otomatik olarak kullanıp birbiri ardına eklenebilecek olan işlemleri daha iyi organize etmektedir.

Aşağıdaki yapıda tasks adında türü task olan bir dizi oluşturduk. Bu dizi 3 task değeri alacaktır. Task tanımlamalarımızı yaptıktan sonra Task.WaitAll(tasks) metodu ile tüm taskların çalışıp biteceğini garanti ettik.

var tasks = new[]
    {
        Task.Run(() => { işlem gelecek }),
        Task.Run(() => { işlem gelecek }),
        Task.Run(() => { işlem gelecek })
    };
	
Task.WaitAll(tasks.toArray())

*Burada ki amaç işlemleri art arda yapmaktansa birbirinden bağımsız task yaratıp birbirine paralel işlem yaratmak. Bu da bize zamandan tasarruf sağlayacaktır. 

Osman KURT
Yazılım Uzmanı

RabbitMQ ve Kafka Karşılaştırması

Message Broker teknolojilerinden öne çıkan iki isim olan Kafka ve RabbitMQ’nun farklarını ve hangi durumlarda hangisinin tercih edilebileceğine dair bilgileri bir araya toplamak istedim. Tabi ki iki teknolojinin de karakteristik özellikleri, avantajları ve dezavantajlar vardır. İki teknoloji de farklı ihtiyaçlara cevap vermektedir. Sizin için hangisinin en uygun olduğunu yine sizin gereksinimleriniz belirleyecektir.

Yazının tamamını okumak için alt kısımdaki bağlantıyı kullanınız.

https://medium.com/@alikzlda/kafka-vs-rabbitmq-abe52d5eee34


İlk .Net Core Uygulamamız

Merhaba Arkadaşlar,

Microsoft'un open source dünyasına hızlı giriş yapmasından sonra bildiğiniz üzere .Net Core furyası esmeye başladı. Son trendlere baktığımızda lisans paralarından sıkılan şirketlerinde favorisi olduğunu düşünürsek yazılım geliştiricilerin de vazgeçilmezi olacak gibi duruyor. 

İş ilanlarını incelediğimizde de durum ortaya çıkıyor. Bunu düşünerek bir giriş örneği hazırlamak istedim ve GitHub hesabım üzerinden paylaşmakta fayda görüyorum. Bu arada bu platform üzerinden ilk paylaşımım olma özelliğini de taşıyor.

Url: https://github.com/byokurt


Osman KURT

ElasticSearch Kurulumu

Windows bilgisayarımıza elasticsearch kurmak için ilk yapmamız gereken şey java'nın bilgisayarımızda kurulu olması.(Çünkü ElasticSearch java dilinde geliştirilmiştir)

Java kurulumundan emin olduktan sonra yapmamız gereken https://www.elastic.co/downloads/elasticsearch linkinden zip dosyamızı download etmek.

Sonrasında indirdiğimiz dosya üzerinde bin klasörü altında elasticsearch.bat dosyamızı çalıştırmamız yeterli olacaktır. 

Kurulum tamamlandığında http://localhost:9200 adresinde "ElsaticSearch" çalışmaya başlayacaktır. İlgili adrese gittiğinizde karşınıza çıkacak görüntü alt kısımdaki gibi olacaktır. 

*Sürüm farklılıkları olabilir.

{
  "name" : "osman",
  "cluster_name" : "KURT",
  "version" : {
    "number" : "6.2.2",
    "build_hash" : "72cd1f1a3eee09505e036106146dc194xxxxxxxx",
    "build_timestamp" : "2015-11-18T22:40:03Z",
    "build_snapshot" : false,
    "lucene_version" : "5.3.1"
  },
  "tagline" : "You Know, for Search"
}

Osman KURT

Yazılım Uzmanı

ElasticSearch Nedir?

ElasticSearch Nedir?

ElasticSearch, java programlama dili kullanılarak open source geliştirilmiş ve lucene alt yapısı üzerine kurulmuş ölçeklenebilir, full text search tabanlı bir engine'dir

En belirgin avantajları arasında;

  • Cluster yapısı çok basittir
  • Rakiplerine göre çok fazla kaynak tüketmez
  • Kendi içinde yüksek erişilebilirlik (high availability) sunar
  • İndexleme mantığı olduğu için hızlı arama yapar
  • Doküman ve indeksleme kavramı çok kullanılır
  • Dokümanları JSON olarak indexler
  • Mapping kavramı vardır. Bir belgenin arama motoruna nasıl aktarılması gerektiğini tanımlama sürecidir
  • Shared ve Replica kavramı vardır


Ülkemizde de başta www.kariyer.net olmak üzere birçok firmada elasticsearch kullanımı mevcuttur. Dünya genelinde ise Netflix, IBM, Slack, Linkedin, Ebay gibi büyük firmalar kullanmaktadır.

Bu link üzerinden indirebilirsiniz.


Marvel Nedir?

Marvel, elasticsearch'ün sunmuş olduğu bir arayüzdür. Bu arayüz sayesinde elasticsearch üzerinde kurulu olan bütün node'ların durumlarını görebiliriz. Bunların yanı sıra döküman sayılarını takip edebilir ve gelen tüm request'lerin oran bilgilerine ulaşabiliriz.


Sense Nedir?

Sense, elasticsearch query'lerini browser üzerinde çalıştırmamızı sağlayan bir araçtır. Bu sayede herhangi başka bir araca gerek duymadan sense üzerinden sorgularımızı çalıştırabilir ve sonuçlarını görebiliriz. Bunların yanı sıra Index, Mapping ve Document ekleme/silme gibi işlemleri de yapabilmekteyiz.

Sense ve Marvel için kibana kurulumu yapılması gerekmektedir. Bu linkten indirebilirsiniz.


Osman KURT
Yazılım Uzmanı

React Native nedir?

React, Facebook yazılım ekibi tarafından geliştirilmiş bir JavaScript kütüphanesidir. Geliştiricilerin işlemleri daha kolay hızlı ve derli toplu yapmalarını amaç edinmiştir.

Bunun yanı sıra esas yazımızın konusu olan react native diye bir zımbırtı var. O da react yapısını kullanarak native mobile uygulamalar geliştirmenizi sağlayan bir kütüphanedir. Ya da bir diğer adı ile (Functional programming) fonksiyonel programlama dilidir.


Bu program ya da kütüphane size javascript kullanarak mobile uygulama geliştirmenize yardımcı oluyor. Bunu yaparken sizi HTML ve CSS ile uğraştırmıyor. Browser bağımsız bir yapıya sahip. Kendine has bir kod bloğu var ve sadece bunu web tabanlı render ediyor. Siz mobil bir uygulama geliştirdiğinizde ise kendi yapısını IOS ve android dillerine başarılı şekilde render edebiliyor.

Neden react native kullanmalıyız.

Birçok neden sayabilirsiniz aslında. Ben açıkça söylemekten çekinmeyeceğim uygulamaları kendi dillerinde yazmayı seven ve destekleyen bir geliştiriciyim. Çünkü elinde sonunda alınan çıktı hep kendi öz çıktısı. Bu biraz Tofaş bir arabaya BMW motoru takmak gibi oluyor benim gözümde.

Ama iyi yanlarından bakacak olursak 2 birim zaman da yapılan bir geliştirme bu kütüphane sonucunda 1 birim zamanda üretilebilecek. Yani hem android hem ios developer çalıştırma durumunda kalmayacak firmalar. Diğer bir faydası ise yapılacak bir geliştirme ya da bug fix aynı zaman da her iki proje içinde geçerli olacak ve zaman tasarrufu sağlanmış olacak.

Öğrenmekte fayda var çünkü arkasında Facebook gibi bir dev var ve gelişmeye devam edecek bir teknoloji.

Görüşmek üzere,

Osman KURT

Custom Validators Kullanımı

Merhabalar,

Bu örnek daha önceki yazılarımdan fluent validation kullanıma ek olarak yazıldı. Mesela elimizde bir Array olsun ve bu Array üzerinden item kontrolü yapalım. Bu örneği sadece item kontrolü olarak düşünmeyelim de özelleştirilmiş kontrolleri buradan yapabileceğimizi düşünelim.

Basit ama işinize yarayacak bir örnek.

public class PersonValidator:AbstractValidator<Person> { 
  public PersonValidator() {
   RuleFor(x => x.Pets).Must(list => list.Count <= 10).WithMessage("Hata Mesajı");
  }
}

Osman KURT

VueJS Nedir? Kullanımı ve Örnekleri

VueJS Nedir?

VueJS yazılımın front-end tarafını daha kolay ve kullanışlı bir hale getirmek için geliştirilmiş bir script kütüphanesidir. Öğrenmesi kolaydır ve yavaş yavaş ülkemizde içerik oluşmaya başlamıştır. Birçok büyük ölçekli projede firmalar tarafından kullanılmaya başlanmış ve artık iş ilanlarında VueJs bilen front-end developer aranıyor yazılarını görmeye başlamamız an meselesi.

Gelin birkaç küçük örnek görelim,

<script src="https://unpkg.com/vue/dist/vue.js"></script>
 
<div id="app">
  <p>{{ message }}</p>
</div>
 
<script>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue.js!'
  }
})
</script>

VueJS ile Listeleme (Repeater)

VueJS ile listeleme işlemi AngularJS sözdizimine oldukça benzer. v-for=“data in list” şeklinde bir kullanım ile tanımlandığı html tagını listedeki elemanlara göre tekrarlar. aşağıdaki örneği inceleyin

<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app-4">
  <ol>
    <li v-for="todo in todos">
      {{ todo.text }}
    </li>
  </ol>
</div>
 
<script>
var app4 = new Vue({
  el: '#app-4',
  data: {
    todos: [
      { text: 'Bilgisayar Mühendisliği' },
      { text: 'Endüstri Mühendisliği' },
      { text: 'Elektronik Mühendisliği' }
    ]
  }
})
</script>

VueJS ile Method Kullanımı

VueJS ile method tanımlamak kolaydır anlaşıldığu üzere bu framework’un genel yapısı JSON yapısını kullanır aynı şekilde metotları da json değişkeni şeklinde tanımlayabilirsiniz. standart kullanıcı işlevlerini de v-on:click=“metotismi” şeklinde html etiketine tanımlayabilirsiniz.

<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app-5">
  <p>{{ message }}</p>
  <button v-on:click="reverseMessage">Yazıyı Ters Çevir</button>
</div>
 
<script>
var app5 = new Vue({
  el: '#app-5',
  data: {
    message: 'Merhaba Dünya'
  },
  methods: {
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')
    }
  }
})
</script>

VueJS ile Model Kullanımı

VueJS’de input elemanlarına v-model=“degiskenismi” şeklinde veri bağlayabilirsiniz. ve herhangi bir etki ile model güncellendiğinde siz bir tetikleme yapmadan input değerleri güncellenecektir.

<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app-6">
  <p>{{ message }}</p>
  <input v-model="message">
</div>
 
<script>
var app6 = new Vue({
  el: '#app-6',
  data: {
    message: 'Hello Vue!'
  }
})
</script>

VueJS ile Component Kullanımı

VueJS ile kendi komponentlerinizi yazabilir html içerisinde bunları render edebilirsiniz. bu şekilde çalışmak işinizi hızlandıracaktır ayrıca komponent kullanımı ile bir kez yazdığınız arayüz parçalarını bir çok projede kullanabilirsiniz. Html içerisinde şeklinde özel etiketler oluşturmanıza izin verdiği için kullanım kolaylığı sağlamaktadır.

<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app-7">
  <ol>
    <todo-item v-for="todo in todos" v-bind:todo="todo"></todo-item>
  </ol>
</div>
 
<script>
Vue.component('todo-item', {
  props: ['todo'],
  template: '<li>{{ todo.text }}</li>'
})
var app7 = new Vue({
  el: '#app-7',
  data: {
    todos: [
      { text: 'Learn JavaScript' },
      { text: 'Learn Vue' },
      { text: 'Build something awesome' }
    ]
  }
})
</script>

Güzel bir başlangıç olsun, kolay gelsin :)

Osman KURT
Yazılım Uzmanı

Elon Musk ve Jeff Bezos Toplantı Kültürü

Çoğu zaman yaptığımız iş toplantıları amaçlarına hizmet edemeyebilir. Hedeflerine istikrar ile yürüyen Elon Musk ise tüm toplantıları verimli hale getirebilecek bir yönteme sahip. Eski bir Space X çalışanı Skyler Shuford Quora’da Elon Musk’ın verimliliğiyle ünlü toplantıları nasıl yaptığını açıkladı. Shuford‘ın arkadaşı üzerinden anlatılan bu küçük anekdot şöyle:

“En yakın arkadaşlarımdan biri benden birkaç yıl önce orada çalışmaya başlamıştı. Analiz grubunda çalışıyordu (Hala da orada çalışıyor). Dolayısıyla gidip sadece bir soru sorarak işi çözebilecekken toplantı yapmak pek de mantıklı olmuyor.  Arkadaşım bir keresinde benimle bu konu hakkında bir anısını paylaşmıştı (burada durum farklı sözcüklerle açıklanmıştır):

Elon bir toplantı katılımıcısına şöyle der: “Hiçbir şey söylemedin. Neden buradasın?”

Shuford Elon’un bu tutumunu ise şu şekilde yorumluyor: “Bu sınırı aşan bir şekilde kaba bir davranış olabilir ancak mantıklı. Eğer bir amacınız yoksa o toplantıya katılmayın. Bu amaç bir karar vermek de olabilir insanlara hız katmak da… Bir çok durumda e-posta göndermek yeterli olacaktır.”

Shuford ayrıca saat başına 80 ile 100 dolar arası bir ücret alan mühendislerin toplantı yapmasının şirkete büyük bir maliyet getirdiğini vurguluyor. 10 Mühendisin katıldığı 1 saatlik toplantı şirkete 1000 dolara mal oluyor.

Toplantılar konusunda her CEO’nun farklı bir görüşü var. Amazon CEO’su Jeff Bezos da toplantılar için iki orta boy pizza kuralını kullanıyor. İki orta boy pizza kuralına göre, eğer bir toplantıda katılımcılara 2 orta boy pizza yetmiyorsa o toplantı çok kalabalıktır ve verimsiz geçecektir.


React.js Nedir?

Reactjs son zamanlarda özellikle son bir yıldır yaygın olarak kullanılmaya başlanan bir javascript framework. İçeriğin zaman içinde değiştiği interaktif uygulamalar için oldukça etkili bir yönetilebilirlik sunan bu teknoloji, zamanla çok daha yaygın hale gelecektir.

Halihazırda dünya genelinde kullanım oranına bakılırsa java script framework listesinde Angular Js sonrasında ikinci sırada yer alıyor.

Kısaca bakmak gerekirse zamanında Facebook mühendisleri tarafından geliştirilmiş bir teknoloji. Yüzlerce geliştiricinin aynı zaman zarfında proje üzerinde çalışmasına kolay şekilde olanak veren, etkili bir DOM yönetimi sağlayan bir proje.



Facebook mühendisleri kardeşlerimiz sırf kendi işleri kolaylaşsın diye böyle bir geliştirmeye gitmişken, sonrasında yapılan instagram satın alımı ve instagram mühendislerinin biz de kullanmak istiyoruz demesi üzerine, mucitlerinin ve yöneticilerinin yahu biz neden bunu open source olarak insanların kullanıma açmıyoruz demesi üzerine biz developer kulların kullanımına açılmıştır.

Birkaç örnek inceledikten sonra eminim ki kullanım alanlarını farkedecek ve projelerinizde deli gibi kullanmak isteyeceğiniz bir framework. Ayrıca maliyet hesabı yapan bütün herkesi mutlu edecek bir yapıya sahip.

Kurulum ve dosyalar için;

https://facebook.github.io/react/

Osman KURT
Yazılım Uzmanı