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 (, , , 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 MuusikaLisame 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 MuusikaSeda saab mĂ€ngida alamkĂ€sklusega âopenâ
vitis open MuusikaKuna 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
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" --yesNĂŒĂŒ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
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: MatemaatikaVĂ€hendame âMatemaatikastâ viiteid keelele âRâ:
vitis show Matemaatika R # vĂ”i vitis show Matemaatika c: RSaame tĂ€htsusetult ĂŒhendada muusika ja keel R:
vitis show Muusika u: RLipp -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.

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
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
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/ --yesErilised 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 ZastavkiTegelikult 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 yesKui 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 -REsimesel 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/FB2Tundub, 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

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.
Allikas: habr.com
