Ir al contenido principal

Ralsina.Me — El sitio web de Roberto Alsina

Nikola 4 Released

I have just up­load­ed re­lease 4 of Niko­la my stat­ic blog/site gen­er­a­tor. Here are some of the changes in this ver­sion:


  • Pre­vi­ous/Next post links

  • Teas­er sup­­port

  • Sup­­port posts with HTML "sources"

  • Site check­­ing script (niko­la_check)

  • Max­i­­mum im­age size in gal­­leries

  • Im­age de­scrip­­tions in gal­­leries

  • Im­age ex­­clu­­sion in gal­­leries

  • Spe­­cial "draft" tag

  • Pret­­ty code list­ings ("­­code gal­­leries")

  • Page de­scrip­­tions

  • Easy theme tun­ing via Bootswatch

  • Sup­­port for We­bAs­sets bun­­dles

  • "Fil­ter­s" for pow­er­­ful file post-pro­cess­ing


  • Im­proved HTML out­­put

  • Sup­­port mul­ti­­ple time for­­mats in post meta­­da­­ta

  • Slugi­­fy tag names for URLs

  • Ar­chive path and file­­name con­­fig­urable

  • Gal­­leries sort­ed by date (sup­­ports EX­IF)

  • Ro­­tate gallery thum­b­­nails (EX­IF)

  • Tag feeds in tag pages

  • Col­or­box sup­­port in re­struc­­tured text fig­ures

  • Fix for con­­tent dis­­­play­ing too wide

  • Changel­og

As usu­al, you can dis­cuss bugs or make fea­ture re­quests at the niko­la-dis­cuss group and I love to know of sites us­ing Niko­la.

Hope you like it!

Probando CloudFlare

¿Cuál es el ser­vi­cio de Clou­dFla­re? To­man tu DNS y po­nen un pro­xy in­ver­so en­tre tu si­tio y los clien­tes. Ese pro­xy in­ver­so en­ton­ces usa una CDN pa­ra ser­vir tu pá­gi­na des­de al­gún ser­ver en una ubi­ca­ción con­ve­nien­te, y pue­de rees­cri­bir el HT­M­L/­CSS/­JS de ma­ne­ras que lo ha­gan más rá­pi­do/ se­gu­ro­/­me­jo­r.

Así mis­mo se su­po­ne que pro­te­ge mi si­tio de dis­tin­tos ti­pos de ata­que (el úni­co que po­dría afec­tar­me es un DOS pe­ro gra­cias igual ;-)

Así mis­mo, ofre­cen una pla­ta­for­ma pa­ra que apps me pue­dan pro­veer ser­vi­cios co­mo de­tec­ción de in­tru­so­s, ana­lí­ti­cos y otro­s, que es una muy bue­na idea.

Así que me creé una cuen­ta en clou­dfla­re.­com y la con­fi­gu­rá pa­ra que //­ral­si­na.­me (que es es­te mis­mo si­tio ex­cep­to que no cuen­ta bien los co­men­ta­rio­s) sea ser­vi­do via Clu­dFla­re, y ral­si­na.­me se sir­va di­rec­to.

Con­clu­sio­nes has­ta aho­ra:

  • El se­­tup es muy fá­­ci­­l.

  • Fun­­cio­­­na, aún los fea­­tu­­res ex­­pe­­ri­­men­­ta­­le­s.

  • Pa­­re­­ce ser li­­ge­­ra­­men­­te más rá­­pi­­do, lo que no es una so­r­­pre­s­a, ya que el mi­­ni se­r­­ver que tie­­ne es­­te si­­tio tie­­ne bue­­­na co­­­ne­c­­ti­­vi­­dad y mu­­chos re­­cu­r­­sos li­­bres.

  • Ha­­ce un buen tra­­ba­­jo de op­­ti­­mi­­zar au­­to­­­má­­ti­­ca­­men­­te co­­sas de ma­­ne­­ras ge­­ne­­ra­l­­men­­te ace­p­­ta­­das co­­­mo co­­­rre­c­­tas (en otras pa­­la­­bra­s, mis nú­­me­­ros de Pi­n­­g­­dom y YS­­low me­­jo­­­ra­­ro­­n)

