discuss: flowcharts update


Previous by date: 26 Apr 2005 06:01:49 -0000 flowcharts update, Machtelt Garrels
Next by date: 26 Apr 2005 06:01:49 -0000 Re: flowcharts update, Machtelt Garrels
Previous in thread: 26 Apr 2005 06:01:49 -0000 flowcharts update, Machtelt Garrels
Next in thread: 26 Apr 2005 06:01:49 -0000 Re: flowcharts update, Machtelt Garrels

Subject: Re: flowcharts update
From: Alex Nordstrom ####@####.####
Date: 26 Apr 2005 06:01:49 -0000
Message-Id: <200504261401.35543.lx@se.linux.org>

On Tue, 26 Apr 2005 12:46, Machtelt Garrels wrote:
> I've found some time to incorporate remarks about the publishing and
> maintenance flowcharts.  Can you have a look at them:
>
> http://tille.xalasys.com/training/tldp/flowcharts.php

Perhaps I'm colour blind, but in the maintenance image, I can't see any 
boxes that have the darker blue colour representing CVS access 
according to the legend.

In general, using colour as the only means with which to convey some 
information is inadvisable, as the W3C Web Accessibility Guidelines, 
for example, point out. It would seem particularly perilous to use 
colours that are as similar as light blue and lighter blue (this also 
applies to the blue link text on lighter blue background and to colours 
that may appear similar to colour blind readers).

My suggestion would be to select more distinctive colours and preferably 
add another way to convey the information conveyed by the colours.

> Can somebody try to make the PNG files smaller while maintaining
> readability?

There is a lot to be won by using an efficient PNG compression 
algorithm. Running pngcrush on a poorly optimised PNG file will reduce 
its size nondestructively. In this case, the reduction is 35%. The 
Gimp, when set to maximum compression, achieves a file size on par with 
pngcrush.

Further gains can be made by converting the image to an indexed palette. 
I found that, for the images in question, a 64-colour palette still 
provides acceptable anti-aliasing and (consequently) legibility while 
achieving a 64% average reduction in file size:

http://se.linux.org/Medlemmar/lx/tldp-publishing-flowchart-1.4.png
(Reduced to 39.3 KiB from 120.3 KiB)

http://se.linux.org/Medlemmar/lx/tldp-maintenance-flowchart-1.2.png
(Reduced to 53.4 KiB from 133.7 KiB)

To do this, select the "Image" menu in the Gimp, "Mode" submenu, and 
"Indexed..." menu item. Select "Generate optimum palette" and enter 
"64" as the "Maximum number of colours". You may wish to try different 
colour dithering modes for best results. Click OK to apply.

When saving, make sure all checkboxes are unchecked and set the 
"Compression level" to "9".

-- 
Alex Nordstrom
http://lx.n3.net/
Please do not CC me in followups;
I am subscribed to the tldp discussion list.

--> -->
 
 
<type 'exceptions.IOError'>
Python 2.5.2: /usr/bin/python
Wed Jul 3 09:38:38 2024

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 /opt/ezmlm-browse-0.20/<string> in ()
 /opt/ezmlm-browse-0.20/main.py in main()
  424 
  425         if path is not None:
  426                 main_path(path)
  427         else:
  428                 main_form()
global main_form = <function main_form at 0x9bcdc6c>
 /opt/ezmlm-browse-0.20/main.py in main_form()
  378         except ImportError:
  379                 die(ctxt, "Invalid command")
  380         module.do(ctxt)
  381 
  382 def main():
