Until someone cannot tell the difference between tab and space when configuring or you miss one indentation. Seriously, whoever thinks indentation should have semantic meaning for computers should burn in hell. Indentation is for us, humans, not computers. You can write a JSON with or without indentation if you want. Also, use JSON5 to have comments and other good stuff for a config file.
Yep. Much like we don’t treat phone numbers like a number. The rule of thumb is that if you don’t do any arithmetic with it, it is not a “number” but numeric.
I can already imagine the log generated will be a hint. We usually automate those anyway as it is closer to (D)DoS too.
Yeah, nevermind, I didn’t know what I wrote either. I need my sleep lol.
Depends on the application. When the user is able to set the schema via database, then you cannot assume the shape of the data.
I prefer CUID
Just to clarify: Yes, I do know not all use cases are appropriate for CUID. But in general when generating ID, I’d use CUID2
Easy or not depends vary wildly. But the usual task is
That is the bare minimum, but we need to do more configuration to be able to boot. Hence the next task is configuring the following
That is it. Everything else is usually work specific. Like, if you wanted arch to be a server, you usually didn’t install a GUI. For workstation and gaming, you need more steps but it will vary depending on hardware. The archwiki covers a good deal of hardware from laptop to desktop and their quirks.
To be fair, he could also just be fed up after a long time being ignored for what he thinks is quite an important design decision.
For NAT, there is apparently a way to traverse NAT. I haven’t tried it tho, but the dude has a lot of research on the topic (NAT traversal), so if that didn’t work, maybe others will
Thanks for the information! Unfortunately, linux users are small in my country. There are rarely any events held here. But this is giving me an idea on how to help people revive their old hardware!
Oh my god this is a great idea. Why is there no more event like this‽
It is worse in HW prototyping where sometimes loose wire is all over the place
Not at all. It is indeed helpful to differentiate between an iterable and literal list. After all, sometimes it will bite you in the ass when you don’t differentiate between the two.
No problems. Learning a new concept is not stupid. So you are familiar with C. In C term, you are likely to do something like this:
int a[10] = {0}; // Just imagine this is 0,1,2,etc...
int b[10] = {0};
for (int i=0; i < 10; i++) {
b[i] = a[i]*2;
}
A 1 to 1 correspondent might looks like ths:
a = range(10) # 0,1,2,etc...
b = []
for x in a:
b.append(x*2)
However in python, you can then simplify to this:
a = range(10) # Same as before, 0,1,2,etc...
b = [x*2 for x in a]
# This is also works
b = [x*2 for x in [0,1,2,...]]
Remember that list comprehension is used to make a new list, not just iteration. If you want to do something other than making a list from another list, it is better to use iteration. List comprehension is just “syntactic sugar” so to speak. The concept comes from functional programming paradigm.
You can. Whatever the method returns will be the element of that list. So if for example I do this:
def mul(x):
return x*2
list = [mul(value) for value in range(1,20)]
It will have the same effect. But this:
def mul(x):
return
list = [mul(value) for value in range(1,20)]
Will just makes the list element all None
Edit to add more: List comprehension works not from the range function. Rather, the range function is returning a list. Hence the name, “list comprehension”. You can use any old list for it.
What it did under the hood is that it iterates each element on the list that you specify (the in ...
), and applies those to the function that you specify in the very first place. If you are familiar with the concept of Array.map
in other languages, this is that. There is also a technical explanation for it if it helps, but it requires more time to explain. Just let me know if you would like to know it.
List comprehension is not whatever you’re doing there. An example of list comprehension:
list = [value*2 for value in range(1, 20)]
See, list comprehension is used to make a list from an existing list. The value of the new list is defined by a function. In this case, the value of a will be 2,4,6, etc.
Your current syntax list[...]
, is trying to access an element of a list.
Punch cards are gonna be back baby
Hmm, maybe I am missing the point. What exactly do you mean by handling automatic updates in place? Like, the program that requires and parses the config file is watching for changes to the config file?