Buscar este blog

lunes, 10 de noviembre de 2014

Configuración manual de vaadin en netbeans


martes, 21 de octubre de 2014

Frustración y desesperanza al aprender y adoptar tecnologías google


El aprendizaje y la adopción de nuevas tecnologías suele ser un dolor de cabeza para las personas autodidactas, sobre todo cuando la información está dispersa y la documentación generada por los desarrolladores de esas nuevas tecnologías ofrecen simples códigos de ejemplos que no satisfacen nuestras expectativas y que siempre vemos en los eventos de podcast o festivales de desarrolladores ser replicados, sin darle un valor agregado en la explicación del funcionamiento de mencionadas tecnologías.


Las tecnologías google no son la excepción, si bien cuenta con una básica documentación y ejemplos sencillos, estos no terminan de convencer cuando tenemos problemas con la API de desarrollo y no encontramos documentación que ayude a entenderla, menos aún buscar referentes en nuestro país u otros latinoamericanos donde solo apreciamos show y noticieros en Tecnologías de la información y comunicación, los cuales si bien informan sobre las nuevas tecnologías y que podrían hacer por nosotros, jamás muestran cómo aprender y adoptar estas nuevas tecnologías en nuestros desarrollos y negocios, en algunos casos porque solo saben el que pero no saben el como y en otros porque es su modelo de negocio generar la necesidad, para luego capturar clientes deseosos de aprender nuevas tecnologías.


Existen muchas personas y comunidades en los medios sociales que se manejan en la actualidad, pero si partimos de la premisa que la comunidad es el conjunto de personas, hace falta analizar el tipo de personas que conforman la comunidad, entonces que se puede esperar de una comunidad que solo comparte noticias de tecnología, donde sus miembros solo consumen información pero después de aprender no sintetizan y lo convierten en conocimiento para ser compartido con los demás.


La falta de cultura de recibir para luego dar nos pasa la factura en este ecosistema peruano, donde solo vive el show y la comunicacion de noticias de tecnologías, donde no existen referentes a quienes preguntarles, donde la comunidad es un mero canal de noticias y donde la gente solo espera que le resuelvan sus problemas y dudas, y si es un problema solo resuelven los problemas obvios.

Toda esta problemática del ecosistema peruano, donde el aprendizaje y la adopción de nuevas tecnologías lleva mucho tiempo y consigo altos costos, termina desesperando y haciendo sentir a las personas perdidas y sin rumbo, llegando al extremo de frustrarse y abandonar la idea de aprender algo nuevo.


martes, 30 de septiembre de 2014

Desarrolla aplicaciones Swing con Google Web Toolkit


Hoy estuve pensando en el sin numero de cursos de javascript y frameworks que facilitan el desarrollo en la web, tambien vi un poco de farandula de las comunidades con lo nuevo que va saliendo como Dart y Angular.js, no creo que la tecnología sea mala, solo que sin conocerla bien se atreven a compararla con una tecnología como GWT, la cual cuenta con una comunidad activa desde el 2006 y que sigue creciendo.

Cuando estaba en la universidad y desarrollaba con javascript, pensaba en lo facil que es java y el desarrollo de aplicaciones de escritorio con swing, codear todo desde cero sin realizar el mentadisimo "arrastrar y soltar" a los que nos tienen acostumbrados los docentes de las universidades(pero bueno eso es otro problema que no viene al caso), en ese entonces pensaba en porque no se inventaba swing para web y busque como convertir mi aplicación swing en web y en ese momento "San Google" al rescate me mostro los applets java que ya los conocia y el bendito Google Web Toolkit, este Kit de herramientas nació como un proyecto en Google que fue lanzado en el año 2006 y luego liberado como proyecto Open Source para que la comunidad lo acogiera y le de soporte.

Al conocer a Google Web Toolkit mis sueños se hicieron realidad, la idea de convertir mi aplicación swing en web era realidad en teoría, entonces empece a investigar que tenía de especial este kit de herramientas. Para empezar se desarrollaba en el lenguaje de mis amores "Java", la linea de aprendizaje era corta, pues es lo mismo que desarrollar tu aplicación Swing, pues es tan fácil como aprender a usar sus librerias, luego entendí que el objetivo era hacer una mejor web, donde el programador se olvide las particularidades de los navegadores y tu codigo se ejecute sin problemas en cualquier navegador, incluso en Internet Explorer 6.0 :) .

Todo esto influyo en mi, y me decidi crear un curso en español y con algunas palabras en ingles con bugs, pero lo importante es que no enseñaba ingles, sino Google Web Toolkit, si los conceptos e ideas se entendian entonces no comenten sobre el bugingles que escuchaban, esta claro que se leer y escribir en ingles pero no se hablarlo, pero también es claro que me gusta descubrir el funcionamiento de las tecnologías y no solo copiar y pegar código.

