Монада является вещью, используемой для инкапсуляции объектов, которые имеют изменяющееся состояние. С этим чаще всего встречаются на языках, которые иначе не позволяют Вам иметь модифицируемое состояние (например, Haskell).
пример был бы для файлового ввода-вывода.
Вы были бы в состоянии использовать монаду для файлового ввода-вывода для изоляции изменяющейся природы состояния только к коду, который использовал Монаду. Код в Монаде может эффективно проигнорировать изменяющееся состояние мира вне Монады - это делает намного легче рассуждать о полном эффекте Вашей программы.
Не уверен, что это полностью решит мою проблему, но я обнаружил, что слой файловой системы реализован поверх MySQL. Думаю, я могу использовать это для автоматического сохранения моих PDF-файлов в виде BLOB-объектов ... все же нужно выяснить, как хранить ключи к PDF-файлу в этой файловой системе для структурированного доступа к PDF-файлу на основе чего-то более значимого, чем
http://sourceforge.net/projects/mysqlfs/ и
http://www.linux.com/archive/feature/127055
Вы можете использовать браузер curl для отправки того же POST, что и ваш браузер с графическим интерфейсом. Понюхайте запрос, который отправляет ваш браузер с графическим интерфейсом, а затем воспроизведите его с помощью curl.
Вы можете использовать функцию mysql LOAD_FILE в сочетании с небольшим скриптом оболочки, чтобы сделать это, я думаю.
Непроверенный код:
#!/bin/bash
if [ -z $1 ]
then
echo "usage: insert.sh <filename>"
else
SQL="INSERT INTO file_table (blob_column, filename) VALUES(LOAD_FILE('$1'), '$1')"
echo "$SQL" > /tmp/insert.sql
cat /tmp/insert.sql | mysql -u user -p -h localhost db
fi
И вы можете использовать его так:
<prompt>./insert.sh /full/path/to/file
Лучшая реализация с проверкой ошибок, правильным созданием временного файла, побег и другие тонкости оставлены читателю в качестве упражнения. Обратите внимание, что для использования LOAD_FILE ()
требуется привилегия FILE в MySQL и полный путь к файлу.