Well–well look. I already told you: I deal with the god damn customers so the engineers don’t have to. I have people skills; I am good at dealing with people. Can’t you understand that? What the hell is wrong with you people?
Also, I constantly name files in the same directory the same thing except for case. In my ~/tmp directory I have unrelated foo.c (C source) and foo.C (C++ source).
.C came first. I don’t usually use it though; I usually use .cc or .cxx, but if I’m making some tiny test source, I often use .C. I’m strongly opposed to the .cpp extension because calling C++ “CPP” leads to confusion with the preexisting (before C++) use of the initialism to refer to the C preprocessor. There’s a reason why CPPFLAGS refers to preprocessor flags and CXXFLAGS refers to C++ flags.
Why does Linux do anything it does? Because a bunch of shortsighted nerds think it’s a good idea. For example, try to install software on another disk.
Symlink your desired location on the target disk to the place the system thinks the software should go. (In my case, /usr/local/games is a symlink to a different drive.)
As someone said you solution is to symlink or setup LVM volume groups for different mount points. Essentially, it’s all or nothing. You can’t just put a single program on a different disk without then taking all those files and manually symlinking them to the right place. It’s honestly one of the biggest Linux oversights.
XDG specifies the capital names, but to be nitpickingly technically precise, linux systems don’t do this. It mostly is done by the distribution maintainers, and the XDG specs. A base system does not usually have a notion of anything beyond your $HOME.
Try adding a user: sudo adduser basicuser. If you ls -al ~basicuser you will see it’s almost empty, just the .bashrc (or in my fedora, there’s some .mozilla crap in /etc/skel that also gets bootstrapped).
I had enough colleagues unable to type exactly what they asked me into whatever search engine they preferred to accept your statement. If you don’t know how to use a search engine go ask for another job.
“Hey pancake, how do I run all tests via gradle?”
Open your browser, head to Google and type “run all tests in gradle”
Kids get infinite registers and no restrictions on stack ordering. Programmers are constrained to solving it with one register and restrictions on stack put operations.
In this case, it’s a function that takes an Integer and three values of a generic type a and then returns a list of tuples of those same as.
So, those as are just any types representing the towers. Could be strings, integers, custom data types, whatever. The returned tuples represent movements between towers.
Following that are actually two definitions of the function.
…is the recursion base case. Function definitions are applied, whenever they match, being evaluated top-to-bottom.
This line specifies that it only matches, if that first Integer is 0. It does not care what the remaining parameters are, so matches them with a wildcard _.
Well, and to the right side of the equals sign, you’ve got the return value for the base case, an empty list.
Then comes the more interesting line, the recursion step:
<span style="color:#323232;">hanoi n a b c </span><span style="font-weight:bold;color:#a71d5d;">=</span><span style="color:#323232;"> hanoi (n</span><span style="font-weight:bold;color:#a71d5d;">-</span><span style="color:#0086b3;">1</span><span style="color:#323232;">) a c b </span><span style="font-weight:bold;color:#a71d5d;">++</span><span style="color:#323232;"> [(a, b)] </span><span style="font-weight:bold;color:#a71d5d;">++</span><span style="color:#323232;"> hanoi (n</span><span style="font-weight:bold;color:#a71d5d;">-</span><span style="color:#0086b3;">1</span><span style="color:#323232;">) c b a
</span>
This line matches for any remaining case. Those small letter names are again wildcards, but the matched value is placed into a variable with the provided name.
And then, well, it recursively calls itself, and those ++ are list concations. This line’s only real complexity is the usual Tower Of Hanoi algorithm.
There are two Linux paradigms that I consider stupid. One is the use of centralized software repositories managed by the distro instead of individual developer maintained installers. The other one is file system case sensibility. They already admitted defeat on the first one with the rise of containerised applications. I wonder how much longer they’ll keep the charade on the second one.
Indeed, but I’m sure we can agree that it’s pretty stupid for every distro to maintain its own repo. That’s a lot of duplicate work, which could be spend on more useful things. Luckily flatpak is well on its way to change that
Hm… But different distros have different philosophies (not just) about updates. That’s part of why people choose a specific distro.
Theres still plenty speaking against flatpak (larger sizes, problems with GTK/qt themes, and it’s only meant for GUI applications - you still need a separate system for the kernel and lower-level/cli tools. And frankly, that makes flatpak unusable to me, because the purpose of a centralized package management system is not having duplicate systems).
So in short: y’all are gonna pry pacman from my cold, dead hand.
I’m not against distros as a whole, some extra work will be inevitable because people have different preferences, but it feels like a waste having a Firefox package for arch, ubuntu, fedora and Debian while essentially all being identical. Indeed flatpak isn’t perfect yet, but it works great for me and it’s steadily improving
I was lucky enough to figure out that it was a trick question, but I second guessed every answer I put on tests and homework for that professor ever since.
programmer_humor
Newest
This magazine is from a federated server and may be incomplete. Browse more on the original instance.