[Twisted-Python] http://twistedmatrix.com/ trac installation updated

Hi all, Thomas and I have finished upgrading the trac installation on http://twistedmatrix.com/ to 0.11.6. We expect that this will resolve a number of the issues the site has had. If you notice anything broken about the website now, please point it out. Jean-Paul

On Thu, Mar 11, 2010 at 8:05 PM, <exarkun@twistedmatrix.com> wrote:
Hi all,
Thomas and I have finished upgrading the trac installation on http://twistedmatrix.com/ to 0.11.6. We expect that this will resolve a number of the issues the site has had.
If you notice anything broken about the website now, please point it out.
Thank you very much Jean-Paul & Thomas! jml

On Mar 11, 2010, at 3:14 PM, Jonathan Lange wrote:
Thank you very much Jean-Paul & Thomas!
I second this sentiment! I am *thrilled* that we're now on a released version of trac, and I applaud the hard work that it took to get us there. Hopefully now it will be easier for other people to help pitch in with administrative tasks :).

On Thu, Mar 11, 2010 at 2:05 PM, <exarkun@twistedmatrix.com> wrote:
Hi all,
Thomas and I have finished upgrading the trac installation on http://twistedmatrix.com/ to 0.11.6. We expect that this will resolve a number of the issues the site has had.
If you notice anything broken about the website now, please point it out.
Jean-Paul
Here's a minor thing... When viewing a diff, the legend is incomplete. I just see text ("Unmodified", "Added", etc.) without any images/colors. It's a tiny thing, but you did ask... :) browser: Firefox 3.5 on Win32 Kevin Horn

On Mar 11, 2010, at 3:05 PM, exarkun@twistedmatrix.com wrote:
If you notice anything broken about the website now, please point it out.
I'm somewhat regularly (although I'm not sure exactly how often) getting this: Error 503 Service Unavailable Service Unavailable Guru Meditation: XID: 1905866058 Varnish It appears to be an artifact of the upgrade. Also, the spacing on the revision log and repository browser seems wrong; many table rows are double height for some reason. Still, I'm not complaining - just the fact that things paginate now has made the experience of doing triage much more pleasant!

On Sun, Mar 14, 2010 at 1:44 AM, Glyph Lefkowitz <glyph@twistedmatrix.com> wrote:
On Mar 11, 2010, at 3:05 PM, exarkun@twistedmatrix.com wrote:
If you notice anything broken about the website now, please point it out.
Also, the spacing on the revision log and repository browser seems wrong; many table rows are double height for some reason. Still, I'm not complaining - just the fact that things paginate now has made the experience of doing triage much more pleasant!
In case of FF-3.6 the rows are triple height and filled in a funny ragged way. In addition to that the menu is overlapped in FF but this was the same way before update. BTW in IE6 menu is OK. -- Mikhail Terekhov

Hello, I want to create a twisted daemon from my application: if __name__ == '__main__': import nfdprocess, sys log.startLogging(sys.stdout) serverContext = ServerContextFactory() serverContext.protocol = nfdprocess.HandlePacket port =int(sys.argv[1]) checkT = checkTables() checkT.resetTablesToOffline() outgoingTable = LoopingCall(checkT.checkOutgoingMessageQueue,serverContext) incomingTable = LoopingCall(checkT.checkIncomingMessageQueue,serverContext) checkStates= LoopingCall(checkT.checkConnectionStates,serverContext) outgoingTable.start(0.5) incomingTable.start(1) checkStates.start(1) reactor.listenSSL(port, serverContext, serverContext) reactor.run() Currently I have a class called nfdmessenger. I am running the object.
python nfdmessenger.py 2000
However I would run it as a deamon. Not sure how to do this? Can somebody be so kind and offer some pointers on this? Much appreciated, Garyc

Hi,
I want to create a twisted daemon from my application: ...
You want to use twistd. See http://twistedmatrix.com/documents/current/core/howto/basics.html#auto1 The process is roughly: 1) create a myapp.tac file which essentially loads in your server and wraps it in an application 2) run something like: $ twistd -r epoll -y myapp.tac which will daemonize your server (using the epoll reactor) and write its pid to twistd.pid A .tac file could look something like: from twisted.application import service, internet from myapp import MyAppServer def get_service(): """ Return a service suitable for creating an application object. """ site = MyAppServer() port = 2000 return internet.TCPServer(2000, site) application = service.Application('MyApplicationName') # attach the service to its parent application service = get_service() service.setServiceParent(application) Also, keep in mind you might want to use twistd in conjunction with a process runner (http://dustin.github.com/2010/02/28/running-processes.html). That is, if you're using something like Ubuntu, you probably want to run twistd using upstart. Hope this helps. Reza -- Reza Lotun mobile: +44 (0)7521 310 763 email: rlotun@gmail.com work: reza@tweetdeck.com twitter: @rlotun

Thanks Reza I wil give it a crack. Much appreciated, Garyc --- On Mon, 3/15/10, Reza Lotun <rlotun@gmail.com> wrote:
From: Reza Lotun <rlotun@gmail.com> Subject: Re: [Twisted-Python] Creating a daemon from my application To: "Twisted general discussion" <twisted-python@twistedmatrix.com> Date: Monday, March 15, 2010, 10:35 AM Hi,
I want to create a twisted daemon from my application: ...
You want to use twistd. See http://twistedmatrix.com/documents/current/core/howto/basics.html#auto1
The process is roughly:
1) create a myapp.tac file which essentially loads in your server and wraps it in an application 2) run something like: $ twistd -r epoll -y myapp.tac which will daemonize your server (using the epoll reactor) and write its pid to twistd.pid
A .tac file could look something like:
from twisted.application import service, internet from myapp import MyAppServer
def get_service(): """ Return a service suitable for creating an application object. """ site = MyAppServer() port = 2000 return internet.TCPServer(2000, site)
application = service.Application('MyApplicationName') # attach the service to its parent application service = get_service() service.setServiceParent(application)
Also, keep in mind you might want to use twistd in conjunction with a process runner (http://dustin.github.com/2010/02/28/running-processes.html). That is, if you're using something like Ubuntu, you probably want to run twistd using upstart.
Hope this helps.
Reza
-- Reza Lotun mobile: +44 (0)7521 310 763 email: rlotun@gmail.com work: reza@tweetdeck.com twitter: @rlotun
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Hello, I compacted the server code initialization into the ServerContextFactory: from nfdmessenger import ServerContextFactory from twisted.internet import ssl, reactor if __name__ == '__main__': serverContext = ServerContextFactory() reactor.listenSSL(2000, serverContext, serverContext) reactor.run() Running the below: python nfddaemon.py Looks goods and runs as expected: I then moved the code into a tac file: from twisted.application import service,internet from nfdmessenger import ServerContextFactory from twisted.internet import ssl, reactor def get_service(): serverContext = ServerContextFactory() return reactor.listenSSL(2000, serverContext, serverContext) application=service.Application('nfdm') service=get_service() service.setServiceParent(application) When I attempt to run:
twistd -r epoll -y nfddaemon.tac
File "nfddaemon.tac", line 2, in <module> from nfdmessenger import ServerContextFactory exceptions.ImportError: No module named nfdmessenger It looks like it cannot find the module? Do I have to set the path? Also not too sure about my getService routine...well suspect. Thanks, Garyc --- On Mon, 3/15/10, gary clark <burslem2001@yahoo.com> wrote:
From: gary clark <burslem2001@yahoo.com> Subject: Re: [Twisted-Python] Creating a daemon from my application To: "Twisted general discussion" <twisted-python@twistedmatrix.com> Date: Monday, March 15, 2010, 11:14 AM Thanks Reza I wil give it a crack.
Much appreciated, Garyc
--- On Mon, 3/15/10, Reza Lotun <rlotun@gmail.com> wrote:
From: Reza Lotun <rlotun@gmail.com> Subject: Re: [Twisted-Python] Creating a daemon from my application To: "Twisted general discussion" <twisted-python@twistedmatrix.com> Date: Monday, March 15, 2010, 10:35 AM Hi,
I want to create a twisted daemon from my application: ...
You want to use twistd. See http://twistedmatrix.com/documents/current/core/howto/basics.html#auto1
The process is roughly:
1) create a myapp.tac file which essentially loads in your server and wraps it in an application 2) run something like: $ twistd -r epoll -y myapp.tac which will daemonize your server (using the epoll reactor) and write its pid to twistd.pid
A .tac file could look something like:
from twisted.application import service, internet from myapp import MyAppServer
def get_service(): """ Return a service suitable for creating an application object. """ site = MyAppServer() port = 2000 return internet.TCPServer(2000, site)
application = service.Application('MyApplicationName') # attach the service to its parent application service = get_service() service.setServiceParent(application)
Also, keep in mind you might want to use twistd in conjunction with a process runner (http://dustin.github.com/2010/02/28/running-processes.html). That is, if you're using something like Ubuntu, you probably want to run twistd using upstart.
Hope this helps.
Reza
-- Reza Lotun mobile: +44 (0)7521 310 763 email: rlotun@gmail.com work: reza@tweetdeck.com twitter: @rlotun
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Yeh I have to install them and create a setup.py to find the path. --- On Mon, 3/15/10, gary clark <burslem2001@yahoo.com> wrote:
From: gary clark <burslem2001@yahoo.com> Subject: Re: [Twisted-Python] Creating a daemon from my application To: "Twisted general discussion" <twisted-python@twistedmatrix.com> Date: Monday, March 15, 2010, 12:19 PM Hello,
I compacted the server code initialization into the ServerContextFactory:
from nfdmessenger import ServerContextFactory from twisted.internet import ssl, reactor
if __name__ == '__main__': serverContext = ServerContextFactory() reactor.listenSSL(2000, serverContext, serverContext) reactor.run()
Running the below:
python nfddaemon.py
Looks goods and runs as expected:
I then moved the code into a tac file:
from twisted.application import service,internet from nfdmessenger import ServerContextFactory from twisted.internet import ssl, reactor
def get_service(): serverContext = ServerContextFactory() return reactor.listenSSL(2000, serverContext, serverContext)
application=service.Application('nfdm') service=get_service() service.setServiceParent(application)
When I attempt to run:
twistd -r epoll -y nfddaemon.tac
File "nfddaemon.tac", line 2, in <module> from nfdmessenger import ServerContextFactory exceptions.ImportError: No module named nfdmessenger
It looks like it cannot find the module? Do I have to set the path? Also not too sure about my getService routine...well suspect.
Thanks, Garyc
--- On Mon, 3/15/10, gary clark <burslem2001@yahoo.com> wrote:
From: gary clark <burslem2001@yahoo.com> Subject: Re: [Twisted-Python] Creating a daemon from my application To: "Twisted general discussion" <twisted-python@twistedmatrix.com> Date: Monday, March 15, 2010, 11:14 AM Thanks Reza I wil give it a crack.
Much appreciated, Garyc
--- On Mon, 3/15/10, Reza Lotun <rlotun@gmail.com> wrote:
From: Reza Lotun <rlotun@gmail.com> Subject: Re: [Twisted-Python] Creating a daemon from my application To: "Twisted general discussion" <twisted-python@twistedmatrix.com> Date: Monday, March 15, 2010, 10:35 AM Hi,
I want to create a twisted daemon from my application: ...
You want to use twistd. See http://twistedmatrix.com/documents/current/core/howto/basics.html#auto1
The process is roughly:
1) create a myapp.tac file which essentially loads in your server and wraps it in an application 2) run something like: $ twistd -r epoll -y myapp.tac which will daemonize your server (using the epoll reactor) and write its pid to twistd.pid
A .tac file could look something like:
from twisted.application import service, internet from myapp import MyAppServer
def get_service(): """ Return a service suitable for creating an application object. """ site = MyAppServer() port = 2000 return internet.TCPServer(2000, site)
application = service.Application('MyApplicationName') # attach the service to its parent application service = get_service() service.setServiceParent(application)
Also, keep in mind you might want to use twistd in conjunction with a process runner (http://dustin.github.com/2010/02/28/running-processes.html). That is, if you're using something like Ubuntu, you probably want to run twistd using upstart.
Hope this helps.
Reza
-- Reza Lotun mobile: +44 (0)7521 310 763 email: rlotun@gmail.com work: reza@tweetdeck.com twitter: @rlotun
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

On Mon, Mar 15, 2010 at 6:03 PM, gary clark <burslem2001@yahoo.com> wrote:
Yeh I have to install them and create a setup.py to find the path.
You only need to set your PYTHONPATH environment variable. e.g. $ export PYTHONPATH=/path/to/dir/containing/code -- Reza Lotun mobile: +44 (0)7521 310 763 email: rlotun@gmail.com work: reza@tweetdeck.com twitter: @rlotun

Hello, twistd -r epoll -y ./nfddaemon.tac The below is the .tac file: from twisted.application import service,internet from nfdmessenger import ServerContextFactory from twisted.internet import ssl, reactor def get_service(): serverContext = ServerContextFactory() return reactor.listenSSL(2000, serverContext, serverContext) application=service.Application('nfdm') service=get_service() service.setServiceParent(application) Not sure what to do at this point. It runs and then dies, doing something wrong in getService() dont know ehat the correct syntax is: File "./nfddaemon.tac", line 12, in <module> service.setServiceParent(application) exceptions.AttributeError: 'Port' object has no attribute 'setServiceParent' Thanks, Garyc --- On Mon, 3/15/10, Reza Lotun <rlotun@gmail.com> wrote:
From: Reza Lotun <rlotun@gmail.com> Subject: Re: [Twisted-Python] Creating a daemon from my application To: "Twisted general discussion" <twisted-python@twistedmatrix.com> Date: Monday, March 15, 2010, 1:15 PM On Mon, Mar 15, 2010 at 6:03 PM, gary clark <burslem2001@yahoo.com> wrote:
Yeh I have to install them and create a setup.py to find the path.
You only need to set your PYTHONPATH environment variable.
e.g.
$ export PYTHONPATH=/path/to/dir/containing/code
-- Reza Lotun mobile: +44 (0)7521 310 763 email: rlotun@gmail.com work: reza@tweetdeck.com twitter: @rlotun
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Ok the below works: from twisted.application import service,internet from nfdmessenger import ServerContextFactory from twisted.internet import ssl, reactor def get_service(): serverContext = ServerContextFactory() return internet.SSLServer(2000, serverContext) application=service.Application('nfdm') service=get_service() service.setServiceParent(application) --- On Mon, 3/15/10, gary clark <burslem2001@yahoo.com> wrote:
From: gary clark <burslem2001@yahoo.com> Subject: Re: [Twisted-Python] Creating a daemon from my application To: "Twisted general discussion" <twisted-python@twistedmatrix.com> Date: Monday, March 15, 2010, 3:42 PM Hello,
twistd -r epoll -y ./nfddaemon.tac
The below is the .tac file:
from twisted.application import service,internet from nfdmessenger import ServerContextFactory from twisted.internet import ssl, reactor
def get_service(): serverContext = ServerContextFactory() return reactor.listenSSL(2000, serverContext, serverContext)
application=service.Application('nfdm') service=get_service() service.setServiceParent(application)
Not sure what to do at this point. It runs and then dies, doing something wrong in getService() dont know ehat the correct syntax is:
File "./nfddaemon.tac", line 12, in <module> service.setServiceParent(application) exceptions.AttributeError: 'Port' object has no attribute 'setServiceParent'
Thanks, Garyc
--- On Mon, 3/15/10, Reza Lotun <rlotun@gmail.com> wrote:
From: Reza Lotun <rlotun@gmail.com> Subject: Re: [Twisted-Python] Creating a daemon from my application To: "Twisted general discussion" <twisted-python@twistedmatrix.com> Date: Monday, March 15, 2010, 1:15 PM On Mon, Mar 15, 2010 at 6:03 PM, gary clark <burslem2001@yahoo.com> wrote:
Yeh I have to install them and create a setup.py to find the path.
You only need to set your PYTHONPATH environment variable.
e.g.
$ export PYTHONPATH=/path/to/dir/containing/code
-- Reza Lotun mobile: +44 (0)7521 310 763 email: rlotun@gmail.com work: reza@tweetdeck.com twitter: @rlotun
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

from twisted.application import service,internet from nfdmessenger import ServerContextFactory from twisted.internet import ssl, reactor def get_service(): serverContext = ServerContextFactory() return internet.SSLServer(2000, serverContext,serverContext) application=service.Application('nfdm') service=get_service() service.setServiceParent(application) Thats better. --- On Mon, 3/15/10, gary clark <burslem2001@yahoo.com> wrote:
From: gary clark <burslem2001@yahoo.com> Subject: Re: [Twisted-Python] Creating a daemon from my application To: "Twisted general discussion" <twisted-python@twistedmatrix.com> Date: Monday, March 15, 2010, 4:00 PM Ok the below works:
from twisted.application import service,internet from nfdmessenger import ServerContextFactory from twisted.internet import ssl, reactor
def get_service(): serverContext = ServerContextFactory() return internet.SSLServer(2000, serverContext)
application=service.Application('nfdm') service=get_service() service.setServiceParent(application)
--- On Mon, 3/15/10, gary clark <burslem2001@yahoo.com> wrote:
From: gary clark <burslem2001@yahoo.com> Subject: Re: [Twisted-Python] Creating a daemon from my application To: "Twisted general discussion" <twisted-python@twistedmatrix.com> Date: Monday, March 15, 2010, 3:42 PM Hello,
twistd -r epoll -y ./nfddaemon.tac
The below is the .tac file:
from twisted.application import service,internet from nfdmessenger import ServerContextFactory from twisted.internet import ssl, reactor
def get_service(): serverContext = ServerContextFactory() return reactor.listenSSL(2000, serverContext, serverContext)
application=service.Application('nfdm') service=get_service() service.setServiceParent(application)
Not sure what to do at this point. It runs and then dies, doing something wrong in getService() dont know ehat the correct syntax is:
File "./nfddaemon.tac", line 12, in <module> service.setServiceParent(application) exceptions.AttributeError: 'Port' object has no attribute 'setServiceParent'
Thanks, Garyc
--- On Mon, 3/15/10, Reza Lotun <rlotun@gmail.com> wrote:
From: Reza Lotun <rlotun@gmail.com> Subject: Re: [Twisted-Python] Creating a daemon from my application To: "Twisted general discussion" <twisted-python@twistedmatrix.com> Date: Monday, March 15, 2010, 1:15 PM On Mon, Mar 15, 2010 at 6:03 PM, gary clark <burslem2001@yahoo.com> wrote:
Yeh I have to install them and create a setup.py to find the path.
You only need to set your PYTHONPATH environment variable.
e.g.
$ export PYTHONPATH=/path/to/dir/containing/code
-- Reza Lotun mobile: +44 (0)7521 310 763 email: rlotun@gmail.com work: reza@tweetdeck.com twitter: @rlotun
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

On Mon, Mar 15, 2010 at 09:30:05AM -0500, Mikhail Terekhov wrote:
On Sun, Mar 14, 2010 at 1:44 AM, Glyph Lefkowitz <glyph@twistedmatrix.com> wrote:
On Mar 11, 2010, at 3:05 PM, exarkun@twistedmatrix.com wrote:
If you notice anything broken about the website now, please point it out.
Also, the spacing on the revision log and repository browser seems wrong; many table rows are double height for some reason. Still, I'm not complaining - just the fact that things paginate now has made the experience of doing triage much more pleasant!
In case of FF-3.6 the rows are triple height and filled in a funny ragged way.
There's a <span class="expand"> </span> in the markup at the beginning of the first cell in each row, followed by an <a> tag that actually links to the directory in question. For some reason, <a> tags in that table have "display: block" (/trac/chrome/common/css/browser.css, line 50) which among other things forces them to start on a new line, after the <span>. If the <span> was removed (putting the <a> at the beginning of the cell), or the "display:block" was removed (making the <a> follow the <span> on the same line), or the was removed (collapsing the <span> to zero height so it wouldn't leave a gap), things should be prettier.
In addition to that the menu is overlapped in FF but this was the same way before update. BTW in IE6 menu is OK.
Which menu is that?

