unreal4u's Personal Network Because my reality… is just your virtuality

2Nov/10Off

¿Es tan difícil rankear mejor en Google?

A través de los años, he visto miles de propagandas mágicas de algunos SEO que prometen elevar un sitio X hasta los primeros lugares en Google (por lo general no toman en cuenta otros buscadores).
Este hecho en sí no deja de sorprenderme mucho, ya que algo sé del asunto y diría que en un mes es bastante difícil lograr ese objetivo. Verán, los principales atractivos para Google son primero el tener la antigüedad; segundo; la calidad del contenido, y tercero: velocidad de actualización.
Lo siguiente es una opinión personal sobre cuáles son los puntos que considero más importantes para ascender rápidamente en un océano de información.

Archivado en: Mundo Web, Pensamientos Personales | 1,180 vistas Continúa leyendo
18Oct/10Off

Habilitar salida de errores en Magento

Si alguna vez les ha salido el mensaje "Exception printing is disabled by default for security reasons" entonces sabrán que algo se hizo mal. Sin embargo, tampoco podremos saber qué salió mal, algo relativamente importante en el caso de que estemos desarrollando algún plugin o modificando algunos comportamientos del mismo Magento.

Para activar la salida de errores, basta modificar un archivo:

cd /magento/
cp errors/local.xml.sample errors/local.xml

Y listo! Con este tip ya pueden revisar el trace que genera Magento y poder solucionar sus errores rápidamente.

Archivado en: Magento, Mundo Web, PHP | 2,022 vistas 5 Comentarios
14Oct/10Off

PHP, SimpleXML y el famoso CDATA

PHP tiene -a mi gusto- una de las mejores librerías para trabajar con XML: SimpleXML. Crear un documento XML con SimpleXML es realmente simple, ya que basta agregar nodos hijos con sus respectivos atributos y estaría listo el documento. Sin embargo, SimpleXML sólo tiene una caída bien fea: el no saber tratar documentos que contengan CDATA.

El CDATA dentro de los documentos XML sirve para expresar contenido en HTML y le indica al navegador (también a Adobe Flash) que no debe parsear su contenido, esto quiere decir que debe interpretar la cadena "Hola mundo" dentro de un párrafo así:

<texto><[CDATA[<p>Hola mundo</p>]]></texto>
// y no así:
<texto>&gt;p&lt;Hola mundo&gt;/p&lt;</texto>
Archivado en: Classes, Mundo Web, PHP | 2,663 vistas Continúa leyendo
5Oct/10Off

Magento: sus índices y modificación de stock y precios

Tuve la suerte de conocer este año Magento: una plataforma de e-commerce, muy completa y que apenas lleva un año rondando en la Web. Sin embargo, ha sido por un lado una fortuna y por otro, una des-fortuna conocer este CMS.
Fortuna debido a que está muy bien hecho, 100% orientado a objetos y realizado con el framework de Zend. Tiene algunas opciones muy avanzadas y en general el planteamiento mismo de la base está muy bien hecho. Así por ejemplo, la base de datos implementa un esquema tipo EAV el cual, en un principio, puede parecer complicada. Sin embargo, con el tiempo uno va viendo que es mejor así. Lo otro que también está muy bien hecho, es su sistema de templates.

Sin embargo, también ha sido una des-fortuna debido a su complejidad inicial y su pobre documentación. No existe un lugar centralizado que sea bueno donde hayan tips, consejos, descripción de métodos y otros y mucha información uno la puede ir sacando a través de los distintos blogs que existen.

Archivado en: Mundo Web, PHP | 1,282 vistas Continúa leyendo
30Sep/10Off

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").

Archivado en: Bases de Datos, Linux | 1,367 vistas Continúa leyendo
29Sep/10Off

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? :D 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 :)

Archivado en: Linux, Pensamientos Personales | 1,221 vistas Continúa leyendo
24Sep/10Off

Solución a problemas comunes en tchile

Muchas veces, cuando algún cliente me contacta, ya se ha comprado el dominio y el hosting (Lo cual es una excusa más para no seguir perdiendo plata y que esté la página arriba rápido). Y dentro del universo de hostings, tchile es tal vez el hosting más popular en Chile, casi todos mis clientes tienen su página hosteada ahí.
Sin embargo, no todo es color de rosas. He tenido bastantes problemas en el pasado por páginas subidas ahí y también -como no- hasta WordPress con el theme predeterminado simplemente me mostraba una página en blanco cuando intentaba editar o crear un nuevo post.

Por lo tanto, opté por lo sano y me puse a investigar todas aquellas cosas que es bueno desactivar cuando tenemos que montar alguna página en este hosting.

Archivado en: Mundo Web, PHP | 1,678 vistas Continúa leyendo
22Sep/10Off

Revisión de RUT con Javascript y PHP (Revisited)

Sí, es cierto, ya existe un post al respecto. Pero estoy viendo en Google Analytics que todo lo relacionado con el RUT es uno de los términos más buscados para la página, así que aprovecho de pegarle una revisión a ese post que ya tiene un poco más de 6 meses, así que bienvenido a la revisión del RUT como debería haber sido.

Como ese título siempre me ha llamado bastante la atención, es que le daré un enfoque bastante especial a que así sea. Este artículo estará separado en 3 partes: la primera, una explicación teórica sobre qué es el RUT y cuál es su función. La segunda, el algoritmo en JavaScript y el tercero, el algoritmo en PHP, obviamente estas últimas dos han sido revisados, actualizados y mejorados con respecto a su primera versión, desde la llamada inicial que se hace a la función, pasando por expresiones regulares y la detección automática del tipo de identificador: RUT o RUN.

Archivado en: Javascript/jQuery, Mundo Web, PHP | 2,183 vistas Continúa leyendo
20Sep/10Off

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.

Archivado en: Linux | 1,322 vistas Continúa leyendo
9Sep/10Off

[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.

Archivado en: Linux, PHP | 3,125 vistas Continúa leyendo
7Sep/10Off

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.

Archivado en: Linux | 779 vistas Continúa leyendo
6Sep/10Off

[Mac OS X] Habilitar teclado en ES-MX, ideal para programadores

Una de las cosas que más me desconcertó cuando empecé a trabajar con Mac, fue la ubicación de las teclas. Y es que, desde que entré a estudiar informática, siempre había elegido la distribución mexicana del teclado, por la simplicidad con la cual se pueden escribir caracteres como < y >, y también las infaltables {} y [], sin olvidar la ubicación del tilde, al lado de la P y no de la Ñ.
Más grande aún fue mi sorpresa al ver que sólo estaba el teclado Español de España (discúlpenme mis lectores españoles, pero su configuración de teclado es lo más incómodo que hay para programar) y que simplemente no podía elegir otra distribución.
Así que la hice corta: Googleé de inmediato y encontré la solución. Sin embargo, esa misma solución ahora está offline, así que acá tienen un respaldo, esta vez escrito por este humilde servidor.

Archivado en: Apple/Mac | 1,957 vistas Continúa leyendo