100% TAWS
Soy Espol
Páginas
Tag Clouds
Hit Counter
TAWS' Calendar
| L | M | X | J | V | S | D |
|---|---|---|---|---|---|---|
| « Nov | ||||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
ESPOL - Wikipedia
Ganador de Ecuador Triunfador: Ronny Andrade, un ejemplo del trabajo tenaz taws-espol
20th Noviembre 2009

TAWS felicita a Ronny Andrade por haber ganado el Concurso de Ecuador Triunfador, en la categoría Trabajo Tenaz.
Estamos orgullosos del mérito logrado!
Felicitaciones Ronny!
Parsear XML en Java
13th Noviembre 2009
Para los que quieran parsear un xml en java les facilito el codigo necesario, como observacion el xml no sera un archivo guardado sino que sera recibido como un String.
1. imports necesarios (Fundamental)
import java.io.ByteArrayInputStream;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
2. Funcion que recibe un String y lo convierte en un objeto Document
public Document string2DOM(String s){
Document tmpX=null;
DocumentBuilder builder = null;
try{
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
}catch(javax.xml.parsers.ParserConfigurationException error){
int coderror=10;
String msgerror=”Error crando factory String2DOM “+error.getMessage();
return null;
}
try{
tmpX=(Document)builder.parse(new ByteArrayInputStream(s.getBytes()));
}catch(org.xml.sax.SAXException error){
int coderror=10;
String msgerror=”Error parseo SAX String2DOM “+error.getMessage();
return null;
}catch(IOException error){
int coderror=10;
String msgerror=”Error generando Bytes String2DOM “+error.getMessage();
return null;
}
return tmpX;
}
3. Funcion que recibe el un nodo y devuelve el contenido de algun tag interno especificando el tagName
private String getTextValue(Element ele, String tagName) {
String textVal = null;
NodeList nl = ele.getElementsByTagName(tagName);
if(nl != null && nl.getLength() > 0) {
Element el = (Element)nl.item(0);
textVal = el.getFirstChild().getNodeValue();
}
return textVal;
}
Ejemplo:
<persona>
<nombre>Ana</nombre>
</persona>
docEle->es el objeto tag persona, piensa en el objeto tag como lo manejas en javascript
para sacar el nombre escribirias: getTextValue(docEle,”nombre”);
4. Como usar todo junto
String xml=”<persona><nombre>Ana</nombre><telefono>2673353</telefono><telefono>2234456</telefono></persona>”;
Document doc=string2DOM(xml);
Element docEle=doc.getDocumentElement();
//para obtener el nombre
String nombre=getTextValue(docEle,”nombre”);
//para obtener telefonos
NodeList nl = docEle.getElementsByTagName(”telefono”);
if(nl != null && nl.getLength() > 0) {
for(int i = 0 ; i < nl.getLength();i++) {
//get the employee element
Element el = (Element)nl.item(i);
String telefono=el.getFirstChild().getNodeValue();
nl.add(telefono);
}
}
El modo en que se maneja el xml es muy parecido a que si lo hicieras en javascript. Espero les sirva
Tweetea desde tu Celular!!!
24th Julio 2009
Siii, ya es posible actualizar tu estado en el Microblog Twitter a través de tu celular aquí en Ecuador. Es muy sencillo, para hacerlo:
- Ingresa con tu usuario y contraseña a www.twitter.com
- En otra ventana, o en otra pestaña del navegador, ingresa a www.twittermail.com
- Escribe tu nombre de usuario y contraseña de Twitter
- Te será dada una dirección de correo, por ejemplo abc123@twittermail.com, copiala en tu celular.
- Cuando quieras tweetear algo, desde tu celular, crea un nuevo mensaje de texto, coloca en él tu dirección @twittermail.com, un espacio en blanco y a continuación, el mensaje que quieras poner.
- Envíalo al 123 y listo!
<!– @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } –>
Es muy sencillo comenzar a tweetear desde tu celular, además vuelve más chevere tu experiencia como usuario de Twitter, ya que te permite escribir lo que estás haciendo en el momento exacto en el que estás realizando la acción; el costo es el mismo que tiene un SMS normal.
Los inconvenientes son que actualmente solo está disponible para usuarios de Porta, y que sólo puedes enviar actualizaciones, mas no recibirlas.
TAWS ya tiene su oficina - Gracias Ing. Sergio Flores
16th Junio 2009
El grupo de investigación TAWS agradece por el apoyo brindado por el Decano de la FIEC, Ing. Sergio Flores, al asignarnos nuestras oficinas!
Gracias a esto, nos continuaremos desarrollando como Grupo de Investigación de la FIEC y aportando a la comunidad politécnica con charlas, talleres y software desarrollado para la comunidad politécnica.
Gracias Ing. Flores!
Hypertable
27th Enero 2009
Hypertable es un Sistema Gestor de Bases de Datos de tipo “open source”, desarrollado por la compañía Zvents[1]. Es un sistema de almacenamiento de datos distribuido y de alto desempeño, ideal para aplicaciones que necesitan manejar datos que evolucionan rápidamente y diseñado para soportar una gran demanda de datos en tiempo real, y fue modelado basándose en el diseño de Google’s BigTable.
Hypertable surgió para facilitar el procesamiento de grandes cantidades de datos, tras la gran explosión de información que acompañó el inicio de la Web 2.0, y se caracteriza por ser un gestor de bases de datos distribuido, escalable, no relacional y que no soporta transacciones.
Este gestor de bases de datos ha sido desarrollado en C++, pero inicialmente se pensó hacerlo en Java, idea que fue rechazada debido al gran consumo de memoria de dicho lenguaje de programación, y a la intensidad del flujo de datos de una aplicación de la naturaleza de Hypertable[2]
La principal diferencia entre Hypertabe y los gestores de bases de datos relacionales es que, en los gestores de bases de datos relacionales, se tienen muchas tablas muy pequeñas, y se las une con la operación de join, pero ni siquiera todos los join y todas las tablas juntas suelen acercarnos al verdadero volumen de datos generados por aplicaciones web 2.0, además de que el excesivo uso de operaciones join vuelve más “lenta” nuestra aplicación web; entonces la idea de Hypertable es que guardemos toda esta gran cantidad de información en una sola tabla (eliminando la necesidad de las operaciones join) y colocarla en un Sistema de Archivos Distribuido, para que las operaciones realizadas sobre la tabla puedan ser procesadas de forma simultánea por todos los sistemas conectados a la red.
La dirección web oficial del proyecto Hypertable es: http://www.hypertable.org/. Allí podrás encontrar información más detallada (en inglés), y descargar de forma gratuita la aplicación en su última versión (actualmente la 0.9.0.12 Alpha) Hypertable se distribuye bajo los términos de la Licencia GPL 2.0.
Por Andrés Vargas
Dado que las aplicaciones Web mejoran su interacción con el usuario cuando se evita recargar la página para actualizar una parte de la misma, es importante considerar todas las alternativas que se tienen para conseguir este objetivo.
Además del famoso modelo propuesto por JJ Garret ( Sí! AJAX ), existen otros mecanismos que pueden ayudarnos con los requerimientos al servidor: las llamadas remotas a procedimientos (RPC por sus siglas en inglés).Existen dos protocolos importantes en el mundo de los RPC: XML-RPC y JSON-RPC.
Antes de continuar, es importante definir qué es JSON y cuáles son sus ventajas:
- JSON es un formato de texto para intercambio de datos, tal como XML, sólo que mucho más liviano.
- Se utiliza para representar estructuras de datos simples llamados objetos y arreglos asociativos.
- Existe código para parsear y generar datos JSON para una larga variedad de lenguajes de programación.
JSON está construido en dos estructuras:
- Una colección de pares nombre/valor: Objeto
- Una lista de Valores ordenada: Colecciones ( arreglos ).
En el ejemplo siguiente, observamos texto representado usando JSON. En el texto mostrado, la clave phoneNumbers representa un arreglo, la clave address representa un objeto y las claves firstName y lastName que representan pares nombre:valor son parte del objeto que empieza en las llaves más externas.
{
“firstName”: “John”,
“lastName”: “Smith”,
“address”: {
“streetAddress”: “21 2nd Street”,
“city”: “New York”,
“state”: “NY”,
“postalCode”: 10021
},
“phoneNumbers”: [
"212 555-1234",
"646 555-4567"
]
}
Características de JSON-RPC-Java
JSON-RPC-Java es un framework que implementa el protocolo JSON-RPC. Permite mapear objetos de Java a objetos de JavaScript y viceversa.
Manejando el Servidor y el Cliente
Del lado del Servidor lo primero que se debe hacer es desarrollar las clases que serán accesibles desde el cliente, es recomendable que estén diseñadas de tal manera que no permitan ejecutar funciones de negocio que puedan comprometer la seguridad del sistema. Estas clases permitirán ejecutar acciones y obtener datos necesarios con el mínimo número de mensajes HTTP, mejorando así la eficiencia. Para hacer públicos los métodos debemos registrar una instancia de nuestra clase en un objeto JSONRPCBridge que previamente habremos creado y guardado en la sesión HTTP todo esto implementado en un Servlet.
Del lado del Cliente se debe crear una instancia de la clase JSON-RPC, y con esto llamar a nuestra función Java desde JavaScript.
Cómo usarlo
Para implementar aplicaciones que usen JSON-RPC-Java necesitaremos descargar la distribución de la misma en La utilización de esta tecnología se basa principalmente en descargar la siguiente distribución aqui.
Al descomprimir la mencionada distribución, los archivos que nos interesan añadir al proyecto son: jsonrpc-1.0.jar (directorio raíz) y jsonrpc.js (/webapps/jsonrp). Lo siguiente es indicar en el deployment descriptor (web.xml) la referencia al Servlet que se encuentra en la librería, Este Servlet será el encargado de comunicar al código JavaScript la estructura de nuestras clases compartidas.
El siguiente paso es informar al Servlet de cuáles son nuestras clases. Sólo es necesario registrar las clases una vez en cada sesión. Para ello utilizamos la clase JSONRPCBridge. Mantendremos una instancia de JSONRPCBridge por cada sesión.
Tipos de Retornos
Una vez que todo esté funcionando podremos con facilidad invocar métodos de clases de Java que nos devuelvan Tipos de datos Simples, Objetos, además puede serializar colecciones de objetos de clases que implementen las interfaces Map, Set o List.
Existen dos formas de acceder a los métodos de Java, Asíncrona y Síncrona, si se lo realiza de una forma síncrona tendremos que esperar la respuesta del Servidor para que el cliente JavaScript desbloquee el navegador, en cambio si es asíncrona podremos seguir con la ejecución de la aplicación.
Conclusión
¿Quien alguna vez no ha sentido la necesidad de usar directamente un método de Java desde el Cliente? Pues bien esta tecnología nos permite implementarlo, si bien es cierto un requerimiento AJAX normal nos proporciona una buena solución, puede llegar a ser un poco más complicado de implementar.
JSON-RPC-Java, nos ayuda a disminuir el número de líneas de código significativamente tanto del lado del Cliente como del Servidor, convirtiéndose en una herramienta útil para aumentar el rendimiento de nuestras aplicaciones. En una próxima entrega, incluiré códigos de ejemplo explicados paso a paso para visualizar aún mejor la implementación de aplicaciones que incluyen esta alternativa que sin duda alguna es muy útil!
Fuentes
- http://json.org/
- http://www.ateneatech.com/blog/json-rpc-java-comunicaciones-ajax-transparentes-tutorial-completo-y-ejemplos
- http://edgenhuang.blog.51cto.com/47333/23778
- http://oss.metaparadigm.com/jsonrpc/

