Kategoriji minflok direttorji, jew sistema ta 'fajls semantiċi għal Linux

Il-klassifikazzjoni tad-dejta nnifisha hija suġġett ta 'riċerka interessanti. Inħobb niġbor informazzjoni li tidher meħtieġa, u dejjem ippruvajt noħloq ġerarkiji ta' direttorji loġiċi għall-fajls tiegħi, u ġurnata waħda f'ħolma rajt programm sabiħ u konvenjenti għall-assenjazzjoni ta' tags għal fajls, u ddeċidejt li ma stajtx ngħix bħal dan aktar.

Il-problema tas-sistemi ta 'fajls ġerarkiċi

L-utenti ta 'spiss iħabbtu wiċċhom mal-problema li jagħżlu fejn isalvaw il-fajl ġdid li jmiss u l-problema li jsibu l-fajls tagħhom stess (xi kultant l-ismijiet tal-fajls mhumiex intenzjonati li jiġu mfakkar minn persuna).

Mod ta' ħruġ mis-sitwazzjoni jistgħu jkunu sistemi ta' fajls semantiċi, li ġeneralment ikunu add-on mas-sistema ta' fajls tradizzjonali. Id-direttorji fihom huma sostitwiti minn attributi semantiċi, imsejħa wkoll tikketti, kategoriji u metadejta. Se nuża t-terminu "kategorija" aktar spiss, għax... Fil-kuntest tas-sistemi tal-fajls, il-kelma "tag" kultant hija daqsxejn stramba, speċjalment meta jidhru "subtags" u "tag aliases".

L-assenjazzjoni ta' kategoriji għal fajls telimina fil-biċċa l-kbira l-problema tal-ħażna u t-tfittxija għal fajl: jekk tiftakar (jew taqta') mill-inqas waħda mill-kategoriji assenjati għal fajl, allura l-fajl qatt ma jisparixxi mill-vista.

Qabel, dan is-suġġett tqajjem aktar minn darba fuq Habré (ħin, два, 3, erbgħa eċċ.), hawnhekk niddeskrivi s-soluzzjoni tiegħi.

Mogħdija għar-Realizzazzjoni

Immedjatament wara l-ħolma msemmija, iddeskriviet fin-notebook tiegħi l-interface tal-kmand li tipprovdi x-xogħol meħtieġ bil-kategoriji. Imbagħad iddeċidejt li f'ġimgħa jew tnejn nista' nikteb prototip bl-użu ta' Python jew Bash, u mbagħad ikolli naħdem fuq il-ħolqien ta' qoxra grafika f'Qt jew GTK. Ir-realtà, bħal dejjem, irriżulta li kienet ferm aktar ħarxa, u l-iżvilupp ġie ttardjat.

L-idea oriġinali kienet li l-ewwel nett tagħmel programm b'interface tal-linja tal-kmand konvenjenti u konċiża li toħloq, tħassar kategoriji, tassenja kategoriji għal fajls u tħassar kategoriji mill-fajls. Ċempilt il-programm Whisper.

L-ewwel tentattiv biex toħloq Whisper spiċċa fix-xejn, peress li ħafna ħin beda jintefaq fuq ix-xogħol u l-kulleġġ. It-tieni tentattiv kien diġà xi ħaġa: għat-teżi tal-master, irnexxieli tlesti l-proġett ippjanat u anke nagħmel prototip tal-qoxra GTK. Iżda dik il-verżjoni rriżulta li tant ma kienx affidabbli u inkonvenjenti li ħafna kellhom jerġgħu jaħsbuha.

Fil-fatt użajt it-tielet verżjoni jien stess għal żmien twil ħafna, wara li ttrasferijt diversi eluf ta 'fajls tiegħi għal kategoriji. Dan kien ukoll iffaċilitat ħafna mit-tlestija tal-bash implimentata. Iżda xi problemi, bħan-nuqqas ta 'kategoriji awtomatiċi u l-abbiltà li jaħżnu fajls bl-istess isem, xorta baqgħu, u l-programm kien diġà mgħawweġ taħt il-kumplessità tiegħu stess. Dan huwa kif wasalt għall-ħtieġa li nsolvi problemi kumplessi ta 'żvilupp ta' softwer: tikteb rekwiżiti dettaljati, tiżviluppa sistema ta 'ttestjar funzjonali, tistudja l-istruzzjonijiet tal-ippakkjar, u ħafna aktar. Issa wasalt għall-pjan tiegħi, biex dan il-ħolqien umli jkun jista’ jiġi ppreżentat lill-komunità ħielsa. Ġestjoni ta 'fajls speċifiċi bħall-ġestjoni permezz tal-kunċett ta' kategoriji tqajjem kwistjonijiet u problemi mhux mistennija, u fis-soluzzjoni tagħhom Whisper nissel ħames proġetti oħra madwaru nnifsu, li wħud minnhom se jissemmew fl-artiklu. Sa issa Whisper Ma xtrajtx qoxra grafika, iżda l-konvenjenza li tuża kategoriji ta 'fajls mil-linja tal-kmand diġà tegħleb għalija kwalunkwe vantaġġi ta' maniġer tal-fajls grafiku regolari.

Eżempji dwar l-Użu

Nibdew sempliċi - oħloq kategorija:

vitis create Музыка

Ejja nżidu xi kompożizzjoni magħha bħala eżempju:

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

Tista' tara l-kontenut tal-kategorija "Mużika" billi tuża s-sottokmand "turi":

vitis show Музыка

Tista 'tilgħabha billi tuża s-sottokmand "miftuħ".

vitis open Музыка

Għax Jekk ikollna fajl wieħed biss fil-kategorija "Mużika", allura dak wieħed biss se jniedi. Għall-iskop li tiftaħ fajls bil-programmi default tagħhom, għamilt utilità separata vts-fs-miftuħ (Għodod standard bħal xdg-open jew mimeopen ma kinux tajbin għalija għal numru ta 'raġunijiet; iżda, jekk xejn, fis-settings tista' tispeċifika utilità oħra għall-ftuħ universali tal-fajl). Din l-utilità taħdem tajjeb fuq distribuzzjonijiet differenti b'ambjenti tax-xogħol differenti, għalhekk nirrakkomanda li tinstallaha flimkien ma 'vitis.

Tista 'wkoll tispeċifika direttament il-programm biex tiftaħ fajls:

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

Kategoriji minflok direttorji, jew sistema ta 'fajls semantiċi għal Linux

Ejja noħolqu aktar kategoriji u żid fajls billi tuża "assenja". Jekk il-fajls huma assenjati għal kategoriji li għadhom ma jeżistux, inti mitlub biex toħloqhom. Talba mhux meħtieġa tista' tiġi evitata bl-użu tal-marka -iva.

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

Issa rridu nżidu l-kategorija "Matematika" mal-fajl "Pakkett statistiku R: teorija tal-probabbiltà u statistika matematika.pdf". Aħna nafu li dan il-fajl huwa diġà kkategorizzat bħala "R" u għalhekk nistgħu nużaw il-mogħdija tal-kategorija mis-sistema Vitis:

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

Fortunatament, it-tlestija tal-bash tagħmel dan faċli.

Ejja naraw x'ġara, billi tuża l-bandiera --categories biex tara lista ta' kategoriji għal kull fajl:

vitis show R --categories

Kategoriji minflok direttorji, jew sistema ta 'fajls semantiċi għal Linux

Innota li l-fajls ġew ukoll awtomatikament kategorizzati skond il-format, it-tip (tgħaqqad formati) u l-estensjoni tal-fajl. Dawn il-kategoriji jistgħu jiġu diżattivati ​​jekk mixtieq. Iktar tard żgur li se nillokalizza l-ismijiet tagħhom.

Ejja nżidu xi ħaġa oħra ma '"Matematika" għall-varjetà:

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

U issa l-affarijiet isiru interessanti. Minflok kategoriji, tista 'tikteb espressjonijiet bl-operazzjonijiet ta' unjoni, intersezzjoni u tnaqqis, jiġifieri, uża operazzjonijiet fuq settijiet. Pereżempju, l-intersezzjoni ta '"Matematika" ma "R" se tirriżulta f'fajl wieħed.

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

Ejja nnaqqsu r-referenzi għal-lingwa "R" mill-"Matematika":

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

Nistgħu ngħaqqdu bla għan il-mużika u l-lingwa R:

vitis show Музыка u: R

Il-bandiera -n tippermettilek "tiġbed" il-fajls meħtieġa mir-riżultat tat-talba permezz ta' numri u/jew firxiet, pereżempju, -n 3-7, jew xi ħaġa aktar ikkumplikata: -n 1,5,8-10,13. Ħafna drabi huwa utli bis-sottokmand miftuħ, li jippermettilek tiftaħ il-fajls mixtieqa minn lista.

Kategoriji minflok direttorji, jew sistema ta 'fajls semantiċi għal Linux

Filwaqt li qed nimxu 'l bogħod mill-użu ta' ġerarkija tad-direttorju konvenzjonali, ħafna drabi jkun utli li jkollok kategoriji mnaqqsa. Ejja noħolqu sottokategorija "Statistika" taħt il-kategorija "Matematika" u żid din il-kategorija mal-fajl xieraq:

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

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

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

Kategoriji minflok direttorji, jew sistema ta 'fajls semantiċi għal Linux

Nistgħu naraw li dan il-fajl issa għandu l-kategorija "Matematika/Statistika" minflok "Matematika" (links żejda huma ssorveljati).

L-indirizzar tal-mogħdija sħiħa jista 'jkun inkonvenjenti, ejja noħolqu alias "globali":

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

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

Kategoriji minflok direttorji, jew sistema ta 'fajls semantiċi għal Linux

Mhux biss fajls regolari

Links tal-Internet

Biex tgħaqqad il-ħażna ta 'kwalunkwe informazzjoni, ikun utli, għall-inqas, li tikkategorizza links għar-riżorsi tal-Internet. U dan huwa possibbli:

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

Se jinħoloq fajl f'post speċjali bl-header tal-paġna HTML u l-estensjoni .desktop. Dan huwa l-format tradizzjonali ta' shortcut f'GNU/Linux. Shortcuts bħal dawn huma awtomatikament kategorizzati bħala NetworkBookmarks.

Naturalment, shortcuts huma maħluqa biex jintużaw:

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

L-eżekuzzjoni tal-kmand tikkawża li l-link li għadu kif ġie salvat jinfetaħ fil-browser. Shortcuts kategorizzati għal sorsi tal-Internet jistgħu jservu bħala sostitut għall-bookmarks tal-browser.

Frammenti tal-fajl

Huwa wkoll utli li jkun hemm kategoriji għal biċċiet individwali ta 'fajls. Mhux talba ħażina, eh? Iżda l-implimentazzjoni attwali s'issa taffettwa biss fajls ta 'test sempliċi, fajls awdjo u vidjo. Ejja ngħidu li għandek bżonn timmarka ċerta parti ta 'kunċert jew mument umoristiċi f'film, imbagħad meta tuża assign tista' tuża l-bnadar -fragname, -start, -finish. Ejja nsalvaw l-iscreensaver minn "DuckTales":

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

vitis open Заставки

Fir-realtà, ma jseħħ l-ebda qtugħ tal-fajl; minflok, jinħoloq fajl pointer għall-framment, li jiddeskrivi t-tip ta 'fajl, it-triq għall-fajl, il-bidu u t-tmiem tal-framment. Il-ħolqien u l-ftuħ ta 'pointers għal frammenti huwa delegat għal utilitajiet li jien għamilt apposta għal dawn l-għanijiet - dawn huma mediafragmenter u fragplayer. L-ewwel joħloq, it-tieni jiftaħ. Fil-każ ta 'reġistrazzjonijiet awdjo u vidjo, il-fajl tal-midja huwa mniedi minn ċerta sa ċertu pożizzjoni bl-użu tal-VLC player, għalhekk għandu jkun ukoll fis-sistema. Għall-ewwel ridt nagħmel dan ibbażat fuq mplayer, iżda għal xi raġuni kien mgħawweġ ħafna bil-pożizzjonament fil-mument it-tajjeb.
Fl-eżempju tagħna, jinħoloq il-fajl "Duck Tales intro.fragpointer" (titqiegħed f'post speċjali), u mbagħad tindaqq framment mill-bidu tal-fajl (peress li –start ma kienx speċifikat meta jinħoloq) sal-59. it-tieni marka, wara li tagħlaq VLC.

Eżempju ieħor huwa meta ddeċidejna li nikkategorizzaw prestazzjoni waħda f'kunċert minn artist famuż:

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

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

Meta jinfetaħ, il-fajl jiġi inkluż fil-pożizzjoni mixtieqa u jingħalaq wara erba' minuti u nofs.

Kif jaħdem kollox + karatteristiċi addizzjonali

Il-kategoriji tal-ħażna

Fil-bidu nett tal-ħsieb dwar l-organizzazzjoni ta 'sistema ta' fajls semantiċi, ġew f'moħħna tliet modi: permezz tal-ħażna ta 'links simboliċi, permezz ta' database, permezz ta 'deskrizzjoni f'XML. L-ewwel metodu rebaħ, għax... min-naħa waħda, huwa faċli biex timplimenta, u min-naħa l-oħra, l-utent għandu l-opportunità li jħares lejn kategoriji direttament mis-sistema tal-fajls (u dan huwa konvenjenti u importanti). Fil-bidu tal-użu Whisper Id-direttorju "Vitis" u l-fajl ta 'konfigurazzjoni ".config/vitis/vitis.conf" huma maħluqa fid-direttorju tad-dar tal-utent. Direttorji li jikkorrispondu għal kategoriji huma maħluqa f'~/Vitis, u links simboliċi għall-fajls oriġinali huma maħluqa f'dawn id-direttorji tal-kategoriji. Psewdonimi tal-kategoriji huma wkoll biss links għalihom. Naturalment, il-preżenza tad-direttorju "Vitis" fid-direttorju tad-dar tista 'ma tkunx adattata għal xi nies. Nistgħu naqilbu għal kwalunkwe post ieħor:

vitis service set path /mnt/MyFavoriteDisk/Vitis/

F'ċertu punt, jidher ċar li ma tantx jagħmel sens li tikkategorizza fajls imxerrda f'postijiet differenti, peress li l-post tagħhom jista 'jinbidel. Għalhekk, biex tibda, ħloqt direttorju għalija nnifsi, fejn stupidament iddampjat kollox u tajtu l-kategoriji kollha. Imbagħad iddeċidejt li jkun sabiħ li tifformalizza dan il-mument fil-livell tal-programm. Dan huwa kif deher il-kunċett ta '"spazju tal-fajl". Fil-bidu tal-użu Whisper Ma jagħmilx ħsara li twaqqaf immedjatament post bħal dan (il-fajls kollha li għandna bżonn se jinħażnu hemmhekk) u nippermettu l-awtosave:

vitis service add filespace /mnt/MyFavoriteDisk/Filespace/

vitis service set autosave yes

Mingħajr autosave, meta tuża s-subkmand "assenja", il-bandiera --save tkun meħtieġa jekk trid tissejvja l-fajl miżjud fl-ispazju tal-fajl.

Barra minn hekk, tista 'żżid diversi spazji tal-fajls u tibdel il-prijoritajiet tagħhom; dan jista' jkun utli meta jkun hemm ħafna fajls u jkunu maħżuna fuq midja differenti. Mhux se nikkunsidra din il-possibbiltà hawn; id-dettalji jistgħu jinstabu fl-għajnuna tal-programm.

Migrazzjoni tas-Sistema tal-Fajls Semantiċi

Xorta waħda, id-direttorju tal-Vitis u l-ispazji tal-fajls jistgħu teoretikament kultant jimxu minn post għall-ieħor. Biex taħdem, ħloqt utilità separata link-editur, li tista' teditja r-rabtiet bl-ingrossa, billi tissostitwixxi partijiet tal-mogħdija b'oħrajn:

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

Fl-ewwel każ, wara li mċaqalqa minn /mnt/MyFavoriteDisk/Vitis/ għad-direttorju tad-dar, ir-rabtiet simboliċi assoċjati mal-psewdonimi jiġu editjati. Fit-tieni każ, wara li tinbidel il-post tal-ispazju tal-fajl, il-links kollha f'Vitis jinbidlu għal oħrajn ġodda skont it-talba biex tissostitwixxi parti mit-triq tagħhom.

Kategoriji awtomatiċi

Jekk tmexxi l-kmand vitis service get autocategorization, tista' tara li b'mod awtomatiku, il-kategoriji awtomatiċi huma assenjati skont il-format (Format u Tip) u l-estensjoni tal-fajl (Esttensjoni).

Dan huwa utli meta, pereżempju, ikollok bżonn issib xi ħaġa fost PDFs jew tħares lejn dak li tkun maħżun minn EPUB u FB2, tista 'sempliċement tmexxi t-talba

vitis show Format/MOBI u: Format/FB2

Ġara li għodod standard tal-GNU/Linux bħal file jew mimetype ma kinux adattati preċiżament għax mhux dejjem jiddeterminaw b'mod korrett il-format; kelli nagħmel l-implimentazzjoni tiegħi stess ibbażata fuq firem u estensjonijiet tal-fajl. B'mod ġenerali, is-suġġett tad-definizzjoni tal-formati tal-fajls huwa suġġett interessanti għar-riċerka u jistħoqqlu artiklu separat. Għalissa nista' ngħid li forsi ma pprovdejtx rikonoxximent veru għall-formati kollha fid-dinja, iżda b'mod ġenerali diġà qed jaħdem tajjeb. Veru, EPUB issa jiddefinixxi l-format bħala ZIP (b'mod ġenerali, dan huwa ġġustifikat, iżda fil-prattika dan m'għandux jitqies imġieba normali). Għalissa, ikkunsidra din il-karatteristika sperimentali u rrapporta kwalunkwe bug. F'sitwazzjonijiet strambi, tista 'dejjem tuża kategoriji ta' estensjoni tal-fajl, pereżempju, Estensjoni/epub.

Jekk l-awtokategoriji skont il-format huma attivati, l-awtokategoriji li jiġbru xi formati skont it-tip huma wkoll attivati: "Arkivji", "Stampi", "Vidjo", "Awdjo" u "Dokumenti". Ismijiet lokalizzati se jsiru wkoll għal dawn is-subkategoriji.

Dak li ma jingħadx

Whisper Irriżulta li kienet għodda multidimensjonali ħafna, u huwa diffiċli li tkopri kollox f'daqqa. Ħa nsemmi fil-qosor x'iktar tista' tagħmel:

  • kategoriji jistgħu jitħassru u jitneħħew mill-fajls;
  • ir-riżultati tal-mistoqsijiet tal-espressjoni jistgħu jiġu kkupjati fid-direttorju speċifikat;
  • fajls jistgħu jitmexxew bħala programmi;
  • Il-kmand tal-ispettaklu għandu ħafna għażliet, pereżempju, issortjar skont l-isem/data tal-modifika jew aċċess/daqs/estensjoni, li juri proprjetajiet tal-fajl u mogħdijiet għall-oriġinali, li jippermetti l-wiri ta 'fajls moħbija, eċċ.;
  • Meta tiffranka links għal sorsi tal-Internet, tista 'wkoll issalva kopji lokali ta' paġni HTML.

Dettalji sħaħ jistgħu jinstabu fl-għajnuna għall-utent.

Prospetti

Ix-xettiċi spiss jgħidu li "ħadd ma jpoġġi dawn it-tikketti huwa stess." Bl-użu tal-eżempju tiegħi stess, nista' nipprova l-oppost: diġà kkategorizzajt aktar minn sitt elef fajl, ħloqt aktar minn elf kategorija u psewdonimi, u kien worth it. Meta tim wieħed vitis open План iftaħ il-lista tal-affarijiet tiegħek jew meta b'kmand wieħed vitis open LaTeX Meta tiftaħ il-ktieb ta 'Stolyarov dwar is-sistema ta' tqassim LaTeX, diġà huwa moralment diffiċli li tuża s-sistema tal-fajls "bil-mod antik."

Fuq din il-bażi, jinqalgħu għadd ta’ ideat. Per eżempju, tista 'tagħmel radju awtomatiku li jixgħel mużika tematika skond it-temp kurrenti, btala, jum tal-ġimgħa, ħin tal-ġurnata jew sena. Saħansitra eqreb lejn is-suġġett huwa plejer tal-mużika li jaf dwar kategoriji u jista 'jdoqq mużika bl-espressjoni b'operazzjonijiet fuq kategoriji bħal fuq settijiet. Huwa utli li tagħmel daemon li se jimmonitorja d-direttorju "Downloads" u joffri li jikkategorizza fajls ġodda. U, ovvjament, għandna nagħmlu maniġer tal-fajl semantiku grafiku normali. Darba waħda saħansitra ħloqt servizz tal-web għall-intrapriża għall-użu kollettiv ta 'fajls, iżda ma kinitx prijorità u saret irrilevanti, għalkemm kisbet livell għoli ta' prestazzjoni. (Minħabba bidliet kbar fil- Whisper, m'għadhiex tista' tintuża.)

hawn ftit demo

Kategoriji minflok direttorji, jew sistema ta 'fajls semantiċi għal Linux

Konklużjoni

vitis mhuwiex l-ewwel tentattiv biex jinbidel radikalment l-istil ta’ ħidma bid-dejta, iżda qiest importanti li nimplimenta l-ideat tiegħi u nagħmel l-implimentazzjoni disponibbli pubblikament taħt il-liċenzja GNU GPL. Għall-konvenjenza, sar pakkett deb għal x86-64; għandu jaħdem fuq id-distribuzzjonijiet Debian moderni kollha. Kien hemm diffikultajiet minuri fuq ARM (filwaqt li l-programmi l-oħra kollha kienu relatati ma' Whisper, jaħdem tajjeb), iżda fil-futur se jiġi kkompilat pakkett ta' ħidma għal din il-pjattaforma (armhf). Waqaft noħloq pakketti RPM għalissa minħabba problemi fuq Fedora 30 u d-diffikultà li jinfirex f'ħafna distribuzzjonijiet RPM, iżda pakketti aktar tard xorta se jsiru għal mill-inqas ftit minnhom. Fil-frattemp tista' tuża make && make install jew checkinstall.

Grazzi kollha għall-attenzjoni tagħkom! Nittama li dan l-artikolu u dan il-proġett jistgħu jkunu utli.

Link għar-repożitorju tal-proġett

Sors: www.habr.com

Żid kumment