This commit is contained in:
parent
9c3af74e1b
commit
94f7400169
3 changed files with 26 additions and 0 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,2 +1,3 @@
|
||||||
build/
|
build/
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
|
lander.data
|
||||||
|
|
|
||||||
22
README.md
Normal file
22
README.md
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Lander
|
||||||
|
|
||||||
|
## The idea
|
||||||
|
|
||||||
|
A URL shortener has always been on my list of things I'd like to write myself.
|
||||||
|
It's simple, yet useful.
|
||||||
|
|
||||||
|
for our Algorithms & Datastructures 3 class, we had to implement three
|
||||||
|
different tries (Patricia trie, ternary trie, and a custom one). Considering
|
||||||
|
these are efficient string-based search trees, this gave me the idea to use it
|
||||||
|
as the backend for a URL shortener!
|
||||||
|
|
||||||
|
This implementation currently uses a ternary trie as its search tree. The
|
||||||
|
persistence model is very simple; I simply append a line to a text file every
|
||||||
|
time a URL is added, and add the lines of this file to the trie on startup. The
|
||||||
|
trie is stored completely im memory, and no I/O operations are required when
|
||||||
|
requesting a redirect. This makes the server very fast.
|
||||||
|
|
||||||
|
## The name
|
||||||
|
|
||||||
|
I gave up giving my projects original names a long time ago, so now I just use
|
||||||
|
the names of my friends ;p
|
||||||
|
|
@ -10,4 +10,7 @@ if [ "$1" = add ]; then
|
||||||
-H "X-Api-Key: $API_KEY" \
|
-H "X-Api-Key: $API_KEY" \
|
||||||
"$URL/$2"
|
"$URL/$2"
|
||||||
echo "$URL/$2"
|
echo "$URL/$2"
|
||||||
|
|
||||||
|
elif [ "$1" = get ]; then
|
||||||
|
curl -is "$URL/$2" | grep -Po '(?<=location: ).*'
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue