Geliştiriciler için makaleler

Kodlama formatları, JSON ile çalışma ve geliştiricilere yararlı diğer konuların açıklamaları, ilgili tulzy çevrimiçi araçlarına bağlantılarla birlikte.

Kodlama

Base64: kodlama neden gerekli ve nasıl çalışır

Base64 ikili verileri ASCII metnine nasıl çevirir ve buna gerçekten ne zaman ihtiyaç duyulur.

Base32: Base64'ten farkı ve ne zaman daha kullanışlı

Büyük/küçük harf duyarsız Base32 alfabesi ve Base64'ten daha kullanışlı olduğu durumlar.

URL Encode/Decode: bağlantılarda percent-encoding

Adreslerdeki ve parametrelerdeki özel karakterlerin %XX dizilerine nasıl dönüştüğü.

HTML Entities: özel karakterleri güvenle nasıl gösterirsiniz

< > & karakterlerinin neden escape edilmesi gerektiği ve bunun bozuk işaretlemeyi nasıl önlediği.

JWT: token yapısı ve bir JWT'yi "çözmek" ne anlama gelir

Bir JWT'nin header, payload ve signature bölümleri ile çözmenin imza doğrulamayla aynı şey olmadığı.

Unicode Escape: \uXXXX dizileri ne anlama gelir

JSON ve JS dizelerindeki \u0041 gibi dizilerin nereden geldiği ve ne anlama geldiği.

ROT13 ve Sezar şifresi: basit karakter değişimi

13 harflik kaydırmanın ROT13'ü neden kendi kendine ters yapan bir işlem haline getirdiği ve hâlâ neden kullanıldığı.

Punycode: uluslararasılaştırılmış alan adları DNS'te nasıl çalışır

Latin olmayan karakterler içeren bir alan adının xn-- önekli ASCII formuna nasıl dönüştüğü.

Mors alfabesi: metin nokta ve çizgilere nasıl dönüşür

Harfleri nokta ve çizgilerle kodlama prensibi ve Mors alfabesinin günümüzde nerede kullanıldığı.

Data URI: görselleri doğrudan koda ne zaman gömmeli

Bir Data URI'nin bir dosyanın içeriğini doğrudan HTML veya CSS içine nasıl gömdüğü ve ne zaman buna değdiği.

Gzip + Base64: veriyi metin olarak iletmek için sıkıştırma

Sıkıştırılmış ikili verilerin bir metin alanına konmadan önce neden ayrıca Base64 ile kodlandığı.

XML Entities: XML belgelerinde karakter escape etme

Kendileri olmadan belgenin ayrıştırma sırasında bozulduğu beş zorunlu XML entity.

JSON

JSON Formatter: biçimlendirme, küçültme ve doğrulama

Okunabilirlik için biçimlendirme, boyut için küçültme, doğruluk için doğrulama — JSON ile üç farklı görev.

JSONPath: JSON verilerini elle ayrıştırmadan sorgulama

JSONPath'in büyük bir JSON'dan ihtiyaç duyulan değerleri elle dolaşmadan tek bir ifadeyle nasıl çektiği.

JSON Diff: yapısal karşılaştırma metin karşılaştırmasından nasıl farklı

Anahtar sırasının iki JSON belgesinin karşılaştırılmasını neden etkilememesi gerektiği.

JSON Schema: bir JSON'un yapısı nasıl tanımlanır ve doğrulanır

JSON Schema'nın verilerin beklenen bir sözleşmeye uyup uymadığını otomatik olarak kontrol etmeyi nasıl sağladığı.

JSON Flatten: iç içe geçmiş bir yapıyı düz bir listeye dönüştürme

Derinlemesine iç içe geçmiş bir JSON'un user.address.city gibi düz bir anahtar listesine nasıl dönüştüğü.

JSON Sort Keys: bir nesnenin anahtarları neden sıralanır

JSON anahtar sırası neden belirtilmemiştir, ama sıralama pratikte yine de neden faydalıdır.

JSON Repair: JSON neden bozulur ve nasıl düzeltilir

"Bozuk" JSON'un yaygın nedenleri ve otomatik onarımın neyi düzeltip neyi düzeltemeyeceği.

Mock JSON Generator: sahte veriler ne işe yarar

Mock verilerin backend hazır olmadan önce arayüz geliştirmeye başlamayı nasıl sağladığı.

JSON ↔ YAML/CSV/XML/TOML: ne zaman ve neden dönüştürülür

JSON'u CSV'ye dönüştürürken hangi verilerin kaybolduğu ve YAML ile TOML'un yapılandırma dosyaları için neden popüler olduğu.

Metin

Case Converter: farklı adlandırma stilleri neden var

Bir projede neden değişkenler camelCase ama dosyalar kebab-case yazılır, ve bu kurallar nereden gelir.

Text Diff: algoritmalar iki metin arasındaki farkı nasıl bulur

Bir diff algoritmasının iki metin sürümü arasındaki minimum değişiklik kümesini nasıl bulduğu.

