miércoles, 28 de mayo de 2014

Nos hemos mudado

Esta será la última entrada al blog, nos hemos mudado, la nueva dirección es http://www.asociacionaepi.es/blog-aepi/

Agradecer a todos aquellos que nos hayan leído alguna vez desde que creamos este blog, esperamos que los artículos os hayan ayudado en algo o por lo menos que os hayan resultado interesantes.

Muchas gracias!!
 

viernes, 9 de mayo de 2014

Como usar Maven en una aplicación Web

En nuestro articulo de hoy crearemos una aplicación Web simple con Apache Maven, la cual puede ser gestionada por IDEs tales como Eclipse o Netbeans.

Requisitos

  • Java JDK 6 o superior
  • Apache Maven 2 o superior
  • Eclipse versión JEE
Pasos a seguir:
  1. Abrimos la consola de Msdos o Limix y creamos un proyecto con Maven utilizando el arquetipo adecuadomaven-archetype-webapp
    mvn archetype:generate -DgroupId=com.sobrejava.ejemplo.web -DartifactId=ejemplo-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
    
    Ahora tenemos una estructura similar a la siguiente
  2. Ahora agregamos las dependencias necesarias para una aplicación Web, en este ejemplo utilizaremos java-web-6, la cual nos brinda lo necesario para poder iniciarnos en el desarrollo de ServletsJSP, etc. Para ello editamos el archivo pom.xml de la siguiente manera
    Código del archivo pom.xml
    <project xmlns="http://maven.apache.org/POM/4.0.0" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.sobrejava.ejemplo.web</groupId>
      <artifactId>ejemplo-web</artifactId>
      <packaging>war</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>ejemplo-web Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <!-- agregamos el API para JEE6 -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
      </dependencies>
      <build>
        <finalName>ejemplo-web</finalName>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <source>1.6</source>
              <target>1.6</target>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    
  3. Editamos el archivo src/main/webapp/web.xml con el descriptor 3.0
    Código del archivo web.xml
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
              version="3.0">
    
        <display-name>Ejemplo-Web</display-name>
    
    </web-app> 
    
    Algunos IDEs como Eclipse utilizan el descriptor para definir la versión Web de la aplicación.
  4. Finalmente para descargar las dependencias (si es necesario) y asegurarnos que todo esté bien, para ello vamos al directorio de la aplicación y usamos mvn compile

Editar Aplicación con Eclipse IDE

  1. En Eclipse (JEE versión), Seleccionamos un Workspace adecuado y vamos a Menú File -> Import -> Maven Projects -> Existing Maven Project...
  2. En la pantalla de Import Maven Projects seleccionamos el directorio donde se encuentra el proyecto ejemplo-web y seleccionamos Finish
  3. Finalmente tenemos el proyecto configurado con Eclipse WTP .
Espero que este artículo os pueda servir de ayuda en vuestra vida profesional y estad atentos a nuestros próximos artículos, gracias!!!!


jueves, 24 de abril de 2014

Julia, un lenguaje de programación ¿con lo mejor de todos los mundos?

Según la Wikipedia, Julia es un lenguaje de programación dinámico, de alto nivel y alto rendimiento para cálculos científicos y técnicos con una sintaxis similar a la de otros entornos de computación similares. Dispone de un compilador avanzado, mecanismos para la ejecución en paralelo y una extensa biblioteca de funciones matemáticas. La biblioteca, desarrollada fundamentalmente en Julia, también contiene código desarrollado en C o Fortran.
El lenguaje fue creado por Stefan Karpinski, estudiante graduado de la Universidad de California, que estaba involucrado en una herramienta simulación de redes que requería el uso de varios lenguajes de programación diferentes. Curiosamente, ninguno de los lenguajes usados podía hacer toda la tarea, todo el proceso. Por ello, Karpinski, junto con su compañero de universidad Viral Shah y Jeff Bezanson del MIT, decidieron resolverlo diseñando un nuevo lenguaje que fuera compatible con prácticamente cualquier tarea. La meta de Karpinski y su equipo es construir un lenguaje único que haga todo bien.
En este lenguaje, bautizado como Julia, las bibliotecas están escritas en Julia y se integra lo mejor del código de C y Fortran en los siguientes rubros: álgebra lineal, generación de números al azar, procesamiento de señales y procesamiento de strings (cadenas de caracteres). Además, la comunidad de desarrolladores de Julia ha contribuido con una serie de paquetes externos en muy poco tiempo. IJulia es una colaboración de IPython y las comunidades de Julia, lo cual le da un navegador con una interfaz gráfica basada en Julia,
Los programas de Julias se organizan definiendo funciones y sobrecargando las mismas para diferentes combinaciones de tipos de argumentos, los cuales pueden ser definidos por el usuario.
Un resumen de las características de Julias son:
Posibilidad de definir el comportamiento de una función con una combinación de tipos de argumentos
Sistema dinámico de tipos: tipos para documentar, optimizar y ejecutar rutinas. Buen desempeño, el cual se aproxima (estadísticamente) a lenguajes como C manejador de paquetes interconstruido. Macros como en LISP y otras metafacilidades de programación. Se pueden llamar funciones de Python vía llamadas a PyCall
Llamada a funciones de C directamente. No se necesita nada más. Capacidades poderosas de Shell para manejar otros procesos. Diseñado para computación distribuida y en paralelo.
Tipos definidos por el usuario que son rápidos y compactos como si fuesen interconstruidos.
Generación automática de código especializado, eficiente, de acuerdo al tipo de argumentos que de pasan
Conversiones elegante y extensibles así como promoción de tipos numéricos y otros tipos
Soporte para Unicode
Licencia MIT : libre y de código abierto
La cuestión es si esta idea tendrá éxito. Los programadores tienden a irse a lenguajes más que probados, amén de tener un soporte generalizado. Desde luego que en esta selva de lenguajes de programación, hay para todos, pero falta ver si Julia puede madurar y convencer a los programadores de sus bondades.



miércoles, 9 de abril de 2014

Los diferentes modelos de negocio de una API y sus desarrolladores

Quizás aún no se haya llegado al punto de madurez suficiente para considerar las APIs monetizables como una fuente más de ingresos. Muchas empresas ofrecen acceso a sus APIs públicas sin apenas restricciones y sin ningún coste a los desarrolladores, sólo se fijan limitaciones por número de peticiones de uso, usuarios, tokens, etc…
Aunque actualmente es mínimo, existen distintos modelos de negocio en el ecosistema de las APIs entre desarrolladores y empresas que presentan un panorama bastante interesante.
  • API abierta/pública. En este nivel las empresas ofrecen, por regla general, una API abierta con métodos limitados en comparación a los que se usan internamente. Los desarrolladores pueden crear cualquier aplicación usando este API cumpliendo los acuerdos de licencia y uso. No se espera una fuente de ingresos, sino que sirva para captar tráfico a través de las aplicaciones y webs creadas entorno al API.
  • Asociados (Associate). Cierto desarrolladores que han demostrado un uso más avanzado del API tienen acceso a funcionalidades extras. El contacto entre los desarrolladores que usan el API y la empresa es más directo y reciben un soporte personalizado. Además de seguir un proceso de aprobación, la empresa puede promocionar las aplicaciones creadas en torno al API. Incluso, certificarlas de alguna forma con una marca que demuestre a los usuarios que siguen unas pautas de calidad.
  • Partners. En este caso, hablamos de desarrolladores que están usando el API de una forma exitosa en la que obtienen beneficios por su cuenta y aportar valor a la empresa. Las necesidades de uso del API son elevadas por lo que requieren de cuotas especiales, lo que implica el pago por uso y la reserva de recursos que provee el API para garantizar su estabilidad. La relación entre la empresa y el desarrollador es más cercana a la de socios estratégicos.
  • Incubadoras de aplicaciones. En este caso, las empresas proveedoras del API ofrecen recursos adicionales a los desarrolladores, además de un cierto mentoring a cambio de la participación en el futuro negocio. Es una apuesta, en muchos casos, a largo plazo y en mercados en los que se juega a experimentar en busca de nuevas oportunidades.
Sin duda, nos espera un vibrante futuro entorno al uso de APIs por los desarrolladores, en el que ya no sólo se jueguen con ellas sino que puedan construirse negocios estables, las startups de la próxima generación.

Si quieres estar al día de nuestras novedades visita nuestra Web www.asociacionaepi.es y siguenos en las redes sociales

miércoles, 2 de abril de 2014

Mozilla nos trae su nuevo lenguaje de programación llamado Rust



