Boy do they have a lot to answer for. The company I work for uses it, and believe me, it makes a right mess of the code. Not to say other HTML editors don't, but when I'm trying hand edit some code (so it, you know, works in non-IE browsers) and I see this:
Permalink | Author:Silver | Tags:Work, HTML | Posted: 04:12PM on Friday, 03 June, 2005 | Comments: 0
Users Who Don't Want Help
I get the feeling sometimes users don't really want any help, they just want to annoy those trying to help. You suggest they try X or Y, and they say that they copied some example from place Z. So you ask for a URL, and they give you one... you point out the major bit they didn't copy correctly, and they claim they are "just following the examples" and ignore anything you suggest again. Times like these I wonder why I ever tried to help in the first place...
It's in need of some slight attention right now. The main problem is that it always prefers munger entries that were enumerated first, which equates to added first in Spidermonkey (Mozilla's JS Engine).
I filed the bug on it a while ago now, but it recently came to my attention that Wikipedia actually had a script that broke stuff because of it. I've corrected the script with version 1.2 so it doesn't completely break normal links, but the real bug still stands.
So, I added --enable-svg and --enable-canvas to my Mozilla Firefox build config the other day. Apparently that forces me into building Cairo, which, um, doesn't build.
m:\source-HEAD\mozilla\gfx\cairo\cairo\src\cairo-win32-private.h(43) : warning C4005: 'WINVER' : macro redefinition command-line arguments : see previous definition of 'WINVER' ../../../../../../source-HEAD\mozilla\gfx\cairo\cairo\src\cairo-win32.h(66) : fatal error C1189: #error : Cairo was not compiled with support for the win32 backend
Update: It seems that, on way or another, I ended up with cairo-features.h in the srcdir without it being listed in CVS\Entries, so it never got removed. Thanks to vlad who suggested looking for that file in other locations. Let's hope it builds now.
You know how you get the feeling of what day it is by how well things go? Well, today has definately been a Monday - and a bad one. Not so much bad as in hardware blowing up, or injuries or anything, just people out to get me. All of them.
Dontcha just love 'em? My work suddenly seemed to decide that everything you could think of needed changing/doing with the project, and with the deadline at 1pm! Oh, and we had some fun with rsync not setting the times on the synced files for part of the day. I've done over 18 hours work over yesterday and today, and man I'm worn out.
Filtering stuff is one of those things everyone wants to do, no-one wants to write the code, and even fewer debug it when it breaks. Luckly, this doesn't stop some intrepid people from adding message filtering to ChatZilla.
Of course, the killer questions are:
what to filter with, and
what to do when a filter matches?
The first question is relatively easy, we only have a limited number of things known about a message anyway.
Actual message text, of course
The type of message (PRIVMSG, NOTICE, JOIN, etc.)
Source (e.g. the user object)
Destination (e.g. the channel object)
Handler source. This one is the fun one - it is where the message was displayed 'from', e.g. what code handled it. It may sound useless, except that it will be the default destination if no filters match, and will mean messages for a particular channel will appear on that channel (at least by default!).
That was easy. So what about the actions? They are more fun, as this is where the real flexibility will lie in the system. What I see being included:
display on source view
display on destination view
display on handler view
display on handler's parent view
set message priority (superfluous, activity, attention)
Ever had the feeling the program is simply mocking you? Try doing addEventListener("foo", null, false) in a recent Mozilla or Firefox and you might understand.
It doesn't just throw an error (which seems a fairly sensible thing to do, given I'm providing bogus data), it throws a null error. That's not an error which says only "null", the actual error object itself is null! What gives?
With my basic knowledge of how XPConnect & co. work I can't work out how this can happen normally. The following three cases are what normally happens:
If it can't convert the input data to make the wrapped call, you get a huge long error about "arg 1" or whatever.
If the native code returns a failure code, you get an exception generated by XPConnect (which is just as excessive as the argument error one).
If the native code returns a success code, you get the _retval, and not an exception.
This leaves only one option I can think of: the native code is returning a failure code, but also setting the XPConnect exception object explicitly to null (which allows native code to return nice exceptions to JS and other scripted languages, while still returning the 'nice' NS_ERROR code to native callers). I just can't find out where.
I will be off down to Cov for the entire week, to generally socialise and stuff. Since multiple companies are sucking heavily with regards to something as simple as getting a PSU to me, the computer I am taking may or may not actually have a PSU in it when I take it. I'm willing to bet it wont. The upshot of this is that I may have significantly limited access to anything Internet-like for a few days, but damn well better be on-line by Wednesday.
Since I wont be taking my laptop, twpol.dyndns.org will stay up and fully functioning (bearing with issues like ADSL going pop), and all the usual contact methods will work as good as they ever do.
Note: It seems warwickcompsoc.co.uk has died as of 12:22AM UK BST, suspected to be heatstroke. That wont be back until last morning Monday I suspect.
I have a mostly working line marker! It's not perfect (when it appears, it doesn't scroll the line into view, meaning it is really hard to tell when it is occuring to the unfocused view), but it works for the most part. Still got some issues with scrollDown and force to sort out...
My new box (GALINSTAN) is up and working great - I'm writing this from it. However, it is running Windows XP 64bit (which is great fun) and I lack wireless cards that have network drivers (from what I can find out, only one or maybe two companies have got 64bit drivers currently, which is a shame). So I decided to simply route the small physical LAN in my room through one box that can use the wireless. Here's a summary of before:
200MHz P2, 32MB RAM
1GHz P3, 384MB RAM
750MHz P3, 192MB RAM
Nice and simple - each box is on both the wireless (main) LAN using DHCP and also on my physical mini-LAN by fixed IP. I added Galinstan thus:
2GHz AMD64, 1GB RAM
Then came the fun bit. I needed one of the three original boxes to route between the networks. So I just enable IP routing, right?
A few hours later, I finally found the key - literally.
Set that and reboot. At least ipconfig /all agreed with me now. Of course, it's all very well having the box route, but everyone else needs to know this...
This was easy, luckly, and just involved setting the gateway on each box (BRONZE, SILVER, GOLD and GALINSTAN) to 41 (i.e. GOLD), which I'd picked to be the router. That almost works - packets go flying out onto the wireless network, but of course the replies don't know how to come back! So a single persisten route was added to PLATINUM (the wireless router box) to route anything for the physical mini-LAN to GOLD's wireless IP (which I'd now reserved in the DHCP server so it was effectively static).
I now have 4 boxes in my room, all with 'net access, and all accessible from the house router (meaning I can forward public ports to them for services as nessessary).