Esta es la historia de este blog, y aquí aparecerán los pasos que más o menos seguí para crearlo…
Las páginas empezaron a tomar forma el 25 de Mayo de 2003, aunque la idea de crear mi propio weblog ya rondaba por la zona creativa de mi cerebro. Pensé en utilizar alguno de los weblogs que hay disponibles como software libre (Slash, GeekLog, PostNuke…) pero la idea de comenzar desde cero, y así personalizar tanto como quisiera la apariencia del sitio, así como aprender algo de PHP+MySQL, fue demasiado poderosa y finalmente tuve que ponerme manos a la obra…
En este hilo intentaré poner lo más detalladamente posible los pasos que seguí hasta que mi bLog está como es ahora. Espero que disfrutes!!
Conocí a Bilo, Nano, al robotito y compañía dando vueltas por las páginas de es.comp.os.linux y desde entonces soy asíduo a visitar la tira en la que pasan todo tipo de aventuras, siempre con un transfondo linuxero que les dá un punto divertido a estas batallas entre sistemas operativos, distribuciones, escritorios, editores, sobre cómo son las mujeres, etc…
Áltamente recomendable!! Como dicen en la web: “Haciendo Linux divertido desde 979516800″ (Fíjate Pablo qué Unix Time tan chulo ;-)
Así que utilizando el script que tienen en ecol pinché la primera viñeta en el bLog para no perder detalle de la última entrega de la tira. Tengo pendiente para yá pedirle a GonzoTBA (el autor, que también tiene un blog, el cual sirvió de inspiración al mío) un ejemplar del libro “Bilo y Nano se lo montan” porque es una de esas raras cosas que se encuentran en internet que a uno le gusta tener en papel, encuadernadas y todo eso ;-) Para guardarlo para la posteridad y enseñárselo a los amigos y a la novia, que aunque al principio no entienden a qué viene esa risilla tonta que tienes al leer cada tira, con el tiempo creo que terminarán cojiéndolo. Por ahora ella me regaló un Tux, eso es buena señal… :-D
Por ahora Quercus Place (el blog es la enésima versión de mi página, tradicionalmente llamada Quercus Place) está colgada de mi propio servidor.
Es un viejo péntium a 100 MHz, con 32 Mb de RAM y 12 Gb de disco duro, y esta es su historia: En contra de los designios de mis progenitores me resisití a deshacerme de la CPU del viejo péntium que ya no podía ni con su alma, así que lo guardé con un par de discos duros de esos de los viejos tiempos que entre los dos sumaban 1.2 Gb y hacían un ruido que parecía que el cacharro iba a despegar…
Pero hace unos días me regalaron por mi cumple un reluciente disco duro de 120 Gb para mi computadora, así que pude reciclar uno de los discos que tenía, el de 12 Gb en el viejo péntium, que esperaba con su Debian Woody a tener algo de espacio libre para poder darle caña a esos megahertzios…
Así que dicho y hecho, con disco duro nuevo y el flamante Apache+PHP+MySQL tenía listo el sistema LAMP que contendría por una temporada a Quercus Place. Ni que decir cabe que con pocos sistemas operativos se puede montar eso en un computador de estas características…
El problema del ruido se redujo mucho al cambiar el disco duro, pero aún hacía demasiado para dormir con la maquina dentro de la habitación, así que le cambié la fuente por una vieja de un 486 que pasó unos días en mi casa antes de ser retirado, que hacía algo menos de ruido. Pero aún así era un poco demasiado, así que desmonté la fuente y le hice el viejo truco de poner el ventilador de la misma a funcionar a 7 V, en vez de a 12 V. (Eso se hace conectándolo entre el cable rojo y el amarillo de una de esas tiras de cables que salen de la fuente. Se puede cortar y empalmar o desmontar una de las clavijas y dejarlo más fino y seguro). Así gira a menos revoluciones por minuto y por lo tanto hace menos ruido…
Luego metí la CPU sin la tapa superior dentro de un armario -tiene buena ventilación porque tienes espacio libre y el armario no tiene fondo, así que le entra aire suficiente (espero)- y ahora el ruido que hace es mínimo. Por supuesto hay que apretar bien todos los tornillos para evitar vibraciones en las piezas, que son las que producen el ruido mayormente.
Ahora estoy estudiando métodos para aislar acústicamente un poco más la puerta del armario, a ver qué pasa… Ya os contaré. Por ahora dejo unas fotos del chisme en su habitáculo.
Como ya he contado por ahí arriba la base de datos está hecha con MySQL, lo que en principio significaba un reto puesto que no tengo (o al menos no tenía hasta que empecé con esto) ni idea de bases de datos… Así que seguramente las tablas o los campos no sean del tipo más adecuado, pero bueno, funcionan, que es de lo que se trataba…
Sin un punto desde el que empezar se antojaba complicado decidir la estructura que la DB -Data Base, la mayoría de las cosas relacionadas con la informática las leo en inglés, y eso se pega- tendría que tener, así que buscando un poco en encontré el sitio Webmonkey en el que hay algunos tutoriales bastante útiles sobre PHP y un montón de cosas, entre ellas justo lo que necesitaba: Threaded Discussion with PHP. Así que le eché un vistazo para ver qué me iba a hacer falta en mi DB y me puse manos a la obra (con un ojo puesto en el manual de MySQL…
[ Tengo en mente liberar el código de todo este weblog, incluida la base de datos. Pero antes dejaré pasar un tiempo para ver que no se autodestruye nada cuando tenga algo más de carga el sitio. ]
Por ahora tengo dos tablas, una con los usuarios y otra con los artículos. Éstos se almacenan en un directorio del servidor, como archivos de texto nombrados según el Timestamp en que son creados. Ese es un buen método, pero si accidentalmente actualizais el timestamp de alguna entrada en la tabla, no se va a actualizar el nombre del arhivo, lo que se traduce en un error en la página por no encontrar la historia que busca. La voz de la experiencia :-)
En la tabla de usuarios, lo normal: nombre, email, contraseña, etc… Y en la tabla de artículos: identificador único del artículo, cual es su padre, cual es su primer antepasado, el título, el autor, la sección, etc… También lo normal, supongo…
Para mostrar las historias en las páginas, pues supongo que también lo normal: buscar en la tabla de historias la que se quiere mostrar (seleccionada con las variables de php que ya comentaré otro día) y hala, incluir el archivo… He usado algunos trucos -que para variar no sé si son normales o no- para mostrar sólo las primeras líneas de las historias en portada, y para poner lo de X Comentarios y todo eso… Pero ya lo contaré cuando hablemos del PHP.
Una cosa interesante ha sido descubrir LIMIT y COUNT en las consultas, así se puede limitar el número de historias que aparecen en la portada, y sacar el cartelito de ir a la página siguiente si es que hay más, etc…
Para terminar hablaré de las copias de seguridad. (Como veis he tirado del manual a saco). He preparado un script muy sencillo para poner en el crontab del servidor que utiliza mysqldump para volcar la base de datos completa a una copia de seguridad. Ya de paso he hecho otro script para guardar los archivos de la web, también al cron y a correr todos los días… :-D
Aún tengo algunas dudas sobre qué ocurre si dos visitantes publican algo justo a la vez. O si alguien publica algo mientras se está haciendo la copia de seguridad: Supuestamente mysqldump bloquea las tablas para que nada falle, pero no acabo de saber si tengo todo bien configurado parar que no se pierdan cosas en casos “raros”… Alguien me puede aclarar cómo dejar ese tema a punto?
Es genial que hayas decidido crear tu propio blog desde cero, programándolo tu mismo.
Te deseo mucha suerte en tu blog y con tu aprendizaje. (Un consejo: no hagas que la gente se tenga que registrar, ya que es un coñazo y echa un poco para atrás, es más guay algo del estilo de “Recordar mis datos” una vez que el usuario ha hecho un comentario)
Un saludo desde http://www.lavidadelosgorilas.org
Otros weblogers que programan php (para complementar al movabletype que es un producto difícilmente mejorable: http://www.whatdoiknow.org/ http://www.textism.com/ )
Lo que primero me llamó la atención de los weblogs fue la ristra de parámetros que aparecen en la barra de dirección al ir navegando de página en página. Luego cuando te pones con el PHP e investigas un poco te vas dando cuenta de que es la manera de pasar las variables de una página a otra, e incluso de pasar los nuevos valores a la misma página para cambiar la visualización o cosas así… Pero sigue sin gustarme demasiado ver tantas cosas ahí, así que he intentado reducirlas al mínimo.
Como tampoco tenía apenas idea de php, básicamente lo que hice fue preparar algo que funcionara y luego ir limpiando el código. Muchos weblogs utilizan dos o tres páginas para mostrar todo lo que sea, sólo pasándo un parámetro que hace que se ejecute una función u otra. He intentado mantener las páginas lo más ligeras posible, dado principalmente a la máquina en la que corre todo esto, aunque seguramente a cambio de hacer una llamada extra a la base de datos, el tiempo dirá si ha sido buena idea ;-) Así que hay una página principal, una para mostrar las historias, otra para el fotolog, para el registro, etc… La cosa era no complicarlo demasiado metiendo un montón de funciones en la misma página.
Los chicos de PHP.net recomiendan, por motivos de seguridad, no depender de que las variables que se pasen en la línea de comandos (GET) o a través de formularios (normalmente POST) sean variables globales -parece ser que la mayoría de la gente las utiliza así, con register globals=yes en sus apaches- y yo me enteré de eso cuando ya tenía un montón de funciones así funcionando… Así que para hacer las cosas como es debido traduje mis funciones para usar las variables del tipo $_GET, $_POST, etc… Hay una explicación de este asunto de las variables aquí. La verdad es que todo queda más limpio así, que a medida que el weblog iba creciendo se empezaban a liar todas las funciones y yo empezaba a perderme.
Pero bueno, para no ser informático no ha quedado del todo mal. Una cosa que tiene el PHP es que no te permite ni un fallo de sintáxis, si te olvidas un punto y coma da error -eso si, te dice dónde está el error, casi siempre- precísamente ese fue el motivo que me dió un colega para usar ASP en vez de PHP, que con ASP da igual que cometas errores, que se lo traga todo… En fin… no comment.
Una cosa interesante que descubrí y que quizá a alguien le puedar ser útil es que hay que tener cuidado al previsualizar las historias, porque si permites con la función strip_tags que pasen etiquetas HTML y alguna se queda abierta puedes tener problemas con la previsualización. Eso se soluciona metiendo el texto a previsualizar en una tabla, que termina las etiquetas que no fueron cerradas.
Y por ahora ya es suficiente, que la termodinámica espera. Comentarios? Alguien se ha montado algo como este weblog? O ha intentado personalizar un poco más los weblogs prefabricados?
Pues si, ya se pueden escribir historias nuevas a través de wap en mi weblog :-D Ahora que tengo un móvil de esos super-troopers con GPRS, pantalla a color y todas esas modernidades y que el alojamiento de esta web me da la opción de colgar páginas wap tenía curiosidad por ver si podría hacerlo funcionar…
Las páginas wap están escritas en WML, que es parecido al HTML de toda la vida, aunque con un número de etiquetas muy reducido y sin duda mucho más exquisito con la sintáxis, devolviendo un error 500 cada vez que algo no le gusta. Para montar las páginas he utilizado (cómo no) PHP, y he utilizado algunos emuladores de wml (que son programitas que te traducen las páginas wml a html para que puedas ver cómo va quedando sin usar el teléfono, desde internet por ejemplo), el que más me ha gustado ha sido este. Aunque si vas a intentar algo con wap+php debes saber que muchos (el que te recomiendo funciona bastante bien) de los emuladores que se encuentran por ahí no interpretan nada bien el php, y que páginas que en los emuladores funcionan bien darán un bonito error 500 en tu teléfono… Y en ningún sitio te dice dónde está el error :-(
Sobre el wml no hay mucho que decir, es muy sencillo y lo mejor es cojerse un buen tutorial como este, este, o este otro. Y a partir de los ejemplos que hay en ellos ir construyendo las páginas. Tratar de mantenerlas lo más ligeras posible para no arruinarnos con el móvil y vigilar mucho las líneas de PHP que sacan texto en la pantalla (echos y prints) porque si algo está mal ahí tendremos el magnífico error 500.
Quizá algún día, cuando el GPRS sea algo más barato y esté más extendido prepare algo de código para leer las últimas entradas en el weblog a través de wap, pero por ahora nos conformaremos con poder escribir historias desde cualquier lugar con cobertura ;-)
Quería un sitio donde colgar algunas fotos, para poder compartirlas con la gente con la que normalmente me sentaría en algún sitio a verlas, pero aparte de estar en la era digital mucha de esa gente está lejos, o están cerca pero demasiado ocupados para sentarse un rato en ningún sitio, así que busqué una manera de ponerlas en el weblog y poder comentarlas un poco.
El primer paso para crear un album es cambiarles el nombre a las fotos, que tal como salen de las cámaras digitales queda un poco críptico. Para eso preparé un script para Konqueror accesible desde el menú Gnome, pero el Konqueror de KDE está mucho más avanzado, así que...]
Luego con un par de scripts, también accesibles desde el botón derecho, roto las fotos que están tomadas en vertical y ya está todo listo para crear el álbum. Desde hace tiempo utilizo el programa album para generar las miniaturas y crear álbums en html, así que lo único que tuve que hacer fue escoger uno de los temas y modificarlo a mi gusto :-) A partir de ahí integrarlo un poco en el PHP del fotolog y listo!
Para la miniatura de la columna de la izquierda preparé una función en PHP que lee una línea aleatoria de un archivo de texto con las direcciones de todas las miniaturas de los álbums, extrae de la misma el nombre del álbum y saca en la columna la miniatura, fácil, no? Pensé en utilizar para esto una tabla de la base de datos, pero el archivo de texto funciona muy bien y es rápido, así que creo que por ahora se quedará así :-D
[ Si alguien está interesado en los scripts para rotar varias imágenes a la vez o renombrarlas secuencialmente que me de un toque y se los mando ]