Aug 29, 2007

tracd does not accept folded http header

I found that tracd does not work in some cases, specifically when the http header is folded because of its longness. To solve this problem, I modified /usr/lib/python2.4/site-packages/trac/web/wsgi.py as following.
  1. Make unfold_header function.
    def unfold_header(self):
        lineno = 1
        while lineno < len(self.headers.headers):
            header = self.headers.headers[lineno]
            if header.startswith(' ') or header.startswith('\t'):
                self.headers.headers[lineno - 1] += header
                del(self.headers.headers[lineno])
            else:
                lineno = lineno + 1
    
  2. Call this function from setup_environ function in WSGIRequestHandler class.
    length = self.headers.getheader('content-length')
    if length:
        environ['CONTENT_LENGTH'] = length
    
    # insert this line here.
    self.unfold_header()
    
    for name, value in [header.split(':', 1) for header
                        in self.headers.headers]:
    
This was my first time to program in Python, so there might be some problems. But this modified tracd is working for now.

Aug 22, 2007

mqo loader beta ?

I have eventually submitted my metasequoia loader to Snippets of Spark project. Only few tests about my library have done, so any bug reports are welcomed.

My next task is perhaps to load MIKOTO file that describes motion of metasequoia model. Watching motion of 3D model will fascinate us rather than watching rendered image that never moves.

Aug 5, 2007

mqo loader private alpha

Here is my private alpha version of .mqo file loader for Papervision3D. Mqo files are used by Metasequoia typically in Japan.

Jul 23, 2007

Location of flashlog

Since I changed my computer from XP to Vista, today is first time to use trace function of AS3. First, I created file named mm.cfg and wrote these lines.

TraceOutputFileName=D:\Users\\Documents\AS3\trace.txt
ErrorReportingEnable=1
TraceOutputFileEnable=1


But this did not work. I changed all the backslashes into slashes, but nothing has changed. I removed the first line to put the output file in default location, then it worked. Even TraceOutputFileName is not an necessary option, this behavior is strange.

I found the answer of this problem in the LiveDocs.

Note: Beginning with the Flash Player 9 Update, Flash Player ignores the TraceOutputFileName property.


TraceOutputFileName no longer works.

Jul 18, 2007

Poor Japanese VS2005 Express

Playing with Orcus is something exciting, but VS2005 Express Edition is still good choice for indie programmers. You can get it by pushing 'Go' button at here.

Japanese version is somehow complicated. When you click 'Web からインストール', you will be requested to log into msn. Moreover, an annoying form will appear that must be filled out. Your name, email address, address of work location, and some questionnaires will be needed. But you can download Japanese version from English site. Of course, a key to activate Visual Studio is needed.

Jul 15, 2007

Use macro for dynamic linking of DLL

Dynamic linking of DLL needs more code than static linking. We have to use GetProcAddress() API for each functions. It may cause bug if we make typo.
m_fnSetCommInfo =
  reinterpret_cast< FnSetCommInfo >(
  ::GetProcAddress( m_hLibrary, "SetCommInfo" ) );
m_fnGetCommInfo =
  reinterpret_cast< FnGetCommInfo >(
  ::GetProcAddress( m_hLibrary, "GetComInfo" ) ); // <-- Ahh !!
Define statement prevents such bug.
#define LOAD_FUNCTION(name) \
  m_fn##name = reinterpret_cast< Fn##name >( \
  ::GetProcAddress( m_hLibrary, #name ) );

LOAD_FUNCTION( SetCommInfo );
LOAD_FUNCTION( GetCommInfo );
This is easier to read. Macro sometimes prevents bug.

Jul 9, 2007

Adding feed subscriber to Firefox



There is RSS button on the address bar of Firefox when a web site is providing feed. You can add any feed subscriber by doing follows:
  1. Input about:config into address bar.
  2. See there are some browser.contentHandlers.types.N.(title|type|uri) entries.
  3. Add subscribers after them.
For example, I add Fastladder by adding these entries.
  • browser.contentHandlers.types.6.title = Fastladder
  • browser.contentHandlers.types.6.type = application/vnd.mozilla.maybe.feed
  • browser.contentHandlers.types.6.uri = http://fastladder.com/subscribe/%s