Bu flood’da komut satırından JSON, YAML, XML ve HTML formatındaki metinleri işlememize yardımcı olan jq, yq, xq ve pup isimli araçları tanıtacağım.

Son 15 yılda servis tabanlı mimari ve sonrasında bulut devriminin (X as a Service) gerçekleşmesi ile birlikte sistemler arası entegrasyon ihtiyacı arttı. Entegrasyonların maliyet-etkin şekilde oluşturulması ve bakımının yapılması için de otomasyon bir zorunluluk haline geldi.

Otomasyon ile birlikte tahtını geçici olarak görsel kullanıcı arayüzüne bırakan komut satırı da tahtına tekrar kavuşmuş oldu. Bu flood’da JSON, YAML, XML ve HTML formatındaki akışları işlememize yardım eden bazı komut satırı araçlarını inceleyeceğiz.

Öncelikle inceleyeceğimiz diğer araçlara da ilham kaynağı olan…


Bu flood’da Base64 Encoding tekniğinin ne olduğunu ve nerelerde kullanıldığını anlatacağım.

Base64 Encoding binary verileri metne dönüştürerek saklamaya veya iletmeye yarayan tekniklerden en yaygın olarak kullanılanıdır. Bu teknik ile temel olarak 8 bitlik baytlardan oluşan binary veri 6 bitlik (2^6 = 64) parçalara bölünür.

6 bit ile ifade edilen 64 farklı sayı, ASCII karakter kümesinde Printable Character olarak ifade edilen ve aşağıda gösterilen 64 farklı karakterle eşleştirilmiştir. Eldeki 6 bitlik verinin bu tablo ile eşleştirilmesi ile Base64 Encoding yapılmış olur.

Aşağıdaki örnekte 6 ile tam bölünebilen 24 bitlik (3 baytlık) ASD metni Base64 Encoding ile kodlanmıştır.


Bu flood’da SSH Tunnelling tekniğinin nasıl çalıştığını ve hangi amaçlarla kullanıldığını anlatacağım.

SSH Tunnelling şifrelenmiş SSH bağlantısı üzerinden uzak sunucuda çalışan uygulamaların trafiğini iki yönlü olarak güvenli bir biçimde taşımak için oluşturulmuş bir tekniktir.

SSH Tunnelling üç tipte karşımıza çıkar. İlk ve en çok kullanılan tip Local Port Forwarding olarak bilinen yöntemdir. Burada lokal bilgisayarda açtığımız bir TCP portuna yaptığımız işlemler SSH yaptığımız sunucu üzerinden hedef sunucunun ilgili portuna iletilir.

Bu yöntemin akla gelen ilk kullanım alanı şirket veya ISP’lerce bazı sunucu veya servislere uygulanan kısıtlamaları aşmaktır. Şirketimizin twitter․com'a erişimi kısıtladığını varsayalım. DigitalOcean, vb bir VPS sağlayıcıdaki sunucumuza Local Port…


Bu flood’da Let's Encrypt'in ne olduğundan ve nasıl çalıştığından bahsedeceğim.

Let's Encrypt web sunucuların HTTP yerine HTTPS kullanılmasını yaygınlaştırmak üzere SSL/TLS sertifikaların ücretsiz olarak üretilmesi ve dağıtılması amacıyla kurulmuştur. Sektörün önde gelen şirketleri bu servise sponsor olarak devamlılığını sağlamaktadır.

Let's Encrypt öncesinde SSL/TLS sertifikası almanın tek yolu Verisign, GlobalSign, Thawte gibi firmalara birkaç yılda bir 50 dolar civarında bir ücret ödemekti. Bu şirketler Certificate Authority - CA kimliği ile kişi ve kurumlar için hala sertifika üretmektedir.

Önceki flood’ların birinde web sunucularında kullanılabilecek SSL/TLS sertifika tiplerini belirtmiştik https://medium.com/@gokhansengun/3427bcd4a576

Geleneksel CA'ler yukarıdaki yazıda sıralanan üç yöntemle de sertifika üretebilirler. Let's Encrypt ise…


Bu flood’da HTTP Authentication (HTTP Doğrulama) metodlarından Basic ve Digest Authentication'ı anlatacağım.

HTTP protokolü, web sayfalarına veya API'lara erişimin sınırlandırılmak istendiği senaryolar için kullanıcının kimliğinin doğrulamasına yardımcı olan ve HTTP Authentication adı verilen mekanizmayı sunmaktadır.

Web sunucu, istemciden erişimi kısıtlanmış bir kaynağa istek geldiğinde Authorization: HTTP Header'ını kontrol eder. Gelen istekte Authorization: başlığı, yani istemciyi doğrulamak için gerekli bilgiler yoksa veya geçersizse istemciye cevap olarak 401 Unauthorized statü kodu ile birlikte WWW-Authenticate: başlığı ile desteklediği doğrulama tipini de gönderir. Bu noktadan sonra istemci ya kullanıcıya sorarak ya da elindeki bilgilerle doğrulama bilgisini yenileyerek sunucuya yaptığı isteği tekrarlar.

