Kateqoriyalar əvəzinə qovluqlar və ya Linux üçün Semantik Fayl Sistemi

Məlumatların təsnifatı özü maraqlı bir araşdırma mövzusudur. Mən lazımlı görünən məlumat toplamağı sevirəm və həmişə fayllarım üçün məntiqi kataloq iyerarxiyaları yaratmağa çalışmışam və bir gün yuxumda fayllara etiketlər təyin etmək üçün gözəl və rahat proqram gördüm və qərara gəldim ki, yaşaya bilməyəcəm. daha belə.

İerarxik fayl sistemləri problemi

İstifadəçilər tez-tez növbəti yeni faylın harada saxlanacağını seçmək problemi və öz fayllarını tapmaq problemi ilə üzləşirlər (bəzən fayl adları heç də insanın yaddaşında qalması üçün nəzərdə tutulmur).

Vəziyyətdən çıxış yolu adətən ənənəvi fayl sisteminə əlavə olan semantik fayl sistemləri ola bilər. Onlardakı qovluqlar semantik atributlarla əvəz olunur, həmçinin teqlər, kateqoriyalar və metadata adlanır. Mən “kateqoriya” terminindən daha tez-tez istifadə edəcəyəm, çünki... Fayl sistemləri kontekstində "teq" sözü bəzən bir az qəribə olur, xüsusən də "alt etiketlər" və "teq ləqəbləri" görünəndə.

Fayllara kateqoriyaların təyin edilməsi faylın saxlanması və axtarışı problemini böyük ölçüdə aradan qaldırır: əgər fayla təyin edilmiş kateqoriyalardan ən azı birini xatırlayırsınızsa (və ya təxmin edirsinizsə), o zaman fayl heç vaxt gözdən itməyəcək.

Əvvəllər bu mövzu Habré-də dəfələrlə qaldırılmışdı (vaxt, два, üç, dördüncü və s.), burada mən öz həllimi təsvir edirəm.

Reallaşmaya gedən yol

Sözügedən yuxudan dərhal sonra dəftərimdə kateqoriyalarla lazımi işi təmin edən komanda interfeysini təsvir etdim. Sonra qərara gəldim ki, bir və ya iki həftədən sonra Python və ya Bash istifadə edərək prototip yaza bilərəm və sonra Qt və ya GTK-da qrafik qabıq yaratmaq üzərində işləməli olacağam. Reallıq, həmişə olduğu kimi, daha sərt oldu və inkişaf ləngidi.

Orijinal ideya, ilk növbədə, kateqoriyalar yaradan, silən, fayllara kateqoriyalar təyin edən və fayllardan kateqoriyaları silən rahat və qısa əmr xətti interfeysi ilə proqram hazırlamaq idi. Proqrama zəng etdim vitis.

Yaratmaq üçün ilk cəhd vitis heç bir nəticə vermədi, çünki işə və kollecdə çox vaxt sərf olunmağa başladı. İkinci cəhd artıq bir şey idi: magistr dissertasiyası üçün mən planlaşdırılan layihəni tamamlaya bildim və hətta GTK qabığının prototipini hazırladım. Ancaq bu versiya o qədər etibarsız və əlverişsiz oldu ki, çox şey yenidən nəzərdən keçirilməli oldu.

Bir neçə min faylımı kateqoriyalara köçürərək üçüncü versiyanı özüm çox uzun müddət istifadə etdim. Bu da həyata keçirilən bash tamamlanması ilə çox kömək etdi. Ancaq avtomatik kateqoriyaların olmaması və eyni adlı faylları saxlamaq imkanı kimi bəzi problemlər hələ də qaldı və proqram artıq öz mürəkkəbliyi altında əyilmişdi. Mürəkkəb proqram təminatının yaradılması problemlərini həll etmək ehtiyacına belə gəldim: ətraflı tələblər yazmaq, funksional sınaq sistemini hazırlamaq, qablaşdırma təlimatlarını öyrənmək və s. Mən indi öz planıma çatdım ki, bu təvazökar yaradılış azad cəmiyyətə təqdim olunsun. Kateqoriyalar konsepsiyası vasitəsilə idarəetmə kimi xüsusi fayl idarəçiliyi gözlənilməz problemlər və problemlər yaradır və onların həllində vitis öz ətrafında daha beş layihə yaratdı, onlardan bəziləri məqalədə qeyd olunacaq. İndiyə kimi vitis Qrafik qabığı almamışam, lakin komanda xəttindən fayl kateqoriyalarından istifadənin rahatlığı mənim üçün adi qrafik fayl menecerinin üstünlüklərindən artıqdır.

İstifadə nümunələri

Sadə başlayaq - kateqoriya yaradın:

vitis create Музыка

Nümunə olaraq ona bəzi kompozisiya əlavə edək:

vitis assign Музыка -f "The Ink Spots - I Don't Want To Set The World On Fire.mp3"

Siz “göstər” alt əmrindən istifadə edərək “Musiqi” kateqoriyasının məzmununa baxa bilərsiniz:

vitis show Музыка

Siz onu "açıq" alt əmrindən istifadə edərək oynaya bilərsiniz.

vitis open Музыка

Çünki "Musiqi" kateqoriyasında yalnız bir faylımız varsa, o zaman yalnız o işə başlayacaq. Faylları standart proqramları ilə açmaq məqsədi ilə ayrı bir yardım proqramı hazırladım vts-fs-açıq (xdg-open və ya mimeopen kimi standart alətlər bir sıra səbəblərə görə mənə uyğun gəlmədi; lakin, əgər varsa, parametrlərdə universal fayl açılması üçün başqa bir yardım proqramı təyin edə bilərsiniz). Bu yardım proqramı müxtəlif iş mühitləri ilə müxtəlif paylamalarda yaxşı işləyir, ona görə də onu vitis ilə birlikdə quraşdırmağı məsləhət görürəm.

Siz həmçinin faylları açmaq üçün proqramı birbaşa təyin edə bilərsiniz:

vitis open Музыка --app qmmp

Kateqoriyalar əvəzinə qovluqlar və ya Linux üçün Semantik Fayl Sistemi

Gəlin daha çox kateqoriya yaradaq və “təyin et”dən istifadə edərək fayllar əlavə edək. Fayllar hələ mövcud olmayan kateqoriyalara təyin edilirsə, sizdən onları yaratmağınız təklif olunur. -yes bayrağından istifadə etməklə lazımsız sorğunun qarşısını almaq olar.

vitis assign Программирование R -f "Введение в R.pdf" "Статистический пакет R: теория вероятностей и матстатистика.pdf" --yes

İndi biz “Riyaziyyat” kateqoriyasını “Statistik paket R: ehtimal nəzəriyyəsi və riyazi statistika.pdf” faylına əlavə etmək istəyirik. Biz bilirik ki, bu fayl artıq "R" kateqoriyasına salınıb və buna görə də Vitis sistemindən kateqoriya yolundan istifadə edə bilərik:

vitis assign Математика -v "R/Статистический пакет R: теория вероятностей и матстатистика.pdf"

Xoşbəxtlikdən, bash tamamlama bunu asanlaşdırır.

Hər bir fayl üçün kateqoriyaların siyahısını görmək üçün --categories bayrağından istifadə edərək nə baş verdiyini görək:

vitis show R --categories

Kateqoriyalar əvəzinə qovluqlar və ya Linux üçün Semantik Fayl Sistemi

Qeyd edək ki, fayllar format, tip (formatları birləşdirir) və fayl uzantısına görə avtomatik olaraq kateqoriyalara bölünür. İstənilən halda bu kateqoriyalar deaktiv edilə bilər. Daha sonra onların adlarını mütləq lokallaşdıracağam.

Müxtəliflik üçün “Riyaziyyat”a başqa bir şey əlavə edək:

vitis assign Математика -f "Математический анализ - 1984.pdf" Перельман_Занимательная_математика_1927.djvu 

Və indi işlər maraqlı olur. Kateqoriyaların yerinə birləşmə, kəsişmə və çıxma əməliyyatları ilə ifadələr yazmaq, yəni çoxluqlar üzərində əməliyyatlardan istifadə etmək olar. Məsələn, "Riyaziyyat" ilə "R" kəsişməsi bir faylla nəticələnəcək.

vitis show R i: Математика

Riyaziyyatdan “R” dilinə istinadları çıxaraq:

vitis show Математика  R  #или vitis show Математика c: R

Biz musiqi ilə R dilini məqsədsiz birləşdirə bilərik:

vitis show Музыка u: R

-n bayrağı sizə tələb olunan faylları sorğu nəticəsindən nömrələr və/yaxud diapazonlar üzrə “çıxarmağa” imkan verir, məsələn, -n 3-7və ya daha mürəkkəb bir şey: -n 1,5,8-10,13. Çox vaxt siyahıdan istədiyiniz faylları açmağa imkan verən açıq alt komanda ilə faydalıdır.

Kateqoriyalar əvəzinə qovluqlar və ya Linux üçün Semantik Fayl Sistemi

Adi kataloq iyerarxiyasından istifadə etməkdən uzaqlaşsaq da, iç-içə kateqoriyalara sahib olmaq çox vaxt faydalıdır. Gəlin “Riyaziyyat” kateqoriyası altında “Statistika” altkateqoriyasını yaradaq və bu kateqoriyanı müvafiq fayla əlavə edək:

vitis create Математика/Статистика

vitis assign Математика/Статистика -v "R/Введение в R.pdf"

vitis show Математика --categories

Kateqoriyalar əvəzinə qovluqlar və ya Linux üçün Semantik Fayl Sistemi

Görə bilərik ki, bu faylda indi “Riyaziyyat” əvəzinə “Riyaziyyat/Statistika” kateqoriyası var (əlavə keçidlər izlənilir).

Tam yola müraciət etmək əlverişsiz ola bilər, gəlin “qlobal” ləqəb yaradaq:

vitis assign Математика/Статистика -a Статистика

vitis show Статистика

Kateqoriyalar əvəzinə qovluqlar və ya Linux üçün Semantik Fayl Sistemi

Yalnız adi fayllar deyil

İnternet bağlantıları

Hər hansı bir məlumatın saxlanmasını birləşdirmək üçün, ən azı, İnternet resurslarına keçidləri təsnif etmək faydalı olardı. Və bu mümkündür:

vitis assign Хабр Цветоаномалия -i https://habr.com/ru/company/sfe_ru/blog/437304/ --yes

HTML səhifəsinin başlığı və .desktop genişlənməsi ilə xüsusi yerdə fayl yaradılacaq. Bu, GNU/Linux-da ənənəvi qısa yol formatıdır. Belə qısa yollar avtomatik olaraq ŞəbəkəBookmarks kimi təsnif edilir.

Təbii ki, istifadə etmək üçün qısa yollar yaradılır:

vitis open Цветоаномалия

Əmrin yerinə yetirilməsi yeni saxlanmış linkin brauzerdə açılmasına səbəb olur. İnternet mənbələrinə təsnif edilmiş qısa yollar brauzer əlfəcinlərini əvəz edə bilər.

Fayl fraqmentləri

Ayrı-ayrı fayl parçaları üçün kateqoriyaların olması da faydalıdır. Pis xahiş deyil, hə? Ancaq indiyə qədər mövcud tətbiq yalnız düz mətn fayllarına, audio və video fayllarına təsir göstərir. Tutaq ki, konsertin müəyyən hissəsini və ya filmdə gülməli anı qeyd etmək lazımdır, sonra assign istifadə edərkən -fragname, -start, -finish bayraqlarından istifadə edə bilərsiniz. Gəlin "DuckTales" dən ekran qoruyucusunu saxlayaq:

vitis assign vitis assign -c Заставки -f Duck_Tales/s01s01.avi --finish 00:00:59 --fragname "Duck Tales intro"

vitis open Заставки

Reallıqda heç bir fayl kəsilməsi baş vermir, bunun əvəzinə fraqmentə bir göstərici faylı yaradılır, bu fayl tipini, faylın yolunu, fraqmentin başlanğıcını və sonunu təsvir edir. Fraqmentlərə göstəricilərin yaradılması və açılması mənim bu məqsədlər üçün xüsusi olaraq hazırladığım utilitlərə həvalə edilmişdir - bunlar mediafragmenter və fragplayerdir. Birincisi yaradır, ikincisi açılır. Audio və video qeydləri vəziyyətində, media faylı VLC pleyerindən istifadə edərək müəyyən bir mövqedən müəyyən bir mövqeyə işə salınır, buna görə də sistemdə olmalıdır. Əvvəlcə bunu mplayer əsasında etmək istəyirdim, amma nədənsə bu, lazımi anda yerləşdirmə ilə çox əyri idi.
Bizim nümunəmizdə “Duck Tales intro.fragpointer” faylı yaradılır (xüsusi yerə yerləşdirilir) və sonra fraqment faylın əvvəlindən (yaratarkən –start göstərilmədiyi üçün) 59-a qədər səsləndirilir. ikinci işarə, bundan sonra VLC bağlanır.

Başqa bir misal, məşhur bir sənətçinin konsertindəki tək çıxışı kateqoriyalara ayırmaq qərarına gəldiyimiz zamandır:

vitis assign Лепс "Спасите наши души" -f Григорий Лепc - Концерт Парус - песни Владимира Высоцкого.mp4 --fragname "Спасите наши души" --start 00:32:18 --finish 00:36:51

vitis open "Спасите наши души"

Açılan zaman fayl istədiyiniz mövqeyə daxil ediləcək və dörd yarım dəqiqədən sonra bağlanacaq.

Hamısı necə işləyir + əlavə xüsusiyyətlər

Kateqoriyaların saxlanması

Semantik fayl sisteminin təşkili haqqında düşünməyə başlayanda ağla üç yol gəldi: simvolik bağlantıların saxlanması, verilənlər bazası vasitəsilə, XML-də təsvir vasitəsilə. Birinci üsul qalib gəldi, çünki... bir tərəfdən, həyata keçirmək asandır, digər tərəfdən, istifadəçi kateqoriyalara birbaşa fayl sistemindən baxmaq imkanına malikdir (və bu, rahat və vacibdir). İstifadənin əvvəlində vitis “Vitis” kataloqu və “.config/vitis/vitis.conf” konfiqurasiya faylı istifadəçinin ev kataloqunda yaradılmışdır. Kateqoriyalara uyğun olan kataloqlar ~/Vitis-də yaradılır və bu kateqoriya kataloqlarında orijinal fayllara simvolik keçidlər yaradılır. Kateqoriya ləqəbləri də onlara sadəcə keçidlərdir. Əlbəttə ki, ev kataloqunda "Vitis" kataloqunun olması bəzi insanlara uyğun gəlməyə bilər. İstənilən başqa yerə keçə bilərik:

vitis service set path /mnt/MyFavoriteDisk/Vitis/

Müəyyən bir nöqtədə aydın olur ki, müxtəlif yerlərə səpələnmiş faylları təsnif etməyin mənası yoxdur, çünki onların yeri dəyişə bilər. Buna görə də, başlamaq üçün özüm üçün bir kataloq yaratdım, burada axmaqcasına hər şeyi atdım və bütün kateqoriyaları verdim. Sonra qərara gəldim ki, bu anı proqram səviyyəsində rəsmiləşdirmək yaxşı olardı. “Fayl sahəsi” anlayışı belə ortaya çıxdı. İstifadənin əvvəlində vitis Dərhal belə bir yeri qurmaq zərər verməz (lazım olan bütün fayllar orada saxlanacaq) və avtomatik saxlamağı aktivləşdirin:

vitis service add filespace /mnt/MyFavoriteDisk/Filespace/

vitis service set autosave yes

Avtomatik saxlama olmadan, "təyin et" alt əmrindən istifadə edərkən, əlavə edilmiş faylı fayl sahəsinə saxlamaq istəyirsinizsə, --save bayrağı tələb olunacaq.

Bundan əlavə, siz bir neçə fayl sahəsi əlavə edə və onların prioritetlərini dəyişə bilərsiniz; bu, çoxlu fayl olduqda və onlar müxtəlif mediada saxlandıqda faydalı ola bilər. Mən burada bu ehtimalı nəzərdən keçirməyəcəm, təfərrüatları proqramın yardımında tapa bilərsiniz.

Semantik Fayl Sistemi Miqrasiyası

Hər halda, Vitis kataloqu və fayl boşluqları nəzəri olaraq bəzən bir yerdən yerə keçə bilər. Bunun işləməsi üçün ayrıca bir yardım proqramı yaratdım keçid redaktoru, keçidləri toplu şəkildə redaktə edə, yolun hissələrini başqaları ilə əvəz edə bilər:

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

Birinci halda, biz /mnt/MyFavoriteDisk/Vitis/-dən ev kataloquna köçdükdən sonra ləqəblərlə əlaqəli simvolik keçidlər redaktə edilir. İkinci halda, fayl sahəsinin yerini dəyişdirdikdən sonra, Vitis-dəki bütün bağlantılar, yolunun bir hissəsini dəyişdirmək tələbinə uyğun olaraq yenilərinə dəyişdirilir.

Avtomatik kateqoriyalar

Əgər əmri icra etsəniz vitis service get autocategorization, görə bilərsiniz ki, standart olaraq avtomatik kateqoriyalar format (Format və Növ) və fayl uzantısı (Genişləndirmə) ilə təyin edilir.

Bu, məsələn, PDF-lər arasında bir şey tapmaq və ya EPUB və FB2-dən saxladıqlarınıza baxmaq lazım olduqda faydalıdır, sadəcə sorğunu icra edə bilərsiniz.

vitis show Format/MOBI u: Format/FB2

Elə oldu ki, fayl və ya mimetip kimi standart GNU/Linux alətləri mənə tam uyğun gəlmədi, çünki onlar həmişə formatı düzgün təyin etmirlər; mən fayl imzaları və uzantıları əsasında öz tətbiqimi etməli oldum. Ümumiyyətlə, fayl formatlarının müəyyən edilməsi mövzusu tədqiqat üçün maraqlı mövzudur və ayrıca məqaləyə layiqdir. Hələlik deyə bilərəm ki, bəlkə də mən dünyada bütün formatlar üçün həqiqi tanınma təmin etməmişəm, amma ümumilikdə o, artıq yaxşı işləyir. Düzdür, EPUB indi formatı ZIP kimi müəyyən edir (ümumiyyətlə bu, haqlıdır, lakin praktikada bu normal davranış sayılmamalıdır). Hələlik bu funksiyanı eksperimental hesab edin və hər hansı səhvləri bildirin. Qəribə hallarda siz həmişə fayl uzantısı kateqoriyalarından istifadə edə bilərsiniz, məsələn, Extension/epub.

Format üzrə avtokateqoriyalar aktivləşdirilibsə, bəzi formatları növə görə qruplaşdıran avtokateqoriyalar da aktivləşdirilir: “Arxivlər”, “Şəkillər”, “Video”, “Audio” və “Sənədlər”. Bu alt kateqoriyalar üçün lokallaşdırılmış adlar da ediləcək.

Nə deyilmir

