Kategori olye pou yo anyè, oswa sistèm fichye semantik pou Linux

Klasifikasyon done tèt li se yon sijè rechèch enteresan. Mwen renmen kolekte enfòmasyon ki sanble nesesè, epi mwen te toujou eseye kreye yerachi anyè lojik pou fichye mwen yo, epi yon jou nan yon rèv mwen te wè yon pwogram bèl ak pratik pou asiyen tags nan dosye, epi mwen deside ke mwen pa t 'kapab viv. tankou sa a ankò.

Pwoblèm nan sistèm dosye yerarchize

Itilizatè yo souvan fè fas ak pwoblèm nan chwazi ki kote yo sove pwochen nouvo dosye a ak pwoblèm nan jwenn pwòp dosye yo (pafwa non fichye yo pa gen entansyon ditou pou yon moun sonje).

Yon fason soti nan sitiyasyon an ka se sistèm fichye semantik, ki se nòmalman yon ajoute sou sistèm nan dosye tradisyonèl yo. Anyè nan yo ranplase pa atribi semantik, yo rele tou tags, kategori, ak metadata. Mwen pral itilize tèm "kategori a" pi souvan, paske... Nan kontèks sistèm fichye yo, mo "tag" a pafwa yon ti jan etranj, sitou lè "subtags" ak "tag aliases" parèt.

Bay kategori nan dosye lajman elimine pwoblèm nan nan estoke ak rechèch pou yon fichye: si ou sonje (oswa devine) omwen youn nan kategori yo asiyen nan yon dosye, Lè sa a, dosye a pa janm ap disparèt nan vi.

Anvan sa, sijè sa a te soulve plis pase yon fwa sou Habré (tan, два, twa, kat elatriye), isit la mwen dekri solisyon mwen an.

Chemen pou reyalize

Touswit apre rèv la mansyone, mwen dekri nan kaye mwen an koòdone nan lòd ki bay travay ki nesesè yo ak kategori. Lè sa a, mwen deside ke nan yon semèn oswa de mwen te kapab ekri yon pwototip lè l sèvi avèk Python oswa Bash, ak Lè sa a, mwen ta dwe travay sou kreye yon kokiy grafik nan Qt oswa GTK. Reyalite a, kòm toujou, te tounen vin pi sevè, e devlopman te retade.

Lide orijinal la se te premye nan tout fè yon pwogram ak yon koòdone liy lòd pratik ak kout ki ta kreye, efase kategori, bay kategori nan dosye ak efase kategori nan dosye. Mwen rele pwogram nan vitis.

Premye tantativ pou kreye vitis te fini nan anyen, depi anpil tan te kòmanse pase nan travay ak kolèj. Dezyèm tantativ la te deja yon bagay: pou tèz mèt la, mwen te rive konplete pwojè a te planifye e menm fè yon pwototip nan koki GTK la. Men, vèsyon sa a te vin tèlman enfidèl ak konvenyan ke anpil te dwe repanse.

Mwen aktyèlman itilize twazyèm vèsyon an tèt mwen pou yon tan trè long, li te transfere plizyè milye nan dosye mwen an kategori. Sa a te tou anpil fasilite pa fini bach la aplike. Men, gen kèk pwoblèm, tankou mank de kategori otomatik ak kapasite nan magazen dosye ki gen menm non yo, toujou rete, ak pwogram nan te deja koube anba pwòp konpleksite li yo. Men ki jan mwen te rive nan bezwen pou rezoud pwoblèm devlopman lojisyèl konplèks: ekri egzijans detaye, devlope yon sistèm tès fonksyonèl, etidye enstriksyon anbalaj, ak plis ankò. Kounye a mwen rive nan plan mwen an, pou kreyasyon enb sa a kapab prezante bay kominote lib la. Jesyon espesifik dosye tankou jesyon atravè konsèp nan kategori ogmante pwoblèm inatandi ak pwoblèm, ak nan rezoud yo vitis anjandre senk plis pwojè alantou tèt li, kèk nan yo ki pral mansyone nan atik la. Jiska kounye a vitis Mwen pa te achte yon kokiy grafik, men konvenyans nan lè l sèvi avèk kategori dosye ki soti nan liy lan kòmand deja depase pou mwen nenpòt avantaj ki genyen nan yon manadjè regilye dosye grafik.

Men kèk egzanp sou itilize

Ann kòmanse senp - kreye yon kategori:

vitis create Музыка

Ann ajoute kèk konpozisyon nan li kòm yon egzanp:

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

Ou ka wè sa ki nan kategori "Mizik la" lè l sèvi avèk soukòmand "montre" la:

vitis show Музыка

Ou ka jwe li lè l sèvi avèk kòmandman "louvri".

vitis open Музыка

Paske Si nou gen yon sèl fichye nan kategori "Mizik", Lè sa a, sèlman sa a pral lanse. Nan bi pou yo louvri dosye ak pwogram default yo, mwen te fè yon sèvis piblik separe vts-fs-louvri (Zouti estanda tankou xdg-open oswa mimeopen pa t 'konfòm mwen pou yon kantite rezon; men, si anyen, nan anviwònman yo ou ka presize yon lòt sèvis piblik pou ouvèti dosye inivèsèl). Sèvis piblik sa a travay byen sou distribisyon diferan ak diferan anviwònman k ap travay, kidonk mwen rekòmande enstale li ansanm ak vitis.

Ou kapab tou dirèkteman presize pwogram nan louvri dosye:

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

Kategori olye pou yo anyè, oswa sistèm fichye semantik pou Linux

Ann kreye plis kategori epi ajoute dosye lè l sèvi avèk "assign". Si yo mete dosye yo nan kategori ki poko egziste, yo mande w pou kreye yo. Ou ka evite yon demann ki pa nesesè lè w itilize drapo -yes la.

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

Koulye a, nou vle ajoute kategori "Matematik" nan fichye a "Statistical package R: teyori pwobabilite ak estatistik matematik.pdf". Nou konnen ke fichye sa a deja klase kòm "R" epi kidonk nou ka itilize chemen kategori ki soti nan sistèm Vitis la:

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

Erezman, fini bash fè sa fasil.

Ann wè sa ki te pase, lè l sèvi avèk --categories drapo a pou wè yon lis kategori pou chak fichye:

vitis show R --categories

Kategori olye pou yo anyè, oswa sistèm fichye semantik pou Linux

Remake byen ke dosye yo te tou otomatikman kategori pa fòma, kalite (konbine fòma) ak ekstansyon dosye. Kategori sa yo ka enfim si ou vle. Pita mwen pral definitivman lokalize non yo.

Ann ajoute yon lòt bagay nan "Matematik" pou varyete:

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

Epi kounyeya bagay yo vin enteresan. Olye de kategori, ou ka ekri ekspresyon ak operasyon yo nan inyon, entèseksyon ak soustraksyon, se sa ki, sèvi ak operasyon sou ansanm. Pa egzanp, entèseksyon "Math" ak "R" pral lakòz yon sèl dosye.

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

Se pou nou soustraksyon referans nan lang "R" nan "Matematik":

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

Nou ka san objektif konbine mizik ak lang R la:

vitis show Музыка u: R

Drapo a -n pèmèt ou "rale" dosye ki nesesè yo nan rezilta demann lan pa nimewo ak / oswa chenn, pou egzanp, -n 3-7, oswa yon bagay ki pi konplike: -n 1,5,8-10,13. Li se souvan itil ak soukòmand la louvri, ki pèmèt ou louvri dosye yo vle soti nan yon lis.

Kategori olye pou yo anyè, oswa sistèm fichye semantik pou Linux

Pandan ke nou ap deplase lwen lè l sèvi avèk yon yerachi anyè konvansyonèl, li souvan itil yo gen kategori enbrike. Ann kreye yon sou-kategori "Estatistik" anba kategori "Matematik" epi ajoute kategori sa a nan dosye ki apwopriye a:

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

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

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

Kategori olye pou yo anyè, oswa sistèm fichye semantik pou Linux

Nou ka wè ke dosye sa a kounye a gen kategori "Matematik/Estatistik" olye de "Matematik" (yo ap swiv lyen siplemantè).

Adrese chemen konplè a ka enkonvenyan, ann kreye yon alyas "global":

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

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

Kategori olye pou yo anyè, oswa sistèm fichye semantik pou Linux

Pa sèlman dosye regilye

lyen Entènèt

Pou inifye depo nenpòt enfòmasyon, li ta itil, pou yon minimòm, kategorize lyen ki mennen nan resous Entènèt yo. Ak sa a se posib:

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

Y ap kreye yon fichye ki gen header paj HTML ak ekstansyon .desktop nan yon kote espesyal. Sa a se fòma chemen kout tradisyonèl nan GNU/Linux. Raccoursi sa yo otomatikman klase kòm NetworkBookmarks.

Natirèlman, rakoursi yo kreye pou itilize:

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

Egzekite kòmandman an lakòz lyen ki fèk sove a louvri nan navigatè a. Rakoursi kategori nan sous Entènèt yo ka sèvi kòm yon ranplasman pou Bookmarks navigatè.

Fichye fragman

Li itil tou pou gen kategori pou moso endividyèl nan dosye. Pa yon move demann, eh? Men, aplikasyon aktyèl la jiska prezan sèlman afekte dosye tèks plenn, dosye odyo ak videyo. Ann di ou bezwen make yon sèten pati nan yon konsè oswa yon moman komik nan yon fim, Lè sa a, lè w ap itilize assign ou ka itilize drapo yo -fragname, -start, -finish. Ann sove ekran an soti nan "DuckTales":

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

vitis open Заставки

An reyalite, pa gen okenn koupe dosye rive; olye de sa, yo kreye yon fichye konsèy sou fragman an, ki dekri kalite dosye a, chemen an nan dosye a, kòmansman ak fen fragman an. Kreyasyon ak ouvèti endikasyon pou fragman yo delege bay sèvis piblik ke mwen te fè espesyalman pou rezon sa yo - sa yo se mediafragmenter ak fragplayer. Premye a kreye, dezyèm lan louvri. Nan ka odyo ak anrejistreman videyo, dosye medya a te lanse soti nan yon sèten nan yon sèten pozisyon lè l sèvi avèk jwè a VLC, kidonk li dwe tou nan sistèm nan. Okòmansman mwen te vle fè sa ki baze sou mplayer, men pou kèk rezon li te trè kwochi ak pwezante nan moman an dwa.
Nan egzanp nou an, se fichye a "Duck Tales intro.fragpointer" kreye (li mete nan yon kote espesyal), ak Lè sa a, yo jwe yon fragman depi nan konmansman an nan dosye a (depi -kòmanse pa te espesifye lè yo kreye) jouk nan 59. dezyèm mak, apre sa VLC fèmen.

Yon lòt egzanp se lè nou deside kategorize yon sèl pèfòmans nan yon konsè pa yon atis pi popilè:

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

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

Lè yo louvri, dosye a pral enkli nan pozisyon an vle epi yo pral fèmen apre kat minit ak yon mwatye.

Ki jan li tout travay + karakteristik adisyonèl

Sere kategori

Nan kòmansman an menm nan panse sou òganize yon sistèm fichye semantik, twa fason te vin nan tèt ou: atravè depo nan lyen senbolik, atravè yon baz done, atravè yon deskripsyon nan XML. Premye metòd la te genyen, paske... sou yon bò, li se fasil aplike, ak nan lòt men an, itilizatè a gen opòtinite pou gade nan kategori ki soti dirèkteman nan sistèm nan dosye (e sa a se pratik ak enpòtan). Nan kòmansman an nan itilize vitis Anyè "Vitis" ak fichye konfigirasyon ".config/vitis/vitis.conf" yo kreye nan anyè lakay itilizatè a. Anyè ki koresponn ak kategori yo kreye nan ~/Vitis, epi yo kreye lyen senbolik ki mennen nan dosye orijinal yo nan anyè kategori sa yo. Alias ​​kategori yo tou jis lyen ki mennen nan yo. Natirèlman, prezans nan anyè "Vitis" nan anyè kay la ka pa adapte kèk moun. Nou ka chanje nan nenpòt lòt kote:

vitis service set path /mnt/MyFavoriteDisk/Vitis/

Nan yon sèten pwen, li vin klè ke li fè ti sans nan kategorize dosye yo gaye nan diferan kote, depi kote yo ka chanje. Se poutèt sa, pou kòmanse, mwen te kreye yon anyè pou tèt mwen, kote mwen estipid jete tout bagay ak ba li tout kategori. Lè sa a, mwen te deside ke li ta bèl yo ofisyèlman moman sa a nan nivo pwogram nan. Sa a se ki jan konsèp nan "espas dosye" parèt. Nan kòmansman an nan itilize vitis Li pa ta fè mal imedyatman mete yon kote konsa (tout fichye nou bezwen yo pral estoke la) epi pèmèt autosave:

vitis service add filespace /mnt/MyFavoriteDisk/Filespace/

vitis service set autosave yes

San oto-save, lè w ap itilize soukòmand "assigner" la, --save drapo a ap mande si ou vle sove fichye a ajoute nan espas dosye a.

Anplis, ou ka ajoute plizyè espas dosye epi chanje priyorite yo; sa ka itil lè gen anpil dosye epi yo estoke sou diferan medya. Mwen pa pral konsidere posiblite sa a isit la; detay yo ka jwenn nan èd pwogram nan.

Semantik File System Migrasyon

De tout fason, anyè Vitis ak espas fichye yo ka teyorikman pafwa deplase soti nan yon kote nan yon lòt. Pou fè li travay, mwen te kreye yon sèvis piblik separe lyen-editè, ki ka edite lyen an gwo, ranplase pati nan chemen an ak lòt moun:

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

Nan premye ka a, apre nou te deplase soti nan /mnt/MyFavoriteDisk/Vitis/ nan anyè kay la, lyen senbolik ki asosye ak alyas yo modifye. Nan dezyèm ka a, apre yo fin chanje kote espas fichye a, tout lyen nan Vitis yo chanje an nouvo an akò ak demann pou ranplase yon pati nan chemen yo.

Kategori otomatik yo

Si ou kouri kòmandman an vitis service get autocategorization, ou ka wè ke pa default, kategori otomatik yo asiyen pa fòma (Fòma ak Kalite) ak ekstansyon fichye (ekstansyon).

Sa a itil lè, pou egzanp, ou bezwen jwenn yon bagay nan mitan PDF oswa gade sa ou te estoke nan EPUB ak FB2, ou ka tou senpleman kouri demann lan.

vitis show Format/MOBI u: Format/FB2

Sa te rive ke zouti estanda GNU/Linux tankou fichye oswa mimetype pa t 'konfòm mwen jisteman paske yo pa toujou kòrèkteman detèmine fòma a; mwen te oblije fè pwòp aplikasyon mwen an ki baze sou siyati dosye ak ekstansyon. An jeneral, sijè a nan defini fòma dosye se yon sijè enteresan pou rechèch ak merite yon atik separe. Pou kounye a mwen ka di ke petèt mwen pa bay vre rekonesans pou tout fòma nan mond lan, men an jeneral li deja travay byen. Se vre, EPUB kounye a defini fòma a kòm ZIP (an jeneral, sa a jistifye, men nan pratik sa a pa ta dwe konsidere kòm konpòtman nòmal). Pou le moman, konsidere karakteristik sa a eksperimantal epi rapòte nenpòt ensèk. Nan sitiyasyon etranj, ou ka toujou itilize kategori ekstansyon dosye, pou egzanp, ekstansyon/epub.

Si otokategori pa fòma yo aktive, otokategori ki gwoupe kèk fòma pa kalite yo tou aktive: "Achiv", "Foto", "Videyo", "Odyo" ak "Dokiman". Yo pral fè non lokalize tou pou sou-kategori sa yo.

Sa ki pa di

vitis Li te tounen yon zouti trè divès aspè, epi li difisil pou kouvri tout bagay nan yon fwa. Kite m 'yon ti tan mansyone ki lòt bagay ou ka fè:

  • kategori yo ka efase epi retire nan dosye;
  • rezilta demann ekspresyon yo ka kopye nan anyè a espesifye;
  • dosye yo ka kouri kòm pwogram;
  • Kòmandman an montre gen anpil opsyon, pou egzanp, klasman pa non / dat modifikasyon oswa aksè / gwosè / ekstansyon, ki montre pwopriyete dosye ak chemen orijinal yo, pèmèt ekspozisyon an nan dosye kache, elatriye;
  • Lè ou sove lyen ki mennen nan sous entènèt, ou kapab tou sove kopi lokal paj HTML.

Ou ka jwenn detay konplè nan èd itilizatè a.

Kandida

Moun ki septik yo souvan di ke "pa gen moun ki pral mete tags sa yo tèt yo." Sèvi ak pwòp egzanp mwen an, mwen ka pwouve opoze a: mwen te deja kategori plis pase sis mil fichye, kreye plis pase yon mil kategori ak alyas, epi li te vo li. Lè yon ekip vitis open План louvri lis pou fè ou oswa lè ak yon sèl kòmand vitis open LaTeX Lè ou louvri liv Stolyarov sou sistèm layout LaTeX la, li deja difisil moralman pou itilize sistèm fichye a "ansye mòd."

Sou baz sa a, yon kantite lide leve. Pou egzanp, ou ka fè yon radyo otomatik ki vire sou mizik tematik selon tan aktyèl la, jou ferye, jou nan semèn nan, lè nan jounen an oswa ane. Menm pi pre sijè a se yon jwè mizik ki konnen sou kategori epi li ka jwe mizik pa ekspresyon ak operasyon sou kategori tankou sou seri. Li itil pou fè yon demon ki pral kontwole anyè "Downloads" la epi ofri yo kategorize nouvo fichye yo. Epi, nan kou, nou ta dwe fè yon nòmal manadjè grafik semantik dosye. Yon fwa sou yon tan mwen menm te kreye yon sèvis entènèt pou antrepriz la pou itilizasyon kolektif nan dosye, men li pa t 'yon priyorite e li te vin petinan, byenke li te reyalize yon wo nivo de pèfòmans. (Akòz gwo chanjman nan vitis, li pa ka itilize ankò.)

Men yon ti démonstration

Kategori olye pou yo anyè, oswa sistèm fichye semantik pou Linux

Konklizyon

vitis se pa premye tantativ pou chanje radikalman style travay ak done, men mwen te konsidere li enpòtan pou aplike lide m yo epi fè aplikasyon an disponib piblikman anba lisans GNU GPL. Pou konvenyans, yo te fè yon pake deb pou x86-64; li ta dwe travay sou tout distribisyon Debian modèn. Te gen difikilte minè sou ARM (pandan ke tout lòt pwogram ki gen rapò ak vitis, travay byen), men nan fiti yon pake k ap travay yo pral konpile pou platfòm sa a (armhf). Mwen te sispann kreye pakè RPM pou kounye a akòz pwoblèm sou Fedora 30 ak difikilte pou gaye nan anpil distribisyon RPM, men pita pakè ap toujou fèt pou omwen yon koup nan yo. Antretan ou ka itilize make && make install oswa checkinstall.

Mèsi tout pou atansyon nou! Mwen espere atik sa a ak pwojè sa a ka itil.

Link nan depo pwojè a

Sous: www.habr.com

Add nouvo kòmantè