Monthly Archive for Agosto, 2007

Sandbox upgrade patches

  • english
  • spanish

After some time stabilized on the 0.9.5 release and with the design competition finished, the great Sandbox theme for WordPress has been updated twice already in a matter of days.

For those who, like me, have modified the code and need to maintain those modifications, I’ve made patches to ease the upgrade from one Sandbox release to the next one. This way we don’t need to port our the modifications from one version to another, just apply the patch. The changelog between releases can be found on this forum thread.

In order to apply the patch, you’ll need the “patch” program (on Windows install Cygwin; on MacOS X, fink):

cd wp-content/themes/sandbox
patch -p1 -f < /PATH/sandbox-09x-09y.diff

0.9.6 -> 0.9.7: sandbox-096-097.diff
0.9.5 -> 0.9.6: sandbox-095-096.diff

Enviar a:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • BarraPunto
  • Meneame
  • Slashdot
  • Technorati
  • YahooMyWeb

Soy la reina de los maareeeess …

Durante las dos últimas semanas me he estado sacando el SSI Open Water Diver en Aquaventura, un curso de buceo con el que se obtienen los conocimientos y la pertinente certificación (porque hace falta un “carnet”) necesarios para realizar buceo recreativo con equipo autónomo (botella y demás) hasta profundidades de 30m.

Ayer tuve un día pasado por agua: después de dos inmersiones en Calpe la semana pasada a unos 9m, ayer por la mañana hicimos una también de poca profundidad en Cala Palmera (en el Cabo las Huertas) para acabar de practicar los ejercicios básicos de seguridad y tal, y por la tarde dos en Benidorm ya “de verdad”, una en la isla y otra en “la Llosa”, a veintipico metros de profundidad.  Con esas ya llevo cinco inmersiones, las necesarias para pasar el curso y ser “buceador de Nivel 1″. ¡¡Yuhuu!! Esta tarde tengo dos mas, igual que ayer, en Benidorm. Este fin de semana voy a acabar más arrugado que una pasa. :-D

Sólo me queda animaros a todos los que os estéis pensando en hacer un curso de buceo. Yo llevaba más de cinco años queriendo hacerlo, pero por circunstancias al final un año por otro no lo había hecho aún, y ahora estoy flipando en colores. ¡Me encanta! Eso si, ojo si os mareáis, porque las inmersiones chulas son con barca y si llegáis mareados se jode la diversión (le ha pasado a más de uno de mi curso).

Enviar a:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • BarraPunto
  • Meneame
  • Slashdot
  • Technorati
  • YahooMyWeb

Anti-SPAM signatures for ClamAV

  • english
  • spanish

A couple of days ago I stumbled upon the SaneSecurity set of ClamAV signatures, that detect a lot of SPAM (mainly the latest batch of GIF and PDF SPAM) and phishing mails. They’re similar to the MSRBL signatures, only better judging by the results we’re getting. Or to put it another way, one is the perfect complement to the other. :)

By using these two ClamAV signature sets together and some other techniques (SpamAssassin, DNS, RBL…) we’re stopping at work around 80% of all the mails we get, 100000-120000 daily, with a very low false-positive ratio, 2-3 weekly at most. And these figures include all the internal mails too which are supposed not to be SPAM, I’m sure the real SPAM blocking ratio (just external mails) in our system is way above 90%. One of these days I’ll do the math.

I’ve been thinking for some time about writing an article about the different anti-SPAM techniques we use here. I’ll see if I can get some free time to do it…

Enviar a:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • BarraPunto
  • Meneame
  • Slashdot
  • Technorati
  • YahooMyWeb

A homegrown Akamai

  • english
  • spanish

At the company I work for, we manage the digital editions of several local newspapers spread all over Spain. None of them is big in a nation-wide sense, but almost all of them are leaders on their region.

For quite some time, we’ve had performance problems with one of them: performance here was good (<5s load times), but the users from the region that particular newspaper is distributed on kept complaining about poor performance (>40s load times, unbelievable high). The more we optimized our server and network infrastructure, the HTML layout, CSS, code… the more they complained and the more obvious it became that there was something else going on.

After some investigations we discovered that the routing between the major ISP of that region, which almost all of our readers used, and ours was the cause of the problem: a traceroute from a local DSL line there to our servers showed that the traffic went to Germany before coming back to Spain, with quite a high latency and high roundtrip times.

So, it wasn’t our fault, the real solution to the real problem was out of our reach, but in the end, our image was at stake so it was OUR problem. What could we do?

After some inspiration the solution became clear: get a housing on the local ISP which had the problems and set-up a reverse proxy there, and redirect all clients of that ISP to this proxy. Sure, the connection between the proxy and our servers would be as bad as before, but as the content would be cached and refreshed on the background, the final user shouldn’t notice it any more!

There are just two pieces of software involved here:

  • squid, the most used proxy on the Linux/UNIX world.
  • djbdns, our DNS server of choice. Among other things, it has the ability to return different IP addresses to an A query depending on the IP address of the client.

squid

squid is quite easy to set-up as a reverse proxy. After installing it (”apt-get install squid” in our Debian-based server) edit the main config file at /etc/squid/squid.conf and:

# Make it work as a reverse proxy on port 80 instead of 3128
http_port 80 vhost</code>

# Treat several concurrent queries for the same URI as one,
# reduces bandwidth and in our case improves performance
collapsed_forwarding on

# Define wich domains are we going to serve
# Refuse anything else
acl myDomains dstdomain www.example.com isp2.example.com
http_access deny !myDomains

Obviously there’s much more to configuring squid than this. These are just the basic options to get our solution going and do some preliminary tests. Then there’s memory limits, object-cache management, cache-expires management (which you better have on your application code anyway), peer caches, and much much more. Get some good Squid HOW-TO or book if you want to learn how to tweak it for optimum performance.

djbdns

Now the tricky part: directing some users to our servers and some other to the proxy. Luckily, the DNS server we use (djbdns) has a built-in option to do this.

What we’ve done is defining two names, isp1.example.com pointing to our IP, and isp2.example.com pointing to the proxy, and then a CNAME which will point to one or another depending on the client’s IP, much like Akamai does. This way we can easily and individually access each server.

# XXX.YYY.x.x IP range, will send it to the proxy
%PX:XXX.YYY
# All the rest
%RS:

# A records for our server and the proxy
=isp1.example.com:A.B.C.D:300
=isp2.example.com:Z.Y.X.W:300

# Pivoting CNAME depending on the client’s IP
Cwww.example.com:isp2.example.com.:300::PX
Cwww.example.com:isp1.example.com.:300::RS

Of course, following this scheme we could add as many proxies on as many ISPs more as we wanted, creating an Akamai-like CDN (Content Delivery Network). You get the picture.

For more info on djbdns data syntax, please check: http://cr.yp.to/djbdns/tinydns-data.html

Enviar a:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • BarraPunto
  • Meneame
  • Slashdot
  • Technorati
  • YahooMyWeb