Kategooriad asemel kataloogid, vĂ”i Semantilise failisĂŒsteemi rakendamine Linuxile

Andmete klassifitseerimine on iseenesest huvitav uurimisteema. Mulle meeldib koguda teavet, mis tundub vajalik, ja olen alati pĂŒĂŒdnud luua loogilisi kataloogihierarhiaid oma failide jaoks. Ühel Ă”htul nĂ€gin unenĂ€os kaunist ja mugavat programmi failidele siltide kinnitamiseks ning otsustasin, et sedasi elada ei saa.

Hierarhiliste failisĂŒsteemide probleem

Kasutajad puutuvad sageli kokku probleemiga, kus valida, kuhu salvestada uus fail, ja probleemiga leida oma faile (mÔnikord ei ole failide nimed isegi inimese jaoks meeldejÀtmiseks mÔeldud).

Lahenduseks vĂ”ivad olla semantilised failisĂŒsteemid, mis on tavaliselt traditsioonilise failisĂŒsteemi tĂ€iendus. Nendes asendatakse kaustad semantiliste atribuutidega, mida nimetatakse ka siltideks, kategooriateks vĂ”i metaandmeteks. Ma kasutan sagedamini terminit „kategooria”, kuna failisĂŒsteemide kontekstis tundub sĂ”na „silt” mĂ”nikord veider, eriti kui tekivad „alam-sildid” ja „siltide pseudomeenused”.

Kategooriate mÀÀramine failidele vabastab suurel mÀÀral salvestus- ja leidmisprobleemidest: kui mĂ€letad (vĂ”i aimad) vĂ€hemalt ĂŒhte failile mÀÀratud kategooriat, siis fail ei kao enam kunagi silmist.

Varem on Habrisse selle teema ĂŒle korduvalt rÀÀgitud (kord, kaks, kolm, neli jne.), siin kirjeldan ma oma lahendust.

Teekond teostuseni

Vahetult pĂ€rast mainitud unenĂ€o kirjutasin vihikusse kĂ€surealiidese, mis tagab vajaliku töö kategooriatega. Siis otsustasin, et prototĂŒĂŒbi kirjutamine Pythonis vĂ”i Bashis vĂ”tab nĂ€dal vĂ”i kaks, ning seejĂ€rel on vaja rakendada graafiline liides Qt vĂ”i GTK abil. Reaalsus oli nagu alati palju karmim ning arendus venis.

Algne mĂ”te oli eelkĂ”ige luua mugava ja lĂŒhikese kĂ€surealiidesega programm, mis loob, kustutab kategooriaid, mÀÀrab failidele kategooriaid ja eemaldab kategooriad failidest. Nimetasin programmi vitis.

Esimene katse luua vitis lĂ€ks kĂ”ik pekki, kuna töö ja instituut nĂ”udsid liiga palju aega. Teine katse oli juba millegi poolest edukas: magistritöö raames Ă”nnestus lĂ”petada planeeritud projekt ja isegi teha GTK-liidese prototĂŒĂŒp. Kuid see versioon osutus nii ebausaldusvÀÀrseks ja ebamugavaks, et tuli palju ĂŒmber mĂ”elda.

Kolmandat versiooni olen pĂ€riselt kasutanud juba vĂ€ga pikka aega, jagades oma faile kategooriatesse, kokku mitu tuhat. KĂŒll aitas sellele kaasa ka rakendatud bash autokomplekteerimine. Kuid mĂ”ned probleemid, nagu automaatsete kategooriate puudumine ja vĂ”imalus salvestada sama nimega faile, jĂ€id siiski alles ning programm hakkas juba enda keerukuse tĂ”ttu kokku varisema. Nii jĂ”udsin ma vajaduseni lahendada keerulise tarkvara arendamise probleeme: kirjutada pĂ”hjalikud nĂ”uded, vĂ€lja töötada funktsionaalsete testide sĂŒsteem, uurida pakendamisjuhiseid ja palju muud. NĂŒĂŒd olen jĂ”udnud kavandatule, nii et see tagasihoidlik looming vĂ”ib minna vabale kogukonnale. Niisugune spetsiifiline failihaldus, nagu haldamine kategooriate kontseptsiooni kaudu, tĂ”statab ootamatuid kĂŒsimusi ja probleeme, ning nende lahendamiseks. vitis sĂŒndis ĂŒmber tema veel viis projekti, millest mĂ”ned kajastatakse artiklis. Kuni tĂ€naseni vitis grafikapĂ”hist liidest pole omandanud, kuid failikategooriate kasutusmugavus kĂ€surealt ĂŒletab minu jaoks kĂ”ik klassikalise graafilise failihalduri eelised.

