lunes, 25 de enero de 2010

Mostrar códigos usando etiquetas HTML, XML, etc. en un blog

Bueno aquí dejo algo muy útil para todos aquellos que desean mostrar el código de sus paginas web dinámicas y estáticas, como seguramente les habrá sucedido el navegador interpreta el código que desean mostrar como si fuera parte de la pagina del blog, para evitar ello debemos utilizar los caracteres de escape, de la siguiente forma se traduce < ,> por &gt y &lt todo un lío si el código es muy extenso jeje, pero aqui les tengo la solución:

SimpleCode

Es una página en la cual escribimos nuestro código y automáticamente se traducen las etiquetas a los respectivos caracteres de escape, copiamos, pegamos en nuestro blog y listo!!

sábado, 23 de enero de 2010

Importando imágenes en android


Aquí va un sencillo programa donde se utiliza el widget ImageView y HttpURLConnection para mostrar imágenes de la web en nuestro dispositivo celular. La aplicación solicita ingresar el nombre del usuario y el URL de una imagen en el internet y luego de pulsar el botón nos muestra 2 imágenes, una cuyo URL se encuentra grabado en el código y otra imagen que es la solicitada por el usuario.

el código es el siguiente:

XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/widget1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<LinearLayout
android:id="@+id/widget2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/nombre_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nombre: "
>
</TextView>
<EditText
android:id="@+id/nombre_txt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
>
</EditText>
</LinearLayout>
<LinearLayout
android:id="@+id/widget3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<LinearLayout
android:id="@+id/widget5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/url_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" URL: "
>
</TextView>
<EditText
android:id="@+id/url_txt"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="http://"
>
</EditText>
</LinearLayout>
<Button
android:id="@+id/mostrar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Mostrar Imagen"
>
</Button>
</LinearLayout>
<LinearLayout
android:id="@+id/widget4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/nombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="_"
android:layout_gravity="center_horizontal"
>
</TextView>
</LinearLayout>
<LinearLayout
android:id="@+id/widget5"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/imagen"
android:layout_width="120px"
android:layout_height="120px"
android:layout_gravity="center_horizontal"
>
</ImageView>
<ImageView
android:id="@+id/imagen2"
android:layout_width="120px"
android:layout_height="120px"
android:layout_gravity="center_horizontal"
>
</ImageView>
</LinearLayout>

</LinearLayout>



Código en java:

public class Imagenes2 extends Activity {

ImageView imagen; //variables que almacenan las imagenes
ImageView imagen2; //que seran asociadas a la imagenes generadas en el XML

//URL de una imagen en la web
String imageUrl="http://vpn.webcindario.com/fotosgpweb1/VPN7.jpg";

String imageUrl2="";

TextView nombre;
EditText nombre_txt;
EditText url_txt;
Bitmap bmImg; //Aqui se almacena la imagen recibida

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);

//Aqui se asocian las variables en java con los widgets en el xml
Button boton= (Button)findViewById(R.id.mostrar);
nombre=(TextView) findViewById(R.id.nombre);
nombre_txt=(EditText) findViewById(R.id.nombre_txt);
url_txt=(EditText) findViewById(R.id.url_txt);
boton.setOnClickListener(getImgListener);
imagen = (ImageView)findViewById(R.id.imagen);
imagen2 = (ImageView)findViewById(R.id.imagen2);
}

View.OnClickListener getImgListener = new View.OnClickListener()
{

@Override
public void onClick(View view) {
// TODO Auto-generated method stub

//lectura del URL
imageUrl2=url_txt.getText().toString();

nombre.setText("Hola "+nombre_txt.getText()+"\n\nTu URL es: "+imageUrl2);
//LLamado a la función que carga la imagen,
// se pasa el parametro del URL
cargarImagen(imageUrl);
//Muestra la imagen en el dispositivo
imagen.setImageBitmap(bmImg);
cargarImagen(imageUrl2);
imagen2.setImageBitmap(bmImg);

}

};



