Category Archives: Recursos y Tutoriales

wordpress3.1

Custom Content Types y Custom Taxonomies en WordPress

Hace unos días me escribió un amigo para preguntar cuánto cobrar por implementar WordPress con Custom Post Types. Aunque no es algo que tenga valorizado como ítem extra, obviamente los Custom Post Types y las Custom Taxonomies le dan un valor agregado al resultado final. En resumen, la producción y la administración se tornan más simples.

Como existen numerosos tutoriales y plugins sobre el tema pasaré de repetir lo que ya otros se han tomado el esfuerzo de explicar, prefiero concentrarme en algunos tips que, aunque obvios, pueden ser de mayor utilidad.

Todo pasa por la Arquitectura de Contenidos

Antes de decidir su usar  Custom Post Types y Custom Taxonomies es necesario saber si realmente es meritorio hacerlo y para ello nada mejor un buen trabajo de AI previo. Es necesario visualizar con claridad la naturaleza y cantidad de los objetos (unidades o contenidos) que manipularemos y que convivirán en un sitio, vale decir: páginas de contenidos fijos, noticias, fichas de productos, posts de uno o más blogs, catálogos, etc.  Para mí, lo primordial es simplificar al máximo en función de las necesidades del cliente, entendiendo que éste es usuario de un sistema que, en principio, debe ser sencillo de administrar.

Post type básicos:  Posts y Pages

Es una obviedad, pero objetos diferentes en cuanto a la forma de su contenido son técnicamente post_type distintos. Por ejemplo, noticias y catálogo o fichas de portafolio y anotaciones de un blog.

Continue reading

Captura de pantalla 2010-03-29 a las 22.33.30

Montar particiones NFS (debian/ubuntu) en OSX Snow Leopard

Hace años que trabajo y administro servidores linux para pequeñas redes de oficina. El principal uso de estos servidores es centralizar los archivos compartidos y la base de datos, a la vez que contar con un entorno web de prueba para los sitios en desarrollo.

En cuanto a los archivos compartidos la política era simple: Mac y Windows usan Samba y Linux funciona mejor con NFS, que permite montar un sistema de archivos remoto como si fuera local y que, al estar configurado por ip/red, no pide ni usuario ni contraseña. Es más, cada vez que enciendes el PC el sistema está montado sin que tener que hacer nada especial.

Pero tenía una deuda con Mac, que por ser un sistema heredero de Unix, también permite este tipo de particiones de forma nativa. El problema era cómo.

Y la verdad es que es bastante simple, aunque tiene un truco y es que cuando configuras el archivo /etc/exports debes agregar la opción insecure (entre sistema Linux esto no es necesario).

$ sudo nano /etc/exports
# agregar algo similar a esto, en el ejemplo se acepta conexiones de toda la red 192.168.0
/home/serumax 192.168.0.1/24 (rw,sync,no_subtree_check,insecure)

Luego reincias el servicio NFS con

sudo /etc/init.d/nfs-kernel-server restart

Y lo que queda es agregar la partición en Mac usando la Utilidades de disco como se muestra a continuación:

Archivo -> Montajes NFS

Agregar un nuevo montaje con +

Y debería quedar algo como esto

¿Cómo configurar DNS con Bind9? segunda parte

La verdad es que no escribiré un extenso manual sobre las zonas inversas, básicamente porque en Internet hay muchos ejemplos. Además, la resolución de nombres inversa no es algo completamente necesario para tener un DNS sencillo funcionando de manera local, como podría ser para el uso de una oficina o pequeña red doméstica donde generalmente tenemos un sólo servidor web que responde a varios dominios ficticios.

Pero si lo que quieres obtener es el nombre de una máquina localizada en la IP 200.72.85.X, necesitarás configurar la zona de resolución de nombres que puede ser llamada, por ejemplo, 85.72.200.in-addr.arpa. Es decir, la numeración IP al revés y sin el último octeto.

Lo primero será editar /etc/bind/named.conf.local y añadir:

zone “85.72.200.in-addr.arpa” {
type master;
file “db-reverse-85.72.200″;
};

Luego escribiremos la información para el dns inverso en un archivo específico llamado db-reverse-85.72.200

nano /etc/bind/db-reverse-85.72.200

y copia las siguientes líneas:

;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA dominio.cl. dominio.cl. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS dominio.cl.
55 IN PTR dominio.cl.
56 IN PTR sub1.dominio.cl.
57 IN PTR sub2.dominio.cl.

De forma que el último octeto de la IP (55, 56 o 57) escrito a la inversa y omitiendo el 85.72.200 que ya se especificó en “named.conf.local” corresponden a los dominios dominio.cl, sub1.dominio.cl y sub2.dominio.cl respectivamente.

Podemos comprobar su funcionamiento reiniciando el demonio BIND9 y realizando una consulta:

