Merhaba arkadaşlar sizlere bugün iş hayatında günlük olarak kullandığımız bir kaç basit git komutundan bahsedeceğim.

Aşağıdaki komutları git bash, cmd gibi ekranlardan yazabileceğiniz gibi Sourcetree, Github Desktop, Visual Studio Extension gibi toollar aracılığı ile arayüzden seçerekte uygulayabilirsiniz.

Ben genelde hibrit olarak bu toolları kullanıyorum. Örneğin; Git Bash ile fetch, pull gibi komutları çalıştırıyorum. Daha sonra Visual Studio içerindeki Team Explorer arayüzü ile conflict varsa onları çözüyorum, yeni değişikliklerimi pushluyorum. Github web arayüzü üzerinden ilgili pull request imi açıyorum.

Image for post
Image for post
michael-held-w6xU735k6LU-unsplash

-git clone

Bir repositoryi bilgisayarınıza çekmek için kullanılır. Zip olarak indirmekten farkı bu repositorye artık bağlı durumda olursunuz yeni değişiklikleri çekebilir ya da siz dosyaların üzerinde çalışarak, geliştirmeler yapabilirsiniz. …


Merhaba arkadaşlar, bugün sizlere .Net Core (net 5.0) bir projede memory cache kullanarak verimizi nasıl cacheleriz bundan bahsedeceğim. Örneğe geçmeden önce Cache yapısına neden ihtiyaç duyuyoruz ondan bahsetmek gerekir.

Image for post
Image for post
ttmind

Verimiz belirli periyotlarda güncelleniyorsa biz bu veriyi her seferinde yeniden çekme maliyetinden kurtulmak adına cache sistemlerini kullanabiliriz.

Daha basit bir örnekle anlatmak gerekirse;

Futbol takımlarının oyuncu listesi transfer döneminden, diğer transfer dönemine kadar geçerlidir. ( Bazı istisnalar olabiliyor ama oralara girmeyelim şimdi 😀)

Cache kullanılmayan bir yapıda;

  • Her oyuncu listesine bakmak istediğimizde, futbol takımından oyuncu listesini isteyerek, onlardan gelecek cevabı bekler ve cevap gelince listeye bakabiliriz.

Cache kullanılan bir yapıda;

  • Kadro kayıt süreleri bittiğinde futbol takımından oyuncu listesini bir kere isteriz ve her oyuncu listesine bakmak istediğimizde bunu kullanabiliriz. …


Merhaba arkadaşlar, bugün Quartz kütüphanesinden bahsederek bir örnek yapacağız.

Quartz nedir?

Quartz, .Net ortamında belirli zamanlarda ve periyotlarda belirlediğiniz aksiyonların alınmasını sağlayan açık-kaynak bir kütüphanedir.

Kendi tanımlamalarıyla “Open-source job scheduling system for .NET” .

Image for post
Image for post
lukas-blazek-UAvYasdkzq8-unsplash

Neden İhtiyaç Duyarız?

Yazdığım yazılarda, hangi senaryolarda yazı konusunu kullanabiliriz gibi konulardan bahsetmeyi seviyorum. Quartz için de kullanım amacına değinmek istiyorum.

Örneğin dakika da bir ekrana saati yazan bir uygulamamız olsun. Burada her dakika bu işlemi manuel yönetmek yerine bunu bir joba bağlayarak ve Quartz aracılığıyla da çalışma sıklığını belirterek işin içinden kolayca çıkabiliriz. Yani belirli aralıklarda sürekli olarak yapacağımız işlemler için kullanabiliriz.

Bu arada bu iş için tabii ki Quartz kullanmak şart değildir. Yeni bir uygulama yazarak Windows task scheduler dan taskımızı ayarlayarak da bu işlemi yapabiliriz. …


Asp .Net Core Test Örneği

Merhaba arkadaşlar, bugün sizlerle beraber test konusundan bahsederek ufak bir test örneği hazırlayacağız.

Asp .Net Core Test

Senaryomuz şu şekilde olacak;

Api endpointinden dönen sonucu test edeceğimiz bir integration test ve endpointin kullandığı servisin içerisinde ki kod bloğunu test edeceğimiz bir unit test olacak.

Farklı bir çok kütüphane bulunsa da biz bu test uygulamasında xUnit ve Moq kütüphanelerinden yararlanacağız.

Öncelikle neden test yazmalıyız konusuna biraz değinmek istiyorum. İlk başta en basit haliyle hafta sonumuzu rahat geçirmek ya da , gece rahat uyumak istiyorsak acaba hangi kod nereden patlayacak diye düşünmek istemiyorsak test yazmalıyız.

Production ortamında stabil çalışan koda müdahaleden korkmamak için test yazmalı, hatta testlerimizi pipelinımıza bağlayarak test coverage kontrolleri yapmalıyız. (Hatta TDD yaklaşımını kullanırsanız çok daha rahat uyuyabilirsiniz. …


Bu yazımda covid-19 sürecinde çalışırken kullandığım programlardan bahsederek, evden çalışmanın belirli avantaj/dezavantajlarına değineceğim.

Image for post
Image for post
pakata-goh-remote-work-unsplash

Öncelikle kullandığım programlardan bahsedeyim.

  • İletişim için Slack uygulamasından faydalandım. Ufak iş aramaları içinde bu uygulamayı kullandım. Kullanmıyorsanız , kesinlikle tavsiye ederim.
  • Görüntülü görüşmeler ve toplantılar için Google Hangouts/Meet uygulamalarından faydalandık. Ücretsiz bir şekilde Google hesabınızla giriş yapabildiğiniz bu uygulamada bir sorun yaşamadan görüntülü görüşmeleri, toplantıları, ekran paylaşımlarını yapabilirsiniz.
  • Bilgisayara aldığım notlar ve ufak kod bloklarını değiştireceğim zaman Visual Studio Code programından faydalandım. (Cross Platform not uygulaması arayanlar için Evernote öneririm.)
  • Daha kompleks yapılardaki geliştirmeleri genellikle Visual Studio 2019 üzerinden yapsamda bazen de Visual Studio Code üzerinde geliştirmeleri yaptım. …

Merhaba arkadaşlar, yazımıza başlamadan önce geçirdiğimiz bu zor günlerde herkesin sağıklı ve mutlu kalmasını temenni ederiz. Sosyopix olarak bir süredir uygulamalarımızı .Net Core Framework’üne geçirmeye çalışıyoruz. Bu süreçteki deneyimlerimizi, yaptıklarımızı, adımlarımızı sizinle paylaşmak istedik.

Öncelikle sürecimiz hala devam ediyor fakat iç uygulamalarımızdan bazılarının geçişini tamamladık ve şu an test süreçleri devam etmektedir. Biz de edindiğimiz bilgileri, süreçleri paylaşmak ve planlamalarınıza yardımcı olmak istedik. Peki bu süreçte neler yapılmalı? Nasıl başlanmalı? Bu sorulara kendi açımızdan cevap vermeye çalışalım.

1- İlk olarak geçiş yapmayı düşündüğünüz projeyi analiz edin.

Evet, geçiş sürecinin en önemli maddelerinden biri hali hazırda olan projenizi iyi analiz etmenizdir. Örneğin; Bir Mvc projeyi .Net Core yapısına geçirmek istiyorsanız routelar, bundler, filterlar, custom attributeler, global_asax altındaki eventler gibi yapıları iyi analiz etmelisiniz. …


Merhaba arkadaşlar, bugün sizlere .net core Dependency Injection ve Custom Middleware yapısından bahsederek basit birer örnek yapacağız.

Dependency Injectionu bağımlılıkları azaltarak daha modüler ve geliştirilebilir kodlar yazmak için kullanırız. Asp .Net Core Dependency Injection yapısını kendi içerisinde barındırır. (Dışarıdan kütüphanelerde kullanılabilir; Autofac, SimpleInjection gibi).

Kendi içerisinde ki Dependency Injection için temelde üç farklı instance üretme metodu vardır. Kısaca bunlardan bahsederek hem constructor injection, hemde manuel injection yöntemiyle örnek yapacağız.

Image for post
Image for post
Injections-stackify

AddSingleton: Uygulama lifecycle boyunca tek bir instance olarak çalışır.

AddScoped: Request içerisinde bir instance oluşur.

AddTransient: Her çağrıldığında yeni bir instance oluşturur.

Startup.cs ,ConfigureServices metodu içerisinde servislerimizi register edelim.

Servislerimizi register ettikten sonra farklı kullanım yöntemleri vardır. Ben manuel injection ve constructor injection yöntemini göstermek istiyorum. …


Merhaba arkadaşlar, bugün sizlerle beraber .Net Core bir uygulamada FluentValidation kullanımından bahsederek ufak örneklerle pekiştirmeye çalışacağız. Öncelikle FluentValidation nedir ve neden kullanırız kısaca bundan bahsetmek istiyorum.

Öncelikle FluentValidation’ın asıl amacı datanın doğru olduğunu (model yapısına göre valid mi?) Jquery Validation gibi client-side da kontrol etmek yerine istenirse hem server-side hem client-side (Bunun için yine Jquery validaitondan yardım alır) kontrol edilmesini sağlamaktır. Yani kısaca FluentValidation bir data validaiton kütüphanesidir. Hem client-side validaiton hem backend validaitonın beraber kullanımı veri doğruluğunu garanti etmek adına daha güvenli bir yaklaşımdır.

FluentValidation bu amacıyla beraber, validation kurallarını daha esnek, daha kolay, anlaşılır yazmak ve komplex kuralları belirtmek konusunda diğer alternatif validation kütüphanelerinin önündedir. Bu arada FluentValidation, data annocationslarla beraberde kullanılabilir. Fluent validaiton open-source bir projedir. Github reposunu buradan inceleyebilirsiniz. …


Merhaba arkadaşlar, bugün sizlerle beraber .net standart kütüphanemizi, nuget package haline getireceğiz. Ben firebase push notification gönderen bir .net standart kütüphanesi hazırladım, bunu nuget paket halinde kullanıma sunacağız.

Nuget paketi oluşturmanın birden fazla yolu vardır. En bilinen bir kaç yoldan kısaca bahsederek, nuget cli ve nuspec dosyası ile paketimizi kullanıma açacağız.

1-Pipeline kullanarak package oluşturmak

En kolay ve kullanışlı yöntemlerden biridir. Genel olarak bir CI/CD pipeline bağlanarak, paketinizin repositorysinde belirli bir bracnhe yaptığınız commit ile bir artifact üreterek ilgili nuget feede paket versiyonu çıkılır.

2-Visual studio üzerinden package oluşturmak

.net standart class library, .net core class library gibi seçeneklerde kullanılabilen yöntem ile projeye sağ tıklayarak pack seçeneği altındaki alanlar doldurulur. Proje derlendiğinde ise ortaya bir .nupkg uzantılı dosya çıkar. Bu dosya cli aracılığı ile yada nuget.org …


Merhaba arkadaşlar, bu postta yazılım kültürü, takım standartları gibi kavramlar hakkındaki düşüncelerimi sizlere aktarmaya çalışacağım. Yazacaklarım hem kendi deneyimlerim, hem okuduklarım, hemde düşüncelerimin karışımı şeklinde olacak.

Öncelikle yazılım kültürü, çalışılan kurumun kültürü ile paralel ilerleyen bir takım prensiplerin bütünüdür. Bu konuda kafa yoran insanlar tarafından her gün geliştirilmeye, farklı bakış açıları getirilmeye çalışılmaktadır.

Sizin kültür ve standartlarınız nasıl iş yaptığınızı , hem kendi personelinize hemde müşterilerinize anlatmanın en iyi yoludur.

Bu kültür ve standartlar , işleri efektif ve sürdürülebilir şekilde, hedefler doğrultusunda çözmeyi amaçlar.

Çalıştığımız yerlerde, bizlerde bulunduğumuz kuruma, takıma göre standartları geliştirebilir, bunları uygulamaya çalışabiliriz. Tabii ki bu tarz geçişler zorlu olabilir fakat iyi niyet ve kararlılıkla engeller aşılarak hem kurumun hem ekibin başka bir seviyeye geçmesi sağlanabilir. …

About

Enes Aysan

Software Developer at Sosyopix

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store