<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">

  <channel>
	<title>Genciencia</title>
	<link>http://www.genciencia.com</link>
	<description>Genciencia es un weblog colectivo dedicado a la divulgacion cientifica</description>
	<pubDate>Thu, 14 Jun 2007 20:49:20 GMT</pubDate>
	<generator>http://www.genciencia.com</generator>

	
    <item>
      <title><![CDATA[Nuevo software que determina la función proteínica, al alcance de todos los internautas]]></title>
      <link>http://www.genciencia.com/2007/06/14-nuevo-software-que-determina-la-funcion-proteinica-al-alcance-de-todos-los-internautas</link>
      <guid>http://www.genciencia.com/2007/06/14-nuevo-software-que-determina-la-funcion-proteinica-al-alcance-de-todos-los-internautas</guid>
      <pubDate>Thu, 14 Jun 2007 20:49:20 GMT</pubDate>
      <author>VelSid</author>
      <description><![CDATA[	<p><img class="centro"  id="image3143" src="http://img.genciencia.com/2007/06/estructura_proteina.PNG" class="centro" alt="estructura_proteina.PNG" /></p>

	<p>Un investigador del Instituto de Fisiología Celular de la Universidad Nacional Autónoma de México ha desarrollado un <strong>nuevo software con el que poder determinar las funciones proteínicas a través del análisis tridimensional</strong>. El nuevo sistema ha sido diseñado por un matemático francés, un programador estudiante de bioinformática y un médico norteamericano.</p>

	<p>Una de las ventajas que ofrece este nuevo sistema es la posibilidad de diseñar un nuevo fármaco capaz de controlar las funciones que desempeña. Una simulación permite conocer como actúa una determinada proteína gracias al conocimiento de su estructura, según indica el investigador Gabriel del Río, es como si simplemente viendo a una persona pudieras conocer cual es la función que desempeña. .<br />
<a name="more"></a><br />
Hasta ahora, el mejor método que se empleaba para determinar la función proteínica, se realizaba a través de comparaciones y similitudes. La acción desempeñada de un determinado gen en una mosca se comparaba con la acción de un gen similar en el cuerpo humano asumiendo que ambos genes desempeñaban la misma función, pero este método sólo ha determinado el 50% de los genes.</p>

	<p>El programa se denomina <a href="http://bis.ifc.unam.mx/jamming/index.html">JAMMING</a> (Java-based Multi-threaded Minimum Interactive Networks –Graphical User Interface–) y <strong>puede ser consultado o descargado por cualquier internauta</strong> para realizar distintos análisis proteínicos, así debería ser la ciencia, libre y al alcance de todo el mundo.   </p>

	<p>Vía  |  <a href="http://actualidad.terra.es/ciencia/articulo/metodo_informatico_funcion_proteinas_disenar_1644599.htm">Terra</a><br />
Más información  |  <a href="http://www.dgcs.unam.mx/boletin/bdboletin/2007_364.html">Universidad Nacional Autónoma de México</a><br />
Más información  |  <a href="http://bis.ifc.unam.mx/jamming/index.html">JAMMING</a><br />
En Genciencia  |  <a href="http://www.genciencia.com/2007/06/14-el-codigo-genetico">El código genético</a></p>


 ]]></description>
    </item>
	
    <item>
      <title><![CDATA[Una camiseta que da abrazos]]></title>
      <link>http://www.genciencia.com/2007/03/24-una-camiseta-que-da-abrazos</link>
      <guid>http://www.genciencia.com/2007/03/24-una-camiseta-que-da-abrazos</guid>
      <pubDate>Sat, 24 Mar 2007 20:25:28 GMT</pubDate>
      <author>Juan David Pérez</author>
      <description><![CDATA[	<p><img class="centro" src="http://img.genciencia.com/2007/03/girlback.jpg" alt="Camisa que abraza" /><br />
La empresa Cute Circuit ha desarrollado una camiseta que da abrazos a su portador. Puede parecer de Ciencia Ficción, pero es real y ha sido nominado por la revista Times como uno de los mejores inventos del año 2006.</p>

	<p>El mecanismo de funcionamiento es muy sencillo: un usuario que tenga esta camiseta puesta y un accesorio Bluetooth conectado a un móvil, al que vamos a llamar emisor, puede enviar un mensaje de abrazo con la información recopilada por sus sensores a otro móvil, el del receptor, que mandará el abrazo a la camiseta receptora. El abrazo generado depende de la temperatura corporal y ritmo cardíaco, entre otros factores, del emisor. </p>

	<p>También se puede enviar un abrazo si el emisor no tiene la camiseta mediante un programa apto para móviles Java.</p>

	<p>No tiene ningún problema para lavarse, ya que los sensores se pueden quitar, y está disponible en varios colores. Lleva pilas y no es tóxica. </p>

	<p>Con esta idea no se pretende reemplazar el contacto humano, sino acortar las barreras en el caso de que uno de los amigos o familiares se encuentre lejos por trabajo o estudios. Así se puede aliviar la depresión, ya que el ser humano necesita ser tocado 70 veces al día como mínimo. </p>

	<p>Vía | <a href="http://www.cutecircuit.com">Cute Circuit</a></p>


 ]]></description>
    </item>
	
    <item>
      <title><![CDATA[Parseando XML con Java (II)]]></title>
      <link>http://www.genciencia.com/2006/10/27-parseando-xml-con-java-ii</link>
      <guid>http://www.genciencia.com/2006/10/27-parseando-xml-con-java-ii</guid>
      <pubDate>Fri, 27 Oct 2006 13:58:28 GMT</pubDate>
      <author>Alfonso Jiménez</author>
      <description><![CDATA[	<p><img src="http://img.genciencia.com/2006/10/javaxml.png" alt="Java XML" class="centro_sinmarco" />
Seguimos con el <a href="http://www.genciencia.com/2006/10/26-parseando-xml-con-java-i">post de ayer</a>, donde estábamos implementando en Java una aplicación que leyese un documento XML usando SAX. La aplicación de ejemplo la he dividido en 5 clases: <strong>Index</strong>, <strong>Acciones</strong>, <strong>Parseador</strong>, <strong>Interfaz</strong> y <strong>Conclusión</strong>.
<a name="more"></a>
<ul>
<li><strong>Parseador:</strong> Es la clase que se encarga de leer el documento XML. Esta clase contiene varios métodos por defecto: inicioElemento(Avisa que se ha encontrado una etiqueta registro, y de paso almacenamos el atributo definido en ella), finElemento (Tratamos los datos, en nuestro caso almacenamos en el objeto Vector) y characters (recibe la ubicación de los caracteres del elemento y los extraemos almacenándolos en una cadena). En realidad inicioElemento y finalElemento son una versión simplificada de los métodos startElement y endElement. De aquí sacaremos una colección con los datos que hayamos leído durante el proceso de lectura. En la variable valor se irá guardando una cadena que contiene los datos extraídos, es decir, los datos que tendremos que almacenar en la colección. El código es el siguiente:
<pre>
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.Attributes;
import java.util.Vector;
import org.xml.sax.*;
import org.xml.sax.helpers.*;</p>

	<p>public class Parseador extends DefaultHandler  {</p>
  private Vector coleccion; 
  private Acciones actual; 
  private String valor; 

  public Parseador (Vector coleccion) {
     this.coleccion = coleccion; 
  }

  /*
  localName: contiene el nombre de la etiqueta.
  att: de la clase "org.xml.sax.Attributes",
  es una tabla que contiene los atributos
  contenidos en la etiqueta.
  */
  public void startElement( String namespaceURI,
           String localName, String qName,
           Attributes attr ) throws SAXException {

     inicioElemento(localName, attr);
  }

  public void endElement (String namespaceURI,
           String localName, String rawName)
           throws SAXException {
      finElemento(localName);
  }

   public void inicioElemento(String nombreElemento,
            Attributes atributo) throws SAXException {

      if (nombreElemento.equals("entrada")) {
        actual = new Acciones (); 
        coleccion.addElement(actual); 
        actual.setID(
             Integer.parseInt(atributo.getValue("id"))); 
      }
    }

    public void finElemento(String nombreElemento)
             throws SAXException {

        if (nombreElemento.equals("nombre")){ 
          actual.setNombre (valor);
        } else if (nombreElemento.equals("telefono")) {
          actual.setTelefono (Integer.parseInt(valor)); 
        }
    }

    public void characters (char[] ch, int start, int end)
    {

       valor = new String (ch, start, end);
       valor = valor.trim();
    }
}
</pre>
</li>
<li><strong>Acciones:</strong> La clase Acciones contiene sencillos métodos get y set utilizando en la aplicación. Viene dada por el siguiente código:
<pre>
public class Acciones {

   private String documento;
   private String nombre;
   private int telefono;
   private int id;

   public void setNombre (String nombre) {
      this.nombre = nombre;
   }

   public void setTelefono (int telefono) {
      this.telefono = telefono;
   }

   public void setID (int id) {
      this.id = id;
   }

   public void setDocumento(String documento) {
      this.documento = documento;
   }

    public String getNombre() {
       return nombre;
    }

    public int getTelefono()  {
       return telefono;
    }

     public int getID() {
       return id;
     }

     public String getDocumento() {
       return documento;
     }
}
</pre>
</li>
<li><strong>Index:</strong> Es la clase que contiene el main e invoca a las demás clases. Su código es el que se muestra a continuación:
<pre>
import java.util.Vector;
import org.xml.sax.XMLReader;
import org.xml.sax.SAXException;
import org.apache.xerces.parsers.SAXParser;
import org.xml.sax.*;

	<p>public class Index {</p>

  Vector coleccion = new Vector ();
  Acciones acciones = new Acciones ();
  XMLReader parser = new SAXParser();

 public void ParsearDocumento () throws Exception {

      String nombre_de_archivo;
      acciones.setDocumento("index.xml"); 
      nombre_de_archivo=acciones.getDocumento(); 
      parser.setContentHandler(new Parseador(coleccion));
      parser.parse(nombre_de_archivo); 
      Interfaz contenedor = new Interfaz(coleccion);
 }

 public static void main(String[] args) throws Exception {

      Index ejecutar = new Index();
      ejecutar.ParsearDocumento();
 }

	<p>}
</pre>
</li>
<li><strong>Interfaz y Conclusión:</strong> La clase Interfaz es la que se encarga de crear la interfaz gráfica dónde se mostrarán los datos en pantalla. La clase Conclusión es una clase auxiliar de Interfaz.
<pre>
import java.util.Vector;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.List;
import java.awt.MenuBar;
import java.awt.Menu;
import java.awt.MenuItem;
import java.awt.Event;
import java.awt.*;
import java.awt.image.ImageObserver;</p>

	<p>public class Interfaz {</p>

   public Interfaz(Vector datos) {

      int i;
      Acciones[] inserta=new Acciones[datos.size()]; 
      List miLista = new List(15,false);

      for(i=0;i&lt;datos .size();i++) {
         inserta[i]=(Acciones)datos.elementAt(i);
         miLista.add(inserta[i].getID()+"."
            &lt;ins&gt;inserta[i].getNombre()&lt;/ins&gt;
            " - "+inserta[i].getTelefono());
      }

      Frame miFrame = new Frame("Agenda Electrónica XML");
      miFrame.setLayout(new FlowLayout());
      miFrame.add(miLista);
      miFrame.setSize(200,275);
      miFrame.setVisible(true); 
      miFrame.addWindowListener(new Conclusion());

   }
}
</pre>
<pre>
import java.awt.*;
import java.awt.event.*;

	<p>public class Conclusion extends WindowAdapter {</p>
    public void windowClosing( WindowEvent evt ) {
         System.exit(0);
    }<br />
}<br />
</pre><br />
</datos></pre></li><br />
</ul><br />
Referencias | <a href="http://es.wikipedia.org/wiki/XML">Wikipedia.org</a><br />
Referencias | <a href="http://xerces.apache.org">Xerces</a>


 ]]></description>
    </item>
	
    <item>
      <title><![CDATA[Parseando XML con Java (I)]]></title>
      <link>http://www.genciencia.com/2006/10/26-parseando-xml-con-java-i</link>
      <guid>http://www.genciencia.com/2006/10/26-parseando-xml-con-java-i</guid>
      <pubDate>Thu, 26 Oct 2006 12:20:03 GMT</pubDate>
      <author>Alfonso Jiménez</author>
      <description><![CDATA[	<p><img src="http://img.genciencia.com/2006/10/java.png" alt="Java" class="derecha" /><strong>XML</strong> es el acrónimo de eXtensible Markup Language (lenguaje de marcado ampliable o extensible). Es un lenguaje de etiquetas que se basa en documentos de texto plano en los que se utilizan etiquetas para delimitar los elementos de un documento. Es una versión simplificada de SGML, capaz de describir diversos tipos de datos. Su principal propósito es facilitar el intercambio de información. Son muchos los lenguajes basados en XML (por ejemplo, SVG, RDF, MathML, XSIL, ...). XML permite a las aplicaciones parsear el contenido del documento, pudiendo modificar y leer su contenido.</p>

	<p>Podemos parsear un documento XML de dos <em>modos</em>: usando SAX o DOM. Podemos distinguir a grandes rasgos el funcionamiento de cada modo de parseo de la siguiente forma:<br />
<ul><br />
<li><strong>DOM:</strong> DOM crea un árbol jerárquico en memoria que contiene el todo documento XML, y con él en memoria podemos hacer realizar cualquier tipo de recorrido, movimiento o acción con los elementos que deseemos.</li><br />
<li><strong>SAX:</strong> SAX significa Simple API for XML. Se usa para realizar un recorrido secuencial de los elementos del documento XML, es decir, vamos tratando la información a la vez que la vamos leyendo.</li><br />
</ul></p>

	<p>SAX es menos potente que DOM, pero aún así es más rápido y útil para los casos donde por ejemplo interesa hacer una lectura secuencial o buscar algún fragmento en un documento.<br />
<a name="more"></a><br />
Para mostrar el funcionamiento de un parser de XML, crearemos una pequeña aplicación donde leeremos el contenido de un documento XML usando SAX y lo mostraremos en pantalla. Para escribir el programa usaremos Java, aún así lo podriamos hacer en cualquier otro C++, PHP, Python, ...</p>

	<p>Nuestra aplicación parseará el siguiente documento XML de ejemplo, que se trata de una agenda que almacena el nombre y el número de teléfono de cada registro insertado.</p>

<pre>
&lt; ?xml version="1.0"?&gt;
&lt;agenda&gt;
   &lt;entrada id="1"&gt;
      &lt;nombre&gt; Javier &lt;/nombre&gt;
      &lt;telefono&gt; 956425981 &lt;/telefono&gt;
   &lt;/entrada&gt;
   &lt;entrada id="2"&gt;
      &lt;nombre&gt; Fran &lt;/nombre&gt;
      &lt;telefono&gt; 645675431 &lt;/telefono&gt;
   &lt;/entrada&gt;
   &lt;entrada id="3"&gt;
      &lt;nombre&gt; Alfonso &lt;/nombre&gt;
      &lt;telefono&gt; 660137258 &lt;/telefono&gt;
   &lt;/entrada&gt;
   &lt;entrada id="4"&gt;
      &lt;nombre&gt; Manuel &lt;/nombre&gt;
      &lt;telefono&gt; 625435431 &lt;/telefono&gt;
   &lt;/entrada&gt;
   &lt;entrada id="5"&gt;
      &lt;nombre&gt; Paco &lt;/nombre&gt;
      &lt;telefono&gt; 630603804 &lt;/telefono&gt;
   &lt;/entrada&gt;
&lt;/agenda&gt;
</pre>

	<p>Para parsear el documento usaremos JAXP y Xerces. JAXP (Java API for XML Processing) es un conjunto de clases que permite a las aplicaciones en Java parsear y transformar documento XML independientemente del modo de procesamiento utilizado. La razón de la existencia de JAXP es facilitar el uso de XML en la plataforma Java, garantizando que una aplicación escrita en Java orientanda hacia un parser con soporte JAXP puede ser migrado a otro sin ningún problema. Xerces es un parseador desarrollado por la fundacion Aparche.org disponible para Java y C++. Para escribir nuestro programa usaremos Xerces. </p>

	<p>Mañana continuaremos con la segunda parte <em>Parseando XML con Java (II)</em> donde mostraré la implementación de las clases necesarias y subiré el código de fuente.</p>


 ]]></description>
    </item>
	

  </channel>
</rss>