$ /etc/init.d/bind9 restart
$ host 200.72.85.55
85.72.200.55.in-addr.arpa domain name pointer dominio.cl

Finalmente, una de las grande confusiones respecto de el funcionamiento de las zonas inversas tiene que ver con la cantidad de octetos que se especifican al definir la zona inversa en el named.conf.local,  pues sería válido definir zone “72.200.in-addr.arpa” o zone “200.in-addr.arpa” y en dichos casos en el archivo db-reverse-85.72.200 (da igual el nombre) variarían las últimas líneas:

En el caso 72.200.in-addr.arpa

55.85 IN PTR dominio.cl.
56 .85 IN PTR sub1.dominio.cl.
57.85 IN PTR sub2.dominio.cl.

En el caso 200.in-addr.arpa

55.85.72 IN PTR dominio.cl.
56 .85 .72 IN PTR sub1.dominio.cl.
57.85.72 IN PTR sub2.dominio.cl.

Todo dependerá del tamaño del la red.

Terminator, la consola perfecta

Terminator se ha transformado en una de las aplicaciones que más uso para hablar con Neo, al menos eso es lo que cree mvallejos cuando me ve con las pantallitas negras de este fantástico terminal para GNOME. Su mayor virtud es que cuenta con  la característica  de dividir la  ventana del terminal en varias partes.

Personalmente nunca me acostumbré a trabajar con pestañas,  por lo que terminaba con muchas consolas abiertas (por suerte, tanto en la casa como en la oficina, uso dos monitores). Por eso, para hacer varias cosas a la vez es sumamente útil, especialmente porque la ventana del emulador se puede dividir vertical u horizontalmente y para cambiar de terminal puedes usar ctrl + tab. Eso sí, la versión en español de Ubuntu 8.04 -que es la que  tengo en la oficina- confunde horizontal con vertical, pero en la 8.10 tiene ese bug corregido.

Terminator es un script simple creado en python que pone múltiples widgets vte en ventanas, el widget es el mismo que usa gnome-terminal, así, si necesitas “customizar” colores, tipografìas o ciertos comportamientos, debes hacerlo directamente en gnome-terminal.

Lo mejor es que  viene en el repositorio Universe de Ubuntu desde la versión 8.04, por lo que solo necesitas hacer sudo apt-get install terminator o buscarlo en synaptic.

Cómo borrar archivos de un sólo tipo y de froma recursiva

Simple, con este comando buscas (find) todos los archivos de un tipo determinado (zip, gz, jpg, gif, pdf, etc) y los borras recursivamente a lo largo del árbol de directorio, partiendo desde donde estás ubicado. Con la opción -i te pedirá confirmar ante de borrar un cierto archivo, mostrándote su nombre en la consulta.

Sin pedir confirmación

find . -type f -name “*.gz” -exec rm -f {} \;

Con confirmación

find . -type f -name “*.gz” -exec rm -i {} \;

Suerte!

Password random en php

Hace un par de años tuve que comenzar a generar claves aleatorias para algunos sistemas de registro de usuarios seguros y captchas en los que he trabajado. He utilizado varias fórmulas, pero hasta ahora la que considero más acabada y elegante es esta:

$claves = array_flip(array_merge(range(’a’,’z’),range(’A’,’Z’),range(0,9)));
$password = implode(“”,array_rand($claves, 6));

No necesita mucha explicación, pero lo que hace es generar tres arrays, uno de la “a” a la “z” en minúscula, otro en mayúscula y el tercero, del “0″ al “9″.  Luego unimos los arrays en uno gracias a array_merge, y con array_flip intercambiamos “keys” por “values“. En la segunda línea generamos un nuevo array compuesto por 6 “keys” aleatorias y, finalmente, obtenemos nuestra password random con el implode que nos devuelve un string de 6 dígitos.

Referencia
Generador de Password Aleatorios

Problemas comunes III: respaldos a distancia con rsync

Aunque existen numerosas herramientas de Escritorio para respaldar y sincronizar archivos en distintas máquinas, ninguno me ha gustado funcionado correctamente. Por lo mismo, prefiero usar el terminal y rsync. Una forma fácil de entender y comenzar con este comando es la siguiente:

serumax@bunbury:~$ comando -opciones /carpeta-o-archivo/origen /carpeta-o-archivo/destino

Es importante destacar que cuando se trata de carpetas  las rutas de origen y destino no se comportan de igual forma si se usa o no un salsh (/) final. De esta forma, si el ejemplo anterior fuese real, tendríamos como resultado la carpeta “destino” ahora contiene una llamada “origen”

Veamos entonces algo más concreto. Pongamos por caso que necesitamos respaldar todos los archivos de la carpeta /var/www/sitio1 en una carpeta de igual nombre pero en otra máquina. Para esto tenemos dos opciones:

Opción 1
rsync -avz /var/www/sitio1 usuario@192.168.0.1:/var/www

