web/username_prefix.php: deletion comments: require ... strikethrough on both () to avoid ambiguity when the deleted part starts or ends with -
web/username_prefix.php: deletion comments: also support strikethrough syntax for clarity: (c_)x@url -> c_x@url
web/username_prefix.php: insertion comments: documented that the semantic meaning of the [] portion also applies, even though it's not included in the linked term name
web/username_prefix.php: added support for deletion comments of the form (c_)x(_d)@url -> c_x_d@url . deletion indicates that the semantic meaning of the () portion does not apply, even though it's included in the linked term name.
web/username_prefix.php: comments: use [] instead of () because in writing, [] denotes insertion, while () (as an editing mark) denotes something to remove
bugfix: web/index.php: fixed bug where full directory index would not display correctly if invoked as /index.php instead of / (caused by incorrect URL)
web/username_prefix.php: word-wraps: renamed to linewraps
web/username_prefix.php: added support for word-wraps of the form x_-_.y@url -> x.y@url (the _ are needed to work in Google spreadsheets)
bugfix: web/username_prefix.php: comments: need to use syntax that doesn't use : because Firefox will not update the "password" for the website with the new value after the : . the new syntax use () instead.
web/username_prefix.php: comment prefixes: support embedded ":" in comment
web/username_prefix.php: user2path(): comment prefixes: documented how to put the comment on a separate line when word-wrapping (c-_:x@url). this format works in Google spreadsheets.
web/username_prefix.php: user2path(): added support for comment prefixes, which can be used to include term categories. note: when URL is used without http:// , you must include a non-letter in the comment (eg. c_:x@url) to work in Firefox.
web/username_prefix.php: user2path(): visually separated steps for easier readability
bugfix: web/username_prefix.php: user2path(): padding used to visually separate 1st element of URL: require all padding to be __ because sometimes terms contain a leading or trailing _
bugfix: web/username_prefix.php: user2path(): padding used to visually separate 1st element of URL: support embedded @ inside highlighted part: also need to match end-padding when followed by "."
web/username_prefix.php: user2path(): padding used to visually separate 1st element of URL: support embedded @ inside highlighted part
web/username_prefix.php: user2path(): added support for padding used to visually separate 1st element of URL (x@url -> x@url)
bugfix: web/username_prefix.php: need to handle : in login (which would normally indicate a password)
web/.htaccess: auto-detect dotpath: need to explicitly set usernames_disabled=1, because for some reason the `%{QUERY_STRING} =""` check doesn't detect a query string
web/.htaccess: auto-detect dotpath: removed handling of no longer used @ prefix (used to be used by username-based prefix subpaths)
bugfix: web/.htaccess: username-based prefix subpaths: usernames_disabled: also need to support it being set in the current round
bugfix: web/.htaccess: username-based prefix subpaths: removed support for query strings because these are often used at the root level, and should then be treated as a regular dotpath rather than something with a username-based prefix
bugfix: web/.htaccess: forced mod_autoindex listing: use $usernames_disabled to ensure that usernames stay disabled even when /all path is removed
bugfix: web/.htaccess: username-based prefix subpaths: added back usernames_disabled env var, because it is needed if a RewriteRule in a previous round creates an empty path (mod_rewrite runs the RewriteRules repeatedly until no replacements are made)
bugfix: web/.htaccess: username-based prefix subpaths: REDIRECT_REQUEST_URI: also allow it to be unset, as it is when using usernames
fix: web/index.php: directory index: don't append QUERY_STRING, as this is not used by /all
web/.htaccess: username-based prefix subpaths: removed usernames_disabled env var because the bug that appeared to require this has now been fixed
bugfix: web/.htaccess: username-based prefix subpaths: also need to check original URL (REDIRECT_REQUEST_URI), in addition to current URL (REQUEST_URI) to see if usernames should be disabled
web/.htaccess: username-based prefix subpaths: allow explicitly disabling in a RewriteRule to handle special cases
bugfix: web/index.php: directory index: use QUERY_STRING, not HTTP_AUTHORIZATION (HTTP_AUTHORIZATION was probably left over from a previous attempt to provide username-based prefix subpaths)
web/.htaccess, username_prefix.php: username-based prefix subpaths: don't require the // at the end , to avoid clutter. IMPORTANT: in order to access the home page after visiting a URL with a username, you must now append "." to the host ("vegpath.org.") (other pages are not affected by this problem). since vegpath.org is a URL shortener, this is a worthwhile tradeoff to avoid needing the // suffixes everywhere.
bugfix: web/.htaccess: subdomains: each path element must be non-empty, to avoid matching a trailing . incorrectly
web/.htaccess: username-based prefix subpaths: updated documentation to use leading // instead of trailing ? or ?@
web/username_prefix.php: $_SERVER["PHP_AUTH_USER"] test: factored $_SERVER["SCRIPT_URL"] out of both branches of if statement
web/username_prefix.php: don't remove @ from query string because that is no longer a special character
fix: web/.htaccess: username-based prefix subpaths: changed format to subpath@host//path because the trailing ? makes it look like the sentence the URL is in is a question
web/.phpPgAdmin/.htaccess: action redirect: only append ? if adding to the query string
web/.phpPgAdmin/.htaccess: view: default to displaying the columns rather than the definition
web/.phpPgAdmin/.htaccess: support viewing the columns of a view rather than the definition
web/.phpPgAdmin/.htaccess: RewriteRules: use overridable action var
web/.phpPgAdmin/.htaccess: support overriding action param in a later RewriteRule
web/.phpPgAdmin/.htaccess: removed skip= because this creates a confusing control flow, and prevents using chain
web/.htaccess: auto-detect dotpath in query string: also auto-prepend & for query strings appended to a username-based prefix, so that these don't need to have & manually prepended to make them appendable
web/.htaccess: auto-detect dotpath in query string: also auto-detect dotpath for query strings appended to a username-based prefix, so that these don't need to have . prepended to make them appendable
web/username_prefix.php: no prefix: use $_SERVER["SCRIPT_URL"] instead of rtrimming $_SERVER["REQUEST_URI"]
web/username_prefix.php: has prefix: use same expr whether or not it has a query string, because the with-query-string expr works for both cases
web/username_prefix.php: use if statements instead of `? :` for clarity
web/username_prefix.php: use $subpath instead of $_SERVER["PHP_AUTH_USER"] for clarity
web/.htaccess, username_prefix.php: username-based prefix subpaths: support dotpath in query string (which will be appended verbatim to the prefix). use "__?@__" instead of "__?__&" to signal username-based prefix, so that the query string does not end in a dangling & .
bugfix: web/.htaccess: auto-detect dotpath in query string: don't exclude dotpaths that come before a normal query string (&k=v...)
web/.htaccess: auto-detect dotpath in query string: documented what each RewriteCond does
web/.htaccess: auto-detect dotpath in query string: use %{QUERY_STRING} instead of %0 for clarity
web/.htaccess, web/username_prefix.php: username-based prefix subpaths: support query strings in addition to paths
web/index.php: removed no longer needed redirection of username-based prefix subpaths, which is now handled by web/.htaccess
web/.htaccess: handle username-based prefix subpaths (of the form "subpath@url?") for all paths rather than just for the root (which were handled by index.php)
added web/username_prefix.php, for use with username-based prefix redirects
web/index.php: subpath@host? redirects: also support multiple @ and nested . in prefix: a@b.c@host? -> host?b.c.a
web/index.php: support prefix redirect of the form subpath@host? , which is better than subpath.host because case is preserved and special chars allowed. (must require trailing ? for redirect, to avoid needing login to view the page itself.)
bugfix: web/index.php: full directory index: appending query string: need to use $_SERVER["QUERY_STRING"], not $_SERVER["HTTP_AUTHORIZATION"] for this
bugfix: web/.phpPgAdmin/.htaccess: only append subject if non-empty, to avoid confusing redirect.php
bugfix: web/.phpPgAdmin/.htaccess: custom pages: need to handle in query string because .php filename would be treated as path element
web/.phpPgAdmin/.htaccess: support custom .php pages
web/links/index.htm: updated to Firefox bookmarks: iPlant links: fixed broken links
web/links/index.htm: updated to Firefox bookmarks: starscream links: removed favicons so they wouldn't wake the Mac up on network access whenever someone opens the links page
web/links/index.htm: updated to Firefox bookmarks: fixed broken links
web/links/index.htm: updated to Firefox bookmarks: Ubuntu 14.04 upgrade: rsync: documented that this breaks use of ~ to reference the remote user's home dir
web/links/index.htm: updated to Firefox bookmarks: Ubuntu 14.04 upgrade: Apache: documented that MultiViews is actually only broken for redirects with the filename "index"
web/.htaccess: for dirs, redirect to index.*: document it is actually just the filename "index" that MultiViews is broken for, other filenames work fine
bugfix: web/index.php: full directory index: only display if invoked as "vegpath.org/", not "vegpath.org/index.php"
bugfix: web/.htaccess: for dirs, redirect to index.*: added workaround for Ubuntu 14.04, which breaks MultiViews
web/links/index.htm: updated to Firefox bookmarks: Ubuntu 14.04 upgrade: Apache: documented that this breaks MultiViews, so you need to rewrite .htaccess files to avoid using MultiViews
web/links/index.htm: updated to Firefox bookmarks: Ubuntu 14.04 upgrade: added Postgres upgrading instructions
web/links/index.htm: updated to Firefox bookmarks: Ubuntu 14.04 upgrade
web/links/index.htm: updated to Firefox bookmarks: Ubuntu 14.04 upgrade: added phpMyAdmin fixing instructions
web/links/index.htm: updated to Firefox bookmarks: Ubuntu: Ubuntu 14.04 upgrade: added things broken by it. PostgreSQL: fixed links.
fix: web/links/index.htm: updated to Firefox bookmarks: PostgreSQL: backups: wal_keep_segments method: clarified how to determine the value of wal_keep_segments. filesystem-level backups: documented the advantages of filesystem-level backups over traditional database-level backups with pg_dump.
fix: web/links/index.htm: updated to Firefox bookmarks: PostgreSQL: backups: wal_keep_segments: restored annotations
web/links/index.htm: updated to Firefox bookmarks: PostgreSQL: backups: documented how to set up online and offline backups (with two possible approaches for online backups)
lib/Firefox_bookmarks.reformat.csv: changed "page's own description" to "page's self-description" for clarity
web/links/index.htm: updated to Firefox bookmarks: removed dead links
web/links/index.htm: updated to Firefox bookmarks: updated favicons
web/links/index.htm: updated to Firefox bookmarks: modifying a running shell script: updated to document that `svn up` actually does use two-stage save automatically
web/links/index.htm: updated to Firefox bookmarks: PostgreSQL: added operator classes. added backups: filesystem-level backup, continuous archiving, WAL logging, etc. virtual collaboration: updated annotations.
bugfix: web/.phpPgAdmin/.htaccess: work around phpPgAdmin bug that causes page to be ignored when not logged in
web/.phpPgAdmin/.htaccess: extract path components 1st->last: documented that can't use subject param for this because that goes to the last selected tab, not the default (leftmost) tab
*{.sh,run}: runscript targets: use begin_target instead of echo_func so the target name is properly echoed. note that this requires using with_rm so that $rm is properly progagated to applicable invoked targets. (previously, $rm was progagated to all invoked targets. note that with_rm only works inside a runscript target that starts with begin_target.)
web/links/index.htm: updated to Firefox bookmarks: Firefox: added instructions for enabling security.password_lifetime and making all tabs load when the browser is opened
web/links/index.htm: updated to Firefox bookmarks: Google Drive: listed bugs that make it very difficult to use (the need to re-download all files when reconnecting a client to an account). added recommendation not to use it (unstable).
web/links/index.htm: updated to Firefox bookmarks: PostgreSQL: query planner: documented how to prevent incorrect query plans (`SET enable_seqscan = off;`, etc.)
web/links/index.htm: updated to Firefox bookmarks: PostgreSQL: query planner: documented that incorrect query plans are an ongoing bug in Postgres, because it does not support index hints and by default does not follow the join order. specifically, Postgres often does the following things in query plans which should normally never be done:...
web/links/index.htm: updated to Firefox bookmarks: PostgreSQL: added description of join_collapse_limit config param (which should be turned off, although it is on by default). added links for using TIDs ("the fastest possible access to a single row").
web/links/index.htm: updated to Firefox bookmarks: PostgreSQL: added links for troubleshooting autovacuuming (which can slow queries down significantly when it isn't happening for any tables)
lib/Firefox_bookmarks.reformat.csv: "page's description": changed to "page's own description" to clarify that this is a description provided by the page itself
web/links/index.htm: updated to Firefox bookmarks: PostgreSQL: added links for error reporting levels and how to hide stack traces in psql. SQL: added links for recursive queries, which can be used to traverse hierarchical (parent-pointer) tables.
web/links/index.htm: updated to Firefox bookmarks: PostgreSQL: difference between STABLE and IMMUTABLE: functions that depend on the search_path: clarified that the confusing effects of using IMMUTABLE for one of these functions are only noticeable if the function is called on only constant values in a PL/pgSQL function (in which case the wrong search_path (the one in effect at create time) will be used)