In any case, happy hacking!
In any case, happy hacking!
Since you have a proper server – haha, not just one – and hence are not limited, I suggest you learn a real programming language and don't waste your time with this PHP mess. It might have improved a wee bit since I was a kid, but it felt like some hacked together shit. The defaults also were questionable at best, it was easier to hold it wrong than right. This stands testament to bad design and is especially terrible from a security point of view.
You're right, programming is like any other craft. You only truly learn by actually doing it. And this just takes time. Very long time to master it. Or as close to as it gets. The more you know, the more you realize what else you don't know (yet). It's a never ending process. So, take it easy, don't get discouraged, happy hacking and enjoy the endeavor! :-)
Since you have a proper server – haha, not just one – and hence are not limited, I suggest you learn a real programming language and don't waste your time with this PHP mess. It might have improved a wee bit since I was a kid, but it felt like some hacked together shit. The defaults also were questionable at best, it was easier to hold it wrong than right. This stands testament to bad design and is especially terrible from a security point of view.
You're right, programming is like any other craft. You only truly learn by actually doing it. And this just takes time. Very long time to master it. Or as close to as it gets. The more you know, the more you realize what else you don't know (yet). It's a never ending process. So, take it easy, don't get discouraged, happy hacking and enjoy the endeavor! :-)
After some (expensive) tucker at the Wasserberghaus, we tried to actually visit the summit this time. However, there's nothing to see, just a rough logging trail (46-49). That was a dead end, so we had to turn around. It was some nice exploring, but I reckon this was my first and last time up there. :-)

Unfortunately, we didn't go to the neighboring Fuchseck this time, only the Wasserberg with some extras.
https://lyse.isobeef.org/wanderung-auf-den-wasserberg-2025-05-18/
After some (expensive) tucker at the Wasserberghaus, we tried to actually visit the summit this time. However, there's nothing to see, just a rough logging trail (46-49). That was a dead end, so we had to turn around. It was some nice exploring, but I reckon this was my first and last time up there. :-)

Unfortunately, we didn't go to the neighboring Fuchseck this time, only the Wasserberg with some extras.
https://lyse.isobeef.org/wanderung-auf-den-wasserberg-2025-05-18/
Nice, did you print this keychain yourself?
Nice, did you print this keychain yourself?


> […] These changes will apply to operations like cloning repositories over HTTPS […]
On a positive note: Finally time to get rid of as many Go dependencies as possible. :-)
> […] These changes will apply to operations like cloning repositories over HTTPS […]
On a positive note: Finally time to get rid of as many Go dependencies as possible. :-)


The
echo
in line 13 is useless, you can simplify this to: newdir="$WD/$now"
If you reversed this line with the previous one, you could make use of the variable in the directory creation: mkdir "$newdir"
.In line 16, pull the directory change out of the loop upfront. The loop body doesn't modify the working directory, so no need to reset it with each cycle. In fact, you could even spare the
cd
altogether when you simply tell find
where to look: find "$basedir" -type f…
.I didn't try it, but if I read the manpage correctly, you should be able to simplify line 19 as well:
> -C Change to DIR before performing any operations. This option is order-sensitive, i.e. it affects all options that follow.
Hence, remove the
cd
and put the -C "$WD"
as the first argument to tar
. Again, I didn't try it. Proceed with caution.Finally, you don't need to specify the full path to
rm
in line 21. I bet, /bin
is in your PATH
. When you removed the previous cd
from my last suggestion, the relative path that follows won't work anymore. So, just use the absolute path that you already have in a variable: rm -rf "$newdir"
I hope you find this tiny review a wee bit useful. :-)
The
echo
in line 13 is useless, you can simplify this to: newdir="$WD/$now"
If you reversed this line with the previous one, you could make use of the variable in the directory creation: mkdir "$newdir"
.In line 16, pull the directory change out of the loop upfront. The loop body doesn't modify the working directory, so no need to reset it with each cycle. In fact, you could even spare the
cd
altogether when you simply tell find
where to look: find "$basedir" -type f…
.I didn't try it, but if I read the manpage correctly, you should be able to simplify line 19 as well:
> -C Change to DIR before performing any operations. This option is order-sensitive, i.e. it affects all options that follow.
Hence, remove the
cd
and put the -C "$WD"
as the first argument to tar
. Again, I didn't try it. Proceed with caution.Finally, you don't need to specify the full path to
rm
in line 21. I bet, /bin
is in your PATH
. When you removed the previous cd
from my last suggestion, the relative path that follows won't work anymore. So, just use the absolute path that you already have in a variable: rm -rf "$newdir"
I hope you find this tiny review a wee bit useful. :-)
Regarding
find | grep foo
, I recommend find -name '*foo*'
, prologic. Also, I regularly use -type d
and -type f
to find directories or files.
Regarding
find | grep foo
, I recommend find -name '*foo*'
, prologic. Also, I regularly use -type d
and -type f
to find directories or files.
I didn't draw any plans, just measured a few times and then went to cutting a bunch of particle board leftovers at the table saw. I routed rebates on the sides, fronts and backs to lap the boxes and sink in the bottom. It turned out that having no plans was a stupid idea. I cut exactly on the lines as I calculated and measured, however, the math in my head fell apart when it eventually met reality. The bottoms are too short, so I gotta glue on some strips. Also, with the longer fronts, the sides won't work either, I have to fix them as well. :-D
Finally, the lid of my cyclone bucket broke when the negative pressure got too large. Oh well. It was just an old wood glue bucket, I've got another empty one, so I can use that lid but strengthen it first with some plywood. Something for future Lyse to deal with.
All in all, it was still good fun. Wood (haha) do it again, but at least with some sketches on paper. ;-)
I didn't draw any plans, just measured a few times and then went to cutting a bunch of particle board leftovers at the table saw. I routed rebates on the sides, fronts and backs to lap the boxes and sink in the bottom. It turned out that having no plans was a stupid idea. I cut exactly on the lines as I calculated and measured, however, the math in my head fell apart when it eventually met reality. The bottoms are too short, so I gotta glue on some strips. Also, with the longer fronts, the sides won't work either, I have to fix them as well. :-D
Finally, the lid of my cyclone bucket broke when the negative pressure got too large. Oh well. It was just an old wood glue bucket, I've got another empty one, so I can use that lid but strengthen it first with some plywood. Something for future Lyse to deal with.
All in all, it was still good fun. Wood (haha) do it again, but at least with some sketches on paper. ;-)
@prologic You'll sometimes find the "Creation Date" in
whois
. Our domain was registered in 2009. Woah. That's also been a while, crazy.
@prologic You'll sometimes find the "Creation Date" in
whois
. Our domain was registered in 2009. Woah. That's also been a while, crazy.
That doesn't justify all the WAF crap in the first place, though. In my opinion it's just a filthy plaster applied to an injected wound. The software itself must be secure. Otherwise, don't put that shit on the internet. Probably not even operate it at all. Nowhere. Fix it or throw it in the bin.
That doesn't justify all the WAF crap in the first place, though. In my opinion it's just a filthy plaster applied to an injected wound. The software itself must be secure. Otherwise, don't put that shit on the internet. Probably not even operate it at all. Nowhere. Fix it or throw it in the bin.
Here's the plot twist, the phrase "till the cows come home". Hahaha, I never heard this before, but I love it! It's always interesting to me to hear English sayings. Sometimes we have the same in German, sometimes – like in this case – entirely different ones. It's fascinating that even though one hasn't come across proverbs, it's typically still clear from the context what's meant.
Yep, some unexpected language stuff. ;-)
Here's the plot twist, the phrase "till the cows come home". Hahaha, I never heard this before, but I love it! It's always interesting to me to hear English sayings. Sometimes we have the same in German, sometimes – like in this case – entirely different ones. It's fascinating that even though one hasn't come across proverbs, it's typically still clear from the context what's meant.
Yep, some unexpected language stuff. ;-)
recvmsg(…)
and sendmsg(…)
:* https://docs.python.org/3/library/socket.html#socket.socket.recvmsg
* https://docs.python.org/3/library/socket.html#socket.socket.sendmsg
I looked at them sooo many times in order to figure out why my
SCM_CREDENTIALS
sending code didn't work. :-D
recvmsg(…)
and sendmsg(…)
:* https://docs.python.org/3/library/socket.html#socket.socket.recvmsg
* https://docs.python.org/3/library/socket.html#socket.socket.sendmsg
I looked at them sooo many times in order to figure out why my
SCM_CREDENTIALS
sending code didn't work. :-D