Bu var mı: bir dosya sistemi yapısını belgelemenin standart bir yolu


11

İş yerinde, standart bir dosya sisteminde çok çeşitli verilerin organizasyonunu korumaktan sorumluyum. Bunun bir kısmı mantıklı bir sınıflandırma ile (benzerlik, ihtiyaç, okuma / yazma erişimi vb.) Geliyor, ancak büyük kısmı aslında belgeliyor: hangi belgeler / dosyalar / medya nereye gitmeli, bu dizinde ne olmamalı, "biraz farklı bir şey için, bakınız ../../other-dir", vb.

Şu anda bunu belgelemek readmeistediğim her dizinde bir düz metin dosyası kullanarak belgeledim. Birisi herhangi bir dizinde ne olması gerektiğinden emin değilse, o dosyayı okur.

Bu iyi çalışıyor, ancak önemsiz olmayan bir dizin yapısının herhangi bir koruyucunun yaşaması gereken bir sorun için bu ilkel özel çözüm var garip görünüyor. Örneğin, tanıdığım her şirketin, sınıflandırma için üzerinde anlaşılan terminolojinin önemli olduğu bir tür paylaşılan dosya sistemi vardır. Deneyimlerime göre, insanlar deneme yanılma ve deneylerle neler olduğunu öğrenmek zorundalar.

Öyleyse daha iyi bir çözüm önermeme izin verin ve umarım var olup olmadığını söyleyebilirsiniz. Herhangi bir dosya sistemindeki herhangi bir dizinde gizli bir düz metin dosyası olabilir .readme. İçeriği açıklayıcı insan dilidir. Markdown gibi bazı işaretlemeler kullanır, diğer dizinlere kalın, italik ve (göreli) köprülerden biraz daha fazladır. Artık uygun şekilde etkinleştirilen bir dosya tarayıcısı, .readmebir dizin görüntülediğinde adlandırılmış bir dosyayı kontrol edecektir . Varsa, içeriği ayrıştırılır ve dizin yolu widget'ının yakınındaki mütevazi bir bölmede görüntülenir. Buradaki tüm bağlantılar tıklanabilir ve kullanıcı bu bağlantının hedef dizinine yönlendirilir.

Böyle bir standardı uygulama çabasının kullanılabilirlik kazanımlarında birçok kez geri ödeyeceğini düşünüyorum. Diyelim ki Nautilus, Konqueror vb. İçin eklentilerimiz olurdu. Dizin bilgilerini web sunucuları tarafından sunulan standart dosya listelerinde görüntülemek için kullanılabilir. Ve bunun gibi.

Peki, soru: böyle bir şey var mı? Değilse, neden olmasın? İnsanlar bunun değerli bir fikir olduğunu düşünüyor mu?


Dosya sisteminde (veya belirli bir dosya sistemi için dosya tarayıcılarında), özellikle kaynak kodunda iyileştirmelerden bahsettiğiniz için, dosya siparişinin çok gerekli özelliğinden de bahsetmeye değer . Dosya sistemlerinin çoğunun iki ana sıralama türü vardır: alfabetik ve sıralanmamış. Peki ya kullanıcı tanımlı bir sipariş? Örneğin, kaynak kodu söz konusu olduğunda, bir klasörde (modül, paket, üst bileşen) 7 dosyanız varsa (sınıflar, modüller, bileşenler), "mantıksal" sıralaması genellikle alfabetik sıra ile aynı değildir. Ama daha ziyade onların "bağımlılık ağacı" nın sırası.
Sorin Postelnicu

Bu nedenle, modern dosya sistemlerine standart eklemeler olarak, bu üç özellik varsayılan olarak gelmelidir: 1) dosya açıklamaları, 2) bir klasör içinde özel dosya sırası ve 3) dosya etiketleme / etiketleme. Bu 3 "temel" özellikten yararlanmak için CMS kullanılmasına gerek yoktur.
Sorin Postelnicu

Yanıtlar:


5

Bildiğim kadarıyla standart yok. İşte deneyimlerimden birkaç fikir.

Ayarlayın, asla değiştirmeyin

Bu çoğu şirketin başarısız olmasıydı. Hiçbir şey sürekli değişen dosya sistemi yapısından daha kötü değildir. Sabit tutmak mümkün değilse, saf bir dosya sistemi bilgilerinizi düzenlemek için sadece yanlış bir kaptır. Bir veritabanı veya İçerik Yönetim Sistemi kullanın.

Açıklayıcı ve tutarlı dizin adları kullanın