Rust es un nuevo lenguaje de programación multiparadigmático que está siendo desarrollado por Mozilla. Según se puede leer en su sitio oficial, el objetivo de este nuevo lenguaje es diseñar e implementar un lenguaje de sistemas seguro, concurrente, práctico y estático.

El desarrollo del lenguaje, fue empezado en 2006 por Graydon Hoare, y en 2009, la fundación Mozilla, se involucró en el proyecto. Además de Hoare, hay otros desarrolladores detrás como son el miembro del comité Ecma, Dave Herman, y el CTO de Mozilla y creador de JavaScript, Brendan Eich.

Por ahora se conoce poco sobre el código, pero se puede ver algo de sintaxis en la FAQ de Rust. Os pongo un trozo de código.


iter pairs() -> tup(int,int) {
let int i = 0;
let int j = 0;
while (i <10) {
put tup(i, j);
i += 1;
j += i;
}
}
fn main() {
let int i = 10;
let int j = 0;
for each (tup(int,int) p in pairs()) {
log p._0;
log p._1;
check (p._0 + 10 == i);
i += 1;
j = p._1;
}
check(j == 45);
}

Las características que nos aportará este nuevo lenguaje, han sido resumidas por los desarrolladores de Mozilla.

Orientado a seguridad

Memoria de seguridad, para evitar bugs que sirvan como brechas de seguridad. Gestión automática de guardado.
Control de las modificaciones. Inmutables por defecto. El estado de mutabilidad no se comparte entre tareas.
Ejecución dinámica de seguridad: errores, registros, etc.
Capacidad para definir invariantes complejas

Orientado a la concurrencia

Control de la memoria explícita. Control de localización y de etiquetas.
Tareas de peso muy ligero. Facilidad para convertir miles en millones.
Stack iterators
Compilación nativa y estática. Emite archivos ELF / PE / Mach-o
Una interfaz simple y directa para C.

Orientado a la práctica

Multiparadigmático, totalmente funcional, concurrente, OO
Funciones de primera clase con vínculos
Multiplataforma. Desarrollado para Windows, Linux, OSX
Cadenas UTF8
Funciona con cadenas nativas existentes. GDB, Balgrind, Shark, etc
Permite romper normas en la práctica, si es explícito dónde y cómo

Como se ha comentado, es un proyecto aún en desarrollo, por lo que no podemos ofrecer mucha más información, solo esperar a que por parte de Mozilla vayan sacando más información al respecto.

miércoles, 26 de marzo de 2014

Hackaton solidario el dia 26 de abril en la Universidad Autonoma de Madrid

En nuestro artículo de hoy no voy a hablaros sobre lenguajes de programación o algún otro tecnicismo, hoy vengo a a hablaros sobre el hackaton solidario que celebraremos el día 26 de abril en la Universidad Autónoma de Madrid con el objetivo de construir la plataforma de emergencias del futuro y salvar vidas.

¿En que consiste?
La plataforma Emertech es un proyecto solidario que se está llevando en colaboración con AEPI Telefónica, UAM, Cruz Roja y Zerintia en el que se pretende salvar miles de vidas con la ayuda de las herramientas tecnológicas más avanzadas como Drones de reconocimiento, Google Glass y otros dispositivos Wearable. La plataforma de desarrollará de forma libre, de manera que pueda ser utilizada por cualquier entidad.
En el Hackaton que se celebrará el 26 de Abril de 2014, se llevará el desarrollo de toda esta plataforma, teniendo acceso a toda la tecnología que dará soporte al proyecto para interaccionar con ella y llevar a cabo los desarrollos que surjan durante el evento.

¿Cómo funciona?

- El Hackaton tendrá una capacidad total de 50 participantes
- La organización donará 10 € por cada participante que forme parte del evento.
- Los equipos estarán formados por grupos de 5 personas
- Para el completo desarrollo de la plataforma se formarán 10 bloques de desarrollo diferentes
- Cada equipo, a la hora de inscribirse, elegirá el bloque que desea desarrollar, asignando el bloque por orden de inscripción.
- No es necesario formar un equipo entero, los desarrolladores que deseen participar y no tengan equipo, se les asignará el mismo día de la inscripción
- Habrá varios mentores especializados en la tecnología a desarrollar: Google Glass, Drones y Wearables 
- Los desarrollos acabarán a las 19:30. Cada equipo dispondrá de 5 minutos para presentar su bloque al jurado
- El equipo ganador podrá donar en su nombre 250 € a la organización sin ánimo de lucro que desee.

Tenéis toda la información sobre como inscribiros y demás en la pagina web http://www.hackathonsolidario.com/

¡ Apúntate y se uno de los 50 elegidos para la gloria! ¡Cambiaras el mundo!

miércoles, 19 de marzo de 2014

Genymotion, el emulador más rápido de Android

Genymotion es un emulador de Android que aprovecha la arquitectura x86 para ejecutar de forma fluida y rápida distintos dispositivos Android. Olvidando la lentitud del emulador nativo de Android podemos ejecutar todo tipo de aplicaciones y juegos en nuestro Windows, Mac o Linux.
Uno de los principales usos de Genymotion es facilitar el desarrollo de aplicaciones Android. Casi más de 900.000 usuarios registrados usan sus maquinas virtuales para crear aplicaciones usando Eclipse o intelliJ. Se integran perfectamente con el adb, línea de comandos y los diferentes entorno de desarrollo. Podemos lanzar en apenas un par de segundos las aplicaciones conectadas al ADT desde el IDE para testearla. Mucho tiempo ahorrado.
Genymotion está basado en el uso de máquinas virtuales x86 optimizadas para correr sobre Virtualbox. A muchos les sonarán proyectos similares, pero la gente de Genymotion ha conseguido crear una interfaz simple capaz de soportar distintas funcionalidades accesibles a cualquier usuario, sin olvidar a los desarrolladores (su principal target y modelo de negocio).
Al descargar Genymotion podemos instalar, en apenas un par de clicks, cualquiera de las máquinas virtuales que emulan dispositivos como Nexus 4, Nexus 5, Nexus 7, Galaxy Nexus, HTC One, Moto X, Galaxy S4, Xperia Z, etc… para distintas configuraciones de Android 2.3, 4.1, 4.2, 4.3 y 4.4 , además de diferentes resoluciones de pantalla. El número de máquinass va aumentando según se van creando configuraciones personalizadas.
(Ver video)
Entre todas de las características que aporta el emulador de Genymotion se encuentran el uso de nuestra conexión a internet, la simulación ubicaciones GPS con el widgets que facilita la búsqueda y el posicionamiento sobre un mapa, simulación de la cámara, estado de la batería, rotación del dispositivo, etc.. También ofrecen cuentas premium que incluyen el control remoto táctil desde otro dispositivo, Pixel perfect para diseñar tal cual se vería en el dispositivo o la grabación de screencast desde la interfaz.
Por problemas de licencia, Genymotion no incluyen por defecto la aplicaciones de Google, aunque está trabajando para conseguir un acuerdo de Google. Aunque no hay problema, ya que Genymotion permite instalar cualquier apk o zip arrastrando sobre el emulador el archivo. Así que podemos echar un vistazo a los zip de Google Apps de rooztwiki e instalar el compatible con nuestro dispositivo. Perfecto.



martes, 11 de marzo de 2014

¿Cómo es Azure, la nueva estrella dentro de Microsoft?


El artículo de AEPI de hoy lo dedicamos a Azure. Esta plataforma es probablemente el producto más importante de Microsoft en la última década. Parte del éxito ha sido el enfoque casi obsesivo de que todo estuviera en la nube: servicios para desarrolladores, productos para usuarios y, sorprendentemente, su propia arquitectura interna. Meterse en un mercado saturado (en cuota) por actores importantes como Amazon o Google es complicado pero, como ha demostrado, hay muchos servicios aún por explotar con un tremendo potencial: la computación en la nube móvil, por ejemplo.

