تصنيف البيانات في حد ذاته موضوع مثير للاهتمام للبحث. أحب جمع المعلومات التي تبدو ضرورية ، وحاولت دائمًا إنشاء تسلسلات هرمية منطقية من الدلائل لملفاتي ، وحالما رأيت برنامجًا جميلًا وملائمًا لتعيين العلامات إلى الملفات ، وقررت أنه كان من المستحيل العيش على هذا النحو.
مشكلة أنظمة الملفات الهرمية
غالبًا ما يواجه المستخدمون مشكلة اختيار مكان حفظ الملف الجديد التالي ومشكلة العثور على ملفاتهم الخاصة (أحيانًا لا تكون أسماء الملفات مخصصة على الإطلاق للتخزين البشري).
يمكن أن يكون المخرج من هذا الموقف هو أنظمة الملفات الدلالية ، والتي عادة ما تكون وظيفة إضافية لنظام الملفات التقليدي. يتم استبدال الدلائل الموجودة بها بسمات الدلالية ، وتسمى أيضًا العلامات والفئات والبيانات الوصفية. سأستخدم مصطلح "الفئة" في كثير من الأحيان ، كما في سياق أنظمة الملفات ، تكون كلمة "tag" غريبة أحيانًا ، خاصةً عند ظهور "علامات فرعية" و "أسماء مستعارة للعلامات".
يؤدي تعيين الفئات إلى الملفات إلى حل مشكلات تخزين الملفات والبحث إلى حد كبير: إذا كنت تتذكر (أو تخمن) واحدة على الأقل من الفئات المعينة لملف ، فلن يغيب عن الملف أبدًا.
في وقت سابق على هابري ، أثير هذا الموضوع أكثر من مرة ( واحد ، اثنان ، ثلاثة ، أربعة ، إلخ) ، وهنا أصف قراري.
مسار التنفيذ
مباشرة بعد الحلم المذكور أعلاه ، وصفت في دفتر الملاحظات واجهة الأوامر التي توفر العمل اللازم مع الفئات. ثم قررت أنه في غضون أسبوع أو أسبوعين ، يمكنك كتابة نموذج أولي باستخدام Python أو Bash ، وبعد ذلك ستحتاج إلى العمل على إنشاء غلاف رسومي على Qt أو GTK. لقد تبين أن الواقع ، كما هو الحال دائمًا ، أكثر حدة ، واستمر التطور.
كانت الفكرة الأولية هي جعل البرنامج أولًا مزودًا بواجهة سطر أوامر مريحة وموجزة من شأنها إنشاء وحذف الفئات وتعيين الفئات إلى الملفات وإزالة الفئات من الملفات. دعوت vitis البرنامج.
المحاولة الأولى لإحداث التهاب لم تنته بأي شيء ، حيث بدأ الكثير من الوقت للذهاب إلى الكلية والعمل. المحاولة الثانية كانت بالفعل شيء ما: من خلال رسالة الماجستير تمكنا من إكمال المشروع المخطط وحتى إنشاء نموذج أولي لقذيفة GTK. لكن تبين أن هذه النسخة غير موثوقة وغير مريحة لدرجة أنني اضطررت إلى إعادة التفكير كثيرًا.
لقد استخدمت بالفعل الإصدار الثالث بنفسي لفترة طويلة جدًا ، حيث ترجم عدة آلاف من ملفاتي إلى فئات. هذا ، من بين أمور أخرى ، قد سهلت إلى حد كبير من خلال استكمال باش تنفيذها. ولكن لا تزال هناك بعض المشكلات ، مثل عدم وجود فئات تلقائية والقدرة على تخزين الملفات التي تحمل الاسم نفسه ، وقد تم تصميم البرنامج بالفعل تحت تعقيده الخاص. لذا فقد توصلت إلى الحاجة إلى حل مشاكل تطوير البرامج المعقدة: كتابة المتطلبات التفصيلية ، وتطوير نظام اختبار وظيفي ، ودراسة إرشادات التغليف والمزيد. لقد توصلت الآن إلى خطة ، لذلك يمكن تقديم هذا الخلق المتواضع إلى المجتمع الحر. إن إدارة الملفات المحددة هذه ، مثل الإدارة من خلال مفهوم الفئات ، تمس أسئلة ومشاكل غير متوقعة ، وفي حلها تسببت vitis في خمسة مشاريع أخرى من حولها ، سيتم ذكر بعضها في المقال. حتى الآن ، لم يكتسب vitis قذيفة رسومية ، لكن راحة استخدام فئات الملفات من سطر الأوامر تغطي بالفعل أي إيجابيات لمدير الملفات الرسومية المعتاد.
أمثلة الاستخدام
لنبدأ بفكرة بسيطة - قم بإنشاء فئة:
vitis create
دعنا نضيف بعض التكوينات إليه كمثال:
vitis assign -f "The Ink Spots - I Don't Want To Set The World On Fire.mp3"
يمكنك عرض محتويات فئة الموسيقى من خلال الأمر show:
vitis show
يمكنك تشغيله باستخدام أمر فرعي "مفتوح"
vitis open
لأن لدينا ملف واحد فقط في فئة "الموسيقى" ، ثم سيبدأ تشغيله فقط. لغرض فتح الملفات مع برامجهم ، قمت بشكل افتراضي بإنشاء أداة مساعدة منفصلة vts-fs-open (الأدوات القياسية مثل xdg-open أو mimeopen لم تناسبني لعدة أسباب ؛ لكن ، في أي شيء ، في الإعدادات يمكنك تحديد أداة أخرى لفتح ملف عالمي) . تعمل هذه الأداة بشكل جيد على توزيعات مختلفة مع بيئات عمل مختلفة ، لذلك أوصي تثبيتها مع vitis.
يمكنك أيضًا تحديد البرنامج مباشرة لفتح الملفات:
vitis open --app qmmp

دعونا إنشاء المزيد من الفئات وإضافة الملفات باستخدام "تعيين". إذا تم تعيين الملفات إلى فئات غير موجودة بعد ، فسيتم إصدار طلب لإنشائها. يمكن تجنب طلب غير ضروري باستخدام علامة - نعم.
vitis assign R -f " R.pdf" " R: .pdf" --yes
الآن نريد إضافة فئة "الرياضيات" إلى ملف "الحزمة الإحصائية R: نظرية الاحتمالات والإحصاء .pdf". نحن نعلم أن هذا الملف يحتوي بالفعل على الفئة "R" وبالتالي يمكننا استخدام المسار القاطع من نظام Vitis:
vitis assign -v "R/ R: .pdf"
لحسن الحظ ، فإن الإكمال التلقائي للباش سيجعل من السهل القيام بذلك.
ألقِ نظرة على ما حدث باستخدام علامة الفئات - لرؤية قائمة الفئات لكل ملف:
vitis show R --categories

لاحظ أنه تم أيضًا تعيين فئات تلقائية للملفات حسب التنسيق والنوع (يجمع بين التنسيقات) وامتداد الملف. يتم تعطيل هذه الفئات اختياريا. في وقت لاحق سأقوم بالتأكيد بترجمة أسمائهم.
سنضيف شيئًا آخر إلى "الرياضيات" للتغيير:
vitis assign -f " - 1984.pdf" ___1927.djvu
والآن تبدأ المتعة. بدلاً من الفئات ، يمكنك كتابة التعبيرات باستخدام عمليات الاتحاد والتقاطع والطرح ، أي استخدام العمليات على المجموعات. على سبيل المثال ، سينتج عن تقاطع "الرياضيات" مع "R" ملف واحد.
vitis show R i:
طرح من "الرياضيات" إشارات إلى اللغة "ص":
vitis show \\ R # vitis show c: R
يمكننا دمج الموسيقى واللغة R بسلاسة:
vitis show u: R
تتيح لك العلامة -n "سحب" الملفات المطلوبة من نتيجة الاستعلام بالأرقام و / أو النطاقات ، على سبيل المثال ، -n 3-7
، أو أكثر تعقيدًا: -n 1,5,8-10,13
. غالبًا ما يكون مفيدًا مع الأمر الفرعي المفتوح ، الذي يسمح لك بفتح الملفات التي تحتاجها من القائمة.

على الرغم من أننا نتحرك بعيدًا عن استخدام التسلسل الهرمي للدليل المعتاد ، إلا أنه من المفيد غالبًا الحصول على فئات متداخلة. قم بإنشاء فئة فرعية "إحصائيات" لفئة "الرياضيات" وأضف هذه الفئة إلى الملف المناسب:
vitis create / vitis assign / -v "R/ R.pdf" vitis show --categories

يمكننا أن نرى أن هذا الملف يحتوي الآن على فئة "الرياضيات / الإحصاء" بدلاً من "الرياضيات" (يتم تتبع الروابط الإضافية).
يمكن أن يكون الوصول إلى المسار الكامل غير مريح ، وإنشاء اسم مستعار "عام":
vitis assign / -a vitis show

ليس فقط الملفات العادية
روابط الانترنت
لتوحيد تخزين أي معلومات ، سيكون من المفيد على الأقل تصنيف الروابط إلى موارد الإنترنت. ومن الممكن:
vitis assign -i https://habr.com/ru/company/sfe_ru/blog/437304/ --yes
في مكان خاص ، سيتم إنشاء ملف برأس صفحة HTML ومع الامتداد .desktop. هذا هو تنسيق الاختصار التقليدي في جنو / لينكس. تحصل هذه الاختصارات على فئة NetworkBookmarks التلقائية.
بطبيعة الحال ، يتم إنشاء اختصارات لاستخدامها:
vitis open
يؤدي تنفيذ الأمر إلى فتح الرابط المحفوظ للتو في المتصفح. يمكن أن تحل الاختصارات المصنفة لمصادر الإنترنت محل الإشارات المرجعية للمستعرض.
شظايا الملف
من المفيد أيضًا الحصول على فئات لشظايا الملفات الفردية. محاولة لطيفة ، هاه؟ لكن التنفيذ الحالي حتى الآن يؤثر فقط على الملفات النصية العادية وملفات الصوت والفيديو. لنفترض أنك بحاجة إلى ملاحظة قطعة معينة من حفل موسيقي أو لحظة مضحكة في الفيلم ، ثم عند استخدام تعيين يمكنك استخدام الأعلام - اسم مستعار ، - بداية ، - فينيش. حفظ شاشة التوقف من حك البط:
vitis assign -c -f Duck_Tales/s01s01.avi --finish 00:00:59 --fragname "Duck Tales intro" vitis open
في الواقع ، لا يحدث أي قطع للملفات ؛ وبدلاً من ذلك ، يتم إنشاء مؤشر ملف إلى جزء ، يصف نوع الملف والمسار إلى الملف وبداية ونهاية الجزء. يتم تفويض إنشاء وفتح مؤشرات على الأجزاء إلى الأدوات المساعدة التي صممها خصيصًا لهذه الأغراض - هذه هي mediafragmenter و fragplayer. الأول يخلق ، والثاني يفتح. في حالة تسجيلات الصوت والفيديو ، يتم إطلاق ملف وسائط من وضع معين إلى موضع معين باستخدام مشغل VLC ، لذلك يجب أن يكون أيضًا في النظام. في البداية كنت أرغب في القيام بذلك على أساس إمبلاير ، ولكن لسبب ما كان ملتوية للغاية مع تحديد المواقع في الوقت المناسب.
في مثالنا ، يتم إنشاء ملف "Duck Tales intro.fragpointer" (يتم وضعه في مكان خاص) ، ثم يتم تشغيل جزء من بداية الملف (لأنه - لم يتم تحديد بدء التشغيل عند الإنشاء) إلى العلامة في 59 ثانية ، وبعدها VLC مغلقة.
مثال آخر - قررنا تصنيف أداء منفصل في حفلة موسيقية لفنان شهير:
vitis assign " " -f \ c\ -\ \ \ -\ \ \ .mp4 --fragname " " --start 00:32:18 --finish 00:36:51 vitis open " "
عند فتح الملف سيتم تضمينه في الموضع المطلوب وبعد أربع دقائق ونصف سيتم إغلاقه.
كيف يعمل كل شيء + ميزات إضافية
تخزين الفئة
في بداية التفكير في تنظيم نظام الملفات الدلالية ، توصلت إلى ثلاث طرق: من خلال تخزين الروابط الرمزية ، من خلال قاعدة البيانات ، من خلال وصف في XML. فاز الأسلوب الأول ل من ناحية ، من السهل تنفيذها ، ومن ناحية أخرى ، لدى المستخدم الفرصة للنظر في الفئات مباشرةً من نظام الملفات (وهذا مناسب ومهم). في بداية استخدام vitis ، يتم إنشاء الدليل "Vitis" وملف التكوين ".config / vitis / vitis.conf" في الدليل الرئيسي للمستخدم. ~ / Vitis ينشئ أدلة تتوافق مع الفئات ، وفي هذه الدلائل ، تنشئ روابط رمزية إلى الملفات الأصلية. الأسماء المستعارة للفئة هي أيضًا روابط لها. بالطبع ، قد لا يناسب وجود دليل "Vitis" في الدليل الرئيسي شخصًا ما. يمكننا التبديل إلى أي مكان آخر:
vitis service set path /mnt/MyFavoriteDisk/Vitis/
في مرحلة معينة ، يصبح من الواضح أن الملفات المنتشرة في أماكن مختلفة ليست ذات معنى لتصنيفها ، حيث يمكن تغيير موقعها. لذلك ، بالنسبة للمبتدئين ، قمت بإنشاء دليل بنفسي ، حيث قمت بإلقاء كل شيء بغباء وأعطيت فئات لكل ذلك. ثم قرر أنه سيكون من الجيد إضفاء الطابع الرسمي على هذه اللحظة على مستوى البرامج. لذلك ظهر مفهوم "مساحة الملف". في بداية استخدام vitis ، لن يضر إنشاء مثل هذا المكان على الفور (سيتم تخزين جميع الملفات التي نحتاجها هناك) وتمكين الحفظ التلقائي:
vitis service add filespace /mnt/MyFavoriteDisk/Filespace/ vitis service set autosave yes
بدون الحفظ التلقائي ، يتطلب استخدام الأمر الفرعي "تعيين" علامة - حفظ إذا كنت تريد حفظ الملف المضافة في مساحة الملف.
علاوة على ذلك ، يمكنك إضافة العديد من مساحات الملفات وتغيير أولوياتها ، وقد يكون ذلك مفيدًا عندما يكون هناك الكثير من الملفات ويتم تخزينها على وسائط مختلفة. هنا لن أفكر في هذا الاحتمال ، حيث يمكن العثور على التفاصيل في مساعدة البرنامج.
هجرة نظام الملفات الدلالية
بطريقة أو بأخرى ، يمكن أن تنتقل في بعض الأحيان إلى دليل Vitis ومساحات الملفات من مكان إلى آخر. لتشغيله ، قمتُ بإنشاء أداة مساعدة منفصلة لتحرير الارتباطات يمكنها نقل روابط التحرير الشامل ، واستبدال أجزاء من المسار بأخرى:
cp -r /mnt/MyFavoriteDisk/Vitis/ ~/Vitis link-editor -d ~/Vitis/ -f /mnt/MyFavoriteDisk/Vitis/ -r ~/Vitis/ -R cp -r /mnt/MyFavoriteDisk/Filespace/ ~/MyFiles link-editor -d ~/Vitis/ -f /mnt/FlashDrive-256/Filespace/ -r ~/MyFiles -R
في الحالة الأولى ، بعد أن انتقلنا من / mnt / MyFavoriteDisk / Vitis / إلى الدليل الرئيسي ، يتم تحرير الروابط الرمزية المرتبطة بالأسماء المستعارة. في الحالة الثانية ، بعد تغيير موقع مساحة الملف ، تتغير جميع الروابط في Vitis إلى روابط جديدة وفقًا لطلب استبدال جزء من مسارها.
فئات السيارات
إذا قمت بتشغيل vitis service get autocategorization
، يمكنك أن ترى أن الإعداد الافتراضي للفئات التلقائية هو بالتنسيق (التنسيق والنوع) وامتداد الملف (ملحق).
يكون هذا مفيدًا ، على سبيل المثال ، عندما تحتاج إلى العثور على شيء ما بين ملفات PDF أو إلقاء نظرة على ما قمت بتخزينه من MOBI و FB2 ، يمكنك ببساطة تنفيذ الطلب
vitis show Format/MOBI u: Format/FB2
لقد حدث أن أدوات GNU / Linux القياسية مثل ملف أو mimetype لم تناسبني بالتحديد لأنها لا تحدد التنسيق بشكل صحيح دائمًا ، وكان عليّ أن أقوم بتنفيذ عملي على أساس توقيعات الملفات والإضافات. بشكل عام ، يعد موضوع تحديد تنسيقات الملفات موضوعًا مثيرًا للاهتمام للبحث ويستحق مقالة منفصلة. في الوقت الحالي ، يمكنني أن أقول أنه ، ربما بالنسبة لجميع التنسيقات في العالم ، قدمت اعترافًا حقيقيًا ، ولكن بشكل عام تعمل بشكل جيد في الوقت الحالي. صحيح ، يتم تعريف تنسيق EPUB الآن باسم ZIP (بشكل عام ، له ما يبرره ، ولكن في الممارسة العملية لا ينبغي اعتبار هذا سلوكًا عاديًا). حتى الآن ، ضع في الاعتبار هذه الميزة التجريبية ، والإبلاغ عن الأخطاء. في المواقف الغريبة ، يمكنك دائمًا استخدام الفئات حسب امتداد الملف ، على سبيل المثال ، Extension / epub.
في حالة تضمين الفئات التلقائية حسب التنسيق ، يتم تضمين الفئات التلقائية أيضًا ، وتجمع بعض التنسيقات حسب النوع: "المحفوظات" ، "الصور" ، "الفيديو" ، "الصوت" و "المستندات". سيتم أيضًا إنشاء أسماء مترجمة لهذه الفئات الفرعية.
ما لا يقال
تحولت vitis إلى أداة متعددة الجوانب للغاية ، ومن الصعب تغطية كل شيء مرة واحدة. أذكر بإيجاز ما يمكنك القيام به:
- يمكن حذف الفئات وإزالتها من الملفات ؛
- يمكن نسخ نتائج الاستعلام الخاصة بالتعبيرات إلى الدليل المحدد ؛
- يمكن تشغيل الملفات كبرنامج ؛
- يحتوي show command على العديد من الخيارات ، على سبيل المثال ، الفرز حسب الاسم / تاريخ التغيير أو الوصول / الحجم / التمديد ، وإظهار خصائص الملف ومسارات النسخ الأصلية ، وتشغيل عرض الملفات المخفية ، إلخ ؛
- عند حفظ الارتباطات إلى مصادر الإنترنت ، يمكنك أيضًا حفظ النسخ المحلية من صفحات HTML.
جميع التفاصيل يمكن العثور عليها في مساعدة المستخدم.
آفاق
في كثير من الأحيان ، يقول المشككون "لا أحد يضع هذه العلامات بنفسه". باستخدام مثالي ، يمكنني إثبات العكس: لقد قمت بالفعل بتصنيف أكثر من ستة آلاف ملف ، وأنشأت أكثر من ألف فئة وأسماء مستعارة ، وكان الأمر يستحق ذلك. عندما vitis open
قائمة بالشؤون الخاصة بك مع فريق vitis open
واحد vitis open
أو عندما vitis open LaTeX
كتاب Stolyarov عن نظام تخطيط LaTeX مع فريق vitis open LaTeX
، فمن الصعب أخلاقياً استخدام نظام الملفات "القديم".
على هذا الأساس ، ينشأ عدد من الأفكار. على سبيل المثال ، يمكنك إنشاء راديو تلقائي يشتمل على موسيقى مميزة وفقًا للطقس الحالي أو العطلة أو يوم الأسبوع أو الوقت من اليوم أو السنة. لا يزال بالقرب من الموضوع مشغل موسيقى يعرف الفئات ويمكنه تشغيل الموسيقى عن طريق التعبير عن العمليات على الفئات كما في المجموعات. من المفيد إنشاء برنامج خفي يقوم بتتبع دليل التنزيلات وعرض تصنيف الملفات الجديدة. حسنًا ، بالطبع ، يجب عليك إنشاء مدير ملفات رسومية عادي. بمجرد قيامي بإنشاء خدمة ويب للمؤسسة لمشاركة الملفات ، لكنها لم تكن أولوية وأصبحت غير ذات صلة ، رغم أنها وصلت إلى مستوى عالٍ من الأداء. (نظرًا للتغيرات الكبيرة في الالتهاب نفسه ، فإنه غير صالح للاستخدام بالفعل.)
استنتاج
إن Vitis ليست المحاولة الأولى لتغيير نمط العمل مع البيانات بشكل جذري ، لكنني اعتبرت أنه من المهم تنفيذ أفكاري ووضع التنفيذ في المجال العام تحت رخصة GNU GPL. للراحة ، تم إنشاء حزمة deb لـ x86-64 ، ويجب أن تعمل على جميع توزيعات دبيان الحديثة. في ARM ، كانت هناك صعوبات طفيفة (في حين أن جميع البرامج الأخرى المتعلقة بالتهاب تعمل بشكل جيد) ، ولكن في المستقبل ، سيتم تصميم حزمة عمل لهذه المنصة (armhf) أيضًا. لقد توقفت حتى الآن عن إنشاء حزم RPM نظرًا لوجود مشكلات في Fedora 30 وصعوبة الرش على العديد من توزيعات RPM ، ولكن في وقت لاحق ، سيتم إعداد حزم لبضعة منها على الأقل. في غضون ذلك ، يمكنك استخدام make && make install
أو checkinstall
.
شكرا لكم جميعا على اهتمامكم! آمل أن يكون هذا المقال وهذا المشروع مفيدًا.
رابط إلى مستودع المشروع