Posted by Brian on August 7, 2007
Abyss and Nginx have been both been successfully tested (but not without some minor bug fixes in fastcgi-mono-server). I’m not sure how big of news this is, as I never heard of these servers until I found them in a table on Wikipedia, but apparently Nginx is big in Russia.Docs are at the usual place, and I’ve added an extra notice about the potential security risks of using ASP.NET by extensions alone. (Thanks to Daniel Nauck for pointing it out.)
Important changes that make this possible:
- Status 200 is sent again. Abyss was sending its own status (I presume 404) if the file didn’t exist and fastcgi-mono-server wasn’t sending in information.
- Blocking is no longer set for sockets. It didn’t appear to provide any essential features, as the server uses asynchronous calls anyway, but it was causing the unmanaged socket to stop listening on Abyss.
- Response headers are now stored in a string builder and sent only once the server has finished outputting them. The fast onslaught of tiny requests was causing occasional failure in Nginx.
If you use either of these server, please test them out and let me know of any issues you might encounter.
Sincerely,
Brian Nickel
Posted in Documentation, Programming, Summer of Code 2007 | 3 Comments »
Posted by Brian on August 1, 2007
Subtitle: What you need to know about Cherokee, Lighttpd, and Apache2.
Last Friday, I made it possible to compile and install your own copy of “fastcgi-mono-server” using standard methods. Now I have some in depth information on how to configure your server and what to look out for.
lighttpd
Lighty works fantastic. With about 5 minutes of configuration, you can get ASP.NET and all its glory running. Simply follow the instructions located here or in the “doc/linux/” directory of the source package.
cherokee
Cherokee, up to and including Cherokee 0.5.6, has a bug where it fails to send an empty Stdin record if no input data is present. I could write a hack to get around this problem, but I’m holding out for now. The Cherokee 0.6 series, on the other hand, works very well with fastcgi-mono-server. If you’re ready to move to the 0.6 series, follow the instructions located here or in the “doc/linux/” directory of the source package.
apache2
Apache’s FastCGI situation is problematic. There are currently 2 implementations of FastCGI that I’m aware of: mod_fastcgi and mod_fcgid, and neither one of them is working just right. Mod_fastcgi was designed by the authors of FastCGI to be a replacement for CGI (hence the name), and is strongly tied to the paradigm of each file being its own application. It does have some tricks which would let a single server be used, but it sends some very unusual and sometimes junk parameters back to the server. It would require some major hacks to transform its parameters back into values that the server could understand.
Mod_fcgid, on the other hand, has the advantage of being younger, hipper, and more in tune with the concept of script servers. It is almost perfect except for the fact it sends the entire contents of the response to the server rather than stripping off the status line and sending it as r->status_line. This causes Apache to reject the response and display an error message. fastcgi-mono-server doesn’t send a status line of the status is 200 (Ok), so it’ll only work for pages that don’t do anything fancy or crash.
Posted in Documentation, Programming, Summer of Code 2007 | 10 Comments »
Posted by Brian on June 6, 2007
Possibly the single most important thing in ensuring the use of your library and the happiness of those using it is documentation. It is also a great way to ensure your API is up to snuff before you declare it “stable” ’cause you have to review every class and member.
As such, I’ve written a little shell script to pinpoint where you have work to do: shaminator.bash.
Simply run “shaminator.bash path/to/docs” and watch the fun results:
~/Programming/taglib-sharp> shaminator.bash docs/en/
1 ./TagLib.Mpeg/VideoHeader.xml
2 ./TagLib.Mpeg/XingHeader.xml
1 ./TagLib.Mpeg/Marker.xml
...
1 ./TagLib.Flac/BlockType.xml
10 ./TagLib.Flac/Metadata.xml
6 ./TagLib.Flac/BlockHeader.xml
Namespaces: 14
Visible Types: 153
Classes: 89
Abstract Classes: 9
Static Classes: 7
Structures: 18
Interfaces: 5
Enumerations: 20
Delegates: 3
Visible Members: 1273
Constructors: 266
Methods: 398
Properties: 427
Fields: 182
Missing Documentation: 700
And once you’re finished, you’ll have some sweet statistics to show off.
Disclaimers: This program does not account for blank fields, AKA fields that have been cleared, and bases its assessment on the number of occurrences of “To be added.” in the text.
- Brian
Posted in Documentation, Programming | Leave a Comment »