Categorïau yn lle cyfeiriaduron, neu'r System Ffeil Semantig ar gyfer Linux

Mae dosbarthu data ei hun yn bwnc ymchwil diddorol. Rwyf wrth fy modd yn casglu gwybodaeth sy'n ymddangos yn angenrheidiol, ac rwyf bob amser wedi ceisio creu hierarchaethau cyfeiriadur rhesymegol ar gyfer fy ffeiliau, ac un diwrnod mewn breuddwyd gwelais raglen hardd a chyfleus ar gyfer aseinio tagiau i ffeiliau, a phenderfynais na allwn fyw fel hyn mwyach.

Problem systemau ffeiliau hierarchaidd

Mae defnyddwyr yn aml yn wynebu'r broblem o ddewis ble i gadw'r ffeil newydd nesaf a'r broblem o ddod o hyd i'w ffeiliau eu hunain (weithiau ni fwriedir i enwau ffeiliau o gwbl gael eu cofio gan berson).

Gall systemau ffeiliau semantig fod yn ffordd allan o'r sefyllfa, sydd fel arfer yn ychwanegiad i'r system ffeiliau draddodiadol. Mae priodoleddau semantig yn disodli cyfeirlyfrau ynddynt, a elwir hefyd yn dagiau, categorïau, a metadata. Byddaf yn defnyddio’r term “categori” yn amlach, oherwydd... Yng nghyd-destun systemau ffeiliau, mae'r gair "tag" weithiau ychydig yn rhyfedd, yn enwedig pan fydd "subtags" a "tag aliases" yn ymddangos.

