Kategori tinimbang direktori, utawa sistem file Semantik kanggo Linux

Klasifikasi data dhewe minangka topik riset sing menarik. Aku seneng ngempalaken informasi sing misale jek perlu, lan aku tansah nyoba kanggo nggawe hirarki direktori logis kanggo file sandi, lan siji dina ing ngimpi aku weruh program ayu lan trep kanggo nemtokake tags kanggo file, lan aku mutusakΓ© sing aku ora bisa manggon. kaya iki maneh.

Masalah sistem file hirarkis

Pangguna asring ngadhepi masalah milih ngendi kanggo nyimpen file anyar sabanjure lan masalah nemokake file dhewe (kadhangkala jeneng file ora dimaksudake kanggo eling dening wong).

Cara metu saka kahanan kasebut bisa uga sistem file semantik, sing biasane minangka tambahan kanggo sistem file tradisional. Direktori kasebut diganti karo atribut semantik, uga disebut tag, kategori, lan metadata. Aku bakal nggunakake istilah "kategori" luwih kerep, amarga ... Ing konteks sistem file, tembung "tag" kadhangkala rada aneh, utamane nalika muncul "subtag" lan "tag alias".

Nemtokake kategori menyang file umume ngilangi masalah nyimpen lan nggoleki file: yen sampeyan ngelingi (utawa guess) paling ora siji saka kategori sing ditugasake menyang file, file kasebut ora bakal ilang saka tampilan.

Sadurunge, topik iki diangkat luwih saka sepisan ing HabrΓ© (kaping, Π΄Π²Π°, telu, papat etc.), ing kene aku nerangake solusiku.

Path kanggo Realisasi

Sanalika sawise ngimpi kasebut, aku diterangake ing notebook antarmuka printah sing nyedhiyani karya perlu karo kategori. Banjur aku mutusakΓ© sing ing minggu utawa loro aku bisa nulis prototipe nggunakake Python utawa Bash, banjur aku kudu bisa ing nggawe Nihan grafis ing Qt utawa GTK. Kasunyatan, kaya biasane, dadi luwih angel, lan pembangunan ditundha.

Ide asline yaiku nggawe program kanthi antarmuka baris perintah sing trep lan ringkes sing bakal nggawe, mbusak kategori, nemtokake kategori menyang file lan mbusak kategori saka file. Aku nelpon program vitis.

Usaha pisanan kanggo nggawe vitis rampung ing boten, wiwit akèh wektu wiwit ngginakaken ing karya lan College. Upaya kapindho wis ana: kanggo tesis master, aku bisa ngrampungake proyek sing direncanakake lan malah nggawe prototipe cangkang GTK. Nanging versi kasebut dadi ora bisa dipercaya lan ora trep, mula akeh sing kudu dipikirake maneh.

Aku bener nggunakake versi katelu dhewe kanggo dangu banget, wis ditransfer sawetara ewu file sandi kanggo kategori. Iki uga banget difasilitasi dening rampung bash sing ditindakake. Nanging sawetara masalah, kayata kekurangan kategori otomatis lan kemampuan kanggo nyimpen file kanthi jeneng sing padha, isih tetep, lan program kasebut wis ditekuk ing kerumitan dhewe. Mangkene carane aku kudu ngrampungake masalah pangembangan piranti lunak sing rumit: nulis syarat sing rinci, ngembangake sistem uji fungsional, sinau instruksi kemasan, lan liya-liyane. Sapunika kula sampun dumugi ing rancangan kula, supados cipta ingkang andhap asor punika saged kaaturaken dhateng masarakat ingkang mardika. Manajemen file khusus kayata manajemen liwat konsep kategori nyebabake masalah lan masalah sing ora dikarepke, lan kanggo ngrampungake. vitis ngasilake limang proyèk liyane watara dhewe, sawetara kang bakal kasebut ing artikel. Nganti saiki vitis Aku wis ora tuku cangkang grafis, nanging penak nggunakake kategori file saka baris printah wis outweighs kanggo kula sembarang kaluwihan saka manager file grafis biasa.

Tuladha Dianggo

Ayo dadi miwiti prasaja - nggawe kategori:

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

Ayo ditambahake sawetara komposisi minangka conto:

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

Sampeyan bisa ndeleng isi kategori "Musik" nggunakake subcommand "show":

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

Sampeyan bisa muter nggunakake subcommand "mbukak".

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

Amarga Yen kita duwe mung siji file ing kategori "Musik", banjur mung siji sing bakal diluncurake. Kanggo mbukak file nganggo program standar, aku nggawe sarana sing kapisah vts-fs-mbukak (alat standar kaya xdg-open utawa mimeopen ora cocog karo aku amarga sawetara alasan; nanging, yen ana, ing setelan sampeyan bisa nemtokake sarana liyane kanggo mbukak file universal). Utilitas iki bisa digunakake kanthi apik ing distribusi sing beda karo lingkungan kerja sing beda, mula aku nyaranake nginstal bebarengan karo vitis.

Sampeyan uga bisa langsung nemtokake program kanggo mbukak file:

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

Kategori tinimbang direktori, utawa sistem file Semantik kanggo Linux

Ayo nggawe luwih akeh kategori lan nambah file nggunakake "assign". Yen file ditugasake menyang kategori sing durung ana, sampeyan bakal dijaluk nggawe. Panjaluk sing ora perlu bisa dihindari kanthi nggunakake gendera -yes.

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

Saiki kita pengin nambah kategori "Matematika" menyang file "Paket statistik R: teori probabilitas lan statistik matematika.pdf". Kita ngerti manawa file iki wis dikategorikake minangka "R" lan mula kita bisa nggunakake jalur kategori saka sistem Vitis:

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

Untunge, ngrampungake bash nggawe iki gampang.

Ayo ndeleng apa sing kedadeyan, nggunakake gendera --categories kanggo ndeleng dhaptar kategori kanggo saben file:

vitis show R --categories

Kategori tinimbang direktori, utawa sistem file Semantik kanggo Linux

Elinga yen file kasebut uga wis dikategorikake kanthi otomatis miturut format, jinis (format gabungan) lan ekstensi file. Kategori kasebut bisa dipateni yen dikarepake. Mengko aku mesthi bakal lokalake jenenge.

Ayo ditambahake ing "Matematika" kanggo macem-macem:

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

Lan saiki dadi menarik. Tinimbang kategori, sampeyan bisa nulis ekspresi kanthi operasi union, intersection lan subtraction, yaiku nggunakake operasi ing set. Contone, persimpangan "Math" karo "R" bakal ngasilake siji file.

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

Ayo kita nyuda referensi kanggo basa "R" saka "Matematika":

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

Kita bisa nggabungake musik lan basa R tanpa tujuan:

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

GendΓ©ra -n ngidini sampeyan "narik" file sing dibutuhake saka asil panjalukan kanthi nomer lan/utawa kisaran, contone, -n 3-7, utawa sing luwih rumit: -n 1,5,8-10,13. Asring migunani karo subcommand mbukak, sing ngidini sampeyan mbukak file sing dikarepake saka dhaptar.

Kategori tinimbang direktori, utawa sistem file Semantik kanggo Linux

Nalika kita pindhah adoh saka nggunakake hirarki direktori konvensional, iku asring migunani kanggo duwe kategori nested. Ayo nggawe subkategori "Statistik" ing kategori "Matematika" lan tambahake kategori iki menyang file sing cocog:

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

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

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

Kategori tinimbang direktori, utawa sistem file Semantik kanggo Linux

Kita bisa ndeleng manawa file iki saiki duwe kategori "Math / Statistik" tinimbang "Math" (pranala tambahan dilacak).

Ngatasi dalan lengkap bisa uga ora trep, ayo nggawe alias "global":

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

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

Kategori tinimbang direktori, utawa sistem file Semantik kanggo Linux

Ora mung file biasa

pranala internet

Kanggo nyawijikake panyimpenan informasi apa wae, bakal migunani, paling ora, kanggo nggolongake pranala menyang sumber Internet. Lan iki bisa uga:

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

File bakal digawe ing panggonan khusus karo header kaca HTML lan extension .desktop. Iki minangka format trabasan tradisional ing GNU/Linux. Trabasan kasebut kanthi otomatis dikategorikake minangka NetworkBookmarks.

Alami, trabasan digawe kanggo digunakake:

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

Nglakokake perintah kasebut nyebabake link sing mentas disimpen dibukak ing browser. Trabasan sing dikategorikakΓ© menyang sumber Internet bisa dadi panggantos kanggo tetenger browser.

fragmen file

Sampeyan uga migunani kanggo duwe kategori kanggo potongan file individu. Ora panjaluk ala, ta? Nanging implementasine saiki nganti saiki mung mengaruhi file teks biasa, file audio lan video. Ayo dadi ngomong sampeyan kudu menehi tandha bagean tartamtu saka konser utawa wayahe lucu ing film, banjur nalika nggunakake assign sampeyan bisa nggunakake flag -fragname, -wiwitan, -rampung. Ayo simpen screensaver saka "DuckTales":

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

vitis open Заставки

Ing kasunyatan, ora ana pemotongan file; Nanging, file pointer menyang fragmen digawe, sing nggambarake jinis file, path menyang file, wiwitan lan pungkasan fragmen. Nggawe lan mbukak pointer kanggo fragmen didelegasikan menyang utilitas sing digawe khusus kanggo tujuan kasebut - yaiku mediafragmenter lan fragplayer. Sing pisanan nggawe, sing kapindho mbukak. Ing kasus rekaman audio lan video, file media diluncurake saka posisi tartamtu menyang posisi tartamtu nggunakake pamuter VLC, mula uga kudu ana ing sistem kasebut. Ing kawitan aku wanted kanggo nindakake iki adhedhasar mplayer, nanging sakperangan alesan iku banget bengkong karo posisi ing wayahe tengen.
Ing conto kita, file "Duck Tales intro.fragpointer" digawe (diselehake ing panggonan khusus), banjur fragmen dimainake saka wiwitan file (wiwit -start ora ditemtokake nalika nggawe) nganti 59 tandha kapindho, sawise kang VLC nutup .

Conto liyane yaiku nalika kita mutusake kanggo nggolongake pagelaran siji ing konser dening seniman sing misuwur:

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

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

Nalika dibukak, file bakal dilebokake ing posisi sing dikarepake lan bakal ditutup sawise patang menit setengah.

Cara kerjane + fitur tambahan

Nyimpen kategori

Ing wiwitan mikir babagan ngatur sistem file semantik, telung cara teka ing pikiran: liwat panyimpenan pranala simbolis, liwat database, liwat deskripsi ing XML. Cara pisanan menang, amarga ... ing tangan siji, iku gampang kanggo ngleksanakake, lan ing tangan liyane, pangguna duwe kesempatan kanggo katon ing kategori langsung saka sistem file (lan iki trep lan penting). Ing wiwitan panggunaan vitis Direktori "Vitis" lan file konfigurasi ".config/vitis/vitis.conf" digawe ing direktori ngarep pangguna. Direktori sing cocog karo kategori digawe ing ~/Vitis, lan pranala simbolis menyang file asli digawe ing direktori kategori kasebut. Alias ​​kategori uga mung pranala menyang wong-wong mau. Mesthine, ananΓ© direktori "Vitis" ing direktori ngarep bisa uga ora cocog karo sawetara wong. Kita bisa ngalih menyang lokasi liyane:

vitis service set path /mnt/MyFavoriteDisk/Vitis/

Ing titik tartamtu, dadi cetha yen ora ana gunane kanggo nggolongake file sing kasebar ing macem-macem panggonan, amarga lokasi bisa diganti. Mulane, kanggo miwiti, aku nggawe direktori kanggo aku, ing ngendi aku bodho mbuwang kabeh lan menehi kabeh kategori. Banjur aku mutusake manawa luwih becik ngetrapake wektu iki ing tingkat program. Iki minangka konsep "ruang file" muncul. Ing wiwitan panggunaan vitis Ora bakal lara yen langsung nyiyapake lokasi kasebut (kabeh file sing dibutuhake bakal disimpen ing kana) lan ngaktifake autosave:

vitis service add filespace /mnt/MyFavoriteDisk/Filespace/

vitis service set autosave yes

Tanpa autosave, nalika nggunakake subcommand "assign", flag --save bakal dibutuhake yen sampeyan pengin nyimpen file sing ditambahake menyang ruang file.

Kajaba iku, sampeyan bisa nambah sawetara spasi file lan ngganti prioritas; iki bisa migunani nalika akeh file lan disimpen ing media sing beda-beda. Aku ora bakal nimbang kemungkinan iki ing kene; rincian bisa ditemokake ing bantuan program.

Migrasi Sistem File Semantik

Oalah, direktori Vitis lan spasi file bisa kanthi teori bisa pindhah saka panggonan menyang panggonan. Kanggo nindakake, aku nggawe utilitas sing kapisah link-editor, sing bisa ngowahi pranala akeh, ngganti bagean dalan karo liyane:

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

Ing kasus sing sepisanan, sawise kita pindhah saka / mnt / MyFavoriteDisk / Vitis / menyang direktori ngarep, pranala simbolis sing ana gandhengane karo alias diowahi. Ing kasus kaping pindho, sawise ngganti lokasi spasi file, kabeh pranala ing Vitis diganti dadi anyar sesuai karo panjalukan kanggo ngganti bagean saka dalane.

Kategori otomatis

Yen sampeyan mbukak printah vitis service get autocategorization, sampeyan bisa ndeleng manawa kanthi gawan, kategori otomatis diwenehake kanthi format (Format lan Jinis) lan ekstensi file (Ekstensi).

Iki migunani nalika, contone, sampeyan kudu golek soko ing antarane PDFs utawa ndeleng apa sing wis disimpen saka EPUB lan FB2, sampeyan mung bisa mbukak panjalukan

vitis show Format/MOBI u: Format/FB2

Kedadeyan yen alat GNU/Linux standar kayata file utawa mimetype ora cocog karo aku amarga ora mesthi nemtokake format kasebut kanthi bener; Aku kudu nggawe implementasine dhewe adhedhasar tandha tangan lan ekstensi file. UmumΓ©, topik kanggo nemtokake format file minangka topik sing menarik kanggo riset lan pantes artikel sing kapisah. Saiki aku bisa ngomong yen aku durung nyedhiyakake pangenalan sing bener kanggo kabeh format ing donya, nanging umume wis bisa digunakake kanthi apik. Bener, EPUB saiki nemtokake format kasebut minangka ZIP (umum, iki dibenerake, nanging ing praktik iki ora bisa dianggep minangka prilaku normal). Saiki, coba fitur iki minangka eksperimen lan laporake bug apa wae. Ing kahanan aneh, sampeyan bisa tansah nggunakake kategori extension file, contone, Extension / epub.

Yen kategori otomatis miturut format diaktifake, kategori otomatis sing ngelompokake sawetara format miturut jinis uga diaktifake: "Arsip", "Gambar", "Video", "Audio" lan "Dokumen". Jeneng lokal uga bakal digawe kanggo subkategori kasebut.

Apa ora ngandika

vitis Ternyata alat sing akeh banget, lan angel kanggo nutupi kabeh bebarengan. Ayo kula sebutno kanthi ringkes apa maneh sing bisa ditindakake:

  • kategori bisa dibusak lan dibusak saka file;
  • asil pitakon ekspresi bisa disalin menyang direktori sing ditemtokake;
  • file bisa mbukak minangka program;
  • Printah show wis akeh opsi, contone, ngurutake miturut jeneng / tanggal modifikasi utawa akses / ukuran / ekstensi, nuduhake sifat file lan path kanggo asli, mbisakake tampilan file didhelikake, etc.;
  • Nalika sampeyan nyimpen pranala menyang sumber Internet, sampeyan uga bisa nyimpen salinan lokal saka kaca HTML.

Rincian lengkap bisa ditemokake ing bantuan pangguna.

Prospek

Skeptis asring ujar manawa "ora ana sing bakal nyetel tag kasebut dhewe." Nggunakake conto dhewe, aku bisa mbuktekaken ngelawan: Aku wis nggolongake luwih saka enem ewu file, digawe luwih saka sewu kategori lan alias, lan iku worth iku. Nalika siji tim vitis open План mbukak dhaptar tugas utawa nalika nganggo siji printah vitis open LaTeX Nalika sampeyan mbukak buku Stolyarov babagan sistem tata letak LaTeX, wis angel banget nggunakake sistem file "cara lawas."

Ing basis iki, sawetara gagasan muncul. Contone, sampeyan bisa nggawe radio otomatis sing nguripake musik tematik miturut cuaca saiki, preian, dina minggu, wektu utawa taun. Malah luwih cedhak karo topik kasebut yaiku pamuter musik sing ngerti babagan kategori lan bisa muter musik kanthi ekspresi kanthi operasi ing kategori kaya ing set. Iku migunani kanggo nggawe daemon sing bakal ngawasi direktori "Downloads" lan nawakake kanggo nggolongake file anyar. Lan, mesthi, kita kudu nggawe pangatur file semantik grafis normal. Biyen aku malah nggawe layanan web kanggo perusahaan kanggo nggunakake file kolektif, nanging ora dadi prioritas lan dadi ora relevan, sanajan entuk kinerja sing dhuwur. (Amarga owah-owahan gedhe ing vitis, wis ora bisa digunakake maneh.)

kene demo sethitik

Kategori tinimbang direktori, utawa sistem file Semantik kanggo Linux

kesimpulan

vitis ora nyoba pisanan kanggo radikal malih ngganti gaya nggarap data, nanging aku dianggep penting kanggo ngleksanakake gagasan lan nggawe implementasine kasedhiya kanggo umum ing lisensi GNU GPL. Kanggo penak, paket deb wis digawe kanggo x86-64; kudu bisa digunakake ing kabeh distribusi Debian modern. Ana kesulitan cilik ing ARM (nalika kabeh program liyane sing ana gandhengane karo vitis, bisa digunakake kanthi becik), nanging ing mangsa ngarep paket kerja bakal dikompilasi kanggo platform iki (armhf). Aku wis mandheg nggawe paket RPM saiki amarga ana masalah ing Fedora 30 lan angel nyebarake akeh distribusi RPM, nanging paket mengko isih bakal digawe paling ora sawetara. Ing sawetoro wektu sampeyan bisa nggunakake make && make install utawa checkinstall.

Matur nuwun kabeh kanggo manungsa waΓ©! Muga-muga artikel lan proyek iki bisa migunani.

Link menyang repositori proyek

Source: www.habr.com

Add a comment