--- Log opened Fri Jan 15 00:00:09 2010 |
00:00 | | AbuDhabi [annodomini@Nightstar-5a2d1dbb.adsl.tpnet.pl] has quit [[NS] Quit: It's time.] |
00:35 | <@ToxicFrog> | ...good question |
01:41 | | Derakon[AFK] is now known as Derakon |
01:41 | <@Derakon> | AbuDhabi: at a guess, you ran into the columns/rows issue. |
01:41 | <@Derakon> | Oh wait, he left. |
01:49 | < celticminstrel> | Why is the columns/rows issue even an issue? |
01:52 | <@McMartin> | Many functions take their arguments in the form (y, x). |
01:52 | < celticminstrel> | ...why would they do that? o.O |
01:53 | | Zedidiah [zag@Nightstar-d0088b95.or.comcast.net] has quit [Ping timeout: 121 seconds] |
01:54 | <@Derakon> | Because intuitively you think (x, y) => (row, column). |
01:54 | <@Derakon> | But in fact it's the reverse. |
01:55 | < celticminstrel> | Oh, right. Makes sense now. |
01:55 | <@Derakon> | Alternatively, if you want to optimize the "read across" use case instead of the "read down" use case, going row, then column allows you to put all of the values on one row in adjacent memory, which speeds up lookup slightly. |
01:58 | <@McMartin> | Also helps for currying if you've got it. |
01:58 | < celticminstrel> | I don't recall what that is. |
01:59 | <@McMartin> | It's a trick in languages that have first-class functions. |
01:59 | <@Derakon> | Currying is where you specify one argument of a function, and then pass the half-invoked function to something else to fill in the remaining arguments. |
01:59 | < celticminstrel> | Oh, like boost::bind? |
01:59 | <@McMartin> | Basically, if you have a function "add x y" that computes x+y, then "add x" is also a function that takes one argument. |
02:00 | <@McMartin> | Boost-bind gets some of it, but I don't think it will allow the full scale of state-holding (though it might if it also requires, like, shared_ptr or something) |
02:00 | <@McMartin> | You can use currying and cunning returning of other functions to essentially implement a complete OO system all on its own. |
02:04 | <@Derakon> | McM: well, isn't that why Python functions all accept the object being operated on as the first argument? |
02:04 | <@Derakon> | I mean, you can do MyClass::doSomething(someRandomObject) if you want to. |
02:04 | <@McMartin> | Well, it's more that it hides that binding. |
02:05 | <@McMartin> | The main thing is that boost::bind increases the number of steps you need while clsasical currying decreases them, but I'm not sure how optimization plays into either case. |
02:08 | <@McMartin> | Or rather, Python *doesn't* hide the binding while C++ and friends do. |
02:08 | <@Derakon> | And, having had to read C++ code recently, you have no idea how much nicer it is when the source of everything you use is clear. |
02:09 | | * Derakon shakes his fist at #include in particular. |
02:09 | < Namegduf> | Header files are bad. |
02:09 | < celticminstrel> | Why? |
02:09 | < Namegduf> | Because they contain redundant information. |
02:10 | < celticminstrel> | ...? |
02:10 | <@Derakon> | Namegduf: no, header files are fine. The lack of "this variable belongs to the current object being operated on" is bad. |
02:10 | <@Derakon> | The redundancy I just consider to be a language wart. |
02:10 | < Namegduf> | A *bad* language wart. |
02:10 | < celticminstrel> | What redundant information? |
02:10 | <@Derakon> | Celtic: mostly the forward function declarations. |
02:10 | < Namegduf> | celticminstrel: Declarations duplicating the information in the definitions. |
02:11 | <@Derakon> | I would consider a bad language wart to be one that makes the language harder to use, as opposed to just more tedious. |
02:11 | <@Derakon> | So it's a bad wart that when you #include a library, all of its contents are shoved into your local namespace (unless they have a namespace of their own). |
02:11 | < celticminstrel> | Oh, true, I guess those are a little redundant. |
02:11 | < Namegduf> | Duplication (in separate files) introduces additional bookkeeping work, and the potential for error in it. |
02:12 | < Namegduf> | Packages are better. |
02:12 | <@Derakon> | Which error is promptly caught by any decent compiler. |
02:12 | < Namegduf> | And then must be fixed. |
02:13 | <@Derakon> | Most errors have to be fixed, yes. :) |
02:13 | < Namegduf> | Right, most do. |
02:13 | < Namegduf> | I'm not sure why something that increases bookkeeping work and leads to errors which must be fixed don't make the language harder to use. |
02:13 | < Namegduf> | When we have the option to just entirely eliminate it. |
02:13 | < Namegduf> | *doesn't |
02:14 | | * Namegduf views them as one of the anachronisms of C/C++ |
02:14 | <@Derakon> | Because they aren't likely to result in any particular confusion when you're developing. |
02:14 | < Namegduf> | They don't ruin the language, no, but they're bad. |
02:14 | <@Derakon> | Well, all warts are bad by that definition. |
02:14 | < PinkFreud> | yes. some can be cancerous. |
02:15 | < PinkFreud> | :P |
02:15 | < Namegduf> | Maybe; I guess the reason I'm kinda seeing it as being worse is because this wart is used everywhere and pervades the language. |
02:15 | < Namegduf> | Rather than being an unusual case. |
02:15 | <@Derakon> | #include shoving shit into your namespace is everywhere too. |
02:15 | < PinkFreud> | Namegduf: so, it *is* cancer. |
02:15 | < Namegduf> | PinkFreud: Haha, yeah, I guess that's apt. |
02:15 | < PinkFreud> | :) |
02:16 | < Namegduf> | Derakon: Yeah, that's bad, too. |
02:16 | < Namegduf> | Although global variables in header files are even eviler than their regular versions |
02:16 | <@Derakon> | And that actually makes the language harder to develop in. |
02:16 | < Namegduf> | Because the declaration is not in the same file and visible. |
02:17 | <@Derakon> | "This file #includes six libraries. It then calls this poorly-named function. Which library do I look in?" |
02:17 | < Namegduf> | I've not had a great deal of interaction with included globals aside the standard errno and such. |
02:18 | < Namegduf> | Those libraries sound painful. |
02:19 | <@Derakon> | Y'know, back in colleges I thought namespaces were stupid. They just added extra typing, right? |
02:19 | < Namegduf> | Haha, ouch. |
02:19 | <@Derakon> | Then I started working on projects with more than four files. ¬.¬ |
02:20 | | * Derakon snerks at this line from Slashdot: "If you do things like manually unroll loops where the body is only executed 23 times during the program's whole lifetime, or use shift to multiply because you read somewhere that it's fast, then don't be surprised when your coworkers revoke your oxygen bit." |
02:21 | < Namegduf> | Haha. |
02:21 | < Namegduf> | Old, but amusing. |
02:21 | < Namegduf> | Unrolling isn't even assuredly helpful nowadays, anyway, thanks to cache magic. |
02:22 | <@Derakon> | Not to mention all the CPU optimizations. |
02:22 | <@Derakon> | Yay predictive execution! |
02:23 | < gnolam> | Heh. |
02:23 | < gnolam> | It's the err... silver rule of optimization: Always Profile First. |
02:23 | < gnolam> | (The Golden Rule being the same as the First Rule of Optimization, namely "Don't".) |
02:24 | | * PinkFreud kicks the OS X VNC server in remote desktop client |
02:25 | < PinkFreud> | flaming pile of schitt |
02:25 | < Namegduf> | gnolam: I always kinda hated that rule |
02:25 | < gnolam> | Oh, it's true. |
02:25 | < Namegduf> | I mean, it's a good guideline for intelligent people, but no amount of retroactive optimisation will save a horribly, horribly done wrong design. |
02:25 | < PinkFreud> | er, wrong window |
02:25 | <@Derakon> | Namegduf: er, yeah, optimization is generally considered to be separate from design. |
02:25 | < Namegduf> | So there needs to be a rule 0 along the lines of "Take performance requirements into account during the design stage" |
02:25 | < gnolam> | You should always choose a decent algorithm, but the kind of thing that rule is against is the kind of microoptimization that... well... just plain doesn't work nowadays. |
02:25 | <@Derakon> | Optimization is "We've decided on an algorithm, now make it faster." |
02:25 | < Namegduf> | Right. |
02:26 | < Namegduf> | With that restriction, it's valid and quite right. |
02:26 | <@McMartin> | My preferred formulation is "it doesn't matter how quickly you get a wrong answer." |
02:26 | < gnolam> | Just note that this is not the same as "It doesn't matter how long it takes." |
02:26 | < Namegduf> | There's only one other real exception, and that's "the obvious". |
02:26 | < Namegduf> | And I mean the really obvious. |
02:26 | < gnolam> | A lot of UI designers have tried that one, and it's Just Plain Wrong. |
02:27 | < Namegduf> | "It doesn't matter how long it takes"? |
02:27 | < gnolam> | Yes. |
02:27 | <@McMartin> | Well, they misread their sychology. |
02:27 | < gnolam> | There are people who really think that. |
02:27 | < Namegduf> | Do they work on Firefox? |
02:27 | <@McMartin> | The heard "Humans don't notice a delay of less than about 700 ms per gesture" |
02:27 | <@McMartin> | They read this as "any given operation can take 700ms" |
02:27 | < Namegduf> | I sure as hell do. |
02:28 | <@McMartin> | Forgetting that humans will chain combos together into individual "gestures". |
02:28 | < gnolam> | I'm pretty sure that thinking "It doesn't matter how long it takes" is a requirement to work on KDE nowdays. :P |
02:28 | < Namegduf> | The fun example I know of is SecondLife. |
02:28 | | Attilla [Attilla@FBC920.DDABA2.60661C.0EE0F8] has quit [Connection reset by peer] |
02:29 | < Namegduf> | Let's see if I can dig up that performance bug. |
02:29 | | * gnolam remembers when Second Life was just another IOTD on Flipcode. |
02:29 | <@McMartin> | Firefox's primary problem is that they expanded their developer pool by implementing 90%+ of it in Javascript. |
02:30 | < gnolam> | McMartin: Also, by having no clear plan whatsoever. |
02:30 | < Namegduf> | Firefox's source layout and layers of abstraction are horrible. |
02:30 | < Namegduf> | And that, yes. |
02:30 | < Namegduf> | You simply can't make something Firefox's size without doing at least some minimal design work first, and during. |
02:31 | < gnolam> | I mean, the primary reason behind Phoenix/FireBird/FireFox was "get rid of the bloat of the Mozilla Suite". It didn't even take until 1.01 of FF before the Mozilla Suite was leaner. |
02:31 | < gnolam> | And nowadays? They've just plain lost focus. |
02:31 | < Namegduf> | http://jira.secondlife.com/browse/SVC-3895 |
02:31 | < Namegduf> | Here we go. |
02:31 | < Namegduf> | Bug open since Feb last year. |
02:32 | < Namegduf> | "Showstopper" fix-pending performance bug they can't fix at all easily |
02:32 | < Namegduf> | Because it turns out writing a server in C# was a really bad idea, and then they did a poor design on top (partially due to the previous design before that) which required verifying digital signatures on every script every time a player moved area. |
02:33 | < Namegduf> | And since their server wasn't designed to be threaded, this could (with 300+ script users being common) hang the server for everyone for a few seconds. |
02:33 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code |
02:34 | < Namegduf> | What's more, it's a DoS bug, because people could deliberately create things to exploit it to slow things to a halt. |
02:34 | <@McMartin> | Or accidentally, to look at it. |
02:35 | < Namegduf> | Oh, yeah. |
02:35 | < Namegduf> | Their setup also recompiles the scripts each time, too. |
02:36 | < Namegduf> | It wouldn't be premature optimisation for them to look at the design of this mess before it happened, do a little thinking and say "You know, for the user and script counts we're looking at, this won't meet performance requirements"> |
02:36 | < Namegduf> | But... they didn't, heh. |
02:36 | < Namegduf> | It's probably the worst example I've seen. |
02:49 | < gnolam> | The worst I've seen was actually one a guest lecturer displayed, with a smart card system reading and checking every byte separately, instead of reading everything as a big byte chunk and then checking it. The difference between the first and second was about three orders of magnitude. |
02:49 | < gnolam> | The entire point of the lecture was, paraphrased, "Everything you've been told about putting ease of development and maintenance before performance? Screw that." |
02:51 | < Namegduf> | Oh, nice. |
02:51 | < Namegduf> | Both have their place. |
02:52 | < gnolam> | (The longer, more boring version of it is basically "Real world performance matters. If you can meet your performance goals, then everything people usually say in this subject applies. If not, address performance /first/ so it actually works, then start cleaning things up.") |
02:52 | < Namegduf> | Right. |
02:52 | <@Derakon> | Well, the short way of putting that is "If it takes too long to get the right answer, then it's not the right answer." |
02:52 | < Namegduf> | The next problem is "too long". |
02:53 | < Namegduf> | Desktop software, I want my UI to work *as fast as possible*. |
02:53 | < Namegduf> | The point at which I don't care is the point at which it's imperceptible, and that's a lot less time than some people seem to think. |
02:53 | | Vornicus-Latens is now known as Vornicus |
02:54 | < Namegduf> | Performance can be good even if it "works", because it can make it "better"; but speed of development is important too, and maintainability is critical. |
02:54 | <@Vornicus> | If you can get it going so it works before the menu item stops blinking, you're done. |
02:54 | <@Derakon> | Thing is, Namegduf, at some level I want the UI to be worked on too, and even big companies have finite resources. |
02:54 | <@Derakon> | So the question becomes "At what point do we stop focusing on speed and start focusing on other intangibles?" |
02:54 | <@Derakon> | And that's going to be different for each user. |
02:55 | < gnolam> | He ended the lecture by showing the classic "Bad Day at the Office" (baddayattheoffice.mpeg, as I recall it being called before the age of video sharing sites), as an example of what your users will do if you don't take their performance expectations into account. :) |
02:55 | < gnolam> | At which point my professor piped up and said "An admin at the Department of Computer and Information Science actually did exactly that in 1995..." |
02:57 | < gnolam> | Ah, of course it's on Youtube: http://www.youtube.com/watch?v=bZRh6sZZyz0 |
02:57 | < Namegduf> | Derakon: Right. There needs to be balance. |
02:57 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has left #code [] |
02:58 | <@Derakon> | Y'know, that guy had blood on his hands right before he went bugfuck. |
04:06 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Z?] |
05:23 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [Operation timed out] |
05:29 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code |
05:29 | | mode/#code [+o ToxicFrog] by Reiver |
05:54 | | Zedidiah [zag@Nightstar-d0088b95.or.comcast.net] has joined #code |
--- Log closed Fri Jan 15 06:36:15 2010 |
--- Log opened Fri Jan 15 06:36:29 2010 |
06:36 | | TheWatcher[zZzZ] [chris@Nightstar-b4529b0c.zen.co.uk] has joined #code |
06:36 | | Irssi: #code: Total of 17 nicks [4 ops, 0 halfops, 0 voices, 13 normal] |
06:36 | | mode/#code [+o TheWatcher[zZzZ]] by Reiver |
06:37 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code |
06:39 | | Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
06:39 | | Netsplit *.net <-> *.split quits: Namegduf, SmithKurosaki, Zedidiah, KazWork, Reiver, PinkFreud |
06:39 | | Netsplit *.net <-> *.split quits: Rhamphoryncus, Tarinaky, @Kazriko, @Vornicus, @jerith, EvilDarkLord, Alek |
06:39 | | Irssi: Join to #code was synced in 197 secs |
06:39 | | Syloqs_AFH is now known as Syloqs-AFH |
06:40 | | Netsplit over, joins: PinkFreud, @jerith, @Kazriko, ~Reiver, Alek, KazWork, Zedidiah, EvilDarkLord, @Vornicus, SmithKurosaki (+3 more) |
06:40 | | mode/#code [+o ToxicFrog] by Reiver |
06:40 | | mode/#code [+o Syloqs-AFH] by Reiver |
07:02 | | Alek [omegaboot@A2BA3E.D9488C.D07174.2236AE] has quit [Ping timeout: 121 seconds] |
07:07 | < Tarinaky> | Gah. I can't think of the word. They're a type of fractal where it branches off into ever smaller and smaller branches.. |
07:07 | < Tarinaky> | I think it begins with D, can't remember. :x |
07:09 | < Tarinaky> | Dendrite! |
07:13 | | Vornicus is now known as Vornicus-Latens |
07:51 | | AnnoDomini [annodomini@Nightstar-5a2d1dbb.adsl.tpnet.pl] has joined #code |
07:51 | | mode/#code [+o AnnoDomini] by Reiver |
08:03 | <@AnnoDomini> | Whee. I configured shorewall so it allows apt-get to function. :D |
08:04 | <@AnnoDomini> | Or so I thought. Damn it, still fails. |
08:37 | | Alek [omegaboot@Nightstar-3f3964f1.emhril.sbcglobal.net] has joined #code |
08:45 | <@AnnoDomini> | Alek: Explain your inability! |
08:45 | < Alek> | I'm very erratically on, and I have no ideas. >_> |
08:47 | < Alek> | my bandwidth is BARELY enough for IRC for the next 3 weeks or so, too. :P |
08:48 | | Zedidiah [zag@Nightstar-d0088b95.or.comcast.net] has quit [Ping timeout: 121 seconds] |
08:48 | < Alek> | compleat BG torrent. |
08:48 | < Alek> | 173 GB. |
08:55 | | Rhamphoryncus [rhamph@Nightstar-a62bd960.abhsia.telus.net] has quit [Client exited] |
09:33 | | Zedidiah [zag@Nightstar-d0088b95.or.comcast.net] has joined #code |
09:58 | | You're now known as TheWatcher |
11:21 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [Client closed the connection] |
11:26 | | Tarinaky [Tarinaky@Nightstar-6874546e.adsl.virginmedia.net] has quit [Ping timeout: 121 seconds] |
11:30 | | Attilla [Attilla@FBC920.DDABA2.60661C.0EE0F8] has joined #code |
11:30 | | mode/#code [+o Attilla] by Reiver |
11:35 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code |
11:40 | | Tarinaky [Tarinaky@Nightstar-724e7fcf.adsl.virginmedia.net] has joined #code |
11:49 | | MyCatVerbs [mycatverbs@Nightstar-3b2c2db2.bethere.co.uk] has joined #code |
11:49 | | mode/#code [+o MyCatVerbs] by Reiver |
11:52 | <@MyCatVerbs> | I find myself wishing for the ability to construct closed timelike curves, in order to implement truly non-blocking RPC. |
11:58 | | * Zedidiah waves at MCV |
11:59 | | * AnnoDomini wonders what "s Roguelike\main.cpp|82|error: request for member `postMessage' in `messageDevice', which is of non-class type `MessageDevice ()()'|" means. |
12:01 | < celticminstrel> | I'd say message device is a function returning a MessageDevice? |
12:01 | < celticminstrel> | ^messageDevice |
12:01 | < celticminstrel> | Did you declare it as MessageDevice messageDevice() ? |
12:04 | <@MyCatVerbs> | Hey Zed. |
12:04 | <@AnnoDomini> | Yeah. Forgot to remove the quotes when I switched constructors. |
12:05 | < celticminstrel> | ? |
12:05 | < celticminstrel> | Quotes? |
12:05 | <@AnnoDomini> | Parens. |
12:06 | <@AnnoDomini> | My brain is full of fuck today. |
12:39 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: *hums* Can't stay now!] |
13:52 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has joined #code |
14:12 | | MyCatVerbs [mycatverbs@Nightstar-3b2c2db2.bethere.co.uk] has quit [Ping timeout: 121 seconds] |
14:17 | | AbuDhabi [annodomini@Nightstar-1ef8ddec.adsl.tpnet.pl] has joined #code |
14:18 | | AnnoDomini [annodomini@Nightstar-5a2d1dbb.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds] |
15:43 | | crem [moo@Nightstar-8ca3eea7.adsl.mgts.by] has quit [Connection reset by peer] |
15:49 | | crem [moo@Nightstar-8ca3eea7.adsl.mgts.by] has joined #code |
16:18 | | Zedidiah [zag@Nightstar-d0088b95.or.comcast.net] has quit [Ping timeout: 121 seconds] |
16:53 | | Zedidiah [zag@Nightstar-d0088b95.or.comcast.net] has joined #code |
17:32 | | Derakon[work] [Derakon@Nightstar-1ffd02e6.ucsf.edu] has joined #code |
17:32 | | * Derakon[work] sighs at this code, whose underlying design is bothering him. |
17:33 | < Derakon[work]> | The run-experiment code uses generator functions so that it can cut out in the middle of execution to wait for a different component to run, and then pick up where it left off. |
17:33 | < Derakon[work]> | Which, by itself, doesn't seem like a terrible idea. |
17:33 | < Derakon[work]> | But it does mean that every single function invocation turns from "foo()" to "for i in foo(): yield i" |
17:34 | < Derakon[work]> | Seems like there should be a better way to handle that. |
17:46 | | You're now known as TheWatcher[afk] |
17:53 | | Rhamphoryncus [rhamph@Nightstar-a62bd960.abhsia.telus.net] has joined #code |
18:48 | < Derakon[work]> | I wish Python wasn't so aggressive about not flushing stdout. |
18:49 | < Derakon[work]> | It's very annoying to set a long-running script to send output to a file so I can tail it and track how it's doing, and then not see anything get printed. |
18:53 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code |
19:03 | | SmithKurosaki [Smith@Nightstar-a68aafef.dsl.teksavvy.com] has quit [Connection closed] |
19:05 | | SmithKurosaki [Smith@Nightstar-a68aafef.dsl.teksavvy.com] has joined #code |
19:20 | < PinkFreud> | it should be possible to force it to flush stdout, no? |
19:21 | < celticminstrel> | Does cout << flush; do it? |
19:21 | < PinkFreud> | I'm not well versed in python, but I know that forcing a filehandle to flush in perl is as simple as selecting the filehandle, and setting a variable to 1. |
19:21 | < celticminstrel> | Oh wait, python? |
19:21 | < celticminstrel> | You're using python? |
19:22 | | You're now known as TheWatcher |
19:28 | < celticminstrel> | I bet Python has a sys.stdout.flush()... and I believe there's also a variable you can set to make it automatic, too. |
20:15 | <@jerith> | As far as I know, print is buffered, sys.stdout.write() is not. |
20:21 | < celticminstrel> | I've no idea. I just assumed that whether buffering was applied would depend on the file (eg stdout is buffered, stderr is not). |
20:26 | <@jerith> | I use sys.stdout.write() for progress indicators. |
20:54 | < Derakon[work]> | Yes, you can do sys.stdout.flush() to flush stdout. You can also (and I didn't know this until recently) use the -u flag when invoking Python to turn off output buffering. |
20:54 | < Derakon[work]> | But now, time to go into the lab. See you later. |
20:54 | | Derakon[work] [Derakon@Nightstar-1ffd02e6.ucsf.edu] has quit [[NS] Quit: Leaving] |
21:35 | < gnolam> | ... and my CPU fan just died. |
21:35 | < gnolam> | Better check it out. :o |
21:35 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: CPU fan just died] |
21:39 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has joined #code |
21:59 | < gnolam> | Just a temporary glitch I guess. |
22:10 | < AbuDhabi> | How much python script does it take to make it post a brief message to a specified thread in a forum on the internet every day? |
22:17 | <@TheWatcher> | About the same amount it'd take to post a long message~ |
22:17 | <@TheWatcher> | (In perl, I'd say about 20 lines if you used WWW::Mechanize, but I've no idea in python) |
22:18 | < AbuDhabi> | AFAIK, it would only require a) establishing HTTP connection, b) logging in, c) sending POST data to a certain page. |
22:18 | < AbuDhabi> | But I've not done anything like this, so I don't know the specifics. |
22:19 | <@McMartin> | The logging in means you'd probably have to manage cookies or something |
22:19 | < AbuDhabi> | (I'm asking this as a curiousity, BTW.) |
22:20 | <@McMartin> | Not sure if Python has a Servlet-style session abstraction fo ruse by clients. |
22:23 | <@TheWatcher> | I'm sure someone must've written LWP::* and Mechanize equivalents that handle all that for you, though. |
22:36 | | Derakon[gonk] [Derakon@Nightstar-1ffd02e6.ucsf.edu] has joined #code |
22:37 | < Derakon[gonk]> | Gentlemen! http://pastebin.starforge.co.uk/99 |
22:37 | < Derakon[gonk]> | I found this while trying to figure out why the script I was invoking was claiming that I'd failed to provide a value for the baud argument...and then noticing that rearranging the order of arguments changed which one it complained about. |
22:37 | < Derakon[gonk]> | Turns out I was using an out-of-date version of the linked file. |
22:37 | < Derakon[gonk]> | You can guess what fix was made, I'm sure. |
22:52 | | MyCatVerbs [mycatverbs@Nightstar-f43ca811.blueyonder.co.uk] has joined #code |
22:52 | | mode/#code [+o MyCatVerbs] by Reiver |
23:02 | <@McMartin> | Derakon: ... No, I can't, because the code makes no sense. |
23:02 | <@McMartin> | The best I can guess is "if no arguments, run one script, otherwise, be a substitute for the call to python.exe" |
23:03 | < Derakon[gonk]> | You don't really need to worry about that bit; it's the ONE__ through NINETEEN__ that are the point. |
23:03 | < AbuDhabi> | You should submit a story to TDWTF. |
23:03 | <@Vornicus-Latens> | You should submit several stories to TDWTF |
23:04 | <@McMartin> | Derakon: Yes, but the fact that he checks for %ONE__% being blank and then refers to %ONE__% through %NINETEEN__% despite all of those being guaranteed to be blank too is pretty special |
23:09 | < Derakon[gonk]> | I'm mostly thinking that there has to be a better way to pass arguments from one program invocation to another in Windows batch files, aside from the enumeration of every argument. |
23:09 | < Derakon[gonk]> | (The previous version of the script, I note, just used %1, %2, %3, ..., %9 on the assumption that this would be sufficient) |
23:09 | <@McMartin> | I do not believe there is an equivalent to "$@" in batch. |
23:09 | <@McMartin> | If there is, for God's sake let me know~ |
23:10 | < Derakon[gonk]> | Will do. |
23:10 | <@McMartin> | Also, you may want to do some tests to make sure you don't have to do "%1" "%2" &c |
23:10 | <@McMartin> | I forget the way quoting works other than "horrendously poorly" |
23:10 | < Derakon[gonk]> | This script has been in use for quite some time, sadly. |
23:11 | <@McMartin> | In that case it probably is doing that part right~ |
23:20 | < celticminstrel> | To me, the logical extension of %1 .. %9 would be %*.... but it probably isn't. |
23:21 | <@McMartin> | Enumeration of %1 through %9 is pretty standard |
23:22 | < Derakon[gonk]> | So it sounds like this is a WTF that actually isn't Sebastian's fault. |
23:22 | | * Derakon[gonk] sighs. |
23:22 | <@McMartin> | Oh, right, there *is* no %10. |
23:23 | < AbuDhabi> | This is madness. |
23:38 | | AbuDhabi [annodomini@Nightstar-1ef8ddec.adsl.tpnet.pl] has quit [[NS] Quit: This was a triumph. I'm making a note here: HUGE SUCCESS.] |
--- Log closed Sat Jan 16 00:00:11 2010 |