((p "Under certain circumstances, it is preferable to further configure a file directory box." " " "This is done by appending query parameters after the base box URI " (kbd "dir://DIR") ".") (p "The following parameters are supported:") (table (thead (tr (th (@ (class . "center")) "Parameter") (th "Description") (th (@ (class . "center")) "Default value"))) (tbody (tr (td (@ (class . "center")) "type") (td "(Sub-) Type of the directory service") (td (@ (class . "center")) "(value of " (@L (@H "“") (a (@ (href . "00001004010000#default-dir-box-type")) "default-dir-box-type") (@H "”")) ")")) (tr (td (@ (class . "center")) "worker") (td "Number of worker that can access the directory in parallel") (td (@ (class . "center")) "7")) (tr (td (@ (class . "center")) "readonly") (td "Allow only operations that do not create or change zettel") (td (@ (class . "center")) "n/a")))) (h2 (@ (id . "type")) "Type") (p "On some operating systems, Zettelstore tries to detect changes to zettel files outside of Zettelstore's control" (sup (@ (id . "fnref:1")) (a (@ (class . "zs-noteref") (href . "#fn:1") (role . "doc-noteref")) "1")) "." " " "On other operating systems, this may be not possible, due to technical limitations." " " "Automatic detection of external changes is also not possible, if zettel files are put on an external service, such as a file server accessed via SMB/CIFS or NFS.") (p "To cope with this uncertainty, Zettelstore provides various internal implementations of a directory box." " " "The default values should match the needs of different users, as explained in the " (a (@ (href . "00001003000000")) "installation part") " of this manual." " " "The following values are supported:") (dl (dt "simple") (dd (p "Is not able to detect external changes." " " "Works on all platforms." " " "Is a little slower than other implementations (up to three times).")) (dt "notify") (dd (p "Automatically detect external changes." " " "Tries to optimize performance, at a little cost of main memory (RAM)."))) (h2 (@ (id . "worker")) "Worker") (p "Internally, Zettelstore parallels concurrent requests for a zettel or its metadata." " " "The number of parallel activities is configured by the " (kbd "worker") " parameter.") (p "A computer contains a limited number of internal processing units (CPU)." " " "Its number ranges from 1 to (currently) 128, e.g. in bigger server environments." " " "Zettelstore typically runs on a system with 1 to 8 CPUs." " " "Access to zettel file is ultimately managed by the underlying operating system." " " "Depending on the hardware and on the type of the directory box, only a limited number of parallel accesses are desirable.") (p "On smaller hardware" (sup (@ (id . "fnref:2")) (a (@ (class . "zs-noteref") (href . "#fn:2") (role . "doc-noteref")) "2")) ", such as the " (a (@ (href . "https://www.raspberrypi.org/products/raspberry-pi-zero/") (rel . "external")) "Raspberry Zero") ", a smaller value might be appropriate." " " "Every worker needs some amount of main memory (RAM) and some amount of processing power." " " "On bigger hardware, with some fast file services, a bigger value could result in higher performance, if needed.") (p "For various reasons, the value should be a prime number." " " "The software might enforce this restriction by selecting the next prime number of a specified non-prime value." " " "The default value is 7, the minimum value is 1, the maximum value is 1499.") (h2 (@ (id . "readonly")) "Readonly") (p "Sometimes you may want to provide zettel from a file directory box, but you want to disallow any changes." " " "If you provide the query parameter " (kbd "readonly") " (with or without a corresponding value), the box will disallow any changes.") (pre (code "box-uri-1: dir:///home/zettel?readonly")) (p "If you put the whole Zettelstore in " (a (@ (href . "00001004010000#read-only-mode")) "read-only") " " (a (@ (href . "00001004051000")) "mode") ", all configured file directory boxes will be in read-only mode too, even if not explicitly configured."))