Archive of posts with category 'yazılım'
Yazılım dünyasında otomasyon denince akla Jenkins pipeline, GitLab’ın CI/CD (Continuous Integration/Continuous Deployment- Sürekli Entegrasyon/Sürekli Teslimat) ve arada kaybolan bash script'lerinin garip labirentleri gelirdi.
Kod kalitesi, yazılım geliştirme süreçlerinde başarıya götüren önemli etkenlerden biridir. Bu blog yazımızda, kod kalitesinin neden bu kadar kritik olduğunu ve projelerinizin başarısını artırmak için hangi kod kalite metriklerini kullanmanız gerektiğini tüm detaylarıyla ele alıyoruz.
Detekt kotlin tabanlı projelerde statik kod analizini gerçekleştiren araçlardan biridir. Kotlin için özel olarak yapılandırılmış olması, bu aracı özellikle Kotlin projelerinde vazgeçilmez kılar.Bu blog yazımızda Detek ve kullanım alanlarını inceliyor olacağız.
Bu blog yazısında, uygulama performansı ve sağlığının izlenmesi için Spring Boot ve Micrometer kullanılarak oluşturulabilecek metrik toplama stratejileri, özelleştirilmiş metrik tanımlamaları, izleme araçlarıyla entegrasyon süreçleri, eşik değer ve uyarı yönetimi ile bu alandaki en iyi uygulamalar detaylı olarak ele alınacaktır.
Kafka Streams, Kafka platformunun üzerine inşa edilmiş bir akış işleme kütüphanesi olup, günümüzde birçok sistemin ihtiyaç duyduğu gerçek zamanlı veri işleme ve analiz gereksinimlerini karşılamak amacıyla geliştirilmiştir.
Bu blog yazısında, OpenAPI ve Spring Boot kullanarak API dokümantasyonunun oluşturulması, bu dokümanın bağımsız olarak dışa aktarılması, sürüm kontrolü, doküman güvenliğinin sağlanması ve en iyi uygulama pratikleri ele alınacaktır.
Bu yazıda kontrat testin ne olduğuna, neden ihtiyaç duyulduğuna ve genel yapısına değinilmiştir. Kafka'da üretici ve tüketici rolündeki iki mikroservis için bir senaryo üzerinden Kafka kontrat testlerini Spring Cloud Contract ile nasıl gerçekleştirebileceğimiz kod örnekleriyle anlatılmıştır.
Bu blog yazısında, Liquibase'in ne olduğundan, ne için kullanıldığından, veri tabanı şema değişikliklerini yönetmek için Liquibase'in Spring Boot uygulamasında nasıl kullanılabileceğinden, Liquibase komutlarının Gradle ile nasıl çalıştırılabileceğinden ve Liquibase kullanırken dikkat edilmesi gereken en iyi uygulamalardan bahsedilecektir.
Birim Testleri Kılavuzu, yazılım geliştirme süreçlerinde kaliteli ve güvenilir kod üretiminin temel taşlarından biri olan birim testlerini ele alır. Bu yazıda, birim testlerinin ne olduğunu, neden önemli olduklarını ve nasıl doğru bir şekilde uygulanması gerektiğini adım adım açıklıyoruz. Ayrıca, çeşitli test senaryoları ve örneklerle, birim...
Birim testleri, yazılım geliştirme süreçlerinde kaliteli ve güvenilir kod üretiminin temel taşlarından biridir; bu yazıda, birim testlerinin ne olduğu, neden bu kadar önemli olduğu ve nasıl etkili bir şekilde uygulanacağı, test yapılandırma yöntemleri, iyi pratikler ve sektördeki birim test alışkanlıkları ele alınmaktadır.
Çöp Toplama (Garbage Collection), program çalışırken kullanılmayan bloklarını tespit edip serbest bırakarak heap (dinamik bellek) yönetimini kolaylaştıran bir mekanizmadır. Çöp toplama bazı dillerde manuel olarak yönetilirken bazılarında otomatiktir. Örneğin C++' da manuel olarak yönetilirken, Java'da böyle bir maliyet söz konusu değildir. Bu çalışmada çöp toplama...
Temiz kod geliştirme süreçlerini içeren blog serisinin ikinci kısmı.
Spring Batch, büyük veri setleri üzerinde toplu işlemleri kolayca yönetmek için kullanılan Java tabanlı bir yazılım çerçevesidir.
Bu yazımızda, Spring Batch'in mimarisi, çalışma prensibi ve kullanım alanlarını örnek kodlarıyla birlikte inceleyeceğiz.
Bu blog serisinde BPMN 2.0 standartını ve bu standartı kullanan bazı teknolojileri ele alacağız.
Bu yazımızda sizi Artırılmış Gerçeklik (AR), Sanal Gerçeklik (VR) ve Karma Gerçeklik (MR) dünyasına etkileyici bir yolculuğa çıkarıyoruz. Bu son teknoloji çözümler, dijital ve fiziksel dünyalarla etkileşimde bulunma şeklimizi kökten değiştiriyor. Artırılmış Gerçeklik, çevremize dijital bilgileri sorunsuz bir şekilde entegre ederek gerçekliğimizi zenginleştirirken, Sanal Gerçeklik...
Blog serisinin 3. kısmında mikroservis mimarisinde eş zamansız iletişimin detaylı olarak örneklerle inceleyeceğiz.
Temel Kavramları ile ArchUnit nedir?
CockroachDB modern uygulamaların ihtiyaçlarını karşılamak için tasarlanmış, yüksek erişilebilirlik ve ölçeklenebilirlik sağlayan, dağıtık mimarili bir veri tabanıdır. Bu yazımızda, CockroachDB’nin yapısı, özellikleri ve PostgreSQL’den CockroachDB’ye nasıl geçiş yapılabileceği gibi konuları ele alacağız.
Bu blog serisinde, Robert C. Martin'in yazmış olduğu Clean Code kitabını okuyarak bölüm çıktıları paylaşılacaktır.
Bu yazıda Java 21 ile gelen yenilikleri inceleyeceğiz. Virtual threadlerin artılarından, eksilerinden bahsedip Spring Boot tabanlı uygulamalarda kullanımına değineceğiz.
Blog serisinin 2. kısmında mikroservis mimarisinde eş zamanlı iletişimin detaylı olarak örneklerle inceleyeceğiz.
Bu blog serisinde, mikroservis mimarisinde iletişimin önemini ele alıyoruz. Eş zamanlı ve eş zamansız iletişim türlerini karşılaştırarak, hangi senaryolarda hangisinin daha uygun olduğunu tartışıyoruz. Ayrıca, gerçek hayatta karşılaşılan problemler ve bu problemlere uygulanabilecek çözümler de yer alıyor.
Kafka, öğrenmesi ve ustalaşması çok zor olan bir mesaj kuyruğudur. Fakat spring, bize kafkanın karmaşıklığı ile uğraşmak için güzel yöntemler vermekte. Serimizin ilk yazısında, spring ile kafka temel ayarlarını yapmayı, ve mesaj alıp vermeyi göreceğiz.
Balsamiq, kullanıcı arayüzü tasarlamak amacıyla wireframe (mockup veya düşük kaliteli prototipler olarak da bilinir) oluşturmaya yönelik bir tasarım aracıdır.
Çevik projeler için kurumsal değişim ve organizasyon kültüründe ne gibi değişiklikliğe gidilmelidir?
Yapay zeka, yazılım geliştirme süreçlerimizi yeniden şekillendiriyor ve daha verimli hale getiriyor. Bu sunumda, AI araçlarının yazılım geliştirme alanındaki etkilerini ve katkılarını derinlemesine inceleyeceğiz. Çeşitli AI araçlarından - ChatGPT'den, CoPilot'a ve Bard'a - nasıl faydalanabileceğimizi ve bu araçların hangi sorunları çözdüğünü ve hangi fırsatları yarattığını...
Graphql’in kısa tanımı şöyle: “Query language for your API”. GraphQL, sunucudan veri çekerken istemcilere tam olarak istediklerini vermeyi önceliklendiren bir sorgu dilidir. İstemciler, sunucuya bir şema üzerinden hangi alanları istediklerine göre bir sorgu oluşturur. Sunucu, bu sorguyu işler ve yalnızca istenilen verileri yanıt olarak gönderir....
gRPC ve REST API, modern uygulama geliştirme süreçlerinde yaygın olarak kullanılan
iki farklı mimari stildir. Google tarafından geliştirilen gRPC, performans ve
verimlilik odaklı bir yapı sunarken, REST API daha genel, kullanılabilirlik ve basitlik üzerine kurulmuştur.
Son zamanlarda, yazılım geliştirme sektörü yavaş ama gerçek bir dönüşümden geçmektedir. Yazılımlar
giderek her şeyin bir parçası haline gelirken yazılım geliştiriciler, artan bu taleple daha fazla otomasyon
yoluyla başa çıkmaya çalışmaktadır...
Günümüzün karmaşık ve dinamik sistemlerinde, işletmelerin hızla büyüyen altyapılarını izlemek ve yönetmek hayati öneme sahiptir. Bu noktada, Prometheus monitoring gibi güçlü bir araç devreye giriyor. Prometheus, modern bir açık kaynak tabanlı izleme ve alarm sistemi olarak, karmaşık sistemlerin performansını, kaynak kullanımını ve hataları etkin bir...
Bu çalışma kapsamında açık kaynak olmaları, kapsamları ve
ihtiyaçlara göre genişletilebilirlikleri açısından öne çıkan
web tabanlı uygulamalara güvenli tekil oturum açma (Single
Sign On / SSO) hizmetine sahip Apereo CAS ve Keycloak
teknolojileri incelenecektir...
Dünyanın giderek dijitalleştiği, her şeyin sanal ortama aktarıldığı bir dönemde yaşıyoruz. Eskiden
sadece bilgisayarlara programlar yükleyerek yapılabilen birçok işlem, artık farklı platformlar üzerinden
onlarca değişik cihaz yardımı ile kolayca yapılır hale geldi...
Son zamanlarda, yazılım geliştirme sektörü yavaş ama gerçek bir dönüşümden geçmektedir. Yazılımlar
giderek her şeyin bir parçası haline gelirken yazılım geliştiriciler, artan bu taleple daha fazla otomasyon
yoluyla başa çıkmaya çalışmaktadır...
RapidRows, PostgreSQL üzerinde sorgular çalıştırmak, scheduled job'lar gerçekleştirmek ve PostgreSQL bildirimlerini websocket'lara iletmek gibi kullanım durumlarına göre yapılandırılabilen açık kaynak kodlu tek dosya olarak çalışan bir API sunucusudur.
Jekyll Ruby dilinde geliştirilmiş oldukça popüler ve kullanımı kolay statik web sayfaları oluşturmaya yarayan bir araçtır.
Stream API, Java 8 ile eklenmiş bir yeniliktir. Stream akıntı anlamına gelir ve çalışma mantığı olarak da bir akıntı üzerine gelen verileri sırayla ya da paralel işleyen metotlar olarak düşünülebilir. Stream sayesinde loop kullanan imperative metotlar, fonksiyonel programlamaya uygun şekilde değiştirilebilmektedir.
Fonksiyonel programlama, fonksiyonlar kullanarak program tasarlama modelidir. Obje Tabanlı Programlama modeline göre güçlü ve zayıf olduğu yönler bulunur. Sektörde oldukça popüler ve aslında obje tabanlı olan Java programlama diline; Java 8 sürümüyle birlikte, fonksiyonel programlama konseptlerini uygulamamıza imkân tanıyan yenilikler eklenmiştir. Bu sayede hem obje...
Teknoloji Birlikleri Günündeki Sunumlar
Text-Blocks Javada çok satırlı Stringleri kullanmamıza yarar. Çoğu programlama dilinde olan bu özellik, java 13 sürümü ile javaya da eklenmiştir. Bir diğer yeni özellik ise satır içi çok satırlı stringleri daha okunabilir hale getirme özelliğidir.
Switch-case tanımı, if-else ile benzer bir şekilde bir variable’ın değerine göre farklı kod bloklarının çalışmasını sağlar. Java 7’ye kadar switch-case tanımlamalarında sadece integer değerde bir variable’ın koşulları kullanılabiliyorken, Java 8’de String ve Enum type’lar için de kullanılabilir hale geldi.
Local-Variable Type Inference özelliği Java 10 ile birlikte gelmiştir. JavaScript dilindeki gibi variable tanımlaması yaparken local type inference için kullanılan ve variable’ı istediğiniz tipte tanımlamanızı sağlayan bir Java anahtar kelimesidir.
Lambda Expressionları, fonksiyonel programlamayı kullanmamızı sağlar. Okunabilir ve kısa kodlar yazmamızı sağlar. Daha kolay ve kullanışlı APIlar ve kütüphaneler yazmamıza yardımcı olur. Pararel işleme için destek sunar.
Java Collections, nesneleri tutmak ve manipüle etmek için tasarlanan bir frameworktür. Veri üzerinde arama, sıralama, ekleme, değiştirme, silme gibi işlemleri gerçekleştirir. Collections, birçok interface (Set, List, Queue, Deque), sınıflar (ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet) ve algoritmalar içerir.
Java 8 ile birlikte interfacelerde default ve statik metotlar tanımlanabilir. Daha önce interfaceleri implemente eden sınıfları değiştirmeden interface’e yeni bir metot eklemek mümkün değildi, artık interfacelerde metotlar implemente edilebilir hale...
Java 8 öncesinde kadar zaman bilgisi için Date ve Time API kullanılıyordu fakat bu API içerik olarak çok fazla detaya sahipti. Java 8 ile birlikte Date ve Time API’larında radikal değişiklikler yapıldı. Bu değişikler ile geliştiricilerin sadece 6 farklı sınıfın detaylarını bilerek tarih bilgisini geliştirdikleri...
Çevik yaklaşım, Çevik Manifestosu'nun birleştirdiği değerler ve ilkeler bütünü olarak o yıl başlayan bir harekettir; bununla birlikte "kalite" ve "tasarım odaklı düşünce" gibi daha erken tarihli pek çok öncülü bulunmaktadır.
Hataları veya açıkları bulmak, gereksinimlerin sağlandığına emin olmak gibi amaçların yerine; Ekibimizin başarıya ulaşmasına nasıl katkı sağlayabileceğimizi ya da ortaya çıkabilecek hataları ilk aşamada nasıl ortadan kaldırabileceğimizi düşünmeliyiz. Amacımızın sadece kodlamak ve hataları bulup düzeltmek olmadığını; Test edilebilir kod yazmanın veya oluşturulan yazılımın başarılı bir...