Mae aseinio categorïau i ffeiliau i raddau helaeth yn dileu'r broblem o storio a chwilio am ffeil: os ydych chi'n cofio (neu'n dyfalu) o leiaf un o'r categorïau a neilltuwyd i ffeil, yna ni fydd y ffeil byth yn diflannu o'r golwg.

Yn flaenorol, codwyd y pwnc hwn fwy nag unwaith ar Habré (amser, два, 3, pedwar ac ati), dyma fi'n disgrifio fy ateb.

Llwybr i Wireddu

Yn syth ar ôl y freuddwyd a grybwyllwyd, disgrifiais yn fy llyfr nodiadau y rhyngwyneb gorchymyn sy'n darparu'r gwaith angenrheidiol gyda chategorïau. Yna penderfynais y gallwn mewn wythnos neu ddwy ysgrifennu prototeip gan ddefnyddio Python neu Bash, ac yna byddai'n rhaid i mi weithio ar greu cragen graffigol yn Qt neu GTK. Trodd y realiti, fel bob amser, yn llawer llymach, a bu oedi wrth ddatblygu.

Y syniad gwreiddiol oedd gwneud rhaglen yn gyntaf gyda rhyngwyneb llinell orchymyn cyfleus a chryno a fyddai'n creu, dileu categorïau, aseinio categorïau i ffeiliau a dileu categorïau o ffeiliau. Galwais y rhaglen vitis.

Ymgais cyntaf i greu vitis Daeth i ben mewn dim, oherwydd dechreuwyd treulio llawer o amser ar waith a choleg. Roedd yr ail ymgais eisoes yn rhywbeth: ar gyfer thesis y meistr, llwyddais i gwblhau'r prosiect a gynlluniwyd a hyd yn oed wneud prototeip o'r gragen GTK. Ond trodd y fersiwn honno mor annibynadwy ac anghyfleus fel bod yn rhaid ailfeddwl llawer.

Defnyddiais y trydydd fersiwn fy hun am amser hir iawn, ar ôl trosglwyddo miloedd o fy ffeiliau i gategorïau. Hwyluswyd hyn yn fawr hefyd gan gwblhau'r bash a weithredwyd. Ond erys rhai problemau, megis diffyg categorïau awtomatig a'r gallu i storio ffeiliau o'r un enw, ac roedd y rhaglen eisoes wedi'i phlygu o dan ei chymhlethdod ei hun. Dyma sut y deuthum i'r angen i ddatrys problemau datblygu meddalwedd cymhleth: ysgrifennu gofynion manwl, datblygu system brofi swyddogaethol, astudio cyfarwyddiadau pecynnu, a llawer mwy. Rwyf bellach wedi cyrraedd fy nghynllun, fel y gellir cyflwyno'r greadigaeth ostyngedig hon i'r gymuned rydd. Mae rheoli ffeiliau penodol megis rheoli trwy'r cysyniad o gategorïau yn codi materion a phroblemau annisgwyl, ac wrth eu datrys vitis silio pum prosiect arall o'i gwmpas ei hun, a bydd rhai ohonynt yn cael eu crybwyll yn yr erthygl. Hyd yn hyn vitis Nid wyf wedi prynu cragen graffigol, ond mae hwylustod defnyddio categorïau ffeil o'r llinell orchymyn eisoes yn drech nag unrhyw fanteision rheolwr ffeiliau graffigol rheolaidd i mi.

Enghreifftiau o ddefnyddio

Gadewch i ni ddechrau syml - creu categori:

vitis create Музыка

Gadewch i ni ychwanegu rhywfaint o gyfansoddiad ato fel enghraifft:

vitis assign Музыка -f "The Ink Spots - I Don't Want To Set The World On Fire.mp3"

Gallwch weld cynnwys y categori “Cerddoriaeth” gan ddefnyddio'r is-orchymyn “show”:

vitis show Музыка

Gallwch ei chwarae gan ddefnyddio'r is-orchymyn “agored”.

vitis open Музыка

Achos Os mai dim ond un ffeil sydd gennym yn y categori “Cerddoriaeth”, yna dim ond yr un honno fydd yn lansio. Er mwyn agor ffeiliau gyda'u rhaglenni diofyn, fe wnes i gyfleustodau ar wahân vts-fs-agored (Nid oedd offer safonol fel xdg-open neu mimeopen yn addas i mi am nifer o resymau; ond, os o gwbl, yn y gosodiadau gallwch nodi cyfleustodau arall ar gyfer agor ffeiliau cyffredinol). Mae'r cyfleustodau hwn yn gweithio'n dda ar wahanol ddosbarthiadau gyda gwahanol amgylcheddau gwaith, felly rwy'n argymell ei osod ynghyd â vitis.

Gallwch hefyd nodi'n uniongyrchol y rhaglen i agor ffeiliau:

vitis open Музыка --app qmmp

Categorïau yn lle cyfeiriaduron, neu'r System Ffeil Semantig ar gyfer Linux

Gadewch i ni greu mwy o gategorïau ac ychwanegu ffeiliau gan ddefnyddio “assign”. Os caiff ffeiliau eu neilltuo i gategorïau nad ydynt yn bodoli eto, fe'ch anogir i'w creu. Gellir osgoi cais diangen trwy ddefnyddio'r faner -ie.

vitis assign Программирование R -f "Введение в R.pdf" "Статистический пакет R: теория вероятностей и матстатистика.pdf" --yes

Nawr rydym am ychwanegu'r categori “Mathemateg” i'r ffeil “Pecyn ystadegol R: theori tebygolrwydd ac ystadegau mathemategol.pdf”. Gwyddom fod y ffeil hon eisoes wedi'i chategoreiddio fel "R" ac felly gallwn ddefnyddio'r llwybr categori o'r system Vitis:

vitis assign Математика -v "R/Статистический пакет R: теория вероятностей и матстатистика.pdf"

Yn ffodus, mae cwblhau bash yn gwneud hyn yn hawdd.

Dewch i ni weld beth ddigwyddodd, gan ddefnyddio'r faner --categories i weld rhestr o gategorïau ar gyfer pob ffeil:

vitis show R --categories

Categorïau yn lle cyfeiriaduron, neu'r System Ffeil Semantig ar gyfer Linux

Sylwch fod y ffeiliau hefyd wedi'u categoreiddio'n awtomatig yn ôl fformat, math (cyfuno fformatau) ac estyniad ffeil. Gellir analluogi'r categorïau hyn os dymunir. Yn ddiweddarach byddaf yn bendant yn lleoleiddio eu henwau.

Gadewch i ni ychwanegu rhywbeth arall at “Mathemateg” ar gyfer amrywiaeth:

vitis assign Математика -f "Математический анализ - 1984.pdf" Перельман_Занимательная_математика_1927.djvu 

A nawr mae pethau'n mynd yn ddiddorol. Yn lle categorïau, gallwch ysgrifennu ymadroddion gyda gweithrediadau undeb, croestoriad a thynnu, hynny yw, defnyddio gweithrediadau ar setiau. Er enghraifft, bydd croestoriad "Math" gyda "R" yn arwain at un ffeil.

vitis show R i: Математика

Gadewch i ni dynnu cyfeiriadau at yr iaith “R” o “Mathemateg”:

vitis show Математика  R  #или vitis show Математика c: R

Gallwn gyfuno cerddoriaeth a’r iaith R yn ddibwrpas:

vitis show Музыка u: R

Mae baner -n yn caniatáu ichi “dynnu allan” y ffeiliau gofynnol o ganlyniad y cais yn ôl niferoedd a / neu ystodau, er enghraifft, -n 3-7, neu rywbeth mwy cymhleth: -n 1,5,8-10,13. Mae'n aml yn ddefnyddiol gyda'r is-orchymyn agored, sy'n eich galluogi i agor y ffeiliau a ddymunir o restr.

Categorïau yn lle cyfeiriaduron, neu'r System Ffeil Semantig ar gyfer Linux

Er ein bod yn symud i ffwrdd o ddefnyddio hierarchaeth gyfeiriadur confensiynol, mae'n aml yn ddefnyddiol cael categorïau nythu. Gadewch i ni greu is-gategori “Ystadegau” o dan y categori “Mathemateg” ac ychwanegu'r categori hwn at y ffeil briodol:

vitis create Математика/Статистика

vitis assign Математика/Статистика -v "R/Введение в R.pdf"

vitis show Математика --categories

Categorïau yn lle cyfeiriaduron, neu'r System Ffeil Semantig ar gyfer Linux

Gallwn weld bod gan y ffeil hon bellach y categori “Mathemateg/Ystadegau” yn lle “Mathemateg” (mae dolenni ychwanegol yn cael eu holrhain).

Gall mynd i’r afael â’r llwybr llawn fod yn anghyfleus, gadewch i ni greu alias “byd-eang”:

vitis assign Математика/Статистика -a Статистика

vitis show Статистика

Categorïau yn lle cyfeiriaduron, neu'r System Ffeil Semantig ar gyfer Linux

Nid dim ond ffeiliau rheolaidd

Cysylltiadau rhyngrwyd

Er mwyn uno storio unrhyw wybodaeth, byddai'n ddefnyddiol, o leiaf, i gategoreiddio dolenni i adnoddau Rhyngrwyd. Ac mae hyn yn bosibl:

vitis assign Хабр Цветоаномалия -i https://habr.com/ru/company/sfe_ru/blog/437304/ --yes

Bydd ffeil yn cael ei chreu mewn man arbennig gyda phennawd y dudalen HTML a'r estyniad .desktop. Dyma'r fformat llwybr byr traddodiadol yn GNU/Linux. Mae llwybrau byr o'r fath yn cael eu categoreiddio'n awtomatig fel NetworkBookmarks.

Yn naturiol, mae llwybrau byr yn cael eu creu i'w defnyddio:

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

Mae gweithredu'r gorchymyn yn achosi i'r ddolen sydd newydd ei chadw gael ei hagor yn y porwr. Gall llwybrau byr wedi'u categoreiddio i ffynonellau Rhyngrwyd gymryd lle nodau tudalen porwr.

Darnau ffeil

Mae hefyd yn ddefnyddiol cael categorïau ar gyfer darnau unigol o ffeiliau. Ddim yn gais gwael, eh? Ond dim ond ffeiliau testun plaen, ffeiliau sain a fideo y mae'r gweithredu presennol yn effeithio arnynt. Gadewch i ni ddweud bod angen i chi nodi rhan benodol o gyngerdd neu eiliad ddoniol mewn ffilm, yna wrth ddefnyddio assign gallwch ddefnyddio'r baneri -fragname, -start, -finish. Gadewch i ni arbed yr arbedwr sgrin o "DuckTales":

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

vitis open Заставки

Mewn gwirionedd, nid oes unrhyw dorri ffeil yn digwydd; yn lle hynny, crëir ffeil pwyntydd i'r darn, sy'n disgrifio'r math o ffeil, y llwybr i'r ffeil, dechrau a diwedd y darn. Mae creu ac agor awgrymiadau i ddarnau yn cael ei ddirprwyo i gyfleustodau a wneuthum yn arbennig at y dibenion hyn - mediafragmenter a fragplayer yw'r rhain. Mae'r cyntaf yn creu, yr ail yn agor. Yn achos recordiadau sain a fideo, mae'r ffeil cyfryngau yn cael ei lansio o safle penodol i safle penodol gan ddefnyddio'r chwaraewr VLC, felly mae'n rhaid iddo hefyd fod yn y system. Ar y dechrau roeddwn i eisiau gwneud hyn yn seiliedig ar mplayer, ond am ryw reswm roedd yn gam iawn gyda lleoli ar yr eiliad iawn.
Yn ein hesiampl ni, mae'r ffeil “Duck Tales intro.fragpointer” yn cael ei chreu (mae'n cael ei rhoi mewn lle arbennig), ac yna mae darn yn cael ei chwarae o ddechrau'r ffeil (gan na nodwyd -start wrth greu) tan y 59 ail farc, ac ar ôl hynny mae VLC yn cau .