Así que no due­le, ca­paz que sir­ve. Creo que voy a mo­ver to­dos los si­tios es­ta no­che.

Sometimes More is More

Y sí, eso es 90% cier­to. Ex­cep­to cuan­do es fal­so, por ejem­plo cuan­do me com­pré una cam­pe­ra.

Es una lin­da cam­pe­ra, y si la mi­rás así no­más no vas a ver un fea­tu­re im­por­tan­te: dos bol­si­llos de ca­da la­do.

Pen­se­mos en por­qué que­re­mos bol­si­llos en los cos­ta­dos de las cam­pe­ra­s:

  1. Pa­­ra me­­ter las ma­­nos cuan­­do ha­­ce frío. Co­­­mo es una ca­m­­pe­­ra grue­s­a, eso es im­­po­r­­tan­­te. En cli­­mas mo­­­de­­ra­­dos co­­­mo es­­te, los guan­­tes no va­­len la pe­­na, y me­­ter las ma­­nos en el bo­l­­si­­llo al­­can­­za.

  2. Pa­­ra me­­ter co­­sas que no son ma­­no­­s: lla­­ve­s, te­­lé­­fo­­­no, pla­­ta, ca­­ra­­me­­lo­­s, etc.

Pa­ra el pri­mer ca­so de uso, que­re­mos bol­si­llos en un án­gu­lo ba­jo, pa­ra que la ma­no en­tre na­tu­ral­men­te, ca­si ho­ri­zon­ta­le­s. Ade­más que­re­mos un ac­ce­so sin obs­tá­cu­lo­s, asi que sin cie­rres, que ade­más ras­pan.

Pa­ra el se­gun­do ca­so, que­re­mos que las co­sas no se cai­gan. O sea que pue­de ser un bol­si­llo ver­ti­cal (tal vez con ta­pa) o con un cie­rre. Los cie­rres tie­nen el pro­ble­ma adi­cio­nal de que te po­dés ol­vi­dar de ce­rrar­lo­s, y las co­sas se caen. Los bol­si­llos ver­ti­ca­les son ho­rri­bles pa­ra me­ter las ma­no­s.

Así que mi cam­pe­ra tie­ne dos bol­si­llos de ca­da la­do, uno con cie­rre, uno sin cie­rre. Uno pa­ra las ma­no­s, el otro pa­ra las co­sas. Co­mo es grue­sa, no se ve, a me­nos que se­pas lo que es­tás bus­can­do, y el mo­do de uso es tri­via­l: to­do va en el bol­si­llo ce­rra­do me­nos la ma­no. Has­ta pue­do pal­par el con­te­ni­do de un bol­si­llo des­de el otro, sin sa­car las ma­nos de sus bol­si­llo­s.

Es­te es un ca­so don­de más es má­s, com­ple­jo es me­jo­r, las op­cio­nes es­tán bue­na­s, y los de­faul­ts no im­por­tan. Aho­ra, si en­con­trás un lu­gar en el so­ftwa­re en que pa­se lo mis­mo, ahí te­nés una opor­tu­ni­da­d.

Nikola: Filters & Bundles

Two up­com­ing fea­tures for the next re­lease of Niko­la, my stat­ic site gen­er­a­tor, due some­time in Au­gust.


Fil­ters let you post­pro­cess your out­put. Think of it like in­sta­gram for web­sites, but use­ful. You can con­fig­ure per file ex­ten­sion a se­ries of python func­tions or shell com­mand­s, which will be ap­plied in place to the out­put file.

For ex­am­ple, sup­pose you want to ap­ply yui-­com­pres­sor to your CSS and JS files:

    ".css": [filters.yui_compressor],
    ".js": [filters.yui_compressor],

There, filters.yui_compressor is a simple wrapper around the command so that it applies in-place to the output files.

If you use strings there (untest­ed), they are tak­en as com­mand­s. The "%s" will be re­placed by the file­name, the usu­al crazy shell quot­ing rules ap­ply:

    ".jpg": ["jpegoptim '%s'"],
    ".png": ["pngoptim '%s'"],

Keep in mind that the fil­ters mod­i­fy the out­put of Niko­la, not the in­put, so your im­ages, CSS, and JS files will not be touched in any way. And of course chang­ing the fil­ters ap­plied to a file will force a re­build, so you can ex­per­i­ment freely.


Hav­ing many sep­a­rate CSS or JS files is usu­al­ly a nono for per­for­mance rea­sons be­cause each one may in­volve a sep­a­rate HTTP trans­ac­tion. The so­lu­tion is to "bundle" those files in a sin­gle, larg­er file.

The rea­son not to do that is that usu­al­ly it means hav­ing a huge, un­com­fort­able thing to han­dle. So Niko­la tries to give you the best of both world­s, by let­ting you have sep­a­rate files, and bundling them (or not) on build.

There is a new option, USE_BUNDLES that defaults to False, and there are some changes in the theme templates so that it uses the bundled version when needed.

This was on­ly pos­si­ble thanks to We­bas­sets. How­ev­er, if you don't have We­bas­sets in­stalled, or you don't en­able USE_BUNDLES, this should cause no changes in the out­put.


These new fea­tures will al­low Niko­la users to im­prove their site's per­for­mance with min­i­mal tweak­ing, which is al­ways a good thing.

El Server Mínimo

En­ton­ces hoy en la ho­ra del al­muer­zo me pu­se a lim­piar la ba­su­ra. Es­te post des­cri­be con qué ter­mi­né, que es el ser­ver mí­ni­mo que me sir­ve pa­ra al­go.


Es un VPS ba­ra­to pro­vis­to por los ami­gos de burs­t.­net que no me pa­gan pa­ra de­cir co­sas bue­nas de su ser­vi­cio. Sin em­bar­go, las di­go igua­l:

  • Muy ba­­ra­­to (U$S 5.50 pe­­ro ten­­go 20% de des­­cuen­­to pa­­ra sie­m­­pre)

  • Ba­s­­tan­­te tran­s­­fe­­ren­­cia ca­­da mes

  • Mu­­cho es­­pa­­cio

  • Buen up­­ti­­me

  • Red rá­­pi­­da

  • Muy ba­­ra­­to

  • Pe­r­­fo­r­­man­­ce de­­cen­­te

  • Ba­­ra­­to


Ya te­nía Cen­tOS 5, y si­gue ahí. Si burst al­gu­na vez ofre­ce Ubun­tu Pre­ci­se, ca­paz que cam­bio. O, ya que es­to an­da, ca­paz que no.

Lo bue­no de Cen­tO­S: es­ta­ble y abu­rri­do.

Lo ma­lo de Cen­tO­S: es un po­co de­ma­sia­do abu­rri­do. Mon­to­nes de co­sas sim­ple­men­te no es­tán em­pa­que­ta­da­s.

Web Server

Ten­go que ser­vir una canti­dad de do­mi­nio­s, pe­ro con una pe­cu­lia­ri­da­d: son to­dos si­tios es­tá­ti­co­s. Lo que quie­ro es:

  • Ba­­jo uso de re­­cu­r­­sos

  • Pe­r­­fo­r­­man­­ce de­­cen­­te (con ran­­gos y ne­­go­­­cia­­ción de co­n­­te­­ni­­do­­s)

  • Es­­ta­­ble

  • Con ín­­di­­ces de di­­re­c­­to­­­rio

  • Fá­­cil de co­n­­fi­­gu­­rar

  • Do­­­mi­­nios vi­r­­tua­­les por no­m­­bre

