2009-12-17

Simplify metaprogramming

To avoid of building extra-complicated solutions it's reasonable to:

* Put to DSL as little as possible.
* Think about any DSL in terms of its AST and keep its syntax as much close to AST as possible. This might allow you to avoid writing and debugging parsers at all.
* Select simple easy-to-learn tools and languages (or subsets of languages) to allow quick joining of new people to the project
* Choose one of "programmable programming languages". I.e. extensible language that directly supports homogeneous metaprogramming3.

2009-12-13

nginx ssl setup : .crt -> .p12 -> .pem + .key

Initial .crt file could be converted to .p12 format with nice open source app portecle. By the way portecle seems to be more convenient than keytool and couple of other tools.

Then you'd better transfer that file to your target server. There you must have opensll installed and the next commands use it.
So you cast those (zzz should be changed of course) to get your key and pem files for nginx https transport:
openssl pkcs12 -nokeys -in zzz.p12 -out zzz.pem
openssl pkcs12 -nocerts -nodes -in zzz.p12 -out zzz.key


Please note that key is not encrypted, so beware (and that's another reason to transfer all .p12 to your target server beforehand).

UPD: well, those commands dump the certificate chain in random order. I was able to use encryption via Firefox, but java SSE did not validate the certificate chain and refused to connect. You'll have to toss the raw text certificates around for SSL to work.

2009-12-12

nginx centos 5.0 easy install howto

Why noone is able to simply list those three magic commands to get nginx installed on centos?..

rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm
yum install nginx-stable


Based on extensive info from here.

Another good stab on that done here. Some extra info and preset service wrapper scripts included. RPM-based install flawlessly worked as a service. Maybe you'll need those if you're building from source.

The most useful for me was spell (I usually forget how to update service levels).
chkconfig --level 345 nginx on

Documentation is at wiki.nginx.org and sysoev.ru/nginx.

In general nginx seems (for me) to be quite nice and configurable component - proving that hardcore, low level, careful programming is still a viable and promising alternative.