Quiero terminar compartiendo el curso de la plataforma e-learning que levante con Course Builder, la cual llame <Hola Mundo Dev/> donde espere seguir levantando cursos MOOC y espero  que ustedes puedan aprender y compartirlo con la comunidad.

"Entiende el código, mejoralo y copialo a tu app, sino sabes como funciona no lo uses"

Empieza con Google Web Toolkit en: https://holamundodev.appspot.com/preview


jueves, 25 de septiembre de 2014

Java Swing y Oracle


sábado, 30 de agosto de 2014

Googlenloqueciendo o pensando en Google


Google es una empresa que se caracteriza por ser innovadora, cada año realiza su famoso Google I/O, un evento al que toda persona interesada en tecnologías de la información le gustaría estar presente, en este evento google lanza lo último de sus investigaciones e invenciones, está claro que google es una empresa I + D, pero que hay detras del exito de google, muchos nos preguntamos esto a cada momento, tengo muchas teorías en las cuales siempre están presentes los siguientes factores: personas, comunidad, filosofia, software libre y open source.


Cada uno de los factores antes mencionados colabora con el éxito y el crecimiento exponencial de google, si hacemos un análisis podemos notar que google se preocupa por reclutar a personas para ser embajadores, casi al extremo de llegar a ser fanáticos religiosos a los cuales llamo “Googleistas”, ya que estos se encargan de reclutar a otros y por así decirlo crear su religión, refiriéndose a que google siempre tiene lo mejor, ciertamente he notado que estas personas tienen poder para convocar masas, sabe usar los servicios de google y vender los beneficios de sus productos y servicios, pero no entiende la esencia del producto o servicio, claro también esta la otra cara de la moneda y son aquellas personas que también les gusta tecnología google y entiende la esencia de los productos y servicios de google, pero no se cierra a otras opciones como son microsoft, amazon, dropbox, yahoo, etc.
El factor comunidad es quizá el más interesante, ya que se relaciona con todos los demás factores, una comunidad es un colectivo de personas con intereses comunes, donde vemos reflejada una filosofía basada en la ayuda mutua, trabajo colaborativo, compartir, aprendizaje continuo, enseñar, autodidacta e investigar. Google es el éxito de hoy gracias a su táctica de lanzar productos y servicios en fase MVP(Producto mínimo viable) para que la comunidad en general le brinde retroalimentación para mejorar su producto o servicio, ya sea comentando sobre la experiencia de usuario o informando de posibles errores y vulnerabilidades.


El Open Source y el software libre tienen una relación muy estrecha, google aprovecha la comunidad para desarrollar y tener una mejora continua de sus productos y servicios, por esta razón libera código de productos y servicios para que las comunidades open source y de software libre brinden soporte y lo desarrollen.


Si todo lo expuesto anteriormente otorga un éxito rotundo  a Google, porque es que aun en latinoamérica y  para ser más específico en Perú aún no tiene el mercado que uno espera, ya que sus productos y servicios los usan pocas empresas.


Si volvemos a los factores expuestos anteriormente, podría decir que si existen personas que usan tecnología google y la promueven, pero esas personas no son técnicamente las adecuadas para hablar de la esencia del producto o servicio, crear comunidad y replicar siempre los mismo ejemplos y a veces coger los publicados en las páginas de google developer no es la mejor forma de enseñar y ganar nombre en la comunidad, mostrar siempre lo mismo aburre.


Las personas referentes a las cuales google les otorga las insignias de Google Developer Expert y Manager Google developer Group intentan promover tecnologías google en Perú, pero cómo mencione antes hacer siempre lo mismo aburre, encima la cultura del peruano es ser un consumidor de información y poco aporta a la comunidad, claro “copia noticias”, pero eso a mi no me aporta conocimiento, solo me mantiene informado.


Google siempre tiene documentacion actualizada, la mayoría en ingles, pero el problema no es el idioma, porque para esto ya tenemos google traductor, el problema es la información a medias, si quieres combinar google con otras tecnologías tienes que sufrir, esto a raíz de la falta de información.

He escuchado en muchas comunidades hablar de aplicaciones en la nube y aplicaciones móviles híbridas y la verdad nunca comparten código que avale sus argumentos, es por esta razón que deseo estudiar, analizar y aplicar servicios y herramientas google para el desarrollo de aplicaciones en la nube, así cómo convertir estas en una aplicación híbrida.

jueves, 21 de agosto de 2014

Cloud computing - Prologo


Cloud computing es un término usado para describir servicios brindados por terceros para satisfacer necesidad corporativas o individuales, por dar algunos ejemplos: servicios de hosting, servicios de correo corporativo(google, microsoft, yahoo, etc), servicios de almacenamiento en la nube(DropBox, SkyDrive, Google Drive, etc), servicios de almacenamiento de imágenes(Flickr, Picasa, etc), cada día que pasa el mundo adopta esta forma de trabajo, porque le permite ser más productivo y no tiene que realizar grandes inversiones para implementar servicios que existen en la Nube(Internet).

El cloud computing permite a las pequeñas y medianas empresas estar  al mismo nivel que las grandes corporaciones, al adoptar tecnología de punta para sus servicios, además de ahorrar en costos de servidores propios, invertir en la seguridad física de los mismos, tener una área de sistemas(Es ideal tercerizar este servicio), olvidarse de la seguridad lógica(accesos sin permiso a servidores, ataques de denegación de servicios, etc), ahorrar gastos de luz y refrigeración de sala de servidores y muchas cosas más.

Quizá las empresas y las personas aún se resisten al cambio por miedo a confiarle su información a terceros, sentir que su información no es completamente suya, por no tenerlo en sus servidores propios, es normal sentir miedo a confiarle información a terceros y además no tener disponibilidad de mis servicios cuando lo requiera, pero justamente los proveedores de servicios en la nube en sus contratos deben comprometerse a no divulgar la información de sus clientes, mantener el servicio disponible cuando sea requerido, claro jamás sabremos si respeta dichos acuerdos, pero hay formas de mitigar el riesgo, ya sea clasificando la información para ser encriptada mediante algún algoritmo(AES,DES, etc) y si duda que en algún momento perderá su información, le aseguro que los proveedores también han pensado en eso, permitiendo al cliente hacer backups de su información.

Hasta ahora hemos hablado del cloud como servicios listos para ser implementados y usados, pero ahora existe servicios de cloud para crear nuestras aplicaciones en la nube, entre ellas tenemos a las empresa Google con su servicio Google App Engine y Amazon con su servicio Amazon Web Service entre otras cómo Heroku, OpenShift, estos servicios permiten a las empresas pensar en las aplicaciones que necesitan, ya que dichos servicios proporcionan la infraestructura física con sus servidores de alta gama y sus plataformas listas para ser acogidas por las empresas para soportar sus aplicaciones.

Los servicios de cloud cómo Google App Engine y Amazon Web Service nos muestran un mundo de posibilidades, pues nos facilita la creación de aplicaciones web, las cuales son escalables a otras tecnologías como es el software desktop y aplicaciones móviles, creando un web service ya sea mediante el protocolo SOAP o REST, es claro que ahora las empresas tienden a tener sus aplicaciones en varios tipos de dispositivos y plataformas tecnológicas o sistemas operativos, y más aún si hablamos de dispositivos móviles, existen varias plataformas como son (IOS, Windows Phone, WebOS, Android) entonces aquí surge una interrogante ¿debo crear aplicaciones nativas para cada una de estas plataformas? o ¿creo una aplicación híbrida? , las aplicaciones híbridas nos permiten desarrollar una sola vez y construir aplicaciones para diferentes plataformas, es claro que no aprovecha muy bien los recursos cómo las aplicaciones nativas, pero probar tu servicio en varias plataformas es ideal para testear el mercado, entonces solo queda evaluar y tomar la decisión.

Las aplicaciones Móviles híbridas hacen uso de tecnología Web, como son HTML5, CSS3 y  javascript, claro para comunicarse con el server tienen que usar tecnología Rest o JSONP(JSON con Padding) entre otras, y si ven no hablo de JSON porque en este caso JSON no permite intercambiar datos con servidores externos a mi server por la política del mismo origen (SOP), entonces una vez terminado el desarrollo necesitamos una herramienta que permita convertir mi desarrollo móvil a plataformas móviles, ahí es donde entra Adobe volviendo a reaparecer con su famoso phonegap build para salvarnos.



Bueno sin más solo queda decir que el mundo del cloud computing cambiará la forma de trabajo de las empresas y la información se centralizará en esos servidores ofreciendo seguridad y disponibilidad de datos y servicios.

domingo, 10 de agosto de 2014

Intregación Datanucleus JDO con Netbeans y Base de Datos Oracle


lunes, 4 de agosto de 2014

Bug IDE Netbeans 7.x - Error en Dist


jueves, 17 de julio de 2014

Configurar GWT Netbeans


jueves, 10 de julio de 2014

Apagar la instancia de base de datos Oracle 11g


domingo, 6 de julio de 2014

DEVOL - Web Mobile - Control de Prestamos

Devol es el nombre de una aplicación web mobile desarrollado como SaaS sobre la PaaS Google App Engine y Tecnología Java que permite el control de prestamos de dinero a clientes, dejando el control de las amortizaciones al dueño de la aplicación ya que sus clientes no pagan en cuotas fijas y tiempos fijos.

