Merhaba Web 3.0


2021 yılında Decentralized Identifiers (DID) standardının çıkmasıyla birlikte BlockChain’e geçiş süreci hızlandı. HyperLedger yazılımları ile Web 3.0’a başlayabilirsiniz.

Web 3.0’da backend yazılımınızı Smart Contract’larla DApp hazırlayarak ve BlockChain SDK’larıyla yapıyorsunuz. Big Data için Hadoop ya da MongoDB entegrasyonu yapmanız mümkün.

BlockChain çok yavaş; en hızlısı PoA algoritmalı BlockChain’ler. HyperLedger ürünlerini Kubernetes üzerine yükleyin; SDK’ları kullanan backend yazılımlarını Kubernetes üzerine yükleyin ve Frontend için Angular, React, Flutter ya da React Native kullanın.

Ülkemizde Google’la yakınlaşma var; o yüzden ben backend’te de frontend’te de Google ürünlerini tercih ediyorum; derken NX ile tanıştım. NX sayesinde TypeScript projesinde Backend, Web ve Mobil bileşenlerini ve servislerini paylaşmanız mümkün. Ayrıca BlockChain dünyasında Google çözümleri henüz yok diyebiliriz, Web 3.0 dediğimizde aklımıza Meta firması geliyor.

Web 3.0 için şu teknolojileri öneriyorum:

  1. HyperLedger Besu, Indy ve Aries
  2. NodeJS
  3. Truffle
  4. React
  5. React Native
  6. Kubernetes
  7. Pardus

Ama bilmenizi isterim ki BlockChain sanıldığı kadar güvenli değil; cüzdan güvenliğinde hala zayıflıklar var; cüzdandaki verifiable credential’ları korumak mesele. Sıcak cüzdanların güvenli olmadığını biliyorsunuz, çünkü telefon ve bilgisayar işletim sistemleri ve yazılımlarının yüzlerce açıkları var.

Ayrıca kriptoloji güvenlik algoritmaları eskidi. RSA ve SHA-1 çoktan kırıldı. SHA-2 de kırılmak üzere. Kuantum dirençli yeni güvenlik algoritmalarına geçmemiz gerekiyor.

Mutlu kodlamalar 🙂

Google Assistant, Twitter ve Whatsapp benzeri on-premise bir projenin mimarisi nasıl olmalıdır?


Merhaba takipçilerim,

Big Data Blockchain projesi geliştirmek istiyorsunuz. Yapay zeka da olsun, WebRTC de olsun, Kubernetes te olsun, tüm güncel teknolojiler olsun istiyorsunuz. Nereden başlayacaksınız ne kullanacaksınız size anlatayım:

  1. Üyelik sistemi için Hyperledger Indy, NodeJS ve Rest/gRPC-Web kullanın. HyperLedger Indy üyelik sistemleri için geliştirilmiş bir blockchain çözümüdür ve üyelik verilerinin manipüle edilmesini engeller. Güvenlidir. Daha güvenli olması için Kuantum dirençli yapabilirsiniz (NIST bu yıl post-kuantum güvenlik algoritmalarını çıkarmayı hedefliyor).
  2. Logları kaydetmek için .NET 6 minimal api, gRPC/gRPC-Web ve Cassandra kullanın. Cassandra’yı blockchain veritabanı olarak kullanabiliyorsunuz. Insert işlemlerinde hızlı olan bir big data veritabanıdır.
  3. Chat mikroservisi için .NET 6 minimal api, gRPC/gRPC-Web ve HBase ya da Cassandra kullanın. HBase okuma işlemlerinde hızlı bir big data veritabanıdır. Cassandra ekleme işlemlerinde hızlı bir big data veritabanıdır. Tercih sizin.
  4. Toplantı mikroservisi .NET 6 minimal api, gRPC/gRPC-Web, SignalR, Redis ve HBase ya da Cassandra kullanın. Sunucu tarafında Periscope benzeri bir çözüm geliştirmek isterseniz, ya da Teams benzeri çok katılımcılı toplantı sistemi kurmak isterseniz Oven Media Engine ya da MediaSoup gibi yüksek performanslı WebRTC media sunucularını kullanabilirsiniz.
  5. Mikroblogging mikroservisi .NET 6 minimal api, gRPC/gRPC-Web ve HBase kullanın. Twitter HBase kullanmaktadır. Cassandra’yı denemiş fakat stratejik nedenlerden dolayı HBase’i tercih etmiştir.
  6. Yapay zeka mikroservisi için .NET 6 minimal api, gRPC/gRPC-Web, WebSocket kullanın. Ayrıca Azure Bot Servis, Bot Framework ve Dialogflow da kullanmanızı öneriyorum.
  7. Mobil Frontend’ler Flutter kullanın, Flutter en hızlı çözümü geliştirmenizi sağlar, gRPC ve WebRTC destekler. Oven Media Engine WebRTC sunucusu kullanacaksınız Flutter’da hazır player desteği olmadığı için sorun yaşabilirsiniz, aman dikkat.
  8. Web Frontend’ler React ya da Angular kullanın. React tarayıcıda hızlı çalışsa da kurumsal projelerde Angular tercih edilmektedir. Web ikinci planda ve önemsizse Flutter da kullanabilirsiniz.

