code logs -> 2008 -> Wed, 09 Apr 2008< code.20080408.log - code.20080410.log >
--- Log opened Wed Apr 09 00:00:02 2008
00:16
< Vornicus>
People are fork-bombing the server?
00:23 You're now known as TheWatcher[T-2]
00:27 You're now known as TheWatcher[zZzZ]
00:29
< Jeff>
Yeah.
00:29
< Jeff>
Presumably, they think it's funny.
00:31
< Vornicus>
Obviously they need to be process limited.
00:32
< Jeff>
Obviously
02:11 gnolam [lenin@Nightstar-10613.8.5.253.static.se.wasadata.net] has quit [Quit: Z?]
02:44
< Shoukanjuu>
What is fork(); ?
02:44 * Shoukanjuu has been up for 30 hours
02:44
<@McMartin>
fork() is a POSIX call that creates a new process and runs it in parallel.
02:44
<@McMartin>
Setting up an unending chain of fork()s will fork you up but good
02:45
< Shoukanjuu>
I suppose that's why it's called fork; it's only common sense to...well, fork >_> XD
02:45
<@McMartin>
(actually, it's because the process "forks off" and starts out identical to the parent process)
02:46
<@McMartin>
(except for one bit that says whether it's parent or child.)
02:46
< Shoukanjuu>
Yeah. It's common sense...ish
02:46
<@McMartin>
(Thus, POSIX does not have a CreateProcess call; you fork, and then you overwrite the child with whatever the new process is.)
02:46
<@McMartin>
(Which is not common sense no matter how much people who have only ever used UNIX claim it is. It's merely a pretty good idea.)
02:47
< Shoukanjuu>
That I can see, okay. :)
02:49
<@McMartin>
In fact, under the hood, Linux takes it a step further and has an even more thorough cloning that fork() uses, then separates from.
03:23 Chalcedon [~Chalcy@203.211.123.ns-2573] has joined #code
03:23 mode/#code [+o Chalcedon] by ChanServ
03:50 NSGuest-5926 is now known as Kazriko
04:22 Shoukanjuu [~Shoukanju@71.48.224.ns-3853] has quit [Client exited]
04:22 Jeff [JPL@Nightstar-12038.dsl.sndg02.pacbell.net] has quit [Ping Timeout]
04:29 Jeff [Kaline@Nightstar-12038.dsl.sndg02.pacbell.net] has joined #code
06:14 C_tiger [~c_wyz@Nightstar-25761.nycmny.east.verizon.net] has quit [Ping Timeout]
06:27 AnnoDomini [AnnoDomini@Nightstar-29400.neoplus.adsl.tpnet.pl] has joined #Code
06:27 mode/#code [+o AnnoDomini] by ChanServ
06:52 * McMartin patchbombs UQM. 257 files changed!
07:21 C_tiger [~c_wyz@Nightstar-25761.nycmny.east.verizon.net] has joined #code
07:21 mode/#code [+o C_tiger] by ChanServ
07:22 Reiver [~reaverta@Admin.Nightstar.Net] has quit [Ping Timeout]
07:28 Reiver [~reaverta@Admin.Nightstar.Net] has joined #Code
07:28 mode/#code [+o Reiver] by ChanServ
07:31
<@McMartin>
259.
07:32 * McMartin forgot to add a couple of new source files. Oops.
09:20 * MyCatVerbs strangles McM for sins against version control by proxy.
09:21
<@MyCatVerbs>
One of our courseworks here is a group project. A few of our team members don't quite grasp the finer details of version control from time to time.
09:23
<@MyCatVerbs>
Pretty typical in our group to have a minimum of two patches for a single change. Usually "implemented foo" followed by "oh wait, I broke the build while introducing foo", followed by "heheh, foo should actually work now", followed by "whoops, I broke the build again" followed by "oh yeah, I forgot to add a file that I introduced a dependancy to four patches back. Here it is."
09:23
<@MyCatVerbs>
Well, actually, tell a lie. The second in that list is pretty rare. Most of us don't actually notice it when we break a build. Hee.
09:23
<@EvilDarkLord>
Wah, sounds familiar, though I've only worked on a fairly small project thus far.
09:24
<@MyCatVerbs>
EvilDarkLord: at one point, I went through a half-dozen emails and at least (I think) three short phone calls trying to get ahold of a particular JPEG. :)
10:13 You're now known as TheWatcher
10:16 Chalcedon [~Chalcy@203.211.123.ns-2573] has quit [Quit: Leaving]
10:24 gnolam [lenin@Nightstar-10613.8.5.253.static.se.wasadata.net] has joined #Code
10:24 mode/#code [+o gnolam] by ChanServ
11:39 Attilla [~The.Attil@194.72.70.ns-11849] has quit [Quit: <Insert Humorous and/or serious exit message here>]
11:45 Attilla [~The.Attil@194.72.70.ns-11849] has joined #code
11:45 mode/#code [+o Attilla] by ChanServ
12:18 Jeff [Kaline@Nightstar-12038.dsl.sndg02.pacbell.net] has quit [Quit: Leaving]
12:21 JeffL [Kaline@Nightstar-12038.dsl.sndg02.pacbell.net] has joined #code
13:20 AnnoDomini [AnnoDomini@Nightstar-29400.neoplus.adsl.tpnet.pl] has quit [Ping Timeout]
13:28 AnnoDomini [AnnoDomini@Nightstar-28916.neoplus.adsl.tpnet.pl] has joined #Code
13:28 mode/#code [+o AnnoDomini] by ChanServ
16:25
<@McMartin>
MCV: The 259-file change was in fact semantically one change, and by rights should be considered atomic.
16:25
< Vornicus>
What was that one change?
16:25
<@MyCatVerbs>
McMartin: yeah, I wasn't really hatin' on you for doing that. I just wanted to strangle someone because you reminded me of what my classmates are like. :)
16:26
<@McMartin>
Vorn: Well, really, conceptually, it's two lines.
16:26
<@McMartin>
-typedef DWORD RESOURCE;
16:26
<@McMartin>
+typedef const char *RESOURCE;
16:26 * MyCatVerbs blinks.
16:26
<@McMartin>
And ripple effects thereof.
16:26
<@MyCatVerbs>
And that isn't packed off in a seperate .h file somewhere?
16:27
<@MyCatVerbs>
Oh, fair 'nuff.
16:27
<@MyCatVerbs>
Did you have to do all of that by hand?
16:27
<@McMartin>
And no, it's packed off in about 200 .h files~
16:27
<@McMartin>
You may have seen me over the past month or so occasionally laughing maniacally and demanding my army of robots to go forth and destroy?
16:27
<@MyCatVerbs>
Civilised.
16:27
<@McMartin>
That was this.
16:28
<@MyCatVerbs>
Destroying-civilisation, but still civilised.
16:28
<@MyCatVerbs>
McMartin: your army of robots being short scripts written to automate large chunks of this? Or just psychosis brought on by the tedium?
16:28
<@McMartin>
One moderate length script, used to autogenerate a wide variety of useful files
16:29
<@McMartin>
I actually had been working towards this end for some time, and had been revamping the integer-based system to make it easier to switch over.
16:29
<@McMartin>
So I'd done a full-scale replacement of the content indices and the .h files several times along the way
16:29
<@McMartin>
http://sc2.svn.sourceforge.net/viewvc/sc2/trunk/sc2/src/sc2code/igfxres.h?r1=292 6&r2=2962 is representative of the automatable stuff.
16:30
<@MyCatVerbs>
Ah, this was for UQM?
16:30
<@McMartin>
Quite so.
16:30
<@MyCatVerbs>
Ahhhhh.
16:30
<@McMartin>
Actually, that isn't quite representative, because it's also got a pile of constants in it that are never used.
16:30
<@MyCatVerbs>
Was gonna say, doing that wide an s/foo/bar/ over production code would make me soil myself.
16:30
<@McMartin>
That's why I spent a month doing it.
16:31
<@McMartin>
Three days of it was regression testing.
16:31
<@MyCatVerbs>
Doing it over a videogame that you aren't getting paid for would be distinctly less scary (though no less awesome).
16:31
<@McMartin>
And it's not an s///, either
16:31
<@MyCatVerbs>
I know, but conceptually.
16:31
<@McMartin>
It was "merely" a large-scale refactoring
16:32
<@McMartin>
All changes to actual code were done by hand, and mostly involved replacing math on resource numbers with snprintfs.
16:33
<@MyCatVerbs>
Would any of it have been any easier if you'd had libraries handy which would let you directly play with the AST of the whole damn thing?
16:34
<@McMartin>
Nnnot really, in this case
16:34
<@MyCatVerbs>
Just curious.
16:34
<@McMartin>
I had a huge CSV file of all of the representations of each resource
16:34
<@McMartin>
And a modest Python script, that, given that, would whip out the .h files, the .ls2 files and the .rmp file.
16:35
<@McMartin>
And then I gradually consolidated all the .ls2 files, and finally eliminated them in that last step.
16:35
<@McMartin>
The final .ls2 file being this: http://sc2.svn.sourceforge.net/viewvc/sc2/trunk/sc2/content/starcon.ls2?view=mar kup&pathrev=2961
16:35
<@MyCatVerbs>
McMartin: those just specify the resource constants?
16:36
<@McMartin>
So this is really just the culmination of a 4-month project.
16:36
<@McMartin>
Well, it's a three-member bitfield under the hood, so it specifies the members by hand.
16:36
<@McMartin>
The .h treats the bitfield as a single 32-bit integer
16:36
<@McMartin>
As does the code
16:36
<@McMartin>
Which is all kinds of ew, and needs to die, and also doesn't let you play XML-like structure tricks, which is something we'd kind of like available at some point.
16:36
<@MyCatVerbs>
Sounds painful. I presume it was necessary for the CPUs of the time?
16:37
<@McMartin>
No, for those you used an LZW'd binary packed format of same.
16:37
<@McMartin>
And instead of filenames it was the actual file data itself.
16:38
<@MyCatVerbs>
So if I understand you correctly, they didn't really gain much from doing it the way they did?
16:39
<@McMartin>
Not by modern standards, no.
16:39
<@McMartin>
The original files we got were basically a slightly hacked version of the original binary packages, and 2 and a half years ago another coredev member textualized them.
16:39
<@MyCatVerbs>
Anything particular gained by theirs, though?
16:39
<@McMartin>
At the time? Yeah. It let you have an internal filesystem in an era when this was Not Done.
16:40
<@MyCatVerbs>
Oh, I see. So when the game was released, they'd been compiled into some quicker-to-use binary format?
16:40
<@McMartin>
More or less.
16:40
<@McMartin>
We have the original script that specified the compilation, but by our lights the organization was "wrong"
16:40
<@MyCatVerbs>
Gratituous and uneccessary, you mean?
16:41
<@MyCatVerbs>
(And painful, of course.)
16:41
<@McMartin>
No, more that "certain files are in the wrong directories"
16:41
<@McMartin>
Anyway, what this really paves the way for -- besides not having as many fragile inpenetrable files in content/ -- is the ability to start shoving game constants into the resource map too. We're no longer restricted to filenames.
16:41
<@McMartin>
Well.
16:42
<@McMartin>
We still are currently restricted to filenames, but there's no longer any reason for this to be so.
16:43
<@McMartin>
Other than "we haven't implemented the necessary additional variant types"
16:45
<@McMartin>
The only real design error, I'd say, was that the API was generic (LoadResource), but the individual resource names encoded a type within them (as part of the bitfield).
16:46
<@McMartin>
We modified that to bring it into line with the API. Once we put in the proper variant types, LoadResource will hand you back a Resource that announces its type and can be accessed that way.
16:47
<@McMartin>
But my next project is to retire the resource types that are no longer actually used.
17:02
<@McMartin>
Oh, and I never actually answered your question about AST transformers.
17:03
<@McMartin>
"Those wouldn't have helped here because the code was properly pre-segregated into 'stuff humans deal with' and 'stuff that can be safely and easily autogenerated from scratch each time'"
17:03
<@McMartin>
And now, off to lab. To my irritation, I have to be there early enough today that I can't skip the morning rush.
17:04
<@McMartin>
Oh, well, actually, before I go
17:05
<@McMartin>
Most of the really entertaining bugs came from the step where I was consolidating all the resources into a single index (the original code had separate ones for each ship and conversation as well as a master index, and destructively swapped them out. Yikes.)
17:05
<@McMartin>
My favorite was this one. http://www.stanford.edu/~mcmartin/misc/oops.png
17:06
<@McMartin>
Not Your Usual Earthlings
17:06 You're now known as TheWatcher[afk]
17:07
< Vornicus>
hee
18:28 Pi-2 is now known as Pi
18:36
<@McMartin>
High on my wish list for 10.5.3: a version of tar that's either aware of or is capable of ignoring the properties fork
18:40
< Vornicus>
you mean the resource fork?
18:42
<@McMartin>
I *actually mean, for a file foo.txt, the sometimes-completely-invisible-but-sometimes-not file ._foo.txt
18:42
<@McMartin>
So, for instance, ls doesn't see it.
18:43
<@McMartin>
cp and rm don't see it
18:43
<@McMartin>
tar sees it.
18:43
<@McMartin>
This is obnoxious.
18:43
<@McMartin>
It means I have to scp the directory over (which doesn't copy the ._whatever files!) and then tar that on a different machine.
18:44
< Vornicus>
I don't know what drugs tar is on, exactly
18:44
< Vornicus>
Usually they're called file.foo/rsrc
18:45
<@McMartin>
OK, so those aren't an issue.
18:46
<@McMartin>
And I mean key-value properties.
18:46
<@McMartin>
You can make ls show them with -@ in Terminal.app
18:46
<@McMartin>
michaelmartin$ ls -l@ CS343\ PQL\ Slides.pdf
18:46
<@McMartin>
-rw-r--r--@ 1 michaelmartin staff 112584 Apr 8 19:58 CS343 PQL Slides.pdf com.apple.FinderInfo 32
18:47
< Vornicus>
weird
18:47
<@McMartin>
That FinderInfo file is in a ._CS343 PQL Slides.pdf file.
18:48
<@McMartin>
Which ls doesn't expose, can't be referred to, and which will be bundled into tar files and cannot be removed.
18:48
< Vornicus>
latest 10.4 doesn't have the @ option.
18:48
<@McMartin>
Oh yeah, rm can't annihilate it either.
18:51
< Vornicus>
OSX does some really wacky htings in the filesystem, and I don't relaly know why.
18:52
<@McMartin>
To implement Classic MacOS capabilities on top of POSIX, I've always figured.
18:52 You're now known as TheWatcher
18:52
<@McMartin>
Anyway, time to go to class for the first time in... three years or so.
18:52
< Vornicus>
Well, mostly, I mean, stuff that would be more amenable to being put in ~/Library/Application Support/Finder
18:54
< Vornicus>
.DS_Store for instance
18:59
<@MyCatVerbs>
McMartin: have fun! (Also, seriously, you should attend your damn lectures. ;)
19:00
<@McMartin>
(I'm *giving* it)
19:00 AnnoDomini is now known as Pete
19:01
<@C_tiger>
McM, ok, then you shouldn't attend.
19:43
<@MyCatVerbs>
McMartin: hahahahha. In that case, you should definately attend your damn lectures. You'll end up being accosted by hordes of dewy-eyed undergrads all over campus, otherwise.
20:30 Chalcedon [~Chalcy@Nightstar-1659.ue.woosh.co.nz] has joined #code
20:30 mode/#code [+o Chalcedon] by ChanServ
21:15 jeffl_ [~jeffl@Nightstar-17127.dynamic.ucsd.edu] has joined #code
21:15
< jeffl_>
Fun for the whole family. The TA is saying that the "return to user mode" command should not be priviledged, and the students are showing the parts of the book where the book says it should.
21:35 Chalcedon is now known as ChalcyChores
21:40 jeffl_ [~jeffl@Nightstar-17127.dynamic.ucsd.edu] has quit [Client exited]
21:40 AFKSkull [~none@Nightstar-7066.dyn.optonline.net] has joined #code
21:41 ASCIISkull [~none@Nightstar-7066.dyn.optonline.net] has quit [Ping Timeout]
22:21 Pete is now known as AnnoDomini
22:23 AnnoDomini [AnnoDomini@Nightstar-28916.neoplus.adsl.tpnet.pl] has quit [Quit: Do not burn the candle at both ends, as it leads to the life of a hairdresser.]
22:32 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Operation timed out]
22:32 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code
22:32 mode/#code [+o ToxicFrog] by ChanServ
22:41 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Operation timed out]
22:42 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code
22:42 mode/#code [+o ToxicFrog] by ChanServ
22:53 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Operation timed out]
22:53 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code
22:53 mode/#code [+o ToxicFrog] by ChanServ
23:57 Jeff [~jeffl@Nightstar-17127.dynamic.ucsd.edu] has joined #code
23:57
< Jeff>
Anyone who knows stuff about OSes on?
--- Log closed Thu Apr 10 00:00:12 2008
code logs -> 2008 -> Wed, 09 Apr 2008< code.20080408.log - code.20080410.log >