Opción 2
rsync -avz /var/www/sitio1/ usuario@192.168.0.1:/var/www/sitio1/

Como pueden observar, para indicar donde respaldaremos los archivos debemos escribir el usuario y la ip de la máquina de destino usuario@192.168.0.1, seguido de los “:” y de la ruta /var/www/sitio1/, esto nos permitirá autenticarnos en la máquina remota tal como lo hacemos con ssh. Para conocer el resto de las opciones de rsync podemos recurrir a man rsync, no obstante, en el ejemplo hemos usado -avc, que significa que respaldaremos la carpeta de froma recursiva en mdo verboso (con salida por pantalla) y con compresión.

Finalmente, para evitar que nos pregunte la password -por ejemplo para programar un crontab- podemas crear un certificado DSA.

Post relacionados

prism

Prism, ideal para aplicaciones web como escritorio!

prism

En resumen, Prism es otra aproximación más a esto de las aplicaciones web como escritorio bajo el alero de la cloud-computing, es decir, es la apuesta de Firefox para competir contra Adobe Air y Silverlight.

En mi opinión, la ventaja que tiene Prism por sobre la otras alternativas es que al ser una especie de fork de Firefox ya está diponible en todos los Sistemas Operativos, vale decir, Windows, Mac  y Linux, tanto en versiones de 32 como de 64 bits.

Además, a diferencia de Air y Silverlight, Prism no pretende crear una web alternativa sino que intenta extraerla del navegador para llevarla mediante XUL a nuestro escritorio.

Esto significa que pueden desarrollarse aplicaciones web haciendo uso de tecnología y lenguajes conocidos: HTML, JavaScript, CSS, etc y que, en favor de la convergencia, más vale crear aplicaciones  minimalistas que realicen funciones específicas, puesto que pueden (re)utilizarse tanto en dispositivos móviles como en widgets de manera independiente de la plataforma y del Sistema Operativo, con una reducción de costos en tiempo y dinero que puede ser sustancial.

Más información

¿Cómo configurar DNS con Bind9? Primera parte

Con este post había pensado continuar mi serie de post de “Problemas comunes“, pero ciertamente siendo este un problema común entre administradores de redes, debo confesar tal como sucede con el tema de las particiones de Discos Duros, la configuración de un servidor DNS necesita un poco más de conocimientos, experiencia y  -oops!- cabeza.

¿Qué necesitamos?

  • Un servidor con Linux (para este caso usaremos Ubuntu)
  • Bind 9
  • Un poco de experiencia con el terminal y opcionalmente con Midnight Commander
  • Un editor de texto plano (vim, nano, gedit, kate, o el de MC)
  • Privilegios de root o sudo

Como este tutorial es sobre DNS no me extenderé en detalles anexos, es decir, si usas Fedora o Centos, o prefieres Nano en vez de Vim notarás ciertas diferencias que supongo dominarás bien!

Lo primero es lo primero, instalar Bind9:

serumax@bunbury:~$ sudo apt-get install bind9
[sudo] password for serumax:

Acto seguido editamos el archivo named.conf.local

//o nano o gedit
sudo vim /etc/bind/named.conf.local

y agregamos una nueva zona:

zone “dominio.cl”{
type master;
file “/etc/bind/db.dominio.cl;
};

Continue reading

Terminal terminator ubuntu linux

Claves DSA para conectarse por ssh sin contraseña

Terminal terminator ubuntu linux

[ad#co-1]

Cada vez administro más servidores Linux (ayer se sumaron dos más ubicados en Chicago), por lo que suelo conectarme todo el tiempo por SSH y, obvio, tengo teclear las contraseñas cada vez me conecto a una máquina, algo que realmente se ha vuelto tedioso. Por suerte se puede configurar SSH para que utilice certificados o claves DSA, de tal forma podremos autenticarnos automáticamente en el servidor.

Entonces generaremos las claves DSA usando el protocolo 2, que es el protocolo utilizado y recomendado hoy por hoy. Una de las claves generadas será la “clave privada” que quedará guardada en nuestra máquina y opcionalmente podrá ser protegida con una contraseña.  La otra será la “clave pública” que es la que transferiremos al servidor remoto.

Para generar estas claves utilizamos el comando ssh-keygen:

traveler@talita:~$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/traveler/.ssh/id_dsa):
Created directory ‘/home/traveler/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/traveler/.ssh/id_dsa.
Your public key has been saved in /home/traveler/.ssh/id_dsa.pub.
The key fingerprint is:
b4:23:82:5a:19:5b:6f:f3:78:31:fb:f8:45:0b:ed:8f traveler@talita

En la pregunta “Enter file in which to save the key…” hagan enter para que tome el valor predeterminado, lo mismo pueden hacer cuando se les pregunte por la contraseña si no quieren proteger la clave privada con una password.
Continue reading