Kategoritë në vend të drejtorive, ose sistemi i skedarëve semantik për Linux

Vetë klasifikimi i të dhënave është një temë interesante kërkimore. Më pëlqen të mbledh informacione që duken të nevojshme, dhe gjithmonë jam përpjekur të krijoj hierarki logjike të drejtorive për skedarët e mi, dhe një ditë në ëndërr pashë një program të bukur dhe të përshtatshëm për caktimin e etiketave në skedarë dhe vendosa që nuk mund të jetoja si kjo më gjatë.

Problemi i sistemeve hierarkike të skedarëve

Përdoruesit shpesh ballafaqohen me problemin e zgjedhjes se ku të ruajnë skedarin e ri tjetër dhe problemin e gjetjes së skedarëve të tyre (nganjëherë emrat e skedarëve nuk synohen fare të mbahen mend nga një person).

Një rrugëdalje nga situata mund të jenë sistemet e skedarëve semantikë, të cilët zakonisht janë një shtesë e sistemit tradicional të skedarëve. Drejtoritë në to zëvendësohen nga atributet semantike, të quajtura gjithashtu etiketa, kategori dhe metadata. Do ta përdor më shpesh termin “kategori”, sepse... Në kontekstin e sistemeve të skedarëve, fjala "etiketë" ndonjëherë është pak e çuditshme, veçanërisht kur shfaqen "nën-etiketat" dhe "emërtet e etiketave".

Caktimi i kategorive për skedarë eliminon kryesisht problemin e ruajtjes dhe kërkimit të një skedari: nëse mbani mend (ose mendoni) të paktën një nga kategoritë e caktuara për një skedar, atëherë skedari nuk do të zhduket kurrë nga pamja.

Më parë, kjo temë u ngrit më shumë se një herë në Habré (kohë, два, tre, katër etj.), këtu unë përshkruaj zgjidhjen time.

Rruga drejt realizimit

Menjëherë pas ëndrrës së përmendur, përshkrova në fletoren time ndërfaqen e komandës që ofron punën e nevojshme me kategoritë. Pastaj vendosa që brenda një ose dy javësh të mund të shkruaja një prototip duke përdorur Python ose Bash, dhe më pas do të më duhej të punoja për të krijuar një guaskë grafike në Qt ose GTK. Realiteti, si gjithmonë, doli të ishte shumë më i ashpër dhe zhvillimi u vonua.

Ideja fillestare ishte që së pari të krijonim një program me një ndërfaqe komanduese të përshtatshme dhe koncize që do të krijonte, fshinte kategoritë, caktonte kategori skedarëve dhe fshinte kategoritë nga skedarët. E thirra programin Pëshpëritje.

Përpjekja e parë për të krijuar Pëshpëritje përfundoi me asgjë, pasi shumë kohë filloi të shpenzohej në punë dhe kolegj. Përpjekja e dytë ishte tashmë diçka: për tezën e masterit, arrita të përfundoja projektin e planifikuar dhe madje të bëja një prototip të guaskës GTK. Por ai version doli të ishte aq i pasigurt dhe i papërshtatshëm saqë duhej të rimendohej shumë.

Unë në fakt përdora vetë versionin e tretë për një kohë shumë të gjatë, pasi kisha transferuar disa mijëra skedarë të mi në kategori. Kjo u lehtësua shumë edhe nga përfundimi i zbatuar i bash-it. Por disa probleme, si mungesa e kategorive automatike dhe aftësia për të ruajtur skedarët me të njëjtin emër, mbetën ende, dhe programi tashmë ishte i përkulur nën kompleksitetin e tij. Kështu arrita në nevojën për të zgjidhur probleme komplekse të zhvillimit të softuerit: shkruani kërkesa të hollësishme, zhvilloni një sistem testimi funksional, studioni udhëzimet e paketimit dhe shumë më tepër. Tani kam arritur në planin tim, në mënyrë që ky krijim modest t'i paraqitet komunitetit të lirë. Menaxhimi specifik i skedarëve si menaxhimi përmes konceptit të kategorive ngre çështje dhe probleme të papritura dhe në zgjidhjen e tyre Pëshpëritje krijoi pesë projekte të tjera rreth vetes, disa prej të cilave do të përmenden në artikull. Deri tani Pëshpëritje Unë nuk kam blerë një guaskë grafike, por komoditeti i përdorimit të kategorive të skedarëve nga linja e komandës tashmë tejkalon për mua çdo avantazh të një menaxheri të rregullt skedari grafik.

Shembuj të përdorimit

Le të fillojmë thjesht - krijoni një kategori:

vitis create Музыка

Le t'i shtojmë disa përbërje si shembull:

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

Ju mund të shikoni përmbajtjen e kategorisë "Muzikë" duke përdorur nënkomandën "shfaq":

vitis show Музыка

Mund ta luani duke përdorur nënkomandën "hapur".

vitis open Музыка

Sepse Nëse kemi vetëm një skedar në kategorinë "Muzikë", atëherë vetëm ai do të hapet. Për qëllimin e hapjes së skedarëve me programet e tyre të paracaktuar, bëra një mjet të veçantë vts-fs-hapur (mjetet standarde si xdg-open ose mimeopen nuk më përshtaten për një sërë arsyesh; por, nëse ka ndonjë gjë, në cilësimet mund të specifikoni një mjet tjetër për hapjen e skedarit universal). Ky mjet funksionon mirë në shpërndarje të ndryshme me mjedise të ndryshme pune, prandaj rekomandoj ta instaloni së bashku me vitis.

Ju gjithashtu mund të specifikoni drejtpërdrejt programin për hapjen e skedarëve:

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

Kategoritë në vend të drejtorive, ose sistemi i skedarëve semantik për Linux

Le të krijojmë më shumë kategori dhe të shtojmë skedarë duke përdorur "caktimin". Nëse skedarët u caktohen kategorive që nuk ekzistojnë ende, ju kërkohet t'i krijoni ato. Një kërkesë e panevojshme mund të shmanget duke përdorur flamurin -po.

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

Tani duam të shtojmë kategorinë “Matematika” në skedarin “Paketa statistikore R: teoria e probabilitetit dhe statistikat matematikore.pdf”. Ne e dimë se ky skedar tashmë është i kategorizuar si "R" dhe për këtë arsye ne mund të përdorim rrugën e kategorisë nga sistemi Vitis:

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

Për fat të mirë, përfundimi i bash e bën këtë të lehtë.

Le të shohim se çfarë ndodhi, duke përdorur flamurin --categories për të parë një listë të kategorive për çdo skedar:

vitis show R --categories

Kategoritë në vend të drejtorive, ose sistemi i skedarëve semantik për Linux

Vini re se skedarët gjithashtu janë kategorizuar automatikisht sipas formatit, llojit (kombinon formatet) dhe shtrirjes së skedarit. Këto kategori mund të çaktivizohen nëse dëshironi. Më vonë do t'i lokalizoj patjetër emrat e tyre.

Le të shtojmë diçka tjetër në "Matematikë" për shumëllojshmëri:

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

Dhe tani gjërat bëhen interesante. Në vend të kategorive, mund të shkruani shprehje me veprimet e bashkimit, kryqëzimit dhe zbritjes, domethënë të përdorni veprime në grupe. Për shembull, kryqëzimi i "Math" me "R" do të rezultojë në një skedar.

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

Le të zbresim referencat për gjuhën "R" nga "Matematika":

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

Ne mund të kombinojmë pa qëllim muzikën dhe gjuhën R:

vitis show Музыка u: R

Flamuri -n ju lejon të "tërheqni" skedarët e kërkuar nga rezultati i kërkesës sipas numrave dhe/ose diapazoneve, për shembull, -n 3-7, ose diçka më e ndërlikuar: -n 1,5,8-10,13. Shpesh është i dobishëm me nënkomandën e hapur, e cila ju lejon të hapni skedarët e dëshiruar nga një listë.

Kategoritë në vend të drejtorive, ose sistemi i skedarëve semantik për Linux

Ndërsa ne po largohemi nga përdorimi i një hierarkie konvencionale të drejtorive, shpesh është e dobishme të kemi kategori të ndërlidhura. Le të krijojmë një nënkategori "Statistika" nën kategorinë "Matematikë" dhe ta shtojmë këtë kategori në skedarin e duhur:

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

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

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

Kategoritë në vend të drejtorive, ose sistemi i skedarëve semantik për Linux

Mund të shohim se ky skedar tani ka kategorinë "Matematikë/Statistika" në vend të "Matematikës" (lidhjet shtesë gjurmohen).

Adresimi i rrugës së plotë mund të jetë i papërshtatshëm, le të krijojmë një pseudonim "global":

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

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

Kategoritë në vend të drejtorive, ose sistemi i skedarëve semantik për Linux

Jo vetëm skedarë të rregullt

Lidhjet e internetit

Për të unifikuar ruajtjen e çdo informacioni, do të ishte e dobishme, së paku, të kategorizoheshin lidhjet me burimet e internetit. Dhe kjo është e mundur:

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

Një skedar do të krijohet në një vend të veçantë me kokën e faqes HTML dhe shtesën .desktop. Ky është formati tradicional i shkurtoreve në GNU/Linux. Shkurtore të tilla kategorizohen automatikisht si faqeshënues të rrjetit.

Natyrisht, shkurtoret janë krijuar për t'u përdorur:

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

Ekzekutimi i komandës bën që lidhja e sapo ruajtur të hapet në shfletues. Shkurtoret e kategorizuara për burimet e internetit mund të shërbejnë si zëvendësim për faqeshënuesit e shfletuesit.

Fragmente skedari

Është gjithashtu e dobishme që të ketë kategori për pjesë të veçanta të skedarëve. Nuk është një kërkesë e keqe, apo jo? Por zbatimi aktual deri më tani prek vetëm skedarët me tekst të thjeshtë, skedarët audio dhe video. Le të themi se duhet të shënoni një pjesë të caktuar të një koncerti ose një moment qesharak në një film, pastaj kur përdorni caktimin mund të përdorni flamujt -fragname, -start, -finish. Le ta ruajmë mbrojtësin e ekranit nga "DuckTales":

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

vitis open Заставки

Në realitet, nuk ndodh asnjë prerje e skedarit; në vend të kësaj, krijohet një skedar tregues në fragment, i cili përshkruan llojin e skedarit, shtegun për në skedar, fillimin dhe fundin e fragmentit. Krijimi dhe hapja e treguesve në fragmente u delegohet shërbimeve që kam bërë posaçërisht për këto qëllime - këto janë mediafragmenter dhe fragplayer. E para krijon, e dyta hapet. Në rastin e regjistrimeve audio dhe video, skedari i medias lëshohet nga një pozicion i caktuar në një pozicion të caktuar duke përdorur luajtësin VLC, kështu që duhet të jetë gjithashtu në sistem. Në fillim doja ta bëja këtë bazuar në mplayer, por për disa arsye ishte shumë e shtrembër me pozicionimin në momentin e duhur.
Në shembullin tonë, skedari "Duck Tales intro.fragpointer" krijohet (ai vendoset në një vend të veçantë), dhe më pas luhet një fragment nga fillimi i skedarit (pasi –start nuk ishte specifikuar gjatë krijimit) deri në 59 shenjë e dytë, pas së cilës VLC mbyllet.

Një shembull tjetër është kur vendosëm të kategorizonim një performancë të vetme në një koncert nga një artist i famshëm:

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

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

Kur hapet, skedari do të përfshihet në pozicionin e dëshiruar dhe do të mbyllet pas katër minutash e gjysmë.

Si funksionon gjithçka + veçori shtesë

Ruajtja e kategorive

Që në fillim të të menduarit për organizimin e një sistemi skedarësh semantik, erdhën në mendje tre mënyra: përmes ruajtjes së lidhjeve simbolike, përmes një baze të dhënash, përmes një përshkrimi në XML. Metoda e parë fitoi, sepse... nga njëra anë, është e lehtë për t'u zbatuar, dhe nga ana tjetër, përdoruesi ka mundësinë të shikojë kategoritë drejtpërdrejt nga sistemi i skedarëve (dhe kjo është e përshtatshme dhe e rëndësishme). Në fillim të përdorimit Pëshpëritje Drejtoria "Vitis" dhe skedari i konfigurimit ".config/vitis/vitis.conf" krijohen në direktorinë kryesore të përdoruesit. Drejtoritë që korrespondojnë me kategoritë krijohen në ~/Vitis dhe lidhjet simbolike me skedarët origjinal krijohen në drejtoritë e këtyre kategorive. Pseudonimet e kategorive janë gjithashtu vetëm lidhje me to. Sigurisht, prania e drejtorisë "Vitis" në drejtorinë kryesore mund të mos u përshtatet disa njerëzve. Mund të kalojmë në çdo vend tjetër:

vitis service set path /mnt/MyFavoriteDisk/Vitis/

Në një moment të caktuar, bëhet e qartë se ka pak kuptim të kategorizoni skedarët e shpërndarë në vende të ndryshme, pasi vendndodhja e tyre mund të ndryshojë. Prandaj, për të filluar, unë krijova një drejtori për veten time, ku hudha marrëzi gjithçka dhe i dhashë të gjitha kategoritë. Më pas vendosa që do të ishte mirë ta zyrtarizoja këtë moment në nivel programi. Kështu u shfaq koncepti i "hapësirës së skedarit". Në fillim të përdorimit Pëshpëritje Nuk do të dëmtonte të vendosnim menjëherë një vendndodhje të tillë (të gjithë skedarët që na duhen do të ruhen atje) dhe të aktivizoni ruajtjen automatike:

vitis service add filespace /mnt/MyFavoriteDisk/Filespace/

vitis service set autosave yes

Pa ruajtje automatike, kur përdorni nënkomandën "caktoni", do të kërkohet flamuri --save nëse dëshironi të ruani skedarin e shtuar në hapësirën e skedarit.

Për më tepër, mund të shtoni disa hapësira skedarësh dhe të ndryshoni përparësitë e tyre; kjo mund të jetë e dobishme kur ka shumë skedarë dhe ato ruhen në media të ndryshme. Unë nuk do ta konsideroj këtë mundësi këtu; detajet mund të gjenden në ndihmën e programit.

Migrimi i sistemit të skedarëve semantik

Gjithsesi, drejtoria Vitis dhe hapësirat e skedarëve teorikisht ndonjëherë mund të lëvizin nga një vend në tjetrin. Për ta bërë atë të funksionojë, unë krijova një mjet të veçantë redaktues lidhjesh, i cili mund të modifikojë në masë lidhjet, duke zëvendësuar pjesë të shtegut me të tjera:

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

Në rastin e parë, pasi të kemi kaluar nga /mnt/MyFavoriteDisk/Vitis/ në direktoriumin kryesor, lidhjet simbolike të lidhura me pseudonimet redaktohen. Në rastin e dytë, pas ndryshimit të vendndodhjes së hapësirës së skedarëve, të gjitha lidhjet në Vitis ndërrohen në të reja në përputhje me kërkesën për zëvendësimin e një pjese të rrugës së tyre.

Kategoritë automatike

Nëse ekzekutoni komandën vitis service get autocategorization, mund të shihni se si parazgjedhje, kategoritë automatike caktohen sipas formatit (Formati dhe Lloji) dhe zgjerimi i skedarit (Zgjerimi).

Kjo është e dobishme kur, për shembull, ju duhet të gjeni diçka midis PDF-ve ose të shikoni atë që keni ruajtur nga EPUB dhe FB2, thjesht mund të ekzekutoni kërkesën

vitis show Format/MOBI u: Format/FB2

Thjesht ndodhi që mjetet standarde të GNU/Linux si skedari ose tipi mime nuk më përshtateshin pikërisht sepse ato jo gjithmonë e përcaktojnë saktë formatin; më duhej të bëja zbatimin tim bazuar në nënshkrimet dhe shtesat e skedarëve. Në përgjithësi, tema e përcaktimit të formateve të skedarëve është një temë interesante për kërkime dhe meriton një artikull të veçantë. Tani për tani mund të them se ndoshta nuk kam dhënë njohje të vërtetë për të gjitha formatet në botë, por në përgjithësi tashmë po funksionon mirë. Vërtetë, EPUB tani e përcakton formatin si ZIP (në përgjithësi, kjo është e justifikuar, por në praktikë kjo nuk duhet të konsiderohet sjellje normale). Për momentin, konsiderojeni këtë veçori eksperimentale dhe raportoni çdo defekt. Në situata të çuditshme, gjithmonë mund të përdorni kategoritë e shtesave të skedarëve, për shembull, Extension/epub.

Nëse aktivizohen autokategori sipas formatit, aktivizohen edhe autokategori që grupojnë disa formate sipas llojit: "Arkivat", "Fotot", "Video", "Audio" dhe "Dokumentet". Për këto nënkategori do të bëhen edhe emra të lokalizuar.

Çfarë nuk thuhet

Pëshpëritje Doli të ishte një mjet shumë i shumëanshëm dhe është e vështirë të mbulosh gjithçka menjëherë. Më lejoni të përmend shkurtimisht se çfarë tjetër mund të bëni:

  • kategoritë mund të fshihen dhe hiqen nga skedarët;
  • rezultatet e pyetjeve të shprehjes mund të kopjohen në drejtorinë e specifikuar;
  • skedarët mund të ekzekutohen si programe;
  • Komanda show ka shumë opsione, për shembull, renditje sipas emrit/datës së modifikimit ose aksesit/madhësive/shtresës, shfaqjes së vetive të skedarit dhe shtigjeve drejt origjinaleve, duke mundësuar shfaqjen e skedarëve të fshehur, etj.;
  • Kur ruani lidhje me burimet e internetit, mund të ruani gjithashtu kopje lokale të faqeve HTML.

Detajet e plota mund të gjenden në ndihmën e përdoruesit.

Perspektivat

Skeptikët shpesh thonë se "askush nuk do t'i vendosë vetë këto etiketa". Duke përdorur shembullin tim, mund të vërtetoj të kundërtën: Unë kam kategorizuar tashmë më shumë se gjashtë mijë skedarë, kam krijuar më shumë se një mijë kategori dhe pseudonime, dhe ia vlente. Kur një ekip vitis open План hapni listën tuaj të detyrave ose kur me një komandë vitis open LaTeX Kur hapni librin e Stolyarov në lidhje me sistemin e paraqitjes LaTeX, tashmë është moralisht e vështirë të përdoret sistemi i skedarëve "në mënyrë të modës së vjetër".

Mbi këtë bazë, lindin një sërë idesh. Për shembull, mund të krijoni një radio automatike që aktivizon muzikën tematike sipas motit aktual, festës, ditës së javës, orës së ditës ose vitit. Edhe më afër temës është një riprodhues muzikor që di për kategoritë dhe mund të luajë muzikë me shprehje me operacione në kategori si në grupe. Është e dobishme të krijoni një demon që do të monitorojë direktorinë "Shkarkime" dhe do të ofrojë kategorizimin e skedarëve të rinj. Dhe, sigurisht, ne duhet të bëjmë një menaxher normal të skedarëve semantik grafik. Njëherë e një kohë kam krijuar edhe një shërbim në internet për ndërmarrjen për përdorimin kolektiv të skedarëve, por ai nuk ishte prioritet dhe u bë i parëndësishëm, megjithëse arriti një nivel të lartë të performancës. (Për shkak të ndryshimeve të mëdha në Pëshpëritje, nuk është më i përdorshëm.)

këtu është një demonstrim i vogël

Kategoritë në vend të drejtorive, ose sistemi i skedarëve semantik për Linux

Përfundim

Vitis nuk është përpjekja e parë për të ndryshuar rrënjësisht stilin e punës me të dhënat, por e konsiderova të rëndësishme zbatimin e ideve të mia dhe ta bëj zbatimin publikisht nën licencën GNU GPL. Për lehtësi, është krijuar një paketë deb për x86-64; ajo duhet të funksionojë në të gjitha shpërndarjet moderne të Debian. Vështirësi të vogla ka pasur në ARM (ndërsa të gjitha programet e tjera kanë të bëjnë me Pëshpëritje, punon mirë), por në të ardhmen do të përpilohet një paketë pune për këtë platformë (armhf). Unë kam ndaluar së krijuari paketa RPM për momentin për shkak të problemeve në Fedora 30 dhe vështirësisë së përhapjes në shumë shpërndarje RPM, por paketat e mëvonshme do të bëhen ende për të paktën disa prej tyre. Ndërkohë mund të përdorni make && make install ose checkinstall.

Faleminderit të gjithëve për vëmendjen tuaj! Shpresoj se ky artikull dhe ky projekt mund të jenë të dobishëm.

Lidhja me depon e projektit

Burimi: www.habr.com

Shto një koment