Microsoft se lanzó para subirse casi apurando el último tren que grandes corporaciones como IBM o Oracle han perdido definitivamente en la nube, al menos sin alianzas estratégicas. ¿Lo podría haber hecho antes? Quizás, sí, pero ha sabido aprovechar lo que tenia y girar completamente la compañía hacia los servicios en la nube. Azure es la nueva estrella dentro de Microsoft.
Microsoft se define actualmente como una empresa de servicios y dispositivos, algo que se aleja del planteamiento que siempre ha tenido y le hizo líder del sector. No lo decimos nosotros, sino que ya en la salida de Ballmer de la empresa se insistió bastante en el tema. La elección del nuevo CEO, Satya Nadella, hasta ahora presidente de la división de Servidores y Herramientas de Negocio lo deja más claro.
Bajo el mandato de Satya Nadella dicha división con Azure se convirtió en clave tanto en el desarrollo de negocio como en uno de los pilares más sólidos de la rentabilidad presente y futura de la compañía. ¿Abandonar su enfoque en productos de consumo y centrarse en servicios para empresas?
¿Qué supone Azure para Microsoft?
Microsoft ha apostado fuertemente en los servicios en la nube de Azure, incluida su infraestructura interna. Por este motivo, los esfuerzos de Microsoft le han llevado a desplegar todo tipo de posibilidad, tanto IaaS, PaaS o SaaS. Lo que lo convierte en un potente competidor en el mercado de los servicios en la nube en el más amplio sentido: potenciales desarrolladores de backend hasta usuario que utilizan sus aplicaciones de forma totalmente online.
Una gran parte de su infraestructura interna se está migrado a Azure. Por ejemplo, Skype ya funciona únicamente con Azure, SkyDrive (renombrado a OneDrive) está en proceso de migración de todo el espacio de almacenamiento, parte de la infraestructura online de Xbox Live y Xbox One también se basa en Azure (incluyendo todo el juego online de Halo 4).
Aunque Office 365 no es estrictamente un producto SaaS (Software como Servicio), incluye servicios en la nube como Office Web Apps o Enchange Online que vende bajo un sistema de suscripción. Además, pasamos de la nube centrada a desarrolladores un conjunto completo de soluciones para usuarios.
La evolución de Azure y su mejora continua (incluyendo productos fuera del ecosistema Microsoft)
Microsoft hizo una primera aproximación a lo que conocemos ahora mismo como Azure en su conferencia de desarrolladores, PDC 2008 (el futuro Build). Era la primera incursión en el cloud computing cuando Amazon ya estaban más o menos asentada con dos servicios pilares en sus arquitectura Amazon S3 para almacenamiento y Amazon EC2 para maquinas virtuales.
En enero de 2010 se abrió para todos los desarrolladores centrándose en un modelo de Plataforma como servicio (PaaS) con una oferta muy limitada. Mensualmente ha ido ampliando servicios y diversidad, con la mirada puesta en sus competidores.
Ahora ya contamos con una oferta madura que incluye tanto Paas, como servicios IaaS (infraestructura como servicio) o enfocada para usuarios menos developers, el conocido SaaS (Software como servicio) que muchos ignora como servicio en la nube pero cada vez es más habitual.
Repasando brevemente los productos que ofrece
  • IaaS: servicios orientados a que el usuario tenga el control total de la infraestructura virtual. Aquí incluimos todo lo relacionado con servidores (maquinas virtuales) donde escoger sistema operativo (Windows Server, Linux, Oracle, Open Logic, etc..), número de núcleos de procesamiento, tamaño de la RAM o discos virtuales. Azure cuenta con una larga lista de maquinas virtuales ya creadas en la galería, tanto servidores de Sharepoint, de desarrollo con Visual Studio y la mayoría de server Entreprise de la distribuciones de Linux en Ubunti, CentOS u Oracle. Como véis no todo es Windows, muy buen punto a su favor.
  • PaaS: en este nivel nos encontramos una plataforma ya creada que Azure gestiona por nosotros, escalando y desplegando según las necesidades de nuestras aplicaciones. Así, ojo, nos encontramos con sorpresa como que podemos instalar un Wordpress en Azure o cualquier CMS (Drupal, Joomla, etc..) y frameworks (Django, CakePHP, etc..). Choca con la idea esperada de un ecosistema cerrado de Microsoft basado en .Net, ASP o SQL Server. Alejado de la realidad
  • SaaS: servicios donde la infraestructura y la plataforma están ocultas bajo una capa de abstracción. El cliente consume directamente las aplicaciones en formato servicios. Aquí nos encontramos una tremenda base de datos en la nube SQL Azure, servicios de Big Data como Hadoop o suyo propio como HDInsight integrado con LINQ y Hive, Biztalk como servicio de comunicaciones, servicios de Directorio Activo o los Service Bus para difundir material audiovisual.
Atrayendo desarrolladores fuera del habitual ecosistema Microsoft
Los desarrolladores de tecnologías Microsoft tienen claro que el futuro está en la nube, todas las herramientas de programación están cada vez más enfocadas a desplegar servicios y aplicaciones en Azure. Y algo sorprendente para los programadores anti-Microsoft que empiezan a usar esos servicios como backend de sus aplicaciones, a pesar de no picar ni una línea de código con lenguajes o frameworks de Microsoft.
Uno de los aciertos de la plataforma Azure ha sido acercarse a desarrolladores alejados del ecosistema Microsoft. El grupo más numeroso actualmente con poder en cuanto a la demanda de servicios y generación de dinero son los programadores de aplicaciones móviles. Buscan un backend para sus aplicaciones con un sólido MBaaS, el término cada vez más de moda, Mobile Backend como Servicio.
Un programador de apps móviles está enfocado en el desarrollo de su aplicación móvil, no en crear un completo backend para sustentarla. No tienen ni el conocimiento ni el tiempo para implementarlo. La nube de Microsoft, Azure, ha sabido ofrecer justo lo que ellos necesitaban con una interfaz clara y concisa para ser ágiles en desplegar los componente necesarios.
En movilidad han dispuesto un escenario completo: llegan a cualquier usuario sin importar la plataforma (Windows, Android o iOS). Los servicios más demandados son las notificaciones Push, en ese sentido el más fuerte es Parse (propiedad, ojo, de Facebook), pero Azure ha sabido ofrecer justo lo necesario y hacerlo bonito. También ha sido abierta a la hora de convertir aplicaciones que no suyas en sociales usando redes de terceros como Facebook, Google o Twitter. Y, por último, conectar los sistemas locales de las empresas como SAP, Oracle y Active Directory con los móviles, tarea nada sencilla que sólo un gigante empresarial como Microsoft puede llevar a cabo sin marear los gerentes de tecnología.
Amazon es un rival duro
La evolución de Azure en el mercado de los proveedores en la nube ha sido mejor de lo esperado.Según el informe que consultemos le encontramos en el segundo o tercer puesto, siempre detrás de Amazon AWS. El puesto de liderato que siempre ha ocupado Microsoft es más modesto en este caso, aún así planta cara con una infraestructura en la nube sólida que a otros actores importantes, no sólo el tema de la nube sino empresarial, como es Google (no demasiado maduro) o IBM (el clásico que ha perdido fuelle en el negocio Entreprise).
El gran rival a batir es Amazon, aunque juega en muchas ligas con innumerables servicios. Azure está lejos de tener un stack tan completo, pero aun así mantiene el tradicional negocio y licenciamiento que fuerza a migrar a las empresas a la nube para seguir funcionando. Ningún gerente se quiere meter en una reestructuración bestia de su arquitectura, pero Microsoft juega en su terreno así que tiene la carta de ofrecer un proyecto conservador pero translado en la nube. Perfecto.
El constante ajuste de precio por tiempo de procesamiento y procesamiento. Un mercado muy competitivo con un actor especialmente agresivo. Amazon ha forzado en continuas ocasiones una rebaja de los precios jugando con su siempre discutible política de bajos márgenes.
Por su parte Microsoft ha lanzado numerosas campañas de marketing comparando la relación de calidad-precio, sacando pecho de que más del 53% de las compañías de la lista Forbes 500 utilizan Windows Azure. El informe Nasuni juega a su favor con unos excelentes resultados de rendimiento, escalabilidad y estabilidad frente a Amazon S3 y EC2.
Puntos a tener en cuenta en el futuro
Debe enfocarse en su comunidad propia de desarrolladores. Aunque ha logrado atraer a programadores que estaban alejados del ecosistema Microsoft, Azure no ha penetrado totalmente entre la comunidad .Net existente, la cual ha visto desde hace tiempo alternativas en Amazon AWS. Son bienvenidos los nuevos desarrolladores pero los que apostaron desde el principio parecen relegados a ciudadanos de segunda.
Aunque es un servicio cómodo para el desarrollador le queda pendiente innovar centrando sus esfuerzos en convertirse en una plataforma de servicios (PaaS) más que como un proveedor de infraestructuras (IaaS), donde sigue alejado del líder. Anclado durante años en la venta de licencias ha firmado acuerdos estratégicos con socios como Oracle que pueden hacer funcionar sus productos licenciados en la nube de Azure, sólo aplicando el coste del servidor Windows Server VM necesario.