KasutusnÀited

Alustame lihtsast — loome kategooria:

vitis create Muusika

Lisame sellesse nĂ€iteks ĂŒhe kompositsiooni:

vitis assign Muusika -f "The Ink Spots - I Don't Want To Set The World On Fire.mp3"

Kategooria „Muusika” sisu saab vaadata alamkĂ€sklusega „show”:

vitis show Muusika

Seda saab mĂ€ngida alamkĂ€sklusega „open”

vitis open Muusika

Kuna meie kategoorias „Muusika” on vaid ĂŒks fail, kĂ€ivitub ainult see. Failide avamise vajadusteks olen loonud eraldi utiliidi vts-fs-open (tavainstrumendid nagu xdg-open vĂ”i mimeopen ei sobinud mulle mitmel pĂ”hjusel; kuid igaks juhuks, seadetes saate mÀÀrata muu universaalse failide avamise utiliidi). See utiliit töötab hĂ€sti erinevates jaotustes koos erinevate töökeskkondadega, seega soovitan koos vitisega selle ka installida.

Failide avimiseks vÔib ka otse mÀÀrata programmi:

vitis open Muusika --app qmmp

Kategooriad asemel kataloogid, vĂ”i Semantilise failisĂŒsteemi rakendamine Linuxile

Loome veel kategooriaid ja lisame faile kasutades „assign”. Kui failidele omistatakse veel mitteeksisteerivaid kategooriaid, esitatakse nende loomise pĂ€ring. Ühelt pĂ€ringult saab sÀÀsta, kui kasutada lippu —yes.

vitis assign Programmeerimine R -f "Sissejuhatus R.pdf" "Statistiline paket R: tÔenÀosusteooria ja matemaatiline statistika.pdf" --yes

NĂŒĂŒd soovime lisada failile „Statistiline paket R: tĂ”enĂ€osusteooria ja matemaatiline statistika.pdf” kategooria „Matemaatika”. Teame, et sellel failil on juba kategooria „R” ja saame seega kasutada kategooriate teed Vitis-sĂŒsteemis:

vitis assign Matemaatika -v "R/Statistiline paket R: tÔenÀosusteooria ja matemaatiline statistika.pdf"

Õnneks vĂ”imaldab bash automaatne tĂ€iendamine seda lihtsalt teha.

Vaadakem, mis vĂ€lja tuli, kasutades lippu —categories, et nĂ€ha iga faili kategooriate loetelu:

vitis show R --categories

Kategooriad asemel kataloogid, vĂ”i Semantilise failisĂŒsteemi rakendamine Linuxile

Pange tĂ€hele, et failidele on samuti omistatud automaatsed kategooriad formaadi, tĂŒĂŒbi (ĂŒhendab formaadid) ja failide laiendite jĂ€rgi. Need kategooriad on soovi korral vĂ€lja lĂŒlitatavad. Hiljem teen kindlasti nende nimede lokaliseerimise.

Lisame „Matemaatikale” veel midagi erinevat:

vitis assign Matemaatika -f "Matemaatiline analĂŒĂŒs - 1984.pdf" Perelman_Huvitav_matemaatika_1927.djvu 

NĂŒĂŒd algab huvitav osa. Kategooriate asemel saab kirjutada vĂ€ljendeid koos ĂŒhendamise, ristumise ja lahutamise operatsioonidega, st kasutada hulkade ĂŒle teostatavaid operatsioone. NĂ€iteks „Matemaatika” ja „R” ristumine annab ĂŒhe faili.

vitis show R i: Matemaatika

VĂ€hendame „Matemaatikast” viiteid keelele „R”:

vitis show Matemaatika R # vÔi vitis show Matemaatika c: R

Saame tĂ€htsusetult ĂŒhendada muusika ja keel R:

vitis show Muusika u: R

Lipp -n vĂ”imaldab „vĂ€ljada” kĂŒsimuse tulemuste hulgast vajalikke faile numbrite ja/vĂ”i vahemike jĂ€rgi, nĂ€iteks -n 3-7, vĂ”i midagi keerulisemat: -n 1,5,8-10,13. Tihti on kasulik koos subkĂ€sklusega open, mis vĂ”imaldab avada vajalikud failid nimekirjast.

Kategooriad asemel kataloogid, vĂ”i Semantilise failisĂŒsteemi rakendamine Linuxile

Kuigi me eemaldu ĂŒsna tavapĂ€rasest kataloogihierarhiast, on sageli kasulik omada sisemisi kategooriaid. Loome kategooriale „Matemaatika” alamkategooria „Statistika” ja lisame selle kategooria sobivale failile:

vitis create Matemaatika/Statistika

vitis assign Matemaatika/Statistika -v "R/Sissejuhatus R.pdf"

vitis show Matemaatika --categories

Kategooriad asemel kataloogid, vĂ”i Semantilise failisĂŒsteemi rakendamine Linuxile

Saame nĂ€ha, et see fail on nĂŒĂŒd kategoorias „Matemaatika/Statistika“ selle asemel, et olla lihtsalt „Matemaatika“ (liigne lingid jĂ€lgitakse).

TĂ€ieliku tee kasutamine vĂ”ib olla ebamugav, loome „globaalset“ hĂŒĂŒdnime:

vitis assign Matemaatika/Statistika -a Statistika

vitis show Statistika

Kategooriad asemel kataloogid, vĂ”i Semantilise failisĂŒsteemi rakendamine Linuxile

Mitte ainult tavalised failid

Interneti-lingid

Igakaudu info salvestamise ĂŒhtlustamiseks oleks kasulik, vĂ€hemalt, kategoriseerida lingid veebiresurssidele. Ja see on vĂ”imalik:

vitis assign Єабр ĐŠĐČĐ”Ń‚ĐŸĐ°ĐœĐŸĐŒĐ°Đ»ĐžŃ -i https://habr.com/ru/company/sfe_ru/blog/437304/ --yes

Erilised failid luuakse HTML-lehe pealkirjaga ja laiendiga .desktop. See on traditsiooniline otsetee formaat GNU/Linuxis. Sellised otseteed saavad automaatse kategooria NetworkBookmarks.

Muidugi, otseteed luuakse selleks, et neid kasutada:

vitis open ĐŠĐČĐ”Ń‚ĐŸĐ°ĐœĐŸĐŒĐ°Đ»ĐžŃ

KÀskluse tÀitmine toob kaasa just salvestatud lingi avamise brauseris. Kategoriseeritud otseteed veebiallikatele vÔivad toimida brauseri jÀrjehoidjate asemel.

Failide fragmendid

Samuti on kasulik jagada kategooriatesse erinevaid failijuppe. Kuidas kĂ”lab? Kuid praegune rakendus hĂ”lmab ainult tavalisi tekstifaile, helifaile ja videofaile. Oletame, et peate tĂ€histama kindlat osa kontserdist vĂ”i naljakast stseenist filmis, siis saate kasutada assign kĂ€sku koos lipukestega —fragname, —start, —finish. Salvestame «Pardilood» intro:

vitis assign vitis assign -c Zastavki -f Duck_Tales/s01s01.avi --finish 00:00:59 --fragname "Duck Tales intro"

vitis open Zastavki

Tegelikult ei toimu failide katkestamist, selle asemel luuakse viidatud fail, mis sisaldab teavet faili tĂŒĂŒbi, faili teed, fragmenti alguse ja lĂ”pu kohta. Fragmentide viidatud failide loomine ja avamine on delegeeritud minu spetsiaalselt selleks otstarbeks loodud tööriistadele — mediafragmenter ja fragplayer. Esimene loob viite, teine avab selle. Audio- ja videofailide puhul algab meedia mĂ€ngimine kindlast punktist kuni kindla punktini VLC mĂ€ngija abil, seega peab see ka sĂŒsteemis olema. Alguses plaanisin kasutada mplayerit, kuid seal oli mingil pĂ”hjusel positsioneerimisega probleemid.
Meie nĂ€ites luuakse fail «Duck Tales intro.fragpointer» (see asetatakse erilisse kohta), ja seejĂ€rel predelme fraktal alates faili algusest (sest —start ei olnud loodud) kuni 59-sekundilise mĂ€rgini, pĂ€rast mida VLC suletakse.

Teine nĂ€ide — otsustasime kategoriseerida mĂ”ne tuntud esineja kontserdil toimunud esinemise:

vitis assign Leps "PÀÀstke meie hinged" -f Grigori Leps - Kontsert PÀrlus - Vladimir Vysotski laule.mp4 --fragname "PÀÀstke meie hinged" --start 00:32:18 --finish 00:36:51

vitis open "PÀÀstke meie hinged"

Fail avatakse Ôigel positsioonil ja sulgub nelja ja poole minuti pÀrast.

Kuidas see kÔik töötab + tÀiendavad vÔimalused

Kategooriate salvestamine

Alguses, kui mĂ”tlesin vĂ€lja semantilise failisĂŒsteemi korraldust, tuli mulle meelde kolm meetodit: sĂŒmboolsete linkide, andmebaasi ja XML kirjelduse kaudu. VĂ”itis esimene meetod, kuna see on ĂŒhelt poolt lihtne teostada ning teisalt annab kasutajale vĂ”imaluse vaadata kategooriaid otse failisĂŒsteemist (mis on mugav ja oluline). Kasutamise alguses vitis Kasutaja kodu katalooge luuakse kaust „Vitis“ ja konfiguratsioonifail „.config/vitis/vitis.conf“. Kaustas ~/Vitis luuakse direktoriid, mis vastavad kategooriatele, ning nende kategooriad loovad sĂŒmboolseid linke originaalfailidele. Kategooriate hĂŒĂŒdnimed on samuti lihtsalt linkidena. Muidugi vĂ”ib paljusid hĂ€irida „Vitis“ kausta olemasolu kodukataloogis. Saame vahetada selle millekski muuks:

vitis service set path /mnt/MyFavoriteDisk/Vitis/

Teatud hetkel selgub, et erinevates kohtades paiknevaid faile on ĂŒsna mĂ”ttetu kategoriseerida, kuna nende asukoht vĂ”ib muutuda. SeetĂ”ttu lĂ”in alguses endale kausta, kuhu lihtsalt kĂ”ik kokku kogusin ja sellele igasuguseid kategooriaid andsin. SeejĂ€rel otsustasin, et oleks hea see hetk ka programmide tasemel vormistada. Nii sĂŒndis mĂ”iste „failiruumi“. Alustamisel vitis ei oleks kohe ĂŒldse paha seadistada selline koht (seal kuhjatakse kĂ”ik vajalikud failid) ja sisse lĂŒlitada automaatne salvestamine:

vitis service add filespace /mnt/MyFavoriteDisk/Filespace/
vitis service set autosave yes

Kui alamkĂ€sku «assign» kasutades ei toimu automaatset salvestamist, on vajalik lipp —save, kui on soov salvestada lisatav fail failiruumi.

Veelgi enam, saab lisada mitmeid failiruume ja muuta nende prioriteete, mis vÔib olla kasulik, kui faile on palju ja need on erinevates seadmetes. Siin ma seda vÔimalust ei kÀsitle, detaile saab lugeda programmi abist.

Semantilise failisĂŒsteemi migratsioon

Nii vÔi teisiti, kaust Vitis ja failiruumi vÔivad teoreetiliselt mÔnikord paigutust vahetada. Töötamiseks olen loonud eraldi utiliidi link-editor, mis suudab massiliselt linke redigeerida, asendades teed osad teistega:

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

Esimesel juhul, pĂ€rast liikumist /mnt/MyFavoriteDisk/Vitis/ kodu katalooge, muudetakse sĂŒmboolseid linke, mis on seotud aliastega. Teisel juhul, peale failiruumi asukoha muutmist, muudetakse kĂ”ik linkid Vitis'e uute osadega nende tee asenduse pĂ”hjal.

Ainulaadsed kategooriad

Kui kÀivitate kÀsu vitis service get autocategorization, siis nÀete, et vaikimisi on seadistatud automaatsete kategooriate mÀÀramine faili formaadi (Format ja Type) ja laiuse (Extension) jÀrgi.

See on kasulik, kui peate nÀiteks leidma midagi PDF-ide seast vÔi vaatama, mis teil on salvestatud EPUB ja FB2 formaadis, saate lihtsalt teostada pÀringu

vitis show Format/MOBI u: Format/FB2

Tundub, et standardsed GNU/Linux tööriistad nagu file vĂ”i mimetype ei rahuldanud mind just sellepĂ€rast, et nad ei mÀÀra formaati alati Ă”igesti. Seepeale pidin tegema oma implementatsiooni failide allkirjade ja laiendite pĂ”hjal. Üldiselt on failiformaatide mÀÀratlemise teema huvitav uurimisteema ja vÀÀrib eraldi artiklit. Kui rÀÀkida, siis vĂ”ib-olla ei ole ma kĂ”igi maailmas olevate formaatide jaoks taganud usaldusvÀÀrset tuvastamist, kuid ĂŒldiselt töötab see juba praegu pĂ€ris hĂ€sti. TĂ”si, EPUB mÀÀratakse praegu formaadina ZIP (millel on oma Ă”igustus, kuid praktikas ei peaks seda pidama normaalseks kĂ€itumiseks). Teatud aja jooksul pidage seda vĂ”imalust eksperimentaalseks ja andke teada, kui leiate vigu. Veidratel juhtudel vĂ”ib alati kasutada failide laiendite kategooriaid, nĂ€iteks Extension/epub.