module = <module 'commands.showmsg' from '/opt/ezmlm-browse-0.20/commands/showmsg.pyc'>, module.do = <function do at 0x9be310c>, global ctxt = {'cmd': 'showmsg', 'threadidx': 1, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}
 /opt/ezmlm-browse-0.20/commands/showmsg.py in do(ctxt={'cmd': 'showmsg', 'threadidx': 1, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'})
   18         write(html('msg-pager') % ctxt)
   19         write('<hr>')
   20         sub_showmsg(ctxt, ctxt[MSGNUM])
   21         write('<hr>')
   22         write(html('msg-pager') % ctxt)
global sub_showmsg = <function sub_showmsg at 0x9bcd1ec>, ctxt = {'cmd': 'showmsg', 'threadidx': 1, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, global MSGNUM = 'msgnum'
 /opt/ezmlm-browse-0.20/globalfns.py in sub_showmsg(ctxt={'cmd': 'showmsg', 'threadidx': 1, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msgnum=9294)
  229         format_timestamp(ctxt, ctxt)
  230         write(html('msg-header') % ctxt)
  231         rec_showpart(ctxt, msg, 0)
  232         write(html('msg-footer') % ctxt)
  233         ctxt.pop()
global rec_showpart = <function rec_showpart at 0x9bcd1b4>, ctxt = {'cmd': 'showmsg', 'threadidx': 1, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msg = <email.message.Message instance at 0x9c40dec>
 /opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 1, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x9c40dec>, partnum=1)
  205                 else:
  206                         for p in part.get_payload():
  207                                 partnum = rec_showpart(ctxt, p, partnum+1)
  208         else:
  209                 write(html('msg-sep') % ctxt)
partnum = 1, global rec_showpart = <function rec_showpart at 0x9bcd1b4>, ctxt = {'cmd': 'showmsg', 'threadidx': 1, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, p = <email.message.Message instance at 0x9c40d8c>
 /opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 1, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x9c40d8c>, partnum=2)
  208         else:
  209                 write(html('msg-sep') % ctxt)
  210                 sub_showpart(ctxt, part)
  211         return partnum
  212 
global sub_showpart = <function sub_showpart at 0x9bcd144>, ctxt = {'cmd': 'showmsg', 'threadidx': 1, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part = <email.message.Message instance at 0x9c40d8c>
 /opt/ezmlm-browse-0.20/globalfns.py in sub_showpart(ctxt={'cmd': 'showmsg', 'threadidx': 1, 'HTTP_X_FORWA...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x9c40d8c>)
  164         type = ctxt[TYPE] = part.get_content_type()
  165         ctxt[FILENAME] = part.get_filename()
  166         template = html('msg-' + type.replace('/', '-'))
  167         if not template:
  168                 template = html('msg-' + type[:type.find('/')])
global template = <function template at 0x9bc5e9c>, global html = <function html at 0x9bc5ed4>, type = 'application/pgp-signature', type.replace = <built-in method replace of str object at 0x9c45a68>
 /opt/ezmlm-browse-0.20/globalfns.py in html(name='msg-application-pgp-signature')
   40 
   41 def html(name):
   42         return template(name + '.html')
   43 
   44 def xml(name):
global template = <function template at 0x9bc5e9c>, name = 'msg-application-pgp-signature'
 /opt/ezmlm-browse-0.20/globalfns.py in template(filename='msg-application-pgp-signature.html')
   31         except IOError:
   32                 if not _template_zipfile:
   33                         _template_zipfile = zipfile.ZipFile(sys.argv[0])
   34                 try:
   35                         f = _template_zipfile.open(n).read()
global _template_zipfile = None, global zipfile = <module 'zipfile' from '/usr/lib/python2.5/zipfile.pyc'>, zipfile.ZipFile = <class zipfile.ZipFile at 0x9b5ea7c>, global sys = <module 'sys' (built-in)>, sys.argv = ['-c', '/opt/ezmlm-browse-0.20']
 /usr/lib/python2.5/zipfile.py in __init__(self=<zipfile.ZipFile instance at 0x9bd9b2c>, file='-c', mode='r', compression=0, allowZip64=False)
  337             self.filename = file
  338             modeDict = {'r' : 'rb', 'w': 'wb', 'a' : 'r+b'}
  339             self.fp = open(file, modeDict[mode])
  340         else:
  341             self._filePassed = 1
self = <zipfile.ZipFile instance at 0x9bd9b2c>, self.fp = None, builtin open = <built-in function open>, file = '-c', modeDict = {'a': 'r+b', 'r': 'rb', 'w': 'wb'}, mode = 'r'

<type 'exceptions.IOError'>: [Errno 2] No such file or directory: '-c'
      args = (2, 'No such file or directory')
      errno = 2
      filename = '-c'
      message = ''
      strerror = 'No such file or directory'