Renfe Cercanías y sus descuidos
Está claro que si quieres colarte en el tren es fácil, saltas el torno cuando no mire nadie y listo. Como han substituido a los revisores por elementos mecánicos que ni hacen huelga ni se quejan es poco probable que nadie te pida el billete.
El otro día se me ocurrió otra idea al ver lo siguiente, al acercarme a la estación (y antes de pasar los tornos, estando todavía fuera) me llama la atención la siguiente imagen que no pude evitar fotografiar.
Supongo que en una puesta a punto por parte del técnico, por la causa que fuera, tuvo que quitar una tira importante del rollo de billetes que se usa para imprimir.
Sé que una parte del billete, la que podemos leer los humanos, se escribe con impresión térmica, alguien con los recursos necesarios podría utilizar fácilmente esta tira para crear sus propios billetes. Lo que desconozco totalmente es el uso de la aparente banda magnética que existe tras esta tarjeta, pero bueno, lo difícil, que sería conseguir ese tipo de billete, ya te lo facilita renfe.
Como en la mayoría de ocasiones, los fallos informáticos más importantes no son tales, si no las propias personas somos las que descuidamos este aspecto.
Software y errores
Una parte muy importante del desarrollo de software es la parte de pruebas, que en teoría se debe realizar a lo largo de la realización del proyecto, desde el primer día que se programa la primera línea (bueno, quizás no tanto, pero casi) los programadores deben realizar pruebas y pruebas con cada archivo desarrollado. Gracias a estas pruebas se detectan los fallos, y se consigue mejorar el software.
Para los que no saben demasiado del ciclo de desarrollo de un producto software, típicamente está dividido en varias etapas.
- Análisis
- Diseño
- Implementación (programación)
- Pruebas
- Implantación
- Mantenimiento
Estas son las clásicas etapas, pero como para cada proceso de ingeniería, tiene variantes en las que se extiende, recorta o se toman de otra forma. Esto siempre depende de proyecto que se este desarrollando, el equipo con el que se desarrolle, las herramientas, etc. Estas etapas son un ciclo que se realiza una y otra vez hasta que se consigue el producto software deseado. Durante estas etapas interviene el cliente para dar su feedback.
Ciclo de un producto software
Pensar que crear un programa es ponerse directamente a escribir código es como pensar que levantar una casa es decirle a un peón “Eh, tú quiero una casa de 3 pisos” sin dar ningún tipo de plano, orden de ejecución, especificación de los materiales que debe usar, etc. Este pensamiento está muy generalizado entre todos aquellos ajenos a la informática y que lleva a la consiguiente infravaloración de la profesión de ingeniero informático, del que se piensa que es un tío delante de un ordenador todo el día, cuando ha sido formado para pasar más tiempo delante de una pizarra creando diagramas (los planos).
Volviendo sobre el tema de los errores en el software y la importancia de detectarlos a tiempo, comentar que estas etapas son secuenciales y cada una necesita de la anterior para llevarse a cabo (generalmente). Es importante verificar que todo es correcto antes de seguir a la siguiente etapa porque un error no resuelto en una de las primeras etapas conllevará un mayor coste para solventarlo cuanto más se avance en el proyecto. Esto es debido a que será necesario modificar todos los aspectos referentes a dicho error entre la fase actual y la fase donde se encuentra el error.
La mayor parte de los errores del software, 75%, están relacionados con las dos primeras etapas (análisis y diseño), vagas especificaciones, requerimientos erróneos, diseño incompleto, etc. Tan solo un 10% está relacionado con errores directamente achacables a la etapa de implementación. En mi experiencia, las pequeñas empresas tienden a omitir las fases de análisis y diseño (mandan a los peones construir la casa directamente) y es debido a una falsa sensación de que se está perdiendo el tiempo cuando uno se encuentra en estas etapas, pero la realidad, como se ha visto es muy diferente, saltarse estas etapas (análisis y diseño) conlleva la creación de un producto software de baja calidad y altísimo coste.
El primer bug informático de la historia (primer error)
En 1947, cuando los ordenadores ocupaban habitaciones enteras y estaban formados por válvulas de vacío ya surgió el primer bug (del inglés bicho, término usado para llamar a un error).
Una de las computadoras más potentes de la época era la Harvard Mark II, que tenía que ser revisada y mantenida por varios técnicos.

Harvard Mark II
Un día, sin más, dejó de funcionar. Se imaginarán la ardua tarea de revisar un computador que ocupaba tanto tamaño y que se asemejaba más a una máquina industrial que a la idea que nos viene a la cabeza de un ordenador. Después de mucho revisar el interior del ordenador, encontraron cerca de unos relés una polilla, que atraida por el calor y la luz se había metido dentro, causando que dejara de funcionar. Así fue el primer bug de la informática.
Fuente
Software testing por Patton, 2005
Cuando éramos ricos
Las noches de domingo suelen ser las únicas en las que me doy cita con la TV últimamente, es cuando echan pekin express, y pocas veces me lo pierdo. Esta nueva edición está siendo demasiado casposa, buscando mostrar más los enfrentamientos que las experiencias y el camino vividos, por ello ayer le di una oportunidad a Salvados, programa de laSexta (que a mi parecer es de los mejores de los últimos tiempos).
Ayer el título era “Cuando éramos ricos”, programa excepcional , dentro de la excepcionalidad habitual de Salvados, que refleja los excesos de los últimos años.
Recomiendo a todo español darle una oportunidad, saber que se hace con nuestro dinero, en que se tira…
Programa completo: Cuando éramos ricos
Ordenar array bidimensional, matriz, en PHP
En principio PHP dispone de sort(), asort y ksort() para ordenar arrays normales, arrays asociativos (clave-valor), basándose en el valor, y arrays asociativos (clave-valor), basándose en la clave, respectivamente. Estas tres funciones ordenan de forma ascendente. Para ordenar de forma descendente se usaría para cada uno de los tipos de array rsort(), arsort() y krsort().
Función aleatoria o random en PHP
En pocas líneas podrás conseguir un aleatorio en php, este número puede estar asignado a una letra, palabra, frase, etc para conseguir otro tipo de aleatorios. A continuación mostraré el código para conseguirlo.
Conseguir un verdadero número aleatorios es realmente difícil, tener en cuenta que esta es una solución para scripts con pocas exigencias, y que para la mayoría de personas será más que suficiente.
mt_srand (time()); $random = mt_rand(1,10);
La primera línea es para alimentar con una semilla los aleatorios que se vayan a crear. Se puede prescindir de esta línea en PHP >4. La segunda devuelve un número aleatorio entre 1 y 10 (incluidos). Un posible ejemplo para obtener vocales aleatorias puede ser este:
$vocales='AEIOU'; mt_srand (time()); $random = mt_rand(0,4); $vocalAleatoria=$vocales[$random];
Espero que les sea de ayuda.
Opinión: Modern Family

Modern Family
Modern Family es una serie estadounidense rodada como un falso documental que narra la vida de una familia moderna. Jay, un abuelo casado con una joven colombiana (Gloria) que tiene un hijo (Manny) de un anterior matrimonio. Jay tiene dos hijos de su anterior matrimonio Claire y Mitchell. Claire tiene 3 hijos Luke, Haley y Alex con su marido Phil. Mitchell es gay y esta casado con Cameron, con el que tiene una hija.
Detrás de este lío de parentescos está una de las mejores comedias que he visto últimamente, se trata de una serie ligera, los capítulos duran 20 minutos y a través de anécdotas en las vidas de los protagonistas hará reír al espectador (yo personalmente me he reído con esta serie como nunca antes con otra). No busques argumentos profundos o que te hagan pensar, cada capítulo se centra en un acontecimiento sobre el que gira toda la trama. Cada capítulo puede verse sin haber visto el anterior, son bastante independientes unos de otros.
La serie ha cosechado numerosos premios en EEUU y ya van por la segunda temporada. En España puedes verla cada día a las 15.25 en FOX y todos los martes echan tres capítulos en NEOX hacia las 22.00 (la hora puede variar, no son muy puntuales, una veces antes, otras después)
Recomiendo dar una oportunidad, el primer episodio es genial.
Dudas informáticas: No dejar rastro cuando navegas
Una de las más recurrentes dudas que me suelen plantear mis conocidos es cómo borrar cualquier posible rastro cuando navegas, para que el siguiente que se pase por el ordenador no pueda conocer que has estado viendo o consultando. Para muchos puede parecer una tontería, pero realmente recibo muchas consultas de este tipo.
Evidentemente, esta duda se plantea mayoritariamente después de haber estado viendo páginas de porno, de apuestas, bancos o, como lo llamaré a partir de ahora, al realizar una navegación comprometida. También es posible que lo comprometedor no sea la página que has visitado sino cuando la has visitado, por ejemplo en horario de trabajo.
Foursquare abre su base de datos a todo el mundo
Hasta ahora un desarrollador podía crear sus propias aplicaciones y ofrecerlas a los usuarios para proveer funcionalidades extra sobre foursquare, siempre y cuando el usuario tuviera una cuenta en foursquare.
Ahora será posible utilizar la base de datos de las localizaciones de foursquare sin necesidad de una cuenta, por lo que en los próximos meses veremos multitud de aplicaciones web y móviles que se aprovecharan de la extensa información sobre locales y negocios de foursquare sin necesidad de loguearnos.
Una buena noticia para los desarrolladores que abre un nuevo camino para crear nuevas aplicaciones.
Fuente: aboutfoursquare
Programación Android: Alertas que desaparecen al reiniciar
¿Implementar alarmas en Android?
¿Al reiniciar el teléfono se borran las alarmas?
Es posible que en el transcurso de la ejecución de pruebas sobre tu nueva aplicación Android te des cuenta que, si has creado una alarma (AlarmManager en Android), al apagar y encender el dispositivo Android, esta se borra. Con un par de búsquedas en Google hallarás una solución, que es crear un Broadcast Receiver que avise a nuestra aplicación que el teléfono ha sido encendido para que se creen las alarmas pertinentes.
No voy a explicarlo, puedes encontrar una fantástica y simple explicación en Wikidroid, Gestión de Alarmas en Android.
Vale, hasta aquí todo correcto, hemos programado de libro todo esto y continuamos con las pruebas. Ahora resulta que ves que en el emulador funciona perfectamente pero en tu dispositivo físico las alarmas siguen sin funcionar después de reiniciar el teléfono. El problema es que has utilizado la señal “ACTION_BOOT_COMPLETED” (como yo mismo he sugerido unas líneas más arriba) y tu aplicación se encuentra instalada en la tarjeta SD (porque has dado esa posibilidad para ahorrar espacio), esta señal avisa a las aplicaciones nada más que el BOOT se ha completado pero antes de que se hayan extraído las aplicaciones que están en la tarjeta SD, por lo que tu aplicación nunca recibirá la señal y no se programaran las alarmas.
Si continuas buscando seguro que indagarás entre las demás señales y encontrarás “ACTION_EXTERNAL_APPLICATIONS_AVAILABLE” que tiene bastante buena pinta. Esta señal sería la ideal para utilizarla con nuestras aplicaciones que se almacenen en la tarjeta SD pero hay un fallo en el sistema operativo Android que hace que esta señal no avise nunca a las aplicaciones de la SD (para más información Issue 8485)
Parece que todo está perdido, pero no es así, hay soluciones alternativas:
- No permitir instalar la aplicación en la SD
- Advertir a los usuarios que deben crear la alerta cada vez que enciendan de nuevo el móvil.
- Usar otra señal como “ACTION_SCREEN_OFF”
Cualquiera de estas opciones parece ser válida mientras se resuelva el fallo en futuras versiones. La pega de utilizar otro tipo de señales es que debe elegirse cuidadosamente porque puede influir en la batería, como la señal del ejemplo que se ejecutaría varias veces cada hora, dependiendo del uso del dispositivo.
Estoy seguro que hay más soluciones que todavía no he encontrado, otra posible solución pasaría por desarrollar una pequeña aplicación que solo pudiera ser instalada en la memoria interna y que actuase como receptora de la señal de BOOT completo y ejecutora de la aplicación principal que estuviera en la SD, aunque no soy partidario de dicha solución.
Relacionado:
Android Developers: Intent
Android Developers: Applications That Should NOT Install on External Storage
StackOverFlow: Restart Service for App on SD Card When SD Card Is Remounted
“Programación Android: Alertas que desaparecen al reiniciar” escrito y publicado originalmente en MagMeld







deja un comentario