If there's a query parameter that you have a legitimate use for, like `q` for searching, obviously you should configure your web server to let it through.
Even in that case, you might want to block unexpected values as early as possible in your stack. For example, if you have a legitimate use for a certain set of `utm_source` values, but someone sends you bobby tables, you probably shouldn't log it blindly.
Ditto for the Referer header -- there's a lot of spam, and some of those strings might even be dangerous. You can't trust any of them anymore.
Nope, properties must be an object (dictionary or null). Which means each property can only appear once.
The spec doesn't say what type the value of a property can be, though. Examples in the RFC show strings, floats, and a nested object. So you could probably put a list in there as well if you want to store multiple values under the same key, provided that your decoder knows what to do with such values. (GeoJSON is often converted to and from WKB/WKT, and unorthodox values may be lost in the conversion.)
What's the smallest unit of functionality to which your principle applies?
For example, each comment on HN has a line on top that contains buttons like "parent", "prev", "next", "flag", "favorite", etc. depending on context. Suppose I might one day want to remove the "flag" functionality. Should each button be its own file? What about the "comment header" template file that references each of those button files?
I think that if you continue along the logical progression of the parent poster, then maybe the smaller units of functionality would be represented by simple ranges of lines of text. Given that, deleting a single button would ideally mean a single contiguous deletion from a file, versus deleting many disparate lines.
The `comment_header` template would iterate over the files in `comment_header.d/*`, which would, admittedly, need forced sorted naming:
100_parent.template
150_context.template
200_prev_next.template
300_flag.template
350_favorite.template
Looks odd with the numbering, no?
But then you get the added benefit of being able to refer to them by numbers, just "100" or "300" without having to glue humanlang inflection, declension, punctuation onto identifiers that happen to be words...
Some places where you can see this pattern: BASIC's explicit line numbering; non-systemd init systems.
If that's the tradeoff they're willing to make, who are you to say that they're doing it wrong?
Not every app needs 24/7 availability. The vast majority of websites out there will not suffer any serious consequences from a few hours of downtime (scheduled or otherwise) every now and then. If the cost savings outweigh the risk, it can be a perfectly reasonable business decision.
A more interesting question would be what kind of backup and recovery strategy they have, and which aspects of it (if any) they had to change when they moved to Hetzner.
Tney gave it a sexy name and set up a website about it (a github repo, at any rate), instead of just talking about it in a mailing list and getting a CVE like a proper bearded security researcher.
Yup, distillation never produces a pure product. Cask-strength whiskeys contain quite a lot of water, even though nobody is stupid enough to distill at 100C. Even an industrial column still can't go over 96% ABV.
There is always some amount of vapor pressure, even below the boiling point of a substance. Otherwise, neither water nor alcohol would evaporate by themselves at room temperature! The temperature we call the "boiling point" is just the temperature at which the vapor pressure equals the ambient pressure.
If ethanol and methanol were readily distinguishable by taste, much fewer people would have died or gone blind drinking moonshine.
Whatever subtle differences exist between them are probably unnoticeable to people who are already drunk, not to mention drinking cocktails with all sorts of other flavors mixed in.
Even in that case, you might want to block unexpected values as early as possible in your stack. For example, if you have a legitimate use for a certain set of `utm_source` values, but someone sends you bobby tables, you probably shouldn't log it blindly.
Ditto for the Referer header -- there's a lot of spam, and some of those strings might even be dangerous. You can't trust any of them anymore.
reply