.DS_Store’un Kökeni (2006)
(arno.org).DS_Store, 1999’da Mac OS X için Finder yeniden oluşturulurken ortaya çıkan Desktop Services Store kısaltmasıdır- O dönemde Finder kod tabanı yaklaşık 8 yıllıktı; küçük değişiklikler bile büyük maliyet getiriyor ve ilgisiz görünen özellikleri bozuyordu, bu yüzden baştan yeniden yazılması gerekiyordu
- Yeni Finder, kullanıcı arayüzü ile arka ucu ayırdı; arka uç dosya listeleme, değişiklik izleme, simge konumları ve klasör ayarları gibi metaverilerden sorumluydu
- Finder arka ucu, Finder dışında da kullanılabilecek herkese açık bir API adayı hâline geldi ve Finder’ın adının “Desktop” olarak değiştirilmesi fikriyle bağlantılı olarak Desktop Services adını aldı
.DS_Storeaslında yalnızca görünüm ayarları veya simge konumları değiştirildiğinde oluşturulmalıydı; ancak bir hata nedeniyle çoğu zaman sadece bir klasöre girildiğinde bile oluşturuluyordu
Desktop Services Store adının doğuşu
- 1999’da Apple’da Mac OS X Finder yeniden yapılırken mevcut Finder kod tabanı yaklaşık 8 yıllıktı
- Değişiklikler ciddi mühendislik çabası gerektiriyordu
- Değişiklikler genellikle ilgisiz görünen 2-3 özelliği bozuyordu
- Mac OS X için Finder’ın sıfırdan yeniden yazılmasına karar verildi
- Yeniden yazım sürecinde Finder’ın kullanıcı arayüzü ile temel işlev arka ucu birbirinden ayrıldı
- İç adları sırasıyla
Finder_FEveFinder_BEidi - Arka uç dosya listeleme, dosya sistemi değişikliklerini izleme, metaveri işleme, simge konumları ve klasör ayarlarından sorumluydu
- İç adları sırasıyla
- Finder arka ucu, Finder dışında da yararlı olabileceği için bir gün herkese açık API olarak sunulması planlandı
- Daha önce
Icon ServicesveNavigation Servicesadlarını belirleme deneyimine dayanarakDesktop Servicesadı seçildi - O dönemde Finder’ın adını “Desktop” olarak değiştirme seçeneği de değerlendiriliyordu
.DS_Storeadı “Desktop Services Store”dan gelir- Baştaki
.Unix benzeri işletim sistemlerinde ve Mac OS’te görünmeyen dosya olarak ele alınmasını sağlamak için seçilmişti
- Daha önce
Oluşturulma koşulları ve sonraki etkileri
- Ad daha açıklayıcı bir biçimde seçilebilirdi, ancak yaygın olarak kullanılmaya başladıktan sonra değiştirilmesi zor hâle geldi
.DS_Storedosyası aslında yalnızca kullanıcı bir klasörün görünüm ayarlarını değiştirdiğinde veya simge konumlarını elle belirlediğinde oluşturulmalıydı- Ancak düzeltilmeyen bir hata nedeniyle dosya gereğinden fazla oluşturuldu
- Pratikte yalnızca bir klasörü ziyaret etmek bile
.DS_Storedosyasının oluşturulmasını neredeyse garanti eder hâle geldi
Finder_BE, yani Desktop Services, Finder dışında da kullanıldıNavigation Services, yani aç/kaydet iletişim kutuları da daha sonra bunu kullanmaya başladı- Mac OS’in ilk sürümlerinde
Navigation Servicesbunu kullanmıyordu Desktop Services APIhenüz tamamen herkese açık hâle getirilmiş değil
1 yorum
Hacker News yorumları
Bu dosyanın dışında, Mac dosya sistemindeki fork kavramı yüzünden kafa karıştıran anlar da olmuştu.
Buradaki fork,
fork()değil; dosya sistemi içinde veri bileşeniyle kaynak bileşeninin bir çift olarak var olduğu bir yapıydı. Biri metadata, diğeri dosya içeriği gibi ele alınıyordu.Unix’te metadata dizin bloklarındaki inode tarafındaydı ve dosyaya özgü biçimde bağlanmış değildi; bu yüzden
tar,cpio,zipgibi yapılar bunu ayrıca ifade etmek zorundaydı.Unix’te Mac uyumlu dosya desteği uygulamak için resource fork’u birinci sınıf veri olarak ele almak gerekiyordu; doğal yöntem de her dosyanın yanında
.filegibi bir dosya bulundurmaktı.O dönemde UFS’in inode bloğu resource fork’un tüm özelliklerini eşleyemiyordu; ikonlar gibi şeyler de bunun içindeydi. Daha modern dosya sistemlerinde dizin bloğu yapısı daha büyük olduğundan bu tür veriler daha iyi işlenebiliyor.
Aslında dosya içeriğinin iki ayrı kümesi varmış gibi görmek daha doğru; biri
data, diğerirsrcolarak adlandırılıyordu ve diskte ikisi de sadece bayt akışıydı.Ancak resource fork genellikle 4 baytlık tür kodu ve 2 baytlık tamsayı ID ile indekslenen küçük veri parçalarından oluşan bir yapı saklıyordu.
68K Mac uygulamaları kod, menü, iletişim kutusu, resim, ikon, metin dizeleri vb. neredeyse her şeyi resource fork’a koyuyordu; eski bir Mac uygulamasını dönüştürmeden PC’ye ya da Unix’e kopyalayınca boş dosya gibi görünüyordu.
Bu yüzden Mac uygulamalarını ağ üzerinden göndermek için tek bir akışa kodlamak gerekiyordu; ilk dönemlerde BinHex
.hqxveya MacBinary.bin, daha sonra Stuffit.sitarşivleri kullanıldı.Bu yapının inode’a uymamasının nedeni, fiilen bütün bir dosyayı olduğu gibi oraya tıkıştırmaya çalışmakla aynı olmasıydı. Resource fork yapısının kendisinde 16 MB sınırı vardı, ancak ayrı bir veri akışı olarak ele alınırsa istenildiği kadar büyük yapılabilirdi.
Örneğin Escape Velocity eklentileri özel kaynak türleri kullanıyordu ve ResEdit eklentisiyle kolayca düzenlenebiliyordu.
https://en.wikipedia.org/wiki/NTFS#Alternate_data_stream_(AD...
Dosya türü, creator code, kilit, invisible, bozo bitleri vb. her zaman dosya sisteminde saklanıyordu.
Örneğin MFS disk biçimi açıklamasına bakılabilir: https://wiki.osdev.org/MFS#File_Directory_Blocks
Mac önyükleme DVD’si yapmak da kendi çapında hiç kolay değildi.
Eskiden
.DS_Storeoluşturmayı kapatmanın bir yolu olduğunu hatırlıyorum; Apple bunu kaldırdı ve bu değişikliği neden yaptıklarını hiç anlamıyorum.Sonunda tüm dosya sistemini izleyip
.DS_Storeoluşur oluşmaz silen bir programı kendim yazdım.[0] https://github.com/slmjkdbtl/dskill
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUEhttps://support.apple.com/en-us/102064
Yerel birimlerde kapatmanın bir yolu olduğunu hatırlamıyorum.
.ile başlayan dosyalar oluşturmaya başlayarak gerçekten ortalığı berbat etti..DS_Storea izin verildikten sonra diğer mühendislerin.fseventsd,.Spotlight-V100gibi şeyleri de kolayca onaylamış olması muhtemel görünüyor.Bu dosyalar yüzünden kaç tane “kirlenmiş” dosya sistemi gördüğümü bilmiyorum. Çoğu SD kart ya da USB flash sürücüydü ama bazen çok daha korkunç durumlar da oluyordu.
Genelde böyle durumlarda
rm -rf .DS_Store .Trashes ._.Trashes .fseventsd .Spotlight-V100çalıştırıp, başka bir şey yazılmadan sürücüyü hızla çıkarıyorum.Özellikle durumu kötüleşen bir diskten veri kopyalamak gerektiğinde, en istemeyeceğiniz şey tam indekslemenin başlaması ve diske yazma yapılmasıdır.
Cidden, bunun için bir ayar seçeneği olmalı.
find / -name ".DS_Store" -exec rm {} \; 2>/dev/nullBunu bir betiğe koyup
crontab’e eklemek yeterli..DS_Storegerçekten talihsiz bir tasarım gibi görünüyor. Bir amacı var ve çeşitli geçici çözümler de mevcut, ama pratikte karşılaşan insanların %99’una dosya çöpü saçan bir şeye dönüşmüş durumda.Kullanıcı deneyimi cilası açısından Apple’a pek yakışmıyor.
System 7.5, OS X ve Windows’u birlikte kullanarak büyüdüm; Mac, gereksiz dosyaları ya da dosya biçimlerini, “bilgisayarın içeride nasıl çalıştığı” gibi uygulama ayrıntılarını kullanıcıya özellikle göstermezdi.
Bu yüzden bu dosyanın her yerde oluşması, Mac’e dair zihinsel modelimle hiç uyuşmadığı için tuhaf geliyor.
.DS_Storedosyalarını asla görmez.Finder, gizli dosyaları gösterme seçeneği açık olsa bile artık bunları göstermiyor.
Ancak Mac’ten Windows kullanıcılarına dosya paylaşırken gerçekten çirkin görünüyor ve Mac’e geçmeyi düşünen birine kötü bir ilk izlenim verebileceğini düşünüyorum.
Neden aynı klasörün içinde olmak zorunda olduğunu anlamıyorum. İşletim sistemi bir yerde kendi küçük veritabanını tutup her yolu ona göre referans alamaz mı?
“Yalnızca kullanıcı görünüm ayarlarını gerçekten değiştirdiğinde ya da klasör içindeki simge konumlarını elle belirlediğinde oluşturulmalı” görüşüne katılıyorum. Ama gerçekte, sadece bir klasörü ziyaret etmek bile
.DS_Storeoluşturulmasını neredeyse garanti ediyor.Finder’daki en büyük şikâyetim bu.
Classic Mac OS Finder’daki gibi tek tek klasör pencerelerinin görünümünü ve boyutunu çok çeşitli biçimlerde özelleştirebilmek gerçekten harika bir özellik.
Ama aynı klasörden sadece bir tarayıcı penceresiyle geçseniz bile, hiçbir şeyi değiştirmediğiniz hâlde bu özelleştirmelerin çoğu tarayıcı penceresi ayarlarıyla eziliyor.
Bu kadar kolay bozulacaksa harika özelleştirmelere izin vermenin anlamı yok.
Applications klasörünü global bir kısayolla açıyorum; o pencerenin görünümünü süslemek istesem de faydası yok. Kısayola her bastığımda ne göreceğimi bilemiyorum ve sürekli sıfırlanıyor.
Bunun nedeni Finder’da varsayılan tarayıcı penceresi düzenini ayarlamanın bir yolu olmaması. Bunun yerine ziyaret edilen her klasöre mevcut tarayıcı ayarlarını bırakıyor; gerçekten sinir bozucu.
Aynı pencerenin en son bıraktığım hâliyle öne fırlamasını çok severdim; özlüyorum.
cmd-shift-Aile Applications klasörünü,cmd-shift-Uile Utilities klasörünü açabilirsiniz.Mac kullanıcısı olmadığım için, GitHub gibi yerlerden aldığım
.tgzdosyalarının içinde bir sürü.DS_Storeolduğunda hep biraz sinirleniyorum.macOS muhtemelen GNU
tarkullanıyor gibi, ama varsayılan olarak.DS_Storedosyalarını yok sayacak şekilde yamalanmamış ya da yapılandırılmamış olması epey şaşırtıcı.COPYFILE_DISABLE=truedışa aktarılırsatar.DS_Storedosyalarını atlar.Ağ birimlerinde gezinirken
.DS_Storedosyası oluşturulmasını varsayılan olarak kapatmanın yolundan bahsetmeye değer. Aksi hâlde Finder ile sadece dolaşmak bile dizin değiştirilme zamanını değiştiriyor ki bu gerçekten berbat.https://old.reddit.com/r/MacOS/comments/lvju40/comment/gpc8i...
.DS_Storevar mı diye baktığımda yok gibi görünüyordu, ama terminale geçtiğimde aslında var olduğunu gördüm.Artık Finder’ın gizli dosyaları gösterme özelliğine güvenilemiyor. Çünkü tüm gizli dosyaları göstermek yerine, yalnızca Finder’ın kullanıcının önemsemesi gerektiğine karar verdiği gizli dosyaları gösteriyor.
Benim ağ paylaşımım yerel bir Synology olduğu için büyük sorun değil, ama iş yerinde bu dosyalar epey dağınık bir durum yaratmıştı.
Nokta-alt çizgi (
._) dosyaları da var. Ağ paylaşımlarında bu dosyaların oluşmasını engellemek için devre dışı bırakmanın bir yolu var mı?[0] https://superuser.com/questions/212896/is-there-any-way-to-p...
Neyse ki Emacs’in dosya yöneticisi Dired kullanıldığında bu sinir bozucu küçük dosyaları ve LaTeX çalıştırmanın oluşturduğu dosyaları kolayca yokmuş gibi davranabilirsiniz.
(setq dired-omit-mode tdired-omit-files "^.+\\.\\(DS_Store\\|aux\\|bak\\|bbl\\|bcf\\|blg\\|dvi\\|ent\\|idx\\|ilg\\|ind\\|log\\|orig\\|out\\|pdf-view-restore\\|pdf#\\|reg\\|run.xml\\|synctex.gz\\|toc\\)$")