9 puan yazan GN⁺ 2024-10-14 | 8 yorum | WhatsApp'ta paylaş

Carriage return ve line feed tanımı

  • Carriage return (CR): İmleci aynı satırın sol kenar boşluğuna taşır
  • Line feed (LF): İmleci bir satır aşağı taşır ve önceki satırları yukarı kaydırır
  • Newline (NL): İmleci bir satır aşağı taşır ve sol kenar boşluğuna götürür

Gözlemler

  • CR ve NL kullanışlı kontrol karakterleridir. NL en yaygın işlemdir; metnin yeni satırını sol kenar boşluğundan başlatır
  • LF pratikte işe yaramaz. Kimse bir satırın ortasından bir sonraki satıra inip aynı sütunda yazmaya devam etmek istemez
  • LF yaklaşık 70 yıl önce mekanik teletypewriter döneminden gelir

Tarihsel arka plan

  • Teletypewriter cihazları 5 saniyede yaklaşık 5 karakter basardı
  • CRLF geleneği, 1950'lerdeki teletypewriter'ların mekanik sınırlamalarından kaynaklandı
  • Multix ve Unix döneminde, CRLF'yi NL için kullanmanın verimsiz olduğu anlayışı yaygınlaştı

Günümüzdeki durum

  • Bugün CR, U+000d olarak; LF ve NL ise U+000a olarak temsil edilir
  • Modern makinelerin çoğu U+000a'yı yalnızca NL olarak kullanır
  • Bazı protokoller hâlâ CRLF gerektirir, ancak yazılımların çoğu tek bir NL'yi kabul eder

Eylem çağrısı

  • U+000a kod noktasının adını "line feed" yerine "newline" olarak değiştirin
  • Gereksiz CR iletimini durdurun
  • CRLF gerektiren protokollere yalnızca NL gönderin
  • CR olmadan NL alındığında hata veren yazılımları düzeltin

Özet ve yazar

  • CRLF'nin sonu çoktan gelmeliydi. Bu modası geçmiş kalıntıyı ortadan kaldırmak için birlikte çalışmalıyız
  • Yazar: SQLite'ın kurucusu D. Richard Hipp

# GN⁺ özeti

  • Bu yazı, CRLF'nin tarihsel arka planını ve günümüzdeki verimsizliğini açıklıyor ve kaldırılması çağrısı yapıyor
  • CRLF, mekanik sınırlamalardan doğan bir gelenek olarak günümüzde gereksiz karmaşıklık yaratıyor
  • Bu konu özellikle programcılar ve yazılım geliştiriciler için yararlı olabilir; verimli veri iletimi açısından önemlidir
  • Benzer işlevlere sahip başka protokoller veya sistemler kullanılırken de CRLF gerekliliğinin yeniden değerlendirilmesi gerekir

8 yorum

 
cosine20 2024-10-14

Satır sonu beslemesini bazen kullanıyorum....

 
doolayer 2024-10-14

Gerçekten epey sertmiş 😱

 
savvykang 2024-10-14

14 Ekim’deki düzeltmeye göre değişiklik önerisinin geri çekildiği söyleniyor.

Bu, yalnızca tek bir sistemi değiştirmek değil; protokolü ve etkilenen tüm sistemleri kademeli olarak değiştirmeyi gerektiren bir iş. Bana göre yazar bu konuda yeterince temkinli davranmamış gibi görünüyor.

 
constexprif 2024-10-14

Ortadan kaldırmanın maliyetinden çok, kaldırılmasının sağlayacağı faydanın daha büyük olacağını mı düşündüler?

 
alstjr7375 2024-10-14

CR+LF'nin uzun bir geçmişi var...

Oo... sebebi buymuş..

 
bakyeono 2024-10-14

CRLF yanlış tanımlanmış bir spesifikasyon da değil, dönemin donanım ortamını yansıtan bir şeydi...
Geriye dönük uyumluluğu unutup sadece bu anı düşündüklerini sanıyorum.
Donanım özellikleri her değiştiğinde protokolleri baştan mı yazmalıyız?

 
halfenif 2024-10-14

Kaldırılmasından yana da değilim karşı da değilim.

Aklıma neden Y2K sorunu geldi acaba?

 
GN⁺ 2024-10-14
Hacker News görüşü
  • Mevcut protokolleri NL'ye güncellemek potansiyel hatalara yol açabilir ve HTTP/1.1 zaten HTTP/2 ile değiştirilmiş durumda
    • Yeni protokollerde CRLF gerektirmemek makul, ancak mevcut protokolleri güncellemeye gerek olmadığı savunuluyor
  • CRLF'ye uymamak kasıtlı olarak hata eklemekle aynı şey
    • SQLite'ın HTTP sunucusu \r\n yerine \n kullanacak şekilde güncellendi, ancak bu Zig'in HTTP istemcisiyle uyumluluğu bozdu
  • CRLF'nin gelecek nesillerin dert etmesi gereken bir şey olmaması gerektiği görüşü
    • .gitattribute dosyasının nasıl kullanılacağının öğretilmesi ve Byte Order Mark'tan nefret edecek şekilde eğitim verilmesi gerektiği savunuluyor
  • Unix'in standart dışı satır sonu seçimi bir hataydı ve bu, onlarca yıllık uyumluluk sorunlarına yol açtı
    • CRLF, terminal API'sinin iki farklı parçasıdır ve birçok program CR ile LF'nin doğru çalışmasına dayanır
  • CRLF, standarttaki en az önemli unsurlardan biri
    • Standardı bozmak yeni bir deneme ve kişisel olarak yabancı bir tutum gibi geliyor
  • SMTP, ileti sonlandırma dizisinin açıkça CR LF . CR LF olduğunu belirtiyor ve LF . LF'yi tanıyan uygulamalar da var
    • Orijinal SMTP kuralı artık önemli olmayabilir
  • CRLF birçok cihaz için risk oluşturabilir ve istisnalar azaltılmalı
  • Satır sonlarını karıştırınca ortaya çıkan sorunlardan hiç bahsedilmiyor
    • NL diye bir karakter yoktur ve tüm klavyelerdeki "ENTER" tuşu CR gönderir
    • Mevcut yöntem iyi çalışıyor