Link de la App: https://devolpay.appspot.com

Arquitectura de Software de Devol:

Si lees este articulo entenderas cual es la arquitectura de software:
http://www.enjava2.com/2014/03/emprendiendo-en-la-nube-arquitectura-y.html

He decido liberar el codigo fuente en bienestar de la comunidad de desarrolladores en Google App Engine / Java y Google Web Toolkit, el link del repositorio github esta en la descripción del video, espero puedan dejar sus comentarios :)

Tecnología Usada:

  • Google App Engine - SDK 1.8.3
  • Google Web Toolkit - SDK 2.5.1
  • MGWT 1.1.2
  • Plataforma Java JDK 7
  • Java Data Objects JDO
  • Cloud DataStore Google
Que aprenderas.
  • Modelo de programación centrada en proceso, es decir bean, dao y logic son capas de entidad y proccess es capa de proceso.
  • Persistencia de datos al datastore de google a traves de JDO.
  • Uso Tipo de dato Key en Google App Engine.
  • Uso BeanProxy GWT
  • Uso de RequestFactory GWT
  • Uso de RPC en GWT
  • Uso de widgets GWT
  • Envio de correo electronico para validacion de cuenta
  • Encryptacion de claves y URL con algoritmo AES
  • Uso de MGWT.
Si crees que te sirvio espero dejes tu comentario.


Hasta pronto.


lunes, 23 de junio de 2014

Cambio de Clave a usuario en Oracle con SQL*PLUS y Enterprise Manager

viernes, 20 de junio de 2014

Crear Usuarios en Oracle desde Administracion Web

miércoles, 18 de junio de 2014

Crear TableSpace y DataFile desde Administracion web Oracle o Enterprise...

lunes, 16 de junio de 2014

Iniciar el Cliente Web de oracle - Enterprise Manager

Bajar Base de Datos Oracle con SQL*PLUS

Levantar Base de Datos Oracle con SQL*PLUS

Iniciando el servicio de red del Oracle

martes, 13 de mayo de 2014

Reto de Programación para Hackathon


Este problema lo resolví para un joven mexicano que necesitaba ayuda. El problema es interesante y espero ustedes puedan compartir su propia solución, compartí el problema en los grupos de facebook, pero al parecer no les gustan los retos, más que resolver lo más evidente XD.

Reto de Programación:
El primer objetivo del reto es resolver el problema, siéntete libre de usar google así cómo librerías estándar(ej. collection classes, Lists, etc). Una vez que tengas la solución, reflexiona e intenta hacerla lo más eficiente posible (imagina que esta clase será usada con millones o billones de elementos).

El Problema
Escribe una clase para almacenar elementos (pueden ser enteros, o lo que sea), puedes asumir que la clase se utilizará correctamente, no tienes que preocuparte acerca de manejo de errores, hay tres operaciones que debes de escribir:

insert(element)
El método insert toma un elemento, y lo inserta en la colección. Insert devuelve (retorna) un identificador para ese elemento insertado, qué puede ser usado para remover un elemento en particular dentro de la colección, el tipo de dato puede ser un número, dirección en memoria, string, lo que tú quieras. 

Nota 1: valores duplicados deben ser insertados. 
Nota 2: El identificador no deberá ser invalidado por operaciones subsecuentes(sólo cuando sea removido).

remove(idenficador)
El método remove toma un identificador (retornado por un insert previo) y remueve el elemento de la colección. Este método deberá retornar el valor de elemento removido.

removeLargest()
Este método encuentra el elemento con mayor valor dentro de la colección. Una vez encontrado lo remueve de la colección, y retorna su valor.

Si dos elementos tienen el mismo valor, uno de los dos deberá ser removido.
Ejemplo de uso
Collection col = new Collection();
Identifier a = col.insert(40);  // Identifier es lo qué tu
quieras int, string, etc
Identifier b = col.insert(25);
Identifier c = col.insert(30); 
col.remove(C); // retorna 30
col.removeLargest(); // retorna 40
col.insert(50); // retorna un identificador
col.removeLargest(); // retorna 50
col.removeLargest(); // retorna 25

Después de resolver el problema:

Redacta en un documento lo siguiente:

  • Describe el desempeño esperado del programa, así cómo el por qué de tu solución.


  • Qué tan cerca crees que estuviste de la solución ideal?


Si tuvieras una semana para trabajar en el el, que mejorarías de tu código?

  • Envía tu código en Java procura que sea lo más limpio y claro posible. Intenta

resolverlo dentro de una media hora o una hora, no tiene que estar perfecto para que lo
envies. ¡SUERTE!.