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ığı.
Ağ/HTTP
URL ayrıştırma: bir web adresi hangi parçalardan oluşur
Bir URL'nin sunucunun asla almadığı # işaretinden sonraki bir kısma neden sahip olduğu.
Query String'e karşı JSON: GET parametreleri neden bu kadar sınırlı
Bir URL sorgu dizesi üzerinden bir dizi veya iç içe bir nesne geçirmenin JSON kadar basit olmadığı.
User-Agent: bu dizenin neden böyle bir karmaşa olduğu
Chrome, Safari ve Edge'in User-Agent'inde neden aynı anda hem "Mozilla" hem de "Safari" kelimelerinin bulunduğu.
Basic Authentication: bir HTTP kaynağını korumanın en basit yolu nasıl çalışır
Base64 şifreleme değil kodlama olduğu için Basic Auth'un neden kesinlikle HTTPS gerektirdiği.
HTTP başlıkları: her istek ve yanıtta ne saklı
Content-Type başlığının tarayıcının sunucu yanıt gövdesini nasıl yorumlayacağını neden belirlediği.
Cookie'ler: küçük bir metin parçası oturum durumunu nasıl saklar
HttpOnly özelliğinin bir cookie'yi kötü amaçlı JavaScript ile çalınmaktan neden koruduğu.
CORS: tarayıcı başka bir alan adına "normal görünen" istekleri neden engeller
Bir CORS hatasının sunucuda değil tarayıcıda neden oluştuğu, ve isteği gerçekte kimin engellediği.
E-posta başlıkları: bir mesajın gönderenden size kadar olan yolu nasıl izlenir
Bir mesajın rotasını izlemek için Received başlıklarının neden alttan üste doğru okunması gerektiği.
SEO
Meta etiketler: hangileri gerçekten arama ve sosyal medyayı etkiliyor
Bir arama motoru meta description'ınızı bazen neden görmezden gelip sayfa metninden kendi snippet'ini oluşturur.
robots.txt: arama botları neyi tarayabileceklerine nasıl karar verir
robots.txt'deki bir Disallow kuralı, başka bir yerden bağlantı varsa bir sayfayı arama sonuçlarından neden gizlemez.
Sitemap.xml: arama motorlarının neden bir site haritasına ihtiyacı var
Sitemap.xml'de yer almak, bir arama motorunun sayfayı indeksleyeceğini neden garanti etmez.
Favicon: tek bir simge neden bu kadar çok boyut ve formata ihtiyaç duyar
Tek bir favicon.ico'nun artık tüm cihazlarda doğru görüntülenmek için neden yeterli olmadığı.
Sitemap.xml oluşturma: bir site haritası otomatik olarak nasıl derlenir
Arama motorlarının sitemap.xml'deki priority alanını, spesifikasyonun bir parçası olmasına rağmen neden büyük ölçüde göz ardı ettiği.
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.