{"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\/da\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","title":{"rendered":"Kategorier i stedet for mapper, eller en semantisk filsystem til Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Data classification is, in itself, an interesting topic for research. I enjoy collecting information that seems necessary and have always tried to create logical hierarchies of directories for my files. Once, I dreamed of a beautiful and convenient program for assigning tags to files, and I decided that I could no longer live this way.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"problema-ierarhicheskih-faylovyh-sistem\">The problem of hierarchical file systems<\/h1>\n<p><\/p>\n<p>Users often face the problem of deciding where to save the next new file and the challenge of finding their own files (sometimes the file names are not even meant to be remembered by a person).<\/p>\n<p><\/p>\n<p>L\u00f8sningen kan v\u00e6re semantiske filsystemer, som som regel er et lag oven p\u00e5 det traditionelle filsystem. Mapperne i dem erstattes af semantiske attributter, ogs\u00e5 kaldet tags, kategorier, metadata. Jeg vil oftere bruge termen \u201ekategori\u201c, da ordet \u201etag\u201c nogle gange virker lidt underligt i konteksten af filsystemer, is\u00e6r n\u00e5r \u201eunder-tags\u201c og \u201etags aliaser\u201c dukker op.<\/p>\n<p><\/p>\n<p>Assigning categories to files significantly alleviates issues of storage and file retrieval: if you remember (or at least suspect) even one of the categories assigned to a file, the file will never be lost from view.<\/p>\n<p><\/p>\n<p>This topic has been raised several times on Habr (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/27581\/\">en<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/337202\/\">to<\/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\/\">fire<\/a><\/noindex> and others), here I describe my solution.<\/p>\n<p><\/p>\n<h1 id=\"put-k-realizacii\">The path to implementation<\/h1>\n<p><\/p>\n<p>Right after the mentioned dream, I outlined in a notebook a command-line interface that would enable the necessary work with categories. Back then, I thought I could write a prototype in a week or two using Python or Bash, and later work on creating a graphical interface with Qt or GTK. Reality, as always, turned out to be much harsher, and the development took longer.<\/p>\n<p><\/p>\n<p>The initial idea was primarily to create a program with a user-friendly and concise command-line interface that would allow creating and deleting categories, assigning categories to files, and removing categories from files. I named the program <em>vitis<\/em>.<\/p>\n<p><\/p>\n<p>The first attempt to create <em>vitis<\/em> endte uden resultater, da der blev brugt meget tid p\u00e5 arbejde og universitetet. Det andet fors\u00f8g var allerede noget: jeg lykkedes med at afslutte det projekt, jeg havde t\u00e6nkt mig til min kandidatopgave, og endda lave en prototype af GTK-gr\u00e6nsefladen. Men den version viste sig at v\u00e6re s\u00e5 usikker og ubehagelig, at jeg m\u00e5tte genoverveje meget.<\/p>\n<p><\/p>\n<p>Jeg brugte den tredje version i meget lang tid selv og kategoriserede flere tusinde af mine filer. Dette blev i h\u00f8j grad faciliteret af det implementerede autoudfyld i bash. Men nogle problemer, s\u00e5som manglen p\u00e5 automatiske kategorier og muligheden for at gemme filer med samme navn, forblev stadig, og programmet var allerede ved at bukke under for sin egen kompleksitet. S\u00e5 jeg inds\u00e5 behovet for at l\u00f8se problemerne med udviklingen af kompliceret software: at skrive detaljerede krav, udvikle et funktionelt testsystem, studere pakkeinstruktioner og meget mere. Nu er jeg n\u00e5et til det \u00f8nskede, s\u00e5 dette beskedne v\u00e6rk kan pr\u00e6senteres for det frie f\u00e6llesskab. S\u00e5dan en specifik filh\u00e5ndtering, som h\u00e5ndtering gennem konceptet kategorier, rejser uventede sp\u00f8rgsm\u00e5l og problemer, og i l\u00f8sningen af dem <em>vitis<\/em> skabte fem yderligere projekter omkring sig, nogle af dem vil blive n\u00e6vnt i artiklen. Indtil i dag <em>vitis<\/em> har jeg ikke erhvervet en grafisk gr\u00e6nseflade, men brugervenligheden ved filkategorier fra kommandolinjen overstiger allerede for mig enhver fordel ved en almindelig grafisk filh\u00e5ndter.<\/p>\n<p><\/p>\n<h1 id=\"primery-ispolzovaniya\">Eksempler p\u00e5 brug<\/h1>\n<p><\/p>\n<p>Lad os starte simpelt \u2014 lad os oprette en kategori:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis create Musik<\/code><\/pre>\n<p><\/p>\n<p>Lad os tilf\u00f8je et eksempelnummer til den:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Musik -f \"The Ink Spots - I Don't Want To Set The World On Fire.mp3\"<\/code><\/pre>\n<p><\/p>\n<p>Indholdet af kategorien \u201eMusik\u201c kan ses med underkommandoen \u201eshow\u201c:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Musik<\/code><\/pre>\n<p><\/p>\n<p>Den kan afspilles med underkommandoen \u201eopen\u201c<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open Musik<\/code><\/pre>\n<p><\/p>\n<p>Da vi i kategorien \u201eMusik\u201c kun har \u00e9n fil, vil kun denne fil blive startet. Jeg har lavet et s\u00e6rskilt v\u00e6rkt\u00f8j til at \u00e5bne filer med standardprogrammerne. <em>vts-fs-open<\/em> (standardv\u00e6rkt\u00f8jer som xdg-open eller mimeopen tilfredsstillede mig af forskellige \u00e5rsager ikke; men hvis det er n\u00f8dvendigt, kan du i indstillingerne angive et andet v\u00e6rkt\u00f8j til universal \u00e5bning af filer). Dette v\u00e6rkt\u00f8j fungerer godt p\u00e5 forskellige distributioner med forskellige skriveborde, s\u00e5 jeg anbefaler at installere det sammen med vitis.<\/p>\n<p><\/p>\n<p>Du kan ogs\u00e5 angive programmet til at \u00e5bne filer direkte:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open Musik --app qmmp<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kategorier i stedet for mapper, eller en semantisk filsystem til Linux\" src=\"\/wp-content\/uploads\/2019\/06\/4823ff69e03b2e8b9986eedfe0604a9d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lad os oprette flere kategorier og tilf\u00f8je filer med \u201eassign\u201c. Hvis filer tildeles ikke-eksisterende kategorier, vil der blive anmodet om at oprette dem. Den un\u00f8dvendige anmodning kan undg\u00e5s ved at bruge flaget \u2014yes.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Programmering R -f \"Introduktion til R.pdf\" \"Statistikpakken R: sandsynlighedsteori og matematisk statistik.pdf\" --yes<\/code><\/pre>\n<p><\/p>\n<p>Nu \u00f8nsker vi at tilf\u00f8je filen \u201eStatistical Package R: probability theory and mathematical statistics.pdf\u201c til kategorien \u201eMatematik\u201c. Vi ved, at denne fil allerede har kategorien \u201eR\u201c og derfor kan vi bruge den kategoriske sti fra Vitis-systemet:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Matematik -v \"R\/Statistikpakken R: sandsynlighedsteori og matematisk statistik.pdf\"<\/code><\/pre>\n<p><\/p>\n<p>Heldigvis g\u00f8r bash-autocomplete dette nemt.<\/p>\n<p><\/p>\n<p>Lad os se, hvad der blev resultatet, ved at bruge flaget \u2014categories for at se listen over kategorier for hver fil:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show R --categories<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kategorier i stedet for mapper, eller en semantisk filsystem til Linux\" src=\"\/wp-content\/uploads\/2019\/06\/7bbaf561e6efe407ec8dfcda3a89c3b8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Bem\u00e6rk, at filerne ogs\u00e5 blev tildelt automatiske kategorier baseret p\u00e5 format, type (som kombinerer formater) og filudvidelser. Disse kategorier kan deaktiveres, hvis \u00f8nskes. Senere vil jeg helt sikkert lave en lokalisering af deres navne.<\/p>\n<p><\/p>\n<p>Lad os tilf\u00f8je noget ekstra til \u201eMatematik\u201c:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Matematik -f \"Matematisk analyse - 1984.pdf\" Perelman_Sjov_matematik_1927.djvu <\/code><\/pre>\n<p><\/p>\n<p>Og nu begynder det interessante. I stedet for kategorier kan man skrive udtryk med operationer for sammens\u00e6tning, snit og forskydning, det vil sige anvende operationer p\u00e5 m\u00e6ngder. For eksempel vil intersection af \u201eMatematik\u201c med \u201eR\u201c resultere i \u00e9n fil.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show R i: Matematik<\/code><\/pre>\n<p><\/p>\n<p>Tr\u00e6k \u201eR\u201c ud af \u201eMatematik\u201c:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Matematik R #eller vitis show Matematik c: R<\/code><\/pre>\n<p><\/p>\n<p>Vi kan tilf\u00e6ldigt forene musik og sprog R:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Musik u: R<\/code><\/pre>\n<p><\/p>\n<p>Flaget -n g\u00f8r det muligt at \u201etr\u00e6kke\u201c de n\u00f8dvendige filer ud fra resultatet af foresp\u00f8rgslen efter numre og\/eller omr\u00e5der, for eksempel, <code>-n 3-7<\/code>, eller mere komplekst: <code>-n 1,5,8-10,13<\/code>. Det er ofte nyttigt med underkommandoen open, som g\u00f8r det muligt at \u00e5bne de n\u00f8dvendige filer fra listen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kategorier i stedet for mapper, eller en semantisk filsystem til Linux\" src=\"\/wp-content\/uploads\/2019\/06\/5e9181a711a88368b38d8cd2f2e628f4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Selvom vi bev\u00e6ger os v\u00e6k fra at bruge almindelig hierarkisk mapper, kan det ofte v\u00e6re nyttigt at have underkategorier. Lad os oprette underkategorien \u201eStatistik\u201c i kategorien \u201eMatematik\u201c og tilf\u00f8je denne kategori til den passende fil:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis create Matematik\/Statistik\n\nvitis assign Matematik\/Statistik -v \"R\/Introduktion til R.pdf\"\n\nvitis show Matematik --kategorier<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kategorier i stedet for mapper, eller en semantisk filsystem til Linux\" src=\"\/wp-content\/uploads\/2019\/06\/0bb3381f35cfa2fce381ecc66a62701f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vi kan se, at denne fil nu har kategorien \u201eMatematik\/Statistik\u201c i stedet for \u201eMatematik\u201c (un\u00f8dvendige links overv\u00e5ges).<\/p>\n<p><\/p>\n<p>Attributing by full path can be inconvenient, so let's create a \"global\" alias:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Matematik\/Statistik -a Statistik\n\nvitis show Statistik<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kategorier i stedet for mapper, eller en semantisk filsystem til 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\">Ikke kun almindelige filer<\/h2>\n<p><\/p>\n<h3 id=\"internet-ssylki\">Internetsider<\/h3>\n<p><\/p>\n<p>For at ensarte opbevaringen af enhver information ville det v\u00e6re nyttigt at kategorisere links til internetressourcer som minimum. Og dette er muligt:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Habr Farveanomalitet -i https:\/\/habr.com\/ru\/company\/sfe_ru\/blog\/437304\/ --yes<\/code><\/pre>\n<p><\/p>\n<p>P\u00e5 et s\u00e6rligt sted vil en fil med titlen p\u00e5 HTML-siden og med filendelse .desktop blive oprettet. Dette er et traditionelt format for genveje i GNU\/Linux. S\u00e5danne genveje f\u00e5r automatisk kategorien NetworkBookmarks.<\/p>\n<p><\/p>\n<p>Naturligvis bliver genveje oprettet for at blive brugt:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open Farveanomalitet<\/code><\/pre>\n<p><\/p>\n<p>Udf\u00f8relsen af kommandoen \u00e5bner det netop gemte link i browseren. Kategoriserede genveje til internetkilder kan fungere som erstatning for browserbogm\u00e6rker.<\/p>\n<p><\/p>\n<h3 id=\"fragmenty-faylov\">Filfragmenter<\/h3>\n<p><\/p>\n<p>It is also useful to have categories for separate file fragments. Not a bad proposal, right? But the current implementation only concerns regular text files, audio, and video files. For instance, if you need to mark a specific piece of a concert or a funny moment in a movie, then by using assign you can take advantage of the flags \u2014fragname, \u2014start, \u2014finish. Let's save the intro from \"Duck Tales\":<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign vitis assign -c Introer -f Duck_Tales\/s01s01.avi --finish 00:00:59 --fragname \"Duck Tales intro\"\n\nvitis open Introer<\/code><\/pre>\n<p><\/p>\n<p>In reality, no files are actually cut; instead, a pointer file to the fragment is created, describing the file type, file path, start and end of the fragment. Creating and opening pointers to fragments is delegated to utilities specifically created for this purpose \u2014 mediafragmenter and fragplayer. The first creates, the second opens. In the case of audio and video recordings, playing a media file from a specific to a specific position occurs using the VLC player, so it also needs to be on the system. I initially wanted to base this on mplayer, but for some reason, it was very clunky with positioning at the needed moment.<br \/>\nIn our example, a file \"Duck Tales intro.fragpointer\" is created (it is placed in a special location), and then the fragment is played from the start of the file (since \u2014start was not specified during creation) to a mark at 59 seconds, after which VLC closes.<\/p>\n<p><\/p>\n<p>Et andet eksempel er, at vi har besluttet at kategorisere en enkelt optr\u00e6den ved en koncert med en kendt kunstner:<\/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 - Koncert P\u0430\u0440\u0443\u0441 - sange af Vladimir Vysotsky.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>N\u00e5r filen \u00e5bnes, vil den v\u00e6re inkluderet p\u00e5 den \u00f8nskede position og lukke efter fire og et halvt minut.<\/p>\n<p><\/p>\n<h1 id=\"kak-eto-vsyo-rabotaet--dopolnitelnye-vozmozhnosti\">Hvordan det hele fungerer + yderligere muligheder<\/h1>\n<p><\/p>\n<h2 id=\"hranenie-kategoriy\">Opbevaring af kategorier<\/h2>\n<p><\/p>\n<p>I begyndelsen af planl\u00e6gningen af den semantiske filsystemorganisation kom jeg p\u00e5 tre metoder: gennem opbevaring af symbolske links, via en database, gennem beskrivelse i XML. Den f\u00f8rste metode vandt, da den p\u00e5 den ene side er enkel at implementere, og p\u00e5 den anden side giver brugeren mulighed for at se kategorierne direkte fra filsystemet (og det er praktisk og vigtigt). I begyndelsen af brugen <em>vitis<\/em> In the user's home directory, a directory \"Vitis\" is created along with the configuration file \".config\/vitis\/vitis.conf\". In ~\/Vitis, directories corresponding to categories are created, and symbolic links to the original files are created in these category directories. Category aliases are also just links to them. Of course, having the \"Vitis\" directory in the home folder might not suit everyone. We can switch to any other location:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis service set path \/mnt\/MyFavoriteDisk\/Vitis\/<\/code><\/pre>\n<p><\/p>\n<p>At a certain point, it becomes clear that categorizing files scattered across different locations is somewhat senseless, as their placement may change. Therefore, I initially created a directory where I simply dumped everything and assigned categories to it. Then I decided that it would be nice to formalize this moment at the program level. Thus, the concept of \"file space\" emerged. At the beginning of usage. <em>vitis<\/em> ville det bestemt ikke v\u00e6re d\u00e5rligt at konfigurere et sted (hvor alle de n\u00f8dvendige filer vil blive opbevaret) og aktivere automatisk gemming:<\/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>Uden autosave ved brug af underkommandoen &#171;assign&#187; vil flaget &#8212;save v\u00e6re n\u00f8dvendigt, hvis man \u00f8nsker at gemme den tilf\u00f8jede fil i filomr\u00e5det.<\/p>\n<p><\/p>\n<p>Desuden kan man tilf\u00f8je flere filsystemer og \u00e6ndre deres prioriteter, hvilket kan v\u00e6re nyttigt, n\u00e5r der er mange filer, der opbevares p\u00e5 forskellige medier. Her vil jeg ikke gennemg\u00e5 denne mulighed, detaljer kan l\u00e6ses i programmets hj\u00e6lp.<\/p>\n<p><\/p>\n<h2 id=\"migraciya-semanticheskoy-faylovoy-sistemy\">Migration af semantisk filsystem<\/h2>\n<p><\/p>\n<p>P\u00e5 den ene eller anden m\u00e5de kan mappen Vitis og filsystemerne teoretisk flytte rundt. For at bringe det til funktion oprettede jeg et separat v\u00e6rkt\u00f8j <em>link-editor<\/em>, som kan redigere links i bulk ved at erstatte dele af stien med andre:<\/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>I det f\u00f8rste tilf\u00e6lde, efter at vi er flyttet fra \/mnt\/MyFavoriteDisk\/Vitis\/ til hjemmebiblioteket, redigeres de symbolske links, der er relateret til aliasene. I det andet tilf\u00e6lde efter \u00e6ndringen af placeringen af filsystemet \u00e6ndres alle links i Vitis til de nye i henhold til anmodningen om at erstatte dele af deres sti.<\/p>\n<p><\/p>\n<h2 id=\"avtomaticheskie-kategorii\">Automatiske kategorier<\/h2>\n<p><\/p>\n<p>Hvis du k\u00f8rer kommandoen <code>vitis service get autocategorization<\/code>, kan du se, at der som standard er indstillet automatisk tildeling af kategorier efter format (Format og Type) og filudvidelse (Extension).<\/p>\n<p><\/p>\n<p>Dette er nyttigt, n\u00e5r du for eksempel skal finde noget blandt PDF-filer eller se, hvad du har gemt af EPUB og FB2, kan du blot udf\u00f8re anmodningen<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Format\/MOBI u: Format\/FB2<\/code><\/pre>\n<p><\/p>\n<p>Det er sket, at de standardv\u00e6rkt\u00f8jer, som GNU\/Linux tilbyder, som file eller mimetype ikke har v\u00e6ret tilfredsstillende for mig, fordi de ikke altid korrekt bestemmer formatet. Jeg m\u00e5tte derfor lave en egen implementering baseret p\u00e5 filsiganturer og udvidelser. Generelt er emnet for bestemmelse af filformater et interessant forskningsomr\u00e5de og fortjener en egen artikel. Indtil videre kan jeg sige, at jeg muligvis ikke har sikret n\u00f8jagtig genkendelse for alle formater i verden, men det fungerer allerede temmelig godt. Desuden identificeres EPUB-filer i \u00f8jeblikket som ZIP (hvilket i det store hele er berettiget, men i praksis skal dette ikke betragtes som normalt). Indtil videre skal du betragte denne mulighed som eksperimentel og rapportere om fejl. I m\u00e6rkelige situationer kan du altid bruge kategorier baseret p\u00e5 filudvidelser, for eksempel Extension\/epub.<\/p>\n<p><\/p>\n<p>Hvis automatisk kategorisering efter format er aktiveret, er ogs\u00e5 automatisk kategorisering aktiveret, som samler nogle formater som &#171;Archives&#187;, &#171;Pictures&#187;, &#171;Video&#187;, &#171;Audio&#187; og &#171;Documents&#187;. Der vil ogs\u00e5 blive oprettet lokaliserede navne for disse underkategorier.<\/p>\n<p><\/p>\n<h1 id=\"o-chyom-ne-skazano\">Hvad der ikke er n\u00e6vnt<\/h1>\n<p><\/p>\n<p><em>vitis<\/em> er blevet et meget alsidigt v\u00e6rkt\u00f8j, og det er sv\u00e6rt at d\u00e6kke alt p\u00e5 \u00e9n gang. Kort n\u00e6vner jeg, hvad der ogs\u00e5 kan g\u00f8res:<\/p>\n<p><\/p>\n<ul>\n<li>kategorier kan slettes og fjernes fra filer;<\/li>\n<li>resultaterne af foresp\u00f8rgsler kan kopieres til den angivne mappe;<\/li>\n<li>filer kan k\u00f8res som programmer;<\/li>\n<li>kommandoen show har mange indstillinger, f.eks. sortering efter navn\/dato for \u00e6ndringer eller adgang\/st\u00f8rrelse\/udvidelse, visning af filers egenskaber og stier til originalerne, medtagelse af visning af skjulte filer osv.;<\/li>\n<li>ved gemming af links til internetkilder kan der ogs\u00e5 gemmes lokale kopier af HTML-sider.<\/li>\n<\/ul>\n<p><\/p>\n<p>Alle detaljer kan findes i brugerdokumentationen.<\/p>\n<p><\/p>\n<h1 id=\"perspektivy\">Udsigter<\/h1>\n<p><\/p>\n<p>Ofte siger skeptikere, at &#171;ingen vil selv s\u00e6tte disse tags&#187;. Jeg kan bevise det modsatte med mit eget eksempel: jeg har allerede kategoriseret mere end seks tusinde filer, oprettet over tusinde kategorier og pseudonymer, og det var det v\u00e6rd. N\u00e5r man med \u00e9n kommando <code>vitis open Plan<\/code> \u00e5bner listen over sine opgaver, eller n\u00e5r man med \u00e9n kommando <code>vitis open LaTeX<\/code> \u00e5bner Stolyarovs bog om typesystemet LaTeX, bliver det sv\u00e6rt rent mentalt at bruge filsystemet &#171;p\u00e5 den gamle m\u00e5de&#187;.<\/p>\n<p><\/p>\n<p>P\u00e5 denne baggrund opst\u00e5r der en r\u00e6kke ideer. For eksempel kan man lave et automatisk radio, der spiller temamusik afh\u00e6ngigt af det aktuelle vejr, helligdagen, ugedagen, tidspunktet p\u00e5 dagen eller \u00e5ret. Et andet n\u00e6rt relateret emne er en musikafspiller, der kender kategorierne og kan afspille musik baseret p\u00e5 udtryk med operationer over kategorier som over m\u00e6ngder. Det ville v\u00e6re nyttigt at lave en demon, der overv\u00e5ger mappen &#171;Downloads&#187; og foresl\u00e5r at kategorisere nye filer. Og selvf\u00f8lgelig burde man lave en ordentlig grafisk semantisk filh\u00e5ndtering. Engang lavede jeg en webtjeneste til virksomheden til kollektiv filbrug, men den var ikke en prioritet og blev irrelevant, selvom den opn\u00e5ede et h\u00f8jt niveau af funktionalitet. (I forbindelse med de store \u00e6ndringer i selve... <em>vitis<\/em>, er den ikke l\u00e6ngere brugbar.)<\/p>\n<p>\n<b class=\"spoiler_title\">her er en lille demonstration<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Kategorier i stedet for mapper, eller en semantisk filsystem til Linux\" src=\"\/wp-content\/uploads\/2019\/06\/0a8e3829424135a6bf9390d2b2654499.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Konklusion<\/h1>\n<p><\/p>\n<p><em>Vitis<\/em> \u2014 ikke f\u00f8rste fors\u00f8g p\u00e5 radikalt at \u00e6ndre m\u00e5den at arbejde med data p\u00e5, men jeg mente, det var vigtigt at realisere mine ideer og offentligg\u00f8re implementeringen under GNU GPL-licensen. For nemheds skyld er der lavet en deb-pakke til x86-64, den b\u00f8r fungere p\u00e5 alle moderne Debian-distributioner. Der viste sig at v\u00e6re sm\u00e5 vanskeligheder p\u00e5 ARM (men alle andre programmer relateret til <em>vitis<\/em>, fungerer fint), men senere vil der ogs\u00e5 blive samlet en fungerende pakke til denne platform (armhf). Jeg er midlertidigt stoppet med at lave RPM-pakker p\u00e5 grund af problemer med Fedora 30 og det vanskelige i at dele mig ud p\u00e5 mange RPM-distributioner, men senere vil der blive lavet pakker til et par af dem. Indtil da kan man bruge <code>make &amp;&amp; make install<\/code> eller <code>checkinstall<\/code>.<\/p>\n<p><\/p>\n<p>Tak for opm\u00e6rksomheden! Jeg h\u00e5ber, denne artikel og dette projekt vil vise sig at v\u00e6re nyttige.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/tech.vindex\/vitis\">Link til projektets repository<\/a><\/noindex><\/p>\n<p>Kilde: <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\/da\/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=\"da_DK\" \/>\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\/da\/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\udd47Kategorier i stedet for mapper, eller en semantisk filsysteem til Linux | ProHoster","description":"Data klassifikation er selv et interessant emne for forskning.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/35687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=35687"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/35687\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/26733"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=35687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=35687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=35687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}