some image

Author Edwin Torres

Obtener la media de un arreglo de numeros

Etiquetas: , Blog, Programación No comments

Este ejemplo pretende mostrar la forma de obtener la media de un arreglo de numeros ingresados por teclado. Se decide utilizar un metodo que reciba un arreglo, porque se pude por ejemplo mostrar los numeros procesados y realizar algún tipo de operación.

Codigo

import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
 * Desarrollar un algoritmo que calcule la media de N números ingresados por
 * teclado
 * 
 * @author codesandtags
 * 
 */
public class MediaNumeros {

	public static void main(String[] args) {

		// Objeto para lectura de datos por teclado
		BufferedReader input = new BufferedReader(new InputStreamReader(
				System.in));
		// Variables de control
		int[] numeros = new int[0];
		int cantidad = 0;

		// Control de la excepcion para que no se ingresen datos no numericos
		try {
			// Solicitud de la cantidad e inicializacion del arreglo
			System.out.print("Ingrese cantidad de numeros a procesar : ");
			cantidad = Integer.parseInt(input.readLine());
			numeros = new int[cantidad];

			// Ingreso de los numeros
			for (int i = 0; i < cantidad; i++) {
				System.out.print("Ingrese numero[" + (i + 1) + "] : ");
				numeros[i] = Integer.parseInt(input.readLine());
			}

		} catch (Exception e) {
			System.err
					.println("\nERROR : El valor ingresado no es un numero entero");
		}

		// Instanciacion y envio de los numeros para obtener la media
		MediaNumeros resultado = new MediaNumeros();
		System.out.println("La media de los numeros es : "
				+ resultado.getMedia(numeros));
	}

	/**
	 * Obtiene la media de un arreglo de numeros ingresados
	 * 
	 * @param numeros
	 * @return
	 */
	public float getMedia(int[] numeros) {
		float media = 0f;
		for (int i = 0; i < numeros.length; i++) {
			media += numeros[i];
		}
		System.out.println("Total numeros : " + numeros.length);
		return (media / numeros.length);
	}

}

Salida

Ingrese cantidad de numeros a procesar : 8
Ingrese numero[1] : 564
Ingrese numero[2] : 1
Ingrese numero[3] : 9
Ingrese numero[4] : 0
Ingrese numero[5] : 657
Ingrese numero[6] : 91
Ingrese numero[7] : 35
Ingrese numero[8] : 99
Total numeros : 8
La media de los numeros es : 182.0

EaselJS Framework para juegos en HTML5 – Hola Mundo

Etiquetas: Blog, Web No comments

Segun las estadisticas una de las mejores formas de aprender “es jugando”, y que mejor que poder hacer tus propios juegos a tu imagen y semejanza :). Bien, en esta ocasión decidi conocer un poco sobre este mundo de los juegos creados en HTML + JavaScript y CSS. De acuerdo a las lecturas realizada en foros, búsquedas en Google y recomendaciones en algunos blog, opte por utilizar el FrameWork Easel JS.

 Una libreria en Javascript para trabajar facilmente con el canvas de HTML5, manejo de graficos, creacion de juegos y otras hierbas….

Características de Easel JS

  • Contenido rico en HTML5
  •  Manejo de objectos canvas
  •  Anidación de objetos
  •  Modelo de interacción con el mouse
  •  Enfoque / Sintaxis familiar para los desarrolladores

En la página principal de Easel JS existen algunos demos de las grandes cosas que puede hacer esta libreria =).

Documentación de Easel JS
Descarga de Easel JS

Hola mundo con Easel

Bien, he aquí el ejemplo más sencillo con el cual comienzo el manejo de Easel JS. El ejemplo muestra cosas como :

  • Instancia a las librerias de Easel
  • Creación del tablero del juego
  • Utilización del objeto Text
  • Adición de objetos al canvas
  • Actualización del tablero

Ver Hola Mundo con EaselJS
Ver Código Fuente HTML

 

Leer contenido de una pagina web con Java

Etiquetas: Blog, Programación 1 comment

