Satır-dönüş karakterinin eski olduğu kabul edilir mi


26

Yapısal verileri ayrıştıran, ancak amacı göremediğim için kasıtlı olarak geri dönüş saptamayı dışlayan bir açık kaynak kitaplığı yazdım. Avantaj / fayda için ek karmaşıklık ve ek yük ekler.

Sürprizime göre, bir kullanıcı ayrıştırıcının çalışmadığı bir hata sundu ve sorunun nedeninin LF veya CRLF'nin aksine CR satırının bittiğini kullandığını fark ettim.

OSX, unix tabanlı bir platforma geçtiğinizden beri LF tarzı satır sonları kullanmıyor mu?

Açıkça CR kullanmak için satır sonlarının değiştirilebileceği Notepad ++ gibi uygulamalar olduğunu biliyorum ama neden birinin istediğini anlamıyorum.

Eski Mac OS stili satır sonlarına karar veren kullanıcıların istatistiki açıdan önemsiz yüzdesi desteğini dışlamak güvenli midir?

Güncelleştirme:

Netleştirmek için, Windows satır sonlarını (yani CRLF) desteklemek, CR belirteç tanıma gerektirmez. Verimlilik amacıyla, sözcü şartlara göre eşleşir. CR karakterlerini sessizce göz ardı ederek, CRLF belirteci LF'ye basitleştirir. Bu nedenle, CRLF belirtecinin kendisi kendi başına bir anakronizm olarak düşünülebilir, ancak bu sorunun konusu değil.

CR stili satır sonları için sistem genelinde destek sağlayan son işletim sistemi Mac OS 9'du . İronik olarak, hala OSX'te varsayılan olarak kullanan tek uygulama Microsoft Excel'dir.


21
"Ek karmaşıklık ve ek yük ekler": Ek karmaşıklık ve ek yükün gerçekten küçük olduğunu düşünüyorum.
Giorgio,

11
@EvanPlaice kasıtlı olarak bıraktığınız CR desteğini takmak için daha az baş ağrısı ve tembel olmak için daha fazla zaman vermez mi?
Pieter B

11
“İş açısından fırsat maliyeti çok yüksek. Basit bir ifadeyle, tembelliğimi israf etmek için ölü bir platform için son derece destek eklemek yerine zaman harcamak için sebepler bulmayı tercih ederim.”: İş açısından daha az zaman alacaktı. Bu özelliğin uygunluğunu araştırmak için buraya bir soru göndermek yerine CR desteğini uygulamak.
Giorgio,

4
@EvanPlaice kültürel atalet, mükemmel bir nedendir.
Pieter B

5
@EvanPlaice: Bu soruyu yazmak, kod satırınızdaki CRyeni satırları desteklemekten çok daha fazla zaman harcamanıza neden oldu . (... ve bunun tam olarak böyle olmadığına inanıyorsanız, çözümleyicinizin tasarımının oldukça yoğun olması gerekir)
ZJR

Yanıtlar:


37

“Kabul ettiğinizde liberal, gönderdiklerinizde muhafazakar” olduğunuz iyi bir uygulama var .

Başka bir deyişle, birisinin size bir sonuca ulaşması (ve doğru çalışmasını beklemek) için bir şans vermesi (ancak küçük olması) olasılığı varsa, desteklemeniz gerekir.

TBH, CR desteği eklemenin bu kadar uzun sürdüğünü göremiyorum.

crLexer'da bir gördüğünüzde bir sonraki karakteri dikizlerken ve eğer bir ise nl, yeni satırı yutun ve bir sonraki nlsatır sadece yeni bir satır belirteci yoksa, devam edin.


23
@ ZJR: postel yasası tehlikelidir: sağlamlık ilkesini kullanırken çok dikkatli olun, çünkü sık sık geri tepmektedir. Hala içinde bulunduğumuz html ayrıştırma karışıklığı bu zihniyete bağlanabilir. Bir program hatalı biçimlendirilmiş girdiyi kabul ettiğinde, bunun sonucu olarak davranışı yakında beklenir ve davranışa bağlı kalır ve daha sonra hatalı biçimlendirilmiş girişi farklı şekilde ya da hiç tedavi etmeyen değişiklikler, teknik olarak doğru olsa da genellikle kusurlu olarak kabul edilir.
whatsisname,

4
@whatsisname: Katılıyorum. Üretim kalitesi yazılımının sağlam olması gerektiğini düşünüyorum. Bununla birlikte, geliştirme araç zincirleri, bu sağlamlığa güvenmekten kesinlikle vazgeçmeli ve yalnızca geçerli çıktılar üretmelidir. Bu html karmaşası, tarayıcıların zayıflığından değil, neredeyse yirmi yıllık zayıf takımlardan kaynaklanmaktadır.
back2dos

2
@ back2dos: _ _ yani? kötü takım tarayıcıların likidliği nedeniyle ortaya çıkar.
amara

4
kötü takım tarayıcı savaşının sonucudur
cırcır ucube 19

2
@Dibbeke: Hatalı biçimlendirilmiş girdilerin kullanımı, yalnızca mevcut durum alanına daha büyük bir girdi alanı eşler ve bu nedenle üzerinde herhangi bir etkisi olmaz - yazılımınızın kaygılarını iyi bir şekilde ayırması şartıyla.
back2dos

21

Hayır. CR eskimiş değildir ("artık üretilmez veya kullanılmaz" olarak tanımlanır). Siz kendiniz bunun kanıtını verdiniz. Belki nadirdir , fakat eski değildir .

