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.

miércoles, 20 de enero de 2010

Solución página en blanco al instalar moodle

La anterior semana por cuestiones de la universidad se nos pidió instalar moodle, un sistema de gestión de cursos, de distribución libre, que ayuda a los educadores a crear comunidades de aprendizaje en línea. Se utilizo un servidor web WAMP (Windows, Apache, MySQL, Php) donde se descomprime el paquete de moodle.

Bueno resulta que la instalación no es nada complicada y fácil de realizar, pero en un momento dado (luego de definir la base de datos que se va a utilizar en MySQL) el navegador aparentemente se cuelga y solo se muestra una página en blanco y no es posible continuar con la instalación. Después de leer un poco resulta que el problema se da generalmente en windows vista por cuestiones de permisos.

Bueno la solución que encontre es la siguiente:

1.- En la carpeta www del WAMP server se crea una carpeta llamada moodledata.

2.- Se crea la base de datos moodle en mysql

3.- Ingresan a la carpeta moodle (que debieron descomprimirla en la carpeta www del WAMP) y copian un archivo que dice config-dist.php y lo pegan en esa misma carpeta pero con el nombre config.php

4.- Con un editor de texto cualquiera editamos el archivo config.php con lo siguiente:

5.- En WEB SITE LOCATION buscamos $CFG->wwwroot y ponemos:

$CFG->wwwroot = 'http://localhost/moodle'

6.-En SERVER FILES LOCATION colocamos el directorio donde se encuentra moodle, en mi caso

$CFG->wwwroot = 'http://localhost/moodle';

7.- DATA FILES LOCATION especificamos el directorio de moodledata que creamos anteriormente

$CFG->dataroot = 'C:\wamp\www\moodledata';

Si todo esta correcto ingresamos a http://localhost/moodle/ y podemos continuar con la instalación normalmente.

Creando dispositivos Virtuales Android




Para ejecutar las aplicaciones de android en netbeans además de necesitar el
plugin y el SDK deben crear un dispositivo virtual de android, para ello tienen
que hacer lo siguiente:

1.- Ingresan al directorio donde tienen el SDK.
ej: C:\Android\android-sdk-windows

2.- Ejecutan la aplicación SDK Setup

3.-seleccionan la opción Virtual Devices y seleccionan New...

4.-Ponen un nombre al dispositivo seleccionan el SDK y pulsamos el botón Create
AVD
Con esto al momento de ejecutar sus programas en Netbeans podrán seleccionar el dispositivo virtual y aparece el teléfono una pantalla que dice android, se demora un poco arrancar tengan paciencia. Una vez que el dispositivo esta en funcionamiento ya podemos ejecutar nuestras aplicaciones sin ningun problema.

Instalando el SDK de Android

Instalar el SDK de android es muy simple puesto que solo hay que descomprimir en el disco duro el archivo del SDK para nuestro sistema operativo: Linux, MAC o Windows.

El archivo lo obtenemos de Android Developers el sitio oficial: http://developer.android.com/sdk/index.html

Se lo puede descomprimir en cualquier parte, en windows, de preferencia en el disco c:/ en una carpeta llamada Android. Una vez realizado ingresamos a la carpeta y damos click en la aplicación SDK Setup. Seleccionamos la opcion Avaible Packages y marcamos las diferentes versiones de SDK y Google APIs con las que vamos a trabajar:

Pulsamos Install Selected y al final tendremos instalado el SDK de android. En caso de ocurrir un error o algun tipo de advertencia referente a https: debemos ir a la opción Settings y marcamos el check button que dice Force https://... y aplicamos los cambios.

Con esto estaría el SDK instalado, con todas sus herramientas a nuestra disposición,

Instalar plugin de Android para Netbeans

El plugin para netbeans se a desarrollado a traves del proyecto nbandroid y resulta muy util para las personas que ya tienen el netbeans instalado y desean trabajar con Android. Solo es necesario seguir unos pocos pasos.

1.- Registrar la dirección del centro de actualizaciones


Ingresamos a Netbeans, al menu Tools-> Plugins. Luego seleccionamos la pestañaSettings,pulsamos Add y pegamos la URL.

2.- Seleccionamos la pestana Avaible Plugins y en search buscamos Android. Y seleccionamosInstall.
Apareceran varias ventanas en las cuales pulsaremos Next. Aceptamos los términos de la licencia e ignoramos cualquier advertencia que se nos presente durante la instalación.

3.- Listo!!! ya tenemos el plugin, ahora solo es necesario descargar el SDK de android para comenzar a trabajar, esto lo veremos en el siguiente post.


lunes, 4 de enero de 2010

E o som que me leva

Para las personas que practicamos capoeira aqui va una nueva cancion que esta circulando en el Grupo de Capoeira Candeias de Quito.

E o som que me leva
interpretada por mestre barrao.


E o toque do berimbau
E o som que me leva
Morena nao fica triste
Por favor me espera(coro)

Eu vou girar pelo mundo
Capoeira e o meu viver
Em cada lugar que eu passar
Vou me lembrar de voce
Manda arrumar minha mala
Berimbau ja me chamou
Se a capoeira e o meu destino
Voce e meu grande amor

E o toque do berimbau
E o som que me leva
Morena nao fica triste
Por favor me espera(coro)

O toque da minha viola
Faz de voce me lembrar
Voce ia pra ribeira
So para me ver jogar
Nessa vida de capoeira
Muitas eu ja conheci
Mas morena so voce
Sobe me fazer feliz

E o toque do berimbau
E o som que me leva
Morena nao fica triste
Por favor me espera(coro)

Do outro lado do mundo
Construimos nosso ninho
As vezes eu fica triste
Mas voce nunca me deixou sozinho
Lhe dedico essa cancao
Cantando dessa maneira
Para mim voce e a grande
Verdadeira mulher de um capoeira

E o toque do berimbau
E o som que me leva
Morena nao fica triste
Por favor me espera(coro)

domingo, 3 de enero de 2010

Conociendo la Capoeira...

Dejemos a un lado las entradas acerca de internet web y esas cosas para que conozcan un poco del deporte que yo practico, la capoeira.

La Capoeira es una arte marcial desarrollada por los esclavos africanos en brasil, ellos no tenían permitido el practicar un arte marcial, por lo que el desarrollo y la práctica del arte tuvo que ser disfrazada. El disfraz natural fue como una danza, siendo que en África la danza y la música son las formas más populares de expresión. Así que desarrollaron una forma de practicar diferentes técnicas ofensivas y defensivas con música, cantos y baile.

“Es una arte interdisciplinaria que incluye varios aspectos culturales, marciales, deportivos y artísticos. Es un movimiento de conciencia atlética que podría verse, en parte como una danza, un diálogo rítmico con una pareja al compás de la música de los instrumentos tradicionales, y en parte como una pelea, una estrategia contenida de movimientos de ataque y defensa"

Si bien esto parecía ser una danza inofensiva, los “capoeristas” estaban practicando mortales técnicas de pelea. Esto debía ser disfrazado y este engaño y malicia es parte de lo que separa a la Capoeira de las demás artes marciales. Muchas de las patadas y algunos movimientos hechos en Capoeira pueden ser vistos en otras artes,pero a diferencia de otras, muchos movimientos suelen ser falsos y engañosos para atacar al rival. A pesar de esto un movimiento cierto es hecho con gracia y estilo y puede ser muy peligroso.

Normalmente no se dan golpes pero se fingen o muestran, aunque depende directamente del ritmo que lleve la música. En algunos ritmos los golpes se marcan pero no se completan mientras que en otros los jugadores tienen más libertad para golpearse.




Desde siempre, la capoeira se practica en rodas, que son por así decirlo "luchas amistosas sin contacto", aunque no siempre ha de ser así. Los practicantes forman un círculo cerrado o abierto formado por capoeiristas y músicos, que llevan el ritmo e intensidad del "juego" (jogo) donde se muestra la maña ("mandinga"). En roda hay 2 capoeristas en un momento determinado: dos capoeiristas jugando y otro en espera de sustituir a uno de estos dos anteriores. Durante la roda, los capoeiristas que observan el juego se limitan a cantar y tocar las palmas para dar mayor energía a la misma.

Puede ser vista, como un arte de defensa personal, pero resulta inseparable de los aspectos dancísticos y musicales que desde su nacimiento la acompañan. Las letras de sus canciones, música y lenguaje corporal reflejan sus raíces culturales, históricas y filosóficas. Por todo esto, la capoeira es una expresión de vida, de una tradición y un folclor que reconocen como su valor más alto la libertad.

Asi funciona el internet...


Buscando por ahí encontré un vídeo muy interesante en el cual se muestra de manera didáctica como funciona y todo lo que sucede en el internet desde que hacemos click en una pagina web hasta cuando se muestra el contenido de la pagina.







Algunos Conceptos Web...

A continuación, se comentan ciertos conceptos relacionados con el diseño y/o desarrollo web.
Página web:

Documento realizado en HTML y que es parte de un sitio Web. Aparte del HTML se pueden utilizar otros lenguajes complementarios como PHP, ASP, Javascript...

Sitio web:

Página principal y sus otras páginas, gráficos, documentos, multimedia y otros archivos asociados que se almacenan en un servidor Web o en el disco duro de un equipo.

HTML:

(Lenguaje de marcado de hipertexto) Lenguaje estándar de marcas empleado para documentos del World Wide Web.




Sistema de gestión de contenidos (CMS)

El gestor de contenidos es una aplicación utilizada para crear, editar, gestionar y publicar contenido digital en una variedad de formatos. El gestor de contenidos genera páginas dinámicas interactuando con el servidor para generar la página web realizada por una petición del usuario.

Consiste en una interfaz que controla una o varias bases de datos donde se aloja el contenido del sitio. El sistema permite manejar de manera independiente el contenido y el diseño permitiendo modificar el contenido y darle en cualquier momento un diseño distinto al sitio sin tener que darle formato al contenido de nuevo, además de permitir la fácil y controlada publicación en el sitio a varios editores.

Blog

Un Blog diminutivo de Web log o Weblog, es una publicación en la Web compuesta de varios artículos, normalmente breves y a veces de carácter personal. La diferencia más importante entre un blog y un sitio Web es que el blog está pensado para varios "postings" o artículos breves que se presentan en orden cronológico inverso (del más nuevo al más antiguo), y que se van agregando sin una agenda predeterminada. Son fáciles de utilizar, no hay que saber programar ni codificar para poder utilizarlos

Portal Web

Portal es un término, sinónimo de puente, para referirse a un Sitio Web que pretende servir como un sitio principal de partida para las personas que se conectan al World Wide Web. La idea es emplear estos portales para localizar la información y los sitios que nos interesan y de ahí comenzar nuestra actividad en Internet, entre los que suelen encontrarse buscadores, foros, documentos, aplicaciones, compra electrónica, etc. Un ejemplo de portal web son Yahoo, iGoogle, AOL etc.

Android

Android en un Sistema Operativo además de una plataforma de Software basada en el núcleo de Linux. Fue diseñada en un principio para dispositivos móviles, Android permite controlar dispositivos por medio de bibliotecas desarrolladas o adaptados por Google mediante el lenguaje de programación Java. Esta plataforma permite el desarrollo de aplicaciones por terceros los cuales deben escribir código gestionado en el lenguaje de programación Java a través de la SDK que proporciona Google. Una alternativa es el uso de la NDK (Native Development Kit) de Google para hacer el desarrollo en el C en código nativo.

Mashup

Un mashup consiste en una aplicación web que utiliza recursos de más de una fuente para crear un servicio completo. Es decir, un mashup es una aplicación web que permite incrustar contenidos de otras páginas web dentro de las nuestras; como mapas (de google Maps), imágenes, video, noticias, ventas, etc. Con la finalidad de que nuestra web se actualice dependiendo de la información de nuestro mashup. El contenido de un mashup normalmente proviene de sitios web de terceros a través de una interfaz pública o usando un API.

Los defensores e impulsores de las aplicaciones Web 2.0 afirman que los mashups son un ejemplo de este nuevo movimiento en el que los usuarios crean, participan e interactúan activamente.

BIBLIOGRAFÍA:

· http://es.wikipedia.org/wiki/Blogs

· http://www.mariosalexandrou.com/definition/content-management-system.asp

· http://en.wikipedia.org/wiki/Web_portal

· http://es.wikipedia.org/wiki/Mashup_(aplicación_web_híbrida)