Düzenli ifadeler: temel söz dizimi ve yaygın kalıplar

Bir düzenli ifade nasıl okunur ve açgözlü eşleştirme tembel eşleştirmeden nasıl farklıdır.

Satırları sıralama ve yinelenenleri kaldırma: neden işe yarar

"10"u "9"dan önce koyan sayısal sıralamanın neden bir hata olduğu ve nasıl önleneceği.

String Escape: aynı metnin neden farklı şekilde kaçırılması gerekir

Aynı tırnak işaretinin bir JS dizesinde, JSON'da ve bir shell komutunda neden farklı şekilde kaçırıldığı.

CRLF'e karşı LF: satır sonu karakterleri neden hâlâ önemli

Windows'ta yazılan bir dosyanın neden Linux'ta git'te "tamamen değişmiş" olarak görünebileceği.

Karakter ve kelime sayma: neden her zaman basit değil

Bir emoji veya aksanlı bir harfin neden aynı anda birkaç karakter olarak sayılabileceği.

Lorem Ipsum: yer tutucu metin nereden geldi ve neden var

Tasarımcıların maketlerde gerçek içerik yerine neden kasıtlı olarak "anlamsız" metin kullandığı.

Slugify: rastgele bir metni URL'ye dönüştürme

"Merhaba, Dünya! Nasılsın?" gibi bir başlığın merhaba-dunya-nasilsin gibi URL'ye uygun bir dizeye nasıl dönüştüğü.

Markdown: basit metin söz diziminin zengin editörleri neden yendiği

Geliştiricilerin belgeleri zengin bir metin düzenleyici yerine neden Markdown'da yazmayı tercih ettiği.

Boşluklar ve görünmez karakterler: garip hataların gizli nedeni

Görünüşte aynı olan iki dizenin görünmez bir karakter yüzünden neden eşleşmeyebileceği.

Text Reverse: "metni tersine çevirmek" neden göründüğünden zor

Saf bir dize tersine çevirmenin bir emojiyi neden kullanılamaz baytlara dönüştürebileceği.

Metin frekans analizi: kelime tekrarlarını saymak neden işe yarar

Şifreli bir metindeki harf frekansının en basit yerine koyma şifrelerini kırmaya nasıl yardımcı olduğu.

Hash/Kripto

Hash Generator: MD5, SHA-1 ve SHA-256 birbirinden nasıl farklıdır

MD5'in neden hâlâ dosya bütünlüğünü doğrulamak için kullanıldığı, ama parolalar için değil.

Checksum Verifier: bir dosyanın bozuk olmadığı nasıl kontrol edilir

Eşleşen bir sağlama toplamının bir dosyanın bütünlüğünü onayladığını ama onu kimin oluşturduğunu onaylamadığını.

HMAC: anahtarlı bir hash sıradan bir hash'ten nasıl farklıdır

Sıradan bir SHA-256'nın bir mesajın değiştirilmesine karşı neden koruma sağlamadığı, ama HMAC'in sağladığı.

Bcrypt: parolalar neden hızlı değil yavaş hash'lenir

Hızlı bir SHA-256'nın parolalar için neden kötü bir seçim olduğu, yavaş bcrypt'in ise doğru seçim olduğu.

UUID: neredeyse hiç tekrarlanmayan tanımlayıcılar nasıl üretilir

UUID v4'ün milyonlarca makinede çakışma riski olmadan bağımsız olarak neden üretilebildiği.

Parola Üreteci: bir parolayı gerçekte ne güçlü kılar

Sözlük kelimelerinden oluşan uzun bir parolanın, sembollü ve rakamlı kısa bir paroladan neden daha güçlü olduğu.

AES: simetrik şifreleme nasıl çalışır

AES'te aynı anahtarın verileri neden hem şifrelediği hem çözdüğü, ve bunun asimetrik şifrelemeden nasıl farklı olduğu.

Argon2: bu algoritma parola hash'leme yarışmasını neden kazandı

Argon2'nin GPU ile yapılan saldırılara karşı eski parola hash'leme algoritmalarından nasıl daha iyi savunma sağladığı.

Scrypt: algoritma neden bu kadar çok belleğe ihtiyaç duyar

Scrypt'in ASIC cihazlarda kırmayı zorlaştırmak için neden kasıtlı olarak çok bellek gerektirdiği.

TOTP: kimlik doğrulama uygulamalarındaki tek kullanımlık kodlar nasıl çalışır

Google Authenticator'daki kodun internet olmadan neden çalıştığı ve sunucuyla yalnızca zaman üzerinden neden senkronize olduğu.

PBKDF2: en eski anahtar germe standardı

Önerilen PBKDF2 iterasyon sayısının her yıl neden arttığı.

X.509: bir SSL sertifikasının içinde ne var

Tarayıcının yeşil kilidi göstermeden önce bir sitenin sertifikasında tam olarak neyi kontrol ettiği.

PGP: genel ve özel anahtarla şifreleme nasıl çalışır

