Điều này có tồn tại không: một cách tiêu chuẩn hóa tài liệu cấu trúc hệ thống tệp


11

Trong công việc, tôi chịu trách nhiệm duy trì việc tổ chức rất nhiều dữ liệu khác nhau trên một hệ thống tệp tiêu chuẩn. Một phần của điều này là đến với phân loại hợp lý (bằng cách tương tự, cần, truy cập đọc / ghi, v.v.), nhưng phần lớn hơn thực sự là tài liệu về nó: tài liệu / tệp / phương tiện nào nên đi đâu, không nên có trong thư mục này, "Đối với một cái gì đó hơi khác nhau, xem ../../other-dir", v.v.

Hiện tại, tôi đã ghi lại tài liệu này bằng tệp văn bản gốc readmetrong mọi thư mục tôi muốn ghi lại. Nếu ai đó không chắc chắn những gì có nghĩa là trong bất kỳ thư mục, họ đọc tệp đó.

Điều này hoạt động ổn, nhưng có vẻ kỳ lạ là tôi có giải pháp tùy chỉnh nguyên thủy này cho một vấn đề mà bất kỳ người duy trì cấu trúc thư mục không tầm thường nào cũng phải trải qua. Ví dụ, mọi công ty mà tôi biết đều có một loại hệ thống tệp chia sẻ trong đó thuật ngữ được thống nhất để phân loại là quan trọng. Theo kinh nghiệm của tôi, mọi người chỉ cần tìm hiểu những gì bằng cách thử và sai và thử nghiệm.

Vì vậy, cho phép tôi đề xuất một giải pháp tốt hơn, và hy vọng bạn có thể cho tôi biết nếu nó tồn tại. Bất kỳ thư mục trên bất kỳ hệ thống tập tin có thể có một tập tin văn bản ẩn được đặt tên .readme. Nội dung của nó là ngôn ngữ mô tả của con người. Nó sử dụng một số đánh dấu như Markdown, với ít hơn các liên kết in đậm, in nghiêng và (tương đối) đến các thư mục khác. Bây giờ một trình duyệt tệp được kích hoạt phù hợp sẽ kiểm tra một tệp có tên .readmebất cứ khi nào nó hiển thị một thư mục. Nếu nó tồn tại, nội dung của nó được phân tích cú pháp và hiển thị trong một khung không phô trương gần tiện ích đường dẫn thư mục. Bất kỳ liên kết nào trong đó có thể được nhấp vào, và người dùng sẽ được đưa đến thư mục đích của liên kết đó.

Tôi nghĩ rằng nỗ lực thực hiện một tiêu chuẩn như vậy sẽ trả lại nhiều lần so với lợi ích khả dụng. Chúng ta sẽ có các plugin cho Nautilus, Konqueror, v.v. Nó có thể được sử dụng để hiển thị thông tin thư mục trong danh sách tệp tiêu chuẩn được cung cấp bởi máy chủ web. Và như thế.

Vì vậy, câu hỏi: một điều như vậy tồn tại? Nếu không, tai sao không? Mọi người có nghĩ rằng đó là một ý tưởng đáng giá?


Vì bạn đề cập đến các cải tiến cho hệ thống tệp (hoặc trình duyệt tệp cho một hệ thống tệp cụ thể), đặc biệt đối với mã nguồn, nên cũng cần đề cập đến tính năng rất cần thiết của việc đặt hàng tệp . Hầu hết các hệ thống tập tin có hai loại thứ tự chính: bảng chữ cái và không sắp xếp. Nhưng những gì về một đơn đặt hàng do người dùng chỉ định? Ví dụ, trong trường hợp mã nguồn, nếu bạn có 7 tệp (lớp, mô-đun, thành phần) trong một thư mục (mô-đun, gói, thành phần cha mẹ), thì thứ tự "logic" của chúng thường không giống với thứ tự bảng chữ cái. Nhưng đúng hơn đó là thứ tự của "cây phụ thuộc" của họ.
Sorin Postelnicu

Vì vậy, là bổ sung tiêu chuẩn cho các hệ thống tệp hiện đại, ba tính năng này sẽ được mặc định: 1) mô tả tệp, 2) sắp xếp tệp tùy chỉnh trong một thư mục và 3) gắn thẻ / gắn nhãn tệp. Không cần sử dụng CMS để hưởng lợi từ 3 tính năng "cơ bản" này.
Sorin Postelnicu

Câu trả lời:


5

Theo tôi biết không có tiêu chuẩn. Dưới đây là một vài ý tưởng từ kinh nghiệm của tôi.

Thiết lập nó, không bao giờ thay đổi nó

Đây là hầu hết các công ty thất bại. Không có gì tệ hơn một cấu trúc hệ thống tập tin thay đổi. Nếu không thể giữ nó liên tục thì một hệ thống tệp thuần túy chỉ là nơi chứa sai để sắp xếp thông tin của bạn. Sử dụng cơ sở dữ liệu hoặc Hệ thống quản lý nội dung.

Sử dụng tên thư mục mô tả và nhất quán