Ca­si cual­quier ser­vi­dor an­da pa­ra es­to. Has­ta Apa­che, ex­cep­to por eso de la con­fi­gu­ra­ción sen­ci­lla. Ter­mi­né con ga­tling por­que cum­ple esos cri­te­rios bas­tan­te bien.

  • Usa al­­re­­de­­dor de 1.4MB de RAM que es­­tá bue­­no en un VP­S.

  • Es ba­s­­tan­­te rá­­pi­­do

  • Lle­­va ho­­­ras sin caer­­se

  • Ge­­ne­­ra ín­­di­­ces

  • Es­­ta es la co­n­­fi­­gu­­ra­­ció­­n: "-c /s­r­­v/www -P 2M -d -v -p 80 -F -S" (no, no hay ar­­chi­­vo de co­n­­fi­­gu­­ra­­ció­­n)

  • Los do­­­mi­­nios vi­r­­tua­­les son ca­r­­pe­­tas y sy­­m­­li­nks aden­­tro de /s­r­­v/www que es lo más fá­­cil po­­­si­­ble.

  • So­­­po­r­­ta pro­­­xy in­­ve­r­­so pa­­ra cuan­­do quie­­ro pro­­­bar una we­­ba­­pp py­­thon en la que es­­toy tra­­ba­­jan­­do.

Mail Server

No quie­ro un mail ser­ve­r. Ten­go gmail y un ser­ver de ver­dad pa­ra eso. Lo que quie­ro son los mails de cro­n. Pa­ra eso usé ss­m­tp y una cuen­ta ex­tra de gmai­l. Fun­cio­na, y es­ta es to­da la con­fi­gu­ra­ció­n:

Lo me­jor que pue­do de­cir es que fun­cio­na, y no in­vo­lu­cra co­rrer un ser­ve­r.


Pa­ra cuan­do ten­go que es­tar en dos lu­ga­res al mis­mo tiem­po: Open­VPN es lo má­s, y no se acep­tan dis­cu­sio­nes. Ten­go un squid co­rrien­do a ve­ce­s, y hay un Qua­ssel co­re pa­ra IR­C. Ins­ta­lé mosh pa­ra que el ssh sea me­nos do­lo­ro­so, rs­ync ha­ce de­plo­y­men­ts y guar­da ba­ckup­s, cron eje­cu­ta co­sas, y na­da má­s.


Mon­to­nes de RAM y CPU li­bres (sí, esa es la lis­ta com­ple­ta de pro­ce­so­s):

[root@burst1 ~]# ps aux
root         1  0.0  0.1   2156   664 ?        Ss   22:01   0:00 init [3]
root      1135  0.0  0.1   2260   576 ?        S<s  22:01   0:00 /sbin/udevd -d
root      1518  0.0  0.1   1812   572 ?        Ss   22:01   0:00 syslogd -m 0
root      1594  0.0  0.1   7240  1032 ?        Ss   22:01   0:00 /usr/sbin/sshd
root      1602  0.0  0.2   4492  1112 ?        Ss   22:01   0:00 crond
root      1630  0.0  0.1   5684   716 ?        Ss   22:01   0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2
root      1631  0.0  0.0   5684   444 ?        S    22:01   0:00 /usr/sbin/saslauthd -m /var/run/saslauthd -a pam -n 2
root      1636  0.0  0.2   3852  1372 ?        S    22:01   0:01 /opt/diet/bin/gatling -c /srv/www -P 2M -d -v -p 80 -F -S
root      1677  0.0  0.2   4284  1232 ?        Ss   22:02   0:00 SCREEN /root/quasselcore-static-0.7.1
root      1678  0.0  2.1  36688 11148 pts/0    Ssl+ 22:02   0:03 /root/quasselcore-static-0.7.1
root      3228  1.0  0.7  12916  4196 ?        Ss   23:28   0:13 mosh-server new -s -c 8
root      3229  0.0  0.3   3848  1588 pts/2    Ss   23:28   0:00 -bash
root      3275  0.0  0.1   2532   908 pts/2    R+   23:48   0:00 ps aux
[root@burst1 ~]# w
 23:49:03 up  1:47,  1 user,  load average: 0.00, 0.01, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/2   23:28    0.00s  0.01s  0.00s w
[root@burst1 ~]# free
             total       used       free     shared    buffers     cached
Mem:        524800      49100     475700          0          0          0
-/+ buffers/cache:      49100     475700
Swap:            0          0          0

Te­nien­do en cuen­ta to­do, bas­tan­te con­ten­to con el re­sul­ta­do.

Contents © 2000-2023 Roberto Alsina