Категориялардын ордуна категориялар же Linux үчүн семантикалык файл системасы

Маалыматтарды классификациялоонун өзү кызыктуу изилдөө темасы. Мен керектүү көрүнгөн маалыматты чогултканды жакшы көрөм жана мен ар дайым файлдарым үчүн логикалык каталогдор иерархияларын түзүүгө аракет кылып келгем жана бир күнү түшүмдө файлдарга тегдерди ыйгаруу үчүн кооз жана ыңгайлуу программаны көрдүм жана мен жашай албайм деп чечтим. мындан ары дагы ушундай.

Иерархиялык файлдык системалардын маселеси

Колдонуучулар көбүнчө кийинки жаңы файлды кайда сактоону тандоо жана өз файлдарын табуу көйгөйүнө туш болушат (кээде файлдын аталыштары адамдын эсинде калгыдай эмес).

Кырдаалдан чыгуунун жолу семантикалык файл тутумдары болушу мүмкүн, алар адатта салттуу файл тутумуна кошумча болуп саналат. Алардагы каталогдор тегдер, категориялар жана метаберилиштер деп аталган семантикалык атрибуттар менен алмаштырылат. Мен "категория" деген терминди көбүрөөк колдоном, анткени... Файлдык системалардын контекстинде "тег" деген сөз кээде бир аз кызыктай болот, өзгөчө "субтегдер" жана "тег лакап аттары" пайда болгондо.

Категорияларды файлдарга ыйгаруу файлды сактоо жана издөө көйгөйүн негизинен жок кылат: эгер сиз файлга ыйгарылган категориялардын жок дегенде бирин эстесеңиз (же болжолдосоңуз), анда файл эч качан көрүнбөй калбайт.

Буга чейин бул тема Habréде бир нече жолу көтөрүлгөн.убакыт, два, үч, төрт ж.б.), бул жерде мен өзүмдүн чечимимди сүрөттөп берем.

Ишке ашыруу жолу

Белгиленген түштөн кийин дароо эле блокнотумда категориялар менен керектүү ишти камсыз кылган командалык интерфейсти сүрөттөп бердим. Анан мен бир же эки жуманын ичинде Python же Bash аркылуу прототибин жаза алам деп чечтим, андан кийин Qt же GTK графикалык кабыкчасын түзүү боюнча иштешим керек. Чындык, мурдагыдай эле, бир топ катаал болуп чыкты жана өнүгүү кечеңдеди.

Баштапкы идея биринчи кезекте категорияларды түзө турган, жок кыла турган, файлдарга категорияларды дайындаган жана файлдардан категорияларды жок кыла турган ыңгайлуу жана кыска буйрук сабы интерфейси бар программаны түзүү болчу. Мен программага чалдым vitis.

түзүү үчүн биринчи аракет vitis эч нерсе менен аяктады, анткени көп убакыт жумушка жана колледжге жумшала баштады. Экинчи аракет буга чейин эле бир нерсе болгон: магистрдик диссертация үчүн мен пландаштырылган долбоорду аягына чыгарууга жана GTK кабыгынын прототибин жасоого жетиштим. Бирок бул версия ушунчалык ишенимсиз жана ыңгайсыз болуп чыкты, ошондуктан көп нерсени кайра карап чыгууга туура келди.

Мен чындыгында үчүнчү версияны өзүм абдан көп колдондум, бир нече миң файлдарымды категорияларга өткөрүп бердим. Буга ишке ашырылган баш аяктоо да чоң өбөлгө түздү. Бирок кээ бир көйгөйлөр, мисалы, автоматтык категориялардын жоктугу жана ошол эле аталыштагы файлдарды сактоо мүмкүнчүлүгү дагы эле сакталып калган жана программа өзүнүн татаалдыгы астында ийилген. Ошентип, мен программалык камсыздоону иштеп чыгуунун татаал көйгөйлөрүн чечүү зарылдыгына келдим: деталдуу талаптарды жазуу, функционалдык тестирлөө системасын иштеп чыгуу, таңгактоо боюнча нускамаларды изилдөө жана башка көптөгөн нерселер. Бул жупуну чыгарманы эркин коомчулукка тартуулоо үчүн мен азыр өз планыма жеттим. Категориялар түшүнүгү аркылуу башкаруу сыяктуу конкреттүү файлдарды башкаруу күтүлбөгөн маселелерди жана көйгөйлөрдү жаратат жана аларды чечүүдө vitis өзүнүн айланасында дагы беш долбоорду жаратты, алардын айрымдары макалада сөз болот. Азыркыга чейин vitis Мен графикалык кабыкты сатып алган жокмун, бирок буйрук сабынан файл категорияларын колдонуунун ыңгайлуулугу мен үчүн кадимки графикалык файл менеджеринин бардык артыкчылыктарынан жогору турат.

Колдонуунун мисалдары

Жөнөкөй баштайлы - категория түзүңүз:

vitis create Музыка

Мисал катары ага бир нече композицияны кошолу:

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

Сиз "Музыка" категориясынын мазмунун "көрсөтүү" чакан буйругун колдонуп көрө аласыз:

vitis show Музыка

Сиз аны "ачык" подкомандасын колдонуп ойной аласыз.

vitis open Музыка

Анткени Эгерде бизде "Музыка" категориясында бир гана файл бар болсо, анда ал гана ишке кирет. Файлдарды демейки программалары менен ачуу максатында, мен өзүнчө утилитаны жасадым vts-fs-open (xdg-open же mimeopen сыяктуу стандарттуу куралдар бир нече себептерден улам мага туура келбеди; бирок, эгер бир нерсе болсо, орнотуулардан универсалдуу файлды ачуу үчүн башка утилитаны көрсөтсөңүз болот). Бул утилита ар кандай иштөө чөйрөсүндөгү ар кандай дистрибуцияларда жакшы иштейт, ошондуктан мен аны vitis менен бирге орнотууну сунуштайм.

Ошондой эле файлдарды ачуу үчүн программаны түз көрсөтсөңүз болот:

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

Категориялардын ордуна категориялар же Linux үчүн семантикалык файл системасы

Келгиле, көбүрөөк категорияларды түзүп, "дайындоо" аркылуу файлдарды кошолу. Эгер файлдар али жок категорияларга дайындалса, сизден аларды түзүү сунушталат. -yes желекчесин колдонуу менен керексиз суроодон кутулса болот.

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

Эми биз “Статистикалык пакет R: ыктымалдуулук теориясы жана математикалык статистика.pdf” файлына “Математика” категориясын кошкубуз келет. Бул файл мурунтан эле "R" катары категорияланганын билебиз, ошондуктан Vitis тутумунун категория жолун колдоно алабыз:

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

Бактыга жараша, bash аяктоо муну жеңилдетет.

Ар бир файл үчүн категориялардын тизмесин көрүү үчүн --categories желегин колдонуп, эмне болгонун карап көрөлү:

vitis show R --categories

Категориялардын ордуна категориялар же Linux үчүн семантикалык файл системасы

Файлдар форматы, түрү (форматтарды бириктирет) жана файл кеңейтүүсү боюнча автоматтык түрдө категорияларга бөлүнгөнүн эске алыңыз. Кааласаңыз, бул категориялар өчүрүлүшү мүмкүн. Кийинчерээк алардын ысымдарын сөзсүз локализациялайм.

"Математикага" дагы бир нерсени кошолу:

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

Эми баары кызык болуп баратат. Категориялардын ордуна бириктирүү, кесилиш жана кемитүү амалдары менен туюнтмаларды жазса болот, башкача айтканда, көптүк боюнча амалдарды колдонсо болот. Мисалы, "Математика" менен "R" кесилиши бир файлга алып келет.

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

«Математикадан» «R» тилине шилтемелерди алып салалы:

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

Биз музыка менен R тилин максатсыз айкалыштыра алабыз:

vitis show Музыка u: R

-n желеги суроо-талаптын жыйынтыгынан сандар жана/же диапазон боюнча талап кылынган файлдарды “чыгарууга” мүмкүндүк берет, мисалы, -n 3-7, же андан да татаал нерсе: -n 1,5,8-10,13. Бул көбүнчө тизмеден керектүү файлдарды ачууга мүмкүндүк берген ачык подкоманда менен пайдалуу.

Категориялардын ордуна категориялар же Linux үчүн семантикалык файл системасы

Кадимки каталог иерархиясын колдонуудан алыстап жатканыбыз менен, уяланган категориялар көп учурда пайдалуу. Келгиле, "Математика" категориясынын астында "Статистика" субкатегориясын түзүп, бул категорияны тиешелүү файлга кошолу:

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

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

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

Категориялардын ордуна категориялар же Linux үчүн семантикалык файл системасы

Бул файлда азыр "Математика" дегендин ордуна "Математика/Статистика" категориясы бар экенин көрөбүз (кошумча шилтемелер көзөмөлдөнөт).

Толук жолго кайрылуу ыңгайсыз болушу мүмкүн, келгиле, "глобалдык" лакап ат түзөлү:

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

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

Категориялардын ордуна категориялар же Linux үчүн семантикалык файл системасы

Кадимки файлдар гана эмес

Интернет шилтемелери

Кандайдыр бир маалыматтын сакталышын унификациялоо үчүн, жок дегенде, интернет-ресурстарга шилтемелерди категорияларга бөлүү пайдалуу болмок. Жана бул мүмкүн:

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

Файл HTML баракчасынын аталышы жана .desktop кеңейтүүсү менен атайын жерде түзүлөт. Бул GNU/Linux'тун салттуу жарлык форматы. Мындай жарлыктар автоматтык түрдө NetworkBookmarks категориясына бөлүнөт.

Албетте, жарлыктар колдонуу үчүн түзүлгөн:

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

Буйруктун аткарылышы браузерде жаңы сакталган шилтемени ачууга алып келет. Интернет булактарына категорияланган жарлыктар браузердин кыстармаларынын ордуна кызмат кыла алат.

Файл фрагменттери

Файлдардын айрым бөлүктөрүнүн категориялары болушу да пайдалуу. Жаман өтүнүч эмес, ээ? Бирок азыркы ишке ашыруу азырынча жөнөкөй текст файлдарына, аудио жана видео файлдарга гана таасир этет. Концерттин белгилүү бир бөлүгүн же кинодогу күлкүлүү учурду белгилөө керек дейли, андан кийин assign дегенди колдонууда -фрагнамент, -старт, -finish желектерин колдонсоңуз болот. Келгиле, "DuckTales" экранынан сактагычты сактайлы:

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

vitis open Заставки

Чындыгында, эч кандай файлды кесүү болбойт, анын ордуна фрагментке көрсөткүч файл түзүлөт, ал файлдын түрүн, файлдын жолун, фрагменттин башталышын жана аягын сүрөттөйт. Фрагменттерге көрсөткүчтөрдү түзүү жана ачуу мен атайын ушул максаттар үчүн жасаган утилиталарга берилген - булар медиафрагментер жана фрагплейер. Биринчиси жаратса, экинчиси ачылат. Аудио жана видео жазууларда медиа файл VLC ойноткучтун жардамы менен белгилүү бир абалдан белгилүү бир позицияга чейин ишке киргизилет, ошондуктан ал системада да болушу керек. Башында мен муну mpplayerдин негизинде жасагым келди, бирок эмнегедир ал туура учурда позициялоо менен абдан кыйшык болуп калды.
Биздин мисалда “Duck Tales intro.fragpointer” файлы түзүлөт (ал атайын жерге жайгаштырылат), андан кийин фрагмент файлдын башынан (түзүүдө –start көрсөтүлбөгөндүктөн) 59га чейин ойнотулат. экинчи белги, андан кийин VLC жабылат.

Дагы бир мисал, биз белгилүү артисттин концертиндеги бир спектаклди категорияга бөлүүнү чечкенибиз:

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

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

Ачылганда файл керектүү позицияга киргизилет жана төрт жарым мүнөттөн кийин жабылат.

Мунун баары кантип иштейт + кошумча функциялар

Категорияларды сактоо

Семантикалык файл тутумун уюштуруу жөнүндө ойлонуунун эң башында үч жол келди: символдук шилтемелерди сактоо, маалымат базасы аркылуу, XMLде сүрөттөмө аркылуу. Биринчи ыкма жеңди, анткени... бир жагынан, аны ишке ашыруу оңой, ал эми экинчи жагынан, колдонуучу категорияларды түздөн-түз файл тутумунан кароо мүмкүнчүлүгүнө ээ (жана бул ыңгайлуу жана маанилүү). Колдонуунун башында vitis "Vitis" каталогу жана ".config/vitis/vitis.conf" конфигурация файлы колдонуучунун үй каталогунда түзүлөт. Категорияларга туура келген каталогдор ~/Vitis ичинде түзүлөт жана бул категория каталогдорунда баштапкы файлдарга символдук шилтемелер түзүлөт. Категориянын лакап аттары да аларга шилтемелер. Албетте, үй каталогунда "Vitis" каталогунун болушу кээ бир адамдарга туура келбеши мүмкүн. Биз каалаган башка жерге которула алабыз:

vitis service set path /mnt/MyFavoriteDisk/Vitis/

Белгилүү бир учурда, ар кайсы жерлерде чачырап кеткен файлдарды категорияларга бөлүүнүн мааниси жок экени айкын болот, анткени алардын жайгашкан жери өзгөрүшү мүмкүн. Ошондуктан, башталышы үчүн, мен өзүм үчүн каталог түздүм, анда мен акылсыздык менен баарын таштап, бардык категорияларды бердим. Анан ушул учурду программалык деңгээлде расмийлештирип алсам жакшы болот деп чечтим. "Файл мейкиндиги" түшүнүгү ушундайча пайда болгон. Колдонуунун башында vitis Мындай жерди дароо орнотуп алуу зыяны тийбейт (бизге керектүү бардык файлдар ошол жерде сакталат) жана автосактоону иштетүү:

vitis service add filespace /mnt/MyFavoriteDisk/Filespace/

vitis service set autosave yes

Автосактоосуз, "дайындоо" кичи буйругун колдонууда, эгер сиз кошулган файлды файл мейкиндигине сактагыңыз келсе, --save желекчеси талап кылынат.

Мындан тышкары, сиз бир нече файл мейкиндигин кошуп, алардын артыкчылыктарын өзгөртө аласыз; бул файлдар көп болгондо жана алар ар кандай медиада сакталганда пайдалуу болушу мүмкүн. Мен бул жерде бул мүмкүнчүлүктү карап отурбайм; чоо-жайын программанын жардамынан тапса болот.

Семантикалык файл тутумунун миграциясы

Кандай болбосун, Vitis каталогу жана файл мейкиндиктери теориялык жактан кээде бир жерден экинчи жерге көчүп кетиши мүмкүн. Аны иштетүү үчүн мен өзүнчө утилитаны түздүм шилтеме-редактору, ал шилтемелерди жапырт түзөтүп, жолдун бөлүктөрүн башкалар менен алмаштыра алат:

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

Биринчи учурда, биз /mnt/MyFavoriteDisk/Vitis/ үй каталогуна өткөндөн кийин, каймана аттар менен байланышкан символдук шилтемелер түзөтүлөт. Экинчи учурда, файл мейкиндигинин ордун өзгөрткөндөн кийин, Vitisдеги бардык шилтемелер алардын жолунун бир бөлүгүн алмаштыруу өтүнүчүнө ылайык жаңыларына өзгөртүлөт.

Автоматтык категориялар

Эгер сиз буйрукту иштетсеңиз vitis service get autocategorization, демейки боюнча, автоматтык категориялар формат (Формат жана Түр) жана файл кеңейтүүсү (Кеңейтүү) боюнча дайындалганын көрө аласыз.

Бул, мисалы, сиз PDF файлдарынын арасынан бир нерсе таап же EPUB жана FB2ден сактаган нерселериңизди карап чыгуу керек болгондо пайдалуу, сиз жөн гана сурамды иштете аласыз.

vitis show Format/MOBI u: Format/FB2

Файл же миметип сыяктуу стандарттуу GNU/Linux куралдары мага так туура келген жок, анткени алар форматты дайыма эле туура аныктай бербейт; мен файлдын кол тамгаларынын жана кеңейтүүлөрүнүн негизинде өзүмдүн ишке ашыруум керек болчу. Жалпысынан, файл форматтарын аныктоо темасы изилдөө үчүн кызыктуу тема жана өзүнчө макалага татыктуу. Азырынча мен дүйнөдөгү бардык форматтар үчүн чыныгы таанууну камсыз кыла алган жокмун деп айта алам, бирок жалпысынан ал жакшы иштеп жатат. Ырас, EPUB азыр форматты ZIP катары аныктайт (жалпысынан алганда, бул негиздүү, бирок иш жүзүндө бул нормалдуу жүрүм-турум катары каралбашы керек). Азырынча бул функцияны эксперименталдык деп эсептеп, бардык мүчүлүштүктөрдү кабарлаңыз. Кызык кырдаалдарда сиз ар дайым файл кеңейтүү категорияларын колдоно аласыз, мисалы, Extension/epub.

Формат боюнча автокатегориялар иштетилген болсо, кээ бир форматтарды түрү боюнча топтоочу автокатегориялар да иштетилет: “Архивдер”, “Сүрөттөр”, “Видео”, “Аудио” жана “Документтер”. Бул субкатегориялар үчүн жергиликтүү аталыштар да жасалат.

Эмне айтылбайт

vitis Бул абдан көп кырдуу курал болуп чыкты жана бир эле учурда баарын камтуу кыйын. Дагы эмне кыла аларыңызды кыскача айтып берейин:

  • категорияларды файлдардан жок кылууга жана алып салууга болот;
  • экспресс-суроолордун натыйжалары көрсөтүлгөн каталогго көчүрүлүшү мүмкүн;
  • файлдарды программалар катары иштетүүгө болот;
  • Show командасынын көптөгөн варианттары бар, мисалы, аты/өзгөртүү датасы же кирүү/өлчөм/кеңейтүү боюнча сорттоо, файлдын касиеттерин жана оригиналдарга жолду көрсөтүү, жашырылган файлдарды көрсөтүүгө мүмкүнчүлүк берүү ж.б.;
  • Интернет булактарына шилтемелерди сактаганыңызда, HTML баракчаларынын жергиликтүү көчүрмөлөрүн да сактай аласыз.

Толук маалыматты колдонуучунун жардамынан тапса болот.

келечеги

Скептиктер көбүнчө "бул тэгдерди эч ким өзү орнотпойт" деп айтышат. Өзүмдүн мисалымды келтирип, мен мунун тескерисин далилдей алам: мен буга чейин алты миңден ашык файлды категорияларга бөлгөм, миңден ашык категорияларды жана лакап аттарды түзгөм жана бул татыктуу болду. Бир команда болгондо vitis open План эмне кылуу тизмеңизди же бир буйрук менен ачыңыз vitis open LaTeX Столяровдун LaTeX макет системасы жөнүндө китебин ачканыңызда, файлдык системаны "эски модада" колдонуу моралдык жактан кыйын болуп калат.

Ошонун негизинде бир катар ойлор жаралат. Мисалы, сиз учурдагы аба ырайына, майрамга, жуманын күнүнө, күндүн же жылдын убактысына ылайык тематикалык музыканы күйгүзүүчү автоматтык радиону жасай аласыз. Темага жакыныраак болгон музыка ойноткуч категориялар жөнүндө билет жана топтомдордогу сыяктуу категориялар боюнча операциялар менен экспрессия боюнча музыканы ойной алат. "Жүктөлүүлөр" каталогун көзөмөлдөй турган жана жаңы файлдарды категорияга бөлүүнү сунуш кылган демонду түзүү пайдалуу. Анан, албетте, биз кадимки графикалык семантикалык файл менеджерин жасашыбыз керек. Бир кездерде мен файлдарды жамааттык пайдалануу үчүн ишкана үчүн веб-кызматын түзгөм, бирок бул приоритеттүү болгон эмес жана ал жогорку көрсөткүчтөргө жетишкенине карабастан, маанисиз болуп калган. (Негизги өзгөрүүлөргө байланыштуу vitis, мындан ары колдонууга болбойт.)

бул жерде бир аз демо

Категориялардын ордуна категориялар же Linux үчүн семантикалык файл системасы

жыйынтыктоо

vitis маалыматтар менен иштөө стилин түп-тамырынан бери өзгөртүүнүн биринчи аракети эмес, бирок мен өз идеяларымды ишке ашырууну жана GNU GPL лицензиясынын алкагында ишке ашырууну жалпыга жеткиликтүү кылууну маанилүү деп эсептейм. Ыңгайлуу болуу үчүн, x86-64 үчүн deb пакети жасалган; ал бардык заманбап Debian дистрибьютерлеринде иштеши керек. ARMде анча-мынча кыйынчылыктар болгон (башка программалар менен байланышкан vitis, жакшы иштейт), бирок келечекте бул платформа үчүн жумушчу пакет түзүлөт (armhf). Fedora 30дагы көйгөйлөрдөн жана көптөгөн RPM дистрибуцияларында жайылуу кыйынчылыгынан улам мен RPM топтомдорун түзүүнү азыр токтоттум, бирок кийинчерээк пакеттер алардын жок дегенде бир нечеси үчүн жасалат. Ошол эле учурда сиз колдоно аласыз make && make install же checkinstall.

Көңүл бурганыңыздар үчүн рахмат! Мен бул макала жана бул долбоор пайдалуу болот деп үмүттөнөм.

Долбоордун репозиторийине шилтеме

Source: www.habr.com

Комментарий кошуу