Hiç kimse bir .filingdosyayı veya başka bir şeyi okumaya zaman bulamaz. Dizin adlarınız kendi kendini açıklamıyorsa, muhtemelen kaybolursunuz.

Dizin yapınız için bir belge yazın

Her dizinin rolünü açıkladığınız bir belge yazın. Birçok örnek verin. Yapınızla çalışmak zorunda olan, ancak kimsenin onu okuyacağına inanmayan herkes için kullanılabilir hale getirin. Sana daha çok bir İncil gibi olmalı . Böyle bir belgeye örnek bulmak kolay değil, çünkü şirketler bunları yayınlamıyor. Açık kaynak yazılımdan bir örnek, Dosya Sistemi Hiyerarşi Standardı'dır .


Bu biraz olumsuz geliyorsa, öyle. Uygulamada uzun vadede beşten fazla kullanıcının çalıştığı bir dosya sistemine dayanan önemsiz bir depo görmedim. Sorun şu ki, hangi kategoriyi kurarsanız ayarlayın, insanlar bunlar hakkında tamamen farklı fikirlere sahip olacaklardır. Sonunda sorularınızı cevaplamak için:

Böyle bir şey var mı?

Hayır, sanmıyorum.

Değilse, neden olmasın?

Kanımca: Birkaç kullanıcılı küçük bir statik hiyerarşi için bu aşırıya kaçıyor. Birçok kullanıcıyla değişen büyük bir hiyerarşi için, kategoriler (= dizinler, klasör) fikri ölçeklenmediği için çalışmaz.

İnsanlar bunun değerli bir fikir olduğunu düşünüyor mu?

Hm, ilginç bir fikir. İnsanların onu kullanıp kullanamayacağını görmek için birisi onu uygulamak zorundadır. .filingDosya yerine bu bilgileri alternatif bir veri akışında saklayabilirsiniz (evet, klasörlerde de ADS olabilir). Linux ve OSX'te genişletilmiş öznitelikler kullanabilirsiniz. En büyük sorun muhtemelen dosya tarayıcılarını düzeltmek olacaktır.


1
"Hiçbir şey sürekli değişen bir dosya sistemi yapısından daha kötü değildir", yapı artık mantıklı olmadığında bile kararlılıkla değişmeyi reddeden biri dışında.
jameshfisher

1
"Açıklayıcı ve tutarlı dizin adları kullanın" - kesinlikle gerekli, evet. Ne yazık ki açıklayıcılık ve kısalık arasında bir çelişki var - hiç kimse / srv / all-hiyerarşik veriler / yalnızca ofis tarafından erişilebilir ve yönetici / harfler-ancak-herkese açık olmayan bir dosyaya yol yazmak istemiyor -bildirimler / 2009 akademik yılı / ... vb.
jameshfisher

"Dizin yapınız için bir belge yazın" - ayrıca harika bir fikir. Bu aslında önerdiğim şey; sadece belgelerin yekpare olmaktan ziyade dağıtılması.
jameshfisher

"kategori fikri (= dizinler, klasör) ölçeklenmez" - true-ish, bazen sadece zorunludur. Büyük yazılım kaynak ağaçları diyelim ( git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=tree ).
jameshfisher

" .filingDosya yerine bu bilgileri alternatif bir veri akışında depolayabilirsiniz (evet, klasörlerde de ADS olabilir). Linux ve OSX'te genişletilmiş öznitelikler kullanabilirsiniz." Mümkün, sanırım ama çok önemli olduğunu düşündüğüm taşınabilirliği ve şeffaflığı azaltıyor. Her şeyi bir git deposuna yerleştirmek istersem ne olur? Düz metin dosyaları dizine özgü yapılandırma (örn. Htaccess) için kullanılır, bu yüzden neden belgeler de olmasın?
jameshfisher

2

wasabi denemeye değer. Proje kökünüzde, düz metin kaynağı sağlam bir projeye genel bakış görevi görür ve aynı belgeyi daha meraklı sonuçlar için bir tarayıcıya atabilirsiniz.

Bu, dosya sistemi tabanlı bir çözüm değil, ancak etrafındaki tüm dosya sistemleri ortak bir şeyi destekleyene kadar, wasabi (veya kendi uygulamanız) en iyi seçenek olabilir.


1

Fikrinizin bir değeri var, ama korkuyorum ki böyle bir şeye ihtiyacınız olduğunda, bu daha yapılandırılmış bir şeye ihtiyacınız olduğu anlamına geliyor. Yani bir CMS, belki sadece hafif bir dosya, ama kesinlikle bir metin dosyasından daha fazlası.