Neptune: Distributed Large scale Structured Data Storage
09th Enero 2009
Neptuno, es una Base de Datos Estructurada, distribuída a larga escala, considerada como la versión libre para la implementación de BigTable de Google.
Las característica de Neptune:
- Sistema de Administración de Base de Datos. (No soporta modelo relacional)
- Escalabilidad:Puede almacenar hasta Petabytes de información.
- Confiabilidad
- Bajo Costo, Alto desempeño: Es posible utilizar pc’s.
- Fácil y rápido análisis: Paradigma MapReduce
- Sistema de Archivos Abstracto: Soporta varios sistemas de archivos (Por defecto el sistema de archivos de Hadoop)
Modelo de Datos de Neptuno
Es un modelo distribuído y persistente de mapa multidimensional basado en el modelo de BigTable de Google.
- Tablas: Los datos son almacenados en “tablas”. Está identificada por un nombre de tabla(debe ser único en el clúster de Neptune)
- Columna: Una tabla tiene múltiples columnas. Una columna tiene las mismas propiedades que una columna RDBMS.
- Fila: Una tabla consiste en múltiples filas.
- Fila.Clave: Cada fila tiene un identificador único (creado por Neptune del tipo String)
- Celda: Es la intersección de una fila con una columna. Tiene múltiples valores clave - valor.
- Celda.Clave: De tipo String, permite identificar los datos.
- Celda.Valor: Tiene múltiples valores y son almacenados por la fecha de creación en orden descendente.
¿Cloud Computing? Tú decides si quieres ser competitivo
17th Diciembre 2008
Para las PYMES, es muy importante tener ventajas competitivas. Una manera de lograrlo es ofreciendo a sus clientes nuevos servicios, rápidos y de bajo costo. Sin embargo, para conseguirlo el uso de tecnología es imprescindible, tecnologías tales como servidores con grandes capacidades de procesamiento y almacenamiento, ya sea para alojar aplicaciones empresariales de nivel operativo o aplicaciones que impliquen procesamiento de datos para la toma de decisiones. Pero estas tecnologías no suelen estar al alcance de las PYMES por los altos costos de compra y mantenimiento. Cloud computing es una alternativa que permite hacer uso de servicios de computación a través del internet. 
Cloud computing es un servicio que hemos usado todos alguna vez. Quién no ha utilizado un browser para leer su mail, o el servicio de bloggers que Google nos provee de manera gratuita? Este servicio está alojado en los servidores de Google, el propietario del blog no tiene por qué preocuparse del hardware.
Un ejemplo ilustrativo del potencial de Cloud computing es el nuevo servicio que pretende ofrecer Oracle al poner a disposición el uso de sus motores de bases de datos y sus aplicaciones en uno de los servidores de Amazon (Proveedor de Cloud computing), para que esté disponible para sus clientes.
Los costos del uso del servicio que provee Amazon por el uso de su Cloud computing es de unos centavos por hora, una gran ventaja comparados con la enorme inversión que tendría que realizar la empresa en la compra de hardware.
Definitivamente como empresa hay que estar atentos de los grandes beneficios que podría ofrecernos el uso de clusters para procesamiento y almacenamiento a través del Internet y lo mejor de todo a un costo relativamente bajo.
En el website de Amazon, puedes encontrar casos de estudio sobre empresas que se decidieron a contratar servicios de Cloud Computing como Amazon EC2, Amazon S3, Amazon SQS. Puedes visitar el link http://aws.amazon.com/solutions/case-studies/ y conocer un poco más sobre estas compañías, la próxima puede ser la tuya!
By Irene Varas - ivaras2007@gmail.com
Windows Vista: Internal Error 2738
12th Noviembre 2008
Al parecer Windows Vista tiene un error interno, por lo que no registra VBScript, que no permite instalar ciertos tipos de programas:
Primero, debes encontrar el archivo vbscript.dll, por lo general está en C:\Windows\System32, si lo encuentras … perfecto!
Ahora, se necesita ejecutar el command prompt como administrador, por lo cual, accede a Inicio -> Accesorios y dá click derecho sobre el Comman prompt en “Run as administrator”.
En el cmd, escribes “cd C:\Windows\System32″ y luego tipea “regsvr32 vbscript.dll”.
Debe aparecer una ventana confirmando que todo funcionó correctamente… y luego continúas con la instalación del programa inicial.
http://forums.support.roxio.com/index.php?showtopic=19110
Keyword Density: Search Engine Optimization(SEO)
06th Noviembre 2008
Mientras se construye un sitio web, es necesario identificarlo con palabras claves frecuentemente utilizados, que permiten a los usuarios realizar búsquedas por esas palabras; pero, que significa “frecuente”?
Para entender mejor el uso optimizado de palabras claves, es necesario poseer una metodología para medir la frecuencia. (Para verificar la frecuencia de una palabra clave, es posible por Live-Keyword-Analysis.com.)
Existen formas más complejas de calcular la densidad de una palabra clave, tomando en cuenta los componentes HTML en la página (Meta tags como en: title, keywords, alt text, description y comments). Cuando se utiiliza esta medida, no sólo consiste en contar las palabras, también, cuenta las palabras en las secciones de los metas.
Enlaces de referencia:






