--- Log opened Sun Mar 16 00:00:15 2008 |
00:25 | | Thaqui [~Thaqui@222.154.187.ns-2601] has joined #code |
00:25 | | mode/#code [+o Thaqui] by ChanServ |
01:57 | | GeekSoldier|pub is now known as GeekSoldier |
02:07 | | GeekSoldier is now known as GeekSoldier|bed |
02:31 | | Netsplit DeepThought.NY.US.Nightstar.Net <-> Blargh.CA.US.Nightstar.Net quits: Kazriko |
02:32 | | Netsplit over, joins: Kazriko |
02:56 | <@MyCatVerbs> | ToxicFrog: I've seen that done as part of some project's build system once, but I can't for the life of me remember which. |
03:06 | <@MyCatVerbs> | ToxicFrog: ahhhh, here we go. |
03:07 | <@MyCatVerbs> | ToxicFrog: GHC's maintainers do it quite often for building many different revisions 'n' stuff. |
03:07 | <@MyCatVerbs> | ToxicFrog: the program you want is lndir |
03:07 | | * Vornicus wonders if he's missing half the conversation here. |
03:08 | <@MyCatVerbs> | ToxicFrog: uses symlinks rather than hardlinks, but hopefully that's not the end of the world for you? |
03:09 | <@MyCatVerbs> | Vornicus: a few hours back: <@ToxicFrog> Anyone know if there's an existing command to hardlink an entire directory tree? |
03:09 | < Vornicus> | Hardlinks are preferable in this case, I believe. |
03:09 | < Vornicus> | At least partly because I don't think Windows/WINE understands symlinks. |
03:10 | <@MyCatVerbs> | Oh gods I hope you're kidding. |
03:10 | <@MyCatVerbs> | Oh well. Can do it by hand anyway, using a scary pipeline. |
03:12 | <@ToxicFrog> | Windows does not understand symlinks. |
03:12 | <@ToxicFrog> | Wine does. |
03:13 | <@ToxicFrog> | As it happens, however, this script runs on linux. |
03:13 | < Vornicus> | Why are hardlinks preferred anyway? |
03:13 | <@ToxicFrog> | And while I may access the generated files over SMB, Samba properly disguises symlinks. |
03:14 | <@ToxicFrog> | So that when it obliterates .cache/, raw/ continues to work |
03:14 | <@MyCatVerbs> | cd targetdir && (cd sourcedir && find . -type d -print0) | xargs -0 mkdir -p && find . -type f | while read x; do ln sourcedir/$x targetdir/$x ; done # yuuuuuck! |
03:14 | <@ToxicFrog> | Anyways, it's a nonissue, because I realized I couldn't come up with a use case where this was actually pointful. |
03:15 | <@MyCatVerbs> | Oh and that "find . -type f" should be: (cd targetdir && find . -type f) |
03:16 | <@MyCatVerbs> | Goodness only knows how many other errors I've made there. |
03:16 | <@MyCatVerbs> | Error number one was, naturally, attempting to write such a thing in the first place. |
03:17 | <@ToxicFrog> | I'd probably just go (cd targetdir && find) | lines mkdir -p $(dirname $line); ln targetdir/$line $line; senil |
03:18 | <@ToxicFrog> | Except s/targetdir/srcdir |
03:18 | <@MyCatVerbs> | Where does lines/senil come from? I haven't seen that before. |
03:19 | <@MyCatVerbs> | Was that in the original Bourne shell by any chance? |
03:20 | <@MyCatVerbs> | Seems not. Heck, neither bash nor zsh know a thing about it. |
03:20 | <@ToxicFrog> | It's a custom alias. |
03:21 | <@ToxicFrog> | alias lines='( while read line; do set -- $line;' |
03:21 | <@ToxicFrog> | alias senil='done; )' |
03:21 | <@ToxicFrog> | You use it like: command | lines <code block>; senil |
03:22 | <@ToxicFrog> | It iterates over all lines of output from the command; within the code block, $line is the complete line and $1..$n are the positional parameters as they would be parsed were $line passed as the arguments to a bash script or function. |
03:24 | <@MyCatVerbs> | Oh nice! |
03:24 | <@MyCatVerbs> | Does it cope nicely at all with spaces in filenames? |
03:24 | <@ToxicFrog> | I got sick of doing foo | xargs -n1 -d\\n -I__ARGS__ <hideous stuff here> |
03:24 | <@ToxicFrog> | How do you mean? |
03:25 | <@MyCatVerbs> | touch Tom\ Dick\ harry; find . -type f -name "Tom*" | lines echo "foo" > $line; senil |
03:26 | <@ToxicFrog> | That's down to the shell |
03:26 | <@ToxicFrog> | Quote $line if you |
03:26 | <@ToxicFrog> | re worried: |
03:26 | <@ToxicFrog> | touch Tom\ Dick\ harry; find . -type f -name "Tom*" | lines echo "foo" > "$line"; senil |
03:26 | <@MyCatVerbs> | Wautm ecgi "fii" > "$line", sorry. Damn sh. |
03:26 | | * MyCatVerbs blins. |
03:26 | | * MyCatVerbs blinks again. |
03:27 | <@MyCatVerbs> | Maybe I should look at the screen once in a while while I type. |
03:27 | <@ToxicFrog> | Like I said - it splits on newlines; $line is the complete line, and $1... are the positional parameters |
03:27 | <@ToxicFrog> | In the above example, $line would be 'Tom Dick harry' (without the quotes), $1 would be Tom, $2 would be Dick, and $3 would be harry |
03:28 | <@MyCatVerbs> | Is that what "set -- $line" does there? |
03:29 | <@ToxicFrog> | Yep. |
03:32 | <@MyCatVerbs> | Bourne packs more features than I will ever muster the patience to learn about. >_> |
03:44 | <@ToxicFrog> | It's worth learning. |
03:45 | <@ToxicFrog> | Consider for example this alias, and the various downloader scripts I've written in it - and I'm still just a n00b. |
03:49 | | Thaqui [~Thaqui@222.154.187.ns-2601] has left #code [Leaving] |
07:08 | | Vornicus is now known as Vornicus-Latens |
07:35 | | GeekSoldier|bed is now known as GeekSoldier |
08:10 | | GeekSoldier [~Rob@Nightstar-8988.dip.t-dialin.net] has quit [Ping Timeout] |
08:11 | | AnnoDomini [AnnoDomini@83.21.45.ns-4629] has joined #Code |
08:11 | | mode/#code [+o AnnoDomini] by ChanServ |
08:16 | | GeekSoldier [~Rob@Nightstar-9482.dip.t-dialin.net] has joined #code |
12:20 | | AnnoDomini [AnnoDomini@83.21.45.ns-4629] has quit [Ping Timeout] |
12:28 | | AnnoDomini [AnnoDomini@83.21.54.ns-26803] has joined #Code |
12:28 | | mode/#code [+o AnnoDomini] by ChanServ |
12:43 | | gnolam [lenin@85.8.5.ns-20483] has joined #Code |
12:43 | | mode/#code [+o gnolam] by ChanServ |
13:30 | <@AnnoDomini> | Hm. Where in WinXP could I modify how the system renames the copy of a file when copying to the same directory? I mean, I have 'file.txt', Ctrl+C then Ctrl+V, and I get 'Copy of file.txt'. I'd want, for instance, for it to be 'file c.txt' or something. Any way to do that? |
13:39 | <@gnolam> | Wouldn't it be easier to just create your own shell extension? |
13:41 | | * AnnoDomini shrugs, doesn't know much about this. |
13:54 | <@ToxicFrog> | It's probably somewhere in the registry, if anywhere, but I don't think it knows how to do incrementing counters. |
13:55 | <@ToxicFrog> | Eg, if you then copy the copy, you don't get "copy 2 of file.txt", you get "copy of copy of file.txt" |
13:55 | <@ToxicFrog> | So even if you can get it to do that, subsequent copies will probably result in "file c c.txt", etc |
13:56 | <@AnnoDomini> | It goes "Copy of file.txt", and then "Copy (n) of file.txt" where n>=2. |
13:57 | <@ToxicFrog> | Interesting. Mine doesn't. |
13:57 | <@ToxicFrog> | Or didn't, anyways. |
13:57 | <@ToxicFrog> | I don't think I've actually done it on XP yet~ |
14:15 | | gnolam [lenin@85.8.5.ns-20483] has quit [Ping Timeout] |
14:21 | | Xiphias [~Ameroth@Nightstar-13025.wlms-broadband.com] has joined #code |
14:22 | | gnolam [lenin@85.8.5.ns-20483] has joined #Code |
14:22 | | mode/#code [+o gnolam] by ChanServ |
14:29 | <@AnnoDomini> | http://pastie.caboo.se/166356 |
14:31 | <@AnnoDomini> | (Translated from Polish, FYI.) |
15:00 | <@AnnoDomini> | Anyway. Have any of your run into a problem with phpBB2, where clicking the goToNewPost link will take you to the new post the first time, but for a long time (until reboot, I think), it will lead to the first new post that it's taken you to previously, regardless of whether there were newer posts? |
15:01 | <@AnnoDomini> | Funnily enough, it only happens to me on publicly available free forum providers, like getPbHBB.com or fora.pl. |
15:03 | <@AnnoDomini> | (This happens to me on both Firefox and Opera.) |
15:49 | < Attilla> | Hmm. I have encountered that problem recently especially noted because the previous post was on the previous page. |
15:49 | | * AnnoDomini nods. |
16:01 | | gnolam [lenin@85.8.5.ns-20483] has quit [Ping Timeout] |
16:02 | | gnolam [lenin@85.8.5.ns-20483] has joined #Code |
16:02 | | mode/#code [+o gnolam] by ChanServ |
16:02 | <@AnnoDomini> | * gnolam earns 10XP for killing the packet. |
16:08 | | gnolam [lenin@85.8.5.ns-20483] has quit [Ping Timeout] |
16:08 | | gnolam [lenin@85.8.5.ns-20483] has joined #Code |
16:08 | | mode/#code [+o gnolam] by ChanServ |
16:25 | | GeekSoldier is now known as GeekSoldier|gone |
16:30 | | * AnnoDomini ponders. "What is a graphics card driver composed of, functionally?" |
16:47 | < Kazriko> | these days, lots of tiny floating point processors. |
16:48 | <@AnnoDomini> | ...? Isn't a driver a program that deals with a graphics card or something? |
16:48 | < Kazriko> | a driver deals with any hardware device. |
16:49 | < Kazriko> | Graphics cards also have RAMDACs, a digital to analog converter that reads RAM then outputs equivalent analog signals. |
16:50 | < Kazriko> | in fact, the barest minimum to be a graphics card in the old days would be a frame buffer memory and a ramdac. At least before 2d accel became popular. |
16:50 | <@AnnoDomini> | Okay, I suppose, though I expected something a little more tied to the subject of coding programs in assembler to handle displaying graphics without using BIOS/DOS interrupts. |
16:51 | < Kazriko> | You would likely need to get ahold of the manual for whichever graphics card, as I don't think there's a standard that doesn't use some sort of bios call. VESA uses bios, i think? i could be wrong. |
16:52 | < Kazriko> | Anyway, the interface to it used to consist of its ram mapped to a block of memory, but I'm not sure if that's the case anymore with pcie and agp. |
16:52 | <@AnnoDomini> | Perhaps I should explain. I'm trying to learn the answers to questions written in a PDF for an External Devices class. |
16:52 | < Kazriko> | you might need to interface with the northbridge chip to talk to the graphics card, but again, i've not gone in depth on modern tech cards. |
16:53 | <@AnnoDomini> | There is already a sample program for putting a pixel in VGA mode without using interrupts. |
16:53 | | gnolam [lenin@85.8.5.ns-20483] has quit [Ping Timeout] |
16:53 | < Kazriko> | ah, so straight old-fashioned IBM VGA? |
16:53 | <@AnnoDomini> | Yeah. |
16:54 | < Kazriko> | Man, it's been ages since I played with vga. |
16:55 | < Kazriko> | since it was mostly superceded by vesa for generic graphics. |
16:55 | <@ToxicFrog> | Kazriko: the driver is composed of a bunch of functions that implement system calls and talk directly to the card hardware. |
16:55 | <@ToxicFrog> | The GPU is what's composed of floating point processors. |
16:55 | < Kazriko> | That's what I said... |
16:55 | < Kazriko> | Ah, i missed that he said driver. |
16:55 | <@ToxicFrog> | No, you said the driver is composed of floating point processors. |
16:56 | | * Kazriko tends to over words sometimes when reading. |
16:56 | <@ToxicFrog> | I also note that modern graphics cards don't have RAMDACs, because DVI is digital, but we aren't talking modern here. |
16:57 | < Kazriko> | if that's the case, then there's nearly no such thing as a modern graphics card. nearly all of them, even if they have DVI ports, also have VGA signal outputs. |
16:58 | < Kazriko> | (Often hidden in one of the DVI ports, requiring a converter dongle to access.) |
16:58 | <@ToxicFrog> | Assume I'm talking about graphics cards a few years hence when they no longer come with VGA support as standard, then~ |
16:59 | < Kazriko> | I think most of them can still be run in VGA mode, but VGA mode is limited to 640x480, which is why VESA is more commonly used. |
17:00 | <@ToxicFrog> | Most of them - including, AFAICT, all nVidia and ATI cards released in the past three or four years at least - claim to support VGA but do not properly do so, nor do they properly support 8-bit VESA modes. |
17:00 | < Kazriko> | anyway, must go, looking at a house to buy. |
17:01 | | gnolam [lenin@85.8.5.ns-20483] has joined #Code |
17:01 | | mode/#code [+o gnolam] by ChanServ |
17:41 | | Xiphias [~Ameroth@Nightstar-13025.wlms-broadband.com] has quit [Quit: I was never gone] |
17:50 | | Vornicus-Latens is now known as Vornicus |
18:44 | | * C_tiger stabs this Ruby on Rails tutorial. |
18:45 | < C_tiger> | While it's great and all that you KEEP TELLING ME that RoR can generate all this fancy code for me... I don't have a f***ing clue how to actually make it do what I want and not make this patently useless web doohicky that you're teaching. |
19:57 | | GeekSoldier|gone is now known as GeekSoldier |
21:01 | < C_tiger> | Ugh, does anyone know Ruby on Rails? |
21:03 | < Vornicus> | Chalain works with it regularly. |
21:03 | | * ToxicFrog vomits black, acidic bile from his eye sockets. |
21:03 | < Vornicus> | I don't know how he can stand it. |
21:03 | <@ToxicFrog> | (I don't) |
21:03 | < Vornicus> | Chalain! |
21:04 | | * Vornicus throws things at chalain until he wakes up. |
21:05 | | * Vornicus forgets the address to email chalain's ass. |
21:05 | | * jerith does Ruby, but knows very little rails. |
21:05 | <@jerith> | C_tiger: Rails is great if you have a standard db-backed CRUD app. |
21:06 | < C_tiger> | Ugh, I just want to make an easy website with a database linky. |
21:06 | <@jerith> | Anything other than that and it's a pain. |
21:06 | < C_tiger> | Without actually learning how to code :P |
21:06 | <@jerith> | Ah. You see, there's your problem. |
21:07 | < C_tiger> | php hurts my brainmeats... |
21:07 | <@ToxicFrog> | Ruby is probably not the best language to learn how to code in, either~ |
21:07 | | * Vornicus recommends Python, with Pylons and SQLAlchemy. |
21:07 | <@ToxicFrog> | You might want to check out Kepler (lua web framework), or...Vorn, what's the name of that Python web framework I recall someone mentioning ages ago? |
21:07 | < C_tiger> | I mean I know how to CODE, I don't know how to make pretty HTML thingys. |
21:08 | <@ToxicFrog> | Oh. |
21:08 | <@jerith> | Ah. |
21:08 | <@ToxicFrog> | Not much for that other than actually learning how to do it, I'm afraid. |
21:08 | <@jerith> | If you want a CMS, Drupal's the way to go. |
21:08 | <@jerith> | Otherwise probably Pylons. |
21:09 | <@jerith> | I'm rather partial to Twisted/Nevow, but that has a nasty learning curve. |
21:09 | < C_tiger> | TF: re Ruby... yes... it hurts my sensible widdle eyesockets too. |
21:10 | < C_tiger> | But it seems to be easy enough to copy-paste-style-code. |
21:10 | < C_tiger> | or I thought. |
21:10 | < C_tiger> | but I guess not. |
21:12 | < C_tiger> | Ok, does anyone have a "idiot's guide to pylons?" |
21:12 | < C_tiger> | I do kinda want something where all the work is done by someone else. |
21:13 | <@jerith> | I think that's called "lazy". |
21:13 | < C_tiger> | Of the: "Here's my database structure, now you tell me how to write an HTML template that generates pretty pages... mix, serve... for additionally flavors, stick codebits here, here and here" |
21:14 | < C_tiger> | jerith: I'm lazy. |
21:14 | < C_tiger> | and stupid |
21:17 | <@jerith> | http://coghead.com/ <-- They might do what you need. |
21:18 | <@jerith> | (I posted that in the wrong place. :-( |
21:18 | < C_tiger> | Weirdly, I didn't notice at first. |
21:19 | < C_tiger> | Sadly, I have my own servers. |
21:19 | < C_tiger> | Or at least someone else has servers supposedly that I can just stick my stuff on once it's done. |
21:22 | | * C_tiger debates... start over with pylons (sigh) or fiddle more with Rails. |
21:25 | <@jerith> | To do anything with rails, you need to grok MVC. |
21:25 | <@jerith> | The model is pretty much the db and a data validation layer. |
21:26 | <@jerith> | The view is an html/ruby (I forget what they call it) template thing. |
21:26 | <@jerith> | The controller is the business logic. |
21:26 | < C_tiger> | rhtml |
21:29 | < C_tiger> | Yeah, it seems so straightforward... but I'm currently trying to figure out how to authenticate users... there's a whole plugin for that but the /through the magic of Rails/ part where I just click a button and stuff happens... doesn't. |
21:30 | <@jerith> | That is Rails' biggest strength and greatest failing. |
21:30 | <@jerith> | Magic. |
21:30 | < C_tiger> | I've noticed. |
21:30 | <@jerith> | And it's the major reason I prefer to roll my own than use Rails. |
21:30 | <@McMartin> | My understanding of Rails is that it's totally awesome if you want to do exactly what the designers wanted. |
21:31 | <@McMartin> | And their name mangling is so many kinds of evil it's one reason I've been avoiding the entire *language*. |
21:31 | < C_tiger> | McM, see that's my problem... I think I want to do exactly what the designers wanted. |
21:31 | <@ToxicFrog> | Possibly you want to do exactly what they said they wanted, but not what they actually wanted? |
21:32 | < C_tiger> | I mean it's such a simple idea: one user db, one data db. Users can add data to the data DB, users can see all the data but only edit the data they added. |
21:33 | < C_tiger> | I can figure out all the other stuff like making it display just the columns I want and searching and stuff like that. |
22:05 | | JeffL [JPL@Nightstar-12251.dsl.sndg02.pacbell.net] has joined #code |
22:05 | < JeffL> | Hey, what languages allow you to pass a function to a function? |
22:06 | < Vornicus> | Lots of them. |
22:07 | < Vornicus> | Actually I'm hard pressed to think of a language that doesn't, somehow. |
22:08 | < Vornicus> | ...I guess Cobol doesn't, and some languages without a sense of functions don't either. |
22:08 | < JeffL> | You can do that in C? |
22:08 | < JeffL> | Huh. |
22:08 | <@gnolam> | Yep. Function pointers. |
22:09 | < Vornicus> | Yeah. In C it's a pain because you have to declare the entire signature of the function you want to pass in the declaration of the function you're passing it to. |
22:10 | <@ToxicFrog> | Java doesn't, although you can get the same effect by creating and passing around Runnables |
22:13 | <@ToxicFrog> | It's less useful in C, I note, because you don't anonymous functions, closures, nested functions, etc |
22:14 | < JeffL> | What I'm looking to do, in Java, I suppose, is create an array of modifications to a function, sort of like temporary decorators. |
22:19 | <@ToxicFrog> | ...Decorators in Java. An interesting problem. |
22:19 | < JeffL> | Not just decorators. Temporary decorators. |
22:20 | <@ToxicFrog> | At that point I suspect the answer is "rethink your design" |
22:20 | < JeffL> | Who here's played System Shock 2? I'm going to use this as an example. |
22:20 | < JeffL> | I know how to do it, I'm just trying to figure out how to do it efficiently. |
22:21 | <@McMartin> | Note that C's idea of "passing a function to a function" ends up losing a lot of the Evil Tricks you can do with it, because the function does not get to change its "defined environment" |
22:21 | <@McMartin> | Java's Runnable trick makes it explicit by adding fields to the Runnable and creating instances of it. |
22:22 | <@McMartin> | But there's no way to write make-adder in C directly, for instance. |
22:22 | <@McMartin> | (defun make-adder (x) (lambda (y) (+ x y))) |
22:22 | <@McMartin> | (make-adder 3) and (make-adder 5) return functions that actually execute the same code but use different stacks. |
22:23 | < JeffL> | What I have is, for the outline of an RPG program I'm creating, an "attack" function. What I want to do is when something in a character's array of "toggles" activates, that "toggle" can mutate what the attack function does, and when it deactivates, the attack function goes back to normal. |
22:23 | <@McMartin> | That's probably doable with pure function pointers, yeah, but you probably want a Chain of Responsibility there. |
22:23 | < JeffL> | But I don't want to add half a billion if(toggle1) elsif(toggle2) ... elsif(togglen) checks to every function. |
22:23 | <@McMartin> | Right. |
22:23 | <@McMartin> | I'd say you have a list of functions. *all* of them run. |
22:23 | <@McMartin> | First the default, and then each toggle has a modifier that it runs afterwards. |
22:24 | <@McMartin> | That way you don't need to worry about interactions as long as your write the modifiers appropriately (relative changes instead of reassignment so things stack instead of override, etc.) |
22:24 | <@McMartin> | Turning a toggle on adds it to the list, turning it off removes it. |
22:24 | < JeffL> | Okay. |
22:24 | <@McMartin> | (Alternately, all such functions are always on and they just check if (toggle1) individually) |
22:25 | <@McMartin> | That said, you still end up writing all the same amount of code. |
22:25 | <@McMartin> | It's just that it's better split up this way. |
22:25 | <@McMartin> | And adding new toggles is easier. |
22:25 | <@McMartin> | If there's a finite number of toggles and they're fixed then you can just have it be an array instead of a list and turn them on or off with a bitvector. |
22:26 | < JeffL> | Well, here's the deal- each character has n toggles. But they're usually different toggles. |
22:27 | < JeffL> | And I don't want to have to write an entirely new class that inherits from .character for each individual character. |
22:27 | <@McMartin> | Wait, is this C++? |
22:27 | <@ToxicFrog> | JAva, I thought. |
22:27 | < JeffL> | ... Java, I'm afraid. |
22:27 | <@McMartin> | Oh, even easer. |
22:27 | <@McMartin> | Yeah, in that case, use lists. |
22:28 | < JeffL> | I would do it in C++, but I never mastered graphics in that language. |
22:28 | <@ToxicFrog> | a Mutator isn't a class method; it's a seperate object, a Runnable |
22:28 | <@ToxicFrog> | The character has a list of Mutators which apply |
22:29 | <@McMartin> | Then you have the last step of each Action be for (Mutator m : actor.mutators) { m.run(); } |
22:30 | < JeffL> | Can one of you tell me what a Runnable is, because I'm a complete and total idiot? |
22:31 | <@McMartin> | Runnable is a standard interface. |
22:31 | <@McMartin> | It defines the method void run (). |
22:31 | <@McMartin> | One moment while I find the API page |
22:32 | <@McMartin> | http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runnable.html |
22:32 | | AnnoDomini [AnnoDomini@83.21.54.ns-26803] has quit [Quit: Nobody makes jokes in base 13.] |
22:32 | <@McMartin> | "The general contract of the method run is that it may take any action whatsoever." |
22:33 | <@McMartin> | To use it, you define the class as "class Mutator implements Runnable" and ensure that it defines void run(). |
22:34 | <@McMartin> | If you don't want a default mutation, you can eiter define it to do nothing (so that new Mutator() is legal but pointless) or make it an abstract class and define run() as an abstract method. |
22:34 | <@McMartin> | (Have you guys gotten into interfaces?) |
22:35 | < JeffL> | (I know some about interfaces, but very little, really.) |
22:35 | < JeffL> | (We're big on theory here, not so big on code.) |
22:35 | <@McMartin> | (For now consider them like superclasses that don't include any behavior, and just demand that you include the methods.) |
22:36 | <@McMartin> | (It's a way around the fact that multiple inheritance is full of poisonous spiders) |
22:36 | < JeffL> | (Yes. I've seen enough to know that it's sorrow.) |
22:37 | < JeffL> | On another topic, that of a final that's way too soon... do any of you know what ant and CruiseControl do, other than "cause no end of pain for my group project"? |
22:37 | | GeekSoldier is now known as GeekSoldier|bed |
22:37 | <@McMartin> | (Interfaces are a way to get one of the good parts - the ability to cast otherwise unrelated objects to a type for clients to deal with) |
22:38 | <@McMartin> | ant is a project-builder like make, but with more XML and fewer bits of invisible significant whitespace, optimized for Java builds. |
22:38 | <@McMartin> | On poorly-configured machines, make can be slower than ant by several hundred times. |
22:38 | <@McMartin> | I've never heard of CruiseControl. |
22:38 | < JeffL> | CruiseControl was some sort of constantly-check-the-build soft that didn't include X11 support. |
22:39 | < JeffL> | So if someone included a test that didn't mock one of 50% of the classes we were using, they ran it and all the tests passed, they check in and leave, and CruiseControl starts spamming us every 15 minutes with a "BUILD FAILED" email. |
22:39 | <@McMartin> | That sounds like it's misconfigured. =P |
22:40 | <@McMartin> | Continuous build shouldn't mean "even in the absence of changes" |
22:41 | <@McMartin> | That said, the Cruise Control home page seems to indicate that it's Swing-based, which *ought* to run in X11. |
22:41 | < JeffL> | Oh, it was heavily misconfigured, because our "instructor" - apparently not even a professor - was flatlined. |
22:42 | <@McMartin> | Google handed me http://cc-config.sourceforge.net/ |
22:42 | <@McMartin> | But yeah. Ant, at least, is a Very Important Part of any significant Java project. |
22:43 | <@McMartin> | Though past a certain point you're just copying over a template that works and changing a small number of the names. |
22:44 | <@McMartin> | http://blorple.svn.sourceforge.net/viewvc/blorple/build.xml?revision=31&view=mar kup for instance, has most of its trickery involved in automatically building OS X .app bundles. |
22:44 | <@McMartin> | Lines 18-26 are the only "real" ones. |
22:44 | <@McMartin> | Maybe also the JAR deployer. |
22:45 | <@McMartin> | Anyway, this cafe is closing, so I'll be back at 4 or so. |
22:46 | < JeffL> | Bye. |
23:00 | <@McMartin> | Back. |
23:30 | | Thaqui [~Thaqui@Nightstar-123.jetstream.xtra.co.nz] has joined #code |
23:30 | | mode/#code [+o Thaqui] by ChanServ |
--- Log closed Mon Mar 17 00:00:25 2008 |