Instead of checks like:
if (value === null) {
throw new Error("missing value")
}
doSomethingThatNeedsValue(value)| pragma solidity ^0.7.0; | |
| library bytesSwap { | |
| function bytes32ToString(bytes32 _bytes32) public pure returns (string memory) { | |
| uint8 i = 0; | |
| while(i < 32 && _bytes32[i] != 0) { | |
| i++; | |
| } | |
| bytes memory bytesArray = new bytes(i); |
These use separate document structures instead of HTML, some are more modular libraries than full editors
Short version: I strongly do not recommend using any of these providers. You are, of course, free to use whatever you like. My TL;DR advice: Roll your own and use Algo or Streisand. For messaging & voice, use Signal. For increased anonymity, use Tor for desktop (though recognize that doing so may actually put you at greater risk), and Onion Browser for mobile.
This mini-rant came on the heels of an interesting twitter discussion: https://twitter.com/kennwhite/status/591074055018582016
| /** | |
| * Fancy ID generator that creates 20-character string identifiers with the following properties: | |
| * | |
| * 1. They're based on timestamp so that they sort *after* any existing ids. | |
| * 2. They contain 72-bits of random data after the timestamp so that IDs won't collide with other clients' IDs. | |
| * 3. They sort *lexicographically* (so the timestamp is converted to characters that will sort properly). | |
| * 4. They're monotonically increasing. Even if you generate more than one in the same timestamp, the | |
| * latter ones will sort after the former ones. We do this by using the previous random bits | |
| * but "incrementing" them by 1 (only in the case of a timestamp collision). | |
| */ |
| // Run this script when using InDesign for web/mobile/tablet comps | |
| // Calculates zoom based on 72ppi, so 100% shows pixel-perfect sizing | |
| app.generalPreferences.customMonitorPpi = 72; | |
| app.generalPreferences.useCustomMonitorResolution = true; |
| <?php | |
| class kirbytextExtended extends kirbytext { | |
| function __construct($text, $markdown=true) { | |
| parent::__construct($text, $markdown); | |
| // define custom tags | |
| $this->addTags('figure'); |
| <?php | |
| class kirbytextExtended extends kirbytext { | |
| function __construct($text, $markdown=true) { | |
| parent::__construct($text, $markdown); | |
| $this->addTags('thumb'); | |
| $this->addAttributes('crop', 'quality'); | |
| /** | |
| * Vertical centering with Flexbox + margin fallback | |
| * Lea Verou & David Storey | |
| */ | |
| html, body { height: 100%; } | |
| body { | |
| width: 100%; /* needed for FF */ | |
| margin: 0; |
MacOSX has a truly global path setting that precedes any other setting like ~/.bash_profile.
The file /private/etc/paths is a list of pathnames. The order from top to bottom defines the resulting order in the $PATH variable.
After loading /private/etc/paths there is a directory /private/etc/paths.d/ with files in the same style. Those are appended to the $PATH variable.
The default content of /private/etc/paths looks like this:
/usr/bin/bin