vitis Çox yönlü bir vasitə olduğu ortaya çıxdı və hər şeyi bir anda əhatə etmək çətindir. Başqa nə edə biləcəyinizi qısaca qeyd edim:

  • kateqoriyalar silinə və fayllardan silinə bilər;
  • ifadə sorğularının nəticələri göstərilən kataloqa kopyalana bilər;
  • faylları proqramlar kimi işlətmək olar;
  • Şou əmrinin bir çox variantları var, məsələn, adı/dəyişiklik tarixi və ya giriş/ölçüsü/uzantısı üzrə çeşidləmə, fayl xassələrinin və orijinallara gedən yolların göstərilməsi, gizli faylların nümayişinə imkan verilməsi və s.;
  • İnternet mənbələrinə keçidləri saxladığınız zaman HTML səhifələrinin yerli nüsxələrini də saxlaya bilərsiniz.

Tam təfərrüatları istifadəçi yardımında tapa bilərsiniz.

Perspektivləri

Skeptiklər tez-tez deyirlər ki, "heç kim bu etiketləri özləri təyin etməyəcək". Öz nümunəmlə bunun əksini sübut edə bilərəm: mən artıq altı mindən çox faylı kateqoriyalara ayırmışam, mindən çox kateqoriya və ləqəb yaratmışam və buna dəyərdi. Bir komanda olanda vitis open План işlər siyahısını açın və ya bir əmrlə vitis open LaTeX Stolyarovun LaTeX layout sistemi haqqında kitabını açdığınız zaman fayl sistemindən “köhnə üslubda” istifadə etmək artıq mənəvi cəhətdən çətindir.

Bunun əsasında bir sıra fikirlər yaranır. Məsələn, cari havaya, bayrama, həftənin gününə, günün və ya ilin vaxtına uyğun olaraq tematik musiqini yandıran avtomatik radio hazırlaya bilərsiniz. Mövzuya daha da yaxın olan, kateqoriyalar haqqında bilən musiqi pleyeridir və dəstlərdə olduğu kimi kateqoriyalar üzrə əməliyyatlarla ifadə ilə musiqi ifa edə bilir. "Yükləmələr" qovluğuna nəzarət edəcək və yeni faylları kateqoriyalara ayırmağı təklif edəcək bir demon hazırlamaq faydalıdır. Və təbii ki, biz normal qrafik semantik fayl meneceri etməliyik. Bir vaxtlar mən hətta faylların kollektiv istifadəsi üçün müəssisə üçün veb-servis yaratdım, lakin bu, prioritet deyildi və yüksək performansa nail olsa da, əhəmiyyətsiz oldu. (Əsas dəyişikliklərə görə vitis, artıq istifadə edilə bilməz.)

burada kiçik bir demo var

Kateqoriyalar əvəzinə qovluqlar və ya Linux üçün Semantik Fayl Sistemi

Nəticə

Vit məlumatlarla iş üslubunu kökündən dəyişdirmək üçün ilk cəhd deyil, lakin mən öz ideyalarımı həyata keçirməyi və həyata keçirilməsini GNU GPL lisenziyası altında ictimaiyyətə təqdim etməyi vacib hesab etdim. Rahatlıq üçün x86-64 üçün deb paketi hazırlanmışdır; o, bütün müasir Debian paylamalarında işləməlidir. ARM-də kiçik çətinliklər var idi (bütün digər proqramlar ilə əlaqəli olsa da vitis, yaxşı işləyir), lakin gələcəkdə bu platforma (armhf) üçün iş paketi tərtib ediləcəkdir. Fedora 30-dakı problemlər və bir çox RPM paylamalarına yayılma çətinliyi səbəbindən RPM paketləri yaratmağı dayandırdım, lakin sonradan paketlər hələ də onlardan ən azı bir neçəsi üçün hazırlanacaq. Bu arada istifadə edə bilərsiniz make && make install və ya checkinstall.

Diqqətiniz üçün hamınıza təşəkkür edirik! Ümid edirəm ki, bu məqalə və bu layihə faydalı ola bilər.

Layihə deposuna keçid

Mənbə: www.habr.com

Добавить комментарий