Không ai có thời gian để đọc một .filingtập tin hoặc bất cứ điều gì khác. Nếu tên thư mục của bạn không tự giải thích thì có lẽ bạn đã bị mất.

Viết tài liệu cho cấu trúc thư mục của bạn

Viết một tài liệu mà bạn giải thích vai trò của mọi thư mục. Cho rất nhiều ví dụ. Làm cho nó có sẵn cho bất cứ ai phải làm việc với cấu trúc của bạn, nhưng đừng tin bất cứ ai sẽ đọc nó. Nó sẽ giống như một cuốn Kinh thánh cho bạn. Không dễ để tìm một ví dụ cho một tài liệu như vậy, vì rõ ràng các công ty không xuất bản chúng. Một ví dụ từ phần mềm nguồn mở là Tiêu chuẩn phân cấp hệ thống tập tin .


Nếu điều này nghe có vẻ hơi tiêu cực, nó là. Tôi chưa bao giờ thấy một kho lưu trữ không tầm thường dựa trên một hệ thống tệp có hơn năm người dùng hoạt động trong thời gian dài trên thực tế. Vấn đề là bất cứ danh mục nào bạn sẽ thiết lập, mọi người sẽ có những ý tưởng hoàn toàn khác nhau về chúng. Vì vậy, để cuối cùng trả lời câu hỏi của bạn:

Có một điều như vậy tồn tại?

Không, tôi không nghĩ vậy.

Nếu không, tai sao không?

Theo tôi: Đối với một hệ thống phân cấp tĩnh nhỏ với một vài người dùng, điều đó là quá mức cần thiết. Đối với một hệ thống phân cấp thay đổi lớn với nhiều người dùng, nó sẽ không hoạt động vì ý tưởng về danh mục (= thư mục, thư mục) không mở rộng.

Mọi người có nghĩ rằng đó là một ý tưởng đáng giá?

Hừm, đó là một ý tưởng thú vị. Để xem mọi người sẽ sử dụng nó, ai đó phải thực hiện nó. Thay vì một .filingtệp bạn có thể lưu trữ thông tin đó trong luồng dữ liệu thay thế (vâng, các thư mục cũng có thể có ADS). Bạn có thể sử dụng các thuộc tính mở rộng trên Linux và OSX. Vấn đề lớn nhất có lẽ là vá các trình duyệt tệp.


1
"Không có gì tệ hơn cấu trúc hệ thống tệp luôn thay đổi" ngoại trừ một cấu trúc kiên quyết từ chối thay đổi ngay cả khi cấu trúc không còn ý nghĩa.
jameshfisher

1
"Sử dụng tên thư mục mô tả và nhất quán" - hoàn toàn cần thiết, có. Thật không may, có một mâu thuẫn giữa mô tả và ngắn gọn - không ai muốn nhập một đường dẫn đến một tệp trong / srv / all-hVELical-data / access-only-by-office-and-admin / Letters-but-not-public -notices / acad-year-of-2009 / ... vân vân.
jameshfisher

"Viết tài liệu cho cấu trúc thư mục của bạn" - cũng là một ý tưởng tuyệt vời. Đó là những gì tôi đề xuất; chỉ là tài liệu sẽ được phân phối chứ không phải là nguyên khối.
jameshfisher

"ý tưởng về danh mục (= thư mục, thư mục) không mở rộng" - true-ish, ngoại trừ đôi khi nó phải như vậy. Giả sử, cây nguồn phần mềm lớn ( git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=tree ).
jameshfisher

"Thay vì một .filingtệp bạn có thể lưu trữ thông tin đó trong luồng dữ liệu thay thế (vâng, các thư mục cũng có thể có ADS). Bạn có thể sử dụng các thuộc tính mở rộng trên Linux và OSX." Có thể, tôi tưởng tượng, nhưng làm giảm tính di động và minh bạch mà tôi nghĩ là rất quan trọng. Nếu tôi muốn đặt mọi thứ trong repo git thì sao? Các tệp Plaintext được sử dụng cho cấu hình dành riêng cho thư mục (ví dụ: htaccess), vậy tại sao không quá tài liệu?
jameshfisher

2

wasabi là giá trị một shot. Ở gốc dự án của bạn, nguồn văn bản đơn giản sẽ đóng vai trò là tổng quan dự án vững chắc và bạn có thể ném cùng một tài liệu vào trình duyệt để có kết quả phù hợp hơn.

Cấp, nó không phải là một giải pháp dựa trên hệ thống tập tin, nhưng cho đến khi tất cả các hệ thống tập tin xung quanh hỗ trợ một cái gì đó phổ biến, wasabi (hoặc việc bạn thực hiện nó) có thể là lựa chọn tốt nhất.


1

Ý tưởng của bạn có một số giá trị, nhưng tôi sợ rằng khi bạn cần một cái gì đó như thế này thực sự có nghĩa là bạn cần một cái gì đó có cấu trúc hơn. Tức là một CMS, có thể chỉ là một bản nhẹ, nhưng chắc chắn là thứ gì đó không chỉ là một tệp văn bản.

