Kodlama tarafında pas tutmamak ve iyi vakit geçirmek adına internetten bulup çalıştığım bazı konuların örnek kodlarını burada toplamaya çalışıyorum. README.md dosyaları içerisinde amacımı ve az biraz proje başlangıç adımlarını da tarifliyorum. Bir sene sonra aynı örneğe tekrar dönüp baktığımda kodlar tanıdık geliyor ve anlıyorsam çalışmam boşa gitmemiş demektir. Ve sen sevgili yazılım sevdalısı arkadaşım; giriş yazılarından faydalanıp proje açılışlarını yapabiliyorsan, kodları kendi ortamında çalıştırabiliyorsan, sağıyla soluyla oynayarak bozup düzeltiyor hayal gücünle bir şeyler ekliyorsan, senin için de işe yaramış demektir. (Asla bir Saturday Night Works olamayacak ama olsun.)
Aşağıya da ilham veren bir fotoğraf bırakalım. Nereden nerelere geldik...
Burada Ahch-To (MacOS Mojave - Intel Core i5 1.4Ghz, 4 Gb 1600 Mhz DDR3) üzerinde geliştirmeye çalıştığım kişiel öğretilerim yer almaktadır. Örnekleri bir süredir Heimdall isimli Ubuntu yüklü makinede geliştiriyorum. Ancak ara sıra şirket bilgisayarındaki Windows'u da kullandığım oluyor. Heimdall üstünde 64 bit Ubuntu yüklü. 16GB Ram kapasitesine sahip. 4 çekirdekli Intel i5 işlemcisi ve GeForce GTX 1050 ekran kartı var. Bir masaüstü oyun bilgisayarı ama onu Linux üstünde bir şeyler öğrenmek için kullanıyorum. Ahch-To kod adlı sistem ise bir MacOS. 4GB Ram'i olduğu için oldukça yavaş. Bu nedenle çok sık uğramıyorum.
Projelerdeki zorluk seviyelerini T-Shirt Size ile belirtmeye çalıştım. Beni ne kadar zorladıklarını az çok anlayabiliyorum. Örneğin XL, o örnekte çok zorlandığım anlamına geliyor. 15nci örnekle birlikte uygulamalar içerisine bombalar (zararlı değil eksik kodlama veya strateji) koymaya karar verdim. Yani örnek çalışıyor ama önemli bir eksiği var. İyice test edilince ortaya çıkan ve repoyu indiren tarafından çözülmesi beklenen.(Uygulamaya Bırakılan Bomba! kısımlarına dikkat)
No | Konu | İlerleme | Seviye | Ortam | Bomba Soru? | Ödev? |
---|---|---|---|---|---|---|
40 | ||||||
39 | Spring Tarafında Eski Usül Soap Based Bir XML Web Service Yazmak Ne Kadar Zor Olabilir? | Tamamlandı | S | Heimdall | Var | Var |
38 | .Net Core Tarafından RabbitMQ'ya Mesaj Göndermek ve Java Tarafından Dinlemek | Tamamlandı | S | Heimdall | Var | Var |
37 | Ocelot - .Net Core Tarafında Bir API Gateway Denemesi | %75 | M | Heimdall | Var | Var |
36 | Rust Dilinde Warp, Tokio Küfelerini Kullanarak Asenkron Web Api Geliştirmek | Tamamlandı | M | Heimdall | Var | Var |
35 | .Net Core Web Api Tarafında SqlKata ile Sevimli SQL İşlemleri | Tamamlandı | S | Heimdall | Var | Var |
34 | Mountebank ile Mock Servis Desteği Sunmak | Tamamlandı | M | Heimdall | Var | Var |
33 | The Internet Computer (Internetin Yeniden Keşfi) ve Motoko'yu Duyunca Ben | Tamamlandı | S | Heimdall | ||
32 | Stackoverflow Sevgi Anketinde Yıllardır Bir Numara Çıkan Programlama Dili Rust Kimdir? | %13 | XL | Heimdall | Var | Var |
31 | Spring Boot ile PostgreSQL Kullanan Basit Bir Web Uygulaması Geliştirmek | Tamamlandı | M | Heimdall | Var | Var |
30 | Birden Fazla CSV İçeriğini Tek Bir JSON Dosyasına Alan İşi Spring ile Geliştirmek | Tamamlandı | M | Heimdall | Var | Var |
29 | BeeWare ile Linux Platformunda Desktop Uygulaması Geliştirmek ve Android Sürümünü Oluşturmak | Tamamlandı | S | Heimdall | Var | |
28 | Django ile Bir Web Uygulaması Geliştirmek | %80 | XL | Heimdall | Var | Var |
27 | Spring Boot ile MongoDb Kullanan Bir Rest Servisinin Geliştirilmesi | Tamamlandı | S | Heimdall | Var | Var |
26 | Microsoft MLNet Kullanarak Basit Bir Öneri Tahminleme Uygulaması Geliştirmek | Tamamlandı | L | Windows 10 | Var | Var |
25 | GO Ortamında Minik Bir CRUD Servisini Gin-Gonic ile Geliştirmek | Tamamlandı | M | Heimdall | Var | |
24 | NextJS ile Web API Tüketen bir React Uygulaması Geliştirmek | Tamamlandı | M | Heimdall | Var | Var |
23 | Basit Bir React Uygulaması Geliştirmek (Typescript, NodeJs, Express ve MongoDB ile) | Tamamlandı | L | Heimdall | Var | Var |
22 | Go Dilinin Temellerini Hatırlamak | %60 | M | Heimdall | Var | |
21 | .Net Core Üzerinde Roslyn Pratikleri Yapmak | %50 | S | Heimdall | Var | Var |
20 | Bir Web API Hizmetinde Request'ler ile CQ Arasında Mediator Kullanmak | Tamamlandı | M | Heimdall | Var | Var |
19 | Daha Kolay REST Api Yazmak için Angel Paketini Kullanmak | Tamamlandı | S | Heimdall | Var | Var |
18 | DART Programlama Diliyle Az Biraz Uğraşmak | %50 | M | Heimdall | Var | Var |
17 | MQTT Protokolünün Kullanıldığı Basit Bir Publisher/Subscriber Senaryosu | Tamamlandı | S | Heimdall | Var | Var |
16 | Bir Nginx Container'ını Load Balancer Yetkinliğiyle Kullanmak | %90 | L | Heimdall | Var | Var |
15 | Eğlenceli SignalR (Turşunun iyisi limonla mı yapılır yoksa sirkeyle mi?) | %80 | M | Heimdall | Var | |
14 | Bir Asp.Net Core Web Api Projesinde Generic Repository Deseninin Kullanımı | %75 | L | Heimdall | ||
13 | Bir .Net Core Web Api Bir Nodejs Bir Python Servisi Bir Araya Gelip docker-compose'a Misafirliğe Gitmişler | Tamamlandı | XL | Heimdall | ||
12 | Sequelize Kullanılan Bir NodeJs Rest Servisi Geliştirmek | %80 | S | Heimdall | ||
11 | Basit Bir .Net Core Worker Servisi (Linux Daemon Olarak) | Tamamlandı | S | Heimdall | ||
10 | Python Tarafında ProtoBuf Serileştirme | Tamamlandı | S | Heimdall | ||
09 | Distributed Cache Gerekiyorsa Elbette Redis | Tamamlandı | S | Heimdall | ||
08 | Yine Yeni Yeniden ELK (Bu sefer E ve K için docker-compose işin içinde) | Tamamlandı | M | Heimdall | ||
07 | Sıkça Duymaya Başladığım Deno'ya Minik Bir Merhaba | %80 | M | Heimdall | ||
06 | DT-Training (.Net Core Eğitimi için Hazırlık) | %55 | XXL | Heimdall Windows 10 | Var | Var |
05 | gRPC Tabanlı Basit Bir .Net Core Servisi Geliştirmek ve Kullanmak | %70 | M | Windows 10 | ||
04 | IKU Meetup (MongoDB, Web API, Unit Test) | Tamamlandı | L | Windows 10 | ||
03 | Razor Öğreniyorum | %80 | M | Windows 10 | ||
02 | MongoDB ile Bir GO Uygulamasını Konuşturmak | %85 | L | Ahch-To | ||
01 | Ruby Tarafından Redis (Docker bazlı) Veritabanı ile Konuşmak | %95 | M | Ahch-To |
Örnekleri yaparken kendimce bir hashtag bilgilendirmesi de yapmaya çalışıyorum. Nelerden bashedilmiş sonradan hatırlayayım diye.
#cSharp #dotNetCore #docker #dockerCompose #nodejs #deno #gRPC #workerService #dameon #rest #nginx #pm2 #redis
#distributedCache #razor #ruby #go #express #python #flask #postrgres #sqlite #migration #morgan #entityFramework
#elasticSearch #kibana #logstash #sequilize #protobuf #unitTest #xUnit #mongoDb #upstream #repositoryPattern
#genericRepository #dependencyInjection #async #await #curl #signalR #libman #hub #loadBalancer #dart #future
#asyncFor #pub #angelFramework #MediatR #CQRS #roslyn #dotnet-script #pointer #react #nextjs #nodemoon
#reactHooks #gin-gonic #java #apacheMaven #spring #django #beeWare #android #crossPlatform #Thymeleaf #rust
#theInternetComputer #motoko #mounteBank #sqlKata #warp #tokio
Gerek saturday-night-works olsun gerek skynet, çok sık tekrar ettiğim işlerden birisi de örneğe ait klasörler (genelde No ile başlayan ana klasör ile src ve assets ile ilgili alt dizinler) ile Readme dosyasını açmak. İşi biraz kolaylaştırmak adına easy_setup.sh isimli bash script dosyasını kullanmaya karar verdim. Şimdilik iş görüyor.
Buradaki öğretileri çalışmak isteyenlerin en önemli destekçileri klasörlerdeki README.md dokümanları ve kodlardaki yorum satırlarıdır. Örneklerin amacı README giriş kısımlarında kısaca ifade edilmektedir (Samimi bir dil kullanılmaya özen gösterdim) Çalışırken bu kılavuzdan yararlanarak örneği/örnekleri en başından itibaren kendi sisteminizde yapmaya çalışmak çok daha yararlı olur. İster Windows ister Linux ister MacOS olsun, örneğin oluşturulması için gerekli ortamı kurgularken karşılaşacağınız sorunları çözmek bile size önemli bir tecrübe kazandıracaktır. Bazı örneklerdeki eksik kısımları tamamlamaya çalışmak da aynı şekilde.
Bazen öğrenmeye çalıştığımız konularda kullanacağımı dummy servislere ihtiyacımız oluyor. Kendi verilerimizi kullanarak bu servisleri oluşturmak zahmetli geliyorsa eğlenceli birkaç API adresi kullandığımı söyleyebilirim. (Yenilerini buldukça buraya ekleyeyim)
- Rick and Morty API
- Star Wars API
- Mockaroo (Aslında API hizmeti değil de farklı formatlarda mock veri setleri üretmeyi kolaylaştıran bir adres)
## Çalışma Tekniğim
Ahch-To üzerindeki Skynet çalışmalarımda pomodoro tekniğini kullanıyorum. Buna göre genelde 22:00 sularında masa başına geçiyorum ve 4x25 dakikalık çalışma periyotları uyguluyorum. Her pomodoro arasında standart olarak 5 dakikalık dinlenme molası veriyorum. Zamanlayıcı için tomato-timer sitesinden yararlanıyorum.