lunes, 31 de diciembre de 2012

Diez millones de libros en una casa de cristal

AL SUBIR los peldaños de madera que llevan a la plaza donde el viento sopla con libertad, el visitante no puede menos que sentirse impresionado -por no decir intimidado por las cuatro torres de cristal que se alzan imponentes ante él. Este no es un complejo de edificios cualquiera. Se trata de la ultramoderna Biblioteca Nacional de Francia, ubicada a orillas del Sena. En cierto sentido, su realización tomó varios siglos.

Sus inicios



En 1368, el rey Carlos V acumuló cerca de mil manuscritos en una torre de la parisina fortaleza del Louvre. Pero fue en realidad al terminar la guerra de los Cien Años cuando los monarcas franceses comenzaron a formar una colección permanente. Los obsequios y legados de quienes procuraban el favor real engrosaron la biblioteca, lo mismo que los ejemplares traídos de distintas partes de Europa y el Oriente por navegantes y embajadores, o por los ejércitos, como botín de guerra. Posteriormente, en el siglo XVI, Francisco I dio inicio al sistema de depósito legal mediante una ley que requería entregar a la Biblioteca Real un ejemplar de todo libro que se publicase.

Tras alojarse en distintas residencias reales de provincias, la Biblioteca Real se transfirió de nuevo a París, solo para ser saqueada durante las guerras de religión (1562-1598). En 1721 encontró un hogar más estable. Posteriormente, la incautación de colecciones a religiosos y aristócratas durante la Revolución francesa le aportó cientos de miles de libros, manuscritos y grabados. Aunque poseían un valor incalculable, dichas adquisiciones hicieron patente la continua y agobiante falta de espacio en las instalaciones existentes.

domingo, 30 de diciembre de 2012

Arrays o Arreglos en PHP - Parte 5/5

Este es el último artículo de la serie Algoritmos y Diagramas de Flujos Aplicados en PHP, en él seguiremos complementando con más ejemplos sencillos el uso de arrays o arreglos en este lenguaje de programación, seguiremos el mismo formato que hemos venido utilizando; es decir se usará como base un problema sencillo a manera de ejemplo, y para resolverlo se utilizarán pseducódigos, diagramas de flujo, la codificación en php y además se ilustrará el resultado en el navegador tras ser ejecutado el algoritmo.

sábado, 29 de diciembre de 2012

Arrays o Arreglos en PHP - Parte 4/5

Este es el penúltimo artículo dedicado a los algoritmos y diagramas de flujo aplicados en php, en esta ocasión continuamos con unos ejemplos bastantes básicos sobre el uso de arreglos en PHP.

9.5. Ejemplo 13: Muestre los nombres y notas aprobatorias de 5 alumos del aula A y 5 alumnos del aula B.

Construya un pseudocódigo, que muestre los nombres y notas aprobatorias de 5 alumnos del aula A y 5 alumnos del aula B, utilice 2 arreglos y tome como nota aprobatoria mayor a 5.

viernes, 28 de diciembre de 2012

Arrays o Arreglos en PHP - Parte 3/5

En este artículo se seguirá explicando el manejo de arrays en PHP, esta es una forma fácil de aprender ya que puede ejecutar los ejemplos en PHP y ver su funcionamiento y de esta manera entenderlo mejor. Si aun no le quedo claro, le explicare un resumen que es lo que hace exactamente.

Si ha revisado lo anteriores artículos, habrá notado que para almacenar una palabra o número en una variable se realizaba lo siguiente:

     $nombres = "Gaara del Desierto";

En la variable $nombres se ha almacenado un nombre con apellido, para luego mostrarlo de la siguiente manera:

     echo $nombres;

¿Pero ahora si desea almacenar nombres pero con la misma variable $nombres que utilizaría?... ¡Arrays! Correcto, entonces haríamos lo siguiente:

     $nombres = array("Gaara del Desierto", "Sasuke Uchiha", "Neji Hyuga", "Itachi Uchiha", "Naruto Uzumaki");

En la variable $nombres se ha almacenado todos estos nombres con apellidos, para luego mostrarlos de la siguiente manera:

     foreach ($nombres as $mostrar)
          echo "$mostrar
";


Utilizamos foreach para que muestre toda la cadena de caracteres línea por línea y sea más útil trabajarlo.

