Oh, yuck. ZFS-8000-8A. :(
Mon May 29 16:23:47 [bash:5.2.15 jobs:0 error:0 time:35]
# zpool status -v
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
NAME STATE READ WRITE CKSUM
fast ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
nvme-Samsung_SSD_990_PRO_2TB_S6Z2NJ0W215171W ONLINE 0 0 2
nvme-Samsung_SSD_990_PRO_2TB_S6Z2NJ0W215164J ONLINE 0 0 2
errors: Permanent errors have been detected in the following files:
I’m surprised it took me this long to figure this out. But there’s a very big problem with a command like this:
rsync var/data/ target:/var/data/
The problem is that in order to type that command, you first have to type the first part of the command, which includes this command:
rsync var/data/ target:/
That first part of the command is in fact a valid command, and if you pressed ENTER accidentally before you had finished typing the whole command, then rsync would begin to replace your entire root file system with the contents of var. That’s the sort of thing that will ruin your day.
So from now on, when I write command-line tools, I will nominate the target *before* the source, and if both the target and source are not specified then I will return an error.
p.s. Yes, the reverse problem exists, that when you nominate the target first you can still fuck up with the source, but given that you are operating on the target from the source, if you get the source wrong, you can just fix your command and run it again and it will be fixed up.
So I managed to get this dreaded error: Message ID: ZFS-8000-8A. It happened when I tried moving a directory between file systems on different zpools. Not gonna tempt fate and try that again. In future I will copy from source to target and then delete the target.
Some notes about some TCL commands:
Some notes with regard to DejaGnu:
This is an article with a list of very different types of programming language all of which are worth learning: The seven programming ur-languages.
In addition to ALGOL languages (which every one needs to know), check out:
- Lisp: PLT Racket
- ML: Haskell
- Self: Self
- Prolog: Prolog
- Forth: gForth1
- APL: K (via ok)
I read about the Oberon programming language today.
Reading about the TI MSP430 microcontroller. A pretty nifty looking device. It is referenced in Zen and the Forth Language: EFORTH for the MSP430 from Texas Instruments.
I’m reading Discover FORTH: Learning and Programming the FORTH Language and I have a growing interest in the programming language Forth. Here are a few resources:
And some other books on Forth:
And there are a heap of Forth books by Juergen Pintaske.
This turned up in my feed today: Object-Oriented Programming, lecture by Daniel Ingalls. It’s an old talk about the advantages of object-oriented programming from one of the inventors of Smalltalk (Dan Ingalls).