Kategoriak direktorioen ordez, edo Linux-erako Fitxategi Sistema Semantikoa

Datuen sailkapena bera ikerketa-gai interesgarria da. Beharrezkoa dirudien informazioa biltzea gustatzen zait, eta beti saiatu naiz nire fitxategientzako direktorio-hierarkia logikoak sortzen, eta egun batean ametsetan fitxategiei etiketak esleitzeko programa eder eta eroso bat ikusi nuen, eta ezin nintzela bizi erabaki nuen. gehiago horrela.

Fitxategi-sistema hierarkikoen arazoa

Erabiltzaileek sarritan dute hurrengo fitxategi berria non gorde aukeratzeko arazoarekin eta euren fitxategiak aurkitzeko arazoarekin (batzuetan fitxategien izenak ez dira batere pertsona batek gogoratzeko asmoa).

Egoeratik ateratzeko modu bat fitxategi-sistema semantikoak izan daitezke, normalean fitxategi-sistema tradizionalaren gehigarri bat direnak. Horietako direktorioek atributu semantikoek ordezkatzen dituzte, etiketak, kategoriak eta metadatuak ere deituak. β€œKategoria” terminoa maizago erabiliko dut, zeren... Fitxategi-sistemen testuinguruan, "etiketa" hitza arraro samarra izaten da batzuetan, batez ere "azpietiketak" eta "etiketetako aliasak" agertzen direnean.

Fitxategiei kategoriak esleitzeak, neurri handi batean, fitxategi bat gordetzeko eta bilatzeko arazoa ezabatzen du: fitxategi bati esleitutako kategorietako bat gutxienez gogoratzen (edo asmatzen baduzu), orduan fitxategia ez da inoiz desagertuko bistatik.

Aurretik, gai hau behin baino gehiagotan planteatu zen HabrΓ©-n (denbora, Π΄Π²Π°, hiru, lau etab.), hemen nire irtenbidea deskribatzen dut.

Errealizaziorako bidea

Aipatutako ametsaren ondoren, kategoriekin beharrezko lana eskaintzen duen komando-interfazea deskribatu nuen nire koadernoan. Orduan erabaki nuen aste batean edo bitan prototipo bat idatzi nezakeela Python edo Bash erabiliz, eta orduan lan egin beharko nuela Qt edo GTK-n shell grafiko bat sortzen. Errealitatea, beti bezala, askoz gogorragoa izan zen, eta garapena atzeratu egin zen.

Jatorrizko ideia zen, lehenik eta behin, komando lerroko interfaze eroso eta zehatz batekin programa bat egitea, kategoriak sortu, ezabatu, fitxategiei kategoriak esleitu eta fitxategietatik kategoriak ezabatu. Programari deitu nion vitis.

Sortzeko lehen saiakera vitis ezerezean amaitu zen, denbora asko lanean eta unibertsitatean ematen hasi zirenetik. Bigarren saiakera jada zerbait zen: master-tesia egiteko, aurreikusitako proiektua burutzea lortu nuen eta baita GTK shell-aren prototipo bat egitea ere. Baina bertsio hori hain fidagarria eta deserosoa izan zen, asko birpentsatu behar izan zen.

Egia esan, hirugarren bertsioa nik neuk oso denbora luzez erabili nuen, nire milaka fitxategi kategorietara transferitu ondoren. Hau ere asko erraztu zen inplementatutako bash osatzeak. Baina arazo batzuk, hala nola kategoria automatikoen falta eta izen bereko fitxategiak gordetzeko gaitasuna, oraindik ere geratzen ziren, eta programa jada bere konplexutasunaren pean makurtuta zegoen. Horrela iritsi nintzen softwarearen garapeneko arazo konplexuak konpontzeko beharra: eskakizun zehatzak idatzi, proba funtzionalaren sistema bat garatu, paketatze-argibideak aztertu eta askoz gehiago. Iritsi naiz orain nire egitasmora, sorkuntza xume hau komunitate askeari aurkeztu ahal izateko. Fitxategien kudeaketa espezifikoak, esate baterako kategorien kontzeptuaren bidez, ustekabeko arazoak eta arazoak sortzen ditu, eta horiek konpontzeko vitis beste bost proiektu sortu zituen bere inguruan, eta horietako batzuk artikuluan aipatuko dira. Orain arte vitis Ez dut shell grafikorik erosi, baina komando-lerroko fitxategi-kategoriak erabiltzearen erosotasuna dagoeneko gainditzen zait fitxategi-kudeatzaile grafiko arrunt baten abantailak.