Kui formaadi automaatkategooriad on sisse lĂŒlitatud, sisaldavad need ka automaatkategooriaid, mis ĂŒhendavad mĂ”ningaid formaate kategooriate alla nagu: „Arhiivid“, „Pildid“, „Video“, „Audio“ ja „Dokumendid“. Nende alamkategooriate jaoks tehakse samuti lokaliseeritud nimetused.

Millest ei rÀÀgita

vitis on saanud vĂ€ga mitmekesise tööriista, ning on keeruline kĂ”ike korraga katma. LĂŒhidalt mainin, mida veel teha saab:

  • kategooriaid saab kustutada ja faile neist eemaldada;
  • pĂ€ringute tulemusi saab kopeerida mÀÀratud kausta;
  • faile saab kĂ€ivitada programmidena;
  • meeskonnal show on palju valikuid, nĂ€iteks sorteerimine nime/muutmise kuupĂ€eva vĂ”i ligipÀÀsu/suuruse/failitĂŒĂŒbi jĂ€rgi, faili omaduste ja originaalide teede kuvamine, peidetud failide kuvamise aktiveerimine jne.;
  • Internetiallika linkide salvestamisel on vĂ”imalik ka HTML-lehekĂŒlgede kohalikud koopiad salvestada.

KĂ”iki ĂŒksikasju leiate kasutajatoe juhendist.

Perspektiivid

Tihti ĂŒtlevad skeptikud, et "keegi ei hakka neid silte ise panema". Oma kogemuste pĂ”hjal vĂ”in tĂ”estada vastupidist: olen juba kategoriseerinud ĂŒle kuue tuhande faili, loonud ĂŒle tuhande kategooria ja hĂŒĂŒdnime, ning see oli seda vÀÀrt. Kui ĂŒhes kĂ€skluses vitis open Plaan avatakse oma ĂŒlesannete nimekiri vĂ”i kui ĂŒhes kĂ€skluses vitis open LaTeX avatakse Stolyarovi raamat LaTeX-i paigutussĂŒsteemist, siis on juba vaimselt keeruline kasutada failisĂŒsteemi "vana moe jĂ€rgi".

Sellel alusel tekivad mitmed ideed. NĂ€iteks vĂ”iks teha automaatse raadio, mis mĂ€ngib temaatilist muusikat vastavalt praegusele ilmale, pĂŒhale, nĂ€dalapĂ€evale, pĂ€evaajale vĂ”i aastaaegadele. Samuti on teemaga seotud muusikapaigutaja, mis teab kategooriaid ja suudab esitada muusikat vastavalt vĂ€ljendustele koos kategooriate operatsioonidega nagu hulkadena. Kasulik oleks luua demon, mis jĂ€lgib "Allalaadimised" kausta ja pakub uusi faile kategoriseerida. Ja muidugi tuleks luua ka korralik graafiline semantiline failihaldur. Kunagi tegin isegi ettevĂ”ttele veebiteenuse failide ĂŒhiskasutuseks, kuid see ei olnud prioriteet ja muutus aktuaalsuseks, kuigi saavutas kĂ”rge töövĂ”ime. (Seoses suurte muudatustega endas, vitis, on see juba kasutuskĂ”lbmatu.)

siin on vÀike demo

Kategooriad asemel kataloogid, vĂ”i Semantilise failisĂŒsteemi rakendamine Linuxile

KokkuvÔte

Vitis — ei ole esimene katse radikaalselt muuta andmete töötlemise stiili, kuid pean oluliseks ellu viia oma ideed ja jagada teostust avatud juurdepÀÀsuga GNU GPL litsentsi alusel. Mugavuse huvides on loodud deb-pakett x86-64 jaoks, see peaks töötama kĂ”ikidel kaasaegsetel Debian jaotustel. ARM-is tekkisid vĂ€ikesed raskused (kuid kĂ”ik teised programmid, mis on seotud vitis, töötavad korralikult), kuid tulevikus koostatakse töötav pakett ka sellele platvormile (armhf). RPM-pakettide loomisega olen praegu lĂ”petanud seoses probleemidega Fedora 30 juures ja raskustega hajutada end paljudele RPM jaotustele, kuid hiljem tehakse siiski pakette vĂ€hemalt paarile neist. Praegu saab kasutada make && make install vĂ”i checkinstall.

TÀnan kÔiki tÀhelepanu eest! Loodan, et see artikkel ja see projekt osutuvad kasulikeks.

Lingid projekti reposiitiumile

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster