Category: Programacion

¿Cómo arreglar el problema de las tildes y la eñe en WordPress?

Luego de haber retomado el blog me encontré con un problema: Había un monton de caracteres raros en todo lugar donde antes tenía una tilde o una “eñe”, luego de investigar un poco encontré que le habían cambiado el collation a la base de datos de mi blog.

Así el collation que tenía mi blog decía “latin1_swedish_ci” y yo no entendía el motivo, recurriendo a la documentación pude ver el motivo
https://dev.mysql.com/doc/refman/5.6/en/charset-collation-effect.html

Básicamente mi contenido fué creado con un set de caracteres y al tener la base de datos con un collation distinto pues se hizo todo el embrollo, para solucionarlo tenemos que modificar y poner el set correcto, mi recomendación es utilizar UTF-8

Así que vamos paso a paso con la solución que dicho sea de paso también sirve para MariaDB.

Lo primero es que saques un backup completo de tu base de datos antes de empezar a trabajar, mejor prevenir que lamentar 🙂

Abres una consola de MySQL en tu línea de comandos, PHPMyAdmin o el gestor de tu preferencia y ejecutas este query SQL

ALTER DATABASE nombre_de_la_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Eso te asegura que cuando se cree una nueva tabla se haga con la codificación correcta, ahora nos toca trabajar en las tablas
ALTER TABLE nombre_de_la_tabla CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Ahora nos toca arreglar las tablas de forma individual, el truco es hacer un dump y luego restaurarlas con el set correcto.
mysqldump -p –default-character-set=utf8 nombre_de_la_db nombre_de_la_tabla > tabla_corregida.sql

Y luego la restauramos con
mysql -p base_de_datos < tabla_corregida.sql

Y eso es todo!

Solución alternativa
Si te da miedo manipular las tablas entonces puedes intentar reemplazar los caracteres malos usando UPDATE

Por ejemplo si quieres arreglar todas las eñes de tus posts tendrías que ejecutar algo como esto:
UPDATE wp_posts SET post_title = REPLACE(post_title, "ñ", "ñ");
UPDATE wp_posts SET post_content = REPLACE(post_content, "ñ", "ñ");

En este ejemplo estoy cambiando tanto el título como el contenido del post, hay más campos y puede ser un poco más tedioso pero si te da más confianza hacerlo así pues adelante.

Linus Torvalds habla sobre software de control de versiones

El otro dí­a en el Barcamp Lima estuvimos hablando un poco sobre Software de Control de Versiones y lo importante que esto es para cualquier desarrollador especialmente si trabaja en equipo.

Buscando información sobre Git encontré esta charla que dió Linus Torvalds en Google y que habla sobre el software de control de versiones, obviamente se enfoca en los beneficios de Git pero no deja de mencionar los defectos de CVS y Subversión y de lo feos que le parecieron desde el principio y que fué eso lo que lo llevó a usar BitKeeper, una excelente charla, no se la pierdan 😀

Instalar psycopg2 en FreeBSD

Me ví­ en la situación de tener que trabajar con Postgres sobre FreeBSD y necesitaba un script para jalar datos de unas bases de datos en formato DBF (si, DBF pueden creerlo?) fue asi que encontre un script llamado dbf2pgsql que fue hecho por Hiroo Imaki.

Luego de descargarlo, lo modifiqué un poco para que se adaptara a mis necesidades y cuando lo ejecuté encontré un problema, me hacia falta la librerí­a psycopg2 que es un magní­fica librerí­a que permite la interacción entre Python y Postgres, el problema es que por lo visto da muchos problemas para poder ser instalado.

El primer requisito para poder instalar psycopg2 es tener instalado Setuptools luego de instalarlo trate de instalar pysopg2

python setup.py build

No lo pude hacer porque tení­a el siguiente error
error: static declaration of ’round’ follows non-static declaration

Luego de mucho buscar por una solución me encontré con este post de Reed Obrien
http://reedobrien.blogspot.com/2008/02/error-building-psycopg-custom-egg.html

Por lo visto es un error para poder hacer el build en FreeBSD, solucion pasa por editar el archivo config.h y comentar las siguientes lí­neas:
#if defined(__FreeBSD__) || (defined(_WIN32) && !defined(__GNUC__)) || defined(__sun__) || defined(sun)
/* what's this, we have no round function either? */
/*
static double round(double num)
{
return (num >= 0) ? floor(num + 0.5) : ceil(num - 0.5);
}
*/
#endif

Luego de esto cruce los dedos:
python setup.py build
Bingo! funcionó sin problemas, y ahora el paso final
python setup.py install

Y ahora ya pude correr con éxito el script dbf2pgsql, tardé mucho en dar con la respuesta, asi que espero que esto pueda ser útil.

Que es UTF-8?

La respuesta corta es: UTF-8 es un formato para codificar caracteres Unicode utilizando secuencias de bytes.

Y qué es Unicode?
Probablemente muchos de ustedes hayan oí­do hablar de los sistemas de codifiación, los que hablamos español estamos muy acostumbrado al famoso ASCII si, ese que nos ayuda a sacar las tildes 😛

Pues asi como el ASCII hay muchí­simos sistemas de codificación que lo usan en otros idiomas e incluso un mismo idioma puede tener varios sistemas de codificación que varí­a por la plataforma en la que se ejecuta. Y como hacemos para arreglar todo este embrollo? como hago para poder ver páginas de anime japonés con sus caracteres reales y no solamente unos cuadrados? como hacen los hebreos para poder leer correctamente algo en francés o ruso? La respuesta a todo es Unicode!

Unicode proporciona un número único para cada carácter, sin importar la plataforma, sin importar el programa, sin importar el idioma.


Creative Commons License photo credit: sillygwailo
Dicho todo esto, volvamos con UTF-8 !

UTF-8 se lo debemos al maestro Ken_Thompson, si uno de los genios detrás de Unix y el creador de Plan 9

UTF-8 usa grupos de bytes para representar el estándar de Unicode para los alfabetos de muchos de los lenguajes del mundo. Es especialmente útil para la transmisión sobre sistemas de correo de 8 bits.

Usa de 1 a 4 bytes por carácter, dependiendo del sí­mbolo de Unicode. Por ejemplo, se necesita un solo byte en UTF-8 para codificar los 128 caracteres US-ASCII en el rango U+0000 a U+007F de Unicode.

Para todos aquellos que tenemos necesidad de programar usar UTF-8 nos ha servido para aliviar muchí­simos dolores de cabeza, especialmente para los que hablamos español y tenemos necesidad de colocar tildes y algunos caracteres especiales, y muchas veces tení­amos que hacerlo con software que no contemplaban esas posibilidades. Ahora casi todo el software que usamos y que tiene que ver con manipulación de documentos soportan este formato.

Para los que son webmasters UTF-8 es especialmente importante porque les ahorrará muchos problemas con los navegadores, webservers y las aplicaciones que escriban.

Si quieres verificar que tú sistema y navegador soportan UTF-8 (lo raro serí­a que no lo soporte) puedes abrir este archivo de texto :
http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

Si ves todos los caracteres no tienes problemas, pero si ves puros cuadrados o caracteres sin ningún tipo de secuencia lógica entonces estas usando un sistema de codificación alterno como ISO-8859-1 busca en tu navegador y lo cambias, aunque mi blog esta codificado para UTF-8 y le avisa al browser que deberí­a de utilizar UTF-8 para interpretar todo.

Creative Labs se dispara en el pie

Creative Labs ha sabido ganarse una reputación a través del tiempo con sus tarjetas de sonido, tienen el dominio casi exclusivo en el mundo de los gamers que es quizás la parte mas importante de su negocio. Yo siempre los tení­a en alta estima, hasta que me enteré de que han amenazado a Daniel_K.

Quién es Daniel_K ? pues nada menos que un desarrollador independiente que logró lo que ni los mismos ingenieros de Creative Labs pudieron: hacer funcionar correctamente los drivers para sus tarjetas de video en Windows Vista. El problema es según los señores de Creative que el buen Daniel_K esta recibiendo donaciones (claro seguro ha ganado una millonada) por SU trabajo, esto a ellos no les gusta porque dicen que esta lucrando con su Propiedad Intelectual, aquí­ el mensaje en los foros de Creative:

Daniel_K:

We are aware that you have been assisting owners of our Creative sound cards for some time now, by providing unofficial driver packages for Vista that deliver more of the original functionality that was found in the equivalent XP packages for those sound cards. In principle we don’t have a problem with you helping users in this way, so long as they understand that any driver packages you supply are not supported by Creative. Where we do have a problem is when technology and IP owned by Creative or other companies that Creative has licensed from, are made to run on other products for which they are not intended. We took action to remove your thread because, like you, Creative and its technology partners think it is only fair to be compensated for goods and services. The difference in this case is that we own the rights to the materials that you are distributing. By enabling our technology and IP to run on sound cards for which it was not originally offered or intended, you are in effect, stealing our goods. When you solicit donations for providing packages like this, you are profiting from something that you do not own. If we choose to develop and provide host-based processing features with certain sound cards and not others, that is a business decision that only we have the right to make.

Although you say you have discontinued your practice of distributing unauthorized software packages for Creative sound cards we have seen evidence of them elsewhere along with donation requests from you. We also note in a recent post of yours on these forums, that you appear to be contemplating the release of further packages. To be clear, we are asking you to respect our legal rights in this matter and cease all further unauthorized distribution of our technology and IP. In addition we request that you observe our forum rules and respect our right to enforce those rules. If you are in any doubt as to what we would consider unacceptable then please request clarification through one of our forum moderators before posting.

Phil O’Shaughnessy
VP Corporate Communications
Creative Labs Inc.

Es realmente increí­ble lo que esta haciendo Creative, en vez de darle un trabajo a este hombre que les esta haciendo un ENORME FAVOR lo que hacen es amenazarle con enjuiciarlo, es absolutamente ridí­culo!

Yo espero que se rectifiquen en el corto plazo sino, pues nunca más pienso comprar un producto de Creative Labs, demás esta decir que mucha gente ha protestado y en el mismo foro del mensaje expresan su solidaridad y apoyo a Daniel_K.

Fuente: Message to Daniel_K

Como crear un videojuego con SDL

El mundo de los videjuegos es apasionante y si eres programador, pues crear un videojuego puede ser un desafí­o sumamente estimulante. SDL (Simple DirectMedia Layer) es una librerí­a creada especialmente para poder crear videjuegos, es multiplataforma y permite controlar a bajo nivel nuestro teclado, joystick, mouse, audio, video.

Si quieres aprender lo básico de SDL y crear un juego en 2D rápidamente te recomiendo seguir esta magní­fica guí­a que paso a paso nos mostrará todo el proceso que conlleva la creación de un videojuego:

Guí­a SDL para Videojuegos

Update:
Encontré otro tutorial más en perfecto español:
Como desarollar un videojuego paso a paso con SDL

Bugs en WordPress: contenido no encontrado y categorias desaparecidas

Encontré 2 problemas en wordpress ( o por lo menos en mi instalación), no sé que problema hubo pero de la noche a la mañana, varios dí­as después de haber actualizado a la última versión 2.3.3 me dí­ cuenta que el contador bajo terriblemente, entre al panel de administración y todo lucí­a bien, cargue el blog y todo bien.

No input file specified
Pensé que era una falla del contador, pero al ver Google Analytics encontré el mismo problema, decidí­ investigar mas a fondo y el resultado fué que habí­a una gran cantidad de post que tení­an un problema con el permalink y en vez de visualizar la página aparecí­a un mensaje de error que decí­a: No input file specified . Inicialmente pensé que erá el PHP pero no, quedó descartado porque habí­a post que si se visualizaban correctamente, luego me dí­ cuenta que los feeds tampoco funcionaban. Entonces ví­ la luz, el problema tení­a que ser el .htaccess.

Lo borré. lo hice de nuevo, recreé la estructura de permalinks desde el wordpress y todo seguí­a igual, asi que no me quedó otra que revisar el código, luego de mucho mirar y casi tirar la toalla, encontré un enlace muy ilustrativo: de como funcionan los permalinks en WordPress

Fué asi que llegué a la solución, lo que tiene que hacer es lo siguiente:

1.- Editar el archivo wp-includes/vars.php
2.- Busquen una lí­nea que tenga el texto $is_apache = bla bla bla puede ir cualquier cosa aqui dependiendo de tu version bla bla bla
3.- Comentar esa lí­nea anteponiendo “//” para que quede asi // $is_apache = bla bla bla
4.- Agregar una lí­nea que diga exactamente: $is_apache = 1;

Por lo visto hay un problema entre wordpress y como detecta el webserver que estas ejecutando, lógicamente esto aplica para todos aquellos que usen Apache 🙂

Las categorí­as se perdieron!
Todo el problema anterior me hizo tomar la decisión de cambiar de hosting, pues fueron 3 dí­as entre que empezó el problema y que yo lo pude solucionar, debido al limitado acceso que tengo al servidor (no tengo privilegios de root), si hubiera sido un problema de apache o php no lo hubiera podido solucionar debido a la falta de privilegios.

Pasé mi blog a DreamHost, todo salió supuestamente bien, hasta que caí­ en la cuenta que todas las categorí­as habí­an desaparecido! todos mis posts aparecí­an como “Uncategorized”.

Revisé las 3 tablas que tienen que ver con las categorí­as en wordpress que son las siguientes: wp_categorias, wp_link2cat y wp_post2cat las volví­ a pasar, pero tení­a el mismo problema, me pusé a buscar y encontré que era un problema conocido:
Upgrade caused loss of Categories

El problema es que mi blog no tení­a exactamente ese problema, yo no estaba haciendo un upgrade, realmente estaba haciendo una migración sobre un “fresh install”. Hice muchas pruebas, hasta que en ese mismo topic encontré la solución: como forzar el upgrade de tu base de datos en WordPress, no, no se trata del mysql en realidad, sino del control de versiones interno que tiene WordPress y que tiene este problema.

La solución es bastante sencilla y rápida
1.- Entra a la consola de mysql y digita
UPGRADE wp_options SET db_version="5183"
2.- Debes usar el número de versión adecuado, no es un número fijo, el número varia de acuerdo a la versión de WordPress que tengas, aqui una tablita para las ultimas versiones:
2.3.2 = 6124
2.3.1 = 6124
2.3 = 6124
2.2.3 = 5183
2.2.x = 5183
2.2 = 5183
2.1.3 = 4773
2.1.x = 4773
2.1 = 4772
2.0.11 = 3441
2.0.x = 3441
2.0 = 3441

3.- Si no puedes acceder a la consola en mysql, puedes usar Phpmyadmin o el gestor de mysql que tengas y realizas exactamente el mismo cambio, ubicar el campo db_version en la tabla wp_options y cambiarlo.
4.- Desactiva todos los plugins y luego pon en tu navegador
http://www.tublog.com/wp-admin/upgrade.php sigue los pasos y todo se arreglará
5.- Todas las categorí­as y subcategorí­as aparecieron otra vez, peeeero mis post seguí­an uncategorized 😛

Por lo visto mi problema era bastante particular y ponerme a categorizar todo de nuevo me da muuuuucha flojera, asi que tení­a que encontrar la solución. Luego de mucho investigar, llegué a la conclusión de que habí­a un problema entre las categorí­as y los tags, desactive todos los plugins, los volví­ a activar y no paso nada, hasta que se me probé usar la opción de transformar alguna categorí­a en tag.

Lo hice solo con una para probar y voilá! se arregló todo! como no creo en la magia seguí­ buscando y la explicación es que todo este rollo se arma por la nueva forma de manejar las categorí­as y los tags que tiene la versión 2.3.3 de WordPress.

Por cierto una de las causas conocidas para este problema es la utilización del plugin Google Sitemap Generator que yo lo usaba, pero al pasar al nuevo hosting nunca instalé.

A ver si le sirve de ayuda a alguien 🙂