Erabileraren adibideak

Has gaitezen sinplea - sortu kategoria bat:

vitis create ΠœΡƒΠ·Ρ‹ΠΊΠ°

Gehi diezaiogun konposizio batzuk adibide gisa:

vitis assign ΠœΡƒΠ·Ρ‹ΠΊΠ° -f "The Ink Spots - I Don't Want To Set The World On Fire.mp3"

"Musika" kategoriako edukiak ikus ditzakezu "erakutsi" azpikomandoa erabiliz:

vitis show ΠœΡƒΠ·Ρ‹ΠΊΠ°

Erreproduzitu dezakezu "ireki" azpikomandoa erabiliz.

vitis open ΠœΡƒΠ·Ρ‹ΠΊΠ°

Zeren "Musika" kategorian fitxategi bakarra badugu, hori bakarrik abiaraziko da. Fitxategiak beren programa lehenetsiekin irekitzeko, aparteko erabilgarritasun bat egin nuen vts-fs-ireki (xdg-open edo mimeopen bezalako tresna estandarrak ez zitzaizkidan egokitzen hainbat arrazoirengatik; baina, ezer bada, ezarpenetan fitxategi unibertsala irekitzeko beste utilitate bat zehaztu dezakezu). Utilitate honek ondo funtzionatzen du lan-ingurune desberdinetako banaketa desberdinetan, beraz, vitisekin batera instalatzea gomendatzen dut.

Fitxategiak irekitzeko programa ere zuzenean zehaztu dezakezu:

vitis open ΠœΡƒΠ·Ρ‹ΠΊΠ° --app qmmp

Kategoriak direktorioen ordez, edo Linux-erako Fitxategi Sistema Semantikoa

Sor ditzagun kategoria gehiago eta gehitu fitxategiak "esleitu" erabiliz. Fitxategiak oraindik existitzen ez diren kategoriei esleitzen bazaizkie, horiek sortzeko eskatuko zaizu. Alferrikako eskaera saihestu daiteke -yes bandera erabiliz.

vitis assign ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ R -f "Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² R.pdf" "БтатистичСский ΠΏΠ°ΠΊΠ΅Ρ‚ R: тСория вСроятностСй ΠΈ матстатистика.pdf" --yes

Orain β€œMatematika” kategoria gehitu nahi diogu β€œR pakete estatistikoa: probabilitateen teoria eta estatistika matematikoa.pdf” fitxategiari. Badakigu fitxategi hau jada "R" gisa sailkatuta dagoela eta, beraz, Vitis sistematik kategoria-bidea erabil dezakegu:

vitis assign ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° -v "R/БтатистичСский ΠΏΠ°ΠΊΠ΅Ρ‚ R: тСория вСроятностСй ΠΈ матстатистика.pdf"

Zorionez, bash-a osatzea errazten du.

Ikus dezagun zer gertatu den, --categories bandera erabiliz fitxategi bakoitzeko kategorien zerrenda ikusteko:

vitis show R --categories

Kategoriak direktorioen ordez, edo Linux-erako Fitxategi Sistema Semantikoa

Kontuan izan fitxategiak formatu, mota (formatuak konbinatzen) eta fitxategi-luzapenaren arabera ere sailkatu direla automatikoki. Kategoria hauek desgaitu daitezke nahi izanez gero. Geroago haien izenak lokalizatuko ditut zalantzarik gabe.

Gehi diezaiogun beste zerbait "Matematika"-ri aniztasunerako:

vitis assign ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° -f "ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· - 1984.pdf" ΠŸΠ΅Ρ€Π΅Π»ΡŒΠΌΠ°Π½_Π—Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ_ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°_1927.djvu 

Eta orain gauzak interesgarriak dira. Kategorien ordez, batasun, ebakidura eta kenketa eragiketekin adierazpenak idatz ditzakezu, hau da, multzoetan eragiketak erabili. Adibidez, "Math"-ren "R"-ren ebakidurak fitxategi bat sortuko du.

vitis show R i: ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°

Ken ditzagun β€œR” hizkuntzari erreferentziak β€œMatematika”tik:

vitis show ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°  R  #ΠΈΠ»ΠΈ vitis show ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° c: R

Musika eta R hizkuntza konbinatu ditzakegu helbururik gabe:

vitis show ΠœΡƒΠ·Ρ‹ΠΊΠ° u: R

-n banderak eskaeraren emaitzatik eskatutako fitxategiak "atera" aukera ematen dizu zenbaki eta/edo barrutien arabera, adibidez, -n 3-7, edo zerbait konplikatuagoa: -n 1,5,8-10,13. Askotan erabilgarria da irekitako azpikomandoarekin, nahi dituzun fitxategiak zerrenda batetik irekitzeko aukera ematen duena.

Kategoriak direktorioen ordez, edo Linux-erako Fitxategi Sistema Semantikoa

Direktorioen hierarkia konbentzionaletik urruntzen ari garen bitartean, askotan erabilgarria da habiaratutako kategoriak edukitzea. Sortu dezagun "Estatistikak" azpikategoria "Matematika" kategorian eta gehitu kategoria hau dagokion fitxategian:

vitis create ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°/Бтатистика

vitis assign ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°/Бтатистика -v "R/Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² R.pdf"

vitis show ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° --categories

Kategoriak direktorioen ordez, edo Linux-erako Fitxategi Sistema Semantikoa

Fitxategi honek orain "Matematika/Estatistikak" kategoria duela ikus dezakegu "Matematika"ren ordez (esteka gehigarriak jarraitzen dira).

Bide osoa zuzentzea deserosoa izan daiteke, sor dezagun alias "globala":

vitis assign ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°/Бтатистика -a Бтатистика

vitis show Бтатистика

Kategoriak direktorioen ordez, edo Linux-erako Fitxategi Sistema Semantikoa

Ez ohiko fitxategiak bakarrik

Interneteko estekak

Edozein informazio biltegiratzea bateratzeko, komenigarria litzateke, gutxienez, Interneteko baliabideetarako estekak sailkatzea. Eta hau posible da:

vitis assign Π₯Π°Π±Ρ€ ЦвСтоаномалия -i https://habr.com/ru/company/sfe_ru/blog/437304/ --yes

Leku berezi batean fitxategi bat sortuko da HTML orriaren goiburuarekin eta .desktop luzapenarekin. Hau da GNU/Linux-en lasterbideen formatu tradizionala. Lasterbide horiek sareko laster-marka gisa sailkatzen dira automatikoki.

Jakina, lasterbideak erabiltzeko sortzen dira:

vitis open ЦвСтоаномалия

Komandoa exekutatzen baduzu, gorde berri den esteka arakatzailean irekiko da. Interneteko iturrietarako kategoriako lasterbideek arakatzailearen laster-marken ordezko izan dezakete.

Fitxategi-zatiak

Era berean, erabilgarria da fitxategi banakako kategoriak edukitzea. Ez da eskaera txarra, e? Baina oraingo inplementazioak testu arrunteko fitxategiei, audio eta bideo fitxategiei bakarrik eragiten die. Demagun pelikula batean kontzertu baten zati jakin bat edo une dibertigarri bat markatu behar duzula, gero assign erabiltzean -fragname, -start, -finish banderak erabil ditzakezu. Gorde dezagun "DuckTales"-en pantaila-babeslea:

vitis assign vitis assign -c Заставки -f Duck_Tales/s01s01.avi --finish 00:00:59 --fragname "Duck Tales intro"

vitis open Заставки

Egia esan, ez da fitxategi-mozketa gertatzen; horren ordez, zatiaren erakusle-fitxategi bat sortzen da, fitxategi mota, fitxategirako bidea, zatiaren hasiera eta amaiera deskribatzen dituena. Zatietarako erakusleak sortzea eta irekitzea helburu horietarako bereziki egin ditudan utilitateetan eskuordetzen da - hauek mediafragmenter eta fragplayer dira. Lehenengoak sortzen du, bigarrenak irekitzen du. Audio- eta bideo-grabazioen kasuan, multimedia-fitxategia posizio jakin batetik posizio jakin batera abiarazten da VLC erreproduzitzailea erabiliz, beraz, sisteman ere egon behar du. Hasieran mplayern oinarrituta egin nahi nuen hau, baina arrazoiren batengatik oso oker zegoen momentu egokian kokatzearekin.
Gure adibidean, "Duck Tales intro.fragpointer" fitxategia sortzen da (leku berezi batean jartzen da), eta, ondoren, zati bat erreproduzitzen da fitxategiaren hasieratik (sortzean –start zehaztu ez zenez) 59 arte. bigarren marka, ondoren VLC ixten da.

Beste adibide bat da artista ospetsu baten kontzertu batean emanaldi bakar bat sailkatzea erabaki genuenean:

vitis assign ЛСпс "БпаситС наши Π΄ΡƒΡˆΠΈ" -f Π“Ρ€ΠΈΠ³ΠΎΡ€ΠΈΠΉ Π›Π΅ΠΏc - ΠšΠΎΠ½Ρ†Π΅Ρ€Ρ‚ ΠŸΠ°Ρ€ΡƒΡ - пСсни Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€Π° Высоцкого.mp4 --fragname "БпаситС наши Π΄ΡƒΡˆΠΈ" --start 00:32:18 --finish 00:36:51

vitis open "БпаситС наши Π΄ΡƒΡˆΠΈ"

Irekitakoan, fitxategia nahi duzun posizioan sartuko da eta lau minutu eta erdiren buruan itxiko da.

Nola funtzionatzen duen + funtzio osagarriak

Kategoriak gordetzea

Fitxategi-sistema semantiko bat antolatzea pentsatzen hasi zenean, hiru modu etorri zitzaizkion burura: esteka sinbolikoen biltegiratzea, datu-base baten bidez, XML-en deskribapen baten bidez. Lehenengo metodoak irabazi zuen, zeren... alde batetik, inplementatzeko erraza da, eta, bestetik, erabiltzaileak fitxategi-sistematik zuzenean kategoriak ikusteko aukera du (eta hau erosoa eta garrantzitsua da). Erabilera hasieran vitis "Vitis" direktorioa eta ".config/vitis/vitis.conf" konfigurazio fitxategia erabiltzailearen hasierako direktorioan sortzen dira. Kategoriei dagozkien direktorioak ~/Vitis-en sortzen dira, eta jatorrizko fitxategietarako esteka sinbolikoak sortzen dira kategoriako direktorio horietan. Kategorien aliasak ere haietarako estekak besterik ez dira. Jakina, "Vitis" direktorioaren presentzia etxeko direktorioan agian ez da komeni pertsona batzuei. Beste edozein tokitara alda gaitezke:

vitis service set path /mnt/MyFavoriteDisk/Vitis/

Une jakin batean, argi geratzen da zentzu gutxi duela leku ezberdinetan sakabanatuta dauden fitxategiak sailkatzeak, haien kokapena alda daitekeelako. Hori dela eta, hasteko, direktorio bat sortu nuen neuretzat, non ergelkeriaz dena bota eta kategoria guztiak eman nizkion. Orduan erabaki nuen polita izango zela une hau programa mailan formalizatzea. Horrela agertu zen β€œfitxategi-espazioa” kontzeptua. Erabilera hasieran vitis Ez litzateke kalte egingo berehala halako kokapen bat konfiguratzea (behar ditugun fitxategi guztiak bertan gordeko dira) eta gordetze automatikoa gaitzea:

vitis service add filespace /mnt/MyFavoriteDisk/Filespace/

vitis service set autosave yes

Gorde automatikorik gabe, "esleitu" azpikomandoa erabiltzean, --save bandera beharko da gehitutako fitxategia fitxategi-espazioan gorde nahi baduzu.

Gainera, hainbat fitxategi-espazio gehi ditzakezu eta haien lehentasunak alda ditzakezu; hori erabilgarria izan daiteke fitxategi asko daudenean eta euskarri ezberdinetan gordetzen direnean. Ez dut aukera hau kontuan hartuko hemen; xehetasunak programaren laguntzan aurki daitezke.

Fitxategi Semantikoaren Migrazioa

Dena den, Vitis direktorioa eta fitxategi-espazioak teorikoki batzuetan leku batetik bestera mugi daitezke. Funtzionatzeko, aparteko erabilgarritasun bat sortu dut esteka-editorea, estekak multzoka edita ditzake, bidearen zatiak beste batzuekin ordezkatuz:

cp -r /mnt/MyFavoriteDisk/Vitis/ ~/Vitis
link-editor -d ~/Vitis/ -f /mnt/MyFavoriteDisk/Vitis/ -r ~/Vitis/ -R
cp -r /mnt/MyFavoriteDisk/Filespace/ ~/MyFiles
link-editor -d ~/Vitis/ -f /mnt/FlashDrive-256/Filespace/ -r ~/MyFiles -R

Lehenengo kasuan, /mnt/MyFavoriteDisk/Vitis/-tik hasierako direktoriora eraman ondoren, aliasekin lotutako esteka sinbolikoak editatzen dira. Bigarren kasuan, fitxategi-espazioaren kokapena aldatu ondoren, Vitis-en esteka guztiak berrietara aldatzen dira bidearen zati bat ordezkatzeko eskaeraren arabera.

Kategoria automatikoak

Komandoa exekutatzen baduzu vitis service get autocategorization, ikus dezakezu modu lehenetsian kategoria automatikoak esleitzen direla formatuaren (Formatua eta Mota) eta fitxategiaren luzapena (Luzapena).

Hau erabilgarria da, adibidez, PDFen artean zerbait aurkitu behar duzunean edo EPUB eta FB2-tik gordetakoa begiratu behar duzunean, eskaera exekutatu dezakezu.

vitis show Format/MOBI u: Format/FB2

Gertatu zen GNU/Linux tresna estandarrak, hala nola, fitxategia edo mimetype bezalakoak, ez zitzaizkidan egokitzea beti ez dutelako formatua behar bezala zehazten; fitxategi-sinadura eta luzapenetan oinarritutako nire inplementazioa egin behar izan nuen. Oro har, fitxategi-formatuak definitzearen gaia ikerketarako gai interesgarria da eta aparteko artikulu bat merezi du. Oraingoz esan dezaket beharbada ez dudala benetako aitortzarik eman munduko formatu guztiei, baina orokorrean dagoeneko ondo dabil. Egia da, orain EPUB formatua ZIP gisa definitzen du (oro har, hori justifikatuta dago, baina praktikan ez da jokabide normaltzat hartu behar). Momentuz, kontuan hartu ezaugarri hau esperimentala eta jakinarazi akatsen bat. Egoera arraroetan, beti erabil ditzakezu fitxategi-luzapen-kategoriak, adibidez, Extension/epub.

Formatuaren araberako kategoriak gaituta badaude, formatu batzuk motaren arabera taldekatzen dituzten kategoriak ere gaituta daude: β€œArtxiboak”, β€œIrudiak”, β€œBideoa”, β€œAudioa” eta β€œDokumentuak”. Azpikategoria horietarako ere lokalizatutako izenak egingo dira.

Esaten ez dena

vitis Oso tresna polifazetikoa izan zen, eta zaila da guztia aldi berean estaltzea. Aipa iezadazu laburki zer gehiago egin dezakezun:

  • kategoria ezabatu eta fitxategietatik kendu daiteke;
  • adierazpen-kontsulten emaitzak zehaztutako direktorioa kopia daitezke;
  • fitxategiak programa gisa exekutatu daitezke;
  • Show komandoak aukera asko ditu, adibidez, aldaketen izena/data edo sarbide/tamaina/luzapenaren arabera ordenatzea, fitxategien propietateak eta jatorrizkoetarako bideak erakustea, ezkutuko fitxategiak bistaratzea ahalbidetzea, etab.;
  • Interneteko iturrietarako estekak gordetzen dituzunean, HTML orrien tokiko kopiak ere gorde ditzakezu.

Xehetasun osoa erabiltzailearen laguntzan aurki dezakezu.

Itxaropenak

Eszeptikoek askotan esaten dute "inork ez dituela etiketa horiek berak ezarriko". Nire adibidea erabiliz, kontrakoa froga dezaket: dagoeneko sei mila fitxategi baino gehiago sailkatu ditut, mila kategoria eta alias baino gehiago sortu, eta merezi izan du. Talde bat denean vitis open План ireki zure egitekoen zerrenda edo noiz komando batekin vitis open LaTeX Stolyarov-en LaTeX diseinu-sistemari buruzko liburua irekitzen duzunean, dagoeneko moralki zaila da fitxategi-sistema "modu zaharrean" erabiltzea.

Oinarri horretatik abiatuta, hainbat ideia sortzen dira. Adibidez, egungo eguraldiaren, oporren, asteko egunaren, eguneko orduaren edo urtekoaren arabera gaikako musika pizten duen irrati automatiko bat egin dezakezu. Are gehiago, gaitik hurbilago dago kategoriei buruz dakien musika erreproduzitzailea, eta espresioaren bidez musika erreproduzitu dezake, kategorietan eragiketak eginez multzoetan bezala. Baliagarria da "Deskargak" direktorioa kontrolatuko duen daemon bat egitea eta fitxategi berriak sailkatzeko eskaintzen dituena. Eta, noski, fitxategi-kudeatzaile grafiko semantiko normal bat egin beharko genuke. Garai batean artxiboen erabilera kolektiborako enpresarako web-zerbitzu bat ere sortu nuen, baina ez zen lehentasuna eta garrantzirik gabe geratu zen, nahiz eta errendimendu maila altua lortu. (Aldaketa handien ondorioz vitis, jada ez da erabilgarri.)

hona demo txiki bat

Kategoriak direktorioen ordez, edo Linux-erako Fitxategi Sistema Semantikoa

Ondorioa

vitis ez da datuekin lan egiteko estiloa errotik aldatzeko lehen saiakera, baina nire ideiak ezartzea eta inplementazioa publikoki eskuragarri jartzea GNU GPL lizentziapean garrantzitsutzat jo nuen. Erosotasunerako, deb pakete bat egin da x86-64rako; Debian banaketa moderno guztietan funtzionatu beharko luke. ARM-n zailtasun txikiak egon ziren (beste programa guztiak, berriz, vitis, ondo funtzionatzen du), baina etorkizunean plataforma honetarako lan pakete bat osatuko da (armhf). Oraingoz RPM paketeak sortzeari utzi diot Fedora 30-n arazoengatik eta RPM banaketa askotan zabaltzeko zailtasunengatik, baina geroago paketeak gutxienez horietako pare baterako egingo dira. Bitartean erabil dezakezu make && make install edo checkinstall.

Eskerrik asko guztioi zuen arretagatik! Artikulu hau eta proiektu hau erabilgarriak izatea espero dut.

Proiektuaren biltegirako esteka

Iturria: www.habr.com

Gehitu iruzkin berria