A classificazione di dati stessu hè un tema di ricerca interessante. Mi piace à cullà l'infurmazioni chì parenu necessarii, è aghju sempre pruvatu à creà gerarchie di repertorii lògichi per i mo schedari, è un ghjornu in un sognu aghju vistu un prugramma bellu è cunvene per assignà tag à i schedari, è aghju decisu chì ùn puderebbe campà. cum'è questu più.
U prublema di i sistemi di schedarii gerarchichi
L'utilizatori sò spessu affruntati cù u prublema di sceglie induve salvà u prossimu novu schedariu è u prublema di truvà i so propri schedari (a volte i nomi di i schedari ùn sò micca intesu à esse ricurdati da una persona).
Una manera di esce da a situazione pò esse sistemi di fugliale semanticu, chì sò generalmente un add-on à u sistema di schedariu tradiziunale. I direttori in elli sò rimpiazzati da attributi semantichi, ancu chjamati tags, categurie è metadata. Aduprà u terminu "categoria" più spessu, perchè ... In u cuntestu di i sistemi di schedari, a parolla "tag" hè qualchì volta un pocu strana, soprattuttu quandu "subtags" è "tag aliases" appariscenu.
L'assignazione di categurie à i fugliali elimina largamente u prublema di almacenà è di ricerca di un schedariu: se vi ricordate (o guess) almenu una di e categurie assignate à un schedariu, allora u schedariu ùn sparirà mai da a vista.
Nanzu, stu tema hè statu suscitatu più di una volta nantu à Habré (
Strada di a Realizazione
Immediatamente dopu à u sognu mintuatu, aghju descrittu in u mo notebook l'interfaccia di cumanda chì furnisce u travagliu necessariu cù categurie. Allora aghju decisu chì in una settimana o duie puderaghju scrive un prototipu cù Python o Bash, è dopu avè da travaglià per creà una cunchiglia gràfica in Qt o GTK. A realità, cum'è sempre, hè stata assai più dura, è u sviluppu hè statu ritardatu.
L'idea originale era di fà prima di tuttu un prugramma cun una interfaccia di linea di cumanda cuncisa è cuncisa chì creà, sguassate categurie, assignate categurie à i schedari è sguassate categurie da i schedari. Aghju chjamatu u prugramma vitis.
Prima tentativu di creà vitis finì in nunda, postu chì assai tempu hà cuminciatu à esse passatu in u travagliu è l'università. U sicondu tentativu era digià qualcosa: per a tesi di u maestru, aghju sappiutu per finisce u prughjettu pianificatu è ancu fà un prototipu di a cunchiglia GTK. Ma sta versione hè diventata cusì inaffidabile è inconveniente chì assai hà da esse ripensatu.
Attualmente aghju utilizatu a terza versione per un tempu assai longu, dopu avè trasferitu parechji milla di i mo schedari in categurie. Questu hè statu ancu assai facilitatu da u cumpletu bash implementatu. Ma certi prublemi, cum'è a mancanza di categurie automatiche è a capacità di almacenà i fugliali di u listessu nome, restanu sempre, è u prugramma era digià piegatu sottu à a so cumplessità. Hè cusì chì aghju ghjuntu à a necessità di risolve i prublemi cumplessi di sviluppu di software: scrive esigenze dettagliate, sviluppà un sistema di teste funziunale, studià l'istruzzioni di imballaggio, è assai di più. Aghju avà ghjuntu à u mo pianu, perchè sta creazione umile pò esse presentata à a cumunità libera. A gestione di u schedariu specificu, cum'è a gestione per mezu di u cuncettu di categurie, suscite prublemi è prublemi inespettati, è in risolve vitis hà generatu cinque prughjetti più intornu à ellu stessu, alcuni di i quali seranu citati in l'articulu. Finu à avà vitis Ùn aghju micca acquistatu una cunchiglia gràfica, ma a cunvenzione d'utilizà categurie di schedari da a linea di cumanda digià sopra à mè qualsiasi vantaghji di un gestore di file gràficu regulare.
Esempi di usu
Cuminciamu sèmplice - crea una categuria:
vitis create Музыка
Aghjunghjemu una cumpusizioni cum'è un esempiu:
vitis assign Музыка -f "The Ink Spots - I Don't Want To Set The World On Fire.mp3"
Pudete vede u cuntenutu di a categuria "Music" cù u sottucumandamentu "mostra":
vitis show Музыка
Pudete ghjucà cù u sottucumanda "apertu".
vitis open Музыка
Perchè Se avemu un solu schedariu in a categuria "Music", allora solu quellu chì lanciarà. Per u scopu di apre i schedari cù i so prugrammi predeterminati, aghju fattu una utilità separata vts-fs-open (Arnesi standard cum'è xdg-open o mimeopen ùn mi cunvene micca per parechje ragioni; ma, se qualcosa, in i paràmetri pudete specificà un'altra utilità per l'apertura di u schedariu universale). Questa utilità funziona bè in diverse distribuzioni cù diversi ambienti di travagliu, per quessa, ricumandemu di stallà cù vitis.
Pudete ancu specificà direttamente u prugramma per apre i schedari:
vitis open Музыка --app qmmp
Creemu più categurie è aghjunghje i schedari usendu "assign". Se i schedari sò attribuiti à categurie chì ùn esistenu micca, vi sò invitati à creà. Una dumanda inutile pò esse evitata usendu a bandiera -yes.
vitis assign Программирование R -f "Введение в R.pdf" "Статистический пакет R: теория вероятностей и матстатистика.pdf" --yes
Avà vulemu aghjunghje a categuria "Matematica" à u schedariu "Pacchettu statisticu R: teoria di probabilità è statistiche matematiche.pdf". Sapemu chì stu schedariu hè digià categurizatu cum'è "R" è per quessa pudemu usà u percorsu di categuria da u sistema Vitis:
vitis assign Математика -v "R/Статистический пакет R: теория вероятностей и матстатистика.pdf"
Per furtuna, u cumpletu di bash facilita questu.
Videmu ciò chì hè accadutu, utilizendu a bandiera --categories per vede una lista di categurie per ogni schedariu:
vitis show R --categories
Da nutà chì i schedari sò ancu categurizzati automaticamente per furmatu, tipu (unisce furmati) è estensione di u schedariu. Queste categurie ponu esse disattivate se vulete. Più tardi, certamente localizeraghju i so nomi.
Aghjunghjemu qualcosa à "Matematica" per a varietà:
vitis assign Математика -f "Математический анализ - 1984.pdf" Перельман_Занимательная_математика_1927.djvu
È avà e cose diventanu interessanti. Invece di categurie, pudete scrive l'espressioni cù l'operazioni di unione, intersezzione è sottrazione, vale à dì, aduprate operazioni nantu à i setti. Per esempiu, l'intersezzione di "Math" cù "R" hà da risultatu in un schedariu.
vitis show R i: Математика
Sottraimu riferimenti à a lingua "R" da "Matematica":
vitis show Математика R #или vitis show Математика c: R
Pudemu cunghjuntà senza scopu a musica è a lingua R:
vitis show Музыка u: R
A bandiera -n permette di "tirà" i fugliali richiesti da u risultatu di a dumanda per numeri è / o intervalli, per esempiu, -n 3-7
, o qualcosa di più cumplicatu: -n 1,5,8-10,13
. Hè spessu utile cù u subcumandamentu apertu, chì permette di apre i schedari desiderati da una lista.
Mentre simu alluntanati da l'usu di una ghjerarchia di repertoriu cunvinziunali, hè spessu utile per avè categurie nidificate. Creemu una subcategoria "Statistica" sottu a categuria "Matematica" è aghjunghje sta categuria à u schedariu appropritatu:
vitis create Математика/Статистика
vitis assign Математика/Статистика -v "R/Введение в R.pdf"
vitis show Математика --categories
Pudemu vede chì stu schedariu hà avà a categuria "Math / Statistics" invece di "Math" (i ligami extra sò tracciati).
L'indirizzu di u percorsu sanu pò esse inconveniente, creemu un alias "globale":
vitis assign Математика/Статистика -a Статистика
vitis show Статистика
Micca solu i schedarii regulari
ligami Internet
Per unificà l'almacenamiento di ogni infurmazione, saria utile, à u minimu, categurizà ligami à e risorse Internet. È questu hè pussibule:
vitis assign Хабр Цветоаномалия -i https://habr.com/ru/company/sfe_ru/blog/437304/ --yes
Un schedariu serà creatu in un locu speciale cù l'intestazione di a pagina HTML è l'estensione .desktop. Questu hè u formatu di shortcut tradiziunale in GNU/Linux. Tali shortcuts sò automaticamente categurizzati cum'è NetworkBookmarks.
Naturalmente, i shortcuts sò creati per esse utilizati:
vitis open Цветоаномалия
Eseguisce u cumandamentu face chì u ligame appena salvatu sia apertu in u navigatore. I shortcuts categurizzati à e fonti Internet ponu serve cum'è un sustitutu per i marcati di u navigatore.
Frammenti di schedari
Hè ancu utile per avè categurie per pezzi individuali di schedari. Ùn hè micca una mala dumanda, eh? Ma l'implementazione attuale finu à avà afecta solu i fugliali di testu chjaru, i fugliali audio è video. Diciamu chì avete bisognu di marcà una certa parte di un cuncertu o un momentu divertente in un filmu, allora quandu si usa assignà pudete aduprà e bandiere -fragname, -start, -finish. Salvemu u screensaver da "DuckTales":
vitis assign vitis assign -c Заставки -f Duck_Tales/s01s01.avi --finish 00:00:59 --fragname "Duck Tales intro"
vitis open Заставки
In realtà, ùn ci hè micca un tagliu di fugliale; invece, hè creatu un schedariu di puntatore à u fragmentu, chì descrive u tipu di schedariu, u percorsu à u schedariu, u principiu è a fine di u frammentu. A creazione è l'apertura di punters à i frammenti hè delegata à l'utilità chì aghju fattu apposta per questi scopi - sò mediafragmenter è fragplayer. U primu crea, u sicondu apre. In u casu di registrazioni audio è video, u schedariu media hè lanciatu da una certa à una certa pusizioni cù u lettore VLC, cusì deve esse ancu in u sistema. À u principiu, vulia fà questu basatu nantu à mplayer, ma per qualchì mutivu era assai stortu cù u pusizzioni in u mumentu ghjustu.
In u nostru esempiu, u schedariu "Duck Tales intro.fragpointer" hè creatu (hè piazzatu in un locu speciale), è dopu un fragmentu hè ghjucatu da u principiu di u schedariu (poi chì -start ùn era micca specificatu quandu crea) finu à u 59. seconda marca, dopu à quale VLC chjude.
Un altru esempiu hè quandu avemu decisu di categurizà una sola performance in un cuncertu di un artista famosu:
vitis assign Лепс "Спасите наши души" -f Григорий Лепc - Концерт Парус - песни Владимира Высоцкого.mp4 --fragname "Спасите наши души" --start 00:32:18 --finish 00:36:51
vitis open "Спасите наши души"
Quandu hè apertu, u schedariu serà inclusu in a pusizione desiderata è chjude dopu quattru minuti è mezu.
Cumu funziona tuttu + funzioni supplementari
Custode categurie
À l'iniziu di pensà à l'urganizazione di un sistema di schedariu semanticu, vinni in mente trè manere: per u almacenamentu di ligami simbolichi, per una basa di dati, per una descrizzione in XML. U primu mètudu hà vintu, perchè ... da una banda, hè faciule d'implementazione, è da l'altra banda, l'utilizatore hà l'uppurtunità di vede categurie direttamente da u sistema di schedari (è questu hè cunvenutu è impurtante). À u principiu di usu vitis U cartulare "Vitis" è u schedariu di cunfigurazione ".config/vitis/vitis.conf" sò creati in u cartulare di casa di l'utilizatori. I direttori chì currispondenu à e categurie sò creati in ~/Vitis, è i ligami simbolichi à i fugliali originali sò creati in questi repertorii di categurie. L'aliasi di categurie sò ancu solu ligami per elli. Di sicuru, a prisenza di u cartulare "Vitis" in u cartulare di casa ùn pò micca cunvene à certi persone. Pudemu cambià à qualsiasi altru locu:
vitis service set path /mnt/MyFavoriteDisk/Vitis/
À un certu puntu, diventa chjaru chì ùn hè pocu sensu per categurizà i schedari spargugliati in diversi lochi, postu chì a so situazione pò cambià. Dunque, per principià, aghju creatu un repertoriu per mè stessu, induve aghju stupidu dumped tuttu è hà datu tutte e categurie. Allora aghju decisu chì saria bellu di formalizà stu mumentu à u livellu di u prugramma. Hè cusì chì u cuncettu di "spaziu di u schedariu" apparsu. À u principiu di usu vitis Ùn saria micca male à stallà immediatamente un tali locu (tutti i schedari chì avemu bisognu seranu guardati quì) è attivà l'autosave:
vitis service add filespace /mnt/MyFavoriteDisk/Filespace/
vitis service set autosave yes
Senza autosave, quandu si usa u sottucumandamentu "assign", a bandiera --save serà necessaria se vulete salvà u schedariu aghjuntu à u spaziu di u schedariu.
Inoltre, pudete aghjunghje parechji spazii di fugliale è cambià e so priorità; questu pò esse utile quandu ci sò assai schedari è sò almacenati in diversi media. Ùn cunsideraghju micca sta pussibilità quì; i dettagli ponu esse truvati in l'aiutu di u prugramma.
Migrazione di u Sistema di File Semanticu
In ogni casu, u repertoriu Vitis è i spazii di i schedari ponu in teoria volte move da un locu à un locu. Per fà u travagliu, aghju creatu una utilità separata link-editor, chì ponu edità in massa ligami, rimpiazzà parti di u percorsu cù altri:
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
In u primu casu, dopu avè passatu da /mnt/MyFavoriteDisk/Vitis/ à u cartulare di casa, i ligami simbolichi assuciati cù l'alias sò editati. In u sicondu casu, dopu avè cambiatu u locu di u spaziu di u schedariu, tutti i ligami in Vitis sò cambiati à novi in cunfurmità cù a dumanda di rimpiazzà una parte di a so strada.
Categorie automatiche
Sè vo eseguite u cumandamentu vitis service get autocategorization
, pudete vede chì per automaticamente, e categurie automatiche sò attribuite da u formatu (Format è Type) è l'estensione di l'archivi (Extension).
Questu hè utile quandu, per esempiu, avete bisognu di truvà qualcosa trà i PDF o fighjate ciò chì avete guardatu da EPUB è FB2, pudete simplificà a dumanda.
vitis show Format/MOBI u: Format/FB2
Hè accadutu chì l'arnesi standard GNU/Linux, cum'è u schedariu o mimetype, ùn mi cunvene micca precisamente perchè ùn anu micca sempre determinatu currettamente u formatu; aghju avutu a mo propria implementazione basata nantu à e firme è estensioni di file. In generale, u tema di definisce furmati di schedari hè un tema interessante per a ricerca è meriteghja un articulu separatu. Per avà possu dì chì forse ùn aghju micca furnitu un veru ricunniscenza per tutti i formati in u mondu, ma in generale hè digià travagliatu bè. True, EPUB avà definisce u furmatu cum'è ZIP (in generale, questu hè ghjustificatu, ma in pratica ùn deve esse cunsideratu cumportamentu normale). Per u mumentu, cunsiderà sta funzione sperimentale è signalate qualsiasi bug. In situazioni strane, pudete sempre aduprà categurie di estensione di file, per esempiu, Extension/epub.
Se l'autocategories per furmatu sò attivate, l'autocategories chì raggruppanu certi furmati per tipu sò ancu attivate: "Archivi", "Immagini", "Video", "Audio" è "Documenti". I nomi localizzati seranu ancu fatti per queste sottucategorie.
Chì ùn hè micca dettu
vitis Hè diventatu un strumentu assai multiforme, è hè difficiule di copre tuttu in una volta. Lasciami menzionare brevemente ciò chì pudete fà:
- categurie ponu esse sguassati è sguassati da i schedari;
- i risultati di e dumande d'espressione ponu esse copiati in u repertoriu specificatu;
- i schedari ponu esse eseguiti cum'è prugrammi;
- U cumandamentu di mostra hà parechje opzioni, per esempiu, l'ordine per nome / data di mudificazione o accessu / dimensione / estensione, chì mostra e proprietà di u schedariu è i percorsi à l'uriginali, chì permettenu a visualizazione di i schedarii nascosti, etc.;
- Quandu salvate i ligami à e fonti Internet, pudete ancu salvà copie lucali di e pagine HTML.
Tutti i dettagli ponu esse truvati in l'aiutu di l'utilizatori.
Prospetti
I scettichi spessu dicenu chì "nimu ùn metterà sti tags stessu". Utilizendu u mo propiu esempiu, possu dimustrà u cuntrariu: aghju digià categurizatu più di sei mila schedarii, creatu più di mille categurie è alias, è vale a pena. Quandu una squadra vitis open План
apre a vostra lista di cose da fà o quandu cù un cumandamentu vitis open LaTeX
Quandu avete apertu u libru di Stolyarov nantu à u sistema di layout LaTeX, hè digià moralmente difficiule d'utilizà u sistema di schedari "a manera antica".
Nant'à sta basa, nascenu una quantità di idee. Per esempiu, pudete fà una radiu automatica chì accende a musica tematica secondu u tempu attuale, vacanze, ghjornu di a settimana, ora di ghjornu o annu. Ancu più vicinu à u tema hè un lettore di musica chì sapi di categurie è pò ghjucà musica per spressione cù operazioni nantu à categurie cum'è in set. Hè utile per fà un daemon chì monitorerà u cartulare "Downloads" è offre à categurizà novi schedari. È, sicuru, duvemu fà un gestore di file semanticu gràficu normale. Una volta, aghju ancu creatu un serviziu web per l'impresa per l'usu cullettivu di i schedari, ma ùn era micca una priorità è hè diventatu irrilevante, ancu s'ellu hà ottinutu un altu livellu di rendiment. (A causa di cambiamenti maiò in u vitis, ùn hè più utilizable.)
eccu un pocu demo
cunchiusioni
vitis Ùn hè micca u primu tentativu di cambià radicalmente u stilu di travaglià cù e dati, ma aghju cunsideratu impurtante per implementà e mo idee è rende l'implementazione publicamente dispunibule sottu a licenza GNU GPL. Per comodità, un pacchettu deb hè statu fattu per x86-64; duverebbe travaglià in tutte e distribuzioni Debian muderni. Ci sò stati difficultà minori nantu à ARM (mentre chì tutti l'altri prugrammi ligati à vitis, travaglià bè), ma in u futuru un pacchettu di travagliu serà compilatu per sta piattaforma (armhf). Aghju cessatu di creà pacchetti RPM per ora per via di prublemi nantu à Fedora 30 è a difficultà di sparghje in parechje distribuzioni RPM, ma i pacchetti più tardi seranu sempre fatti per almenu un paru di elli. Intantu pudete aduprà make && make install
o checkinstall
.
Grazie à tutti per a vostra attenzione! Spergu chì questu articulu è stu prughjettu pò esse utile.
Source: www.habr.com