Enghraifft arall yw pan benderfynon ni gategoreiddio perfformiad unigol mewn cyngerdd gan artist enwog:

vitis assign Лепс "Спасите наши души" -f Григорий Лепc - Концерт Парус - песни Владимира Высоцкого.mp4 --fragname "Спасите наши души" --start 00:32:18 --finish 00:36:51

vitis open "Спасите наши души"

Pan gaiff ei hagor, bydd y ffeil yn cael ei chynnwys yn y sefyllfa ddymunol a bydd yn cau ar ôl pedair munud a hanner.

Sut mae'r cyfan yn gweithio + nodweddion ychwanegol

Categorïau storio

Ar ddechrau meddwl am drefnu system ffeiliau semantig, daeth tair ffordd i'r meddwl: trwy storio cysylltiadau symbolaidd, trwy gronfa ddata, trwy ddisgrifiad yn XML. Enillodd y dull cyntaf, oherwydd ... ar y naill law, mae'n hawdd ei weithredu, ac ar y llaw arall, mae'r defnyddiwr yn cael y cyfle i edrych ar gategorïau yn uniongyrchol o'r system ffeiliau (ac mae hyn yn gyfleus ac yn bwysig). Ar ddechrau'r defnydd vitis Mae'r cyfeiriadur “Vitis” a'r ffeil ffurfweddu “.config/vitis/vitis.conf” yn cael eu creu yng nghyfeirlyfr cartref y defnyddiwr. Crëir cyfeirlyfrau sy'n cyfateb i gategorïau yn ~/Vitis, a chrëir dolenni symbolaidd i'r ffeiliau gwreiddiol yn y cyfeiriaduron categorïau hyn. Mae arallenwau categori hefyd yn ddim ond dolenni iddynt. Wrth gwrs, efallai na fydd presenoldeb y cyfeiriadur “Vitis” yn y cyfeiriadur cartref yn gweddu i rai pobl. Gallwn newid i unrhyw leoliad arall:

vitis service set path /mnt/MyFavoriteDisk/Vitis/

Ar adeg benodol, daw'n amlwg nad yw'n gwneud llawer o synnwyr i gategoreiddio ffeiliau sydd wedi'u gwasgaru mewn gwahanol leoedd, gan y gall eu lleoliad newid. Felly, i ddechrau, creais gyfeiriadur i mi fy hun, lle gwnes i ddympio popeth yn wirion a rhoi pob categori iddo. Yna penderfynais y byddai'n braf ffurfioli'r foment hon ar lefel rhaglen. Dyma sut yr ymddangosodd y cysyniad o “gofod ffeil”. Ar ddechrau'r defnydd vitis Ni fyddai'n brifo sefydlu lleoliad o'r fath ar unwaith (bydd yr holl ffeiliau sydd eu hangen arnom yn cael eu storio yno) a galluogi arbed yn awtomatig:

vitis service add filespace /mnt/MyFavoriteDisk/Filespace/

vitis service set autosave yes

Heb gadw'n awtomatig, bydd angen y faner --save os ydych chi am gadw'r ffeil ychwanegol i'r gofod ffeil er mwyn defnyddio'r is-gorchymyn "aseinio".

Ar ben hynny, gallwch chi ychwanegu sawl gofod ffeil a newid eu blaenoriaethau; gall hyn fod yn ddefnyddiol pan fo llawer o ffeiliau ac maen nhw'n cael eu storio ar wahanol gyfryngau. Ni fyddaf yn ystyried y posibilrwydd hwn yma; mae manylion i'w cael yn help y rhaglen.

