20 de septiembre de 2010

Herramientas para desarrollo con CSS



Estas herramientas son de gran utilidad para todo desarrollador web ya que en el momento de ver nuestro trabajo en diferentes navegadores es necesario utilizar métodos en tiempo real para reducir tiempo de trabajo con css en la maqueta.
Las herramientas que utilizo para ir testeando y trabajando el css en tiempo real son:




complementos para firefox
ColorZilla
Web Developer
MeasureIt

para ir viendo nuestra pag en IE6, IE7 e IE8 un soft gratuito muy util es: IETester

10 de septiembre de 2010

Nanocristal promete almacenamiento masivo 3-D con material económico


La Universidad de Rice ha publicado hoy que un grupo de científicos han creado la primera de dos terminales que utilizan chips de memoria de silicio única, expandiendo los límites de la miniaturización basadas en la Ley de Moore.
Esta nueva tecnología que se le da el nombre de arquitectura de memoria 3-D permite mejorar la escalabilidad en un orden de magnitud en comparación con la tecnología flash NAND disponible hoy en día. Un portavoz de la Universidad de Rice," dijo. "Tenemos la memoria que está hecha de material muy barato y funciona."
Los investigadores de Rice, dijeron que la nueva tecnología podría soportar la radiación y temperaturas de 200 grados centígrados.
A diferencia de la memoria flash NAND, que está controlada por tres terminales o cables, la memoria de silicio necesita dos nuevos terminales, por lo que es más viable para las matrices de silicio tridimensional o apilados - multiplicando la capacidad de un chip. Pero como la memoria flash, chips hechos con silicio consumen prácticamente ningún poder y al mismo tiempo permiten mantener los datos intactos.
Los cables de nanocristales son tan pequeñas como 5 nanómetros de ancho. Un nanómetro es una milmillonésima de un metro.

fuente

17 de agosto de 2010

El nuevo tipo de microchip : PROCESADOR PROBABILISTICO

Un procesador que se basa en la probabilidad puede acelerar la memoria flash, y mucho más. Este procesador realiza cálculos utilizando las probabilidades, en lugar de la lógica binaria, permite aumentar la velocidad en sistemas informatizados.
Este chip de computadora utiliza señales que representan las probabilidades, no bits digitales.
Se Re-escribió algunas de las características fundamentales de los chips de ordenador, CanciÛn Semiconductor ha desvelado que su primer "procesador de probabilidad", un chip de silicio que calcula con señales eléctricas que representan riesgos, no 1s y 0s digitales.
Este procesador utiliza la probabilidad bayesiana es un campo de las matemáticas el nombre de el siglo XVIII Inglés estadista Thomas Bayes, quien desarrolló las ideas y es en este principio que se basa esta nueva tecnología.
"Hemos empezado de cero en esencia," dice Ben Vigoda, CEO y fundador de la puesta en marcha con sede en Boston. A partir de la nada hace posible la aplicación de cálculos estadísticos en una forma más sencilla y eficiente de la energía, dice.
Todos estos ejemplos implican la comparación de datos diferentes para encontrar el ajuste más probable. La aplicación de la matemática necesaria para hacer esto más sencillo con un chip que trabaja con probabilidades, dice Vigoda, permitiendo chips más pequeños para hacer el mismo trabajo a un ritmo más rápido.
Un procesador que acelera drásticamente tales cálculos basados en probabilidades. Pero Lírica se enfrentará a retos para probar la fiabilidad y la escalabilidad de sus productos, y para demostrar que se puede programar fácilmente.

fuente

5 de junio de 2010

Unifican transistores y células biológicas


Los humanos y las máquinas de ahora en mas podrán estar mas ligados entre si, ya que según científicos de la Universidad de California en Merced se ha podido incorporar un transistor de tamaño nanometrico dentro de una membrana celular que utiliza la propia energía de la célula. Esto refiere a un gran avance tecnológico por ejemplo en un dispositivo como este se  podría transmitir la información sobre el funcionamiento interno de las proteínas relacionadas con la enfermedad de una persona dentro de la membrana celular, y eventualmente conducir a nuevas maneras de leer como también  influir, el cerebro o células nerviosas de un paciente. Esto de seguro va a tener grandes aplicaciones terapéuticas.

24 de mayo de 2010

El transistor más pequeño del mundo


La electrónica viene avanzando exponencialmente en tecnología y escala, esto es debido a los grandes descubrimientos como el que hoy se anuncia;
Investigadores australianos han creado el transistor más pequeño del mundo, que consta de sólo siete átomos dispuestos en un cristal de silicio.
Es totalmente funcional y puede controlar y regular el flujo de corriente eléctrica, a un tamaño de 4nm. La investigación se realizó en la universidad del centro de Nueva Gales del Sur de Quantum Computer Technology (CQCT) en Sydney.
Simmons Director de la CQCT dijo” estamos manipulando átomos individuales que colocamos con precisión atómica, de esta manera obtenemos el funcionamiento",
El equipo de Simmons asegura que seguirá experimentando para mejorar las técnicas, que han tenido resultados asombrosos yo se podria decir que todo esto va a dar lugar un gran salto en un futuro no muy lejano; "la computación cuántica".
fuente


17 de mayo de 2010

GridBagLayout combinado con BoxLayout

Con los layout managers podremos organizar  los componentes dentro de un contenedor para darle el aspecto deseado a una GUI (interfaz grafica de usuario) en java.
Hay varios tipos de layout manager para utilizar en java en este post voy a poner en ejemplo la combinación de BoxLayout y el GridbagLayout.

BoxLayout: Es un layout manager que permite agrupar los componentes de forma horizontal o vertical dentro del contenedor.
Pertenece a la librería javax.swing.

GridBagLayout: Es un layout manager con el que tenemos control absoluto sobre las posiciones que ocuparán los objetos dentro del contenedor al que fue asignado.

Un JFrame es un contenedor de alto nivel que incluye varios contenedores y pertenece a la librería javax.swing, uno de estos contendores es el contentPane.

El contentPane es un contenedor intermedio de JFrame que debe ser creado explícitamente, a este se le va a añadir la mayoría de los componentes gráficos.
El contentPane usualmente es un JPanel y usa toda la ventana si el JFrame no incluye algún menús.

Primero vamos extender la clase JFrame y vamos a crear el contentPane este va a funcionar como nuestro contenedor principal.

Luego asignamos a contentPane BoxLayout ya que por defecto el layout del contentPane es BorderLayout, con Y_AXIS le indicamos que los paneles van a ser organizados verticalmente de arriba a abajo.

Lo siguiente es crear los dos JPanel, le asignamos GridBagLayout ya que por defecto el layout que tienen es FlowLayout.

Instanciamos GridBagConstraints que en cada JPanel, este va a se el que permita especificar con los atributos exactamente como se mostrará cada elemento dentro del contenedor.
Los atributos que vamos a utilizar van a ser:
  • gridx y gridy: Especifican las coordenadas horizontal y vertical del componente que vamos a insertar en el grid.
  • gridwidth y gridheight: Van a especificar el número de celdas que ocupará un componente dentro del grid.
  • weightx y weighty :Permiten que las celdas ocupen la totalidad del contenedor a través de  especificarle el porcentaje de espacio libre tanto horizontal como vertical.
  • Insets: Sirve para especificar el padding de cada uno de los componentes dentro de la celda.

Después lo que hacemos es asignar los paneles a contentPane, crear el método main y instanciar nuestra clase.

Este es el código del ejemplo:

import javax.swing.*;//Importamos la librería swing
import java.awt.*;//Importamos la librería awt

public class EjemploLayouts extends JFrame {

 public EjemploLayouts(){
     //Le pasamos el titulo con el constructor de la Superclase
     super("Ejemplo Layouts");
     //Crear ContentPane
     Container container = getContentPane();
     //Asignar a ContentPane el layout BoxLayout
     container.setLayout(new BoxLayout(container, BoxLayout.Y_AXIS));

     //Crear el primer JPanel
     JPanel panelUno = new JPanel();
     //Asignar al primer JPanel un borde negro con un titulo de borde
     panelUno.setBorder(BorderFactory.createLineBorder(Color.black));
     panelUno.setBorder(BorderFactory.createTitledBorder("Este es el Panel 1"));

     //Asignar a panelUno el layout GridBagLayout
     panelUno.setLayout(new GridBagLayout());
     //instanciar GridBagConstraints para poder utilizar los atributos
     GridBagConstraints constUno = new GridBagConstraints();

     JLabel  etiquetaUno = new JLabel("Esta es la etiqueta Uno");
     constUno.gridx = 0; // La etiqueta empieza en la columna cero.
     constUno.gridy = 0; // La etiqueta empieza en la fila cero.
     constUno.gridwidth = 1; // La etiqueta ocupa una columna.
     constUno.gridheight = 1; // La etiqueta ocupa una fila.
     constUno.insets = new Insets(100,20,0,0);//Le asignamos padding a la etiqueta
     constUno.weightx = 0.5;//Le decimos que tiene que tomar el 50% del espacio libre en x
     constUno.weighty = 0.5;//Le decimos que tiene que tomar el 50% del espacio libre en y
     panelUno.add (etiquetaUno, constUno);//Asigno a panelUno la etiqueta con sus atributos
     constUno.insets = new Insets(0,0,0,0);//Reset el atributo Insets
     constUno.weightx = 0;//Reset el atributo weightx
     constUno.weighty = 0;//Reset el atributo weighty

     JButton botonUno = new JButton("Este es el botón Uno");
     constUno.gridx = 1; // El botón empieza en la columna uno.
     constUno.gridy = 0; // El botón empieza en la fila cero.
     constUno.gridwidth = 1; // El botón ocupa una columna.
     constUno.gridheight = 1; // El botón ocupa una fila.
     constUno.insets = new Insets(0,0,100,20);//Le asignamos padding al boton
     constUno.weightx = 0.5;//Le decimos que tiene que tomar el 50% del espacio libre en x
     constUno.weighty = 0.5;//Le decimos que tiene que tomar el 50% del espacio libre en y
     panelUno.add (botonUno, constUno);//Asigno a panelUno el botón con sus atributos
     constUno.insets = new Insets(0,0,0,0);//Reset el atributo Insets

     //No reseteamos los atributos ya que no hay mas componentes para incluir en planelUno

     //Crear el segundo JPanel
     JPanel panelDos = new JPanel();
     //Asignar al segundo JPanel un borde negro con un titulo de borde
     panelDos.setBorder(BorderFactory.createLineBorder(Color.black));
     panelDos.setBorder(BorderFactory.createTitledBorder("Este es el Panel 2"));

     //Asignar a panelDos el layout GridBagLayout
     panelDos.setLayout(new GridBagLayout());
     //instanciar GridBagConstraints para poder utilizar los atributos
     GridBagConstraints constDos = new GridBagConstraints();

     JButton botonDos = new JButton("Este es el botón Dos");
     constDos.gridx = 0; // El botón empieza en la columna uno.
     constDos.gridy = 1; // El botón empieza en la fila uno.
     constDos.gridwidth = 1; // El botón ocupa una columna.
     constDos.gridheight = 1; // El botón ocupa una fila.
     constDos.insets = new Insets(0,0,100,20);//Le asignamos padding al boton
     constDos.weightx = 0.5;//Le decimos que tiene que tomar el 50% del espacio libre en x
     constDos.weighty = 0.5;//Le decimos que tiene que tomar el 50% del espacio libre en y
     panelDos.add (botonDos, constDos);//Asigno a panelDos el botón con sus atributos
     constDos.insets = new Insets(0,0,0,0);//Reset el atributo Insets
     constDos.weightx = 0;//Reset el atributo weightx
     constDos.weighty = 0;//Reset el atributo weighty

     JLabel  etiquetaDos = new JLabel("Esta es la etiqueta Dos");
     constDos.gridx = 1; // La etiqueta empieza en la columna uno.
     constDos.gridy = 1; // La etiqueta empieza en la fila uno.
     constDos.gridwidth = 1; // La etiqueta ocupa una columna.
     constDos.gridheight = 1; // La etiqueta ocupa una fila.
     constDos.insets = new Insets(100,20,0,0);//Le asignamos padding a la etiqueta
     constDos.weightx = 0.5;//Le decimos que tiene que tomar el 50% del espacio libre en x
     constDos.weighty = 0.5;//Le decimos que tiene que tomar el 50% del espacio libre en y
     panelDos.add (etiquetaDos, constDos);//Asigno a panelDos la etiqueta con sus atributos

     //No reseteamos los atributos ya que no hay mas componentes para incluir en planelDos

     //Asignamos paneles a contentPane
     add(panelUno);
     add(panelDos);

     }

 public static void main(String [] args){

     EjemploLayouts ejemplo = new EjemploLayouts();//Instanciamos la clase
     ejemplo.setSize(400, 400);//Le pasamos valores de largo y ancho
     ejemplo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//Le asignamos la salida al Frame
     ejemplo.setVisible(true);//Lo hacemos visible

     }
}

Este ejemplo lo pude realizar gracias al estudio de estos dos(descargar, descargar) documentos que encontré en la Web espero les sea de ayuda.

9 de mayo de 2010

Aplicaciones en la Web2.0 podrían eliminar la piratería de software

Hoy en día en el ámbito informático existen dos tipos de formas de trabajar con una aplicación una que desde los inicios de los computadores ha sido implementada y la otra que ha surgido gracias a nuevas tecnologías y progresos en el ambiente informático ellas son:
  • Las aplicaciones de escritorio
  • Las aplicaciones que se encuentran corriendo en la web.
El éxito de las webs dinámicas Web 2.0 permitieron que los usuarios pueden interactuar con diferentes aplicaciones web que hoy contienen un activo uso de gran cantidad de usuarios. Ejemplos de ellas pueden ser:

Microsoft Office Live Workspace
eyeos
snipshot
Autodesk Homestyler
Project Butterfly

Estas aplicaciones se encuentran en servidores web y utilizan páginas web como la interfaz de usuario.
La Web ha llegando a  una era en la que se trabajará “En Vivo” dijo Bill Gates cuando anunciaba que Microsoft iba a lanzar el conjunto de aplicaciones de Office basadas en la web.

La nueva generación de aplicaciones en la Web las llamadas RIA(Aplicaciones de Internet enriquecidas) implementan en su interior un grupo de lenguajes que funcionan en conjunto haciendo mejorar la experiencia del usuario, las RIAs  ha sido la tendencia impuesta por empresas como Macromedia, Sun, Magic Software y Microsoft que estan desarrollando recursos para hacer de este tipo de aplicaciones sea el nuevo futuro de internet..

Las RIAs se encuentran bajo codigo propietario y codigo libre el caso de Macromedia, con su Adobe Flex que incluye en su interior as3(accion Script 3) como tambien puede utilizar una base de datos Mysql a obtenido una buena aceptación en los desaroyadores ya que es un framework muy productivo en el momento de crear aplicaciones desde cero, tambien tenemos a HTML 5 (con el apoyo de Firefox, Safari, Chrome y el IE 8) que llega a tener un gran poder con AJAX esto nos da cierta vista al futuro no muy lejano de cómo podria ser una web bajo estandares legitimos.
Como aparecen nuevas tecnologías algunas tienden a digregase y ser sustituidas por otras es el caso de Adobe Flash.
El lenguaje as3 que utiliza Adobe Flash es un lenguaje que cumple con el paradigma POO se encuentra muy  difundido en la red.
Es cuestión de tiempo que flash sea inutilizado en la red o reconstruido para las necesidades que se requieren en el futuro, a no ser que exista la posibilidad de que aparezca un nuevo paradigma o  revolución para que flash de nuevo salga a flote y se posicione donde se encontraba en el mercado, vaya saber que le espera su futuro.
Se dice que cuando WebGL 3D este integrado de una buena vez con HTML5 va a ser el adiós a flash.
 Ya HTML5 está generando repercusión en internet  implementado innovaciones con nuevas tecnologías como:
  • Almacenamiento Offline
  • AppCache.
Almacenamiento Offline :Es la manera en que se puede acceder desde HTML 5 (a traves de métodos Javascript) a una base de datos local (que en general es sobre SQL Lite).

AppCache:Lo que permite hacer es ofrecer al navegador la capacidad de que una vez que haya cargado la pagina en tu navegador la almacene de forma local una copia de esta para que puedas trabajar offline(sin coneccion a internet).

Ahora bien es posible que las características de las aplicaciones de escritorio se tornen un hecho no tan provechoso si se exponen en comparación con los beneficios que ofrecen las  RIAs.
Si se enfrentan sus caracteristicas podemos ver:

Se puede observar en la tabla que las RIAs tienen mejores características que las aplicaciones de escritorio, los puntos a destacar del cuadro en el caso de las aplicaciones de escritorio pueden tener confidencialidad de los datos que van guardando los usuarios en su equipo, no van a ser expuestos a la vista de los propietarios de las RIAs.
En las RIAs la mejor ventaja es la disminución de la piratería uno de  los factores mas importantes que perjudica a la industria del desarrollo de software es la venta de software ilegal.
La Business Software Alliance (BSA), una asociación comercial de la industria del software, estima que hay más de 840,000 sitios en Internet que venden software de escritorio ilegal como auténtico.
Muchos clientes que compran software a través de Internet nunca reciben realmente los programas legitimos cuando descubren que el software que adquirieron es falsificado y intentan obtener la devolución de su dinero las empresas que hacen este negocio que a menudo tienen una dudosa reputación desaparecen rápidamente, dejando atrás cientos de clientes insatisfechos.

En la web se encuentra una gran cantidad de sitios en los que se puede descargar aplicaciones e información propietaria , estos sitios ofrecen su contenido a manera de posts publicados por sus usuarios que incluyen hipervínculos a contenidos guardados en servidores.
Con un motor de búsqueda el usuario puede encontrar coincidencias en el texto que describe el contenido de los hipervínculos para después descargar la información del servidor. La mayoría de esta información son obras e interpretaciones protegidas por la propiedad intelectual y distribuidas sin el consentimiento de sus titulares.

Cuando la Web se encuentre propagada por RIAs la  eliminación de la piratería va a darse en crecimiento  y las razones son porque:
  • ¿Como podría realizarse copia de software propietario si la aplicación esta sobre la web?
  • ¿Como vender algo que no tiene estuche?
 El negocio de las copias falsas se iría al ocaso.

Los valores en los ingresos económicos que va a generar las RIAs se presentan en ascenso, pero en descenso por parte de las medidas de seguridad que va a ver que tomar en los métodos de autenticación.

La seguridad va a recaer sobre los métodos de autenticación mas utilizados en las aplicaciones web:
  • Usuario- contraseña: No es fácil tener una buena administración y control en este caso porque cualquier persona puede hacer pruebas de este entorno, la forma mas segura de su implementación es con datos almacenados en el servidor en una tabla de la aplicación de usuario y password con o sin encripcion.
  • Certificado digital: Los certificados digitales son muy seguros, los usuarios deben presentar el certificado cada ves que desean iniciar una sesión con el servidor o aplicación Web.

Conclusión:
Las aplicaciones de escritorio son y seguirán siendo instrumentadas en un tiempo futuro ya que es costumbre publica su uso, va a ser necesario el tiempo para que el usuario lleve adelante comparaciones sobre las dos opciones, decida por su comodidad cual le quita menos tiempo y mas le satisface en agilidad de trabajo y necesidades,  lo que es un hecho es que las RIAs(Aplicaciones de Internet enriquecidas) contienen muy buenas características y es solo que las empresas propietarias vean que hay una gran económica y control de sus productos si las implementan, y comienzan a eliminar de su itinerario el desarrollo de las clásicas aplicaciones de escritorio en las que la piratería es uno de los factores mas grandes que influyen en los ingresos económicos,  sin embargo se va a tener que reforzar los métodos de autenticación porque va a ser el cuello de botella a perdidas de control de la aplicación desarrollada.