{"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\/nl\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","title":{"rendered":"Categorie\u00ebn in plaats van mappen, of een semantisch bestandssysteem voor Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>De classificatie van data is op zich een interessant onderwerp voor onderzoek. Ik hou ervan om informatie te verzamelen die nuttig lijkt, en heb altijd geprobeerd logische hi\u00ebrarchie\u00ebn van mappen voor mijn bestanden te maken. Op een nacht droomde ik van een prachtig en gebruiksvriendelijk programma om bestanden van tags te voorzien, en ik besloot dat dit niet langer zo kon doorgaan.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"problema-ierarhicheskih-faylovyh-sistem\">Probleem van hi\u00ebrarchische bestandsystemen<\/h1>\n<p><\/p>\n<p>Gebruikers stuiten vaak op het probleem van waar ze hun nieuwe bestand moeten opslaan en het probleem van het vinden van hun eigen bestanden (soms zijn de bestandsnamen helemaal niet gemaakt om door mensen onthouden te worden).<\/p>\n<p><\/p>\n<p>Een oplossing kan worden gevonden in semantische bestandsystemen, die meestal een laag bovenop traditionele bestandsystemen zijn. In plaats van mappen worden semantische attributen gebruikt, ook wel tags, categorie\u00ebn of metadata genoemd. Ik zal vaker de term 'categorie' gebruiken, omdat het woord 'tag' in de context van bestandsystemen soms vreemd klinkt, vooral wanneer er 'subtags' en 'aliasen' voor tags ontstaan.<\/p>\n<p><\/p>\n<p>Het toewijzen van categorie\u00ebn aan bestanden vermindert in hoge mate de problemen met opslaan en het vinden van bestanden: als je je (of vermoedt) tenminste \u00e9\u00e9n van de toegewezen categorie\u00ebn van een bestand herinnert, dan zal het bestand nooit uit zicht raken.<\/p>\n<p><\/p>\n<p>Eerder is dit onderwerp meermaals op Habr behandeld (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/27581\/\">one<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/337202\/\">two<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/374465\/\">drie<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/81352\/\">vier<\/a><\/noindex> en anderen), hier beschrijf ik mijn oplossing.<\/p>\n<p><\/p>\n<h1 id=\"put-k-realizacii\">De weg naar implementatie<\/h1>\n<p><\/p>\n<p>Meteen na de genoemde droom beschreef ik in een notitieboek de commandoregelinterface die de noodzakelijke functies voor het werken met categorie\u00ebn moest bieden. Toen besloot ik dat ik binnen een week of twee een prototype kon schrijven met Python of Bash, en daarna zou ik moeten werken aan het cre\u00ebren van een grafische interface met Qt of GTK. De realiteit was, zoals altijd, veel strenger en de ontwikkeling liep uit.<\/p>\n<p><\/p>\n<p>Het oorspronkelijke idee was om vooral een programma te maken met een gebruiksvriendelijke en beknopte commandoregelinterface dat categorie\u00ebn kan aanmaken, verwijderen, categorie\u00ebn aan bestanden kan toewijzen en categorie\u00ebn uit bestanden kan verwijderen. Ik noemde het programma <em>vitis<\/em>.<\/p>\n<p><\/p>\n<p>De eerste poging om te cre\u00ebren <em>vitis<\/em> stond stil, omdat er veel tijd moest worden besteed aan werk en de universiteit. De tweede poging was al iets: ik slaagde erin het geplande project af te ronden voor mijn masterthese en zelfs een prototype van de GTK-interface te maken. Maar die versie bleek zo onbetrouwbaar en onhandig dat ik veel opnieuw moest overdenken.<\/p>\n<p><\/p>\n<p>Met de derde versie gebruikte ik het zelf echt heel lang, waarbij ik enkele duizenden van mijn bestanden in categorie\u00ebn heb geplaatst. Dit werd onder andere sterk gefaciliteerd door de gerealiseerde autocompletion in bash. Maar sommige problemen, zoals het ontbreken van automatische categorie\u00ebn en de mogelijkheid om bestanden met dezelfde naam op te slaan, bleven bestaan, terwijl het programma al onder zijn eigen complexiteit bezweek. Zo kwam ik tot de noodzaak om de problemen van de ontwikkeling van complexe software op te lossen: gedetailleerde vereisten op te stellen, een systeem voor functionele tests te ontwikkelen, instructies voor pakketbeheer te bestuderen en nog veel meer. Nu ben ik aangekomen bij het beoogde resultaat, zodat dit bescheiden werk kan worden gepresenteerd aan de vrije gemeenschap. Dit specifieke bestandsbeheer, zoals het beheren via het concept van categorie\u00ebn, raakt onverwachte kwesties en problemen aan, en in het oplossen daarvan <em>vitis<\/em> werd er nog eens vijf projecten omheen geboren, waarvan sommige in het artikel zullen worden genoemd. Tot op de dag van vandaag <em>vitis<\/em> heb ik geen grafische interface aangeschaft, maar het gebruiksgemak van bestandscategorie\u00ebn vanuit de commandoregel overschaduwt voor mij al de voordelen van een gewone grafische bestandsbeheerder.<\/p>\n<p><\/p>\n<h1 id=\"primery-ispolzovaniya\">Voorbeelden van gebruik<\/h1>\n<p><\/p>\n<p>Laten we beginnen met het eenvoudige \u2014 een categorie aanmaken:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis create Muziek<\/code><\/pre>\n<p><\/p>\n<p>Laten we er als voorbeeld een compositie aan toevoegen:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Muziek -f \"The Ink Spots - I Don't Want To Set The World On Fire.mp3\"<\/code><\/pre>\n<p><\/p>\n<p>De inhoud van de categorie 'Muziek' kan worden bekeken met het subcommando 'show':<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Muziek<\/code><\/pre>\n<p><\/p>\n<p>Het kan worden afgespeeld met het subcommando 'open'.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open Muziek<\/code><\/pre>\n<p><\/p>\n<p>Aangezien we in de categorie 'Muziek' maar \u00e9\u00e9n bestand hebben, zal alleen dat bestand worden gestart. Voor het openen van bestanden met standaardprogramma's heb ik een aparte utility gemaakt. <em>vts-fs-open<\/em> (Standaard tools zoals xdg-open of mimeopen waren om verschillende redenen niet bevredigend voor mij; maar als het nodig is, kun je in de instellingen een andere tool opgeven voor universeel openen van bestanden). Deze tool werkt goed op verschillende distributies met verschillende desktopomgevingen, daarom raad ik aan om deze samen met vitis te installeren.<\/p>\n<p><\/p>\n<p>Je kunt ook rechtstreeks het programma opgeven voor het openen van bestanden:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open Muziek --app qmmp<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorie\u00ebn in plaats van mappen, of een semantisch bestandssysteem voor Linux\" src=\"\/wp-content\/uploads\/2019\/06\/4823ff69e03b2e8b9986eedfe0604a9d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Laten we nog meer categorie\u00ebn aanmaken en bestanden toevoegen met behulp van 'assign'. Als bestanden worden toegewezen aan nog niet bestaande categorie\u00ebn, wordt er om hun creatie gevraagd. Dit verzoek kan worden vermeden door de vlag --yes te gebruiken.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Programmeren R -f \"Inleiding tot R.pdf\" \"Statistisch pakket R: kansrekening en wiskundige statistiek.pdf\" --yes<\/code><\/pre>\n<p><\/p>\n<p>Nu willen we het bestand 'Statistisch pakket R: theorie van waarschijnlijkheid en statistiek.pdf' de categorie 'Wiskunde' toevoegen. We weten dat dit bestand al de categorie 'R' heeft en kunnen daarom het categoriekpad uit het Vitis-systeem gebruiken:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Wiskunde -v \"R\/Statistisch pakket R: kansrekening en wiskundige statistiek.pdf\"<\/code><\/pre>\n<p><\/p>\n<p>Gelukkig maakt de bash-autocompletion dit eenvoudig.<\/p>\n<p><\/p>\n<p>Laten we zien wat we hebben, gebruik makend van de vlag --categories, zodat we de lijst met categorie\u00ebn voor elk bestand kunnen bekijken:<\/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\u00ebn in plaats van mappen, of een semantisch bestandssysteem voor Linux\" src=\"\/wp-content\/uploads\/2019\/06\/7bbaf561e6efe407ec8dfcda3a89c3b8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Merk op dat bestanden ook automatische categorie\u00ebn zijn toegewezen op basis van formaat, type (combineert formaten) en bestandsextensie. Deze categorie\u00ebn kunnen indien gewenst worden uitgeschakeld. Later zal ik zeker hun namen lokaliseren.<\/p>\n<p><\/p>\n<p>Laten we voor de afwisseling nog iets toevoegen aan 'Wiskunde':<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Wiskunde -f \"Wiskundige analyse - 1984.pdf\" Perelman_Leuke_wiskunde_1927.djvu <\/code><\/pre>\n<p><\/p>\n<p>En nu begint het interessante deel. In plaats van categorie\u00ebn kunnen we expressies schrijven met de operaties van vereniging, intersectie en uittrekken, dat wil zeggen, we kunnen operaties op verzamelingen gebruiken. Bijvoorbeeld, de intersectie van 'Wiskunde' met 'R' zal resulteren in \u00e9\u00e9n bestand.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show R i: Wiskunde<\/code><\/pre>\n<p><\/p>\n<p>Laten we de vermeldingen van de taal 'R' uit 'Wiskunde' trekken:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Wiskunde R  #of vitis show Wiskunde c: R<\/code><\/pre>\n<p><\/p>\n<p>We kunnen muziek en de taal R willekeurig combineren:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Muziek u: R<\/code><\/pre>\n<p><\/p>\n<p>De vlag -n stelt ons in staat om uit het resultaat van de query de benodigde bestanden op nummers en\/of bereiken 'te trekken', bijvoorbeeld: <code>-n 3-7<\/code>, of iets complexer: <code>-n 1,5,8-10,13<\/code>. Het is vaak nuttig met de subopdracht open, waarmee je de benodigde bestanden uit de lijst kunt openen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorie\u00ebn in plaats van mappen, of een semantisch bestandssysteem voor Linux\" src=\"\/wp-content\/uploads\/2019\/06\/5e9181a711a88368b38d8cd2f2e628f4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hoewel we ons van het gebruik van een gewone hi\u00ebrarchie van mappen verwijderen, is het vaak nuttig om geneste categorie\u00ebn te hebben. Laten we de subcategorie 'Statistiek' onder de categorie 'Wiskunde' aanmaken en deze categorie aan het geschikte bestand toevoegen:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis create Wiskunde\/Statistiek\n\nvitis assign Wiskunde\/Statistiek -v \"R\/Inleiding tot R.pdf\"\n\nvitis show Wiskunde --categories<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorie\u00ebn in plaats van mappen, of een semantisch bestandssysteem voor Linux\" src=\"\/wp-content\/uploads\/2019\/06\/0bb3381f35cfa2fce381ecc66a62701f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>We kunnen zien dat dit bestand nu de categorie 'Wiskunde\/Statistiek' heeft in plaats van 'Wiskunde' (overtollige links worden bijgehouden).<\/p>\n<p><\/p>\n<p>Het kan ongemakkelijk zijn om met het volledige pad te werken, laten we een 'globale' alias aanmaken:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Wiskunde\/Statistiek -a Statistiek\n\nvitis show Statistiek<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorie\u00ebn in plaats van mappen, of een semantisch bestandssysteem voor 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\">Niet alleen reguliere bestanden<\/h2>\n<p><\/p>\n<h3 id=\"internet-ssylki\">Internetlinks<\/h3>\n<p><\/p>\n<p>Voor de uniformiteit van het opslaan van informatie zou het nuttig zijn om in ieder geval internetbronnen te categoriseren. En dat is mogelijk:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Habr Kleuranomalie -i https:\/\/habr.com\/nl\/company\/sfe_ru\/blog\/437304\/ --yes<\/code><\/pre>\n<p><\/p>\n<p>Op een speciale plaats wordt een bestand gecre\u00eberd met de HTML-pagina titel en met de extensie .desktop. Dit is het traditionele formaat voor snelkoppelingen in GNU\/Linux. Dergelijke snelkoppelingen krijgen automatisch de categorie NetworkBookmarks.<\/p>\n<p><\/p>\n<p>Natuurlijk worden snelkoppelingen gemaakt om gebruikt te worden:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open Kleuranomalie<\/code><\/pre>\n<p><\/p>\n<p>De uitvoering van de opdracht opent in de browser de zojuist opgeslagen link. Gecategoriseerde snelkoppelingen naar internetbronnen kunnen de functie van browserbladwijzers vervangen.<\/p>\n<p><\/p>\n<h3 id=\"fragmenty-faylov\">Bestandsfragmenten<\/h3>\n<p><\/p>\n<p>Het is ook nuttig om categorie\u00ebn voor afzonderlijke bestandsfragmenten te hebben. Niet slecht, toch? Maar de huidige implementatie betreft voorlopig alleen standaard tekstbestanden, audio- en videobestanden. Stel, je wilt een bepaald stuk van een concert of een grappig moment uit een film markeren, dan kun je bij het gebruik van assign profiteren van de vlaggen --fragname, --start, --finish. Laten we de intro uit 'Duck Tales' opslaan:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign vitis assign -c Intro's -f Duck_Tales\/s01s01.avi --finish 00:00:59 --fragname \"Duck Tales intro\"\n\nvitis open Intro's<\/code><\/pre>\n<p><\/p>\n<p>Er vindt eigenlijk geen afsnijden van bestanden plaats; in plaats daarvan wordt er een pointerbestand voor het fragment aangemaakt, waarin het type bestand, het pad naar het bestand, het begin en het einde van het fragment worden beschreven. Het aanmaken en openen van pointers voor fragmenten wordt gedelegeerd aan tools die ik speciaal voor deze doeleinden heb gemaakt - mediafragmenter en fragplayer. De eerste maakt aan, de tweede opent. In het geval van audio- en videobestanden gebeurt het afspelen van het mediabestand vanaf een bepaalde tot een bepaalde positie met behulp van VLC-speler, dus deze moet ook in het systeem aanwezig zijn. Ik wilde dit aanvankelijk op basis van mplayer doen, maar daar was het om de een of andere reden erg rommelig met het positioneren op het juiste moment.<br \/>\nIn ons voorbeeld wordt er een bestand 'Duck Tales intro.fragpointer' aangemaakt (het wordt op een speciale plek opgeslagen), en vervolgens wordt er een fragment afgespeeld van het begin van het bestand (aangezien --start niet was opgegeven bij de creatie) tot het label op 59 seconden, waarna VLC wordt gesloten.<\/p>\n<p><\/p>\n<p>Een ander voorbeeld is dat we besloten hebben een afzonderlijke uitvoering op een concert van een bekende artiest te categoriseren:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign \u041b\u0435\u043f\u0441 \"Spasite nashi dushi\" -f Grigory Leps - Concert Parus - nummers van Vladimir Vysotsky.mp4 --fragname \"Spasite nashi dushi\" --start 00:32:18 --finish 00:36:51\n\nvitis open \"Spasite nashi dushi\"<\/code><\/pre>\n<p><\/p>\n<p>Bij het openen zal het bestand op de juiste positie worden afgespeeld en na vier en een halve minuut sluiten.<\/p>\n<p><\/p>\n<h1 id=\"kak-eto-vsyo-rabotaet--dopolnitelnye-vozmozhnosti\">Hoe dit alles werkt + extra mogelijkheden<\/h1>\n<p><\/p>\n<h2 id=\"hranenie-kategoriy\">Categorisatie opslag<\/h2>\n<p><\/p>\n<p>Aan het begin van het doordenken van de organisatie van het semantische bestandssysteem kwamen er drie manieren in me op: door het opslaan van symbolische links, via een database, of door een beschrijving in XML. De eerste manier won, omdat deze enerzijds eenvoudig te implementeren is, en anderzijds de gebruiker de mogelijkheid biedt om de categorie\u00ebn rechtstreeks vanuit het bestandssysteem te bekijken (wat handig en belangrijk is). Aan het begin van het gebruik <em>vitis<\/em> In de thuisdirectory van de gebruiker wordt een directory 'Vitis' aangemaakt en een configuratiebestand '.config\/vitis\/vitis.conf'. In ~\/Vitis worden directories aangemaakt die overeenkomen met de categorie\u00ebn, en in deze categorie-directories worden symbolische links naar de originele bestanden aangemaakt. De aliassen voor de categorie\u00ebn zijn ook gewoon links naar hen. Natuurlijk kan het hebben van een directory 'Vitis' in de thuisdirectory voor sommigen onaangenaam zijn. We kunnen overschakelen naar een andere locatie:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis service set path \/mnt\/MyFavoriteDisk\/Vitis\/<\/code><\/pre>\n<p><\/p>\n<p>Op een bepaald moment wordt het duidelijk dat het categoriseren van verspreide bestanden weinig zinnig is, aangezien hun locatie kan veranderen. Daarom heb ik eerst een directory aangemaakt waar ik gewoon alles dumpte en het alles categoriseerde. Vervolgens besloot ik dat het goed zou zijn om dit op softwarematig niveau te regelen. Zo ontstond het concept van 'bestandsruimte'. Aan het begin van het gebruik <em>vitis<\/em> zou het meteen handig zijn om zo'n plek in te stellen (daar worden alle bestanden die we nodig hebben opgeslagen) en autosave in te schakelen:<\/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>Zonder automatische opslag bij het gebruik van de subopdracht &#171;assign&#187; is de vlag &#8212;save vereist als je wilt dat het toegevoegde bestand in de bestandsruimte wordt opgeslagen.<\/p>\n<p><\/p>\n<p>Bovendien kun je meerdere bestandsruimtes toevoegen en hun prioriteiten wijzigen, wat nuttig kan zijn wanneer er veel bestanden zijn die op verschillende media zijn opgeslagen. Hier zal ik deze mogelijkheid niet behandelen, details zijn te vinden in de handleiding van het programma.<\/p>\n<p><\/p>\n<h2 id=\"migraciya-semanticheskoy-faylovoy-sistemy\">Migratie van het semantische bestandssysteem<\/h2>\n<p><\/p>\n<p>Hoe dan ook, de Vitis-directory en bestandsruimtes kunnen theoretisch af en toe van plaats veranderen. Om dit operationeel te maken, heb ik een aparte utility gecre\u00eberd <em>link-editor<\/em>, die links massaal kan bewerken door delen van het pad door andere te vervangen:<\/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>In het eerste geval, nadat we zijn verhuisd van \/mnt\/MyFavoriteDisk\/Vitis\/ naar de thuismap, worden de symbolische links die zijn gerelateerd aan aliassen bewerkt. In het tweede geval worden na het wijzigen van de locatie van de bestandsruimte alle links in Vitis gewijzigd op basis van de wijzigingsaanvraag van hun pad.<\/p>\n<p><\/p>\n<h2 id=\"avtomaticheskie-kategorii\">Automatische categorie\u00ebn<\/h2>\n<p><\/p>\n<p>Als je het commando uitvoert <code>vitis service get autocategorization<\/code>, kun je zien dat standaard automatische categorie-indeling is ingesteld op basis van (Format en Type) en bestandsextensies (Extension).<\/p>\n<p><\/p>\n<p>Dit is nuttig wanneer je bijvoorbeeld iets moet vinden tussen PDF's of wilt zien wat je hebt opgeslagen in EPUB en FB2, je kunt gewoon de query uitvoeren<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Format\/MOBI u: Format\/FB2<\/code><\/pre>\n<p><\/p>\n<p>Het is zo gekomen dat de standaard tools van GNU\/Linux zoals file of mimetype me niet tevredenstelden, omdat ze niet altijd het juiste formaat kunnen bepalen. Daarom heb ik een eigen implementatie gemaakt op basis van bestandssignaturen en extensies. Over het algemeen is het bepalen van bestandsformaten een interessant onderwerp voor onderzoek en verdient het een apart artikel. Voorlopig kan ik zeggen dat ik misschien niet voor alle bestandsformaten ter wereld een nauwkeurige herkenning heb voorzien, maar over het algemeen werkt het al behoorlijk goed. Helaas wordt het formaat voor EPUB momenteel als ZIP herkend (wat in wezen gerechtvaardigd is, maar in de praktijk niet als normaal gedrag moet worden beschouwd). Tot op zekere hoogte moet je deze mogelijkheid als experimenteel beschouwen; meld bugs. In vreemde situaties kan je altijd gebruik maken van categorie\u00ebn op basis van bestandsextensies, bijvoorbeeld Extension\/epub.<\/p>\n<p><\/p>\n<p>Als de automatische categorie\u00ebn op basis van het formaat zijn ingeschakeld, zijn ook de automatische categorie\u00ebn ingeschakeld die bepaalde formaten combineren, zoals: &#171;Archieven&#187;, &#171;Afbeeldingen&#187;, &#171;Video&#187;, &#171;Audio&#187; en &#171;Documenten&#187;. Voor deze subcategorie\u00ebn zullen ook gelokaliseerde namen worden gemaakt.<\/p>\n<p><\/p>\n<h1 id=\"o-chyom-ne-skazano\">Waar niets over gezegd wordt<\/h1>\n<p><\/p>\n<p><em>vitis<\/em> is het een zeer veelzijdige tool geworden, en het is moeilijk om alles onmiddellijk te dekken. Ik zal kort vermelden wat je verder nog kunt doen:<\/p>\n<p><\/p>\n<ul>\n<li>categorie\u00ebn kunnen worden verwijderd en van bestanden worden verwijderd;<\/li>\n<li>de resultaten van verzoeken op basis van zoektermen kunnen in de opgegeven map worden gekopieerd;<\/li>\n<li>bestanden kunnen worden uitgevoerd als programma's;<\/li>\n<li>de show-commando heeft veel opties, bijvoorbeeld sorteren op naam\/datum van wijziging of toegang\/grootte\/extensie, tonen van bestandskenmerken en paden naar originelen, inclusief weergeven van verborgen bestanden, enz.;<\/li>\n<li>bij het opslaan van links naar internetbronnen kunnen ook lokale kopie\u00ebn van HTML-pagina's worden opgeslagen.<\/li>\n<\/ul>\n<p><\/p>\n<p>Alle details zijn te vinden in de gebruikershandleiding.<\/p>\n<p><\/p>\n<h1 id=\"perspektivy\">Vooruitzichten<\/h1>\n<p><\/p>\n<p>Vaak zeggen sceptici dat &#171;niemand deze tags zelf zal indelen&#187;. Aan mijn eigen voorbeeld kan ik het tegendeel bewijzen: ik heb al meer dan zesduizend bestanden gecategoriseerd, meer dan duizend categorie\u00ebn en aliassen aangemaakt, en dat was het waard. Wanneer je met \u00e9\u00e9n opdracht <code>vitis open Plan<\/code> de lijst van je taken opent of wanneer je met \u00e9\u00e9n commando <code>vitis open LaTeX<\/code> een boek van Stolyarov over het typesettingsysteem LaTeX opent, wordt het al moreel moeilijk om het bestandssysteem &#171;op de oude manier&#187; te gebruiken.<\/p>\n<p><\/p>\n<p>Hieruit ontstaan verschillende idee\u00ebn. Bijvoorbeeld, je zou een automatische radio kunnen maken die thematische muziek afspeelt volgens het huidige weer, feest, dag van de week, tijd van de dag of jaar. Ook nauw aan het onderwerp verwant is een muziekspeler die op de hoogte is van de categorie\u00ebn en muziek kan afspelen op basis van expressies met bewerkingen op categorie\u00ebn zoals op verzamelingen. Het zou nuttig zijn om een demon te cre\u00ebren die de map &#171;Downloads&#187; volgt en nieuwe bestanden voor categorisatie aanbiedt. En natuurlijk zou er een goede grafische semantische bestandsmanager moeten worden gemaakt. Ooit maakte ik voor een bedrijf een webservice voor gezamenlijk bestandgebruik, maar het had geen prioriteit en werd verouderd, hoewel het een hoog niveau van functionaliteit bereikte. (Vanwege grote veranderingen in het zelf) <em>vitis<\/em>, is het nu onbruikbaar.)<\/p>\n<p>\n<b class=\"spoiler_title\">hier is een kleine demonstratie<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Categorie\u00ebn in plaats van mappen, of een semantisch bestandssysteem voor Linux\" src=\"\/wp-content\/uploads\/2019\/06\/0a8e3829424135a6bf9390d2b2654499.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclusie<\/h1>\n<p><\/p>\n<p><em>Vitis<\/em> \u2014 is niet de eerste poging om de manier van werken met gegevens radicaal te veranderen, maar ik vond het belangrijk om mijn idee\u00ebn te realiseren en de implementatie openbaar te maken onder de GNU GPL-licentie. Voor gebruiksgemak is er een deb-pakket gemaakt voor x86-64, het zou moeten werken op alle moderne Debian-distributies. Op ARM waren er enkele complicaties (alle andere programma's die met <em>vitis<\/em>, functioneren echter normaal), maar later zal er ook een werkend pakket voor dit platform (armhf) worden samengesteld. Ik ben tijdelijk gestopt met het maken van RPM-pakketten vanwege problemen met Fedora 30 en de moeilijkheid om op meerdere RPM-distributies te focussen, maar later zullen er toch pakketten voor een paar van hen worden gemaakt. Tot die tijd kun je gebruik maken van <code>make &amp;&amp; make install<\/code> of <code>checkinstall<\/code>.<\/p>\n<p><\/p>\n<p>Iedereen bedankt voor de aandacht! Ik hoop dat dit artikel en dit project nuttig zullen blijken.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/tech.vindex\/vitis\">Link naar de projectrepository<\/a><\/noindex><\/p>\n<p>Bron: <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.3 - 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\/nl\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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\/nl\/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\u00ebn in plaats van mappen, of een semantisch bestandssysteem voor Linux | ProHoster","description":"Data classificatie is op zich een interessant onderwerp voor onderzoek.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/35687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=35687"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/35687\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/26733"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=35687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=35687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=35687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}