Mudo System Ffeil Semantig

Beth bynnag, yn ddamcaniaethol gall y cyfeiriadur Vitis a bylchau ffeil symud o le i le weithiau. Er mwyn gwneud iddo weithio, creais gyfleustodau ar wahân cyswllt-golygydd, sy'n gallu swmp-olygu dolenni, gan ddisodli rhannau o'r llwybr ag eraill:

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

Yn yr achos cyntaf, ar ôl i ni symud o /mnt/MyFavoriteDisk/Vitis/ i'r cyfeiriadur cartref, mae'r cysylltiadau symbolaidd sy'n gysylltiedig â'r arallenwau yn cael eu golygu. Yn yr ail achos, ar ôl newid lleoliad y gofod ffeil, mae'r holl ddolenni yn Vitis yn cael eu newid i rai newydd yn unol â'r cais i ddisodli rhan o'u llwybr.

Categorïau awtomatig

Os ydych chi'n rhedeg y gorchymyn vitis service get autocategorization, gallwch weld bod yn ddiofyn, categorïau awtomatig yn cael eu neilltuo yn ôl fformat (Fformat a Math) ac estyniad ffeil (Estyniad).

Mae hyn yn ddefnyddiol, er enghraifft, pan fydd angen i chi ddod o hyd i rywbeth ymhlith ffeiliau PDF neu edrych ar yr hyn rydych wedi'i storio o EPUB a FB2, gallwch redeg y cais yn syml

vitis show Format/MOBI u: Format/FB2

Digwyddodd felly nad oedd offer safonol GNU/Linux fel ffeil neu deip mime yn addas i mi yn union oherwydd nid ydynt bob amser yn pennu'r fformat yn gywir; roedd yn rhaid i mi wneud fy ngweithrediad fy hun yn seiliedig ar lofnodion ffeil ac estyniadau. Yn gyffredinol, mae'r pwnc o ddiffinio fformatau ffeil yn bwnc diddorol ar gyfer ymchwil ac yn haeddu erthygl ar wahân. Am y tro, gallaf ddweud efallai nad wyf wedi darparu gwir gydnabyddiaeth ar gyfer pob fformat yn y byd, ond yn gyffredinol mae eisoes yn gweithio'n dda. Yn wir, mae EPUB bellach yn diffinio'r fformat fel ZIP (yn gyffredinol, gellir cyfiawnhau hyn, ond yn ymarferol ni ddylid ystyried hyn yn ymddygiad arferol). Am y tro, ystyriwch y nodwedd hon yn arbrofol ac adroddwch am unrhyw fygiau. Mewn sefyllfaoedd rhyfedd, gallwch chi bob amser ddefnyddio categorïau estyniad ffeil, er enghraifft, Estyniad/epub.

Os yw categorïau awtomatig yn ôl fformat wedi'u galluogi, mae categorïau auto sy'n grwpio rhai fformatau yn ôl math hefyd yn cael eu galluogi: “Archifau”, “Lluniau”, “Fideo”, “Sain” a “Dogfennau”. Bydd enwau lleol hefyd yn cael eu gwneud ar gyfer yr is-gategorïau hyn.

Yr hyn na ddywedir

vitis Trodd allan i fod yn offeryn amlochrog iawn, ac mae'n anodd gorchuddio popeth ar unwaith. Gadewch imi sôn yn fyr am beth arall y gallwch chi ei wneud:

  • gellir dileu categorïau a'u tynnu o ffeiliau;
  • gellir copïo canlyniadau ymholiadau mynegiant i'r cyfeiriadur penodedig;
  • gellir rhedeg ffeiliau fel rhaglenni;
  • Mae gan y gorchymyn sioe lawer o opsiynau, er enghraifft, didoli yn ôl enw / dyddiad addasu neu fynediad / maint / estyniad, gan ddangos priodweddau ffeil a llwybrau i'r rhai gwreiddiol, gan alluogi arddangos ffeiliau cudd, ac ati;
  • Pan fyddwch yn cadw dolenni i ffynonellau Rhyngrwyd, gallwch hefyd arbed copïau lleol o dudalennau HTML.

Ceir manylion llawn yn y cymorth defnyddiwr.

Prospects

Mae amheuwyr yn aml yn dweud “na fydd unrhyw un yn gosod y tagiau hyn eu hunain.” Gan ddefnyddio fy enghraifft fy hun, gallaf brofi'r gwrthwyneb: rwyf eisoes wedi categoreiddio mwy na chwe mil o ffeiliau, wedi creu mwy na mil o gategorïau ac aliasau, ac roedd yn werth chweil. Pan fydd un tîm vitis open План agorwch eich rhestr o bethau i'w gwneud neu pan fyddwch ag un gorchymyn vitis open LaTeX Pan fyddwch chi'n agor llyfr Stolyarov am system cynllun LaTeX, mae eisoes yn foesol anodd defnyddio'r system ffeiliau “y ffordd hen ffasiwn.”

Ar y sail hon, mae nifer o syniadau'n codi. Er enghraifft, gallwch chi wneud radio awtomatig sy'n troi cerddoriaeth thematig ymlaen yn ôl y tywydd presennol, gwyliau, diwrnod yr wythnos, amser o'r dydd neu'r flwyddyn. Hyd yn oed yn agosach at y pwnc mae chwaraewr cerddoriaeth sy'n gwybod am gategorïau ac sy'n gallu chwarae cerddoriaeth trwy fynegiant gyda gweithrediadau ar gategorïau fel ar setiau. Mae'n ddefnyddiol gwneud daemon a fydd yn monitro'r cyfeiriadur "Lawrlwythiadau" a chynnig categoreiddio ffeiliau newydd. Ac, wrth gwrs, dylem wneud rheolwr ffeiliau semantig graffigol arferol. Un tro, fe wnes i hyd yn oed greu gwasanaeth gwe ar gyfer y fenter ar gyfer defnydd cyfunol o ffeiliau, ond nid oedd yn flaenoriaeth a daeth yn amherthnasol, er iddo gyflawni lefel uchel o berfformiad. (Oherwydd newidiadau mawr yn y vitis, ni ellir ei ddefnyddio mwyach.)

dyma demo bach

Categorïau yn lle cyfeiriaduron, neu'r System Ffeil Semantig ar gyfer Linux

Casgliad

vitis Nid dyma'r ymgais gyntaf i newid arddull gweithio gyda data yn radical, ond roeddwn i'n ei ystyried yn bwysig gweithredu fy syniadau a sicrhau bod y gweithrediad ar gael i'r cyhoedd o dan drwydded GNU GPL. Er hwylustod, mae pecyn dadleuol wedi'i wneud ar gyfer x86-64; dylai weithio ar bob dosbarthiad Debian modern. Roedd mân anawsterau ar ARM (tra bod pob rhaglen arall yn ymwneud â vitis, gweithio'n iawn), ond yn y dyfodol bydd pecyn gwaith yn cael ei lunio ar gyfer y platfform hwn (armhf). Rwyf wedi rhoi'r gorau i greu pecynnau RPM am y tro oherwydd problemau ar Fedora 30 a'r anhawster o ledaenu ar draws llawer o ddosbarthiadau RPM, ond bydd pecynnau diweddarach yn dal i gael eu gwneud am o leiaf cwpl ohonynt. Yn y cyfamser gallwch chi ddefnyddio make && make install neu checkinstall.

Diolch i chi gyd am eich sylw! Rwy'n gobeithio y gall yr erthygl hon a'r prosiect hwn fod yn ddefnyddiol.

Dolen i ystorfa'r prosiect

Ffynhonnell: hab.com

Ychwanegu sylw