HTTP'de ilgili başlığın…


Bu flood’da Mutual Authentication (Karşılıklı Doğrulama) kavramının ne olduğunu ve nerelerde kullanıldığını anlatacağım.

Önceki flood’ların birinde bir web sitesine (örneğin bir bankanın online işlem merkezine) HTTPS ile bağlanırken tarayıcının iletişimin başında sunucudan dijital sertifikasını istediğini, bu sertifikanın kendisinin daha önceden güvenmekte olduğu bir CA - Certificate Authority tarafından doğrudan ya da dolaylı olarak imzalanıp imzalanmadığını kontrol ettiğini ve bu kontrol başarısız olduğunda bağlantının güvensiz olduğuna dikkat çektiğini belirtmiştik. İstemci bu işlemler ile aslında sunucunun kimliğini doğrulamaktadır.

Sunucu (örneğimizde banka web sunucusu) ise istemcinin kimliğini dijital sertifika yerine kullanıcı adı ve parola yanında SMS vb araçlarla doğrulamaktadır. …


Bu flood’da Template Engine'lerin ne işe yaradığını ve nerelerde kullanıldığını anlatacağım.

Template Engine adından da anlaşılacağı üzere bir template'i kendisine geçilen veriler ile harmanlayarak bir sonuç üretir. Aşağıdaki örnekte bir şablon, Python'daki en popüler Template Engine olan Jinja2 ile iki farklı veri seti kullanılarak render edilmiştir.

Template Engine'lerin ilk ve belki de en yoğun kullanım alanı dinamik web sayfaları oluşturmaktır. Web'in ilk günlerinde dinamik web sayfaları, kullanılan yazılım dilinin sunduğu metin işleme olanakları ile aşağıdaki örneğe benzer biçimde oluşturuluyordu.


Bu flood’da Nginx'in Proxy Cache özelliği üzerinden bir önceki flood'da bahsedilen CDN'in nasıl çalıştığını anlatacağım.

CDN'in orijin sunucu ile istemci arasına girerek bütün istemciler için aynı olan (CSS, JS, imaj) gibi kaynakları cache'leyerek istemcilere ilettiğini söylemiştik. CDN burada ilk istek için bir Proxy sunucu, sonraki istekler için ise cache sunucu gibi davranmaktadır.

Bütün trafiğin CDN üzerinden geçtiği senaryoda (CloudFlare, Fastly) ise CDN, cache'lenemeyecek (API, vb) kaynaklar için Reverse Proxy görevi üstlenerek istemciden gelen isteği direkt olarak orijin sunucuya geçirip gelen cevabı ise tekrar istemciye iletir.

Önceki yazıların birinde Reverse Proxy ve Forward Proxy kavramlarının ne anlama geldiğini incelemiştik. Bu yazı…


Bu flood’da CDN (Content Delivery Network)’ün ne olduğunu ve neden kullanıldığını anlatacağım.

CDN, bir web sitesinin içeriğini en düşük ağ ve işlem gecikmesi ile yani en hızlı bir şekilde kullanıcılara ulaştırmak üzere coğrafi olarak farklı bölgelerde konumlandırılmış sunucu kümesine verilen isimdir.

Birçok e-ticaret ve haber sitesi sayfa açılma süresini düşük tutabilmek için CDN kullanmaktadır. CDN üzerinden kullanıcıdan kullanıcıya genelde pek değişmeyen HTML, JS, CSS, imaj, video ve font dosyaları sunulur. CDN bu tip kaynakları origin olarak adlandırdığı asıl sunucudan (örn: milliyet․com․tr) çekerek belirli bir süre için cache’ler. Bu noktadan sonra CDN’e ilgili kaynaklar için kullanıcıların yaptığı istekler cache’lenen bu kopyadan…


Bu flood’da Unix benzeri sistemlerde metin işlemede yoğun olarak kullanılan awk, sed ve diğer bazı programları tanıtacağım.

Unix benzeri (Linux, macOS) işletim sistemlerinin power user olarak nitelenen kullanıcılar tarafından sıklıkla tercih edilme sebeplerinden birisi de şüphesiz metin işleme dahil birçok işlemin komut satırından hızlıca ve kolaylıkla yapılabilmesidir.

Bahsedeceğimiz ilk araç bir program olmaktan çok başlı başına bir programlama dili olan awk'dır. Adını tasarımcılarının Alfred Aho, Peter Weinberger and Brian Kernighan baş harflerinden almıştır. Benim günlük olarak en fazla kullanıdığım metin işleme aracı da awk'dır.

Şimdi örneklerle awk'nın yeteneklerini anlamaya çalışalım. Aşağıdaki ekran çıktısında awk, ; (noktalı virgül) ile ayrılmış bir…

Gökhan Şengün

Full stack dad of two and just curious about things. Stories are from my twitter floods @gokhansengun. Main blog is www.gokhansengun.com

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