Compare commits
44 Commits
15bbb2e33e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 8a8845d898 | |||
| 65be246673 | |||
| eabf56ed93 | |||
| d55b13ecbf | |||
| cc8a7710a1 | |||
| ad83090b05 | |||
| 684c237ac1 | |||
| 23c0090a47 | |||
| e57ec6de50 | |||
| c790dd6736 | |||
| 6e3666cea2 | |||
| 7379df38de | |||
| 2a915fec69 | |||
| fa0e9907ee | |||
| 2c3b5056ae | |||
| f5e0c39458 | |||
| 645093da36 | |||
| f57583b1a9 | |||
| 51b2ebf8e6 | |||
| 5a6d91296d | |||
| 5306cb78d3 | |||
| 749a018a6e | |||
| f212c41734 | |||
| cba46bfc23 | |||
| b734be4054 | |||
| 45915d2914 | |||
| 1fa30724d2 | |||
| 6def1a3007 | |||
| ed7c2b8b29 | |||
| 3fcd6af3a9 | |||
| 8507cbd189 | |||
| 8207702442 | |||
| 0ec47180e2 | |||
| c28f7a92d9 | |||
| 2d270542f0 | |||
| ba0cfe8b56 | |||
| fa8eef51ff | |||
| 730940b003 | |||
| 58fab1850b | |||
| a5b6227fef | |||
| 999a919a7f | |||
| 9afec80742 | |||
| 550485093c | |||
| 3a736dec82 |
@@ -25,7 +25,7 @@ cd www
|
|||||||
|
|
||||||
Then in a web browser, navigate to `localhost:8080`.
|
Then in a web browser, navigate to `localhost:8080`.
|
||||||
|
|
||||||
## TODO
|
## TODO Items
|
||||||
|
|
||||||
All goals are currently completed.
|
All goals are currently completed.
|
||||||
|
|
||||||
|
|||||||
66
cronjob.sh
Executable file
66
cronjob.sh
Executable file
@@ -0,0 +1,66 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# 2025-10-14 Hyperling
|
||||||
|
# Copied cronjob.sh from env-docker/Config/Hugo-Example/files/ to use for this
|
||||||
|
# project so that docker container can do periodic git pulls rather than having
|
||||||
|
# to reload /rebuild the container each time a release is pushed out.
|
||||||
|
|
||||||
|
## Setup ##
|
||||||
|
|
||||||
|
DIR="$(dirname -- "${BASH_SOURCE[0]}")"
|
||||||
|
PROG="$(basename -- "${BASH_SOURCE[0]}")"
|
||||||
|
cd $DIR
|
||||||
|
DIR="`pwd`"
|
||||||
|
NAME="'$PROG'"
|
||||||
|
|
||||||
|
function log {
|
||||||
|
echo -e "`date` : $NAME - $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
function kill-project {
|
||||||
|
# Kill node.js which will complete run.sh and restart any Docker containers.
|
||||||
|
# This is more intended towards Development and Stage sites since Production
|
||||||
|
# will only see git changes when a pull request is manually completed.
|
||||||
|
log "Stopping continuous processes!"
|
||||||
|
pkill node
|
||||||
|
}
|
||||||
|
|
||||||
|
function reload-project {
|
||||||
|
# Nothing to do, run.sh and main.js automatically uses the latest files.
|
||||||
|
log "Project reloaded successfully!"
|
||||||
|
}
|
||||||
|
|
||||||
|
## Main ##
|
||||||
|
|
||||||
|
# Pull any updates, and if the project is already up to date, exit successfully.
|
||||||
|
output="`git pull`"
|
||||||
|
git_status="$?"
|
||||||
|
|
||||||
|
echo "$output" | grep -v "up to date"
|
||||||
|
grep_status="$?"
|
||||||
|
|
||||||
|
log "Pull status is '$git_status', checking for changes is '$grep_status'."
|
||||||
|
|
||||||
|
# Check whether the continuously running jobs have been updated.
|
||||||
|
echo "$output" | grep "main.js"
|
||||||
|
main_changed="$?"
|
||||||
|
echo "$output" | grep "run.sh"
|
||||||
|
run_changed="$?"
|
||||||
|
|
||||||
|
# Determine where we've landed and whether we need to do anything.
|
||||||
|
if [[ $git_status != 0 ]]; then
|
||||||
|
log "*** ERROR: Git reported a failure! ***"
|
||||||
|
exit 1
|
||||||
|
elif [[ $git_status == 0 && ($main_changed == 0 || $run_changed == 0) ]]; then
|
||||||
|
log "Either main ('$main_changed'), or run ('$run_changed') were changed!"
|
||||||
|
kill-project
|
||||||
|
elif [[ $git_status == 0 && $grep_status == 0 ]]; then
|
||||||
|
reload-project
|
||||||
|
elif [[ $git_status == 0 && $grep_status != 0 ]]; then
|
||||||
|
log "Nothing to do. '$output'"
|
||||||
|
else
|
||||||
|
log "*** WARNING: Unknown Situation ***"
|
||||||
|
fi
|
||||||
|
|
||||||
|
## Success! ##
|
||||||
|
|
||||||
|
exit 0
|
||||||
@@ -29,7 +29,6 @@
|
|||||||
planted at least one fruit tree or had a small square foot
|
planted at least one fruit tree or had a small square foot
|
||||||
garden. We would be in paradise!
|
garden. We would be in paradise!
|
||||||
</p>
|
</p>
|
||||||
<!-- TBD change this to 'Coding, videos, and art' :) -->
|
|
||||||
<p>
|
<p>
|
||||||
Coding and videos aren't my only hobbies, I'm also big into
|
Coding and videos aren't my only hobbies, I'm also big into
|
||||||
health. I see it as humanity's most important asset and take a
|
health. I see it as humanity's most important asset and take a
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
<div class="row" id="experience">
|
<div class="row" id="experience">
|
||||||
<h2 class="col-12 title">My Profession</h2>
|
<h2 class="col-12 title">My Profession</h2>
|
||||||
</div>
|
</div>
|
||||||
<!-- TBD/TODO: Add image? Me at laptop with Cleo? Or none like other Media pages? -->
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 header">
|
<div class="col-12 header">
|
||||||
<p>
|
<p>
|
||||||
@@ -19,9 +18,9 @@
|
|||||||
Linux system administration from a young age.
|
Linux system administration from a young age.
|
||||||
Much of my career has focused on back-end / database systems
|
Much of my career has focused on back-end / database systems
|
||||||
and optimizing workflows.
|
and optimizing workflows.
|
||||||
I feel that I specialize in building systems with "no sharp edges",
|
I feel that I specialize in building systems with "no sharp
|
||||||
meaning that I make sure there isn't a way the user can hurt
|
edges", meaning that I test rigorously to ensure there aren't any
|
||||||
themselves or the system.
|
ways the user can hurt themselves or the system.
|
||||||
In my free time I enjoy learning new
|
In my free time I enjoy learning new
|
||||||
languages and writing apps for Android.
|
languages and writing apps for Android.
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -7,9 +7,6 @@
|
|||||||
?>
|
?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<h1 class="col-12 title">Current Diet</h1>
|
<h1 class="col-12 title">Current Diet</h1>
|
||||||
<div class="col-12 header center" >
|
|
||||||
<img src="/files/media/icons/tbd.jpg" alt="Image TBD">
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 text">
|
<div class="col-12 text">
|
||||||
|
|||||||
@@ -58,13 +58,28 @@
|
|||||||
<p>
|
<p>
|
||||||
Curious how I made it? Check out its Git repository:
|
Curious how I made it? Check out its Git repository:
|
||||||
</p>
|
</p>
|
||||||
<ul class="indent"><li>
|
<ul class="indent">
|
||||||
<a href="https://git.hyperling.com/me/ebook-freedom-flyer"
|
<li>
|
||||||
target="_blank" rel="noopener noreferrer"
|
<a href="https://git.hyperling.com/me/ebook-freedom-flyer"
|
||||||
>
|
target="_blank" rel="noopener noreferrer"
|
||||||
[CODE] | Source Code
|
>
|
||||||
</a>
|
[CODE] | Source Code
|
||||||
</li></ul>
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Here is the video it was announced in:
|
||||||
|
</p>
|
||||||
|
<ul class="indent">
|
||||||
|
<li>
|
||||||
|
<a href="https://odysee.com/@HyperVegan:2/20251003-Announcements:0"
|
||||||
|
target="_blank" rel="noopener noreferrer"
|
||||||
|
>
|
||||||
|
[Odysee] | HyperVegan: "Announcements: Skipped Midfest, Voluntary Sovereignty eBook, CheapRVLiving Interview"
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php
|
<?php
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
Page to provide ways people can support me.
|
Page to provide ways people can support me.
|
||||||
-->
|
-->
|
||||||
<?php
|
<?php
|
||||||
$GLOBALS["ADVISORY"] = false;
|
//$GLOBALS["ADVISORY"] = false;
|
||||||
if (!isset($GLOBALS["HEADER_TITLE"])) {
|
if (!isset($GLOBALS["HEADER_TITLE"])) {
|
||||||
$GLOBALS["HEADER_TITLE"] = "Health";
|
$GLOBALS["HEADER_TITLE"] = "Health";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,13 @@
|
|||||||
#!/usr/bin/php
|
#!/usr/bin/php
|
||||||
<?php
|
<?php
|
||||||
$show_advisory = false;
|
$show_advisory = true;
|
||||||
if ($show_advisory) echo '
|
if ($show_advisory) echo '
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<p><!-- Gap Area --></p>
|
<p><!-- Gap Area --></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row center" id="advisory">
|
<div class="row center title" id="advisory">
|
||||||
<div class="col-12 title">
|
<i><h2 class="col-12 title">Latest Announcement</h2></i>
|
||||||
<i><h2>Announcements</h2></i>
|
|
||||||
</div>
|
|
||||||
<a href="/freedom/">
|
<a href="/freedom/">
|
||||||
<div class="col-12 text">
|
<div class="col-12 text">
|
||||||
<u class="orange">2025-09-28</u>
|
<u class="orange">2025-09-28</u>
|
||||||
|
|||||||
@@ -6,11 +6,6 @@
|
|||||||
}
|
}
|
||||||
$show_pics = $GLOBALS["SHOW_BANNER_PICS"];
|
$show_pics = $GLOBALS["SHOW_BANNER_PICS"];
|
||||||
$banner_width = $show_pics ? 6 : 12;
|
$banner_width = $show_pics ? 6 : 12;
|
||||||
|
|
||||||
// TBD / TODO:
|
|
||||||
// Check if user has vertical screen?
|
|
||||||
// Is that possible in this environment?
|
|
||||||
//$image_width = $vertical_screen ? 6 : 3;
|
|
||||||
?>
|
?>
|
||||||
<a href='/about/'>
|
<a href='/about/'>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|||||||
@@ -35,11 +35,18 @@
|
|||||||
<p>
|
<p>
|
||||||
I enjoy writing! Find my free eBooks below.
|
I enjoy writing! Find my free eBooks below.
|
||||||
</p>
|
</p>
|
||||||
<ul class="indent"><li>
|
<ul class="indent">
|
||||||
2025-09-28: <a href="/freedom/">Voluntary Sovereignty</a>
|
<li>
|
||||||
</li><li>
|
2025-09-28: <a href="/freedom/">Voluntary Sovereignty</a> |
|
||||||
2024-03-07: <a href="/health/">My Health Protocol</a>
|
Existing in a statist society with the least amount of friction.
|
||||||
</li></ul>
|
</li>
|
||||||
|
<li><p><!-- Small Gap --></p></li>
|
||||||
|
<li>
|
||||||
|
2024-03-07: <a href="/health/">Hyperling's Health Protocol</a> |
|
||||||
|
Health is a lifestyle, not a diet. Align yourself with Nature
|
||||||
|
to receive its blessings.
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -10,9 +10,8 @@
|
|||||||
?>
|
?>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<h1 class="col-12 title">Resume</h1>
|
<h1 class="col-12 title">Resume</h1>
|
||||||
<div class="col-12 header center" >
|
</div>
|
||||||
<img src="/files/media/icons/home.jpg" alt="<<home.jpg>>"> <!-- TBD use a new photo -->
|
<div class="row">
|
||||||
</div>
|
|
||||||
<h2 class="col-12 title center">Current Status : Traveling Full Time</h2>
|
<h2 class="col-12 title center">Current Status : Traveling Full Time</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@@ -20,22 +19,13 @@
|
|||||||
<p>
|
<p>
|
||||||
Interested in hiring me? View my resume below!
|
Interested in hiring me? View my resume below!
|
||||||
</p>
|
</p>
|
||||||
<ul class="indent"><li>
|
<!--<ul class="indent"><li>-->
|
||||||
<a href="https://hyperling.com/files/media/documents/Resume.pdf"
|
<a href="https://hyperling.com/files/media/documents/Resume.pdf"
|
||||||
target="_blank" rel="noopener noreferrer"
|
target="_blank" rel="noopener noreferrer"
|
||||||
>
|
>
|
||||||
[PDF] | Direct Download
|
[PDF] | Direct Download
|
||||||
</a>
|
</a>
|
||||||
</li></ul>
|
<!--</li></ul>-->
|
||||||
<!-- For those sneaky folks who look at source code. ;)
|
|
||||||
<ul class="indent"><li>
|
|
||||||
<a href="https://hyperling.com/files/media/documents/resume.md"
|
|
||||||
target="_blank" rel="noopener noreferrer"
|
|
||||||
>
|
|
||||||
[Markdown] | Direct Download
|
|
||||||
</a>
|
|
||||||
</li></ul>
|
|
||||||
-->
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php
|
<?php
|
||||||
|
|||||||
@@ -3,12 +3,12 @@
|
|||||||
$long = true;
|
$long = true;
|
||||||
?>
|
?>
|
||||||
<div class="row" id="obtainium">
|
<div class="row" id="obtainium">
|
||||||
<h2 class="col-12 header">All Announcements</h2>
|
<h2 class="col-12 header">Announcements</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 text">
|
<div class="col-12 text">
|
||||||
<a href="/freedom/">2025-09-28</a>
|
<strong><a href="/freedom/">2025-09-28</a></strong>
|
||||||
<p>
|
<p>
|
||||||
I wrote another short free eBook, "Voluntary Sovereignty", check it out
|
I wrote another short free eBook, "Voluntary Sovereignty", check it out
|
||||||
<a href="/freedom/">here</a>!
|
<a href="/freedom/">here</a>!
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 text">
|
<div class="col-12 text">
|
||||||
<a href="/apps/#expense">2025-05-XX</a>
|
<strong><a href="/apps/#expense">2025-03-27</a></strong>
|
||||||
<p>
|
<p>
|
||||||
My new Android app
|
My new Android app
|
||||||
<a href="/apps/#expense">"Expense Tracker"</a>
|
<a href="/apps/#expense">"Expense Tracker"</a>
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 text">
|
<div class="col-12 text">
|
||||||
<a href="/health/">2024-03-07</a>
|
<strong><a href="/health/">2024-03-07</a></strong>
|
||||||
<p>
|
<p>
|
||||||
Find my free eBook, "Hyperling's Health Protocol",
|
Find my free eBook, "Hyperling's Health Protocol",
|
||||||
<a href="/health/">here</a>!
|
<a href="/health/">here</a>!
|
||||||
@@ -86,7 +86,7 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 text">
|
<div class="col-12 text">
|
||||||
<a href="/apps/#tictactoe">2024-03-31</a>
|
<strong><a href="/apps/#tictactoe">2024-03-31</a></strong>
|
||||||
<p>
|
<p>
|
||||||
There's a new app in town,
|
There's a new app in town,
|
||||||
<a href="/apps/#tictactoe">Tic-Tac-Toe</a>!
|
<a href="/apps/#tictactoe">Tic-Tac-Toe</a>!
|
||||||
|
|||||||
56
run.sh
56
run.sh
@@ -4,8 +4,14 @@
|
|||||||
|
|
||||||
## Setup ##
|
## Setup ##
|
||||||
|
|
||||||
DIR=`dirname $0`
|
DIR="$(dirname -- "${BASH_SOURCE[0]}")"
|
||||||
PROG=`basename $0`
|
PROG="$(basename -- "${BASH_SOURCE[0]}")"
|
||||||
|
|
||||||
|
# Ensure we are executing from this file's directory.
|
||||||
|
cd $DIR
|
||||||
|
DIR="`pwd`"
|
||||||
|
NAME="'$DIR/$PROG'"
|
||||||
|
echo $NAME
|
||||||
|
|
||||||
## Functions ##
|
## Functions ##
|
||||||
|
|
||||||
@@ -26,6 +32,22 @@ function log {
|
|||||||
echo -e "`date` - $message"
|
echo -e "`date` - $message"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log "Local process information:"
|
||||||
|
ps $$
|
||||||
|
function check_main {
|
||||||
|
if [[ -z "$1" ]]; then
|
||||||
|
echo "ERROR: Subprocess name was not provided. $1"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
log "Subprocess '$1' checking if main process is still running..."
|
||||||
|
ps $$ >/dev/null
|
||||||
|
status=$?
|
||||||
|
if [[ $status != 0 ]]; then
|
||||||
|
log "Process '$$' not found, '$1' from '$DIR/$PROG' exiting."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
## Parameters ##
|
## Parameters ##
|
||||||
|
|
||||||
while getopts ':p:h' opt; do
|
while getopts ':p:h' opt; do
|
||||||
@@ -47,9 +69,6 @@ fi
|
|||||||
|
|
||||||
## Build Environment ##
|
## Build Environment ##
|
||||||
|
|
||||||
# Ensure we are executing from this file's directory.
|
|
||||||
cd $DIR
|
|
||||||
|
|
||||||
sudo=""
|
sudo=""
|
||||||
if [[ -z $LOGNAME ]]; then
|
if [[ -z $LOGNAME ]]; then
|
||||||
LOGNAME="`whoami`"
|
LOGNAME="`whoami`"
|
||||||
@@ -60,21 +79,29 @@ if [[ $LOGNAME != "root" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
log "Check if any system dependencies need installed."
|
log "Check if any system dependencies need installed."
|
||||||
|
progs=""
|
||||||
if [[ ! `which php` ]]; then
|
if [[ ! `which php` ]]; then
|
||||||
echo "- Installing PHP"
|
echo "- Installing PHP"
|
||||||
$sudo apt-get install -y php-cli
|
progs="$progs php-cli"
|
||||||
fi
|
fi
|
||||||
if [[ ! `which node` ]]; then
|
if [[ ! `which node` ]]; then
|
||||||
echo "- Installing Node"
|
echo "- Installing Node"
|
||||||
$sudo apt-get install -y nodejs
|
progs="$progs nodejs"
|
||||||
fi
|
fi
|
||||||
if [[ ! `which npm` ]]; then
|
if [[ ! `which npm` ]]; then
|
||||||
echo "- Installing NPM"
|
echo "- Installing NPM"
|
||||||
$sudo apt-get install -y npm
|
progs="$progs npm"
|
||||||
fi
|
fi
|
||||||
if [[ ! `which curl` ]]; then
|
if [[ ! `which curl` ]]; then
|
||||||
echo "- Installing Curl"
|
echo "- Installing Curl"
|
||||||
$sudo apt-get install -y curl
|
progs="$progs curl"
|
||||||
|
fi
|
||||||
|
if [[ ! `which ps` ]]; then
|
||||||
|
echo "- Installing PS"
|
||||||
|
progs="$progs procps"
|
||||||
|
fi
|
||||||
|
if [[ -n "$progs" ]]; then
|
||||||
|
$sudo apt-get install -y $progs
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Directories and allowed page types are executable, others are not.
|
# Directories and allowed page types are executable, others are not.
|
||||||
@@ -95,6 +122,7 @@ npm install
|
|||||||
log "Removing old index files."
|
log "Removing old index files."
|
||||||
find files/photos/ -name "*".html -print -delete
|
find files/photos/ -name "*".html -print -delete
|
||||||
{
|
{
|
||||||
|
check_main photos
|
||||||
count=1
|
count=1
|
||||||
http_code=0
|
http_code=0
|
||||||
port="${ports%% *}"
|
port="${ports%% *}"
|
||||||
@@ -120,11 +148,21 @@ find files/photos/ -name "*".html -print -delete
|
|||||||
|
|
||||||
## Main ##
|
## Main ##
|
||||||
|
|
||||||
|
log "Start local cronjob."
|
||||||
|
while true; do
|
||||||
|
check_main cronjob
|
||||||
|
$DIR/cronjob.sh
|
||||||
|
sleep 30
|
||||||
|
done &
|
||||||
|
|
||||||
log "Start website API."
|
log "Start website API."
|
||||||
node ./main.js $ports
|
node ./main.js $ports
|
||||||
status=$?
|
status=$?
|
||||||
|
|
||||||
## Finish ##
|
## Finish ##
|
||||||
|
|
||||||
|
log "Kill spawned processes."
|
||||||
|
pkill -eP $$
|
||||||
|
|
||||||
log "Exiting with status '$status'."
|
log "Exiting with status '$status'."
|
||||||
exit $status
|
exit $status
|
||||||
|
|||||||
Reference in New Issue
Block a user