--- Log opened Thu Oct 05 00:00:10 2006 |
--- Day changed Thu Oct 05 2006 |
00:00 | <@McMartin> | But if nothing else, in Java, after construction the object should always be in a valid state. |
00:00 | <@McMartin> | And the ones that supply defaults tend to just have one line: |
00:00 | <@McMartin> | this(a, b, c, d, e, DEFAULT_PRIORITY); |
00:00 | <@McMartin> | Say. |
00:00 | <@McMartin> | For one with five arguments. |
00:00 | <@ToxicFrog> | I generally prefer having a ctor that sets up sane defaults, or just takes a few arguments, and then set it up afterwards. |
00:00 | <@McMartin> | Order the arguments so that the arguments most likely to take defaults are last. |
00:01 | < ReivUni> | ...Ahhhh. I see. |
00:01 | <@McMartin> | TF: C++ Does have a better syntax for defaults. |
00:01 | <@McMartin> | ... except for the part where it has to be defined in every file. |
00:01 | <@ToxicFrog> | Largely because a new followed by eight SetFoo() calls is more readable and less error prone than a single call with eight arguments, especially if, say, all the arguments have the same type. |
00:01 | < ReivUni> | The thing that gets me is that if someone tries to create an entry with start time, end time, and description or location only. While I can have a constructor that autogens an alarm start time, even one that autogens an end time, the priority/descriptions are both strings... |
00:01 | <@ToxicFrog> | And thus transposition of two arguments will compile fine but Do The Wrong Thing. |
00:02 | <@McMartin> | The problem comes when you have a segv because 57,000 instructions ago you only had seven setFoo()s. |
00:02 | < ReivUni> | ...Also does this mean I need to have one constructor for every combination of defaults? |
00:02 | <@McMartin> | ReivUni: No. Just remove from the end. |
00:02 | | * ReivUni ponders. |
00:03 | <@McMartin> | So, six arguments, if all have defaults, means seven constructors. |
00:03 | <@ToxicFrog> | McM: true. |
00:03 | <@McMartin> | But start and end won't have defaults! |
00:03 | <@ToxicFrog> | ReivClass: and put the least used arguments at the end. |
00:03 | | * ReivUni nods. |
00:03 | <@McMartin> | On previous subject, "Please set a breakpoint when I don't call X" doesn't work too well |
00:03 | <@McMartin> | Though actually my research prototype does in fact let you do this~ |
00:04 | <@ToxicFrog> | (the xclua hook_foo functions, while not constructors, adopt this approach. Mandatory arguments first, then optional but recommended, then optional, then why-is-this-even-exposed-in-the-API.) |
00:05 | <@McMartin> | (Yes. That's standard practice when Doing Everything In One Function.) |
00:05 | <@McMartin> | (The alternate approach has partisans but, as noted, if he's writing Java for a class, he'd do well to follow the Java conventions) |
00:06 | < ReivUni> | Start End Desc Loc Alarm Priority |
00:06 | < ReivUni> | Start End Desc Loc Alarm |
00:06 | < ReivUni> | Start End Desc Loc |
00:06 | < ReivUni> | etc? |
00:06 | < ReivUni> | Hrm. What if someone provides only Start, End, Desc, and Alarm? >.> |
00:06 | < ReivUni> | Would that not break the constructors somehow? |
00:07 | <@ToxicFrog> | Well. |
00:07 | <@ToxicFrog> | If Loc and Alarm have the same type, it will get through the compiler. |
00:07 | <@McMartin> | That's the problem. |
00:07 | <@ToxicFrog> | Which is why I don't like this. |
00:07 | < ReivUni> | (They don't, but Desc and Loc /do/.) |
00:07 | <@McMartin> | Is Desc mandatory? |
00:07 | <@Vornicus> | Your best bet is to probably just use null when you don't want to send a thing. |
00:08 | <@ToxicFrog> | (although it may be less irritating if your editor has calltips) |
00:08 | <@McMartin> | (Eclipse ftw) |
00:08 | < ReivUni> | ...I could make Desc mandatory, on the basis that a blank appointment is somewhat pointless... |
00:09 | <@ToxicFrog> | (still working on SciTE) |
00:09 | <@ToxicFrog> | (does Eclipse let me add support for new languages using regex description?) |
00:09 | <@McMartin> | (Eclipse is pretty Java-specific, though it claims to be able to handle C/C++ now) |
00:09 | < ReivUni> | Vorn: I /could/ send Nulls through for the non-useful/non-listed bits. But, er, isn't that relying on things outside of the Appointment class? |
00:09 | <@McMartin> | Reiv: I would suggest mandatory Desc, yes. |
00:10 | <@ToxicFrog> | (then it is worthless to me, and should slink away in shame) |
00:10 | <@McMartin> | ReivUni: You're going to have to do something with those fields anyway. |
00:10 | <@McMartin> | The question is whether you do it inside these alternate constructors, or every time you call one. |
00:10 | <@Vornicus> | (Eclipse has C/C++ plugins, and Python and Ruby. I haven't seen one for lua tho) |
00:10 | | * ReivUni ponders, nods. |
00:11 | <@ToxicFrog> | (at minimum, I require support for C, C++, Lua, bash, awk, Makefile, and VHDL.) |
00:11 | < ReivUni> | What is the 'better' way in Java practice? |
00:11 | < ReivUni> | If there is one. |
00:11 | <@ToxicFrog> | (SciTE and NEdit come closest. SciTE will be the clear winner if I ever succeeded in fixing its lexer mechanics.) |
00:11 | <@McMartin> | The library APIs define a bunch of constructors. |
00:12 | <@McMartin> | There is, as the back-and-forth with TF demonstrates, no single best way to do it. |
00:12 | <@McMartin> | But I'd suggest following the library approach if you're writing for a grade |
00:12 | | * ReivUni nods. |
00:14 | < ReivUni> | Cheers. |
00:14 | | Syloq is now known as Syloqs-AFH |
00:14 | <@Vornicus> | argl. ncftpget doesn't seem to do sftp. |
00:14 | <@ToxicFrog> | No, it only does ftp. |
00:14 | <@Vornicus> | %#*( |
00:14 | <@ToxicFrog> | I suggest rsync or scp. |
00:15 | <@ToxicFrog> | If you needed sftp, why were you asking about scripting input to ftp? |
00:15 | <@Vornicus> | because sftp uses the same interface? |
00:15 | <@ToxicFrog> | Aah. |
00:16 | <@Vornicus> | I have three - no, four, now - servers, and exactly one of them uses sftp. |
00:16 | <@ToxicFrog> | Anyways. If you need to use SFTP, either rsync or scp will do the job handily. |
00:16 | <@Vornicus> | okay |
00:16 | | * ReivUni stabs his constructors. |
00:16 | <@Vornicus> | ...oh, and apparently one of them is WIndows. Entertainment abounds. |
00:17 | <@ToxicFrog> | ...well, sort of,. |
00:17 | <@Vornicus> | ...or is that screaming. |
00:17 | <@ToxicFrog> | They'll do file transfers. I don't know if they'll do renames. |
00:17 | < ReivUni> | I have six 'optional' constructors that can be fed defaults. |
00:18 | < ReivUni> | Er. I have /three/ 'optional' /variables/. |
00:18 | < ReivUni> | This tells me I should have six constructors. |
00:18 | < ReivUni> | I have five. >.< |
00:18 | <@McMartin> | I count four |
00:18 | <@ToxicFrog> | ...no, you should have four. |
00:18 | < ReivUni> | ...Four? |
00:18 | <@ToxicFrog> | Wait. |
00:19 | <@ToxicFrog> | Yes, four. |
00:19 | <@McMartin> | Unless they're all different types and you want to make every single one available. |
00:19 | <@Vornicus> | often you need: 1. a default constructor (no args), 2. a copy constructor (one arg...) |
00:19 | <@Vornicus> | and then as many custom constructors as you can think of. |
00:19 | <@McMartin> | In all honesty, I've almost never found copy constructors to be actually useful. |
00:19 | <@Vornicus> | ...well, okay. Java you don't really need them |
00:20 | <@Vornicus> | C++ you need them somewhat often; |
00:20 | < ReivUni> | Appointment(Date start, Date end, String desc, String loc, Date alarm, int pri) { (Primary constructor) |
00:20 | < ReivUni> | Appointment(Date start, Date end, String desc, String loc, Date alarm) { |
00:20 | < ReivUni> | Appointment(Date start, Date end, String desc, String loc) { |
00:20 | < ReivUni> | Appointment(Date start, Date end, String desc) { |
00:20 | < ReivUni> | Appointment(Date start, Date end, String desc, Date alarm) { |
00:20 | < ReivUni> | Appointment(Date start, Date end, String desc, Date alarm, int pri) { |
00:20 | < Janus> | Speaking of constructors... |
00:20 | <@Vornicus> | ;_; |
00:20 | < ReivUni> | (Forgive spam) |
00:20 | < ReivUni> | Is that wrong? |
00:20 | < ReivUni> | >.> |
00:20 | <@Vornicus> | no, it's not. BUt man I wish there was defaulting in Java |
00:21 | <@Vornicus> | oh, and |
00:21 | <@Vornicus> | there's actually technically supposed to be 8. |
00:21 | < ReivUni> | Start end desc are all required, Vorn |
00:21 | <@McMartin> | Right |
00:21 | <@McMartin> | But this is a powerset |
00:21 | < ReivUni> | So I have three 'optional'. |
00:21 | <@Vornicus> | you're missing loc pri and pri alone |
00:21 | <@McMartin> | 2^3 = 8 |
00:22 | < ReivUni> | Ach! Whoops. |
00:22 | | * Vornicus also touts Python and its name-based argument passing. |
00:24 | | * ReivUni murders Vorn, as Python is not an option. |
00:24 | <@McMartin> | Vornicus: Strictly speaking, Reiver could have his one argument be a Map from String to Object and intialize the variables as necessary out of that |
00:24 | <@McMartin> | Which is what Python's doing under the hood. |
00:25 | <@McMartin> | I suspect that would do interesting things to his grade if he's being graded on style, though |
00:25 | <@Vornicus> | right now it looks like he's being graded on "it works at all" |
00:27 | <@Vornicus> | ALso, things that are so much nicer in Utah than Southwest Connecticut: |
00:28 | <@Vornicus> | I can walk 200 feet from my apartment, board a bus, and 2 hours later be at the airport. |
00:30 | <@Vornicus> | and my monthly transit ticket covers the whole thing, for less than two vaguely-similar trips in CT. |
00:35 | < ReivUni> | ...8 constructors. Right. >.< |
00:35 | < ReivUni> | Ho-kay. |
00:35 | < ReivUni> | Now for getters and setters, woo |
00:35 | < ReivUni> | (Why on earth are these not automatable?) |
00:37 | <@McMartin> | They are |
00:37 | <@McMartin> | I don't know if Eclipse has buttons you can push, but there's no reason you couldn't write a python program to write Java with or whatnot |
00:37 | <@McMartin> | ("I'd rather write programs that write programs than write programs.") |
00:37 | | * McMartin has on one memorable occasion wrote a program to write a program to write a program, but it turns out this doesn't buy you anything. |
00:39 | <@Vornicus> | I've done one-level meta |
00:39 | < ReivUni> | Woo! |
00:39 | <@Vornicus> | and I've done one-level multiplexing meta. |
00:39 | | * ReivUni has done two-level meta, but that was a boilerplate klutz used only because he was having to throw constructors at Microsoft Access via VB. |
00:39 | < ReivUni> | And I couldn't for the life of me work out /how/ to make that clean. So I didn't. >.> |
00:42 | < ReivUni> | Right! |
00:42 | < ReivUni> | So. |
00:42 | < ReivUni> | Now for the Calendar class. |
00:42 | < ReivUni> | Which has... hrm. |
00:43 | | * ReivUni uhohs. Tries to remember how he was meant to be doing this here. |
00:43 | < ReivUni> | I want the Calendars to track which Appointments belong to them. |
00:43 | < ReivUni> | Does this entail storing the Appointments /in/ the Calendar, or is there a cleaner way to keep a 'list' in each Calendar? |
00:44 | <@McMartin> | In Java, objects are never actually part of other objects, ever. |
00:44 | < ReivUni> | Right. Er. |
00:45 | <@McMartin> | Thus, sticking a List reference that in turn is tracking Appointment references should probably do it. |
00:45 | | * ReivUni hm. |
00:46 | < ReivUni> | Appointments should be an ArrayList<Appointments>. Calendars will need to have an ArrayList of appointments valid to them. ...I think. |
00:47 | <@McMartin> | Hold it |
00:47 | <@McMartin> | Is this "Calendar" the library "Calendar" or your Calendar? |
00:47 | < ReivUni> | ...Ah, yes. My Calendar. |
00:48 | <@McMartin> | Because oh god the name conflicts and use of fully qualified names and the augh. |
00:48 | | * ReivUni makes a note to use a different name. |
00:48 | <@McMartin> | I mean, they aren't REALLY name conflicts but you'll have to call yours all.my.package.intros.Calendar all the time. |
00:48 | | * ReivUni nods. |
00:48 | | * ReivUni ponders what else to call it! |
00:48 | <@McMartin> | Which you want to avoid. |
00:48 | <@McMartin> | ReiverCalendar~ |
00:49 | < ReivUni> | ApptGroup? ApptCal? |
00:50 | <@McMartin> | It doesn't matter, as long as you can spell it |
00:50 | < ReivUni> | Given it only comes up in ArrayList<ApptCal> Cals = create new ArrayList<ApptCal>(name); I guess it doesn't really matter~ |
00:50 | < ReivUni> | (Psuedocode.) |
00:50 | | * ReivUni nods. |
00:51 | < ReivUni> | Let's see. |
00:52 | < ReivUni> | All a ApptCal object needs to do is store it's name, possibly a description, and an ArrayList of what Appointments it references... yes? |
00:52 | <@Vornicus> | ...it seems like every time I try to make this backup automated, the problem /actively/ gets harder. |
00:52 | <@ToxicFrog> | ? |
00:54 | | * ReivUni ponders. It strikes him as just easier to give a ApptCal instance variable to each Appointment, so the the appointments know which calendars they belong to... hrmm. Also less chance of having orphaned appointments. >.> |
00:54 | <@Vornicus> | well yesterday at this time I had three Linux machines to back up |
00:54 | <@Vornicus> | and now today I also have a Windows machine on the list. |
00:55 | | * McMartin eyes OCRemix. Why is there even one remix of the drown countdown from the Sonic series, let alone two? |
00:55 | <@ToxicFrog> | ...aah. |
00:55 | <@ToxicFrog> | McM: this is a question I have never been able to answer. |
00:55 | <@ToxicFrog> | However, while I do not have the answer, I do have an answer. |
00:55 | < Janus> | That countdown made me turn the Sega off more than once, that's why. |
00:55 | <@ToxicFrog> | It involves carnage, and screaming, and sweet, cleansing fire. |
00:55 | <@McMartin> | Janus: You need more bubbles, clearly. |
00:56 | <@ToxicFrog> | Vornicus: Cygwin 4tw. |
00:56 | <@Vornicus> | And so on and so forth. |
00:56 | <@ToxicFrog> | Or to become Supersonic~ |
00:56 | <@ToxicFrog> | (and, err, run off the top of the level and break the game) |
00:56 | <@McMartin> | Hee |
00:56 | <@Vornicus> | It's like every time I start making headway, something else comes up. |
00:56 | <@McMartin> | (In similar news, in SA3, the Tails/Cream team cannot drown.) |
00:57 | <@McMartin> | (One day I will work out why rabbits are unstoppable killing machines.) |
00:57 | <@ToxicFrog> | Wait, no, that was Hypersonic. |
00:58 | <@ToxicFrog> | I managed to exit the level stage up not once but many times, and one of those resulted in my falling into what appeared to be the Knuckles boss area or similar. |
00:59 | <@McMartin> | ... |
00:59 | <@McMartin> | This appears to be Sonic: Ninja Gaiden Edition. |
00:59 | <@ToxicFrog> | ?? |
00:59 | < ReivUni> | Right. Time to go to work. |
00:59 | < ReivUni> | Thanks, guys! |
00:59 | <@McMartin> | It's supposed to be a dance club remix of Green Hill Zone. |
00:59 | < ReivUni> | Such things are appreciated. >.> |
00:59 | <@McMartin> | But the backbeat they're using is straight out of one of the early levels of Ninja Gaiden. |
00:59 | <@McMartin> | It is not a good remix. |
01:00 | | ReivUni [~82d94c4d@Nightstar-29731.dsl.in-addr.zen.co.uk] has quit [Quit: Classtime!] |
01:03 | < Janus> | Dear Lord, it actually works now-- |
01:03 | <@McMartin> | (*W%#(&@#$(*@#&$**#U$@))NO CARRIER |
01:04 | <@Vornicus> | yey |
01:04 | | * Janus sunk his battle ship! |
01:05 | < Janus> | --and I was actually worried when stuff like "_image ** neo_index = new _image*[population];" started popping up. |
01:05 | <@McMartin> | note that neo_index cannot be delete()ed. |
01:05 | <@McMartin> | It needs to be delete[]()ed. |
01:05 | < Janus> | (I'm not even sure what that does, except work) Yeah, I made sure to remember that. |
01:06 | <@McMartin> | You're dynamically allocating an array of pointers to _image. |
01:06 | <@Vornicus> | Woo two-star programming. |
01:06 | <@McMartin> | And then assigning it to neo_index. |
01:07 | <@McMartin> | Or rather, assigning a pointer to the first element to it. |
01:07 | <@Vornicus> | (well, okay, I guess by default you're working two-star programming in C/C++; int argc, char**argv) |
01:07 | <@McMartin> | (proper arrays have known bounds, etc.) |
01:09 | <@Vornicus> | Java got bounds checking sorta right - I'd prefer if it were somewhat less agressive though |
01:12 | < Janus> | Now just one last question and I'll be outta your hair for a solid 15 minutes~ |
01:13 | | * Vornicus builds a nest in Janus's hair. |
01:17 | < Janus> | Which would be better a method for determining which object of many is being controlled by the player? Having a bool member in the class that states if the object is being controlled, or left to the A.I., or storing the address of the object and checking it inside the function that is also a member of the class? (notes that it'll probably be letter 'C') |
01:18 | < Janus> | (C, by the way, is None of the Above.) |
01:18 | <@Vornicus> | Your best bet is to have the PLayer object hold a pointer/reference to the thing he controls. |
01:18 | <@Vornicus> | This assumes of course that the thing the player controls plays by the same rules as everyone else, which is a long shot in many types of games. |
01:22 | <@Vornicus> | (you may be best off doing a sort of client/server paradigm - each game entity is controlled by an independent AI "server", with a reference to the entity it controls, that gets messages from the entity's "sensors". then the player has his own "server", which uses the sensors - and possibly other information - to display information, and hooks the controls to the keyboard and mouse) |
01:23 | < Janus> | Actually... would this work?: Having a function inside the same scope as the definitions of the class functions. This function is executed every frame with it's parameters updating a few key global variables which, in turn, are assigned inside the class functions themse--- or that too, which sounds a lot prettier~ |
01:24 | <@Vornicus> | using global variables is asking for trouble in general. |
01:25 | | * Janus uses phonics to decipher 'paradigm', but only ends up with the image of Dig'm parachuting from a warplane. |
01:25 | <@Vornicus> | paradigm: way of doing things |
01:26 | < Janus> | So the AI is a single entity, like Mother Goose, or Big Brother, and tells the worker elves what to do? |
01:26 | <@Vornicus> | no |
01:26 | <@Vornicus> | there's many AIs. |
01:27 | <@Vornicus> | Technically I guess you could call this MVC |
01:27 | <@Vornicus> | well, no. |
01:28 | <@Vornicus> | each creature has "controls", which is a separate object from the creature itself. |
01:28 | <@Vornicus> | And each creature gets his own controls object. |
01:29 | <@Vornicus> | which gets events and other data from the creature, and transmits commands to the creature. |
01:29 | < Janus> | ... I see. So the actual character is more of an avator for the A.I. to manipulate, instead of the other way around(?) |
01:30 | <@Vornicus> | And the only difference between monsters and the player is that the player's controls hook to the video hardware |
01:30 | <@Vornicus> | Janus: yes. |
01:30 | <@Vornicus> | And for the most part, each creature has a /different/ AI object controlling it. |
01:30 | <@Vornicus> | s/video hardware/video and other hardware/ |
01:31 | <@Vornicus> | This makes it so that you can make creatures smarter or dumber by hooking them up to other AIs, or give them a hive mind - and because each AI is independent of the others, it's a lot easier to define the characteristics of an individual charater. |
01:32 | <@Vornicus> | ...I need a whiteboard. |
01:32 | < Janus> | ... I need a notebook. |
01:33 | <@Vornicus> | ...okay consider it like this. |
01:34 | <@Vornicus> | Instead of thinking of all of these things on the same computer |
01:34 | <@Vornicus> | YOu have a network. |
01:34 | <@Vornicus> | With a central server, and a bunch of clients. |
01:34 | <@Vornicus> | And each client machine controls ONE creature on teh server. |
01:34 | < Janus> | Alright-- |
01:34 | <@Vornicus> | And then your interface defines what data the client receives from the server, and what data the server receives from the client. |
01:36 | <@Vornicus> | And then behind the interface on the server side is the rules of the game, and the map, and so forth... |
01:36 | <@Vornicus> | and behind the interface on the client side is the AI code, or in the case of the human player, the rendering and keyboard/mouse/joystick input code. |
01:37 | <@Vornicus> | And then as long as you follow DRY, you have yourself a neatly encapsulated game engine. |
01:38 | < Janus> | It's an exchange then, kind of like the relationship with a body and mind. The body senses the world, the mind interprets the information received, and sends out commands for the body to attempt in the physical world. Wash, rinse, repeat. |
01:38 | <@Vornicus> | Bingo. |
01:41 | <@Vornicus> | There's a name for this pattern, and I keep wanting to say it's MVC, but I keep thinking that's wrong. |
01:41 | <@Vornicus> | SOmeone with more patterns experience (say, Chalain, if he shows up) could tell you what to look up. |
01:42 | < Janus> | Yay~ |
01:42 | < Janus> | I may need to institute a third object though, besides the A.I, and avator objects... |
01:44 | <@McMartin> | MVC is indeed the case. |
01:44 | <@McMartin> | M = world model |
01:44 | <@McMartin> | V = interface |
01:44 | <@McMartin> | C = getting the stuff from the model to the interface, or from the user to both. |
01:52 | < Janus> | The last object won't be destroyed if the the character wonders to another area, (like the avator), yet is still updating itself, though not as actively (world position, statistics, etc.) Those things can't be chucked into the A.I. object either without comprimising the purpose of that particular object... So I suppose the best solution is a third object. |
01:54 | <@Vornicus> | The AI object can use its avatar's sensors as an interface to receive data as to the state of the universe, including (among other things) the avatar's position in the world. |
01:55 | <@Vornicus> | Quitting time. |
01:55 | < Janus> | See ya Mr. Vornicus~ |
01:55 | <@Vornicus> | TOmorrow I fly to Chicagoland, and head over to Moline, Illinois, for the Quad Cities Regatta. |
01:55 | <@Vornicus> | I'll be back Monday evening. |
01:56 | | Vornicus [~vorn@Nightstar-18307.slkc.qwest.net] has quit [Quit: ] |
02:01 | <@ToxicFrog> | McMartin: the way I learned it, stuff from the user goes directly to the interface. I mean, that's its job. |
02:01 | <@ToxicFrog> | User manipulates interface, interface informs controller, controller updates model. |
02:01 | <@McMartin> | Right, but the interface has to tell the model... |
02:01 | <@McMartin> | Yes. |
02:02 | <@ToxicFrog> | Then - depending on who you ask - either the controller updates the interface with the new model information, or the interface updates itself from the model directly. |
02:03 | <@McMartin> | It's easier with webapps. |
02:03 | <@McMartin> | Model = model |
02:03 | <@ToxicFrog> | The latter has a pleasing form of rotational symmetry to it~ |
02:03 | <@McMartin> | View = pages |
02:03 | <@McMartin> | Controller = Talks to Apache |
02:03 | <@ToxicFrog> | Yeah. |
02:03 | <@ToxicFrog> | ...also, at some point I need to talk to someone with GTK-fu. |
02:15 | | Syloqs-AFH [Syloq@Admin.Nightstar.Net] has quit [Connection reset by peer] |
02:48 | <@Vornicus-Latens> | ...actually I'm not leaving 'till tomorrow anyway, so I'm here now. |
02:48 | | Vornicus-Latens is now known as Vornicus |
03:03 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Quit: Jouets de Dieu, jouets de jouets, et les jouets de me, fait naƮtre Clair voire.] |
05:34 | | ReivClass is now known as Reiver |
05:43 | | MahalWork [~Mahal@Nightstar-20316.worldnet.co.nz] has joined #Code |
05:43 | | mode/#code [+o MahalWork] by ChanServ |
05:51 | | Thaqui is now known as ThaquiWork |
06:40 | | Chalcedon is now known as ChalcyWalk |
06:43 | | Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code |
06:43 | | mode/#code [+o Chalcy] by ChanServ |
06:45 | | ChalcyWalk [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout] |
06:59 | | Chalc [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code |
07:00 | | Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout] |
07:04 | | Chalc is now known as Chalcedon |
07:05 | | Mahal is now known as MahalAFK |
07:26 | | MahalAFK is now known as Mahal |
07:32 | < EvilDarkLord> | Hmm. Is there some way to detect with php whether javascript is enabled on the client browser? |
07:34 | <@McMartin> | Pretty sure script tags let you have alt text. |
07:36 | < EvilDarkLord> | There is the noscript tag that I can use, but there is a query that would only be relevant if the user has js enabled. |
07:36 | < EvilDarkLord> | And I wish to avoid querying when there is no point in it. |
07:44 | | jerith [~jerith@IRCop.Nightstar.Net] has quit [Ping Timeout] |
07:46 | | jerith [~jerith@IRCop.Nightstar.Net] has joined #code |
07:46 | | mode/#code [+o jerith] by ChanServ |
09:33 | | You're now known as TheWatcher[wr0k] |
09:48 | | Vornicus is now known as Vornicus-Latens |
10:11 | | Chalcedon is now known as ChalcyZzz |
10:12 | | ChalcyZzz is now known as NSGuest-258 |
10:12 | | NSGuest-258 is now known as Chalcedon |
10:13 | | Chalcedon is now known as ChalcyZzz |
10:20 | | Mahal is now known as MahalZzz |
11:35 | | ThaquiWork is now known as Thaqui |
14:27 | | EvilDarkLord is now known as EvilNROMLord |
14:48 | | Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code |
14:48 | | mode/#code [+o Chalcy] by ChanServ |
14:49 | | ChalcyZzz [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout] |
15:13 | <@ToxicFrog> | EvilNROMLord: arrange <NOSCRIPT> such that the arguments passed to the server are different if the user has javascript? |
15:35 | | Reiver is now known as ReivZzz |
15:59 | | EvilNROMLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has quit [Ping Timeout] |
16:05 | | Thaqui is now known as ThaquiSleep |
16:11 | | EvilNROMLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has joined #code |
16:18 | | apotekarka [~nasiha85@Nightstar-19992.tel.net.ba] has joined #Code |
16:20 | | apotekarka [~nasiha85@Nightstar-19992.tel.net.ba] has quit [Quit: ] |
16:31 | | EvilNROMLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has quit [Ping Timeout] |
16:41 | | You're now known as TheWatcher |
16:44 | | EvilNROMLord [althalas@Nightstar-17046.a80-186-184-83.elisa-laajakaista.fi] has joined #code |
17:27 | | You're now known as TheWatcher[afk] |
17:51 | | Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout] |
18:42 | | You're now known as TheWatcher |
19:32 | | Pi [~sysop@Nightstar-6915.hsd1.or.comcast.net] has quit [Connection reset by peer] |
19:33 | | Pi [~sysop@Nightstar-6915.hsd1.or.comcast.net] has joined #Code |
19:33 | | mode/#code [+o Pi] by ChanServ |
20:00 | | MahalWork is now known as MahalPC |
20:00 | | MahalZzz is now known as MahalEarning |
20:57 | | Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code |
20:57 | | mode/#code [+o Chalcedon] by ChanServ |
21:18 | | EvilNROMLord is now known as EvilDarkLord |
21:33 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has joined #code |
22:00 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Quit: 5%] |
22:40 | | aoanla [~sam@Nightstar-16113.range81-132.btcentralplus.com] has joined #code |
22:44 | | You're now known as TheWatcher[T-2] |
23:23 | | aoanla is now known as caps[t-2] |
23:26 | | caps[t-2] [~sam@Nightstar-16113.range81-132.btcentralplus.com] has quit [Quit: Leaving] |
--- Log closed Fri Oct 06 00:00:51 2006 |