Add NOTES, fix end of file lines, and add Repopack config
This commit is contained in:
parent
c3bf86574d
commit
805a09d0b1
6 changed files with 187 additions and 1 deletions
107
.repopackignore
Normal file
107
.repopackignore
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
# VisualSubnetCalc Custom
|
||||||
|
dist/css/bootstrap.*
|
||||||
|
src/cloudformation.yaml
|
||||||
|
|
||||||
|
|
||||||
|
# RepoPack Defaults
|
||||||
|
# Version control
|
||||||
|
.git/**
|
||||||
|
.hg/**
|
||||||
|
.hgignore
|
||||||
|
.svn/**
|
||||||
|
# Dependency directories
|
||||||
|
node_modules/**
|
||||||
|
**/node_modules/**
|
||||||
|
bower_components/**
|
||||||
|
**/bower_components/**
|
||||||
|
jspm_packages/**
|
||||||
|
**/jspm_packages/**
|
||||||
|
vendor/**
|
||||||
|
.bundle/**
|
||||||
|
.gradle/**
|
||||||
|
target/**
|
||||||
|
# Logs
|
||||||
|
logs/**
|
||||||
|
**/*.log
|
||||||
|
**/npm-debug.log*
|
||||||
|
**/yarn-debug.log*
|
||||||
|
**/yarn-error.log*
|
||||||
|
# Runtime data
|
||||||
|
pids/**
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||||
|
lib-cov/**
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage/**
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output/**
|
||||||
|
# Grunt intermediate storage
|
||||||
|
.grunt/**
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
# Compiled binary addons
|
||||||
|
build/Release/**
|
||||||
|
# TypeScript v1 declaration files
|
||||||
|
typings/**
|
||||||
|
# Optional npm cache directory
|
||||||
|
**/.npm/**
|
||||||
|
# Optional eslint cache
|
||||||
|
.eslintcache
|
||||||
|
# Optional REPL history
|
||||||
|
.node_repl_history
|
||||||
|
# Output of 'npm pack'
|
||||||
|
*.tgz
|
||||||
|
# Yarn files
|
||||||
|
**/.yarn/**
|
||||||
|
# Yarn Integrity file
|
||||||
|
**/.yarn-integrity
|
||||||
|
# dotenv environment variables file
|
||||||
|
.env
|
||||||
|
# next.js build output
|
||||||
|
.next/**
|
||||||
|
# nuxt.js build output
|
||||||
|
.nuxt/**
|
||||||
|
# vuepress build output
|
||||||
|
.vuepress/dist/**
|
||||||
|
# Serverless directories
|
||||||
|
.serverless/**
|
||||||
|
# FuseBox cache
|
||||||
|
.fusebox/**
|
||||||
|
# DynamoDB Local files
|
||||||
|
.dynamodb/**
|
||||||
|
# TypeScript output
|
||||||
|
#dist/**
|
||||||
|
# OS generated files
|
||||||
|
**/.DS_Store
|
||||||
|
**/Thumbs.db
|
||||||
|
# Editor directories and files
|
||||||
|
.idea/**
|
||||||
|
.vscode/**
|
||||||
|
**/*.swp
|
||||||
|
**/*.swo
|
||||||
|
**/*.swn
|
||||||
|
**/*.bak
|
||||||
|
# Package manager locks
|
||||||
|
**/package-lock.json
|
||||||
|
**/yarn.lock
|
||||||
|
**/pnpm-lock.yaml
|
||||||
|
# Build outputs
|
||||||
|
build/**
|
||||||
|
out/**
|
||||||
|
# Temporary files
|
||||||
|
tmp/**
|
||||||
|
temp/**
|
||||||
|
# repopack output
|
||||||
|
repopack-output.txt
|
||||||
|
# Essential Python-related entries
|
||||||
|
**/__pycache__/**
|
||||||
|
**/*.py[cod]
|
||||||
|
**/venv/**
|
||||||
|
**/.venv/**
|
||||||
|
**/.pytest_cache/**
|
||||||
|
**/.mypy_cache/**
|
||||||
|
**/.ipynb_checkpoints/**
|
||||||
|
**/Pipfile.lock
|
||||||
|
**/poetry.lock
|
|
@ -10,4 +10,5 @@ RUN npm run build
|
||||||
|
|
||||||
|
|
||||||
FROM nginx
|
FROM nginx
|
||||||
COPY --from=build /app/dist /usr/share/nginx/html
|
COPY --from=build /app/dist /usr/share/nginx/html
|
||||||
|
|
||||||
|
|
1
LICENSE
1
LICENSE
|
@ -19,3 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
SOFTWARE.
|
SOFTWARE.
|
||||||
|
|
||||||
|
|
57
NOTES.md
Normal file
57
NOTES.md
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
# Notes
|
||||||
|
|
||||||
|
## Efficient Saves
|
||||||
|
|
||||||
|
Looks like the most efficient way to store an address is to track the base network (say 10.0.0.0/8) and then represent
|
||||||
|
all other addresses as offsets from that base network. This way, we can store a subnet as a base network and a mask. The
|
||||||
|
most efficient way to store this is to store two values:
|
||||||
|
|
||||||
|
- The base network offset (0 to 4,294,967,296)
|
||||||
|
- 0 being the best case, a subnet within the base subnet with the same network address (10.0.0.0/24)
|
||||||
|
- 255.255.255.255 being the worst case, the last address in 0.0.0.0/0 (unrealistic)
|
||||||
|
- The mask (0 to 32)
|
||||||
|
|
||||||
|
Combine both of these values into a single binary string that is 32+5 bits. Round the storage up to the nearest byte
|
||||||
|
(40 bits = 5 bytes), padding the remaining bits with 0s, then encode this 5 byte string into a URL-safe base64 string.
|
||||||
|
|
||||||
|
Example for 10.0.0.0/8 and representing the network 10.0.15.0/24:
|
||||||
|
Find the offset:
|
||||||
|
10.0.0.0 (decimal):
|
||||||
|
00001010 00000000 00000000 00000000 → 167772160
|
||||||
|
10.0.15.0 (decimal):
|
||||||
|
00001010 00000000 00001111 00000000 → 167775232
|
||||||
|
Offset: 167775232 - 167772160 = 3072
|
||||||
|
|
||||||
|
Hmmm, this above works good for close together smaller networks but gets ugly when you're dealing with larger networks
|
||||||
|
because the offset is huge.
|
||||||
|
|
||||||
|
I'm thinking about a coordinate system. Let's say you have a base network of 10.0.0.0/8 and you want to as concisely as
|
||||||
|
possible represent 10.166.64.0/20. We could represent this as the nth /20 within the /8 and just store N-20, and
|
||||||
|
probably shorten that even more with the last digit always being base32 for the mask.
|
||||||
|
|
||||||
|
If I'm doing my math right you can say a /20 has 4096 addresses.
|
||||||
|
|
||||||
|
10.0.0.0 = 167772160
|
||||||
|
10.166.64.0 = 178667520
|
||||||
|
178667520 - 167772160 = 10895360
|
||||||
|
10895360 / 4096 = 2660
|
||||||
|
Which means 10.166.64.0 is the 2,660th /20 within the /8. You could store this as 2660x20 (inefficient)
|
||||||
|
|
||||||
|
You can reverse this 2660x20 from 10.0.0.0/8 by doing the following:
|
||||||
|
a /21 has 4096 addresses, times the 2660th network is 10895360. Add that to the base network address to get the network
|
||||||
|
|
||||||
|
10.0.0.0 = 167772160
|
||||||
|
167772160 + 10895360 = 178667520
|
||||||
|
178667520 = 10.166.64.0 then you can tack back on the /20
|
||||||
|
|
||||||
|
This has the advantage overall that you're unlikely to store wildly different subnet sizes in the same page. Your "N" in
|
||||||
|
the "Nth" subnet is likely to be very small. You're more likely to store the Nth /24 in a /20 than you are a /20 in an
|
||||||
|
/8. So the numbers will mostly be 1-2 digits, rarely 3 digits, and almost never 4 digits as depicted above.
|
||||||
|
|
||||||
|
I then for efficienty I could use this format:
|
||||||
|
|
||||||
|
`[Nth Network as Integer][Network Size as Base32]`
|
||||||
|
|
||||||
|
So lets say you're wanting to represent the 0th /24 in a /20 you would represent it as `00`, always knowing the last
|
||||||
|
digit is the network size. Or the 0th /32 would be `07` (32 in base32 is 7). or the 5th /28 would be `54`.
|
||||||
|
|
|
@ -105,3 +105,4 @@ Split icon made by [Freepik](https://www.flaticon.com/authors/freepik) from [Fla
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Visual Subnet Calculator is released under the [MIT License](https://opensource.org/licenses/MIT)
|
Visual Subnet Calculator is released under the [MIT License](https://opensource.org/licenses/MIT)
|
||||||
|
|
||||||
|
|
19
repopack.config.json
Normal file
19
repopack.config.json
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"output": {
|
||||||
|
"filePath": "repopack-output.txt",
|
||||||
|
"style": "xml",
|
||||||
|
"removeComments": false,
|
||||||
|
"removeEmptyLines": false,
|
||||||
|
"topFilesLength": 5,
|
||||||
|
"showLineNumbers": false
|
||||||
|
},
|
||||||
|
"include": [],
|
||||||
|
"ignore": {
|
||||||
|
"useGitignore": true,
|
||||||
|
"useDefaultPatterns": false,
|
||||||
|
"customPatterns": []
|
||||||
|
},
|
||||||
|
"security": {
|
||||||
|
"enableSecurityCheck": true
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue