Desde hace un tiempo que en el trabajo venimos tomando la operacion de un CouchDB y me parecia interesante tomar algunas metricas de la DB en Cacti (por ahora es la herramienta que estoy usando) asi que basandome en la Documentacion Oficial arme un parse en python para luego exportar los datos al Cacti. En breve adjuntaré algunas imagenes de los graficos, pero en principio espero que alguien mas le sea de utilidad.
-
Couchdb Runtime Statistics
-
Beautiful Soup - malformed start tag
Si estan corriendo Debian 6 y al quere hacer BeautifulSoup de una url se presenta el siguiente error:
HTMLParser.HTMLParseError: malformed start tag, at line 982, column 12
Este problema se da con versiones del la libreria que vienen en la distro, por lo que lo recomendable es actualizarla con easy_install:
sudo apt-get remove python-beautifulsoup easy_install beautifulsoup
Y listo!
-
varnish - limpieza individual
Si estan corriendo Varnish y quieren eliminar solo un elemento del cache, lo que deben hacer es conectarse al puerto de administración y ejecutar el comando:
ban.url path/del/archivo/a/eliminar
Si bien el tutorial explica como habilitar el metodo "PURGE", no encontré como hacer algo tan específico como eliminar solo un elemento
-
compiz overlay
Hace unos dias que podemos ver en gentoo una notificación que Compiz va a ser retirado del portage
# Mask compiz for last-rites unless someone steps up # to maintain it. Removal in 30 days.
Gracias a este post, me enteré de la alternativa de instalar el overlay stuff que contiene todo lo necesario para tener compiz funcionando. Para esto, removemos los paquetes de nuestro sistema, comentamos todos los paquetes en el portage.keyworks. Luego, instalamos el overlay con el comando
layman -a stuff
luego, agregamos en el archivo /etc/portage/package.keywords
*/*::stuff
Y finalmente reinstalamos compiz
USE="kde qt4" emerge -1v compizconfig-python::stuff compiz-bcop::stuff compizconfig-backend-gconf::stuff compizconfig-backend-kconfig4::stuff libcompizconfig::stuff compiz-plugins-extra::stuff compiz-plugins-main::stuff compiz-plugins-unsupported::stuff compiz::stuff compiz-fusion::stuff fusion-icon::stuff ccsm::stuff emerald-themes::stuff emerald::stuff
-
nginx + uwsgi en modo vhost
Finalmente hice andar nginx con uwsgi. Al principio lo hice funcionar con supervisor + uwsgi corriendo en un socket para cada sitio, pero luego de intentar (ya que no encontré documentación de cómo hacerlo) pude poner uwsgi en modo vhost para solo tener una instancia corriendo para todos los sitios.
Desde supervisor, uwsgi esta funcionando con los siguientes parametros:
[program:uwsgi_vhost] command=/usr/local/bin/uwsgi --socket 127.0.0.1:1088 --processes 3 --master --uid www-data --no-site --vhost --reload-os-env user=www-data autostart=true autorestart=true stdout_logfile=/var/log/uwsgi_main.log redirect_stderr=true stopsignal=QUIT
En nginx , un virtualhost de ejemplo (netpastiche.com.ar)
server { listen xx.xx.xxx.xx:80; server_name netpastiche.com.ar; # uwsgi for django location / { include uwsgi_params; uwsgi_param UWSGI_CHDIR /path/to/netpastiche.com.ar/public_html; uwsgi_param UWSGI_MODULE netpastiche_wsgi; uwsgi_pass 127.0.0.1:1088; } # static content location /static { root /path/to/netpastiche.com.ar/public_html; expires 24h; } }
Lo mas dificil fue hacer funcionar el sitio, ya que no estaba incluyendo en el pythonpath los paths donde estaba django instalado (netpastiche_uwsgi.py)
import os, sys sys.path.append(os.path.dirname(__file__)) sys.path.append('/usr/lib/pymodules/python2.6') sys.path.append('/usr/local/lib/python2.6/dist-packages/') os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
-
no mas cronolog
Acostumbrado a apache, en el que cronolog se hacía cargo de "rotar" diariamente los logs, estuve un rato buscando data para hacer lo mismo en nginx.. pero no fue necesario: simplemente logrotate se encarga de eso, corriendo a las 00:01, copiando el log donde awstats pueda ir a buscarlo y hacer su tarea.
Ahora, sigo usando awstats no por ganas propias sino por que Luis (de la ciencia en la vidriera ) esta acostumbrado a ver sus estadisticas de esa manera.
Hay q darle una chance a piwik no?
-
templates con foreign keys
Si estamos usando 'foreign keys' en una clase de Django y queremos mostrar los objetos relacionados, ya sabemos que tenemos disponible el metodo _set.
Ahora bien. Si queremos usar este metodo directamente desde un template y ademas queremos ordernarlo por un campo en particular, tendriamos que usar:
{% for album in object_list %} {% for song in album.song_set.all|dictsort:"release_date" %}
Realmente estuve bastante buscando como hacer esto, asi que espero a alguien le sea util
-
autenticacion de usuarios en django
Este es el link para bajar los templates actualizados para django-registration v 0.8:
registration-template-0.8.tar.gz
Esta basado en los templates de devdoodles que no incluian CSRF.
-
altGR
Para muchos viejos geeks que crecimos usando teclados en ingles, y no nos podemos acostumbrar a los teclados latinoamericanos con "los chirimbolos" cambiados de lugar, la mejor variante que tenemos que utilizar la tecla alt-gr como 'internacionalizador" para escribir con acentos, ñ, etc etc. En linux debemos agregar la siguiente linea en nuestro .xinitrc
setxkbmap us -variant altgr-intl
Y para windows (oh un consejo para windows?) tenemos que cambiar en teclado en Regional&Lang settings de US a US-international
-
rsync sobre otro port ssh
En el caso que necesitemos hacer un "rsync over ssh" pero el port del ssh de destino no es el port standard, vamos a necesitar cambiar el comando de la siguiente manera:
rsync -av -e 'ssh -p 31337' /local/path user@remote:/remote/path
-
errores de php
Si de repente, moviendo archivos de un server a otro, o upgradeando la version de php, nuestro sitio X empieza a dar errores como el siguiente:
Parse Error: syntax error, unexpected $end in ….. scripts.php on line …
La solucion muy probablemente sea cambiar el php.ini y setear el siguente valor:
short_open_tag = On
Al menos en Gentoo 10.1 el ultimo release de php (5.3.3) el default ahora viene en off. Que setea eso? aqui la explicacion
-
django y robots
Hoy estaba viendo diferentes formas de ofrecer el archivo robots.txt desde django, y la solucion mas sencilla que encontre en verdad fue hacerlo directamente desde el virtualhost de apache.
Para esto, solamente en dentro del virtualhost lo siguiente:
alias /robots.txt /{django full path}/templates/robots.txt <Location "/robots.txt"> SetHandler None </Location>De esta manera hacemos que el que se encargue del robots.txt sea el webserver directamente.
-
pungabot
hace un tiempo ya que estoy dando vueltas con el codigo del nuevo cookiebot, ahora en python. arranque con el codigo de pyfibot pero ya haciendo varias modificaciones decido hacer un fork y publicarlo en github, para el que le interese. a diferencia del codigo original esta version tiene:
- . comando separados publicos/privados
- . base de usuarios
- . integración con twitter
- . plugins adicionales
-
synology!
Finalmente, me decidi a cambiar mi linux hogareño por un "home nas" appliance. Luego de mucho leer, el elegido fue el Synology DS109j (que tambien tiene un busybox incluido) al que conecte un Seagate de 1.5TB.
Tuve que hacer un upgrade de firmware del equipo antes de conectar el disco, pero luego de eso anduvo todo de pelos (felizmente no tuve que hacer upgrade del firm del disco). Asi que a partir de mañana, que copie todo mi "/storage" del linux a "xainas",dejare de tener una pc prendida 24hs. Que alegria!
-
ten years compiling
Nuestra distribucion favorita, Gentoo, cumple su bi-lustro. No solo lo festejan con un nuevo release, sino que este incluye una hermosa grafica.
Y los mas vagos no tienen excusa: viene en LiveDVD.
-
cacti poller
Debido al creciente aumento de hosts que monitoreo en el cacti de "mis equipos" , decidi cambiar el poller de cmd.php a spine. El cambio es realmente drastico, como muestra el log de cacti
06/22/2009 02:55:17 PM - SYSTEM STATS: Time:15.9632 Method:spine Processes:3 Threads:3 Hosts:101 HostsPerProcess:34 DataSources:1911 RRDsProcessed:1582 06/22/2009 02:51:40 PM SYSTEM STATS: Time:98.7353 Method:cmd.php Processes:3 Threads:N/A Hosts:101 HostsPerProcess:34 DataSources:1911 RRDsProcessed:1582
Todo esto, corriendo en un : Opteron 1MHz x8 / 8GB ram / 60gb scsii hdd



