*** tpb has joined #tp | 00:00 | |
*** ChanServ sets mode: +o tpb | 00:00 | |
Greywhind | tansell: is there an AI that works with minisec? | 00:04 |
---|---|---|
tansell | no | 00:05 |
tansell | tpsai-py should in theory | 00:05 |
Greywhind | how about mtsec? | 00:05 |
Greywhind | i have to go eat dinner, i'll check for a response when i get back | 00:06 |
*** nebajoth has quit IRC | 00:07 | |
*** Erroneous has quit IRC | 00:13 | |
Landon | llnz: thanks for the tip, but as I feared t says VertexElement has no attribute baseVertexPointerToElement | 00:20 |
CIA-26 | landon tpclient-pyogre * rd4c9f296c156 /src/raycast.py: Fixed up more typos, however baseVertexPointerToElement seems to be missing from python-ogre | 00:21 |
*** nebajoth has joined #tp | 00:24 | |
llnz | bbl | 00:33 |
*** llnz has quit IRC | 00:33 | |
CIA-26 | landon tpclient-pyogre * rb208f199acfb /src/laser.py: Added laser particle effects that shoot out from the ship being attacked | 00:42 |
*** tansell-laptop has joined #tp | 00:44 | |
Greywhind | tansell: has rfts been updated to work with tp04 for orders? | 01:56 |
tansell-laptop | it should | 02:04 |
*** nebajoth has quit IRC | 02:06 | |
CIA-26 | landon tpclient-pyogre * rf29ddd4da43d /media/battleviewer/fire.material: Particle effects are kind of useless without a .material file | 02:08 |
*** tuna-fish has joined #tp | 02:16 | |
*** nebaway has joined #tp | 02:29 | |
CIA-26 | landon tpclient-pyogre * r22e73e81187d /media/battleviewer/warp.material: Warp ins happen faster | 02:46 |
CIA-26 | landon tpclient-pyogre * r31a11b5a79fa / (3 files in 2 dirs): Ships now explode using one of two explosion types when they die | 02:46 |
* Landon will have plenty of pictures for mithro_ after he goes biking in the morning ;) | 02:46 | |
Landon | for now, sleep | 02:46 |
tansell | Landon, sounds like it's a time for more videos | 02:53 |
tansell | Landon, btw do we have torpedos? | 02:53 |
Landon | no, not yet | 02:53 |
Landon | would you prefer something with an actual torpedo model or a flying particle frenzy? | 02:54 |
tansell | Landon, both of course! :) | 02:57 |
Landon | heh | 02:57 |
tansell | Landon, I would also like to see "cluster" missiles | 03:00 |
Landon | which do? | 03:01 |
Landon | hmm | 03:01 |
Landon | I dont think it would be too hard to create something that explodes when it hits say the bounding sphere of a ship and emits particle emitters | 03:01 |
Landon | if that's the sort of thing you're thinking of | 03:02 |
tansell | yeah | 03:02 |
Landon | ok, I'll see what I can do with that tomorrow | 03:03 |
Landon | now, since there's no specification for what's actually being fired | 03:03 |
Landon | do you just want me to pick one at random? | 03:04 |
Landon | thats what I'm doing with explosions right now | 03:05 |
Landon | it picks from a glow sort of explosion and an exploding fragments sort of explosion | 03:05 |
tansell | there are weapon stuff in the battlexml | 03:06 |
Landon | hmm, it's commented out of the DTD | 03:08 |
tansell | oh? | 03:09 |
*** llnz has joined #tp | 03:13 | |
*** nash has quit IRC | 03:27 | |
*** llnz has quit IRC | 03:45 | |
*** llnz has joined #tp | 03:46 | |
*** jnengland77 has quit IRC | 04:12 | |
tansell | Landon, http://img259.imageshack.us/img259/2614/200908041055311024x768s.png | 04:20 |
tpb | <http://ln-s.net/3nCt> (at img259.imageshack.us) | 04:20 |
tansell | opps | 04:20 |
tansell | http://www.thousandparsec.net/~tim/torpedo-styles.png | 04:21 |
tpb | <http://ln-s.net/3nCu> (at www.thousandparsec.net) | 04:21 |
llnz | tansell: that would look cool | 04:22 |
llnz | would be good if it could (generically) be set in the xml | 04:23 |
tansell | llnz, you can just set "weapon types" | 04:23 |
tansell | IE one of them might be "Generic Torpedo" the other could be "Cluster Torpedo" | 04:23 |
llnz | true | 04:30 |
llnz | i thought weapon type was the overall type, ie, torpedo, missile, laser, etc, etc | 04:31 |
llnz | but either would work | 04:31 |
*** nebaway has quit IRC | 04:50 | |
*** nebaway has joined #tp | 04:54 | |
*** tansell-laptop has quit IRC | 04:56 | |
*** tansell-laptop has joined #tp | 05:05 | |
*** Greywhind has quit IRC | 05:12 | |
*** cherez has quit IRC | 06:27 | |
*** tansell_laptop has joined #tp | 06:37 | |
*** tansell-laptop has quit IRC | 06:37 | |
*** llnz has quit IRC | 06:44 | |
*** llnz has joined #tp | 06:54 | |
*** tuna-fish has quit IRC | 07:08 | |
*** Landon has quit IRC | 07:08 | |
*** Linkadmin has quit IRC | 07:08 | |
*** jmtan has quit IRC | 07:08 | |
*** tote has quit IRC | 07:08 | |
*** zzorn has quit IRC | 07:08 | |
*** matthewd has quit IRC | 07:08 | |
*** ezod has quit IRC | 07:08 | |
*** tuna-fish has joined #tp | 07:10 | |
*** Linkadmin has joined #tp | 07:10 | |
*** jmtan has joined #tp | 07:10 | |
*** ezod has joined #tp | 07:10 | |
*** Landon has joined #tp | 07:10 | |
*** matthewd has joined #tp | 07:10 | |
*** zzorn has joined #tp | 07:10 | |
*** tote has joined #tp | 07:10 | |
*** llnz has quit IRC | 07:15 | |
*** mithro_ has quit IRC | 07:16 | |
*** nebaway has quit IRC | 07:24 | |
*** DTRemenak has quit IRC | 07:24 | |
*** shenki has quit IRC | 07:24 | |
*** shenki has joined #tp | 07:24 | |
*** DTRemenak has joined #tp | 07:24 | |
*** nebaway has joined #tp | 07:24 | |
*** Landon has quit IRC | 07:25 | |
*** tuna-fish has quit IRC | 07:25 | |
*** Linkadmin has quit IRC | 07:25 | |
*** jmtan has quit IRC | 07:25 | |
*** matthewd has quit IRC | 07:25 | |
*** tote has quit IRC | 07:25 | |
*** zzorn has quit IRC | 07:25 | |
*** ezod has quit IRC | 07:25 | |
*** tuna-fish has joined #tp | 07:26 | |
*** Linkadmin has joined #tp | 07:26 | |
*** jmtan has joined #tp | 07:26 | |
*** ezod has joined #tp | 07:26 | |
*** Landon has joined #tp | 07:26 | |
*** tote has joined #tp | 07:26 | |
*** zzorn has joined #tp | 07:26 | |
*** matthewd has joined #tp | 07:26 | |
*** mithro_ has joined #tp | 07:39 | |
*** mithro_ has quit IRC | 07:43 | |
*** Vadtec_ has quit IRC | 08:01 | |
*** Vadtec has quit IRC | 08:01 | |
*** edison has quit IRC | 08:01 | |
*** Vadtec has joined #tp | 08:03 | |
*** Vadtec_ has joined #tp | 08:03 | |
*** edison has joined #tp | 08:03 | |
*** Vadtec_ has quit IRC | 08:09 | |
*** Vadtec has quit IRC | 08:09 | |
*** edison has quit IRC | 08:09 | |
*** Vadtec has joined #tp | 08:10 | |
*** Vadtec_ has joined #tp | 08:10 | |
*** edison has joined #tp | 08:10 | |
*** Vadtec_ has quit IRC | 08:14 | |
*** Vadtec has quit IRC | 08:14 | |
*** edison has quit IRC | 08:14 | |
*** Vadtec has joined #tp | 08:15 | |
*** Vadtec_ has joined #tp | 08:15 | |
*** edison has joined #tp | 08:15 | |
*** Vadtec_ has quit IRC | 08:16 | |
*** Vadtec has quit IRC | 08:16 | |
*** edison has quit IRC | 08:16 | |
*** peres has joined #tp | 08:39 | |
*** Linkadmin has left #tp | 08:54 | |
*** Demitar has quit IRC | 08:55 | |
*** tuna-fish has quit IRC | 09:09 | |
*** Landon has quit IRC | 09:09 | |
*** jmtan has quit IRC | 09:09 | |
*** tote has quit IRC | 09:09 | |
*** matthewd has quit IRC | 09:09 | |
*** zzorn has quit IRC | 09:09 | |
*** ezod has quit IRC | 09:09 | |
*** peres has quit IRC | 09:11 | |
*** jmtan has joined #tp | 09:22 | |
*** tote has joined #tp | 09:22 | |
*** zzorn has joined #tp | 09:22 | |
*** matthewd has joined #tp | 09:22 | |
*** ezod has joined #tp | 09:30 | |
*** tuna-fish has joined #tp | 09:30 | |
*** Landon has joined #tp | 09:30 | |
*** mithro has joined #tp | 11:06 | |
*** Demitar has joined #tp | 12:30 | |
*** Erroneous has joined #tp | 13:56 | |
*** Vadtec_ has joined #tp | 14:05 | |
*** Vadtec has joined #tp | 14:05 | |
*** edison has joined #tp | 14:05 | |
*** nebaway is now known as nebajoth | 14:11 | |
*** Greywhind has joined #tp | 14:27 | |
*** jmtan has quit IRC | 14:42 | |
*** tuna-fish has quit IRC | 15:32 | |
*** reac has joined #tp | 16:00 | |
*** reac has quit IRC | 16:13 | |
*** reac has joined #tp | 16:16 | |
*** llnz has joined #tp | 16:51 | |
*** cherez has joined #tp | 16:55 | |
llnz | morning all | 16:57 |
CIA-26 | landon tpclient-pyogre * rf5d4703844db /src/battlemanager.py: Respect the warp lock, no matter what. | 17:06 |
CIA-26 | landon tpclient-pyogre * r16ec5b01a9ce /src/battlemanager.py: Changed the laser's post event to match what I've done with the death post event | 17:08 |
cherez | Mean old power outages. | 17:09 |
cherez | Ruining my uptime. | 17:09 |
mhilmi | hey llnz | 17:11 |
llnz | hi mhilmi | 17:11 |
llnz | mhilmi: how is it going? | 17:16 |
mhilmi | good - just trying to figure out to handle exceptions properly. seems Qt disables them by default so those DisconnectExceptions crash the app | 17:26 |
llnz | are you sure? | 17:27 |
llnz | by default if an exception is not caught at all, the program aborts (SigAbort, iirc) | 17:28 |
mhilmi | yeah that's whats happening.. | 17:28 |
llnz | try adding a try/cache block in main() | 17:29 |
llnz | s/cache/catch/ | 17:29 |
mhilmi | I tried something like try{ game->disconnect(); } catch(TPProto::DisonnectException) { } and it still just craps out when it gets thrown. | 17:30 |
mhilmi | I think it is Qt related cause exceptions are disabled by default - I tried enabling them but I think the Cmake keyword is wrong.. | 17:31 |
CIA-26 | joelboh tpclient-pyweb * r08a115a07865 / (3 files in 2 dirs): Orders containing position or time argument works now. | 17:31 |
llnz | Btw: is DisconnectedException, i note the doxygen is wrong | 17:32 |
llnz | humm... | 17:32 |
llnz | i wonder... | 17:32 |
mhilmi | yeah sorry, DisconnectException | 17:32 |
mhilmi | er Disconnected | 17:33 |
llnz | in your EventLoop subclass, you might need to catch those exceptions when calling isReadyToRead | 17:35 |
llnz | and remove the tpsocket when that happens | 17:36 |
llnz | but i'm not sure, and i have an idea how I could test it tonight | 17:36 |
mhilmi | yeah I think that might be the problem | 17:39 |
mhilmi | cause this only occurs in the event that the user prematurely disconnects during the connection routine - ie he doesnt choose a game and just quits | 17:39 |
mhilmi | when that happens, the gameinfo callback still is being executed and throws the exceptions because sock!=null | 17:40 |
mhilmi | something like i tried should still catch it though right? not sure why it just terminates.. | 17:41 |
*** verhoevenv has joined #tp | 17:42 | |
llnz | it could be that the qt event loop aborts if it receives an exception | 17:47 |
CIA-26 | joelboh tpclient-pyweb * rb5d21f01579b /frontend/scripts/map.js: Frontend: Small fix, not reseting argument panels correctly. | 17:55 |
mhilmi | llnz: I figured out how to enable exceptions and then catching in the eventloop worked. I do try { ..->readyToRead() } catch(DisconnectedException) { } and it works... | 18:30 |
llnz | cool | 18:31 |
mhilmi | Would you need to do the same for readyToSend? | 18:31 |
*** nebajoth is now known as nebaway | 18:45 | |
llnz | mhilmi: umm... maybe | 19:06 |
*** nash has joined #tp | 19:30 | |
*** mithro has quit IRC | 19:31 | |
*** mithro has joined #tp | 19:49 | |
*** llnz has left #tp | 19:49 | |
*** llnz has joined #tp | 19:49 | |
llnz | wrong button | 19:49 |
mithro | Landon: did you see screenshot? | 19:50 |
Landon | ? for the cluster bomb? | 19:51 |
tansell | Landon, yeah | 20:05 |
tansell | screenshots is the wrong word | 20:05 |
Landon | yup, saw it | 20:06 |
tansell | okay cool | 20:11 |
tansell | Landon, do you think it's possible? | 20:11 |
tansell | and you said you would have more screenshots for me? | 20:12 |
Landon | maybe not something so curvy, but yeah | 20:12 |
Landon | hm, i'll see about making a video in a bit | 20:12 |
tansell | Landon, it's just a spline | 20:12 |
tansell | should be pretty easy to do | 20:14 |
tansell | Landon, and how hard is it to drop in replacement particle effects? | 20:14 |
Landon | just a different .material file | 20:14 |
tansell | (for things like the exhust?) | 20:15 |
Landon | no changes in code | 20:15 |
Landon | oh goody | 20:15 |
Landon | ogre has a simplespline class | 20:15 |
tansell | so the laser screenshots? | 20:17 |
Landon | I'l get those in the video :P | 20:18 |
*** mithro has quit IRC | 20:20 | |
*** mithro has joined #tp | 20:21 | |
tansell | cherez, ping? | 20:50 |
cherez | tansell: Pong? | 20:52 |
tansell | cherez, meeting in 10 minutes? | 20:53 |
cherez | Just about to write a weekly report. | 20:53 |
cherez | ...unless I can't connect to blogger. | 20:53 |
cherez | tansell: Can you connect to blogger.com? I cannot. | 21:00 |
tansell | working fine for me | 21:02 |
cherez | Weird.... | 21:02 |
cherez | Well, know any good proxies? | 21:02 |
tansell | nope! | 21:04 |
tansell | you can still write it up and just copy it to your public_html | 21:04 |
* Landon will be a bit longer with that video | 21:04 | |
Landon | fighting with customer service to get my new phone activated :\ | 21:04 |
cherez | Can't connect to my e-mail either. | 21:05 |
cherez | Sounds like my ISP is failing me. | 21:05 |
cherez | ...Not being able to connect to gmail seems to mean I can't upload this CL either. | 21:06 |
cherez | Well, I can upload the coverage report, at least. | 21:06 |
cherez | ... | 21:08 |
cherez | What DOES work on my connection? | 21:08 |
cherez | Well... IRC. | 21:08 |
tansell | so where are we at? | 21:09 |
cherez | Common is pretty much done, and I've modified about half of Client to reflect the API changes that have happened during the project. | 21:12 |
cherez | That is mostly pretty straightforward edititing. | 21:12 |
tansell | and how are you testing? | 21:12 |
cherez | ConnectionCommon just has some hard coded packets transmitted through it. | 21:13 |
cherez | Right now they're plain strings, I might change it to actually build the packet and then use its .str method. | 21:13 |
cherez | The test for Connection will probably just connect to something like google.com and do a simple GET. | 21:14 |
cherez | I might also write a test to open a local socket, but server socket permissions really vary by machines. | 21:15 |
cherez | For SSL wrapper, probably do the same with an HTTPS. | 21:15 |
cherez | Client's testing will probably be with a dummy server over ConnectionCommon. | 21:19 |
tansell | cherez, have you tested the error cases? | 21:20 |
tansell | ie bad packets? | 21:20 |
tansell | packets with insane lengths | 21:20 |
tansell | packets which are too short | 21:20 |
tansell | etc | 21:20 |
tansell | cherez, you can always give the server 0 and then it will bind to a free socket | 21:21 |
cherez | tansell: Right now Common will choke if a wrong length is passed. I'm not really sure what can be done about that. | 21:22 |
tansell | cherez, it needs to die in a sane predictable way | 21:23 |
cherez | With too short that's easy, but if they send us a packet absurdly long and never finish it we can't really say whether it's legit. | 21:23 |
tansell | sure we can - the protocol has limits on the size of a packet | 21:24 |
cherez | Really? | 21:24 |
tansell | see the protocol document | 21:24 |
cherez | Well, length is a uint 32.... | 21:26 |
tansell | cherez, keep reading | 21:26 |
tansell | cherez, we didn't write the protocol document just because we liked writing it :) | 21:27 |
cherez | I thought it was mostly automatically generated? :P | 21:27 |
tansell | for tp04 | 21:28 |
tansell | because writing it for tp03 sucked so much :) | 21:28 |
cherez | Ouch. | 21:29 |
llnz | the limit doesn't appear in the tp04 doc or xml, iirc | 21:29 |
llnz | http://www.thousandparsec.net/tp/dev/documents/protocol3.php#FrameFormat | 21:30 |
tpb | <http://ln-s.net/3npp> (at www.thousandparsec.net) | 21:30 |
llnz | in green | 21:30 |
cherez | No frame may be bigger then 1048576 bytes (1 megabytes) long. | 21:30 |
cherez | Right. | 21:30 |
cherez | So if a frame is larger than that it can flip out. | 21:30 |
tansell | cherez, yeah | 21:35 |
tansell | cherez, it should also have consistent exception when things like the socket closes prematurely | 21:37 |
tansell | cherez, the locking also needs to be checked so that multiple threads can be waiting on stuff from the connection and it all works fine (and the right packets ends up the correct locations) | 21:38 |
cherez | Unit testing threading is hard. :( | 21:39 |
tansell | it's not that hard if you use the correct model | 21:41 |
cherez | Oh? | 21:41 |
tansell | you just put blocks into the threads so they stop at known points | 21:41 |
tansell | and then manipulate the blocks so they execute in the order you want to test | 21:42 |
cherez | Mmm, that makes sense. | 21:42 |
cherez | I guess the blocks we would want are conveniently near yield statements? | 21:42 |
tansell | possibly | 21:44 |
*** bddebian has joined #tp | 21:44 | |
tansell | cherez, so are we on target to reach our goals? | 21:45 |
tansell | cherez, do you remember where we are at? | 21:45 |
tansell | have you managed to make a connection to a real server? | 21:45 |
tansell | have you tried porting something simple like tpclient-pytext? | 21:45 |
tansell | time is quickly running out sadly :( | 21:45 |
cherez | I didn't expect to need to fix bugs in structures and parser, so that slowed me down a little. | 21:46 |
tansell | I would like to prove that we can talk to other systems | 21:46 |
cherez | I should have Client with unit-tests soon, then I'll port either either tpclient-pytext or libtpclient-py. | 21:46 |
tansell | having libtpclient-py able to connect and download the universe is a great proof concenpt | 21:47 |
tansell | tpclient-pytext is probably easier when still trying to get the connect frame to work :) | 21:49 |
tansell | so what will be done by next week? | 21:50 |
cherez | Common just needs some tests, so that for sure, and Client unless I discover that I screwed up fundamentally somewhere and need to do massive rewriting. | 21:52 |
cherez | Gods willing I'll have something with libtpclient-py. | 21:52 |
tansell | cherez, so you where doing really well with the daily blog posts there for a while | 21:52 |
tansell | but you have missed a couple of days last week | 21:53 |
tansell | you also don't seem to be uploading coverage reports very often | 21:53 |
tansell | I would like to see both corrected for this week - do you think you can do that? | 21:54 |
cherez | The last week was mostly bug fixing, so I was working more on getting the unit tests to succeed. | 21:54 |
cherez | It wasn't until last night that I got everything to pass. | 21:55 |
tansell | cherez, that is okay - just comment on the bugs you fixed | 21:55 |
cherez | Alright. | 21:55 |
tansell | or how many tests now pass | 21:55 |
tansell | "Today I fixed X, Y, Z - which meant that tests A and B pass now but C is still broken and the fixes also broke D (which was previously passing) | 21:55 |
tansell | Not quite sure what is up with D - will investigate more tomorrow, have to get to bed otherwise the bogey man will eat me." | 21:56 |
tansell | maybe "Managed to get another 3 points of coverage today, it seems to be getting harder now that I'm trying to test all the error cases. Will have to chat with Mithro tommorrow about possible ways that class XYZ can fail while looking at it funny." | 21:58 |
tansell | cherez, see, it should be pretty simple | 21:59 |
cherez | tansell: Alright. | 21:59 |
tansell | cherez, any questions for me before I head to lunch? | 21:59 |
cherez | Nope, enjoy your lunch. | 21:59 |
tansell | okay - get that CL up as soon as you can | 22:00 |
cherez | Seems my ISP is shooting down any secured connections, so I guess it's whenever they fix that. | 22:01 |
*** Erroneous has quit IRC | 22:11 | |
*** nebaway is now known as nebajoth | 22:26 | |
*** verhoevenv has quit IRC | 22:27 | |
Greywhind | tansell: ping? | 22:39 |
Greywhind | oh, probably at lunch | 22:39 |
*** tuna-fish has joined #tp | 22:42 | |
*** Greywhind has quit IRC | 22:49 | |
*** Greywhind has joined #tp | 22:49 | |
Landon | video up | 23:20 |
Landon | http://www.youube.com/watch?v=3UO4chQf1lE | 23:21 |
Landon | http://www.youtube.com/watch?v=3UO4chQf1lE , even | 23:21 |
tpb | Title: YouTube - Thousand Parsec Battleviewer - Particle Effects (at www.youtube.com) | 23:21 |
llnz | cool | 23:28 |
* Landon needs to tweak laser particle orientations | 23:28 | |
Landon | and possibly color | 23:29 |
tansell | Landon, I expect you need to create a bunch of different particle effects on lasers | 23:46 |
Landon | ok | 23:46 |
tansell | it's the reason I pointed you to all the different laser effect weapons a while back | 23:47 |
Greywhind | tansell: so, i think there's something incompatible with tp04 about the way rfts returns orders | 23:47 |
Greywhind | tansell: i'm not really sure what, exactly | 23:47 |
Greywhind | but orders work with every other ruleset | 23:47 |
llnz | Greywhind: really? | 23:49 |
llnz | odd | 23:49 |
Greywhind | llnz: yeah, it's giving me errors | 23:50 |
Greywhind | whenever i do a new order | 23:50 |
llnz | for all order types? | 23:50 |
Greywhind | llnz: seems like it | 23:51 |
Greywhind | llnz: and also when i join a game after adding the order | 23:51 |
Greywhind | llnz: http://pastebin.com/d2d91828a | 23:52 |
tpb | Title: pastebin - collaborative debugging tool (at pastebin.com) | 23:52 |
tansell | Landon, so I don't see any particle effects on the laser - only on the hit locations? | 23:52 |
*** jmtan has joined #tp | 23:53 | |
Landon | right, only on hit locations | 23:53 |
tansell | as well you didn't record any move animations | 23:53 |
Landon | doh | 23:53 |
tansell | Landon, so the laser itself should also be a particle effect | 23:53 |
Landon | er, how so?? | 23:54 |
llnz | Greywhind: oh, so either the order description is wrong (try to unpack something that isn't there) or the frame was too short | 23:54 |
Greywhind | llnz: yeah | 23:55 |
llnz | I'll have a look tonight | 23:56 |
*** gau_veldt has joined #tp | 23:58 | |
tansell | Landon, you should look at the movies I pointed you to a while back | 23:59 |
Landon | tansell: yeah, I';m looking now | 23:59 |
*** gau_veldt has left #tp | 23:59 | |
Landon | do you want something more gun-fireish than a straight beam? | 23:59 |
tansell | torpedo's could also be moving particle effects | 23:59 |
tansell | Landon, so I'm looking for a wide range of weapons | 23:59 |
tansell | s/weapons/weapon effects/ | 23:59 |
Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!