Archives for: December 2005
My, that was fun. Four hours of restoring a corrupted SAM on my mother's XP laptop—she has 46k dialup. :/ Here's the error message on boot:
lsass.exe - System Error "Security Accounts Manager initialization failed because of the following error: The handle is invalid. Error Status: 0xc0000008. Please click OK to shutdown the system and reboot into Safe Mode, check the event log for more detailed information."
The final resolution process:
- On another computer, obtain NTFS4DOS, install it on a floppy, then burn the floppy contents onto a CD.
- Boot the laptop from a Win98 CD. When prompted, choose "Run the computer with CD-ROM support."
- Stay on the command line, pull out the Win98 CD, and insert the NTFS4DOS CD. Run NTFS4DOS.EXE.
- NTFS4DOS loads, then waits for you to type "Yes" or "No" to the question, "Are you using this on a private computer?" Boring nagware, but a useful moment for us to swap CD's again—put the Win98 CD back in, so COMMAND.COM can be found on it.
- Answer "Yes" to the nagware prompt.
Follow the instructions from Microsoft (method 2, step 3) to replace your corrupt or missing SAM with the one from windows\repair:
copy c:\windows\system32\config\sam c:\windows\tmp\sam.bak
copy c:\windows\repair\sam c:\windows\system32\config\sam
Of course I considered Knoppix, but have you ever tried to download a 750MB ISO over dialup?
Glyph recently wrote:
I have also made no attempt to be fair, and I don't want to do this again any time soon, so if your favorite operating system got trashed here, don't bother to tell me that I'm not being fair. Think of it as a pop quiz!
Open source projects need more pop quizzes. There's a reason why you don't let developers run usability tests—it's far too easy to jump in with justification for why your product didn't work "just this once".
I'm just writing this to remember the "pop quiz" meme. Made me smirk.
After more than a year since 1.3 was released, I'm just about ready to officially release Dejavu 1.4! In addition to bugfixes, there are some major new features:
- Sandbox.recall now returns a list (use xrecall to get an iterator).
- Associations are now aware of whether they are to-one or to-many.
- logic.Expressions can now take multiple positional arguments (so you can test multiple Units at once).
- Improved multirecall, including full support for INNER and OUTER JOINs for all Storage Managers. Since the signatures for recall and multirecall now align, the "multirecall" name has been dropped; just call
Sandbox.recall(classes, expr)whether you're querying a single class or multiple ones.
- Units may now have arbitrary identifiers (primary keys).
- Unit Properties have a new "default" attribute.
- Simple inheritance is now supported; recalling one class will also recall its subclasses.
- New Sandbox "magic recaller" methods, like
inv = box.Invoice(13).
- New Sandbox.view method, to retrieve persisted data without creating full Units.
- A new Schema class to help manage changes to your model, and helper methods to sync database schemas.
- New logging support.
- A new test runner.
- Python 2.4 fixes for codewalk, the test suite, and fixedpoint.
As you can see, a year's worth of work. Feel free to kick the tires on all the new stuff. I should bless a release candidate in early January.
I just dumped a first crack at a Schema class on the trunk. Test code is here (search for 'schema'), docs are here. I haven't written anything like this before, so if anyone has recommendations or warnings about the direction it's heading, now is the time to speak up (before 1.4 is officially released )!
Basic design: there's a dejavu.Schema class which your app can subclass. Whenever you need to change the underlying database (or other persistence mechanism) schema of your app, you write a new
upgrade_to_X method, where X is an incrementing version number. Each such method contains the commands which will upgrade an installation from (X - 1) to X.
At runtime, you call
MySchema.upgrade(), and each deployment will run any
upgrade_to_X methods that it hasn't yet run, in order. The "currently deployed version" number is stored in a magic DeployedVersion Unit.
upgrade_to_X methods can choose to stay database-neutral and just use the (new)
rename_property methods. But because each Schema is application-specific, you can also write optimized instructions for your known StorageManagers. For example, say you need to change an int property to a string. The "database-neutral" way would be to have additional Arena methods for such tasks. Some of those methods may be added in the future, but nothing's stopping you now from writing non-portable SQL statements if you know your app is only deployed on, say, Postgres (but you should probably assert that before you execute the SQL statements).
Anyway, I'd be interested to hear from anyone else who has written database-versioning tools. Save me from a pitfall if you can. Have fun with the new Schema class and let's see if there are a couple of other common methods (like
add_column) that should go into the Arena and the StorageManagers.
Do you need to ask?
| You scored as Batman, the Dark Knight. As the Dark Knight of Gotham, Batman is a vigilante who deals out his own brand of justice to the criminals and corrupt of the city. He follows his own code and is often misunderstood. He has few friends or allies, but finds comfort in his cause.|
Which Action Hero Would You Be? v. 2.0
created with QuizFarm.com
Subway 0.2-rc1 is out. http://www.gosubway.org/
After much woe, I think I finally tracked down the status problems I was having with modpython_gateway.py (which is now available on my "misc" Trac site). It should now correctly handle redirects, 404's, and .css and .js content. I think it also fixed my earlier "delayed content" problem.
I hereby nominate mod_python's status API for the "One Obvious Way To Do It" booby prize. Having req.status, a return value/status, and the option to raise a status makes far too many combinations.
If you who know me really well, you know that I love squirrels! I am fascinated by their graceful movements, their complex social interactions, and their personalities, among other things. Here is a news article that my girlfriend forwarded to me just a few minutes ago. Fascinating, I have NEVER heard of this happening, and I would be lying if I said this didn't make me love the little creatures even more!
Last week I wrote about our material delivery in Puerto Peñasco. At the end of the post, I briefly alluded to the interaction with families during that part of the trip as the first time the families are assured their hopes of receiving a home would be realized. Then I chickened out by saying I would write more on that later. Well, I guess this is later.
In the lunchroom/wharehouse area of the Amor Ministries office is a large poster of a former trip participant in the embrace of a young Mexican child. If any of you have been around this ministry, been on mission trips with us, or received mailings from us, you have seen the photo. We use it a ton. In the upper right corner of this particular poster is added one of the Amor slogans, which reads, "Hope is a cement floor. Hope is four strong walls. Hope is a roof that doesn't leak." Altogether, it is a nice and evocative piece of advertising.
Unfortunately, I tend to be a scoffer. Not a scoffer in the extremely cynical, pessimistic, why try cuz your efforts are futile sense; but more the sarcastic, side comment to make someone laugh and shake their head at me kind of scoffer. Thus, as such scoffing goes, I would find myself standing near the poster making statements like, "If hope is four strong walls, then why do we build seven?" or, "If hope is a cement floor, why did we go with the parquet?" or better yet, "Hope must be a cement floor, 'cause linoleum is hopeless." Yes, I do realize none of these are as funny as they sound in my head. Nothing ever is.
Fortunately, my scoffings with regard to the poster have recently been laid aside. The two weeks we were in Peñasco did it for me. It started during material delivery and continued through the completion of the projects. For the first time in four years I allowed myself to see the physical change is people who are being blessed. When the trucks rolled up in front of the families and the first boards were taken down and placed in neat stacks on the ground in front of them, I could actually see people lifted from the inside-out. Behind tears I saw a spark. In sighs of relief I heard prayers of thanksgiving. We hadn't even started yet.
As the week rolled by and groups arrived and began construction, the changes were magnified and multiplied. One mother walked slowly around with a sad downcast face that all too well displayed the hardships of her life. When the group arrived to begin construction, one woman participant immediately noticed the pain in her face, approached her and gave her a big hug. By the last day, she could do nothing but smile and laugh. There was a quickness in her step that had not been there a few days before. She would readily jump in to help in the building of her new house. A softness began to show on her face. And there was something in her eyes....dare I say it was hope?
I don't think the actual definition of hope is anything as tangible as cement floors, strong walls, and a roof that doesn't leak. And I'm not going to look it up. I do think however (and by think I mean KNOW), that a mother who can sweep her floor and find something under the sand (besides more sand), who doesn't have to worry if her house will collapse in a strong wind, who knows her children will be dry in the next rainstorm, she can think about something else for a change.... maybe even the future.
To support Jon Wilson, click here.
I have Poison Oak, again.
Six weeks after the last time I had it, I have it again. I have not cleaned the camping gear out of my trunk since my backpacking trip because I am scared some of it might have Poison Oak on it. I read that Poison Oak can stay dormant on objects for up to two years. My fears were realized yesterday when I found some Poison Oak on my arm. The only way I can think of how I got it was from rummaging through my trunk to find some climbing gear that I used last weekend.
I'm telling you, this stuff is persistent!
Something happened to me last night that kinda tripped me out a bit. I have been going to sleep really early lately, probably around 9 or so. Anyhow, yesterday right before I got into bed I was picking some stuff up in my room and walked over to turn off the light. As I reached for the light I took of my glasses and tossed them to the floor by my bed. As my glasses were falling through the air, I flipped the light switch.
So imagine focusing on something, and then having it disapper in thin air. This is how I would describe what happened inside my brain as the light suddenly disappeared while my glasses were still falling, effectively leaving my brain thinking the glasses were suspended in mid-air.
I don't know why this messed with my head, but I couldn't stop thinking about it, even when I woke up. Like something out of a suspense movie.