{"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\/pt\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","title":{"rendered":"Categorias em vez de diret\u00f3rios, ou Sistema de Arquivos Sem\u00e2ntico para Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A classifica\u00e7\u00e3o de dados \u00e9, por si s\u00f3, um tema interessante para pesquisa. Eu gosto de coletar informa\u00e7\u00f5es que parecem necess\u00e1rias e sempre tentei fazer hierarquias l\u00f3gicas de diret\u00f3rios para meus arquivos. Um dia, tive um sonho em que vi um programa belo e pr\u00e1tico para atribuir tags a arquivos e decidi que n\u00e3o poderia continuar assim.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"problema-ierarhicheskih-faylovyh-sistem\">O problema dos sistemas de arquivos hier\u00e1rquicos<\/h1>\n<p><\/p>\n<p>Os usu\u00e1rios frequentemente enfrentam a dificuldade de escolher o local para salvar um novo arquivo e a quest\u00e3o de encontrar seus pr\u00f3prios arquivos (\u00e0s vezes os nomes dos arquivos nem s\u00e3o feitos para serem lembrados por humanos).<\/p>\n<p><\/p>\n<p>Uma solu\u00e7\u00e3o pode ser sistemas de arquivos sem\u00e2nticos, que normalmente s\u00e3o uma camada sobre o sistema de arquivos tradicional. Diret\u00f3rios neles s\u00e3o substitu\u00eddos por atributos sem\u00e2nticos, tamb\u00e9m chamados de tags, categorias, metadados. Usarei com mais frequ\u00eancia o termo \"categoria\", pois no contexto de sistemas de arquivos, a palavra \"tag\" pode parecer estranha, especialmente quando aparecem \"subtags\" e \"apelidos de tags\".<\/p>\n<p><\/p>\n<p>Atribuir categorias a arquivos elimina muito dos problemas de armazenamento e busca: se voc\u00ea lembra (ou suspeita) de pelo menos uma das categorias atribu\u00eddas ao arquivo, o arquivo nunca ficar\u00e1 fora de vista.<\/p>\n<p><\/p>\n<p>Este tema j\u00e1 foi levantado v\u00e1rias vezes no Habr\u00e9 (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/27581\/\">um<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/337202\/\">dois<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/374465\/\">tr\u00eas<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/81352\/\">quatro<\/a><\/noindex> e outros), aqui descrevo minha solu\u00e7\u00e3o.<\/p>\n<p><\/p>\n<h1 id=\"put-k-realizacii\">Caminho para a implementa\u00e7\u00e3o<\/h1>\n<p><\/p>\n<p>Logo ap\u00f3s o sonho mencionado, descrevi em um caderno uma interface de comando que proporcionaria o necess\u00e1rio para trabalhar com categorias. Na \u00e9poca, pensei que poderia escrever um prot\u00f3tipo em uma ou duas semanas, usando Python ou Bash, e depois seria necess\u00e1rio desenvolver uma interface gr\u00e1fica em Qt ou GTK. A realidade, como sempre, foi muito mais dif\u00edcil, e o desenvolvimento se prolongou.<\/p>\n<p><\/p>\n<p>A ideia original era, acima de tudo, criar um programa com uma interface de linha de comando conveniente e concisa, que seria capaz de criar, deletar categorias, atribuir categorias a arquivos e remover categorias de arquivos. Eu nomeei o programa <em>vitis<\/em>.<\/p>\n<p><\/p>\n<p>A primeira tentativa de criar <em>vitis<\/em> terminou sem resultados, j\u00e1 que muito tempo come\u00e7ou a ser dedicado ao trabalho e \u00e0 faculdade. A segunda tentativa foi algo: consegui concluir o projeto planejado para a disserta\u00e7\u00e3o de mestrado e at\u00e9 fazer um prot\u00f3tipo da interface GTK. Mas essa vers\u00e3o acabou sendo t\u00e3o inst\u00e1vel e inconveniente que foi necess\u00e1rio repensar muitas coisas.<\/p>\n<p><\/p>\n<p>Na terceira vers\u00e3o, eu realmente a utilizei por um longo per\u00edodo, categorizando milhares dos meus arquivos. Isso foi bastante facilitado pela funcionalidade de autocompletar no bash. Mas alguns problemas, como a falta de categorias autom\u00e1ticas e a possibilidade de armazenar arquivos com nomes iguais, ainda persistiam, e o programa j\u00e1 estava sofrendo sob a pr\u00f3pria complexidade. Assim, percebi a necessidade de resolver os desafios do desenvolvimento de software complexo: elaborar requisitos detalhados, desenvolver um sistema de testes funcionais, estudar instru\u00e7\u00f5es sobre empacotamento e muito mais. Agora, cheguei ao que desejava, e essa modesta cria\u00e7\u00e3o pode ser apresentada \u00e0 comunidade livre. A gest\u00e3o de arquivos de uma forma t\u00e3o espec\u00edfica, atrav\u00e9s do conceito de categorias, levanta quest\u00f5es e problemas inesperados, e a solu\u00e7\u00e3o deles <em>vitis<\/em> gerou ao seu redor mais cinco projetos, alguns dos quais ser\u00e3o mencionados no artigo. At\u00e9 hoje <em>vitis<\/em> n\u00e3o adquiri uma interface gr\u00e1fica, mas a conveni\u00eancia de utilizar categorias de arquivos via linha de comando j\u00e1 supera para mim quaisquer benef\u00edcios de um gerenciador de arquivos gr\u00e1fico convencional.<\/p>\n<p><\/p>\n<h1 id=\"primery-ispolzovaniya\">Exemplos de uso<\/h1>\n<p><\/p>\n<p>Vamos come\u00e7ar pelo b\u00e1sico \u2014 vamos criar uma categoria:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis create M\u00fasica<\/code><\/pre>\n<p><\/p>\n<p>Adicionemos um exemplo de alguma composi\u00e7\u00e3o a ela:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign M\u00fasica -f \"The Ink Spots - I Don't Want To Set The World On Fire.mp3\"<\/code><\/pre>\n<p><\/p>\n<p>Voc\u00ea pode visualizar o conte\u00fado da categoria \"M\u00fasica\" com o subcomando \"show\":<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show M\u00fasica<\/code><\/pre>\n<p><\/p>\n<p>Voc\u00ea pode reproduzi-lo com o subcomando \"open\".<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open M\u00fasica<\/code><\/pre>\n<p><\/p>\n<p>Como temos apenas um arquivo na categoria \"M\u00fasica\", apenas ele ser\u00e1 iniciado. Para abrir arquivos com seus programas padr\u00e3o, criei uma ferramenta separada. <em>vts-fs-open<\/em> (ferramentas padr\u00e3o como xdg-open ou mimeopen n\u00e3o me satisfazem por uma s\u00e9rie de raz\u00f5es; mas, se necess\u00e1rio, nas configura\u00e7\u00f5es voc\u00ea pode indicar outro utilit\u00e1rio para abrir arquivos de forma universal). Este utilit\u00e1rio funciona bem em diferentes distribui\u00e7\u00f5es com diferentes ambientes de desktop, por isso recomendo instal\u00e1-lo junto com o vitis.<\/p>\n<p><\/p>\n<p>Voc\u00ea tamb\u00e9m pode indicar diretamente o programa para abrir arquivos:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open M\u00fasica --app qmmp<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorias em vez de diret\u00f3rios, ou Sistema de Arquivos Sem\u00e2ntico para Linux\" src=\"\/wp-content\/uploads\/2019\/06\/4823ff69e03b2e8b9986eedfe0604a9d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vamos criar mais categorias e adicionar arquivos usando \"assign\". Se os arquivos forem atribu\u00eddos a categorias que ainda n\u00e3o existem, ser\u00e1 feita uma solicita\u00e7\u00e3o para cri\u00e1-las. Voc\u00ea pode evitar esse pedido desnecess\u00e1rio usando a flag \u2014yes.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Programa\u00e7\u00e3o R -f \"Introdu\u00e7\u00e3o ao R.pdf\" \"Pacote Estat\u00edstico R: Teoria das Probabilidades e Estat\u00edstica Matem\u00e1tica.pdf\" --yes<\/code><\/pre>\n<p><\/p>\n<p>Agora queremos adicionar ao arquivo \"Pacote estat\u00edstico R: teoria das probabilidades e estat\u00edstica matem\u00e1tica.pdf\" a categoria \"Matem\u00e1tica\". Sabemos que este arquivo j\u00e1 possui a categoria \"R\" e, portanto, podemos usar o caminho da categoria do sistema Vitis:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Matem\u00e1tica -v \"R\/Pacote Estat\u00edstico R: Teoria das Probabilidades e Estat\u00edstica Matem\u00e1tica.pdf\"<\/code><\/pre>\n<p><\/p>\n<p>Felizmente, o autocompletar bash permitir\u00e1 fazer isso facilmente.<\/p>\n<p><\/p>\n<p>Vamos ver o que conseguimos, usando a flag \u2014categories, para ver a lista de categorias de cada arquivo:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show R --categories<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorias em vez de diret\u00f3rios, ou Sistema de Arquivos Sem\u00e2ntico para Linux\" src=\"\/wp-content\/uploads\/2019\/06\/7bbaf561e6efe407ec8dfcda3a89c3b8.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Observe que os arquivos tamb\u00e9m foram atribu\u00eddos a categorias autom\u00e1ticas com base em formato, tipo (que agrupa formatos) e extens\u00e3o de arquivo. Essas categorias podem ser desativadas, se desejado. Mais tarde, certamente farei a localiza\u00e7\u00e3o dos seus nomes.<\/p>\n<p><\/p>\n<p>Adicionar algo mais \u00e0 \"Matem\u00e1tica\" para diversifica\u00e7\u00e3o:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Matem\u00e1tica -f \"An\u00e1lise Matem\u00e1tica - 1984.pdf\" Perelman_Matem\u00e1tica_Interativa_1927.djvu <\/code><\/pre>\n<p><\/p>\n<p>Agora come\u00e7a a parte interessante. Em vez de categorias, voc\u00ea pode escrever express\u00f5es com opera\u00e7\u00f5es de uni\u00e3o, interse\u00e7\u00e3o e subtra\u00e7\u00e3o, ou seja, usar opera\u00e7\u00f5es sobre conjuntos. Por exemplo, a interse\u00e7\u00e3o de \"Matem\u00e1tica\" e \"R\" resultar\u00e1 em um arquivo.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show R i: Matem\u00e1tica<\/code><\/pre>\n<p><\/p>\n<p>Subtraindo da \"Matem\u00e1tica\" as men\u00e7\u00f5es \u00e0 linguagem \"R\":<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Matem\u00e1tica R #ou vitis show Matem\u00e1tica c: R<\/code><\/pre>\n<p><\/p>\n<p>Podemos unir m\u00fasica e a linguagem R de forma aleat\u00f3ria:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show M\u00fasica u: R<\/code><\/pre>\n<p><\/p>\n<p>A flag -n permite \"extrair\" dos resultados da consulta os arquivos desejados por n\u00fameros e\/ou intervalos, por exemplo, <code>-n 3-7<\/code>, ou algo mais complicado: <code>-n 1,5,8-10,13<\/code>. Muitas vezes \u00e9 \u00fatil usar o subcomando open, que permite abrir os arquivos desejados da lista.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorias em vez de diret\u00f3rios, ou Sistema de Arquivos Sem\u00e2ntico para Linux\" src=\"\/wp-content\/uploads\/2019\/06\/5e9181a711a88368b38d8cd2f2e628f4.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Embora estejamos nos afastando do uso da hierarquia convencional de diret\u00f3rios, muitas vezes \u00e9 \u00fatil ter categorias aninhadas. Vamos criar uma subcategoria \"Estat\u00edstica\" na categoria \"Matem\u00e1tica\" e adicionar esta categoria ao arquivo correspondente:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis create Matem\u00e1tica\/Estat\u00edstica\n\nvitis assign Matem\u00e1tica\/Estat\u00edstica -v \"R\/Introdu\u00e7\u00e3o ao R.pdf\"\n\nvitis show Matem\u00e1tica --categories<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorias em vez de diret\u00f3rios, ou Sistema de Arquivos Sem\u00e2ntico para Linux\" src=\"\/wp-content\/uploads\/2019\/06\/0bb3381f35cfa2fce381ecc66a62701f.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Podemos ver que agora este arquivo tem a categoria \"Matem\u00e1tica\/Economia\" em vez de \"Matem\u00e1tica\" (links extras s\u00e3o rastreados).<\/p>\n<p><\/p>\n<p>Pode ser inconveniente recorrer ao caminho completo, vamos criar um pseud\u00f4nimo \"global\":<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Matem\u00e1tica\/Estat\u00edstica -a Estat\u00edstica\n\nvitis show Estat\u00edstica<\/code><\/pre>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Categorias em vez de diret\u00f3rios, ou Sistema de Arquivos Sem\u00e2ntico para 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\">N\u00e3o apenas arquivos comuns<\/h2>\n<p><\/p>\n<h3 id=\"internet-ssylki\">Links da Internet<\/h3>\n<p><\/p>\n<p>Para uniformizar o armazenamento de qualquer informa\u00e7\u00e3o, seria \u00fatil, no m\u00ednimo, categorizar links para recursos da Internet. E isso \u00e9 poss\u00edvel:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign Habr Cor An\u00f4mala -i https:\/\/habr.com\/ru\/company\/sfe_ru\/blog\/437304\/ --yes<\/code><\/pre>\n<p><\/p>\n<p>Um arquivo ser\u00e1 criado em um local espec\u00edfico com o t\u00edtulo da p\u00e1gina HTML e a extens\u00e3o .desktop. Este \u00e9 o formato tradicional de atalho no GNU\/Linux. Esses atalhos recebem automaticamente a categoria NetworkBookmarks.<\/p>\n<p><\/p>\n<p>Naturalmente, os atalhos s\u00e3o criados para serem usados:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis open Cor An\u00f4mala<\/code><\/pre>\n<p><\/p>\n<p>A execu\u00e7\u00e3o do comando leva \u00e0 abertura no navegador do link rec\u00e9m-salvo. Atalhos categorizados para fontes da Internet podem servir como uma alternativa aos favoritos do navegador.<\/p>\n<p><\/p>\n<h3 id=\"fragmenty-faylov\">Fragmentos de arquivos<\/h3>\n<p><\/p>\n<p>Tamb\u00e9m \u00e9 \u00fatil ter categorias para diferentes fragmentos de arquivos. N\u00e3o \u00e9 uma boa ideia? Mas a implementa\u00e7\u00e3o atual ainda abrange apenas arquivos de texto comuns, arquivos de \u00e1udio e v\u00eddeo. Por exemplo, se voc\u00ea precisar marcar um determinado trecho de um concerto ou um momento engra\u00e7ado de um filme, ao usar assign, voc\u00ea pode usar as flags \u2014fragname, \u2014start, \u2014finish. Vamos salvar a introdu\u00e7\u00e3o de \"DuckTales\":<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis assign vitis assign -c Introdu\u00e7\u00f5es -f Duck_Tales\/s01s01.avi --finish 00:00:59 --fragname \"Introdu\u00e7\u00e3o Duck Tales\"\n\nvitis open Introdu\u00e7\u00f5es<\/code><\/pre>\n<p><\/p>\n<p>Na verdade, nenhum corte de arquivo ocorre, em vez disso, \u00e9 criado um arquivo apontador para o fragmento, que descreve o tipo de arquivo, o caminho para o arquivo, o in\u00edcio e o fim do fragmento. A cria\u00e7\u00e3o e abertura de apontadores para fragmentos s\u00e3o delegadas a utilit\u00e1rios que eu criei especificamente para esses prop\u00f3sitos \u2014 mediafragmenter e fragplayer. O primeiro cria, o segundo abre. No caso de grava\u00e7\u00f5es de \u00e1udio e v\u00eddeo, a execu\u00e7\u00e3o do arquivo de m\u00eddia a partir de uma posi\u00e7\u00e3o espec\u00edfica at\u00e9 uma determinada posi\u00e7\u00e3o \u00e9 feita com o reprodutor VLC, ent\u00e3o ele tamb\u00e9m deve estar no sistema. Inicialmente, eu queria fazer isso com o mplayer, mas estava muito mal posicionado no momento necess\u00e1rio.<br \/>\nNo nosso exemplo, \u00e9 criado um arquivo \"Duck Tales intro.fragpointer\" (ele \u00e9 colocado em um lugar especial), e depois reproduzimos o fragmento desde o in\u00edcio do arquivo (j\u00e1 que \u2014start n\u00e3o foi especificado na cria\u00e7\u00e3o) at\u00e9 a marca de 59 segundos, ap\u00f3s o que o VLC \u00e9 fechado.<\/p>\n<p><\/p>\n<p>Outro exemplo \u00e9 que decidimos categorizar uma apresenta\u00e7\u00e3o espec\u00edfica em um show de algum artista famoso:<\/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>Ao abrir, o arquivo ser\u00e1 inclu\u00eddo na posi\u00e7\u00e3o certa e fechar\u00e1 em quatro minutos e meio.<\/p>\n<p><\/p>\n<h1 id=\"kak-eto-vsyo-rabotaet--dopolnitelnye-vozmozhnosti\">Como tudo isso funciona + funcionalidades adicionais<\/h1>\n<p><\/p>\n<h2 id=\"hranenie-kategoriy\">Armazenamento de categorias<\/h2>\n<p><\/p>\n<p>No in\u00edcio do planejamento da organiza\u00e7\u00e3o do sistema de arquivos sem\u00e2ntico, pensei em tr\u00eas maneiras: atrav\u00e9s do armazenamento de links simb\u00f3licos, por meio de um banco de dados, atrav\u00e9s de uma descri\u00e7\u00e3o em XML. A primeira op\u00e7\u00e3o venceu, pois, por um lado, \u00e9 simples de implementar e, por outro, o usu\u00e1rio pode visualizar as categorias diretamente do sistema de arquivos (o que \u00e9 conveniente e importante). No in\u00edcio do uso <em>vitis<\/em> Na diret\u00f3rio home do usu\u00e1rio, \u00e9 criado um diret\u00f3rio \"Vitis\" e um arquivo de configura\u00e7\u00e3o \".config\/vitis\/vitis.conf\". No ~\/Vitis, diret\u00f3rios correspondentes \u00e0s categorias s\u00e3o criados, e dentro desses diret\u00f3rios-categorias, links simb\u00f3licos para os arquivos originais s\u00e3o criados. Os pseud\u00f4nimos de categorias tamb\u00e9m s\u00e3o apenas links para eles. \u00c9 claro que a presen\u00e7a do diret\u00f3rio \"Vitis\" no diret\u00f3rio home pode desagradar a algu\u00e9m. Podemos mudar para qualquer outro lugar:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis service set path \/mnt\/MyFavoriteDisk\/Vitis\/<\/code><\/pre>\n<p><\/p>\n<p>Em determinado momento, torna-se claro que categorizar arquivos dispersos em diferentes lugares \u00e9 pouco sensato, j\u00e1 que sua localiza\u00e7\u00e3o pode mudar. Portanto, inicialmente, criei um diret\u00f3rio onde eu simplesmente descarregava tudo e dava categorias a tudo isso. Ent\u00e3o, decidi que seria bom formalizar isso em n\u00edvel de software. Assim surgiu o conceito de \"espa\u00e7o de arquivos\". No in\u00edcio do uso <em>vitis<\/em> seria bom configurar um local assim (onde ser\u00e3o armazenados todos os arquivos necess\u00e1rios) e ativar o salvamento autom\u00e1tico:<\/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>Sem a salvaguarda autom\u00e1tica ao usar o subtipo &#171;assign&#187;, o sinalizador &#8212;save ser\u00e1 necess\u00e1rio, caso queira salvar o arquivo adicionado no espa\u00e7o de armazenamento.<\/p>\n<p><\/p>\n<p>Al\u00e9m disso, \u00e9 poss\u00edvel adicionar v\u00e1rios espa\u00e7os de arquivos e alterar suas prioridades, o que pode ser \u00fatil quando h\u00e1 muitos arquivos armazenados em diferentes m\u00eddias. N\u00e3o abordarei essa possibilidade aqui, mas detalhes podem ser lidos na ajuda do programa.<\/p>\n<p><\/p>\n<h2 id=\"migraciya-semanticheskoy-faylovoy-sistemy\">Migra\u00e7\u00e3o do sistema de arquivos sem\u00e2ntico<\/h2>\n<p><\/p>\n<p>De qualquer forma, o diret\u00f3rio Vitis e os espa\u00e7os de arquivos teoricamente podem se mover de lugar \u00e0s vezes. Para torn\u00e1-los funcionais, eu criei uma utilidade separada <em>link-editor<\/em>, que pode editar links em massa, substituindo partes do caminho por outras:<\/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>No primeiro caso, ap\u00f3s mudarmos de \/mnt\/MyFavoriteDisk\/Vitis\/ para o diret\u00f3rio home, os links simb\u00f3licos relacionados aos apelidos s\u00e3o editados. No segundo caso, ap\u00f3s mudar a localiza\u00e7\u00e3o do espa\u00e7o de arquivos, todos os links em Vitis s\u00e3o atualizados para novas com base na solicita\u00e7\u00e3o de substitui\u00e7\u00e3o de parte de seu caminho.<\/p>\n<p><\/p>\n<h2 id=\"avtomaticheskie-kategorii\">Categorias autom\u00e1ticas<\/h2>\n<p><\/p>\n<p>Se voc\u00ea executar o comando <code>vitis service get autocategorization<\/code>, ser\u00e1 poss\u00edvel ver que, por padr\u00e3o, est\u00e3o configuradas categorias autom\u00e1ticas com base no formato (Format e Type) e na extens\u00e3o dos arquivos (Extension).<\/p>\n<p><\/p>\n<p>Isso \u00e9 \u00fatil quando, por exemplo, voc\u00ea precisa encontrar algo entre PDFs ou verificar o que voc\u00ea tem armazenado de EPUB e FB2, basta executar a consulta<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">vitis show Format\/MOBI u: Format\/FB2<\/code><\/pre>\n<p><\/p>\n<p>Acontece que as ferramentas padr\u00e3o do GNU\/Linux, como file ou mimetype, n\u00e3o me satisfizeram exatamente por n\u00e3o definirem sempre corretamente o formato. Foi necess\u00e1rio criar minha pr\u00f3pria implementa\u00e7\u00e3o baseada em assinaturas de arquivos e extens\u00f5es. De fato, o tema da determina\u00e7\u00e3o de formatos de arquivos \u00e9 interessante para pesquisa e merece um artigo \u00e0 parte. Por enquanto, posso dizer que, embora talvez eu n\u00e3o tenha previsto um reconhecimento preciso para todos os formatos do mundo, em geral, j\u00e1 est\u00e1 funcionando bem. Contudo, no momento, o EPUB \u00e9 identificado como ZIP (algo que \u00e9 justificado, mas na pr\u00e1tica n\u00e3o deve ser considerado um comportamento normal). At\u00e9 certo ponto, considere essa possibilidade como experimental e reportem bugs. Em situa\u00e7\u00f5es estranhas, voc\u00ea sempre pode usar categorias baseadas em extens\u00f5es de arquivos, como Extension\/epub.<\/p>\n<p><\/p>\n<p>Se as autocategorias por formato est\u00e3o ativadas, as autocategorias tamb\u00e9m incluem alguns formatos como: &#171;Archives&#187;, &#171;Pictures&#187;, &#171;Video&#187;, &#171;Audio&#187; e &#171;Documents&#187;. Nomes localizados tamb\u00e9m ser\u00e3o criados para essas subcategorias.<\/p>\n<p><\/p>\n<h1 id=\"o-chyom-ne-skazano\">Sobre o que n\u00e3o foi mencionado<\/h1>\n<p><\/p>\n<p><em>vitis<\/em> tornou-se uma ferramenta bastante vers\u00e1til, e \u00e9 dif\u00edcil cobrir tudo de uma vez. De forma resumida, mencionarei algumas outras funcionalidades que ainda podem ser feitas:<\/p>\n<p><\/p>\n<ul>\n<li>categorias podem ser removidas e desassociadas de arquivos;<\/li>\n<li>os resultados das consultas podem ser copiados para um diret\u00f3rio especificado;<\/li>\n<li>arquivos podem ser executados como programas;<\/li>\n<li>o comando show possui v\u00e1rias op\u00e7\u00f5es, como ordena\u00e7\u00e3o por nome\/data de modifica\u00e7\u00e3o ou acessos\/tamanho\/extens\u00e3o, exibi\u00e7\u00e3o das propriedades dos arquivos e caminhos para os originais, inclus\u00e3o da exibi\u00e7\u00e3o de arquivos ocultos, entre outros;<\/li>\n<li>ao salvar links para fontes da Internet, voc\u00ea tamb\u00e9m pode salvar c\u00f3pias locais das p\u00e1ginas HTML.<\/li>\n<\/ul>\n<p><\/p>\n<p>Todos os detalhes podem ser encontrados na documenta\u00e7\u00e3o do usu\u00e1rio.<\/p>\n<p><\/p>\n<h1 id=\"perspektivy\">Perspectivas<\/h1>\n<p><\/p>\n<p>Frequentemente, os c\u00e9ticos dizem que &#171;ningu\u00e9m vai definir essas tags sozinho&#187;. Com minha experi\u00eancia, posso demonstrar o contr\u00e1rio: j\u00e1 categorizei mais de seis mil arquivos, criei mais de mil categorias e pseud\u00f4nimos, e isso valeu a pena. Quando uma equipe <code>vitis open Plano<\/code> abre a lista de suas tarefas ou quando voc\u00ea usa um \u00fanico comando <code>vitis open LaTeX<\/code> abrindo o livro de Stolyarov sobre o sistema de formata\u00e7\u00e3o LaTeX, j\u00e1 se torna moralmente dif\u00edcil usar o sistema de arquivos &#171;de forma antiga&#187;.<\/p>\n<p><\/p>\n<p>A partir disso, surgem v\u00e1rias ideias. Por exemplo, \u00e9 poss\u00edvel criar uma r\u00e1dio autom\u00e1tica que toca m\u00fasica tem\u00e1tica de acordo com o clima atual, feriados, dia da semana, hora do dia ou esta\u00e7\u00e3o do ano. Outra ideia relacionada \u00e9 um reprodutor de m\u00fasica que conhece as categorias e pode tocar m\u00fasica com base em express\u00f5es que manipulem as categorias como conjuntos. Seria \u00fatil criar um daemon que monitora a pasta &#171;Downloads&#187; e sugere categorizar novos arquivos. E, claro, seria adequado desenvolver um gerenciador de arquivos sem\u00e2ntico gr\u00e1fico adequado. Uma vez, fiz um servi\u00e7o web para compartilhamento de arquivos na empresa, mas n\u00e3o era uma prioridade e ficou obsoleto, embora tenha alcan\u00e7ado um alto n\u00edvel de funcionalidade. (Devido a grandes mudan\u00e7as na pr\u00f3pria <em>vitis<\/em>, j\u00e1 n\u00e3o \u00e9 utiliz\u00e1vel.)<\/p>\n<p>\n<b class=\"spoiler_title\">aqui est\u00e1 uma pequena demonstra\u00e7\u00e3o<\/b><\/p>\n<p><img decoding=\"async\" alt=\"Categorias em vez de diret\u00f3rios, ou Sistema de Arquivos Sem\u00e2ntico para Linux\" src=\"\/wp-content\/uploads\/2019\/06\/0a8e3829424135a6bf9390d2b2654499.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Conclus\u00e3o<\/h1>\n<p><\/p>\n<p><em>Vitis<\/em> \u2014 n\u00e3o \u00e9 a primeira tentativa de mudar radicalmente o estilo de trabalho com dados, mas considerei importante implementar minhas ideias e disponibilizar a implementa\u00e7\u00e3o em acesso aberto sob a licen\u00e7a GNU GPL. Para conveni\u00eancia, foi criado um pacote deb para x86-64, que deve funcionar em todas as distribui\u00e7\u00f5es modernas do Debian. Com ARM surgiram algumas dificuldades (embora todos os outros programas relacionados a <em>vitis<\/em>, funcionem normalmente), mas no futuro tamb\u00e9m ser\u00e1 constru\u00eddo um pacote funcional para esta plataforma (armhf). Parei de criar pacotes RPM devido a problemas com o Fedora 30 e a dificuldade de me dispersar em v\u00e1rias distribui\u00e7\u00f5es RPM, mas eventualmente ainda farei pacotes para pelo menos algumas delas. Por enquanto, pode-se usar <code>make &amp;&amp; make install<\/code> ou <code>checkinstall<\/code>.<\/p>\n<p><\/p>\n<p>Agrade\u00e7o a todos pela aten\u00e7\u00e3o! Espero que este artigo e este projeto possam ser \u00fateis.<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/tech.vindex\/vitis\">Link para o reposit\u00f3rio do projeto<\/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.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\/pt\/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=\"pt_PT\" \/>\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\/pt\/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\udd47Categorias em vez de diret\u00f3rios, ou Sistema de arquivos sem\u00e2ntico para Linux | ProHoster","description":"A classifica\u00e7\u00e3o de dados \u00e9, por si s\u00f3, um tema interessante para pesquisa.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/kategorii-vmesto-direktorij-ili-semanticheskaya-fajlovaya-sistema-dlya-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/35687","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=35687"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/35687\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/26733"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=35687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=35687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=35687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}