Đặc biệt nếu bạn muốn hạn chế việc viết (hoặc thậm chí truy cập) các tài liệu cụ thể (và do đó là các thư mục chứa chúng) đối với một số tập hợp con trong cơ sở người dùng của bạn.

Bạn không chỉ định HĐH của mình, nhưng có những sản phẩm tuyệt vời (và miễn phí) như alfresco có thể phục vụ bạn tốt hơn so với thiết lập hiện tại của bạn.


Tôi đã nghiên cứu nhiều CMS khác nhau, nhưng đã thấy rằng tính di động, đơn giản và minh bạch là chi phí rất lớn phải trả khi so sánh với CMS đáng kính nhất hiện có: cây thư mục. Hầu hết dữ liệu tôi phải quản lý có thể phù hợp với hệ thống phân cấp. Như một phương sách cuối cùng, có liên kết tượng trưng. Và cấu trúc thư mục đôi khi là giải pháp duy nhất: ví dụ: trong phát triển phần mềm, mã nguồn, ở cơ sở, là một cây thư mục. (Tài liệu thư mục như thế thường có nghĩa là dính vào một lược đồ cứng nhắc và khó hiểu, cuối cùng bị phá vỡ. Tôi nghĩ rằng giải pháp của tôi cũng có thể giúp đỡ ở đây.)
jameshfisher

Như tôi đã nói, ý tưởng của bạn có giá trị, nhưng tôi nghĩ, giống như tác giả của poster khác, rằng điều này không thể vượt quá một mức độ nhất định. Bạn đề cập đến mã nguồn, nhưng đây là một trường hợp rất chuyên biệt - và khi bạn thêm mã vào nó, bạn không nhìn vào các thư mục hiện có để tìm nơi cần "phù hợp". Một CMS thường cung cấp cho bạn khả năng gắn thẻ các công cụ để bạn có "thư mục" (thư mục, dấu cách, trang) hoạt động giống như giải pháp của bạn, PLUS một hệ thống gắn thẻ cho phép mọi người tìm nội dung mà không cần phải tìm thư mục "đúng". Điều này linh hoạt hơn so với symlink và ít bị lỗi hơn, IMHO.
p.marino

1

Đây là một ý tưởng. Viết một kịch bản hỏi người dùng các câu hỏi khác nhau về tệp và / hoặc thực hiện một số khớp trong nội dung tệp, sau đó đề xuất vị trí đặt tệp hoặc đặt tệp đó vào đó. Kịch bản có thể đơn giản hoặc phức tạp như bạn muốn.

Kịch bản hoạt động như một hệ thống quản lý tệp, hệ thống hỗ trợ quyết định và tài liệu sống của hệ thống phân cấp hệ thống tệp. Tiêu chuẩn phân cấp hệ thống tập tin Linux là một chút hoang đường nếu bạn nghĩ về nó, bởi vì có sự khác biệt rất lớn giữa các bản phát hành. Tuy nhiên, hầu hết người dùng Linux / Unix thực sự không phải tự tìm hiểu về hệ thống phân cấp hệ thống tệp vì phần mềm khác nhau được cài đặt trong hệ thống tồn tại để quản lý phân cấp theo cách được tiêu chuẩn hóa (trình quản lý gói, công cụ cấu hình, v.v.). Khung ứng dụng khác nhau cũng tạo các tập lệnh để quản lý các thư mục của nó, ví dụ django có các lệnh quản lý để tạo dự án mới hoặc mô-đun ứng dụng mới hoặc tập tin di chuyển squash, v.v.

Điều này có lợi thế bổ sung là tập lệnh có thể tạo các liên kết tượng trưng khác nhau nếu tệp cần được tìm kiếm theo nhiều cách, ví dụ như một chỉ mục dựa trên tác giả tệp hoặc ngày tạo hoặc bất kỳ quy tắc kinh doanh nào bạn có. Bạn có thể mô phỏng gắn thẻ với symlink. Thẻ đơn giản là một liên kết tượng trưng từ một tagsthư mục, vì vậy tags/mytag/myfilecó thể là một liên kết tượng trưng đến actual/myfile.

Ngoài ra, nó cũng có thể thay đổi cấu trúc phân cấp hệ thống tập tin mà không thay đổi giao diện người dùng.

Một hệ thống tập tin là một cơ sở dữ liệu. Không phải là một cơ sở dữ liệu quan hệ, nhưng cơ sở dữ liệu phân cấp. Hãy suy nghĩ về nó giống như quản lý cơ sở dữ liệu, bạn không thực sự muốn yêu cầu mọi người phải tìm hiểu cấu trúc quan hệ, nhưng bạn muốn ứng dụng trình bày cho người dùng như nhiều nhiệm vụ họ cần làm (ví dụ: bạn đang thực hiện hàng tháng Báo cáo XYZ, thật tuyệt, sau đó đặt nó vào thư mục này và tạo liên kết tượng trưng này, sau đó bạn sẽ cần sửa đổi một tệp khác để ghi lại rằng bạn đã thực hiện báo cáo cho tháng này, v.v.).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.