Gelince "o güvenli CR desteği dışlamak için"? Dediğiniz gibi, bu satışları kaybetme meselesi değildir ve dünyadaki her tuhaf karakter kombinasyonunu ve dosya biçimini destekleyemezsiniz ve yalnızca yazılımınızı ve kullanıcı tabanınızı bilirsiniz. Bu yüzden, eklememenin destek yükünün (mouviciel'in açıkladığı gibi), ekleme zamanının ağır basmadığına ikna olursanız, dışlamanın güvenli olacağını söylerdim. Ancak ürün ve kullanıcı tabanı hakkında daha fazla şey bilmeden, nasıl daha spesifik olacağından emin değilim.


13
+1 - IMO, OP CR'yi "eski" olarak nitelendirmeye çalışıyor, bu yüzden desteklememesi için bir bahanesi var.
Stephen C,

1
@StephenC Bu gerçeği saklamaya çalışmıyorum. Gerçekten bir bahaneye ihtiyacım yok , ben yazarım ve bu yüzden son sözüm var. Mesele şu ki, ilginç bir soruyu gündeme getiriyor.
Evan Plaice,

18

Tembellik hakkında: dengelemek zorundasınız:

  • CR'nin güvenle ele alınabilmesi için kod değiştirme çabası (ve sonra unutun).

  • Kullanıcılara neden onlarca yıldır mutlu oldukları dosyaların bir an önce çökmesine neden olduğunu açıklamada, satışlarınızdan ödün vermeden kullanabilecekleri geçici çözümler bulmada ve buradaki yorumlarda tartışma ve soru sorma çabaları.

Hangi yolun en temeli olduğuna karar vermek size kalmış.


İyi noktalar, destek kesinlikle bir zaman maliyeti ile birlikte geliyor. Bu özel durum için 'satışlar' bir sorun değil (açık kaynak kodlu) ancak daha büyük resmi göz önüne almakta fayda var. Aynı şekilde, bir CR ile karşılaşıldığında geçersiz / desteklenmeyen bir karakter belirten bir istisna atabilirim.
Evan Plaice

7
@Evan: Tabii ki açık kaynak. Öyle olmasaydı, patronunuz size “Artık kimsenin CR kullanmaması umrumda değil! Müşteriler şikayet ediyorlar. FIX IT!” Derdi. : P Beni rahatsız eden OSS ile ilgili en büyük şey: kullanıcıların şikayet ettiği gerçek durumlara dikkat edilmemesi . Eski olduğunu ya da olmadığını düşünüyorsan, birileri hala kullanıyor.
Aralık'ta

1
açık kaynak olduğundan, düzeltmek için herhangi bir yamayı kabul edeceğiniz tüm kullanıcılara açık bir mektup yazabilirsiniz.
saat

1
@EvanPlaice: Bu "dikkat ... para birimi" olayı iki şekilde de işe yarıyor. İnsanların uygulamanızı kullanmasını istiyorsanız, çalışması ve problemlerini çözmesi gerekir. Kırık bir uygulama, ücretsiz olduğu için eleştiriye karşı bağışıklık kazanmaz. Kullanıcıların istediği her şeyi yapmanız gerektiğini söylemiyorum ; Eğer gereken çirkin istekleri reddediyorlar. Ancak gerçek kullanıcıların sorunlarını çözmezseniz, kullanıcıları kaybedersiniz.
cHao

1
@EvanPlaice: Bu arada, "şikayet" demek istediğimde, "yazılımın ne kadar kötü olduğu konusunda rastgele sızlanmayı" değil, neyin kırıldığını ve nasıl olduğunu açıklayan bir hata raporu vereceğim.
cHao

8

Eski Mac OS stili satır sonlarına karar veren kullanıcıların istatistiki açıdan önemsiz yüzdesi desteğini dışlamak güvenli midir?

Belki de çok fazla kullanıcı bunu algılayamaz, ama odada bir fil var: Windows satır sonları ( CRLF). Bunları destekliyorsanız (genellikle oyunlar için yalnızca Windows kullansam bile), bu tarihi Bermuda üçgeninin üçüncü bölümünü desteklemek önemsiz olmalıdır.

Böyle bir şeyi desteklemiyorsanız, en azından belgelerde ("Bu bir hata değil" stili) ve araçlarla mümkün olan en basit şekilde ( dos2unixörneğin) çalışacak dosyaların nasıl değiştirileceğinden bahsetmelisiniz .


2
Kullanarak Windows'tan bahsetmek için +1 CRLF- bu işletim sisteminde biten varsayılan satırdır. Ve bir .csv dosyasının kaynağını garanti etmenin bir yolu yoktur, bu yüzden kolayca bir Windows sisteminde oluşturulmuş olabilir.

1
Windows'ta CRLF'den bahsetmek önemli değildir çünkü kırılma noktası olarak LF'yi yakalarsanız otomatik olarak bonus olarak CRLF alırsınız. OP, yayınının metninde gördüğünüz gibi bunu biliyor.
davidethell

@davidethell Yep, işte böyle yapılır. Şu anda, CR karakterleri sessizce göz ardı ediliyor. Buna rağmen filler.
Evan Plaice

6

Gönderilmeden CRönce veri akışına bir son olarak dayanan pek çok seri cihaz var ETX. Asla kaybolmayacak bir kongre.


3

Talebi, masrafları faydalara karşı ölçmeniz gereken herhangi bir özellik isteği olarak kabul ediyorum.

Tam olarak bir kişi CR desteği istedi ise, belki de gerekli değildir. Yalnızca çok popüler özellik istekleri için endişelenmeniz gerektiğini söyledikleri 37 işaretten aşağıdaki kitap bölümüne bakın.

http://gettingreal.37signals.com/ch05_Forget_Feature_Requests.php


1
Sonunda, iyi bir karşı nokta. İki cevap seçebilseydim bunu da seçerdim.
Evan Plaice

1

MSDOS'tan MS OS'ler, CR + LF kombinasyonunu bir çizgi ayırıcı olarak kullanır (bence çoğunlukla onlara ihtiyaç duyan matris yazıcılar nedeniyle).

Yani evet, bir serseri, ama lanet olası şey için hala desteğe ihtiyacın var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.