## Advanced QHacc

QHacc is aimed squarely at the non-advanced user. However, there are some features that should generally be avoided by the casual user, but may be of interest to people who like to break things. I call these the advanced features of QHacc. You should not use any of the features described here. They are for tinkerers and live-by-the-seat-of-your-pantsers. Very often, they will completely destroy your installation and all your data. You have been warned.

## Undocumented Features

I should start off by saying I get a kick out of a section in the documentation titled "Undocumented Features." Obviously, I'm documenting them here, so perhaps this section should be titled "Screwball Antics," or "How to Break QHacc," or some such, but those just don't make me laugh like "Undocumented Features" does. I should also mention that some of these features can be set on the plugin-specific page of the Preferences Dialog, but that does not mean they are safe to use.

- KEEPFILEPERMS By default, QHacc will reset the file permissions on files it writes so that only the current user can open them later. That's not strictly true, because setting the KEEPFILEPERMS preference to true will make QHacc leave the file permissions alone. It will leave file permissions as it finds them. This is highly discouraged, as it could leave your data readable by anyone on the system. However, if two users want to share one QHACC_HOME, it's very handy.
- CONSERVEIDSONIMPORT If you're a big importer and exporter, you may have noticed that QHacc burns through table ids like they're going out of style. That behavior has been curtailed somewhat as of release 2.9.3, but QHacc will still waste many IDs. Setting CONSERVEIDSONIMPORT to true will force QHacc to reclaim any IDs that it previously wasted. That is, all the IDs of QHacc's tables will be contiguous starting with ID=1. This is totally unnecessary. QHacc uses an unsigned integer for all its IDs, so even if you tried as hard as you could, it would next to impossible to run out of IDs. Still, if you're anal like me, you might want your IDs to be contiguous.

  This "feature" is particularly dangerous because it will invalidate duplicate checking on subsequent imports, and it will very likely break any archives you've made. Basically, you won't be able to import any data ever again, and recovery from this situation is impossible.

- NORECALCONSTARTUP QHacc tries to recalculate its account balances every time it starts up. This is to make sure that any transactions added or modified without using the program are correctly accounted for. If you find that you never alter QHacc's data without using the GUI or CLI, you can set this preference to true, and QHacc will skip its usual calculations. This will make startup a bit faster, especially if you have lots of transactions and are using the native database. Account balances will still be recalculated when a transaction inside the account is altered.
- XMLCOMPRESSIONLEVEL Okay, all the dire warnings that do apply to the other options on this list probably don't apply to this one. If you're a fan of the XML plugin, but find that the file it creates is just too darned big (it is XML, after all), you can set this preference item to a number between 1 and 9. When set, the XML plugin will gzip its data before writing it to the filesystem. The higher the number, the better compression you'll see. Unless you go passed 9, in which case you'll get standard uncompressed files again. How does the engine know if the data is compressed before it tries to open your QHACC_HOME? It doesn't. It initially assumes the data is compressed, and if that doesn't yield usable data, it assumes it is uncompressed. If neither works, you're in trouble.