I just had a POS machine recommend 20%, 25%, or 30% for percentages. It seems like it’s increasing
I just had a POS machine recommend 20%, 25%, or 30% for percentages. It seems like it’s increasing
What parent is likely referencing
TBH I wonder if the current Microsoft is capable of executing that here. I don’t believe in a “changed” MS, but Linux is eating the world, and MS doesn’t really care about Windows much anymore. Azure happily runs Linux VMs
There’s at least one example you can look at, the Jenkins CI project had code like that (if (name.startsWith("windows 9")) {
):
https://issues.jenkins.io/secure/attachment/18777/PlatformDetail
Microsoft, for all their faults, do (or at least did) take backwards compatibility very seriously, and the option of “just make devs fix it” would never fly. Here’s a story about how they added special code to Windows 95 to make SimCity’s broken code work on it:
Windows 95? No problem. Nice new 32 bit API, but it still ran old 16 bit software perfectly. Microsoft obsessed about this, spending a big chunk of change testing every old program they could find with Windows 95. Jon Ross, who wrote the original version of SimCity for Windows 3.x, told me that he accidentally left a bug in SimCity where he read memory that he had just freed. Yep. It worked fine on Windows 3.x, because the memory never went anywhere. Here’s the amazing part: On beta versions of Windows 95, SimCity wasn’t working in testing. Microsoft tracked down the bug and added specific code to Windows 95 that looks for SimCity. If it finds SimCity running, it runs the memory allocator in a special mode that doesn’t free memory right away. That’s the kind of obsession with backward compatibility that made people willing to upgrade to Windows 95.
Double curly is pretty common IME, but I have more experience in backend which is less likely to be involved in an error like this. Off the top of my head, handlebars, django, and jinja2 all use that style.
In case anyone hasn’t seen it yet:
https://neal.fun/infinite-craft/
It’s pretty fun. Similar to OP, I was able to get all the way to crafting specific Mario Kart DS courses.
If you’re writing code that generic, why wouldn’t you want str
to be passed in? For example, Counter('hello')
is perfectly valid and useful. OTOH, average_length('hello')
would always be 1
and not be useful. OTOOH, maybe there’s a valid reason for someone to do that. If I’ve got a list of items of various types and want to find the highest average length, I’d want to do max(map(average_length, items))
and not have that blow up just because there’s a string in there that I know will have an average length of 1
.
So this all depends on the specifics of the function you’re writing at the time. If you’re really sure that someone shouldn’t be passing in a str
, I’d probably raise a ValueError
or a warning, but only if you’re really sure. For the most part, I’d just use appropriate type hints and embrace the phrase “we’re all consenting adults here”.
The collect
’s in the middle aren’t necessary, neither is splitting by ": "
. Here’s a simpler version
fn main() {
let text = "seeds: 79 14 55 13\nwhatever";
let seeds: Vec<_> = text
.lines()
.next()
.unwrap()
.split_whitespace()
.skip(1)
.map(|x| x.parse::<u32>().unwrap())
.collect();
println!("seeds: {:?}", seeds);
}
It is simpler to bang out a [int(num) for num in text.splitlines()[0].split(' ')[1:]]
in Python, but that just shows the happy path with no error handling, and does a bunch of allocations that the Rust version doesn’t. You can also get slightly fancier in the Rust version by collecting into a Result
for more succinct error handling if you’d like.
EDIT: Here’s also a version using anyhow
for error handling, and the aforementioned Result
collecting:
use anyhow::{anyhow, Result};
fn main() -> Result<()> {
let text = "seeds: 79 14 55 13\nwhatever";
let seeds: Vec<u32> = text
.lines()
.next()
.ok_or(anyhow!("No first line!"))?
.split_whitespace()
.skip(1)
.map(str::parse)
.collect::<Result<_, _>>()?;
println!("seeds: {:?}", seeds);
Ok(())
}
You probably wouldn’t be committing this, unless you’re backing up a heavily WIP branch. The issue is that if you’re developing locally and need to make a temporary change, you might comment something out, which then requires commenting another now-unused variable, which then requires commenting out yet another variable, and so on. Go isn’t helping you here, it’s wasting your time for no good reason. Just emit a warning and allow CI to be configured to reject warnings.
That’s 👏 what 👏 CI 👏 is 👏 for
Warn in dev, enforce stuff like this in CI and block PRs that don’t pass. Go is just being silly here, which is not surprising given that Rob Pike said
Syntax highlighting is juvenile. When I was a child, I was taught arithmetic using colored rods. I grew up and today I use monochromatic numerals.
The Go developers need to get over themselves.
It was actually Sonic
They don’t understand the difference between belief and faith. I believe many things, but have no faith in them. I will take contrary evidence into account.