viernes, 2 de noviembre de 2012

Angry Birds Star Wars: primer gameplay

Angry Birds Star Wars es el próximo gran lanzamiento de la saga de los pájaros creada por la compañía finlandesa Rovio hace un par de años, obteniendo un éxito arrollador en todo el mundo.

En esta ocasión, y como se puede deducir por su título, se tratará de un juego al estilo Angry Birds pero mezclado con elementos de la famosa saga de películas de Star Wars.

Cuando se anunció el lanzamiento de este juego, los finlandeses en aquél momento sólo habilitaron una página web con diversas imágenes, pero no dieron detalles sobre su modo de juego. Afortunadamente ya sabemos cómo será el juego pues lo podemos ver en un nuevo trailer que nos hemos encontrado en Youtube. Es el primer gameplay oficial de Angry Birds Star Wars (el primero en mostrar secuencias del juego en sí). En él se puede ver cómo será el funcionamiento del juego realmente, gráficos incluidos, y también se puede apreciar qué partes de la saga cinematográfica son las que se han utilizado en esta nueva entrega de Angry Birds.

miércoles, 31 de octubre de 2012

JDecimalTextField: Componente para validar decimales en Java

En uno de mis últimos proyectos necesitaba validar la entrada de datos de los usuarios, el sistema necesitaba un módulo en el cual  se requiere que se introduzcan sólo números decimales. Para ello tenía las siguientes opciones:
  • Usar un JTextField común y corriente, y programar la validación de la entrada de datos sobre él.
  • Usar JFormattedTextField y habilitarlo para que solo admita números decimales.
  • Programar un componente que tenga la funcionalidad requerida.
  • Usar el poderoso Desarrollo de Software Basado en Componentes, es decir usar un componente implementado y probado por un tercero y así ahorrarme tiempo, esfuerzo, recursos, etc.
Me decanté por la última opción y así que buscando un control visual que satisfaga mis necesidades me encontré con JDecimalTextField, el cual no es más que un componente que hereda de JTextField, es decir es una caja de texto que solo acepta números decimales y que además cuenta con las siguientes propiedades adicionales a las ya tradicionales de un JTextField:

martes, 30 de octubre de 2012

JIntegerTextField: componente para validar enteros en Java

En todo sistema informático es fundamental la validación de los datos que ingresa el usuario, mientras más se valide la entrada de datos minimizaremos los errores que pueden suceder y/o nuestra aplicación tendrá menor probabilidad de fallar al guardar datos del usuario; esta vez les presento un control visual Java Swing, el JIntegerTextField, que no es más que una caja de texto que valida el ingreso solamente de números enteros positivos en su contenido; sé que existe el componente JFormattedTextField disponible desde la versión 1.4 de Java, pero la ventaja de este componente es que bloquea el ingreso de los datos inválidos, es decir al presionar una letra o un símbolo que no sea un número el control lo omite y no lo incluye en su contenido, así sea con la función Ctrl + V (pegar texto), este control analiza el texto y lo excluye, ya que al ser un componente heredado podemos sobrescribir las funciones de su clase base (el JTextField).

Las propiedades que añade este componente a los ya heredados de JTextField son los siguientes:
  • maxValue: valor máximo del entero.
  • minValue: valor mínimo del entero.
  • maxLength: máximo número de dígitos del entero.
Al final del post incluyo una liga para descargar un demo a modo de ejemplo para el uso del JIntegerTextField, la interfaz visual de dicha aplicación es la que se ve al principio de este artículo, que no es más que un pequeño programa que tiene dos entradas para datos que sean solo enteros. En la aplicación de ejemplo existe una subcarpeta llamada lib donde incluyo la librería JIntegerTextField comprimida y ya lista para ser usada en un archivo llamado JIntegerTextField.jar (ya que en la página de los autores está directamente el archivo .java ), el código fuente del componente es de código abierto y con licencia GPL, cortesía de los amigos de coplec.org desde donde pueden conseguir dichas fuentes.

RECUERDEN que para usar con mayor comodidad el control deben adicionarlo a la paleta de Netbeans o de su IDE favorito (si no sabes cómo, date una vuelta por "cómo adicionar un componente a la paleta de Netbeans"), para simplemente arrastrar y soltar el control sobre los formularios donde queramos usarlo, si tienen algún problema de direccionamiento de referencia a la librería, ayúdense del editor que estén usando, en el caso de Netbeans basta con hacer click derecho sobre el Proyecto y del sub-menú que se despliega seleccionar la opción "Resolve Reference Problems...", acto seguido presionar sobre el botón "Resolve..." el cual abrirá una ventana en la cual se debe ubicar el archivo de la librería JIntegerTextField.jar en la ubicación del disco duro donde lo tengamos.

Demo: Descargar/Download

domingo, 14 de octubre de 2012

Cómo agregar un componente a la paleta de Netbeans

Como sabemos el IDE Netbeans nos ofrece una gran cantidad de controles visuales en su paleta de componentes (tales como los Swing Controls o los AWT entre otros), que nos facilita a la hora de diseñar una interfaz gráfica de usuario, con solo arrastrar y soltar. Pero también existen muchos otros componentes fuera de los que ya trae pre-instalado éste IDE, que nos pueden ser de mucha utilidad a la hora de programar algún proyecto.

En el siguiente video se nos enseña cómo agregar/adicionar/añadir/instalar un JavaBean, componente o control visual de Java a la paleta de Netbeans.


En resumen una vez que tenemos nuestro componente Swing creado u obtenido de un tercero, lo añadimos a la paleta de Netbeans (esto se hace solo una vez) y luego podemos utilizarlo en cualquier proyecto.

miércoles, 10 de octubre de 2012

Cómo quitar la selección a un grupo de JRadioButtons en Java

Hace un tiempo en uno de mis proyectos, me vi en la necesidad de resetear, limpiar, borrar o quitar el valor de selección de los llamados botones de radio (JRadioButton en Java). En dicho proyecto tenía un formulario en el cual tenía diferentes controles o componentes (cajas de texto, listas de selección, combos de selección, botones de radio o de opción, etc); el hecho era que el usuario tenía un botón para "guardar" un registro una vez que completaba el formulario, pero también contaba con un botón llamado "limpiar" que servía para resetear el valor de todos ésos componentes y así el usuario pueda registrar un "nuevo" registro. A saber: al presionar sobre el botón "limpiar" los jTextField deberían estar vacíos, los jList no deberían tener ningún item seleccionado, ningún jRadioButton debería estar seleccionado, y en general todos los componentes que se encontraban en el formulario y que sirven para introducir datos deberían estar como a un principio.

El presente post está dirigido a aquellos programadores que se encuentran en la siguiente situación: si tenemos varios jRadioButtons en el escenario, antes de interactuar con ellos no hay ninguno seleccionado. Si seleccionamos uno se marca y el resto se desmarcan, de manera que solamente puede haber un jRadioButton de grupo (ButtonGroup) seleccionado. ¿Pero qué ocurre si una vez seleccionado un jRadioButton, queremos que vuelvan a estar todos deseleccionados o mejor dicho sin seleccionar?

jueves, 4 de octubre de 2012

Cómo agregar y eliminar filas de un JTable de Java

En muchas ocasiones nos encontramos con la necesidad de aumentar, agregar, insertar o adicionar filas; así como también disminuir, quitar, remover, borrar o eliminar filas de un JTable en tiempo de ejecución.

Para realizar ésas tareas podemos echar mano de la clase DefaultTableModel, la cual nos provee de un método llamado addRow que requiere de un solo parámetro: rowData; el cual no es más que un array o arreglo de Objects, ése mismo parámetro también puede ser un objeto de la clase Vector, pero para éste ejemplo utilizaremos un array de Objects (Object[]). Éste array de Objects vendría a ser como la fila que queremos adicionar al final de la tabla, donde cada elemento del arreglo vendría a contener un campo del registro o fila a ser adicionado.

DefaultTableModel también tiene el método insertRow, el cual necesita de dos parámetros: row y rowData; el parámetro row es un entero (int) que indica el índice de la fila de la tabla en la cual se desea insertar la nueva fila. Mientras que rowData, como dijimos anteriormente puede ser un arreglo de Objects (Object[]) o un Vector, el cual representa la nueva fila a insertarse.

martes, 24 de julio de 2012

Dispositivo permite besarse por Internet

El Kissenger es una boca artificial hecha de silicona y con detectores de movimiento. El nombre del dispositivo proviene de "kiss" (beso) y "messenger" (mensajero). El aparato funciona a través de video chat. Al conectar el pequeño aparato a uno de los puertos USB de la computadora y besarlo, la persona con la que se mantiene el "diálogo", lo recibe del otro lado de la pantalla.

Para aumentar la sensación del beso, los tortolitos pueden "besarse" mirándose en directo en la pantalla de sus computadoras, contó Hooman Samani, el profesor-cupido de la Universidad Nacional de Singapur. "Puede ser utilizado como un medio para mejorar las comunicaciones entre los seres humanos", auguró Samani.

El gadget fue presentado en junio durante una conferencia científica en Gran Bretaña. Está a punto de ser terminado en un laboratorio instalado en la Universidad Nacional de Singapur en cooperación con la Universidad Keio, de Japón.

Sin embargo, "cuestiones éticas" le están poniendo trabas a su salida al mercado, confesó Samani. "Un beso es algo muy íntimo", indicó el profesor de robótica. Y agregó: "Para poner en el mercado un producto que va a tocar un tema sensible, debemos efectuar estudios sobre los aspectos sociales y culturales".

¿Es una novedad? En un episodio de la serie The Big Bang Theory, Raj besa a Howard a través de un aparato con la misma característica que Kissenger.

 Fuente: www.eldeber.com.bo

domingo, 1 de julio de 2012

Arrays o Arreglos en PHP - Parte 2/5

Continuando con el tema de arreglos en PHP, esta vez veremos una serie de procesos primitivos o predefinidos en PHP que nos serán de utilidad en algún momento dado cuando realicemos algún programa que requiera la utilización de arrays.

miércoles, 13 de junio de 2012

El creador de Linux y el japonés Yamanaka comparten el "Nobel" de Tecnología

El programador finlandés Linus Torvalds, creador del sistema operativo de código abierto Linux, y el médico japonés Shinya Yamanaka recibieron hoy en Helsinki el Premio Millennium de Tecnología, el galardón más importante del mundo en este campo y considerado el "Nobel" de tecnología.

El presidente de Finlandia, Sauli Niinistö, fue el encargado de hacer entrega del premio a Torvalds y Yamanaka, quienes se repartirán a partes iguales los 1,2 millones de euros (1,5 millones de dólares) del galardón, durante una ceremonia celebrada en la Ópera Nacional de Helsinki.

Torvalds, informático de 42 años, fue distinguido por crear el kernel (núcleo) del sistema operativo de código abierto Linux y por su trabajo en favor del software libre, según la academia.

"La labor de Linus Torvalds ha mantenido la web abierta a la búsqueda del conocimiento y para el beneficio de la humanidad, no simplemente por intereses económicos", señaló la presidenta de la Academia Finlandesa de Tecnología, Ainomaija Haarla.

Torvalds creó Linux en 1991 cuando era estudiante de la Universidad de Helsinki y lo desarrolló con las aportaciones de miles de internautas voluntarios, hasta convertirse en el exponente más conocido del software libre.

jueves, 7 de junio de 2012

Arreglos o Arrays en PHP - Parte 1/5

A partir de este artículo aprenderemos a desarrollar algoritmos básicos basados en arreglos, para luego plasmarlos en un diagrama de flujo y aplicarlos en el lenguaje php.

¿Qué veremos a partir de este primer post y en los sub-siguintes?, un contenido bastante práctico como siempre, basado en los siguientes temas:
  • ¿Qué es un array?
  • Arrays asociativos
  • arrays Multidimensionales
  • array_slice()
  • array_shift()
  • unset()
  • array_push()
  • array_merge()
  • Ejemplos

sábado, 12 de mayo de 2012

Estructuras Lógicas Repetitivas en PHP - Parte 3/3

Resumiendo lo que hemos visto hasta ahora los bucles, lazos, ciclos, estructuras cíclicas, o estructuras repetitivas (entre los variados nombres con que se las conoce); son estructuras de programación que permiten realizar un conjunto de instrucciones o procesos repetidamente ( de ahí su nombre).

Ya hemos visto las estructuras Mientras (While) y Hacer Mientras (Do While), en el presente artículo daremos una breve descripción y ejemplos sobre el uso de la última estructura que nos faltaba ver: la estructura cíclica o repetitiva Desde o Para (For).

sábado, 28 de abril de 2012

Estructuras Lógicas Repetitivas en PHP - Parte 2/3

Continuando con el artículo sobre estructuras repetitivas o cíclicas, esta vez veremos conceptos y ejemplos prácticos sobre la estructura Mientras. Los algoritmos aquí descritos pueden ser mejorados, pero lo importante es aprender a usar las estructuras, de ahí la sencillez tanto de los ejemplos usados como de la solución algorítmica empleada.

sábado, 31 de marzo de 2012

Estructuras Lógicas Repetitivas en PHP - Parte 1/3

Es muy común encontrar en los algoritmos operaciones que se deben ejecutar un número repetido de veces. Si bien las instrucciones son las mismas, los datos sobre los que se opera varían. El conjunto de instrucciones que se ejecuta repetidamente se llama ciclo.

Todo ciclo debe terminar de ejecutar luego de un número finito de veces, por lo que es necesario en cada interacción del mismo, evaluar las condiciones necesarias para decidir si debe seguir ejecutándose o debe detenerse. En todo ciclo, siempre debe existir una condición de parada o fin de ciclo.

En algunos algoritmos podemos establecer a priori que el ciclo se repetirá un número definido de veces. Es decir, el número de repeticiones no dependerá de las proposiciones dentro del ciclo. Llamaremos Desde a la estructura algorítmica repetitiva que se ejecuta un número definido de veces.

Por otra parte, en algunos algoritmos no podemos establecer a priori el número de veces que se ha de ejecutar el ciclo, sino que este número dependerá de las proposiciones dentro del mismo. Llamaremos Mientras a la estructura algorítmica repetitiva que se ejecuta mientras la condición evaluada resulta verdadera. También tenemos la estructura Hacer Mientras.

En la práctica tanto la estructura Hacer Mientras como la estructura Mientras se pueden usar indistintamente para obtener un resultado.

sábado, 18 de febrero de 2012

Estructuras Lógicas Selectivas en PHP - Parte 4/4

Ya anteriormente hemos visto las estructuras de selección simple, las estructuras de selección doble y las estructuras condicionales anidadas, en esta ocasión veremos las estructuras de selección múltiple o condicionales mútiples, conocidos en algunos lenguajes de programación como switchs o case ofs.

4. La estructura de selección múltiple.

La estructura de selección múltiple permite que el flujo del programa se bifurque por varias ramas en el punto de la toma de decisión(es), esto en función del valor que tome el selector. Así, si el selector toma el valor 1 se ejecutará la acción 1, si toma el valor 2 se ejecutará la acción 2, si toma el valor N se realizará la acción N, y si toma un valor distinto de los valores comprendidos entre 1 y N, se continuará con el flujo normal del diagrama realizándose la acción N+1.

lunes, 16 de enero de 2012

Estructuras Lógicas Selectivas en PHP - Parte 3/4

Anteriormente ya hemos visto las estructuras lógicas selectivas simples y las estructuras lógicas selectivas dobles, a este tipo de estructuras también se las conoce como estructuras condicionales. En éste artículo trataremos una combinación de las anteriores, algo que se conoce como anidamiento de estructuras condicionales.

3. Anidamiento de Estructuras Condicionales.

A menudo tendrá la necesidad de anidar una o más estructuras condicionales, ya sean simples o dobles, o combinaciones de ellas.

Se dice que las estructuras están anidadas, cuando hay unas dentro de ellas, esto lo veremos muy a menudo. Por ejemplo veamos el siguiente pseudocódigo.

Si Condición1 Entonces
Si Condición2 Entonces
Acciones1
Fin_si
Fin_Si

Aquí observamos que primero se debe cumplir la Condición1, para luego evaluar la Condición2, solo al cumplirse esta última, se procederá a la ejecución de Acciones1.

domingo, 1 de enero de 2012

Estructuras Lógicas Selectivas en PHP - Parte 2/4

Hoy seguiremos aprendiendo a usar las estructuras selectivas, pero esta vez toca el turno a las ESTRUCTURAS SELECTIVAS DOBLES (alternativas dobles). Como siempre, usaremos ejemplos con enunciados sencillos, para posteriormente resolverlos mediante un pseudocódigo, para luego representarlo en un diagrama de flujo o flujograma e implementarlo en el lenguaje de programación PHP.

Encuesta: ¿Quién es el mejor catedrático de la carrera de Ing. Informática de la UAGRM?