Archivo de la categoría: Programación

Temas relacionados con la programación en general. Lenguajes .Net, java, python, C#, Visual Basic, C…

Desplegar aplicaciones android en un entorno real con Eclipse

De la misma manera que podemos utilizar un simulador virtual para desplegar nuestras aplicaciones android podemos instalarlas en un dispositivo real mediante un cable USB. Para ello debemos tener instalado el componente ‘Google USB Driver package’ en nuestro equipo. La mejor manera de hacerlo es a través de Android SDK Manager en la carpeta ‘Extras’. Nota: este driver es un controlador genérico para todos los móviles pero es posible que en algún dispositivo en concreto sea mejor utilizar el driver específico del modelo del fabricante.

Una vez instalado el componente debemos preparar nuestro terminal en modo depuración USB. La ubicación de esta opción depende de nuestro teléfono/tablet. Suele encontrarse en Ajustes -> Aplicaciones -> Desarrollo o en Ajustes -> Sistema -> Opciones de desarrollo.

Ya podemos visualizar el dispositivo desde Eclipse, para ello iremos a la opción de menú Windows -> Show View -> Devices.

Para desplegar la aplicación en el terminal real definiremos el Target del proyecto como manual y lo ejecutaremos pulsando botón derecho sobre él y seleccionaremos Run as -> Android Application. Seleccionaremos nuestro terminal y esperaremos a que se instale. Algunas veces es necesario configurar el móvil para que permita aplicaciones con orígnenes desconocidos (aplicaciones no instaladas desde Google Market).

Desplegar aplicaciones en el emulador de dispositivos Android con Eclipse

La SDK de android dispone de un emulador de dispositivos Android virtuales. Dentro de esta herramienta existen terminales virtuales con distintas características tanto como de hardware como de software. Esto nos permite probar la compatibilidad de nuestras aplicaciones para todo tipo de terminales android.

Desde Eclipse podemos acceder al administrador de dispositivos virtuales de android pulsando Window > Android Virtual Device Manager. La ventana abierta nos mostrará la lista de los disposivos virtuales android que tengamos instalados en nuestra directorio sdk de android. En esta lista nos indicará que API utiliza cada uno así como la plataforma, CPU (procesador que incorpora cada dispositivo), etc…

Si en esta lista no tenemos ninguno o queremos añadir uno nuevo pulsaremos sobre el botón New. Los campos a rellenar serán:

  • AVD Name: nombre que usaremos para identificar el dispositivo.
  • Device: permite seleccionar un terminal que se usará únicamente como interfaz.
  • Target: API/versión de Android que usará el terminal.
  • CPU/ABI: generalmente asociado a la target seleccionada anteriormente.
  • Keyboard: si está activado se mostrará un teclado para escribir.
  • Skin: activada permite enseñar una skin con controles de hardware.
  • Front Camera / Back Camera: si el desplegable está activado podremos seleccionar como funcionará la cámara. Tiene tres opciones:
    • None: no se utilizará la cámara
    • Emulated: cámara simulada.
    • Web Cam: si nuestro equipo dispone de webcam.
  • Memory Options: estableceremos las opciones de RAM y capacidad de la máquina virtual.
  • Internal Storage: capacidad de la memoria interna del terminal.
  • SD Card: capacidad de la tarjeta de memoria.
  • Emulation Options:
    • Snapshot: permite guardar el estado del dispositivo antes de cerrarlo. Es muy recomendable activarlo ya que mejora el rendimiento de trabajo sobre el emulador.

Para el despliegue de nuestro programa en un emulador lo que debermos hacer es pulsar con el botón derecho en la raíz del proyecto y seleccionar del menú la opción Run as > Run Configurations. En la ventana abierta aparecerán varias pestañas, seleccionamos la primera ‘Android’ y seleccionamos si no lo está nuestro proyecto con el botón de exploración. Posteriormente pasamos a la pestaña Target donde podremos seleccionar el dispositivo que se arrancará. También podemos hacer que nos pregunte con que configuración queremos simular (Always prompt to pick device) o dejar que automáticamente inicie el dispositivo con el recomendado para nuestra proyecto.

La SDK de android dispone de un emulador de dispositivos virtuales. Dentro de esta herramienta existen terminales virtuales con distintas características tanto como de hardware como de software. Esto nos permite probar la compatibilidad de nuestras aplicaciones para todo tipo de terminales android.

Desde Eclipse podemos acceder al administrador de dispositivos virtuales de android pulsando Window > Android Virtual Device Manager. La ventana abierta nos mostrará la lista de los disposivos virtuales android que tengamos instalados en nuestra directorio sdk de android. En esta lista nos indicará que API utiliza cada uno así como la plataforma, CPU (procesador que incorpora cada dispositivo), etc…

Si en esta lista no tenemos ninguno o queremos añadir uno nuevo pulsaremos sobre el botón New. Los campos a rellenar serán:

  • AVD Name: nombre que usaremos para identificar el dispositivo.
  • Device: permite seleccionar un terminal que se usará únicamente como interfaz.
  • Target: API/versión de Android que usará el terminal.
  • CPU/ABI: generalmente asociado a la target seleccionada anteriormente.
  • Keyboard: si está activado se mostrará un teclado para escribir.
  • Skin: activada permite enseñar una skin con controles de hardware.
  • Front Camera / Back Camera: si el desplegable está activado podremos seleccionar como funcionará la cámara. Tiene tres opciones:
    • None: no se utilizará la cámara
    • Emulated: cámara simulada.
    • Web Cam: si nuestro equipo dispone de webcam.
  • Memory Options: estableceremos las opciones de RAM y capacidad de la máquina virtual.
  • Internal Storage: capacidad de la memoria interna del terminal.
  • SD Card: capacidad de la tarjeta de memoria.
  • Emulation Options:
    • Snapshot: permite guardar el estado del dispositivo antes de cerrarlo. Es muy recomendable activarlo ya que mejora el rendimiento de trabajo sobre el emulador.

Para el despliegue de nuestro programa en un emulador lo que debermos hacer es pulsar con el botón derecho en la raíz del proyecto y seleccionar del menú la opción Run as > Run Configurations. En la ventana abierta aparecerán varias pestañas, seleccionamos la primera ‘Android’ y seleccionamos si no lo está nuestro proyecto con el botón de exploración. Posteriormente pasamos a la pestaña Target donde podremos seleccionar el dispositivo que se arrancará. También podemos hacer que nos pregunte con que configuración queremos simular (Always prompt to pick device) o dejar que automáticamente inicie el dispositivo con el recomendado para nuestra proyecto.

Obtener la url raíz en WordPress

A veces es necesario que el servidor calcule la url raíz donde está ubicado nuestro sitio WordPress.

Pongamos el siguiente ejemplo, tenemos en html lo siguiente:

<img src="./wp-content/themes/template/assets/img/ICON-twitter.png"  id="twitter"/>

Si este código html está dentro de un archivo que se utiliza en muchas partes de la web (mediante include o require) es posible que  la imagen no llegue a mostrarse.

Si pasa esto podemos asegurarnos de que el servidor se irá al directorio correcto poniendo la ruta absoluta mediante la variable $baseUrl.

<img src="<?php echo $baseUrl?>/wp-content/themes/template/assets/img/ICON-twitter.png"  id="twitter"/>

Con el anterior código nos aseguramos que irá a la ruta correcta a buscar nuestra imagen ya que $baseUrl contiene la url raíz en WordPress correcta donde está instalado.

Instalación y configuración entorno de desarrollo Android

Lo primero que debemos hacer antes de realizar nuestra primera aplicación Android es preparar el entorno de desarrollo. Una gran ventaja del desarrollo con Android es que se trabaja con tecnologías libres.

Yo he escogido la integración de la SDK de Google con el IDE de Eclipse ya que es la más ampliamente utilizada hoy en día. Existen otros IDEs como NetBeans que también pueden utilizarse ya que está así mismo integrado con la SDK de Google.

Antes de empezar es necesario disponer del siguiente software en su estación de trabajo:

  • Java Runtime Environment (JRE) y Java Development Kit de Oracle (JDK), tanto el JRE como el JDK son necesarios para arrancar el IDE Eclipse. Se pueden obtener en http://www.oracle.com/technetwork/java/javase/downloads/index.html
  • Eclipse: puede descargarse en su página www.eclipse.org. Existen muchas versiones de eclipse, ya que cada una está orientada para los lenguajes y entornos de programación que deseemos. En nuestro caso elegiremos Eclipse IDE for JAVA Developers. Nota: Eclipse no se instala simplemente se descomprime en el directorio que nosotros deseemos.

En este momento podremos probar a arrancar Eclipse, si no existe ningún problema es que hemos instalado correctamente los puntos anteriores.

Es en este punto donde necesitamos descargar el software de android disponible en la página: http://developer.android.com/sdk. Descomprimimos la última versión disponible en cualquier directorio de nuestro equipo.

Ahora deberemos ejecutar SDK Manager e instalar las APIs de Android que necesitemos para nuestros desarrollos. Particularmente yo he instalado todas las APIs superiores a 10 ya que conforman la mayor cuota del mercado. Aquí hay que tener paciencia ya que la instalación se hace online y depende de la velocidad de conexión a internet que disfrutemos.

El último paso será integrar en Eclipse un plugin que permite utilizar el SDK de Android. Para ello arrancaremos Eclipse y en el menú Help > Install New Software. Sobre la ventana de diálogo pulsaremos el botón Add e introducimos las siguiente URL: https://dl-ssl.google.com/android/eclipse/.

Cuando se carguen la lista de opciones a instalar seleccionamos el paquete Developer Tools al completo y pulsamos el botón siguiente para iniciar la descarga.

Una vez instalado hay que indicar a Eclipse donde se encuentran las API del SDK Manager. Para ello abrimos la pantalla de configuración de Android desde el menú Window > Preferences > Android de Eclipse. Ahí seleccionamos la carpeta de instalación del SDK de Android.

Ventajas de contratar un freelance

Últimamente está aumentando la contratación de freelance, autónomos, trabajadores por cuenta propia (o como quiera que lo queramos llamar) por parte de numerosas empresas. ¿Cuál es la razón de esta tendencia?. Existen multitud de beneficios que puede aportar un profesional de este tipo:

  • El perfil habitual de freelance es el de una persona experimentada que ha trabajado en varias industrias, agencias, sectores y/o empresas. De este modo puede ofrecer múltiples puntos de vista sobre un mismo problema, ideas nuevas o aportar conocimientos de su sector.
  • Con un profesional freelance la comunicación es directa. ¿que quiere esto decir?… pues muy sencillo: no necesita de intermediarios como gerentes o gestores que pueden estropear la comunicación. Por lo general es el propio trabajador freelance quien hace todas las tareas. Además un profesional freelance es, entre otras cosas, un comercial que puede asesorar de primera mano a sus clientes sobre como abordar los trabajos.
  • Costes menores: un trabajador freelance suele trabajar  desde casa. Todo esto repercute en los costes ya que un autónomo de este tipo no tiene gastos de local. Además si un empresario contrata a un  empleado tiene que hacer frente a una nómina con sus consiguientes gatos fiscales incluso cuando el trabajador no tenga carga de trabajo o esté  en períodos de formación. Todo esto se puede ahorrar contratando un freelance.
  • Recurrir a un freelance puntualmente para cubrir  ciertas necesidades de negocio que, aún siendo importantes, no son el  principal objetivo de negocio permite externalizar servicios. Esto permite una alta flexibilidad. Por ejemplo: sería absurdo contratar como empleado a un fontanero en  nómina cuando quieres realizar una reforma puntual en tu local o reparar cierta avería.
  • El freelance tiene rapidez de respuesta, no tener que rendir cuentas a nadie salvo a su cliente simplifica mucho las cosas. Él es su propio jefe de proyecto. El cliente de un autónomo solamente dispondrá de un teléfono para hablar sobre su proyecto.
  • El trabajador freelance está en general altamente motivado. Dedica casi el 100% de su tiempo a realizar un proyecto, son responsables con su trabajo y tiene un gran compromiso con el cliente.
  • Si una empresa apuesta por un profesional de este tipo durante largo tiempo éste podrá adquirir el conocimiento de negocio necesario para ofrecer trabajos de mayor calidad y en menor cantidad de tiempo.

No se puede cargar el archivo o ensamblado System.Web.Extensions

Error al compilar: No se puede cargar el archivo o ensamblado System.Web.Extensions Version=1.0.61025.0, Culture=neutral… El sistema no puede encontrar el archivo especificado.

Error system.web.extensions

La causa de este error es que no se puede encontrar la referencia al ensamblado indicado. Es muy posible que el equipo o servidor no tenga instalado ASP.NET AJAX 1.0.

Una vez instalado, las librerías quedarán directamente registradas en la GAC con lo que la siguiente compilación del proyecto dejará de existir el problema.

Para la instalación de ASP.NET AJAX 1.0 es necesario tener instalado:

Leer un documento XML como recurso en c#

Este post pretende explicar como leer un documento XML como recurso en c#

Disponer de un documento XML en los recursos de tu proyecto .Net es útil si no lo quieres hacer visible en el despliegue de la aplicación.

leer recurso xml visual studioPuedes cargar dicho documento mediante las siguientes líneas:


XmlDocument doc= new XmlDocument();
doc.LoadXml(Properties.Resources.XMLPreguntas);

Handler axd funciona correctamente en local pero no funciona en el servidor

Tengo una librería MSCaptcha que funciona correctamente en local pero al subir al servidor no funciona correctamente.

El problema surge de que IIS7 introdujo dos condiciones previas denominadas «integratedMode» y «classicMode«. Un handler que tiene una precondition «integratedMode« asociado a él sólo se puede cargar en un grupo de aplicaciones que tiene el «integratedMode« establecido en el conjunto de propiedades en la ApplicationPool. Handlers con la precondition «classicMode« sólo se cargarán en Grupos de aplicaciones que tienen la propiedad integratedMode establecida en falso.

En mi servidor local el pool de aplicaciones está en modo integrado con lo que la librería MSCaptcha funciona correctament pero en el servidor de producción está en modo clásico.

Para solucionarlo sin tener que cambiar configuraciones de servidor se puede establecer en el web.config una directiva para que el handler cargue con la configuración que decidamos.

En mi caso particular será:


<add name="MSCaptcha" verb="GET" path="CaptchaImage.axd" type="MSCaptcha.CaptchaImageHandler, MSCaptcha" preCondition="integratedMode"/>

De está forma he logrado que mi captcha se visualiza en el servidor.