{"id":35687,"date":"2019-10-31T22:05:46","date_gmt":"2019-10-31T19:05:46","guid":{"rendered":"https:\/\/prohoster.info\/blog\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux\/"},"modified":"2019-10-31T22:05:46","modified_gmt":"2019-10-31T19:05:46","slug":"kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","title":{"rendered":"Categorie invece di directory, o Sistema di file semantico per Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>La classificazione dei dati \u00e8 un tema di ricerca molto interessante. Mi piace collezionare informazioni che sembrano rilevanti e ho sempre cercato di creare gerarchie logiche per le mie directory di file. Una volta, in un sogno, ho visto un programma bello e user-friendly per assegnare tag ai file, e ho deciso che non si poteva continuare a vivere cos\u00ec.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"problema-ierarhicheskih-faylovyh-sistem\">Il problema dei sistemi di file gerarchici<\/h1>\n<p><\/p>\n<p>Gli utenti si trovano spesso ad affrontare la questione della scelta del luogo per salvare un nuovo file e del problema del rintracciare i propri file (a volte i nomi dei file non sono nemmeno pensati per essere facilmente ricordati da una persona).<\/p>\n<p><\/p>\n<p>Una soluzione potrebbe essere rappresentata dai file system semantici, che di solito sono un'estensione dei tradizionali file system. Le directory vengono sostituite da attributi semantici, noti anche come tag, categorie, metadati. User\u00f2 pi\u00f9 spesso il termine \u00abcategoria\u00bb, poich\u00e9 nel contesto dei file system la parola \u00abtag\u00bb a volte suona strana, specialmente quando compaiono \u00absottotag\u00bb e \u00abalias dei tag\u00bb.<\/p>\n<p><\/p>\n<p>Assegnare categorie ai file elimina in gran parte i problemi di spazio di archiviazione e ricerca del file: se si ricorda (o si sospetta) almeno una delle categorie assegnate al file, il file non andr\u00e0 mai perso di vista.<\/p>\n<p><\/p>\n<p>In precedenza su Habr \u00e8 gi\u00e0 stata sollevata questa tema (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/27581\/\">uno<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/337202\/\">due<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/374465\/\">tre<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/81352\/\">quattro<\/a><\/noindex> et al.), qui descrivo la mia soluzione.<\/p>\n<p><\/p>\n<h1 id=\"put-k-realizacii\">La strada verso l'implementazione<\/h1>\n<p><\/p>\n<p>Subito dopo il sogno menzionato, ho descritto su un quaderno l'interfaccia a riga di comando che doveva garantire il necessario lavoro con le categorie. Allora ho pensato che in una o due settimane avrei potuto scrivere un prototipo, usando Python o Bash, e poi lavorare per creare un'interfaccia grafica con Qt o GTK. La realt\u00e0, come sempre, si \u00e8 rivelata molto pi\u00f9 dura e lo sviluppo si \u00e8 allungato.<\/p>\n<p><\/p>\n<p>L'idea originale era di creare un programma con un'interfaccia a riga di comando semplice e concisa che avrebbe creato, eliminato categorie, assegnato categorie ai file e rimosso categorie dai file. Ho chiamato il programma <em>vitis<\/em>.<\/p>\n<p><\/p>\n<p>Il primo tentativo di creare <em>vitis<\/em> \u00e8 finita in nulla, poich\u00e9 molto tempo ha iniziato a essere dedicato al lavoro e all'universit\u00e0. La seconda prova \u00e8 stata gi\u00e0 qualcosa: sono riuscito a completare il progetto pensato per la tesi di laurea magistrale e addirittura a realizzare un prototipo dell'interfaccia GTK. Ma quella versione si \u00e8 rivelata cos\u00ec poco affidabile e scomoda che ho dovuto rivedere molte cose.<\/p>\n<p><\/p>\n<p>Con la terza versione l'ho gi\u00e0 usato davvero per molto tempo, classificando diverse migliaia dei miei file. Questo \u00e8 stato fortemente facilitato dall'autocompletamento realizzato in bash. Ma alcuni problemi, come l'assenza di categorie automatiche e la possibilit\u00e0 di memorizzare file con lo stesso nome, rimanevano, e il programma stava gi\u00e0 cedendo sotto la propria complessit\u00e0. Cos\u00ec sono arrivato alla necessit\u00e0 di affrontare i problemi dello sviluppo di software complesso: scrivere requisiti dettagliati, sviluppare un sistema di test funzionali, studiare le istruzioni per il packaging e molto altro. Ora sono arrivato a ci\u00f2 che avevo in mente, quindi questa modesta creazione pu\u00f2 essere presentata alla comunit\u00e0. Un sistema di gestione dei file cos\u00ec specifico, come la gestione basata su categorie, solleva domande e problemi inaspettati, e nella loro risoluzione <em>vitis<\/em> ha generato attorno a s\u00e9 altri cinque progetti, alcuni dei quali saranno menzionati nell'articolo. Fino ad oggi <em>vitis<\/em> non ho acquisito un'interfaccia grafica, ma la comodit\u00e0 di utilizzare le categorie di file dalla riga di comando gi\u00e0 supera per me qualsiasi vantaggio di un normale gestore di file grafico.<\/p>\n<p><\/p>\n<h1 id=\"primery-ispolzovaniya\">Esempi di utilizzo<\/h1>\n<p><\/p>\n<p>Iniziamo con qualcosa di semplice: creiamo una categoria:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis create Musica<\/code><\/pre>\n<p><\/p>\n<p>Aggiungiamo per esempio un brano:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Musica -f \"The Ink Spots - I Don't Want To Set The World On Fire.mp3\"<\/code><\/pre>\n<p><\/p>\n<p>Per visualizzare il contenuto della categoria \u00abMusica\u00bb \u00e8 possibile utilizzare il sotto- comando \u00abshow\u00bb:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Musica<\/code><\/pre>\n<p><\/p>\n<p>Pu\u00f2 essere riprodotta usando il sotto-comando \u00abopen\u00bb<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open Musica<\/code><\/pre>\n<p><\/p>\n<p>Poich\u00e9 nella categoria \u00abMusica\u00bb abbiamo solo un file, verr\u00e0 avviato solo quello. Per aprire file con programmi predefiniti ho creato un'utilit\u00e0 separata. <em>vts-fs-open<\/em> (gli strumenti standard come xdg-open o mimeopen non mi soddisfacevano per vari motivi; tuttavia, se necessario, nelle impostazioni puoi specificare un'altra utilit\u00e0 per l'apertura universale dei file). Questa utilit\u00e0 funziona bene su diverse distribuzioni con ambienti di lavoro vari, quindi ti consiglio di installarla insieme a vitis.<\/p>\n<p><\/p>\n<p>\u00c8 possibile specificare direttamente il programma per aprire i file:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open Musica --app qmmp<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorie invece di directory, o Sistema di file semantico per Linux\" src=\"\/wp-content\/uploads\/2019\/06\/4823ff69e03b2e8b9986eedfe0604a9d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Creiamo ulteriori categorie e aggiungiamo file usando \u00abassign\u00bb. Se i file vengono assegnati a categorie non ancora esistenti, viene emesso un prompt per la loro creazione. \u00c8 possibile evitare un ulteriore prompt utilizzando il flag \u2014yes.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Programmazione R -f \"Introduzione a R.pdf\" \"Pacchetto statistico R: teoria delle probabilit\u00e0 e statistica.pdf\" --yes<\/code><\/pre>\n<p><\/p>\n<p>Ora vogliamo aggiungere al file \u00abStatistical Package R: Teoria delle probabilit\u00e0 e statistica matematica.pdf\u00bb la categoria \u00abMatematica\u00bb. Sappiamo che questo file ha gi\u00e0 la categoria \u00abR\u00bb e quindi possiamo utilizzare il percorso della categoria dal sistema Vitis:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Matematica -v \"R\/Pacchetto statistico R: teoria delle probabilit\u00e0 e statistica.pdf\"<\/code><\/pre>\n<p><\/p>\n<p>Per fortuna, il completamento automatico di bash render\u00e0 questo facile.<\/p>\n<p><\/p>\n<p>Vediamo cosa \u00e8 stato ottenuto, utilizzando il flag \u2014categories per visualizzare l'elenco delle categorie per ogni file:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show R --categories<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorie invece di directory, o Sistema di file semantico per Linux\" src=\"\/wp-content\/uploads\/2019\/06\/7bbaf561e6efe407ec8dfcda3a89c3b8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si noti che ai file sono state anche assegnate categorie automatiche in base al formato, tipo (unisce formati) ed estensione dei file. Queste categorie possono essere disattivate se lo si desidera. In seguito far\u00f2 sicuramente la localizzazione dei loro nomi.<\/p>\n<p><\/p>\n<p>Aggiungiamo per variet\u00e0 anche qualcos'altro a \u00abMatematica\u00bb:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Matematica -f \"Analisi matematica - 1984.pdf\" Perelman_Divertente_matematica_1927.djvu <\/code><\/pre>\n<p><\/p>\n<p>E ora inizia la parte interessante. Invece delle categorie, \u00e8 possibile scrivere espressioni con operazioni di unione, intersezione e sottrazione, vale a dire utilizzare operazioni insiemistiche. Ad esempio, l'intersezione di \u00abMatematica\u00bb e \u00abR\u00bb dar\u00e0 come risultato un file.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show R i: Matematica<\/code><\/pre>\n<p><\/p>\n<p>Sottraiamo dalla \u00abMatematica\u00bb i riferimenti al linguaggio \u00abR\u00bb:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Matematica R #o vitis show Matematica c: R<\/code><\/pre>\n<p><\/p>\n<p>Possiamo unire senza scopo la musica e il linguaggio R:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Musica u: R<\/code><\/pre>\n<p><\/p>\n<p>Il flag -n consente di \u00abestrarre\u00bb dai risultati della query i file desiderati in base a numeri e\/o intervalli, ad esempio, <code>-n 3-7<\/code>, o qualcosa di pi\u00f9 complesso: <code>-n 1,5,8-10,13<\/code>. Spesso \u00e8 utile con il sottocomando open, che consente di aprire file specifici dall'elenco.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorie invece di directory, o Sistema di file semantico per Linux\" src=\"\/wp-content\/uploads\/2019\/06\/5e9181a711a88368b38d8cd2f2e628f4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Anche se ci allontaniamo dall'uso della tradizionale gerarchia delle directory, spesso pu\u00f2 essere utile avere categorie nidificate. Creiamo una sottocategoria \u00abStatistica\u00bb nella categoria \u00abMatematica\u00bb e aggiungiamo questa categoria al file appropriato:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis create Matematica\/Statistica\n\nvitis assign Matematica\/Statistica -v \"R\/Introduzione a R.pdf\"\n\nvitis show Matematica --categories<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorie invece di directory, o Sistema di file semantico per Linux\" src=\"\/wp-content\/uploads\/2019\/06\/0bb3381f35cfa2fce381ecc66a62701f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Possiamo vedere che questo file ora ha la categoria \u00abMatematica\/Statistica\u00bb invece di \u00abMatematica\u00bb (i collegamenti superflui vengono monitorati).<\/p>\n<p><\/p>\n<p>Rivolgersi al percorso completo pu\u00f2 essere scomodo, creiamo un alias \"globale\":<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Matematica\/Statistica -a Statistica\n\nvitis show Statistica<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorie invece di directory, o Sistema di file semantico per Linux\" src=\"\/wp-content\/uploads\/2019\/06\/619c27802802fd93594d3c0050dd78e8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"ne-tolko-obychnye-fayly\">Non solo file comuni<\/h2>\n<p><\/p>\n<h3 id=\"internet-ssylki\">Link Internet<\/h3>\n<p><\/p>\n<p>Per uniformare la memorizzazione di qualsiasi informazione, sarebbe utile, almeno, categorizzare i link alle risorse Internet. Ed \u00e8 possibile:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Habr Coloreanomalia -i https:\/\/habr.com\/ru\/company\/sfe_ru\/blog\/437304\/ --yes<\/code><\/pre>\n<p><\/p>\n<p>In un luogo speciale verr\u00e0 creato un file con il titolo della pagina HTML e con estensione .desktop. Questo \u00e8 il formato tradizionale per i collegamenti in GNU\/Linux. Tali collegamenti ricevono automaticamente la categoria NetworkBookmarks.<\/p>\n<p><\/p>\n<p>Naturalmente, i collegamenti vengono creati per essere utilizzati:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open Coloreanomalia<\/code><\/pre>\n<p><\/p>\n<p>L'esecuzione del comando porta all'apertura nel browser del link appena salvato. I collegamenti categorizzati alle fonti Internet possono sostituire i segnalibri del browser.<\/p>\n<p><\/p>\n<h3 id=\"fragmenty-faylov\">Frammenti di file<\/h3>\n<p><\/p>\n<p>\u00c8 anche utile avere categorie per singoli frammenti di file. Non male, vero? Ma l'implementazione attuale riguarda solo file di testo normali, audio e video. Ad esempio, se hai bisogno di contrassegnare un certo pezzo di un concerto o un momento divertente in un film, quando usi assign puoi avvalerti dei flag \u2014fragname, \u2014start, \u2014finish. Salviamo l'introduzione di \"Duck Tales\":<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign vitis assign -c Introduzioni -f Duck_Tales\/s01s01.avi --finish 00:00:59 --fragname \"Introduzione Duck Tales\"\n\nvitis open Introduzioni<\/code><\/pre>\n<p><\/p>\n<p>In realt\u00e0 non viene effettuata alcuna troncatura dei file, invece viene creato un file di puntamento per il frammento, in cui \u00e8 descritto il tipo di file, il percorso del file, l'inizio e la fine del frammento. La creazione e l'apertura di puntatori ai frammenti \u00e8 delegata a utility appositamente fatte da me per questi scopi \u2014 sono mediafragmenter e fragplayer. Il primo crea, il secondo apre. Nel caso di registrazioni audio e video, l'avvio del file multimediale da una certa posizione a un'altra avviene tramite il lettore VLC, quindi deve essere presente anche nel sistema. Inizialmente volevo farlo basato su mplayer, ma l\u00ec per qualche motivo c'era molto disguido con il posizionamento nel momento desiderato.<br \/>\nNel nostro esempio viene creato un file \"Duck Tales intro.fragpointer\" (viene posizionato in un luogo particolare), e poi viene riprodotto il frammento dall'inizio del file (dato che \u2014start non \u00e8 stato specificato durante la creazione) fino al segno di 59 secondi, dopo di che VLC si chiude.<\/p>\n<p><\/p>\n<p>Un altro esempio: abbiamo deciso di categorizzare una singola esibizione a un concerto di un noto artista:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign \u041b\u0435\u043f\u0441 \"\u0421\u043f\u0430\u0441\u0438\u0442\u0435 \u043d\u0430\u0448\u0438 \u0434\u0443\u0448\u0438\" -f \u0413\u0440\u0438\u0433\u043e\u0440\u0438\u0439 \u041b\u0435\u043fc - \u041a\u043e\u043d\u0446\u0435\u0440\u0442 \u041f\u0430\u0440\u0443\u0441 - \u043f\u0435\u0441\u043d\u0438 \u0412\u043b\u0430\u0434\u0438\u043c\u0438\u0440\u0430 \u0412\u044b\u0441\u043e\u0446\u043a\u043e\u0433\u043e.mp4 --fragname \"\u0421\u043f\u0430\u0441\u0438\u0442\u0435 \u043d\u0430\u0448\u0438 \u0434\u0443\u0448\u0438\" --start 00:32:18 --finish 00:36:51\n\nvitis open \"\u0421\u043f\u0430\u0441\u0438\u0442\u0435 \u043d\u0430\u0448\u0438 \u0434\u0443\u0448\u0438\"<\/code><\/pre>\n<p><\/p>\n<p>All'apertura, il file sar\u00e0 incluso nella posizione desiderata e si chiuder\u00e0 dopo quattro minuti e mezzo.<\/p>\n<p><\/p>\n<h1 id=\"kak-eto-vsyo-rabotaet--dopolnitelnye-vozmozhnosti\">Come funziona tutto questo + possibilit\u00e0 aggiuntive<\/h1>\n<p><\/p>\n<h2 id=\"hranenie-kategoriy\">Conservazione delle categorie<\/h2>\n<p><\/p>\n<p>All'inizio della progettazione dell'organizzazione del sistema di file semantico, ho pensato a tre modi: attraverso la conservazione di collegamenti simbolici, tramite un database, attraverso una descrizione in XML. Ha prevalso il primo modo, poich\u00e9 da un lato \u00e8 semplice da implementare, dall'altro consente all'utente di visualizzare le categorie direttamente dal sistema di file (ed \u00e8 comodo e importante). All'inizio dell'utilizzo <em>vitis<\/em> nella home directory dell'utente viene creata una directory \"Vitis\" e un file di configurazione \".config\/vitis\/vitis.conf\". In ~\/Vitis vengono create directory corrispondenti alle categorie, e in queste directory-categorie vengono create collegamenti simbolici ai file originali. Gli alias delle categorie sono anche semplici collegamenti a essi. Certo, la presenza della directory \"Vitis\" nella home directory potrebbe non piacere a qualcuno. Possiamo passare a qualsiasi altro luogo:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis service set path \/mnt\/MyFavoriteDisk\/Vitis\/<\/code><\/pre>\n<p><\/p>\n<p>A un certo punto diventa chiaro che categorizzare file sparsi in vari luoghi ha poco senso, poich\u00e9 la loro posizione pu\u00f2 cambiare. Per questo motivo, all'inizio ho creato una directory dove semplicemente scaricavo tutto e davo a tutto delle categorie. Poi ho pensato che non sarebbe male formalizzare questo aspetto a livello programmatico. Cos\u00ec \u00e8 nato il concetto di \"spazio dei file\". All'inizio dell'uso <em>vitis<\/em> non sarebbe male impostare subito un luogo del genere (dove saranno archiviati tutti i file necessari) e attivare il salvataggio automatico:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis service add filespace \/mnt\/MyFavoriteDisk\/Filespace\/\n\nvitis service set autosave yes<\/code><\/pre>\n<p><\/p>\n<p>Senza salvataggio automatico quando si utilizza il sottocomando \u00abassign\u00bb, sar\u00e0 necessario il flag \u2014save, se si desidera salvare il file aggiunto nello spazio di archiviazione.<\/p>\n<p><\/p>\n<p>Inoltre, \u00e8 possibile aggiungere diversi spazi di archiviazione e modificarne le priorit\u00e0, il che pu\u00f2 essere utile quando ci sono molti file e sono memorizzati su diversi supporti. Qui non esaminer\u00f2 questa possibilit\u00e0, i dettagli possono essere letti nella guida del programma.<\/p>\n<p><\/p>\n<h2 id=\"migraciya-semanticheskoy-faylovoy-sistemy\">Migrazione del sistema di file semantico<\/h2>\n<p><\/p>\n<p>In un modo o nell'altro, la directory Vitis e gli spazi di archiviazione a volte possono spostarsi da un luogo all'altro. Per garantire il funzionamento, ho creato un'utilit\u00e0 separata <em>link-editor<\/em>, che pu\u00f2 modificare in massa i collegamenti, sostituendo parti del percorso con altre:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">cp -r \/mnt\/MyFavoriteDisk\/Vitis\/ ~\/Vitis\nlink-editor -d ~\/Vitis\/ -f \/mnt\/MyFavoriteDisk\/Vitis\/ -r ~\/Vitis\/ -R\ncp -r \/mnt\/MyFavoriteDisk\/Filespace\/ ~\/MyFiles\nlink-editor -d ~\/Vitis\/ -f \/mnt\/FlashDrive-256\/Filespace\/ -r ~\/MyFiles -R<\/code><\/pre>\n<p><\/p>\n<p>Nel primo caso, dopo essersi spostati da \/mnt\/MyFavoriteDisk\/Vitis\/ nella directory home, vengono modificati i collegamenti simbolici associati agli alias. Nel secondo caso, dopo aver cambiato la posizione dello spazio di archiviazione, vengono aggiornati tutti i collegamenti in Vitis ai nuovi in base alla richiesta di sostituzione di una parte del loro percorso.<\/p>\n<p><\/p>\n<h2 id=\"avtomaticheskie-kategorii\">Categorie automatiche<\/h2>\n<p><\/p>\n<p>Se si esegue il comando <code>vitis service get autocategorization<\/code>, si pu\u00f2 vedere che per impostazione predefinita \u00e8 configurata l'assegnazione automatica delle categorie in base al formato (Format e Type) e all'estensione dei file (Extension).<\/p>\n<p><\/p>\n<p>Questo \u00e8 utile, ad esempio, quando si deve trovare qualcosa tra i PDF o controllare cosa si ha memorizzato da EPUB e FB2, \u00e8 possibile eseguire semplicemente la richiesta<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Format\/MOBI u: Format\/FB2<\/code><\/pre>\n<p><\/p>\n<p>\u00c8 successo che gli strumenti standard GNU\/Linux come file o mimetype non mi hanno soddisfatto precisamente perch\u00e9 non sempre determinano correttamente il formato; ho dovuto creare la mia implementazione basata sulle firme dei file e sulle estensioni. In generale, il tema del riconoscimento dei formati dei file \u00e8 interessante per la ricerca e merita un articolo a parte. Al momento posso dire che, forse, non ho previsto il riconoscimento accurato per tutti i formati nel mondo, ma nel complesso gi\u00e0 ora funziona abbastanza bene. In verit\u00e0, per EPUB il formato viene attualmente determinato come ZIP (il che \u00e8 giustificato, ma nella pratica non si dovrebbe considerare un comportamento normale). Fino a un certo punto, considerate questa possibilit\u00e0 come sperimentale, segnalate i bug. In situazioni particolari, \u00e8 sempre possibile utilizzare le categorie in base all'estensione dei file, ad esempio, Extension\/epub.<\/p>\n<p><\/p>\n<p>Se le autocategorie per formato sono attive, sono incluse anche autocategorie che raggruppano alcuni formati come: \u00abArchives\u00bb, \u00abPictures\u00bb, \u00abVideo\u00bb, \u00abAudio\u00bb e \u00abDocuments\u00bb. Anche per queste sottocategorie verranno create delle denominazioni localizzate.<\/p>\n<p><\/p>\n<h1 id=\"o-chyom-ne-skazano\">Di cosa non si parla<\/h1>\n<p><\/p>\n<p><em>vitis<\/em> \u00e8 diventato uno strumento molto versatile e difficile da coprire tutto in una volta. Accenner\u00f2 brevemente a ci\u00f2 che \u00e8 possibile fare:<\/p>\n<p><\/p>\n<ul>\n<li>le categorie possono essere eliminate e rimosse dai file;<\/li>\n<li>i risultati delle query tramite espressioni possono essere copiati nella directory specificata;<\/li>\n<li>i file possono essere eseguiti come programmi;<\/li>\n<li>il comando show ha molte opzioni, ad esempio, ordinamento per nome\/data di modifica o accesso\/dimensione\/estensione, visualizzazione delle propriet\u00e0 dei file e dei percorsi verso gli originali, attivazione della visualizzazione dei file nascosti e altro;<\/li>\n<li>salvando i link a risorse web, \u00e8 possibile salvare anche copie locali delle pagine HTML.<\/li>\n<\/ul>\n<p><\/p>\n<p>Tutti i dettagli possono essere trovati nella guida utente.<\/p>\n<p><\/p>\n<h1 id=\"perspektivy\">Prospettive<\/h1>\n<p><\/p>\n<p>Spesso gli scettici dicono che \u00abnessuno si prender\u00e0 la briga di assegnare questi tag\u00bb. Posso dimostrare il contrario con la mia esperienza: ho gi\u00e0 categorizzato oltre seimila file, creato pi\u00f9 di mille categorie e pseudonimi, e ne \u00e8 valsa la pena. Quando con un comando <code>vitis open Piano<\/code> apri la lista delle tue attivit\u00e0 o quando con il comando <code>vitis open LaTeX<\/code> apri il libro di Stolyarov sul sistema di impaginazione LaTeX, diventa gi\u00e0 mentalmente difficile utilizzare il sistema di file \u00aballa vecchia maniera\u00bb.<\/p>\n<p><\/p>\n<p>Su questa base sorgono varie idee. Ad esempio, si potrebbe creare una radio automatica che riproduce musica a tema in base alle attuali condizioni meteorologiche, festivit\u00e0, giorno della settimana, ora del giorno o anno. Inoltre, un lettore musicale che conosce le categorie e pu\u00f2 riprodurre musica in base a espressioni con operazioni sulle categorie come insiemi. \u00c8 utile creare un demone che seguir\u00e0 la cartella \u00abDownloads\u00bb e offrir\u00e0 di categorizzare nuovi file. E, naturalmente, sarebbe opportuno realizzare un normale gestore di file semantico grafico. Un tempo, avevo persino sviluppato un servizio web per l'uso collettivo dei file per un'azienda, ma non era una priorit\u00e0 ed \u00e8 diventato obsoleto, anche se ha raggiunto un alto livello di funzionalit\u00e0. (A causa dei grandi cambiamenti in corso nel <em>vitis<\/em>, non \u00e8 pi\u00f9 utilizzabile.)<\/p>\n<p>\n<b class=\"spoiler_title\">qui una piccola dimostrazione<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Categorie invece di directory, o Sistema di file semantico per Linux\" src=\"\/wp-content\/uploads\/2019\/06\/0a8e3829424135a6bf9390d2b2654499.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclusione<\/h1>\n<p><\/p>\n<p><em>Vitis<\/em> \u2014 non \u00e8 il primo tentativo di modificare radicalmente lo stile di lavoro con i dati, ma ho ritenuto importante realizzare le mie idee e rendere l'implementazione accessibile pubblicamente sotto licenza GNU GPL. Per comodit\u00e0 \u00e8 stato creato un pacchetto deb per x86-64, dovrebbe funzionare su tutte le moderne distribuzioni Debian. Su ARM ci sono state piccole difficolt\u00e0 (tuttavia, tutti gli altri programmi legati a <em>vitis<\/em>, funzionano normalmente), ma in futuro verr\u00e0 costruito un pacchetto funzionante anche per questa piattaforma (armhf). Ho smesso di occuparmi della creazione di pacchetti RPM a causa di problemi con Fedora 30 e alla difficolt\u00e0 di disperdersi su molte distribuzioni RPM, ma in seguito verranno comunque creati pacchetti per almeno un paio di esse. Nel frattempo, si pu\u00f2 utilizzare <code>make &amp;&amp; make install<\/code> o <code>checkinstall<\/code>.<\/p>\n<p><\/p>\n<p>Grazie a tutti per l'attenzione! Spero che questo articolo e questo progetto possano risultare utili.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/tech.vindex\/vitis\">Link al repository del progetto<\/a><\/noindex><\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/457328\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439. \u042f \u043b\u044e\u0431\u043b\u044e \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043a\u0430\u0436\u0443\u0449\u0443\u044e\u0441\u044f \u043d\u0443\u0436\u043d\u043e\u0439, \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0434\u0435\u043b\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0435 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439 \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u0438 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0432\u043e \u0441\u043d\u0435 \u044f \u0443\u0432\u0438\u0434\u0435\u043b \u043a\u0440\u0430\u0441\u0438\u0432\u0443\u044e \u0438 \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u044d\u0433\u043e\u0432 \u0444\u0430\u0439\u043b\u0430\u043c, \u0438 \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u0434\u0430\u043b\u044c\u0448\u0435 \u0442\u0430\u043a \u0436\u0438\u0442\u044c \u043d\u0435\u043b\u044c\u0437\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0447\u0430\u0441\u0442\u043e \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26733,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35687","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439, \u0438\u043b\u0438 \u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f Linux | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:05:46+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:05:46+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Categorie invece di directory, o Sistema di file semantico per Linux | ProHoster","description":"La classificazione dei dati \u00e8 di per s\u00e9 un tema interessante per la ricerca.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439, \u0438\u043b\u0438 \u0421\u0435\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f Linux | ProHoster","og:description":"\u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0439.","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:05:46+00:00","article:modified_time":"2019-10-31T19:05:46+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35687","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 00:23:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:57:46","updated":"2026-01-22 00:23:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/35687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=35687"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/35687\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/26733"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=35687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=35687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=35687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}