Tüm servisleri Pardus üzerinde Kubernetes podları olarak çalıştırın. Load Balancer ve API Gateway için Envoy ya da NGINX kullanabilirsiniz. Kubernetes networkünüzü kurmak için minimum 5 adet sunucuya ihtiyacınız olacak. Tüm bu sistemi tek sunucuda çalıştırabilir miyiz henüz ben de bilmiyorum.

CI/CD sistemi kurun. Bunu Jenkins ile yapabilirsiniz. GitHub repolarınıza commit geldiğinde çekip build edip docker image’lerini ve podları güncelleyin.

Kubernetes networkünü güvenli hale getirmek için Istio service mesh kullanın.

.NET 6 backendlerini n-Tiered yapmalısınız. Katmanlarınız şöyle olabilir:
1. Minimal API
2. Service
3. Data (Repository’ler ve Generic-Repository’ler kullanın)
4. Model
5. Infrastructure
6. Test

Angular/React ve Flutter projelerinizde Unit Test ve E2E testleriniz olmalıdır. Testleriniz olmazsa bug karmaşasına düşebilirsiniz, ve projede değişiklik yapmak zamanla çok zorlaşır.

Mutlu kodlamalar 🙂

Kubernetes üzerine kurumsal BlockChain ağı nasıl kurulur?


Merhaba takipçilerim,

Microsoft Bot Framework ve Google Dialogflow ile yapay zekamızı hazırladık. Big Data veritabanı olarak HBase’in diğerlerinden daha hızlı olduğunu ve petabytelarca veriyi yönetebildiğini anladık ve bundan dolayı Big Data projelerimizde Apache HBase kullanmaya karar verdik.

Cassandra her ne kadar bir başka big data veritabanı olsa da okuma performansı yeterli değil. MongoDB ise yüksek sayıda transaction’lara uygun değil, o yüzden HBase en başarılı Big Data veritabanı olarak ön plana çıkmaktadır. Nitekim Salesforce, Twitter gibi kuruluşlar da HBase clusterını kullanmaktadır.

HBase’in CData .NET 6.0 driver’ı mevcuttur.

Uygulamamıza bir de Blockchain ağı eklemek istedik. Böylece üyelik sistemini HBase’de değil de, kurumsal Blockchain ağında ERC 725 standardında bir smart contract hazırlayarak ve Angular Web3 kütüphanesiyle konuşturarak bir DApp uygulama hazırlamak istedim.

2 gündür bu konuyla ilgili araştırma ve denemeler yapmaktayım. Öncelikle .NET ile Blockchain geliştirimi yapmak istiyorsanız: Geth, OpenEthereum, Neo (Çin’in Ethereum’u), Quorum ve Besu (IBM’in çözümü) gibi Blockchain sistemlerini kullanabiliyorsunuz. Geth ve OpenEthereum public ethereum ağı üzerinde çalışma yapmamızı sağlıyor. Ve public ethereum ağında uygulama yapmak ücretsiz değil.

Hem ücretsiz bir çözüm olması, hem de transaction’ların gizli kalması için private blockchain ağı kurmaya karar verdim. Private blockchain hem daha ekonomik hem de daha yüksek performanslı. HyperLedger Fabric, IBM’in kendi geliştirdiği private blockchain sistemidir. Fakat Ethereum blockchain çözümlerinin en kalitelilerin ve en başarılılarından biridir.

Nethereum ile private blockchain ağı kurmak isterseniz ya Quorum ya da Hyperledger Besu kullanmanız gerekir. Araştırmalarım sonucunda en iyisinin Java ile geliştirilmiş olan Hyperledger Besu olduğunu gördüm.

Hyperledger Besu ile hem public Ethereum ağında geliştirim yapabiliyorsunuz hem de private Ethereum ağı kurabiliyorsunuz. Performanslı ve güvenli olduğu için İBFT 2.0 PoA algoritmasını tercih ettim.

6 çekirdekli işlemcisi 12 GB RAM’i 50 GB diski bulunan Pardus sanal makina üzerine Hyperledger BESU’yu İBFT 2.0 PoA algoritmasıyla bir kaç denemeden sonra başarıyla kurdum. Pod’lar Statefulset’ler, Service ve Deployment’lar running durumuna geçti. Kurulum için adres: https://github.com/ConsenSys/quorum-kubernetes

Kurulum için GitHub’daki Playground klasöründeki Quorum-Besu İBFT 2.0 klasörü altındaki ./deploy.sh komutunu çalıştırmanız yeterli.

Mutlu kodlamalar 🙂

Big Data: Cassandra, HBase ve ElasticSearch


Cassandra ve HBase terabytelarca büyük veriyi depolamak için tercih edilirken ElasticSearch logları depolamak için tercih ediliyor.

Cassandra ve HBase arasında hangisini kullanacağınızı tercih ederken şu bilgileri göz önünde bulundurun:

  1. Cassandra yazma işleminde HBase’den daha hızlıyken, HBase okuma işleminde Cassandra’dan daha hızlıdır.
  2. Her ikisi de terabytelarca hatta petabytelarca büyük veriyi ve dosyaları depolamak için kullanılabilir.
  3. Cassandra’da master-node yoktur, always-on web ve mobil projeler için uygundur.
  4. HBase’de master-node vardır ve master-node çökerse tüm sistem çöker.
  5. HBase’in veri analizi araçları ile entegrasyonu iyidir.
  6. Cassandra Spark ile birlikte kullanılırsa okuma işlemi iyileştirilebilir.
  7. Netflix Cassandra ve Spark çözümünü tercih ederken, Twitter tweetleri depolamak için HBase’i tercih etmiştir.
  8. HBase’in performansı Cassandra’dan daha iyi.
  9. Son olarak ElasticSearch-Kibana ile loglama ve arama işlemleri için tercih edilir.

Mutlu kodlamalar 🙂

Pardus Üzerine Kubernetes Nasıl Kurulur?


  1. Oracle VirtualBox‘ı bilgisayarınıza yükleyin. (VirtualBox’ı yüklerken bilgisayarınızın işletim sisteminde bazı izinleri vermeniz gerekebilir.)
  2. VirtualBox üzerinde Other Linux (64 bit) kurulumu başlatın. 2 çekirdekli CPU, 6GB RAM, 20 GB disk ayırın. Sanal işletim sistemine Pardus adını verin.
  3. Pardus‘un XFCE sürümünü indirin.
  4. VirtualBox’a kurduğunuz işletim sistemine CD image olarak indirdiğiniz Pardus imageini gösterin.
  5. Kurduğunuz sanal linux’u açtığınızda Pardus setup’ı gelecektir. Pardus Çalışan’ı yükleyin.
  6. Sonra masaüstünden Pardus’u varsayılan ayarlarla kurun. Adınızı Soyadınızı ve şifrenizi tanımlayın.
  7. Pardus hazır! İsterseniz güncellemeleri yükleyebilirsiniz, yüklemenizi öneririm.

Pardus Üzerine Kubernetes Nasıl Kurulur?

  1. Pardus üzerine Docker’ı kurun: sudo apt-get install docker.io
  2. Docker’ın ayarlarını yapın:
    1. sudo mkdir /etc/docker
    2. daemon.json’u ayarlayın:
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

3. Docker’ı çalıştırın ve ayarlayın:

  • sudo systemctl enable docker
  • sudo systemctl daemon-reload
  • sudo systemctl start docker
  • sudo chmod 666 /var/run/docker.sock

4. Curl’ü kurun: sudo apt-get install curl

5. Kubernetes’i kurun:

6. Kubeadm’in kurulu mu, sürümü nedir kontrol edin: kubeadm version

7. Swap’ı kapatın (bunu bilgisayarı her kapatıp açtığınızda kubectl çalışmasından önce yapmanız gerekir): sudo swapoff -a

8. Kubernetes clusterını kurun:

  • sudo kubeadm init –pod-network-cidr=10.244.0.0/16
  • mkdir -p $HOME/.kube
  • sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  • sudo chown $(id -u):$(id -g) $HOME/.kube/config

9. Kubernetes networkünü kurun: kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

10. pardus node’unu (master’ı) worker gibi kullanıma açın: kubectl taint nodes pardus node-role.kubernetes.io/master-

11. Kurulum tamamlandı, tüm podların çalışıyor durumunda olması lazım, kontrol edin: kubectl get pods –all-namespaces

Eğer podlardan bazıları çalışmıyorsa logları inceleyerek sorunu çözmeniz gerekecek.

Tebrikler, Pardus üzerine Kubernetes kurdunuz. Artık kubectl apply -f ile daha önce hazırladığınız yaml dosyalarıyla docker image’lerini pod olarak Kubernetes networküne kurabilirsiniz. Ayrıca kubeadm join ile cluster’a yeni sunucular dahil edebilirsiniz.

Mutlu kodlamalar 🙂

Kubernetes üzerinde Microservice Mimarisi Tasarlamak için Bilmeniz Gerekenler


Kubernetes, Hyper-V ve VMWare gibi geleneksel sanallaştırma mimarilerinden daha iyi olduğu için tercih ediliyor. Mikroservis mimarilerinde Kubernetes ve OpenShift gibi container platformları kullanılıyor.

Kubernetes Cluster’ında bilmeniz gereken nesnelerden bazıları şunlar:

  1. Pod’lar
  2. Service’ler
  3. Deployment’lar

.NET Core uygulamanızı Docker ile compose edip Kubernetes clusterınıza pod olarak yüklüyorsunuz. Service ve Deployment ile expose ederek dış dünyaya açıyorsunuz.

Veritabanı ve diğer hizmetleri de Kubernetes pod ve servisi olarak uygulamalarınızın hizmetine sunuyorsunuz.

Kubernetes clusterınızdaki podlarda çalışan uygulamalarınızın birbiriyle iletişimi için Kafka kullanabilirsiniz.

Load Balancer ve Proxy hizmeti olarak NGINX yaygın olarak tercih ediliyor.

Network güvenliği için service mesh olarak Istio kullanabilirsiniz.

Sistemin konfigürasyonu zaman alıyor ve yayınlama süreçleri de basit sistemlere göre daha uzun sürüyor. Bu nedenle Continues Integration ve Continues Deployment (CI/CD) için Jenkins ya da Puppet gibi bir servise daha ihtiyacınız olacak.

Mikroservis mimarilerinde iletişim için Restful servisler yerine daha hızlı olduğu için Grpc ve Grpc-Web tercih ediliyor.

Veritabanı olarak MongoDB ve Cassandra gibi No-SQL veritabanları yatay büyümeyi destekledikleri için Kubernetes’e daha uygun.

Burada adı geçen yazılımların alternatifleri de var. Ben yüksek performans için kullanılanlardan bahsettim. Siz de kıyaslama yaparak ihtiyacınıza uygun alternatifi tercih edebilirsiniz. Bu günlerde yazılımcıların Devops süreçlerinden biraz anlıyor olması lazım.

Mutlu kodlamalar 🙂

Yazılım Testi Nasıl Yapılır?


Web ve Mobil uygulamalarının testi için bilmeniz gereken teknolojiler şöyledir:

  1. Web Uygulamalarının Testi için Selenium
  2. Mobil Uygulamalarının Testi için Appium
  3. Gerçek cihazlar üzerinde test için BrowserStack, AWS Device Farm veya Firebase Test Lab

Gerçek cihazlar üzerinde test ücretlidir, ve ücret; kullandığınız cihaz sayısına ve süresine göre değişebilir.

Selenium, Appium vb. teknolojilerle end-to-end test otomasyonu geliştirmek mümkündür. Yani yazılımı buton ve linklere manuel tıklamak yerine, formları manuel doldurmak yerine test yazılımı buton ve linklere tıklayarak formları otomatik doldurarak sonuçları loglar.

Böylece test otomatikleştirilir ve sonraki testler daha hızlı yapılabilir.

Test otomasyon kodunu yerel bilgisayarınızda Python, Java, C# gibi bildiğiniz programlama dilleri ile geliştirebilirsiniz. Mesela AWS Device Farm üzerinde test otomasyonu yazmak isterseniz, Python ya da Java kullanmanız önerilir.

AWS Device Farm Üzerinde Selenium ile Desktop Browser Testi Nasıl Yapılır?

AWS Device Farm’da Desktop Browser Testi yapmak için AWS SDK’ya ihtiyacımız var. Ayrıca Pytest ve Selenium kütüphaneleri de gerekiyor.

Örnek kod şu şekilde:

import boto3
from selenium.webdriver import DesiredCapabilities
from selenium.webdriver import Remote
from time import sleep
from selenium.webdriver.common.by import By
import os
class TestClass():
    def setup_method(self, method):
        # step 2: Set up a client for boto3
        # The AWS_ACCESS_KEY and AWS_SECRET_KEY will be inferred from the environment.
        devicefarm_client = boto3.client("devicefarm", region_name="us-west-2")
        testgrid_url_response = devicefarm_client.create_test_grid_url(
        projectArn= "arn:aws:devicefarm:us-west-2:test-grid-project-arn-copy&paste-from-aws",
        expiresInSeconds=300
        )
        desired_capabilities = DesiredCapabilities.CHROME
        desired_capabilities["platform"] = "windows"
        self.driver = Remote(testgrid_url_response['url'], desired_capabilities)

    def teardown_method(self, method):
        self.driver.quit()

    def test_devicefarm(self):
        self.driver.maximize_window()
        self.driver.get(
            'https:// web sayfanızın adresi')
        sleep(5)
        self.driver.find_element(By.XPATH, ".//*[contains(@class, 'btn btn-default btn-lg')]").click()
        sleep(5)
        screenshot_folder = os.getenv('SCREENSHOT_PATH', '/tmp')
        self.driver.save_screenshot(screenshot_folder + '/devicefarm.png')
        sleep(5)

Not: AWS Key ve AWS Secret bilgisini ortam değişkeni olarak ayarlamayı unutmayın.

Çalıştırdığınızda şöyle bir çıktı alırsınız:

awsdevicefarmtest % python3 -m pytest test_class.py
============================================================================================================ test session starts =============================================================================================================
platform darwin -- Python 3.7.6, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: /Users/muratdemirci/Projects/awsdevicefarmtest
collected 1 item                                                                                                                                                                                                                             

test_class.py .                                                                                                                                                                                                                        [100%]

============================================================================================================== warnings summary ==============================================================================================================
test_class.py::TestClass::test_devicefarm
  /Users/muratdemirci/Projects/awsdevicefarmtest/test_class.py:18: DeprecationWarning: desired_capabilities has been deprecated, please pass in an Options object with options kwarg
    self.driver = Remote(testgrid_url_response['url'], desired_capabilities)

-- Docs: https://docs.pytest.org/en/stable/warnings.html
================================================================================================== 1 passed, 1 warning in 82.75s (0:01:22) ===================================================================================================
awsdevicefarmtest %    

Sonrasında AWS Device Farm altındaki projenizden ekran kaydını izleyebilirsiniz.

Bu örnekte Python/Selenium kodunu açıklayacak olursak:

  1. setup method ile AWS Device Farm’a bağlandık ve Selenium Remote Driver’ımızı oluşturduk. Windows’ta Chrome tarayıcıyı kullanacağımızı belirttik.
  2. teardown_method ile driver’ı kapattık. Bunu yazmayı unutmayın, testler bittiğinde driverı kapatmalıyız.
  3. test_devicefarm ile bir test yaptık. Testimizde tarayıcıyı tam ekran yapıp belirttiğimiz web sayfasını açmasını söylüyoruz. Sonra XPATH ile class’ında btn btn-default btn-lg olan HTML etiketini bulup tıklamayı söylüyoruz. Butona tıklandığında bizim web sayfamız ikinci sayfaya geçiyor ve orada ekran görüntüsü alıyoruz. Tüm işlem 82 sn sürdü.

Device Farm tüm bu süreci video olarak kaydediyor ve test sonrasına izleyebiliyorsunuz.

Bu makalemizde Python, Pytest, Selenium ve AWS Device Farm kullanarak web uygulamamızı uzaktaki Chrome tarayıcıda nasıl test edebildiğimizi gördük. Yazdığımız test otomasyonu belirttiğimiz web sayfasını açıyor ve butona tıklayarak ikinci sayfaya gitmeyi sağlıyor. Sorularınız olursa yorum bırakabilirsiniz.

Mutlu kodlamalar 🙂

İnternetten Temel Yazılım Eğitimi için Kaynaklar


Önceki makalemde yazılım eğitimi için müfredat önerisinde bulunmuştum. Bu makalemde ise öğrencilerin ve eğitmenlerin kendilerini yetiştirmeleri için hangi kaynakları kullanabileceklerinden bahsedeceğim.

Yazılım Eğitimi Müfredatı Önerim Şöyleydi:

  1. SQL Server
  2. C#, n-Tiered .NET Core, Onion Architecture, EF Core, Web API
  3. React
  4. Flutter
  5. Docker
  6. GitHub, CI/CD
  7. Azure
  8. Örnek Proje
  9. Testing
  10. Microservice Mimarisi (bonus)
  11. Kubernetes (bonus)

Peki bu kadar konuyu nasıl hızlıca öğrenebiliriz, benim önerim şu 2 yöntemi sırayla kullanmak; kalıcı öğrenmeyi projeler geliştirerek sağlayabilirsiniz:

  1. Oku
  2. Yap

Gereksinimler:

Bilgisayarınıza kurmanız gereken yazılımlar şöyle:

  1. Visual Studio Community Edition (2019 veya daha yeni)
  2. Visual Studio Code
  3. Android Studio
  4. Git For Windows
  5. .NET 5 SDK
  6. React*
  7. Flutter
  8. SQL Server Developer Edition

* Windows veya WSL seçimi için şunu okuyun: https://docs.microsoft.com/en-us/windows/dev-environment/javascript/windows-or-wsl

Kaynaklar:

  1. SQL öğrenmek için: https://www.w3schools.com/sql/default.asp
  2. C# öğrenmek için: https://www.w3schools.com/cs/index.php
  3. .NET Core öğrenmek için: https://docs.microsoft.com/tr-tr/aspnet/core/?view=aspnetcore-5.0
  4. React öğrenmek için: https://www.w3schools.com/react/default.asp
  5. Flutter öğrenmek için: https://flutter.dev/docs
  6. Git öğrenmek için: https://www.w3schools.com/git/default.asp

Ayrıca React ile frontend teknolojileri geliştirmek için şunları da öğrenmelisiniz:

  1. HTML: https://www.w3schools.com/html/default.asp
  2. CSS: https://www.w3schools.com/css/default.asp
  3. Bootstrap: https://www.w3schools.com/bootstrap/bootstrap_ver.asp
  4. JavaScript: https://www.w3schools.com/js/default.asp
  5. jQuery: https://www.w3schools.com/jquery/default.asp
  6. JSON: https://www.w3schools.com/js/js_json_intro.asp
  7. AJAX: https://www.w3schools.com/js/js_ajax_intro.asp

