Archive for the ‘tecnología’ Categoría
Turdle, version 0.1
This is a little PHP script I’ve been using on my personal/home web server. I’ve improved it over time and suddenly I got in this sharing mood and thought:
«Gee, the rest of the world should have the pleasure of running this script on their web servers with PHP enabled. They should have the opportunity to simply copy it into a directory under their
DocumentRootand point their browser to it.»
Yeah, that’s what I thought. And now, a few months later, I remembered having thought that. So here it is: turdle_0.1.php. Rename it as you see fit (at least remove the .txt extension).
Like the header says:
/*
* TURDLE is "The Ultimate Recursive Directory Lister, Enhanced"
* it's not called ÑORDO because that doesn't make an nice acronym.
*
* It lists the content of the defined directory and creates
* links to it's content.
* It does not show files starting with ".".
* It does not show itself.
* It does not validate as HTML 4.01 Strict!
* It peruses the word "it" in it's header
*
*/By the way, it’s published under the GNU/GPL, too.
Estado de interrupción
Estrategias sencillas para evitar volcar tu «pila» mental
por Brian Tarbox
Original: «Interrupt Mood» by Brian Tarbox, PragPub Issue #5 [PDF] [epub] [mobi], translated by Lucas Vieites.
Dicen que no hay preguntas tontas, pero hay muchísimas preguntas innecesarias.
Sé que has tenido esta experiencia: estás metido profundamente en un problema de programación cuando de repente alguien te para en seco con alguna pregunta trivial. Tardas cinco segundos en responder a la pregunta y veinte minutos en reconstruir tu pila mental.
Como ingeniero de software he intentado durante demasiados años inculcar a jefes y colegas que estas interrupciones son caras, sin éxito. No me refiero a preguntas justificadas, aquellas a las que solo tú sabes responder, aquellas que bloquean el trabajo de la persona que pregunta. Me refiero a las preguntas tontas que el sentido común o una búsqueda de 30 segundo en Google podrían responder. Estas interrupciones afectan a la productividad además de ser totalmente irritantes.
Por qué programo como lo hago
Hace poco me tocó añadir ciertas funcionalidades a una aplicación web que escribí hace unos seis o siete años. Además de echarme algunas risas por alguna de las «barbaridades» que me encontré al revisar los archivos, me pasé un buen rato formateándolos para poder ver bien el flujo del código y comprender qué pasaba en cada sección. Y es que hace seis años todavía no tenía un estilo de código definido.
Cuando empecé a programar en PHP venía un poco viciado de programar en C y javaScript y hacía cosas como:
1 2 3 4 5 6 7 8 9 10 11 12 | function mifuncion() { // Función para hacer algo if (condicion) { // hacer una cosa } else { // hacer otra cosa } } |
desperdiciando valiosas líneas, algo que aprendí a evitar cuando los archivos de código se hacen más y más grandes y solo tienes 1024 píxeles de alto en tu pantalla.
A día de hoy ese mismo código lo pondría así:
1 2 3 4 5 6 7 8 | function mifuncion() { // Función para hacer algo if (condicion) { // hacer una cosa } else { // hacer otra cosa } } |
ahorrándome cuatro líneas.
Como el hombre es un animal de costumbres sigo haciendo esto porque, a pesar de que las pantallas son cada día más grandes, también los IDEs ocupan cada vez más espacio en pantalla con sus barras de herramientas, de estado y plugins de calidad de código y no sé qué mil cosas más. Y no me hagáis hablar de la manía que le ha entrado a los fabricantes por las pantalla panorámicas ;-(
Mi estilo actual de programación está fuertemente basado en las recomendaciones de Sun (ahora ya parte de Oracle), publicadas en sus «Code Conventions for the Java Programming Language» (traducido al español por javaHispano -no tengo enlace al documento original- y revisado y corregido por un servidor: Convenciones de código para el lenguaje de programación Java).
NOTA: también estoy a favor de usar tabulaciones de cuatro espacios, a pesar de que el plugin de wordpress ponga 8, y en contra de lo que defiende Jamie Zawinski en el artículo «Tabs vs Spaces» que he puesto de «Obligada lectura» en la columna de la derecha.
Copia de seguridad de bases de datos MySQL
Para realizar una copia de seguridad de mis bases de datos MySQL solía hacer un «mysqldump» de todo lo que había en el servidor y comprimirlo en un «tar.gz». Esto me funcionó muy bien mientras tenía pocas bases de datos y las usaba todas con cierta frecuencia. Ahora tengo otras necesidades, ya que muchos de los proyectos asociados a esas bases de datos ya no están activos, los he transferido o, simplemente han muerto.
Para que me fuera más fácil poder restaurar solamente una base de datos, decidí modificar mi antiguo script para que volcara cada una de las bases de datos en un archivo distinto. Un par de horas después surgió esto:
#!/bin/bash # Back up all databases of a server putting each db in a different file # Backup destination directory BACKUP_DIR="$HOME/backup/" # Name of the backup file BACKUP_FILENAME="mysqlbackup" # Use the date for the filenames BACKUP_DATE=`date +"%Y%m%d_%H%M%S"` # Name of the archive file BACKUP_ARCHIVE=${BACKUP_DIR}${BACKUP_FILENAME}_${BACKUP_DATE}.tgz TEMP_DIR="/tmp/" # Check if the temporary directory exists, if not, create it if [ -d ${TEMP_DIR}${BACKUP_FILENAME}/ ]; then # directory exists echo "Cleaning ${TEMP_DIR} ..." rm -rf ${TEMP_DIR}${BACKUP_FILENAME}/* else echo "Creating ${TEMP_DIR} ..." mkdir ${TEMP_DIR}${BACKUP_FILENAME}/ fi # Get all database names DATABASES=`mysqlshow -u root -pmysqlpassword | sed 's/[ +-|]\+//g' | sed '/\-/d' | sed 's/^Databases//g' | sed '/^$/d'` # Dump each db in a different file in the temp dir for db in $DATABASES; do echo item: $db mysqldump -v -u root -pmysqlpassword -h localhost --create-options --extended-insert --databases $db > ${TEMP_DIR}${BACKUP_FILENAME}/${BACKUP_DATE}_${db}.sql done # Create the archive file in the backup dir pushd ${TEMP_DIR} tar cfz ${BACKUP_ARCHIVE} ${BACKUP_FILENAME}/${BACKUP_DATE}_* popd # Remove temp files echo "Cleaning ${TEMP_DIR} ..." rm -rf ${TEMP_DIR}${BACKUP_FILENAME}/* # Pretty output echo "###############################################################################" echo " Archive file: ${BACKUP_ARCHIVE}" echo " Archive size: "`stat -c%s ${BACKUP_ARCHIVE}`" bytes" echo "###############################################################################" echo "End" echo ""
Creo se explica solo.
Los más vagos lo podéis descargar aquí: mysqlbackup.sh.txt.
No olvidéis darle permisos de ejecución («chmod +x nombre_de_archivo»), cambiar el nombre de usuario y la contraseña en los comandos «mysqlshow» y «mysqldump» y quitarle la extensión «.txt», aunque esto último es opcional.
[PHP] debug() function
Función utilizada para mostrar el valor de una variable. Normalmente la uso para depurar el código.
/** * debug; Prints a string and a variable value in red (for debugging purposes). * @name string containing the name of the variable */ function debug($name) { global ${$name}; global $debug; $the_style = "color:#f00;font-weight:bold;"; // Only show output if debugging is on if ($debug == 1) { $var = ${$name}; if (is_array($var)) { echo "##<b class=\"bold\">$name</b><br>\n"; while (list($key, $value) = each($var)){ print("\n".'<div style="'.$the_style.'">#=>'.$key.' ==> '); if (is_array($value)){ print('<code>'); print_r($value); print('</code>'); } else { echo nl2br($value); } print('</div>'."\n"); } } else { print('<div style="'.$the_style.'">#'.$name.'=>'.$var.'#</div>'."\n"); } } }
Ejemplo de uso:
<?php $debug = 1; // ... $mi_mensaje = "Mola Hundo!"; debug("mi_mensaje"); // OJO, se pone el _nombre_ de la variable, no la variable // ... ?>
Disfruta la vida
Cómo relajarse después del trabajo
por Daniel Steinberg
Original: “Get a Life – Slacking off” by Daniel Steinberg, PragPub Issue #3 [PDF] [epub] [mobi], translated by Lucas Vieites.
Cuando un periodista le preguntó a Spencer Tracy qué buscaba en un guión, éste le respondió con la siguiente ocurrencia: «Días libres». Pero, ¿y si sus días libres realmente hacían que fuera un actor más pleno?
Me encanta el ritmo del año académico. Los días tienen una regularidad que resulta refrescante después de la anarquía del verano. Hace un mes las calles estaban vacías a esta temprana hora de la mañana. Ahora hay una procesión de niños, cada u no con su mochila sobrecargada y un instrumento musical. Los chicos de secundaria van en una dirección calle abajo y los de primaria pasan en la dirección opuesta media hora más tarde.
Lo que hace que esto parezca fresco y divertido cuando empieza en septiembre son las vacaciones de verano. Los chicos han tenido una oportunidad de apartarse de la rutina del colegio. Han recorrido sus propios caminos y hecho sus propias cosas. Cuando vuelven en otoño están en un nuevo curso, haciendo cosas distintas de lo que hacían el año pasado. Los de octavo curso utilizan las habilidades adquiridas en séptimo, pero los retos y tareas a las que se enfrentan en octavo son nuevas.
¿Por qué no podemos disfrutar esa experiencia como adultos?
¡Que vienen los despidos!
Cómo aferrarte a tu empleo en tecnologías
por Andy Lester
Original: “The Layoff’s Are Coming” by Andy Lester, PragPub Issue #1 [PDF] [epub] [mobi], translated by Lucas Vieites.
En un mundo perfecto tu trabajo hablaría por sí solo, tu genialidad sería reconocida universalmente y tu puesto de trabajo jamás correría ningún riesgo. No es un mundo perfecto.
Estamos en una difícil situación económica. Millones de trabajadores han sido despedidos y los empleos en IT no están exentos de recortes. Sin duda tu empresa está sufriendo una disminución en ventas, si es que no está en caída libre, y es probable que lleguen los recortes de empleo.
No te preocupes.
Hay dos tipos de despido. Las reducciones masivas en las que desaparecen departamentos o unidades enteras están fuera de tu control. En estos casos la dirección corporativa decide que gran parte de la operación no da beneficios o puede ser subcontratada, y a la calle te vas. No se puede estar preparado para este tipo de despido. Un día te enteras de que los veinte del equipo estáis en la calle y no hay nada que puedas hacer para evitarlo.
Lo más probable es que te enfrentes a un despido más selectivo, y ni siquiera lo verás venir. Normalmente a un gestor de departamento o unidad se le dice: «Tienes que reducir tu equipo de veinte a diecisiete», y él tendrá que ingeniárselas para encontrar a los tres miembros menos rentables del grupo.
Éste es el despido que puedes evitar con acciones que puedes tomar ahora.
Crear una hoja de cálculo con PHP
Antes de nada: en este artículo no se explica cómo crear un archivo en formato Excel u OpenOffice.org Calc, sino de cómo hacer que estos programas «crean» que es así.
Crear una hoja de cálculo comprensible para Excel u OpenOffice.org Calc es más fácil de lo que parece. De hecho, el procedimiento que describo en este artículo realmente no crea una hoja de cálculo, sino un documento HTML con una tabla. El truco está en enviar una cabecera indicando un «mime-type» falso que será interpretado por el sistema operativo del cliente como una hoja de cálculo, tal que así:
header("Content-Type: application/vnd.ms-excel");
Los premios «Ig Nobel», fallados ayer, de risa como siempre
Ayer, 1 de octubre, se fallaron los premios «Ig Nobel» de 2009. Estos premios se otorgan a los proyectos de investigación que hace a la gente «reír y, luego, pensar». Algunos de los premiados de la larga lista son:
- Medicina veterinaria: Los investigadores que concluyeron que las vacas que tienen nombre producen más leche que las que no
- Medicina: Un californiano que, durante sesenta años, solamente ha hecho estallar los nudillos de su mano izquierda y no los de la derecha para demostrar que esto no causa artritis
- Literatura: La policía de Irlanda, por poner y tramitar más de cincuenta multas al infractor más repetitivo del país, un tal «Prawo Jazdy», que en polaco quiere decir «Permiso de conducir». Recogió el premio una ciudadana polaca.
- Salud pública: Un sujetador que, en caso de emergencia, se puede convertir en dos máscaras de gas.
- Química: Investigadores mexicanos que lograron crear diamantes a partir de un líquido, especialmente tequila.
Los premios son otorgados por varias sociedades adscritas a la Universidad de Harvard y organizados por la revista «Annals of Improbable Research» («Anales de investigación improbable»).
Útil no sé si es, pero risas sí que da.
Gnome 2.28, la última antes de Gnome 3.0
Ya está aquí la nueva versión del escritorio Gnome, las notas de lanzamiento ya están disponibles. Se supone que esta será la última versión de la serie 2.x y que la siguiente comience la serie 3.x.
Ta regüeno… ¡¿Qué más se puede decir?!



