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Γ© (
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
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
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.
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
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 Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ°
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
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.
Source: www.habr.com