Özellikle, belirli belgelerin (ve bu nedenle onların içerdiği klasörlerin) yazılmasını (hatta bunlara erişmesini) kullanıcı tabanınızın bazı alt kümeleriyle kısıtlamak istiyorsanız.

İşletim sisteminizi belirtmezsiniz, ancak geçerli kurulumunuzdan daha iyi hizmet verebilecek alfresco gibi mükemmel (ve ücretsiz) ürünler vardır .


Ben çeşitli CMS ile dabbled, ancak taşınabilirlik, basitlik ve şeffaflık orada en saygıdeğer CMS ile karşılaştırıldığında ödemek için büyük maliyetler olduğunu buldum: dizin ağacı. Yönetmem gereken çoğu veri bir hiyerarşiye sığabilir. Son çare olarak semboller vardır. Dizin yapısı bazen tek çözümdür: örneğin yazılım geliştirmede, kaynak kodu temelde bir dizin ağacıdır. (Bunun gibi dizinlerin belgelenmesi genellikle katı ve şifreli bir şemaya yapışmak anlamına gelir, bu da sonunda bozulur. Bence çözümüm burada da yardımcı olabilir.)
jameshfisher

Söylediğim gibi, fikrinizin değeri var, ama diğer posterin yazarı gibi, bunun belirli bir seviyenin ötesine ölçeklenemeyeceğini düşünüyorum. Kaynak koddan bahsediyorsunuz, ancak bu çok özel bir durumdur ve kod eklediğinizde, "uygun" olması gereken yeri bulmak için mevcut dizinlere bakmazsınız. Bir CMS genellikle bir şeyleri etiketleme yeteneği verir, böylece çözümünüz gibi çalışan "dizinler" (klasörler, boşluklar, sayfalar), PLUS bir etiketleme sistemi, insanların "doğru" dizini aramak zorunda kalmadan bir şeyler bulmasını sağlar. Bu sembolik bağlantılardan daha esnektir ve hatalara daha az yatkındır, IMHO.
p.marino

1

İşte bir fikir. Kullanıcıya dosya hakkında çeşitli sorular soran bir komut dosyası yazın ve / veya dosya içeriğinin kendisinde bazı eşleşmeler yapın ve ardından dosyayı dosyaya yerleştirmek veya oraya yerleştirmek için konum önerir. Komut dosyası olmasını istediğiniz kadar basit veya karmaşık olabilir.

Komut dosyası, bir dosya yönetim sistemi, karar destek sistemi ve dosya sistemi hiyerarşisinin canlı bir belgesi olarak işlev görür. Linux Dosya Sistemi Hiyerarşi Standardı, düşünürseniz biraz efsanedir, çünkü dağıtımlar arasında çok büyük bir fark vardır. Bununla birlikte, çoğu Linux / Unix kullanıcısı aslında dosya sistemi hiyerarşisini kendileri öğrenmek zorunda değildir, çünkü sistemde yüklü hiyerarşiyi standart bir şekilde yöneten çeşitli yazılımlar mevcuttur (paket yöneticisi, yapılandırma aracı, vb.). Çeşitli uygulama çerçevesi, dizinlerini yönetmek için komut dosyaları da oluşturur, örneğin django'nun yeni proje oluşturmak için yönetim komutları veya yeni uygulama modülü veya squash geçiş dosyaları vb.

Bu, dosyanın birden fazla şekilde aranması gerektiğinde komut dosyasının çeşitli semboller oluşturabilmesi gibi ek bir avantaja sahiptir; örneğin, dosya yazarına veya oluşturma tarihine veya sahip olduğunuz iş kuralına dayalı bir dizin. Symlinks ile etiketlemeyi simüle edebilirsiniz. Etiket, bir tagsdizindeki basit bir sembolik bağdır , dolayısıyla tags/mytag/myfilebir sembolik bağ olabilir actual/myfile.

Ayrıca, kullanıcı arabirimini değiştirmeden dosya sistemi hiyerarşi yapısını değiştirmek de mümkün olacaktır.

Bir dosya sistemi bir veritabanıdır. İlişkisel veritabanı değil, hiyerarşik veritabanı. Bir veritabanını yönetmek gibi düşünün, gerçekten insanların ilişkisel yapıyı öğrenmek zorunda kalmasını istemezsiniz, bunun yerine uygulamanın kullanıcıya yapmaları gereken çeşitli görevler olarak sunulmasını istersiniz (örneğin, aylık XYZ raporu, harika, daha sonra bu klasöre koyun ve bu symlink'i oluşturun, ardından bu ay için raporu yaptığınızı kaydetmek için başka bir dosyayı değiştirmeniz gerekir, vb.).

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.