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é (
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
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
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.
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
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 Статистика
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
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.
Sors: www.habr.com