I never lose. I either win or learn.

Photo by Ashim D’Silva on Unsplash

Visual Studio üzerinde MVC pattern seçilerek bir proje oluşturduğumuzda default ExceptionHandler middleware eklenmektedir. Yine envirenment a göre exceptionhandle edilir. Örneğin development ortamında developer friendly olarak expection detayı gösterilirken, production ortamında ise yakalanmamış bir hata meydana geldiğinde default Home/Error sayfasına yönlendirme işlemi yapılmaktadır. Bununla birlikte bir id parametresi alan bir action’ımız olsun ve action db den id ile veriyi çeksin. Id değeri ile sorgu sonucu db den bir değer gelmezse NotFound başarılı olmayan bir statuscode döndüğümüzü düşünelim. Yine mevcut olmayan bir sayfaya istek gönderilmeye çalışıldığını düşünelim(NotFound). Bu durumda bir exception fırlatılmadığı için middleware…


Not: Buradaki bilgiler takip ettiğim kurs ve kaynaklardan kişisel olarak aldığım notların paylaşımıdır. Ayrıca direkt olarak çeviri içeren kısımlar da bulunabilir. Kaynakları en altta paylaşacağım. Kısaltmalar:

GEC → Global Execution Context, FEC → Function Execution Context

Execution Context

Script ilk çalıştığında JS Engine bir tane Global Execution Context oluşturur. Bu GEC Call Stack de barındırılır. GEC oluşturulurken yapılan işlemler şunlardır:

  • Global object oluşturulur. (window)
  • this object oluşturulur.
  • Değişkenler ve fonksiyon referanslarının tutulduğu heap memory kısmı ayarlanır.
  • Değişkenler undefined olarak global context içerisinde tutulur.
Örnek Kod 1

Bu yazıyı neden yazmaya başladım. İlk olarak bunun bir cevabını bulmam lazım. Aslında nedenim sadece bir hissiyatımı paylaşabilmek. Açık bir şekilde anlatabileceğim konusunda pek emin değilim.

Neyse aklıma sahurda -ayıptır yazması :)- yediğim domatesin tadı takıldı. Aslında aklıma takılan çocukken yediğim domateslerin tadı. Neredee o eski domatesler. Hepi topu bundan 15 - 20 yıl kadar önce çocukluğumda domates tarlasına dalıp belki de bir kasa dolusu domatesi sıkılmadan yiyordum. O domatesi dalından, mis kokusuyla, kopartıp ikiye böldüğümde içerisindeki kırçıllığı, o çakırlığı hala aklımdadır. O tadı artık bulmak maalesef çok zor, belki de imkansız. …


İlk olarak Controller sınıflarının özelliklerinden bahsetmek gerekirse HTTP isteklerine cevap vermeyi sağlayan, kullanıcıya bir etkileşim ekranı -Action- sunmaya aracılık yapan sınıflardır.

Photo by Jan Huber on Unsplash

Controller sınıflarını tanımlamanın bir kaç yolu vardır:

1- ControllerBase Sınıfından katılmış bir class ile tanımlanabilir.

public class UserController : ControllerBase{}

2- Controller Son Eki(Suffix) Alacak Şekilde İsimlendirilmiş bir class tanımlamak


public class UserController {}

3- Tanımlanan bir class’ı [Controller] attribute ile işaretlemek.

[Controller]
public class User{}

Not: Burada aynı mantıkla bir controller’ın eğer controller özelliklerine erişilmesini istemiyorsak [NonController] attribute ile işaretleriz. Böylece o controller’a HTTP istekleri ile erişemeyiz.
Bu durumu geçici olarak kapatmak istediğimiz bir controller için kullanabiliriz.

4…


Teknoloji çok hızlı değişmekte. Daha ben yeni bir konuyu öğrenemeden neredeyse o artık eskide kalmış oluyor neyse.

Bu yazıda da yeni öğrenmeye çalıştığım blazor ile ilgili daha bitmemiş bir demo uygulama geliştirirken yaşadıklarımı kısaca anlatmaya çalışacağım. Böylece yaşadığım zorluklara belki bir geri dönüş alırım ya da ihtiyacı olan birilerine belki yardımı dokunur.

O zaman ilk olarak nasıl başladım: Sürekli takip etmeye çalıştığım Burak Selim Şenyurt ve Bora Kaşmer’ in paylaşmış olduğu kaynak ve videoları inceledim(Buradan da kendilerine saygılarımı sunuyorum 😊). Daha sonra Microsoft’un kendi kaynakları ve bir kaç kaynak daha buldum. Onları en son kaynak olarak aşağıda belirteceğim.

Blazor’da hedef…


Bu yazıda yeni araştırmaya başladığım pgBadger aracını anlatmaya çalışacağım. Ön gereksinimler, pgBadger nedir-nasıl kullanılır kısmı, son olarak da log analiz çıktısının ekran görüntüleri üzerinden kısaca açıklamaya çalışacağım.

Ön Gereksinimler

TL;DR; Checkpoint, transactionların belirli aralıklarla diske yazılması işlemidir. WAL başarılı transaction loglarının tutulduğu ve veri bütünlüğünün sağlanmasına yarayan dosyalardır. Vacuum PostgreSQL’de garbage collection işlemine olanak sağlayan yapıdır.

İlk olarak PostgreSQL’de transactionlar nasıl gerçekleşiyor anlatmaya çalışacağım. PostgreSQL’e RAM’de bir alan ayrılır ve bu alan üzerinde çalışır. Kayıtlarda yapılan işlemler bu RAM üzerinde yapılır.

Sorguların çalışması (execution) için kullanılan hafıza birimi ise work_mem olarak adlandırılır ve 4 mb boyutundadır. Basit sorgularımız bu alan…


Web projelerimizin hemen hepsinde bir login mekanizması kullanmaktayız. Ayrıca şifremi unuttum kısmı gibi ya da iletişim formu gibi birçok noktadan web sitemizden kullanıcıdan aldığımız bilgileri sunucuya post ediyoruz. Post etmeden önce belirli işlemlerden ve kontrollerden sonra veriyi alıyor, gerekli işlemleri yapıyor(mesela iletişimden gelen form alanlarını veritabanına kaydettiğimizi varsayalım) ya da bilgileri kontrol edip kullanıcın geçerli bir kullanıcı olduğuna karar verip login olmasını sağlıyoruz.

Buraya kadar normal bir süreç işlemektedir. Ancak iyi niyetli olmayan durumlarla karşılaşmamız normal. Bunlardan birisi ise bruteforce(kaba kuvvet) saldırılarıdır. Tüm olasılıklar denenerek sisteme dahil olma hedeflenir. Saldırganın işlemci gücü yüksek ya da bazı önlemler aldığını varsayalım (bir…


Bu yazıda sitemap nedir, sitemap ne için kullanılır ve nasıl kullanılır gibi soruları cevaplamaya çalışacağız.

Sitemap web siteleri için site haritasının belirlenmiş protokollere göre düzenlenmesini içeren kural bütünüdür. Sitemap sayesinde bir arama motorunun sitenizde hangi sayfaları ne öncelikle ve ne sıklıkla taranması gerektiğini belirtebilirsiniz. Bunun sonucunda da arama motorları bu sayfaların indexlenme işlemini yapar.

Sitemap dosyaları XML formatında ve UTF-8 olarak kodlanır. Web uygulamanıza sitemap yapısını dahil etmeniz için ilk olarak yapmamız gereken sitemap_index.xml dosyasının oluşturulmasıdır.

Burada önemli olarak sitemap dosyaları insanlar tarafından okunmayacaktır. Yani bir view render etmemize gerek yok. Bu dosyaları yalnızca arama motorları için oluşturuyoruz.

Sitemap dosyalarını…

Hüseyin Şimşek

#SoftwareDeveloper

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