void cargarImagen(String Url){
URL miUrl =null;
try {
miUrl= new URL(Url);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {

//Creando la conexión http
HttpURLConnection conn= (HttpURLConnection)miUrl.openConnection();
conn.setDoInput(true);
conn.connect();
//leyendo el stream de datos de la imagen
InputStream is = conn.getInputStream();

//reconstruyendo el stream de datos a una imagen
bmImg = BitmapFactory.decodeStream(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

No se olviden de darle permisos de internet a la aplicación, agreguen al archivo AndroidManifest.xml la siguiente línea:
<uses-permission android:name="android.permission.INTERNET" />




viernes, 22 de enero de 2010

Primera aplicación en Android

Hola a todos, bueno una vez instaladas todas las herramientas para android podemos comenzar a programar. Pensaba realizar un pequeño tutorial pero al revisar este ejemplo de aplicación, me pareció innecesario ya que allí se encuentra todo lo que debemos hacer para comenzar nuestra primera aplicación, todo se encuentra muy bien detallado y se explica cada parte del código lo cual resulta muy beneficioso para las personas que recién inician

El link es el siguiente: Eurocalculadora, Primera aplicacion android

DroidDraw


Volviendo a lo que es android, al momento de utilizar el netbeans con el pluging de android me percate que no existe la posibilidad de crear formularios simplemente arrastrando elementos sino que todo debe escribirse directamente en XML, bueno consultando por ahi me encontre con DroiDraw que es justo la herramienta que nos permite realizar los formularios de manera rápida y sencilla




DroidDraw es una aplicación hecha en Java con la cual podemos crear interfaces de usuario de forma fácil e intuitiva, simplemente seleccionamos los elementos que queramos colocar en nuestra aplicación y los arrastramos a la "pantalla de android". Nos permite seleccionar los tipos de layer y definir las propiedades de diferentes elementos.


Es realmente interesante para los que empezamos la programar con Android, puesto que se muestra la forma como se deben estructurar los elementos.



En la interfaz hay 3 paneles principales:


-Panel de dibujo: Es el panel que está alojado a la izquierda de la aplicación. Representa la pantalla del telefono celular y es aquí donde arrastramos y colocamos los elementos.


-Panel de widgets: Es el panel ubicado en la parte superior derecha, alli encontramos todos los widgets (botones, imágenes, campos de texto) que podríamos añadir a una aplicación. Usando las diferentes pestañas, podremos cambiar los parámetros de cada elemento, añadir contenedores (Layouts) o crearnos nuestro fichero de Strings.


-Panel de salida: Este es el panel inferior derecho. Tiene 2 funcionalidades. Generar la UI a partir de un XML que se ha introducido manualmente o a partir de una UI que hayamos generado nosotros, crear el XML para insertarlo en nuestra aplicación.

jueves, 21 de enero de 2010

Hosting en la WEB para Moodle Gratis!!

El sitio se llama freehostia.com. No lo creía en un principio, pero luego de registrarme, recibir un correo y activar la cuenta pude tener acceso a un sencillo panel de control desde el cual se pueden subir paginas web, php, ftp, se tiene una base de datos en MySQL e incluso se puede instalar Moodle, Joomla, WordPress, y un montón de cosas más.

Aqui les indico una presentación creada por un Jesus, donde se detalla como registrarnos:

REST

La Transferencia de Estado Representacional (Representational State Transfer) o REST es una técnica de arquitectura software para sistemas hipermedia distribuidos como la World Wide Web. describir cualquier interfaz web simple que utiliza XML y HTTP, sin las abstracciones adicionales de los protocolos basados en patrones de intercambio de mensajes.

REST utiliza una serie de diseños clave:

· Cliente-Servidor, clientes y servidores deben estar separados por una interfaz uniforme, no les interesa el almacenamiento o la interfaz del otro.

· Stateless, cada solicitud del cliente contiene toda la información necesaria para atenderla y cualquier estado se lleva a cabo en el cliente, esto hace a los servidores más visibles al seguimiento y también los hace más confiables.

· Cacheable, como en la World Wide Web, los clientes son capaces de recibir respuestas de la caché.

· Sistema de capas, clientes no indican si están directamente conectados al servidor o a intermediarios, servidores puedes mejorar la escalabilidad del sistema permitiendo equilibrio de descarga y caches compartidas, también hacen cumplir políticas de seguridad.

· Un protocolo cliente/servidor sin estado: cada mensaje HTTP contiene toda la información necesaria para comprender la petición. Ni el cliente ni el servidor necesitan recordar ningún estado de las comunicaciones entre mensajes.

· Un conjunto de operaciones bien definidas, para HTTP las más importantes son POST, GET, PUT y DELETE.

· En un sistema REST, cada recurso es direccionable únicamente a través de su URI. Los recursos pueden ser manipulados a través de las operaciones.

· El uso de hipermedios, tanto para la información de la aplicación como para las transiciones de estado de la aplicación; la representación de este estado en un sistema REST son típicamente HTML o XML.


Más información:


http://en.wikipedia.org/wiki/Representational_State_Transfer

REST API VS SOAP API

Al momento de implementar una API, se dispone de 2 opciones: utilizar REST, SOAP, y una tercera alternativa que sería usar ambos a la vez.

APIs REST

La información se obtiene a través del método GET, en una URL que es codificada durante la transmisión. Las peticiones pueden apuntar a varios URL que pueden ser manejados por un script o mapear los URLs hacia un script en el servidor web. La ventaja de estos API es la facilidad y velocidad de desarrollo

APIs SOAP

En una solicitud SOAP se debe revisar para asegurarse de que cumple con el formato especificado por el documento WSDL. La API SOAP utiliza un único punto final para todas las solicitudes lo que implica tener script extensos. Es más compleja, yrequiere un mayor esfuerzo para generar la respuesta y atender la solicitud, pero permiten una mayor flexibilidad al añadir soporte

APIs REST y APIs SOAP

Una opción interesante ya que se pueden aprovechar las ventajas de cada uno, sin embargo implica doble mantenimiento, duplicar el soporte y el tiempo de documentación para la vida de la API.