A continuación muestro un ejemplo de como se podría leer una página web utilizando Java. Basicamente la lectura consiste 3 puntos.

  1. Crear un objeto URL al cual se le pasa la “url” de la página a leer.
  2. Crear un objeto URLConnection para abrir una conexión a la “url” indicada.
  3. Realizar la léctura utilizando el objeto BufferedReader, donde el InputStreamReader utilizado como parámetro, se saca del método getInputStream() del objeto que contiene la conexión.

En este ejemplo colocaré la léctura y la búsqueda de coincidencias como un valor agregado :)

Página Objetivo : http://projecteuler.net
Palabra a buscar : “and”

Codigo

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

/**
 * LeerPaginaHtml con Java
 *
 * @author codesandtags
 *
 */
public class LeerPaginaHtml {

	public static void main(String[] args) {

		LeerPaginaHtml ejemplo = new LeerPaginaHtml();
		ejemplo.leerPagina("http://projecteuler.net");
		ejemplo.buscarTextoPagina("http://projecteuler.net", "and");
	}

	/**
	 * Realiza la lectura de una pagina enviada como parametro e imprime el
	 * contenido
	 *
	 * @param url
	 * @return
	 */
	public String leerPagina(String url) {
		System.out.println("Leyendo Pagina : " + url);
		StringBuffer resultado = new StringBuffer();

		try {
			URL urlPagina = new URL(url);
			URLConnection urlConexion = urlPagina.openConnection();
			urlConexion.connect();

			// Creamos el objeto con el que vamos a leer
			BufferedReader lector = new BufferedReader(new InputStreamReader(
					urlConexion.getInputStream(), "UTF-8"));
			String linea = "";
			String contenido = "";

			while ((linea = lector.readLine()) != null) {
				resultado.append(String.valueOf(linea));
				resultado.append("\n");
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

		System.out.println("Contenido : \n\n" + resultado.toString());
		return resultado.toString();
	}

	/**
	 * Realiza la lectura de una pagina enviada como parametro y busca las
	 * coincidencias de un texto especificado.
	 *
	 * @param url
	 * @param texto
	 * @return
	 */
	public String buscarTextoPagina(String url, String texto) {
		System.out.println("Leyendo Pagina : " + url);
		StringBuffer resultado = new StringBuffer();
		int veces = 0;

		try {
			URL pagina = new URL(url);
			URLConnection uc = pagina.openConnection();
			uc.connect();

			// Creamos el objeto con el que vamos a leer
			BufferedReader lector = new BufferedReader(new InputStreamReader(
					uc.getInputStream(), "UTF-8"));
			String linea = "";
			String contenido = "";

			while ((linea = lector.readLine()) != null) {

				if (linea.contains(texto)) {
					int idx = 0, coincidencias = 0;

					while (linea.indexOf(texto, idx) > 0) {
						idx = linea.indexOf(texto, idx) + 1 + texto.length();
						coincidencias++;
					}

					resultado.append(String.valueOf(coincidencias
							+ " coincidencia(s) =>"));
					resultado.append(String.valueOf(linea));
					resultado.append("\n");

					veces += coincidencias;
				}
			}

		} catch (Exception e) {
			e.printStackTrace();
		}

		System.out.println("Se encontro un total de : " + veces
				+ " coincidencias con la expresion [" + texto + "] ");
		System.out.println(resultado.toString());
		return resultado.toString();
	}
}

 

Resultado

Leyendo Pagina : http://projecteuler.net
Contenido :

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="author" content="Colin Hughes" />
<meta name="description" content="A website dedicated to the fascinating world of mathematics and programming" />
<meta name="keywords" content="programming,mathematics,problems,puzzles" />

<title>Project Euler</title>
<link rel="shortcut icon" href="http://projecteuler.net/favicon.ico" />
<link rel="stylesheet" type="text/css" href="style_main.css" />
<link rel="stylesheet" type="text/css" href="style_light.css" /></head>

<body>
<div id="container">

<div id="nav" class="noprint">
<ul>
<li id="current"><a href="about" title="About" accesskey="h">About</a></li>
<li><a href="register" title="Register" accesskey="1">Register</a></li>
<li><a href="problems" title="Problems" accesskey="2">Problems</a></li>
<li><a href="login" title="Login" accesskey="3">Login</a></li>
</ul>
</div>
<div id="info_panel"><a href="rss2_euler.xml"><img src="images/icon_rss.png" alt="RSS Feed" title="RSS Feed" /></a><a href="secure=yes"><img src="images/icon_lock.png" alt="Use secure connection" title="Use secure connection" /></a></div>

<div id="logo" class="noprint">
<img src="images/pe_banner_light.png" alt="Project Euler .net" />
</div>

<div id="content">
<h2>About Project Euler</h2>
<img src="images/euler_portrait.png" alt="Leonhard Euler (1707-1783)" style="margin:10px;float:right;" />
<h3>What is Project Euler?</h3>
<p>Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.<br /><br />
The motivation for starting Project Euler, and its continuation, is to provide a platform for the inquiring mind to delve into unfamiliar areas and learn new concepts in a fun and recreational context.</p>
<br />
<h3>Who are the problems aimed at?</h3>
<p>The intended audience include students for whom the basic curriculum is not feeding their hunger to learn, adults whose background was not primarily mathematics but had an interest in things mathematical, and professionals who want to keep their problem solving and mathematics on the edge.</p>
<br />
<h3>Can anyone solve the problems?</h3>
<p>The problems range in difficulty and for many the experience is inductive chain learning. That is, by solving one problem it will expose you to a new concept that allows you to undertake a previously inaccessible problem. So the determined participant will slowly but surely work his/her way through every problem.</p>
<br />
<h3>What next?</h3>
<p>In order to track your progress it is necessary to setup an account and have Cookies enabled. If you already have an account then <a href="login">Login</a>, otherwise please <a href="register">Register</a> - it's completely free!</p>
<p>However, as the problems are challenging then you may wish to view the <a href="problems">Problems</a> before registering.</p><br /><br /><p style="text-align:center;font-size:125%;font-style:italic;color:#999;">&quot;Project Euler exists to encourage, challenge, and develop the skills and enjoyment of anyone with an interest in the fascinating world of mathematics.&quot;</p></div>

<div id="footer" class="noprint">
<a href="copyright">Project Euler Copyright Information</a>
<!--/Creative Commons License--><!-- <rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<Work rdf:about="">
<license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/uk/" />
<dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
</Work>
<License rdf:about="http://creativecommons.org/licenses/by-nc-sa/2.0/uk/"><permits rdf:resource="http://web.resource.org/cc/Reproduction"/><permits rdf:resource="http://web.resource.org/cc/Distribution"/><requires rdf:resource="http://web.resource.org/cc/Notice"/><requires rdf:resource="http://web.resource.org/cc/Attribution"/><prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/><permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/><requires rdf:resource="http://web.resource.org/cc/ShareAlike"/></License></rdf:RDF> -->
</div>
</div>
<div style="height:1px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div></body>
</html>

Leyendo Pagina : http://projecteuler.net
Se encontro un total de : 12 coincidencias con la expresion [and]
1 coincidencia(s) =><meta name="description" content="A website dedicated to the fascinating world of mathematics and programming" />
2 coincidencia(s) =><p>Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.<br /><br />
3 coincidencia(s) =>The motivation for starting Project Euler, and its continuation, is to provide a platform for the inquiring mind to delve into unfamiliar areas and learn new concepts in a fun and recreational context.</p>
2 coincidencia(s) =><p>The intended audience include students for whom the basic curriculum is not feeding their hunger to learn, adults whose background was not primarily mathematics but had an interest in things mathematical, and professionals who want to keep their problem solving and mathematics on the edge.</p>
1 coincidencia(s) =><p>The problems range in difficulty and for many the experience is inductive chain learning. That is, by solving one problem it will expose you to a new concept that allows you to undertake a previously inaccessible problem. So the determined participant will slowly but surely work his/her way through every problem.</p>
1 coincidencia(s) =><p>In order to track your progress it is necessary to setup an account and have Cookies enabled. If you already have an account then <a href="login">Login</a>, otherwise please <a href="register">Register</a> - it's completely free!</p>
2 coincidencia(s) =><p>However, as the problems are challenging then you may wish to view the <a href="problems">Problems</a> before registering.</p><br /><br /><p style="text-align:center;font-size:125%;font-style:italic;color:#999;">&quot;Project Euler exists to encourage, challenge, and develop the skills and enjoyment of anyone with an interest in the fascinating world of mathematics.&quot;</p></div>

EaselJS Ejemplo de Drag and Drop

Etiquetas: , Blog, Web No comments

El Drag and Drop es una expresión muy utilizada hoy en día para referirse a ( Arrastrar y Soltar ). Por lo general se suelen arrastrar objetos para llevarlos de un lugar a otro, ya sea a una instancia en otra ventana, en alguna parte del navegador, en algún lugar del disco etc. Este ejemplo

Este ejemplo ilustra la forma de hacer un drag and drop con el Framework EaselJS. Dentro de las cosas básicas a tener en cuenta al momento de hacer el drag and drop se resaltan las siguientes :

  1. Utilizar la libreria de EaselJS.
  2. Crear los objetos para adicionarlos a un escenario el cual es la referencia de un canvas en html5.
  3. Habilitar el manejo del mouse : enableMouseOver.
  4. Realizar la implementación del pressHandler para que permita conocer las nuevas coordenadas de la figura(Shape). También hacer la implementació de tick para actualizar en el escenario las cordenadas una vez se suelte la figura
  5. No olvidar colocar la instrucción de : Ticker.addListener(window); quien será nuestro escuchador de eventos sobre la ventana.

Ver Demo drag and Drop

Ver Codigo Fuente

Ejemplo de la visualización

Ejemplo EaselJS

Ejemplo EaselJS

 

En busca de la ISTQB Fundation Level – Introducción

Etiquetas: , Blog, Testing No comments

Nombre Certificación : International Software Testing Qualifications Board (ISTQB) Fundation Level


¿Qué es? :

La certificación ISTQB Fundation Level, es la primera de tres certificaciones (ISTQB Fundation Level, ISTQB Advanced Level, ISTQB Expert Level) y es diseñada para roles tales como : Probadores, Analistas de Pruebas, Consultores de pruebas, Administradores de pruebas, probadores de aceptación de usuario y desarrolladores de software.

¿Estructura del Examén? :

El examén se caracteriza por :

  • 40 Preguntas de opción multiple.
  • Se pasa con 65% (+26 Respuestas correctas)
  • Duración de 60 Minutos
  • Se evalúan 4 niveles de conocimiento.
  • Se basa en los conceptos claves y fundamentales para realizar pruebas de software.
  • La persona que obtenga la certificación entenderá las técnicas básicas para realizar pruebas de software.


¿Niveles de conocimiento? :

  • K1 = (Remember / Recordar) : El candidato debe recordar o reconocer un término o un concepto IEEE 829, IEEE 610, BS79-1 Y 2, ISO/IEC 9126
  • K2 = (Understand / Entender) :  El candidato debe seleccionar una explicación para una declaración relacionada con el tema de la pregunta.
  • K3 = (Apply / Aplicar) : El candidato debe seleccionar la aplicación correcta de un concepto o de la técnica y aplicarla a un contexto determinado.
  • K4 = (Analyze / Analizar) :  El candidato es capaz de separar la información relacionada con un procedimiento o técnica en sus partes constituyentes para una mejor comprensión y puede distinguir entre hechos e inferencias.

 

La cobertura de la certificación se encuentra sobre los siguientes 6 temas  :
  1. Fundamentos de las pruebas de software
  2. Pruebas a través del ciclo de vida del software
  3. Procedimientos de prueba estáticas y pruebas dinámicas
  4. Procedimiento del diseño de pruebas
  5. Gestión de pruebas
  6.  Herramientas de prueba

Referencias de estudio : 

Material de estudio de Syllabus con la documentación Oficial para la ISTQB : ttp://istqb.org/downloads.html
International Software Quality Institute (iSQI) : https://www.isqi.org/
Quiz de Certificación : http://istqb.patshala.com/