miércoles, 5 de marzo de 2014

DDMS (Dalvik Debug Monitor Service)

Siguiendo con la linea de articulos sobre Android y su entorno de desarrollo, las cuales os resumo aqui:




El DDMS (Dalvik Debug Monitor Service) es una utilidad de depuración integrada en Eclipse.


Accederemos a él desde la parte derecha de la botonera como una nueva perspectiva, aunque también se puede lanzar de forma independiente de Eclipse desde la carpeta donde tengamos instalado el SDK en la subcarpeta tools (ddms.bat)





Consta de cinco partes funcionales:

  • Manejo de Tareas (1): Veremos los emuladores y teléfonos que tengamos conectados y sus instancias.
  • Manejo de Archivos (2)
  • Interacción con el emulador (3)
  • Sistemas de Log (4)
  • Capturas de Pantalla (5)

Pestaña Threads

Desde esta pestaña podemos ver los procesos e hilos de ejecución de las instancias individuales del dispositivo o emulador. Para ello seleccionamos el proceso que queramos inspeccionar (1) y pulsamos el botón 'Update Threats'  (2)


Pestaña Heap

Sirve para ver la pila y las actualizaciones que se vayan haciendo en ella. Si lanzamos un proceso de recolección de basura podemos ver como cambia. Para ello con el proceso seleccionado (1), pulsamos el botón 'Update Heap' (2)



Detener un proceso

Para tal cometido no hay más que seleccionar el proceso y pulsar el botón 'Stop Process'
  

   
Depurar un proceso
Elegimos el proceso y pulsamos sobre el botón 'Debug'.


Hay que tener abierto el código fuente de alguna aplicación. Esta funcionalidad sólo esta disponible desde Eclipse, no pudiéndose llevar a cabo en la ejecución independiente del DDMS.



Pestaña File Explorer

Además de navegar por los archivos de nuestro emulador o dispositivo conectado, nos permite transferir archivos entre el dispositivo y nuestra máquina de desarrollo. Para recibir archivos desde el dispositivo usaremos el botón 'Pull a file from the device' (1) y para mandarlos el botón 'Push a file onto the device' (2). Al pulsarlos se nos abrirá el explorador de archivos. También podemos añadir nevas carpetas con el botón 'New Folder' (3) o borrar archivos con el botón 'Delete the selection' (4) o pulsando la tecla [suprimir] en el teclado. En el caso del borrado NO nos pedirá confirmación, así que cuidadito...




Emulator Control

Nos permite interactuar con los emuladores enviando distintos tipos de eventos como llamadas, mensajes SMS o coordenadas de localización. Sólo funciona para emuladores, para teléfonos debe hacerse de forma real con su coste incluido.

  •  Simular un llamada de voz o un SMS
  • Escogemos el simulador (1)
  • Introducimos el número de teléfono desde el que llamamos (2)
  • Nos aseguramos de tener marcado 'voice'   (3)
  • Pulsamos 'Call'

Veremos como entra la llamada en nuestro emulador, desde el cual podremos contestar y colgar. También podemos colgar desde el 'Emulador Control' pulsando sobre el botón 'Hang Up'




Lo mismo haríamos para enviar un SMS, en vez de 'Voice' seleccionaríamos SMS y escribiríamos el mensaje y posteriormente pulsaríamos el botón 'Send'



Si en el SMS ponemos tildes o 'ñ' conoceremos el verdadero significado de la frase 'me crecen los enanos'.

También podemos ver los mensajes dando a la opción 'Menu' en el emulador y luego a 'Notifications'


Screen Capture 


Nos permite capturar un 'pantallazo' de nuestro emulador o dispositivo conectado (especialmente útil para este último caso).  Para ello una vez estemos sobre la pantalla que queremos capturar pulsaremos sobre el icono de 'Screen Capture' y podremos Rotar la imagen (1), guardarla en disco (2), hacer un copy para pegarla en un documento (3) y salir con el botón 'Done' (4).


Consola de Logs
  •  Pestaña LogCat
Es una salida del diagnóstico de funcionamiento de las aplicaciones. Permite filtrar los logs según su importancia y crear filtros de logs personalizados usando etiquetas.