On Mon, Mar 15, 2010 at 6:36 PM, Tim Allen <screwtape@froup.com> wrote:
On Mon, Mar 15, 2010 at 09:30:05AM -0500, Mikhail Terekhov wrote:
On Sun, Mar 14, 2010 at 1:44 AM, Glyph Lefkowitz <glyph@twistedmatrix.com> wrote:
On Mar 11, 2010, at 3:05 PM, exarkun@twistedmatrix.com wrote:
If you notice anything broken about the website now, please point it out.
Also, the spacing on the revision log and repository browser seems wrong; many table rows are double height for some reason. Still, I'm not complaining - just the fact that things paginate now has made the experience of doing triage much more pleasant!
In case of FF-3.6 the rows are triple height and filled in a funny ragged way.
There's a <span class="expand"> </span> in the markup at the beginning of the first cell in each row, followed by an <a> tag that actually links to the directory in question. For some reason, <a> tags in that table have "display: block" (/trac/chrome/common/css/browser.css, line 50) which among other things forces them to start on a new line, after the <span>. If the <span> was removed (putting the <a> at the beginning of the cell), or the "display:block" was removed (making the <a> follow the <span> on the same line), or the was removed (collapsing the <span> to zero height so it wouldn't leave a gap), things should be prettier.
I'm not an expert on css so I can't comment on that. The thing is that I've never seen that behavior in any other Trac site on the net, so it is something twistedmatrix specific IMHO.
In addition to that the menu is overlapped in FF but this was the same way before update. BTW in IE6 menu is OK.
Which menu is that?
The Wiki/Timeline/... and Login/Preferences/..., see attached screen shot.