Bir PGP genel anahtarının neden özgürce paylaşılabildiği ama özel anahtarın asla paylaşılmaması gerektiği.

Zaman/Sayılar

Unix zamanı: bilgisayarlar zamanı neden 1970'ten itibaren sayar

1 Ocak 1970'in çoğu bilgisayar sistemi için neden zaman referans noktası haline geldiği.

Cron ifadeleri: bir görev zamanlaması nasıl çözülür

*/15 * * * * gibi bir ifadenin nasıl çözüleceği ve görevin tam olarak ne zaman çalışacağının nasıl bilineceği.

Sayı sistemleri: ikili, sekizli ve on altılık sistemler neden var

CSS'te #FF5733 renginin neden ondalık yerine on altılık rakamlarla yazıldığı.

Bit düzeyi işlemler: AND, OR ve XOR bit seviyesinde nasıl çalışır

Bit düzeyi AND'in mantıksal AND'den nasıl farklı olduğu ve bir sayının tek tek bitleri üzerinde neden işlem yapılır.

Tarih farkı: gün saymanın neden göründüğünden daha karmaşık olduğu

Tarihleri saf bir şekilde çıkarmanın artık yıllar yüzünden neden yanlış sonuç verebileceği.

Yaş hesaplama: bunun neden basit bir yıl çıkarma işlemi olmadığı

Sadece doğum yıllarını çıkarmanın neden gerçek yaştan bir fazla bir yaş verebileceği.

Saat dilimleri: UTC'nin GMT ile aynı şey olmadığı

UTC'nin yılda iki kez neden hiç değişmediği, ama Londra saatinin (GMT/BST) değiştiği.

Süre hesaplayıcı: saat, dakika ve saniyeler doğru şekilde nasıl toplanır

Dakika ve saniyeleri toplarken ondalık toplamada olduğu gibi kalanın neden bir sonraki basamağa "taşınması" gerektiği.

ISO 8601 Duration: bir süre standart biçimde nasıl yazılır

PT1H30M'nin neden "1 saat 30 dakika" anlamına geldiği, "1 dakika 30 saat" değil.

Hafta numarası: farklı ülkelerin haftaları neden farklı saydığı

1 Ocak'ın ISO 8601 standardına göre neden bazen önceki yılın 52. veya 53. haftasına ait olduğu.

Roma rakamları: sıfırı ve basamak değeri olmayan bir sistem nasıl çalışır

IV'ün neden 6 değil 4 anlamına geldiği, ve çıkarma kuralının Roma rakamlarında nasıl çalıştığı.

IEEE 754: kodda 0.1 + 0.2 neden 0.3'e eşit değil

Neredeyse her programlama dilinde 0.1 + 0.2'nin neden 0.30000000000000004 olarak göründüğü.

Sayının yazıyla ifadesi: rakamları neden kelimelere dönüştürmeli

Banka belgelerinde tutarın neden aynı anda hem rakamla hem yazıyla yazıldığı.

Web Geliştirme

HEX, RGB, HSL: bir rengi yazmanın neden bu kadar çok yolu var

Tasarımcılar elle bir renk tonu seçerken neden genellikle HEX yerine HSL'yi tercih eder.

CSS küçültme: dosyadan gerçekte ne kaldırılır ve neden

Küçültülmüş CSS, insan için okunamaz hale gelse de tarayıcıda neden tam olarak aynı şekilde çalışır.

JavaScript küçültme: küçültme ile karartma arasındaki fark

İstenirse küçültülmüş kod hâlâ okunabilirken, karartılmış kodun neden okunamadığı.

HTML küçültme: işaretlemedeki boşluklar neden önemli

<pre> veya bir textarea içindeki boşlukları kaldırmak, hemen hemen her yerin aksine sayfanın görünümünü neden bozabilir.

CSS gradyanları: linear, radial ve conic'ten nasıl farklıdır

conic-gradient neden pasta grafikleri için işe yararken, radial-gradient neden bir ışık lekesi efekti verir.

Luhn algoritması: bir kart numarasının doğruluğu nasıl kontrol edilir

Luhn kontrolünden geçen bir kart numarasının, o kartın gerçekten var olduğu anlamına neden gelmediği.

IBAN: uluslararası bir banka hesap numarası nasıl yapılandırılmıştır

Bir IBAN'ın ilk iki harfinin neden hesap numarasının bir parçası değil, bir ülke kodu olduğu.

QR kodları: bir bağlantı piksellerden oluşan bir kareye nasıl sığar

Ortasında logo bulunan bir QR kodu, desenin bir kısmı kaplanmış olsa bile neden hâlâ taranabiliyor.

Barkodlar: Code 128, EAN-13'ten nasıl farklıdır

Mağaza raflarındaki ürünlerin neredeyse her zaman Code 128 yerine EAN-13 kullandığı.

Placeholder görseller: geliştirme sırasında sahte resimler neden önemli

Bir tasarım henüz inşa halindeyken geliştiricilerin gerçek fotoğraflar yerine bilerek gri kutular yerleştirdiği.