Índice de directorios con filtro
Hacía mucho tiempo que no escribía y era por una razón bien práctica: me cambié de país y como tal, he estado muy ocupado tanto con la mudanza, con el traerme mi mujer y trabajando, ya que de alguna forma hay que mantener la máquina andando y eso significa que aparte de todos los trámites regulares que hay que hacer y pagar, también hay que trabajar.
Lo bueno es que estoy trabajando hace cerca de 2 meses ya, encontré trabajo sumamente rápido y como recién llegado en la empresa, me llenaron de proyectos pasados, presentes y futuros. Cuando estaba trabajando en Chile, sólo tenía 3 proyectos permanentes, así que trabajar en localhost era bastante simple. Sin embargo, ahora tengo algo más de 18 proyectos y recordar el nombre de cada una no es tan simple como parece. Por eso, ya instalado en mi nueva casa y aprovechando un ratito de ocio, escribí un script que recorre un directorio y crea un link por cada directorio que encuentra para que de esa forma, pueda visitar http://localhost/ y hacer click en el proyecto que me interesa trabajar. Hasta ahí, no tiene ninguna maravilla; sin embargo; este script tiene algo especial, ya que permite esconder ciertos directorios y asignarles un alias a otros para que el listado no quede tan feo a primera vista.
Instalar APC para PHP en Snow Leopard
Siguiendo con la tanda de instalar extensiones infaltables para PHP, tenemos el caso de APC. Como todo el mundo ya debería saber, APC acelera la ejecución del código en forma enorme, gracias a que almacena en caché una copia de nuestro script ya compilado y ejecuta directamente ese en vez de parsear y posteriormente compilar cada vez nuestro script.
Por si fuera poco, APC permite servirnos como un buen módulo de caché, y aunque me gustaría escribir al tiro sobre eso, el objetivo de este post no es para eso. Sepan que de todas formas estoy preparando otro post con justamente esa información.
Instalando PostGreSQL, php-pgsql y php-pdo_pgsql en Mac OS X
No me malentiendan: desde que ocupo Mac OS X que me encanta y no me cambiaría de vuelta a Linux ni menos a Windows, pero hay algunas cosas que son capaces de hacerte doler la cabeza. Una de ellas es justamente la instalación de PostGreSQL y sus conectores para PHP: php-pgsql y su driver unificado mejorado PDO. Entre medio, hay que borrar usuarios de sistema, compilar y parchear, así que preparaos porque esto se viene bueno.
Lo bueno de todo esto, es que la instalación de PostGreSQL está dentro de lo más fácil. Sólo basta con bajar un paquete, borrar un usuario de sistema e instalar para que todo resulte bien, lo cual se hace de la siguiente manera: (Todos los comandos se ejecutan como root o sudo, lo que prefieran)
dscl . delete /users/postgres cd /Volumes/PostgreSQL\ 9.0.3-1/ ./postgresql-9.0.3-1-osx.app/Contents/MacOS/installbuilder.sh # seguir los pasos en pantalla. # el siguiente comando crea el superuser de postgres: # el nombre de la cuenta (segundo parámetro) puede ser cualquier cosa. createuser pgsql --pwprompt --username=postgres
Migrar usuarios Linux de un sistema a otro
En este preciso momento me encuentro en una tarea bien tediosa: actualizando de un webserver a otro por cambio de hardware. Bueno, también aprovechamos de meter ese webserver al VMware pero ese es otro tema: lo importante es que esa actualización había que hacerla.
¿Lo único malo? 44 cuentas de usuario y 70GB de datos que transferir. Así que mientras comprimo el /home/ me di el tiempo de empezar a escribir esta entrada.
La idea de la migración es que sea algo (casi) totalmente transparente para los usuarios, lo cual implica; además de cambiar los archivos de lugar y respaldar los datos de la base de datos; mantener las cuentas de usuario entre máquina y máquina y quizás más importante: mantener las contraseñas y permisos sobre los archivos.
Buscando en Linux hecho fácil
Cuántas veces no les ha pasado que saben que una cierta cadena empieza con "hola_mun" pero no se acuerdan en qué termina ni menos en qué archivo? También: han tenido alguna vez que hacer cambios en varios archivos del tipo "$hola" a "$chao['hola']" y que sucede que esa variable está repartida en 200 archivos por distintos directorios?
Bueno, si eso les ha pasado y ocupan Linux, ha llegado su día de suerte: creé un script (para la terminal) que busca en diversos lados por una cadena determinada e imprime la salida. Pero qué sucede en aquellos casos donde tenemos que omitir ciertas carpetas temporales como por ejemplo las que crea subversion? Bueno, este script también considera eso. Haz click en leer más para conocer el script.
Chequear sintaxis de my.cnf y httpd.conf
Aunque por lo general ningún servidor me da problemas, la máquina que aloja este blog está dando un poco de jugo. El proceso del Apache tiene la mala costumbre de tomarse el 100% del procesador por algunos segundos (hasta 30) y durante ese lapso de tiempo simplemente no aparece nada en el cliente. Sin embargo, ese error es tan vago que no da para nada más. En los logs tampoco aparece nada inusual, así que simplemente aplicaré regla de oro en la informática: ir probando para ver si puedo replicar el error. (Que manera tan elegante de decir: "prueba y error").
Aprendiendo a manejar svn de manera avanzada
Antes que todo, quisiera pedirle disculpas a un cierto amigo que posteó un comentario, akismet lo tomó como spam y sin querer queriendo, me confundí de botón y lo borré de la base de datos en vez de aprobarlo. A la rápida, alcancé a leer algo de https y redirección (también tenía un link hacia un más información en X sitio), pero no me fijé a qué post correspondía. Así que si no es mucha molestia, se podría postear de nuevo?
Prometo fijarme mejor esta vez.
En fin, el post de hoy se trata de nada más ni nada menos que svn. Odiado por muchos (Basta ver este video de Linus Torvalds donde básicamente dice que svn está mal desde su base) y amado por otro puñado de desarrolladores, es bastante fácil de ocupar y tiene opciones bien poderosas una vez que se aprende a ocupar bien. Y para eso es este post
Proteger un directorio con .htaccess + .htpasswd
Este post será cortito y es sólo para que no tenga que andar buscando dentro de logs algo que aplico sólo muy a veces: se trata de querer proteger un directorio predeterminado mediante htpasswd para que de esta manera, necesitemos de autentificación antes de poder continuar escudriñando en la página.
El método es bastante simple: basta crear un .htaccess y un .htpasswd, el segundo ojalá fuera del directorio público. De todas formas, apache predeterminadamente manda un 403 (Prohibido) a todos los archivos que empiezan con .ht (dato rosa, con expresiones regulares sería "^\.ht") pero nunca está demás poner una capita adicional a la seguridad del server. Más después del salto.
[HOW-TO] Instalar una máquina CentOS con PHP 5.3.3
Configurar bien una máquina puede ser una tarea tediosa, especialmente por el hecho de que muchas veces nos podemos olvidar de más de algún detalle.
La presente es una instalación de PHP 5.3.3 en una máquina CentOS 64 bits limpia (instalación servidor) que implementa además dos extensiones fundamentales a mi parecer: APC y Suhosin. El primero sirve como opcode cache y el segundo funciona para frenar algunas malas prácticas en la programación de PHP, especialmente aquellas que tienen que ver con overflows. También le agrega una capa adicional de seguridad que predeterminadamente no viene integrada a PHP.
Sin embargo, no hay que olvidar que los repositorios oficiales todavía están con PHP 5.1.6 así que hay que habilitar un repositorio que tenga la última versión de PHP. Para este how-to, voy a ocupar el repositorio de remi, aunque cualquier otro también puede servir. (Sé que Webtatic también tiene la última versión, tanto en rama 5.2 como en 5.3). Por último, también aprovecho de instalar el repositorio de rpmforge por tener mucho software adicional que no viene en la base.
Habilitar grupo wheel en CentOS
Estaba instalando un servidor hoy y lo principal es la seguridad en esa máquina. Por lo tanto, hay que restringirlo lo más posible; lo cual implica desde cambiar el puerto predeterminado en el cual SSH escucha hasta los usuarios que pueden invocar su.
Tocaremos principalmente dos archivos por mientras:
/etc/ssh/sshd_config
/etc/pam.d/su
Para los primeros pasos, hacemos todo con nuestra cuenta de root.
¿Problemas en los tildes o acentos?
Desde que empecé en esto de la Web, siempre tuve un problema: las tildes. O me salía el típico signo de pregunta o bien me salían caracteres extraños, que intentando por aquí y por allá siempre lograba evitar, aunque a veces me superaba y optaba simplemente por terminar escribiendo su entidad.
Aunque no pretendo arreglarle la vida a todo el mundo, en este post sí les dejaré algunos tips para asegurarse de que todo funciona como debería: se verán algunas funciones de PHP que sirven harto y se verá superficialmente la interacción con bases de datos.
Dato rosa antes de continuar: la diferencia entre acento y tilde, es que tilde representa el signo " ´ " mientras que acento se refiere a la fuerza que se le impregna a la sílaba específica. De esta manera, en la palabra "sílaba", el tilde está en la letra "i", mientras que el acento está en la sílaba "sí".
Recuperar archivos con vi
Hace tiempo que no escribo pero pretendo mejorar eso y nada mejor que un tip cortito: debido a la pésima condición de la conexión que ofrece VTR, se me desconectó el PuTTY desde el servidor mientras estaba editando un archivo. El único problema es que el famoso archivo no lo había guardado así que era inevitable que los últimos cambios se perdieran.
Sin embargo, es en este punto donde vi ofrece recuperar el borrador, pero como siempre había leído muy a la rápida, simplemente optaba por borrar este mismo. Para más mala suerte mía, pasé a borrar el archivo original en vez del archivo de recuperación ¬¬