On 16 Mar 2010, at 13:48, Mikhail Terekhov wrote
I'm not an expert on css so I can't comment on that. The thing is that I've never seen that behavior in any other Trac site on the net, so it is something twistedmatrix specific IMHO.
In addition to that the menu is overlapped in FF but this was the same way before update. BTW in IE6 menu is OK.
Which menu is that?
The Wiki/Timeline/... and Login/Preferences/..., see attached screen shot.
I think the Trac installation was updated (the software) but not the template with all the css, so it's trying to make an early (alpha?) version of Trac 0.11 look like Trac 0.11.6. Is it possible to take a clean css export from a new Trac environment and merge the existing css styles in there? Let me know if you need help with that of course. Cheers, Thijs

On Tue, 16 Mar 2010 09:48:17 -0400 Mikhail Terekhov <termim@gmail.com> wrote:
On Mon, Mar 15, 2010 at 6:36 PM, Tim Allen <screwtape@froup.com> wrote:
On Mon, Mar 15, 2010 at 09:30:05AM -0500, Mikhail Terekhov wrote:
In addition to that the menu is overlapped in FF but this was the same way before update. BTW in IE6 menu is OK.
Which menu is that?
The Wiki/Timeline/... and Login/Preferences/..., see attached screen shot.
Ah, I see. That menu looks fine on my machine (using Firefox 3.7a3 on Linux), but I can get something sort of similar if I boost the Firefox's 'minimum font size' option to 12 or 13 instead of my usual 10. It turns out that the "banner" section (from the green gradient to the top, down to "Login/Preferences/...") is sized at exactly 135px high, which makes some grave assumptions about the sizes of the fonts involved. If I delete that fixed height, then the two rows of menus no longer overlap. The lower menu (Wiki/Timeline/...) still looks a bit odd, because its gradient background is an image exactly 22px tall, so if the text is higher than that you get a dark margin appearing below. Not much to be done about, that, really - except perhaps changing the background colour so it matches the final colour in the gradient, which makes the problem less obvious rather than actually fixing it.
participants (10)
-
exarkun@twistedmatrix.com
-
gary clark
-
Glyph Lefkowitz
-
Jonathan Lange
-
Kevin Horn
-
Mikhail Terekhov
-
Reza Lotun
-
Thijs Triemstra | Collab
-
Tim Allen
-
Timothy Allen