Ek kaynaklar:

  1. XML öğrenmek için: https://www.w3schools.com/xml/default.asp
  2. SASS öğrenmek için: https://www.w3schools.com/sass/default.php
  3. EF Core öğrenmek için: (https://www.entityframeworktutorial.net/efcore/entity-framework-core.aspx (güncel değil)) ve https://docs.microsoft.com/tr-tr/ef/core/

Anketlere Göre Yazılım Projelerinde En Çok Kullanılan Teknolojiler


Yazılım projelerinde teknoloji tercihinizi neye göre verirsiniz? Performans, maliyet, yaygınlık gibi bir çok kritere dikkat edersiniz. Trendlere de bakarsınız. Çünkü az kullanılan bir teknoloji tercih etmeniz durumunda o teknolojiyi bilen yazılımcı bulmakta zorlanabilirsiniz.

Ayrıca Angular kullanıyorum ama React mı kullanmalıydım, sonra baştan yazmak gerekmesin gibi sorular aklınıza gelebilir. Eğer doğru teknolojiyi tercih etmede kendinizi bir çok teknik konuda bilgi bir guru olarak görmüyorsanız, sizin de başkaları ne kullanıyor ne tavsiye ediyor diye merak etmeniz normal.

Eğer bir eğitim kurumuysanız, hangi teknolojilerin popüler olduğunu ve hangi konularda eğitim vermeniz gerektiğini şekillendirmek için de bu makale işinize yarayabilir.

Hangi teknolojiler daha çok seviliyor ve tercih ediliyor öğrenmek için yüzlerce bilişim uzmanı üzerinde anketler yaptım ve bu anket sonuçlarını sizinle paylaşmak istiyorum:

  1. Hangi Mobil Uygulama Frameworkünü Kullanıyorsunuz? (En Çok Tercih Edilen: Flutter)

2. Hangi Frontend Frameworkünü Kullanıyorsunuz? (En Çok Tercih Edilen: React)

3. Hangi Backend Frameworkünü/Dilini Kullanıyorsunuz? (En Çok Tercih Edilen: .NET)

4. Hangi Veritabanını Tercih Ediyorsunuz? (En Çok Tercih Edilen: MS SQL Server)

100 günlük eğitim verecek bir kurumsanız müfredatınız aşağıdaki şekilde olmasını önerebilirim:

YAZILIM EĞİTİMİ MÜFREDATI İÇİN ANA KONULAR (Monolithic App)

  1. MS SQL Server
  2. C#, OOP, n-Tiered .NET Core, Onion Architecture, Entity Framework Core, Web API
  3. React, Redux
  4. Flutter, Dart
  5. Docker
  6. GitHub, CI/CD
  7. Azure
  8. Örnek Proje
  9. Testing
  10. Microservice Mimarisi (bonus)
  11. Kubernetes (bonus)

Not 1: Bir Azure hesabında ücretsiz 10 adet web uygulaması/web api host edilebilir, veritabanı olarak ücretsiz SQLite kullanılabilir. Bu web api ile firebase de host edilen bir React uygulama ücretsiz konuşabilir, Flutter uygulama bu web apiyi ücretsiz kullanabilir.

Not 2: Bir firebase hesabında bir adet ücretsiz React uygulama host edilebilir, bu uygulama Azure hesabındaki web api ile konuşabilir.

Not 3: .NET Core geliştirimi için Visual Studio For Windows önerilir, React uygulamalarının geliştirimi için Visual Studio Code önerilir.

Not 4: Flutter uygulamalarının geliştirimi için Android Studio önerilir. Flutter uygulamaları emulator üzerinde test edilebilir, Android telefonu PC’ye bağlayarak uygulama telefonda test edilebilir.

ChatBot’larda AdaptiveCards kullanımı


AdaptiveCards JSON formatında görsel kartlar hazırlamamızı sağlayan bir standart. AdaptiveCards’ı Microsoft Bot Framework’le kullanabildiğimiz gibi Python’la ya da Dialogflow’la geliştirdiğimiz ChatBotlarla da kullanabiliriz.

Hazırladığınız ChatBot’un frontendi Angular ya da React ise AdaptiveCards npm paketini yükleyerek projenizde kullanabilirsiniz.

Dialogflow’da AdaptiveCards response’larını Custom Payload alanları JSON dokümanları olarak girmemiz istemcide renderCard fonksiyonu ile renderlamamız gerekiyor.

Aşağıda örnek bir HeroCard görmektesiniz:

AdaptiveCards sayesinde yapay zekamız görsel ve buton gibi interaktif içerikleri içeren kartları döndürebilir hale geliyor. AdaptiveCards’ın istemci kütüphanesi ile JSON formatındaki responseları otomatik olarak renderlayabiliyorsunuz.

Bize sadece kartları JSON formatında tasarlamak kalıyor.

Mutlu kodlamalar 🙂