Fuse что это за программа

Файловая система, дешево и быстро

Разработчикам часто приходится иметь дело с файлами, представляющими из себя древовидную структуру: XML, JSON, YAML, всякого рода языки разметки вроде Markdown или Org-mode. Облегчая в общем и целом нашу жизнь, такие файлы имеют склонность к бесконтрольному росту, в какой-то момент из решения превращаясь в проблему.

Стандартное решение этой проблемы — разбиение на меньшие файлы. Это, конечно, работает, но не всегда удобно.

Но существует и альтернатива, о которой — ниже.

org-mode и его разметка.

Пожалуй, стоит сначала изложить мою проблему. Я использую Емакс и — как многие пользователи Емакса — для написания почти всех моих документов, заметок, рабочего дневника и списков задач использую язык разметки org-mode. Выглядит документ в этой разметке примерно следующим образом:

. простой пример файла из репозитория . > cat tests/simple.org document section * headline 1 headline section 1 ** inner headline 1 some inner section 1 some inner section 1-2 ** inner headline 2 inner section 2 ** inner headline 3 *** inner inner headline 1 * headline 2 section text 2

Один мой документ разросся до нескольких сотен подзаголовков различной глубины вложенности, и по всем этим заголовкам я регулярно прохаживаюсь скриптами в поисках разной информации. Разбирать документ на несколько файлов не хотелось, т.к. синхронизировать между машинами или каким-либо скриптом обрабатывать один файл все же легче. Но и жить так дальше было решительно невозможно.

How to check car fuses without pulling them out — Testing fuses with a Multimeter

И тогда мне в голову пришло, что было бы здорово ходить по моему файлу как по директориям, при помощи, скажем, стандартных в Юниксах cd headline1 или cd .. , ls -l и cat section .

Иными словами, мне захотелось уметь представлять дерево заголовков и текстовых секций в виде обыкновенного дерева директорий и файлов. В терминах тех же Юниксов это желание звучит следующим образом: смонтировать некую специализированную файловую систему.

Конечно, писать полноценную файловую систему для Линукса — дело долгое, неблагодарное и уж точно не стоит оно того в такого рода редких случаях.

FUSE

Впрочем, в наши дни уже никто так и не делает, то есть с тех пор как лет десять назад в Линукс был включен модуль FUSE, позволяющий делать файловые системы в виде обыкновенного пользовательского процесса, на который из ядра маршрутизируются все связанные со смонтированной файловой системой /системные вызовы.

С помощью FUSE было написано множество самых разных файловых систем, от игрушечных ФС, монтирующих, например, статьи с Википедии, до вполне серьезных частей современных Линуксов вроде того же Gnome. Таким образом, FUSE стал обязательным элементом популярных дистрибутивов.

Еще приятней работу с FUSE делает тот факт, что в наши дни доступны совсем уж тривиальные в использовании обертки на высокоуровневых языках вроде Python, Ruby, Java и многих других, т.е. собственную файловую систему можно сделать буквально за два-три часа.

Quick Test Fuse

fusepy

Конкретно на Питоне оберток вокруг libfuse (клиентской части FUSE) даже несколько, но больше всего мне понравился проект fusepy: код проекта очень простой и понятный, кроме примеров на Гитхабе и исходного кода мне так ничего и не понадобилось.

Читайте также:
Государственная программа льготного кредитования что это

Файловая система на базе fusepy сводится к переопределению методов класса fuse.Operations , каждый из которых соответствует какому-либо системному вызову.

Для непереопределенных системных вызовов есть либо разумное поведение по умолчанию, либо стандартная ошибка.

Orgfuse

Собственно, конкретный формат файла, который хочется представить в виде дерева директорий и файлов, не так важен. В случае с разметкой org-mode мне не понравился ни один из доступных парсеров для Питона, и я просто написал собственный. Парсер проходит по указанному файлу, создавая дерево, отражающее структуру документа.

Дерево разбора (parse tree) файла разметки дальше преобразуется в другое дерево, отражающее файлы и директории, которые будет видеть пользователь файловой системы.

Чтобы работать с последним деревом было достаточно реализовать четыре системных вызовов ( open , read , readdir , getattr ), каждый из которых занимал буквально несколько строк кода на Питоне:

class FuseOperations(Operations): def __init__(self, tree): self.tree = tree self.fd = 0 def open(self, path, flags): self.fd += 1 return self.fd def read(self, path, size, offset, fh): node = self.tree.find_path(path) if node is None: raise FuseOSError(EIO) return node.content[offset:offset + size] def readdir(self, path, fh): node = self.tree.find_path(path) if node is None: raise FuseOSError(EROFS) return [‘.’, ‘..’] + [child for child in node.children] def getattr(self, path, fh=None): node = self.tree.find_path(path) if node is None: raise FuseOSError(ENOENT) return node.get_attrs()

Итоговый скрипт работает примерно следующим образом:

. монтируем файл как файловую систему . > mkdir mount > python orgfuse.py tests/simple.org mount/ . открываем другой терминал и наслаждаемся . > tree mount mount/ ├── headline 1 │ ├── inner headline 1 │ │ └── section │ ├── inner headline 2 │ │ └── section │ ├── inner headline 3 │ │ └── inner inner headline 1 │ └── section ├── headline 2 │ └── section └── section 6 directories, 5 files

Все это чудо занимает порядка двух сотен строк или 3-4 часа моей ленивой вечерней работы, с моей маленькой задачей справляется замечательно.

Инструкции по установке и код, как водится, можно найти Github.

Если кому интересно преращение прототипа во что-то удобоваримое, с возможностью редактирования файлов и поддержкой большего количества форматов — буду рад пообщаться.

Источник: habr.com

FUSE

FUSE

FUSE (http://fuse-emulator.sourceforge.net) расшифровывается как Free Unix Spectrum Emulator. Это очень серьезный эмулятор. С отладчиком, эмуляцией множества видов периферии и широчайшим выбором встроенных ПЗУ различных вариантов ZX Spectrum: от классики до Pentagon 1024k. Функциональность FUSE зависит от сборки — от того, с какими библиотеками был скомпилирован эмулятор.

GTK+2 обеспечивает графический интерфейс, libaudiofile — способность чтения программ из WAV-файлов (то есть можно оцифровать кассету и запускать из WAV), libpng — сохранение снимков экрана, и так далее. Подробности расписаны на сайте и в файле README исходника.

Первым делом следует установить библиотеку libspectrum (она доступна на сайте FUSE), которая отвечает за поддержку форматов. В эмуляции ZX Spectrum различают следующие файлы:
— снэпшоты (snapshots) — дампы памяти, почти аналоги «ромов», бывают следующих форматов: .z80, .szx, .sna, zxs, .sp., .snp, +D;
— образы магнитофонных лент (Tape images): tzx, .tap, .spc, .sta, .ltp, Z80Em, CSW version 1, .wav;
— образы жестких дисков: .hdf;
— и некоторые другие.

Читайте также:
Программа фрдо что это

Иногда образ ленты идет в двух частях (сторона 1 и сторона 2) — двумя файлами. Например, файлы «Saboteur — Side 1.tzx» и «Saboteur — Side 2.tzx». Чтобы загрузить такую игру, надо в эмуляторе сначала открыть первую часть (File — Open или просто F3), а затем, когда первая часть подгрузится (после мельтешащих на экране цветных полос) — второй (операция делается по аналогии).

При первом запуске FUSE выглядит как маленькое окошко с заставкой того варианта Спектрума, который эмулируется. Выбрать вариант можно нажатием на F9 или через меню Machine — Select. Какую модель выбрать? Зависит от того, что вы собираетесь загружать. Обычно (например, на http://www. worldofspectrum.org) в описаниях лент и снэпшотов указывается минимальный тип машины — допустим, ZX Spectrum 48K.

Порой игры или программы хотят именно конкретный тип машины — иначе не запускаются.

«Маленькое окошко» можно растянуть — специально пишу об этом, потому что в под некоторыми оконными менеджерами сие «можно» следует трактовать именно как возможность, однако не как данность. В KDE 4, например, всё нормально. Если у вас есть какие-то трудности, попробуйте к строке запуска FUSE добавить ключ —no-aspect-hint.

Существует также способ влияния на качество изображения — выбор способа масштаби-рования через окно Options — Filter. При разных размерах окна эмулятора, в окне настроек Filter будут разные опции. Мне больше по вкусу Double size (при двойном размере окна эмулятора) и Triple size (при тройном) — так изображение более естественное.

Что еще стоит настроить? Можно наладить под себя джойстик или использовать вместо него клавиатуру — все настройки для этого расположены в Options — Joysticks. Хотя большинство игр отлично управляется через клавиатуру. Чтобы посмотреть на внешний вид спектрумовской клавиатуры и сопоставить её с вашей современной, воспользуйтесь меню Help.

Замечу, что в играх для Spectrum редко используют курсорные клавиши, даже для движения. В начальном меню игры обычно надо нажимать на буквы или цифры, скажем: S — запуск, K — управление клавиатурой. В играх управление разное, например O и P — для влево/вправо. Не вполне очевидная для новичков тонкость — чтобы ввести знак «+», надо нажать Alt + K либо Ctrl + K. Рядышком и минус — Ctrl + J. Знак равенства — где привычно, либо Ctrl + L. Итак, клавиши Ctrl и Alt служат как «спектрумная» клавиша Symbol Shift. Help — Keyboard красным цветом подскажет вам, какие знаки набираются с её помощью.

В FUSE есть функция сохранения поименованного снэпшота (File — Save snapshot или F3). Эта функция сохраняет текущее состояние игры/программы вместе с самим её двоичным кодом. Загрузить его потом можно как и любой другой снэпшот или ленту — через File — Open. Конечно, не так удобно, как в приставочных эмуляторах, с их слотами и тому подобным, но в подлиннике и такого нет! Если уж играть по правилам, то без сохранения.

Если не указывать расширение сохраняемого снэпшота, эмулятор сохранит данные в формате szx. При сохранении можно использовать также расширения .szx, .z80 и .sna. Учитывая, что FUSE — это эмулятор не игровой приставки, а полноценного компьютера, оснащенного интерпретатором BASIC, вы можете писать какие-то программы и сохранять их так, как если бы делали это на магнитофонную ленту, только используя в качестве хранилища снэпшот подходящего вам формата.

Читайте также:
Программа здоровье нации что это такое

Простейший пример. Запустим «чистый» FUSE, нажмем Enter, чтобы войти в режим набора программы, введем такой «листинг»:

Здесь мы объявляем переменную x со значением 13 и затем печатаем эту переменную на экран.
Ключевые слова набираются в Спектруме способом одиночных нажатий на клавиши — на каждой из них в настоящем, «железном» Спектруме обозначен оператор BASIC. Нажимаем L -получаем LET, нажимаем P — PRINT. Набрав программу, попробуем её запустить: нажимаем кнопку R — появляется команда RUN. Жмем Enter, наблюдаем явное чудо: программа выполнилась и написала на экране число 13.

Теперь попробуем сохранить нашу изощренную программу. File — Save Snapshot. Всё, теперь можно её в любой момент загрузить из файла (File — Open) и запустить (тем же RUN), а также просмотреть листинг (команда LIST под клавишей K) и отредактировать (курсорные клавиши для перемещения по строкам кода).

Я описал самый простой, «встроенный» в Спектрум способ создания программ. Вам же доступны все созданные когда-либо инструментальные средства под ZX Spectrum: и редакторы, и ассемблеры, и отладчики. Статья посвящена играм, но ведь для Спектрума существуют и графические редакторы, и программы создания музыки, и многое другое! О программировании на BASIC под ZX Spectrum читайте свободно распространяемую книжку «SINCLAIR ZX SPECTRUM. BASIC Programming» на http://www.worldofspectrum.org/ZXBasicManual.

Вернусь к возможностям FUSE. Здесь не обошлось и без записи видео. Правда, вовсе не в AVI, а в формате RZX. Этих RZX-файлов существует огромное количество — есть даже целый сайт с архивом: http://www.rzxarchive.co.uk. Для записи видео надо запустить игру и использовать пункт меню File — Recording — Record. Расширение файла вы должны добавить сами — так в этом эмуляторе везде, когда вы что-либо сохраняете.

Для остановки записи, в том же подменю выбираем Stop. И для воспроизведения из внешнего файла — Play (при этом нужно, чтобы открываемый RZX-файл лежал в одном каталоге с игрой).

FUSE может стать вашей дверью в волшебную страну ZX Spectrum с его играми, программами, многочисленными электронными журналами — это огромная, интересная субкультура! Кстати, на основе Knoppix и FUSE существует Live-CD ZX Livebox (http://www.spectrum.8bit.pl — впрочем, не совсем ясно, как его оттуда скачать).

Разработчики обещают в будущем больше много новых фишек и даже поддержку opengl (http://www.cyberforum.ru/opengl/). Хотя зачем она нужна эмулятору ZX Spectrum. если только он не начнет эмулировать и другие приставки?!

Во что поиграть на ZX Spectrum?

FUSE

Игра Saboteur

Saboteur — бродилка про ниндзю; две части: в первой бегает мужчина, во второй — женщина (см. рис. выше).

Nosferatu — очень мрачная игра про приключения Джонатана Харкера в замке Дракулы, а может и вне его — никогда я оттуда не выбирался (см. рис. ниже).

FUSE

Игра Nosferatu

Monty On The Run — самая сложная аркадная игра всех веков и народов.

А также классический LodeRunner, Chuckie’s Egg, Rocky’s Horror Show, Tir Na Nogt, Vixen.

  • Просмотров: 6045
  • Комментариев: 0
  • 07.14

Источник: nerohelp.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru