Production gotcha: Rails send_file seems to corrupt files

What’s wrong with the following Rails code?

class ResourceController < ApplicationController 
  DEFAULT_OPTIONS = { :disposition => ‘inline’ }

  def send_file1
    send_file ‘flash1.swf’, DEFAULT_OPTIONS
  end

  def send_file2
    send_file ‘flash2.swf’, DEFAULT_OPTIONS
  end
end

This code works perfectly in development mode. In production mode retrieving the two different files the second file gets corrupt / wrong…

After a long search I looked in the rails code:

def send_file(path, options = {}) #:doc:
    raise MissingFile, “Cannot read file #{path}” unless File.file?(path) and File.readable?(path)
 
    options[:length]   ||= File.size(path)
    options[:filename] ||= File.basename(path) unless options[:url_based_filename]
    send_file_headers! options 
    #….
  end

OOops… the send_file code modifies my class constant!
And after the first call the length and filename is placed in the class constant…
This is no problem in development mode because the classes are reloaded every time. In production mode every mongrel server has it’s own instance…

Victory: Installing JBuilder 2006 on VISTA

No I really don’t like JBuilder that much. But I really hate the workspace thing in Eclipse.

The problem:
At the company I work for, we have a lot of modules written in JBuilder. The gui designer layouts are not compatible with any other IDE. Even The newest JBuilder, which simply is Eclipse doesn’t support these gui designs…
Borland: This is a VERY BAD company policy…!!!
We will migrate the GUI to netbean.. Ha!

JBuilder 2006 doesn’t work in Vista anymore
JBuilder 2006 doesn’t activate anymore

The solution for Vista Install:

  • Before installing disable the fancy vista layout and select classic windows (else you have invisible checkboxes in the setup)
  • Run setup as Administrator! (Right mouseclick exe, “Run as Administator”
  • Install JBuilder the normal way
  • Download the latest JDK1.5 and replace the JDK1.5 in the JBuilder director
  • In the startmenu, rightmouse click on the Jbuilder start icon, choose properties and set the compatibility mode to Windows XP. Disable visual themes. And enable ” Run as admninistrator”

The solution for activating:

  • Make sure you have the registrationmail/file: reg674.txt
  • Copy this file in your user directory: C:\Users\username (in vista) or c:\Documents and Settings\username (in windows xp)
  • Set the date of your PC to the year and month you’ve downloaded the file. My working date is 25 october 2005 (I guess the activation is +/- 30 days valid)
  • Start JBuilder and activate with the given file
  • Run JBuilder and exit it again
  • restore the computer date
  • et voila.. JBuilder works !

UPDATE 2008-11-07

Working with JBuilder I found it had some redraw problems. Scrolling didn’t go wel…
I solved this by setting the following lines in the file bin\jdk.config

#vmparam -Dsun.java2d.ddoffscreen=false
vmparam -Dsun.java2d.noddraw
vmparam -Dsun.java2d.d3d=false

I found the solution for these redraw problems here.

Crash IE, slow down Firefox, with this e-mail validation routine

Searching the internet I found the following e-mail validation routine:

function isValidEmailAddress( address )
{
return String(address).match(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,7})+$/);
}

Feed the following (invalid) address to the routine

123456789012345678901234567890abcdefg

Result:

IE hangs, need a complete browser restart!! Maybe you need to be very very patient!
Firefox detects a slow script

I think this is pretty strange!!

Click the link below to test this ‘bug’:

Please crash my browser

Flash Actionscript Smooth Horizontal Text Scrolling

Well sounds simple. But it caused me a severe headache.

I created a movieclip with a text field, that needed to scroll horizontally from left to right.
The text must be readable because you must type this word before it reaches the end…

The movieclip graphics moved very smoothly, only the textfield wasn’t.

To solve the problem I needed to perform the following operations:

  • Set the anti-alias method for this textfield to “Optimize for Animation”
  • Well that was not enough, after a lot of trying, I found out I also needed to Embed the font of the textfield, for a completely smooth animation..

    Very frustrating…
    And I don’t like the solution because my swf file is bigger… But it will do for now..

    PHP’s Frustrating Flush

    PHP not listening when you try to flush data. Try the following, it helped for me:

    @ob_flush(); // try a normal flush
    flush();

    If PHP isn’t flushing it could be your webserver that’s collecting your output for gzipping:


    mod_gzip_on no

    This worked for me..

    Next Page »