octubre 09, 2011

WebMatrix : Using PHP on IIS Server



Recuerde que..
Este blog esta desarrollado en idioma español pero utilizando Google Traductor puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a Integracion Google.

...y continuando con nuestra investigación respecto a WebMatrix: la plataforma opensource de Desarrollo Web de Microsoft, empezamos ahora a revisar las ventajas y posibilidades que nos presenta instalar y trabajar con el lenguaje PHP dentro del entorno de Desarrollo del servidor IIS y el lenguaje ASP.Net (aparte que nos permite integrarnos y trabajar fácilmente con la base de datos SQLServer compact instalado en la plataforma... y que cuyas formas de conexión y funcionamiento se encuentran detallados en el Tutorial WebMatrix cuyas direcciones adjuntamos en nuestra entrega anterior.

Ya desde nuestra primera entrada empezando desde cero que dió inicio a las investigaciones de nuestro proyecto Integración Google, les habíamos indicado que el lenguaje PHP, integrado completamente al servidor Apache en nuestra instalación de Appserv, es sólo un componente del servidor, y que incluso podía ser instalado de manera independiente; el caso es que al instalar Appserv, u otro servidor similar como XAMP, WAMP, etc, el lenguaje PHP ya viene integrado a nuestro entorno de desarrollo, pero ahora con WebMatrix, es propicia la oportunidad para ver a PHP trabajando en otro entorno de desarrollo distinto al servidor Apache.

En el caso de WebMatrix, el proceso de instalación de PHP al servidor IIS Express es totalmente automático... Solo basta ingresar a la opción "configuración" de alguno de nuestros proyectos o "sites", y allí marcar la opción correspondiente. El hecho es que, al hacer esa indicación, WebMatrix, nos solicitará que le indiquemos que versión del lenguaje deseamos instalar, la versión 5.2 ó 5.3, en nuestro caso elegimos la versión 5.2 pues nuestros desarrollos no tienen ninguna figura especial del lenguaje PHP que hayamos utilizado... pero bien pueden seleccionar la versión 5.3 que ya es estable....y listo, el proceso se empieza a realizar en forma automática (toma sus minutos.. pero no hay nada más que hacer), al final va a aparecer marcada nuestra casilla PHP, habilitada en la versión que elegimos... tal vez si vale resaltar, que una vez instalado PHP, el lenguaje estará disponible para todos nuestros proyectos y no solo para uno en particular, vale decir, se habilita el servicio para todo nuestro entorno de desarrollo, como es que caso en Appserv,. por mencionar un servidor que ya nos debe resultar cada vez más familiar...

Cabe también resaltar que, PHP no solo es instalable en el entorno de desarrollo de un servidor Apache e IIS ...no forma parte de los alcances de este codelab revisar al detalle de todas las posibilidades de PHP, pero vale resaltar que, al descargar PHP, para ser instalado de forma independiente desde su pagina oficial, y al efectuar el proceso, PHP, durante su instalación, nos pedirá que seleccionemos el servidor Web sobre el cual trabajará, y aparte de los ya mencionados, tenemos al servidor Xiami, Microsoft PWS.. y hay una opción otros, y en la cual, la configuración por la parte del servidor tendría que efectuarse de forma manual.. como es el caso si deseamos instalar PHP sobre un servidor Tomcat, que tiene sus pasos, pero también es posible... el caso es que tener al lenguaje PHP, sobre el servidor que utilicemos, representa enormes ventajas, por cuanto PHP es un lenguaje bastante consolidado, y que nos presenta múltiples herramientas ya desarrolladas y listas para poderlas usar (como el manejo del formato JSON entre otros, ó la instalación de "servicios sociales" o de gestión de contenidos muy populares como Wordpress, Drupal, etc. los que han sido desarrollados utilizando PHP, y que varios de ellos, han sido completamente integrados a la plataforma de Desarrollo de WebMatrix, facilitando su instalación, adecuación y uso), y todo ello nos debe permitir que, unido a los conocimientos que podamos ó requerir tener de alguna otra plataforma de desarrollo en particular, pues puede facilitarnos bastante nuestro trabajo, tiempos de programación e integración de proyectos...( como un ejemplo, pueden revisar este enlace que nos muestra el proceso de instalación de PHP sobre un servidor IIS "convencional", es decir, el que viene instalado en WindowsNT Server ó Windows XP ó Window 7, etc. )


Instalando nuestros codelabs "Using the Back-End PHP+MySQL e Integracion Google 3ra parte" sobre WebMatrix:

(Una vez instalado WebMatrix en nuestro ordenador, por supuesto)

Nuestros codelabs referidos al uso del Back-End PHP+ MySQL esta dividido en tres partes, los que son: 1.- Iniciándonos, que nos muestra un modelo CRUD -opciones básicas de Crear, Modificar, Borrar, Buscar e Imprimir-, sobre una tabla de una base de datos MySQL, considerando componentes dinámicos; 2.- Temas de Seguridad y Wizards (acceso), que muestra el mismo desarrollo anterior pero considerando una pantalla de acceso para poder utilizar dicha aplicación...y a la que le hemos acondicionado componentes dinámicos respecto al manejo de idioma de nuestro navegador ( la API language de Google, cuyo efecto podemos observar al cambiar el idioma de nuestro navegador...para ello, siga la ruta : Herramientas, Opciones, Avanzado, Contenido Web y Configuración de Idiomas en Google Chrome si están utilizando dicho navegador por supuesto); y por último, tenemos a nuestro codelab Integración Google 3ra parte, que muestra un Modelo TreePanel de visualizaciones Google y ExtJs, además de visualización de Google Maps, y nuestro modelo CRUD de Mantenimiento de la tabla de presidentes utilizada en los dos primeros codelabs referidos, la que hemos unido al ejercicio en este caso, como muestra de como unir componentes ExtJs sobre en nuestros propios proyectos.

Cabe resaltar asimismo que, estos codelabs son referidos al Back-End PHP+ MySQL corriendo sobre WebMatrix, pero como solo involucran a los componentes nativos de un servidor AppServ; entonces para el caso de las bases de datos requeridas para los ejercicios recomendamos efectuarlas sobre el mismo servidor MySQL ya instalado con  Appserv, pues cabe indicar que, sobre un mismo ordenador, no tiene ningún sentido tener instalado varios servidores MySQL - aunque es posible, si se configuran para puertos diferentes - y para ello, debemos utilizar la herramienta phpMyAdmin también disponible en nuestro servidor Appserv.

Y por supuesto, como tal vez han podido intuir, también es posible correr en el entorno de desarrollo de Appserv éste material de apoyo que les entregamos para probar sobre WebMatrix, y con la ventaja de que, como en WebMatrix, cada proyecto o "site" es independiente, pues en esta oportunidad, los descargables de cada "codelab" contienen todo lo necesario para su funcionameinto ( incluido la versión "liviana" de ExtJs-3.4.0 utilizada en esta oportunidad para cada codelab). Por ello, conviene descargar o copiar nuestro material de apoyo dentro de la carpeta "www" de nuestro servidor Appserv (u otro servidor equivalente utilizado), y con ello, los podríamos poner en funcionamiento inclusive en ambas plataformas en forma simultánea... llamando desde el localhost, más nuestra ruta de descarga, en la barra de direcciones de nuestro navegador... ó desde WebMatrix, al cargar estos proyectos o "sites", llamarlos desde esta posición de descarga directamente a WebMatrix, y ejecutarlos de allí, como se indicó en el codelab anterior, referido a nuestros primeros conceptos respecto a WebMatrix, y de donde ya debemos haber ejecutado nuestros proyectos Integración Google 1ra. y 2da. parte... vale decir, si en esta oportunidad va ejecutar por primera vez los codelabs, y si por supuesto utilizamos las bases y tablas MySQL requeridas ( adjuntamos para ello los archivos sql necesarios ), pues nuestros ejercicios deberían funcionar directamente sin necesidad de hacer alguna configuración adicional; pero en el caso de haber ya realizado la instalación de los codelabs anteriores mencionados, podrá "sobreescribir" las bases de datos requeridas con la misma información de los archivos sql contenidos en el material de la descarga.

Material de Apoyo : 
( do click on blue icons to download )

Grid-PHP-MySQL.rar, que corresponde a nuestro codelab "iniciándonos" sobre el Back-End PHP+ MySQL,  proyecto desarrollado tomando como referencia un tutorial de la pagina Oficial ExtJs, cuyo código por supuesto hemos mejorado y que corre ahora sobre la versión ExtJs-3.4.0; y que nos presenta un modelo CRUD -opciones básicas de Crear, Modificar, Borrar, Buscar e Imprimir-, sobre una tabla de una base de datos MySQL, considerando componentes dinámicos.


Using the Back-End PHP+MySQL (Getting Started) corriendo sobre WebMatrix :



Este codelab trabaja con la base de datos "tutorial", para ello deberá crear primero con la herramienta phpMyAdmin dicha base de datos, y luego importar sobre ella las tablas y datos requeridos desde el archivo pdtes_usa.sql incluído en la descarga ( si ya tiene instalada la base de datos tutorial, la importación borrará las tablas "presidents", "parties" y "usuarios" requeridas, e insertará la data necesaria para realizar ejecutar nuestro ejercicio.

Recuérdese asimismo que en el archivo database.php, y con el comando msql_connect debemos verificar nuestros datos para conectarnos a la base de datos (host, usuario y password), y con el comando msql_select_db se indica el nombre de la base de datos donde hemos importado las tablas y datos contenidos en pdtes_usa.sql (tutorial es el que hemos utilizado).

Pueden también revisar nuestra entrada : Using the Back-End PHP+MySQL ( Getting Started ) donde mostramos con mayor detalle el contenido de cada componente del codelab, aunque en esa oportunidad, las mostramos para instalar y hacer funcionar este proyecto sobre el entorno de desarrollo de Appserv ( servidor Apache+ PHP+ MySQL), pero cuyos conceptos, como ya hemos indicado, son completamente compatibles para utilizarlos sobre este entorno de desarrollo de WebMatrix, por cuanto, de dicha plataforma, en esta oportunidad solo estamos utilizando al servidor IIS  y el lenguaje PHP instalado sobre ella... y el funcionamiento del servidor IIS es similar al del servidor Apache para este caso, por cuanto no estamos utilizando ningún código ASP.Net ó C# asociado a dicho entorno.

Wizard-sample.rar, que corresponde a nuestro codelab "Temas de Seguridad y Wizards (acceso)" referidos al Back-End PHP+ MySQL,  donde mostramos los fundamentos para empezar a diseñar nuestros sistemas y proyectos tomando en consideración pantallas de acceso (Wizards) y revisando que opciones de seguridad debemos empezar a considerar en ellos. Este codelab hace referencia a como poder acceder (ó restringir el acceso a usuarios no autorizados) a nuestro modelo CRUD del codelab anterior, y para ello hace uso de los datos registrados en la tabla usuarios creada al importar pdtes_usa.sql sobre la base de datos "tutorial" ya creadas.

Para este codelab en la base de datos Tutorial debemos agregar manualmente la tabla usuarios que debe tener como mínimo los campos: ID (int, primary key e auto-incremental(, usuario, varchar(15); y password también varchar(15)... y allí indicar los valores de nuestro usuario y password de acceso (passer, passer por ejemplo). Las generalidades de configuración y conexion a la base de datos Tutorial los podemos observar al inicio del archivo index.php (donde nos conectamos a la base de datos mediante mysql_connect y mysql_select_db), y a partir de la línea 242, donde se verifica que nuestro nombre de usuario y password se encuentren registrados en la tabla usuarios.

Using the Back-End PHP+MySQL (Wizard and safety themes) corriendo sobre WebMatrix :



Pueden también revisar nuestra entrada : Using the Back-End PHP+MySQL ( Wizard & Safety themes) donde mostramos con mayor detalle el contenido de cada componente de este interesante codelab, y en que se detallan una de la principales formas de uso del lenguaje PHP en lo que respecta al manejo de base de datos, cookies y enlace entre diferentes páginas PHP.. y por supuesto, como ya hemos indicado, este proyecto lo podemos correr desde WebMatrix ó desde el entorno de desarrollo de Appserv, como ya hemos indicado...


Int-Google03.rar, que corresponde a nuestro codelab "Integracion Google 3ra parte" referidos al Back-End PHP+ MySQL, donde mostramos los fundamentos para empezar a diseñar nuestros sistemas y proyectos tomando el consideración el enfoque de uso que nos ofrece ExtJs (uso de un menu TreePanel, al que se accede por una pantalla de acceso Wizard, y de manejo de stores y la forma de conexión utilizando  PHPa la base de datos MySQL, lo que finalmente nos permiten acceder a las diferentes visualizaciones  Google y ExtJs que hemos venido presentando en nuestros codelabs, incluyendo en esta oportunidad, al Modelo CRUD de Mantenimiento de listado de presidentes que hemos utilizado en los dos codelabs anteriores que forman parte de esta entrega.

Este ejercicio trabaja con las bases de datos IGCodelab contenidos en igcodelab.sql (datos de productos de belleza), y la base de datos Tutorial (donde tenemos registrados a los presidentes USA contenidos en pdtes_usa.sql). Pero en esta oportunidad, el nombre y password del usuario para acceder al Modulo son los contenidos en la tabla usuarios de la base de datos IGCodelab. Los datos que conexión a la base de datos IGCodelab, y la grabación de cookies empleadas a lo largo del modulo, son detalladas en drivers.php, y el chequeo del usuarios se detalla en database.php en la función getuser(), a partir de la linea 63 del código.

Integracion Google 3ra. Parte corriendo sobre WebMatrix :




Pueden también revisar nuestra entrada Integracion Google (3ra parte) donde mostramos con mayor detalle el contenido de cada componente del codelab...

NOTA: los ejercicios funcionan sin mayor problema tal como los presentamos, pero para los codelabs Grid-MySQL e Int-Google03, como podrá verificar, los archivos *.php involucrados utilizan codificación ANSI, aún cuando lo recomendado cuando trabajemos en nuestros proyectos web es que como norma todos nuestros archivos sean construidos con la codificación UTF-8.... Ocurre que cuando se trabaja con cookies (como es el caso de estos codelabs), puede haber restricciones para el uso de la función setcookie(), por cuanto PHP por defecto, restringe las salidas del buffer del servidor luego que se haya cargado o ejecutado algun script HTML... (puede revisar la documentación al respecto): y en el caso de los dos codelabs mencionados, como puede fácilmente observar, por la forma en que se encuentran construidos los ejercicios, primero se cargan a los archivos index.html, y luego durante el proceso se invoca a los respectivos archivos *.php para interactuar con la base de datos MySQL. Esta restricción puede superarse convirtiendo a codificación ANSI los archivos *.php que invocan a las funciones setcookie(), o configurando nuestro archivo PHP.ini, indicando a la directiva:  output_buffering=on (su valor por defecto es off).

La documentación no indica al detalle la causa de esta salvedad pero pueden verificar - utilizando Firebug de Firefox para hacer sus pruebas - que al convertir los archivos *.php del proyecto Int-Google03 a codificación UTF-8 (utilizando notepad++ u otro editor), y en especial al archivo drivers.php que se utiliza primero para la grabación de los cookies, este arroja  por la consola de inspección el warning : "Cannot modify header information - header alreaqdy sent by..",.y nos indica las líneas de nuestras instrucciones setcookies(); y por supuesto, no funciona la carga de datos, o mas propiamente dicho, se bloquea la salida de datos desde el buffer del servidor, aún cuando la información haya sido "capturada"...

Este impase, como hemos indicado, se soluciona al convertir nuevamente a ANSI nuestro archivo drivers.php... o también podemos reconfigurar nuestro PHP.ini en la directiva: output_buffering=on, y en este ultimo caso, aún cuando nuestros archivos PHP sean codificados UTF-8 si se permitirá la "salida" de la información y el ejercicio funcionará sin inconvenientes.

Lo indicado anteriormente ocurre al trabajar con un servidor Apache en una plataforma LAMP o WAMP, pero cuando trabajamos con WebMatrix NO ocurren estos problemas, y es indiferente que nuestros archivos *.php sean codificados UTF-8 ó ANSI, pero como siempre, para nuestros proyectos, debemos verificar su funcionamiento antes de su  puesta en producción para evitar contratiempos.

Saludos
@Mlaynes




octubre 02, 2011

WebMatrix: la plataforma opensource de Microsoft para Desarrollo Web



Recuerde que..
Este blog esta desarrollado en idioma español pero utilizando Google Traductor puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a Integracion Google.

...y continuando con nuestra investigación de los diferentes entornos de Desarrollo Web y uso de la Tecnología Google, junto a mis labores habituales de consultor, analista y desarrollador de sistemas y soluciones informáticas ( y de cloud computing en general ); en la practica, ya había dejado de lado al mundo "Microsoft" para lo que es Desarrollo Web, aún cuando en muchas de las soluciones cliente-servidor que he desarrollado e implementado he utilizado bastante Foxpro y VFP, habiendo incursionado tambien en C++, Clipper, FiveWin, PowerBuilder; y en los proyectos Harbour, X-Harbour para desligarnos algo del mundo Microsoft, trabajando con base de datos externas como MySQL principalmente e instaladas incluso sobre servidores Linux para que el deslinde fuese más notorio aún... :-/) ; y es que en realidad realmente siempre había considerado al entorno de desarrollo Web de Microsoft, y a su servidor IIS en particular, como algo demasiado amarrado a Windows (una versión de IIS según cada versión Windows que lanzaban..), y por supuesto, a sus propias herramientas de Desarrollo Web como Visual Studio, Web Developer, etc.  ...demasiado amarre al mundo Microsoft para mi gusto.. y por supuesto, bastante desligado de los principales proyectos opensource y GPL propios del mundo de Desarrollo Web...

pero debo reconocer que Microsoft me ha sorprendido con el lanzamiento de WebMatrix 2.0 beta; y ahora ultimo, a finales de junio 2012 liberó WebMatrix versión 2.0 Release Candidate que tiene como importante novedad que, aparte de ASP.Net y PHP, integra como lenguajes de desarrollo a NodeJS :

    http://www.microsoft.com/web/webmatrix

con Microsoft WebMatrix todas las principales herramientas opensource del mundo de Desarrollo Web, y también las "opensource" que ha "liberado" Microsoft, son integradas en un entorno de trabajo bastante apropiado para hacer Desarrollo Web.. y ahora, al igual que cuando se trabaja con un servidor Apache con PHP y MySQL (Appserv, Xamp, Wamp, etc)... Microsoft ha integrado IISExpress, SQLServer Compact, ASP.Net, C#,  e incluso a PHP en una "plataforma" de desarrollo bastante interesante (y ahora tambien noeJS como ya hemos indicado); debiendo tener en cuenta que, al considerar a PHP en su entorno de trabajo, WebMatrix nos permite integrarnos tambien a servicios sociales y de gestión de contenidos, muy difundidos como Wordpress, Joomla, Drupal, etc. ..y debo reconocer que el resultado impresiona bastante  ..y hasta ofrecen servicio de Hosting desde US$1.67 mensual para alojar en la nube nuestros desarrollos directamente desde esta plataforma... como para tomar en cuenta...

En el propio tutorial de la pagina oficial de WebMatrix - que es bastante detallado - nos muestra como hacer paginas web dinámicas muy fácilmente utilizando la base de datos SQLServer Compact incorporada al proyecto ( y por supuesto que es posible conectarse a otras bases de datos como mySQL, Postgress, SQLServer, etc. recurriendo al código PHP que es el más utilizado para dicho efecto); y presenta como novedad: la sintaxis Razor, que nos muestra como utilizar código ASP totalmente integrado a HTML y CSS para lograr páginas dinámicas incluso sin recurrir al manejo de una base de datos ...realmente interesante  y para tomar en serio...
...como un miembro más de la comunidad del zorro (Visual Foxpro ó VFP), que aún utiliza esa plataforma para desarrollos de escritorio, pues vale mencionar que manejar un servidor Web IIS es  nuestra puerta de entrada para poder instalar ActiveVFP fácilmente y sin muchas complicaciones ( y poder utilizar VFP como Back-End ), lo que era un obstáculo algo difícil de superar. ActiveVFP que es una herramienta free y opensource ya con varios años de desarrollo y soporte, permite el uso de código VFP, incluso de la versión 9.0, por el lado del servidor, vale decir, como hemos mostrado a lo largo de este proyecto, que nos permite utilizar comandos VFP y variables de dicho entorno, dentro de una etiqueta adecuada, la que podemos incrustar en nuestros códigos HTML, y así poderlas utilizar en nuestras páginas y desarrollos Web  .. es realmente un camino abierto para poder integrar nuestros desarrollos VFP al mundo Web utilizando la lógica, los códigos y las bases de datos y tablas con que hemos desarrollado  nuestros sistemas y proyectos con VFP.
...retomando el tema, WebMatrix es un entorno de Desarrollo Web que puede instalarse independientemente de la versión de Windows que tengamos instalado en nuestro ordenador, como a nuestro criterio siempre debió haber sido, aunque aún creo que es demasiado pedirle a Microsoft que pueda ser instalado incluso en otras plataforas como Linux, Unix, Mac, etc; (pero eso lo convertiría en un verdadero proyecto opensource). WebMatrix, puede ser instalado en equipos con Windows XP service pack 3 en adelante;, aparte de las herramientas mencionadas (servidor IIS, base de datos SQLServer compact, y lenguajes ASP.Net y PHP, y que por supuesto también reconoce HTML, CSS,y Javascript), viene integrado a un editor bastante practico (que pueden mejorar), pero lo que resulta interesante es el manejo interno que hace lograndose una configuración correcta de nuestros proyectos; y así, como cuando hemos utilizado Netbeans en el entorno de desarrollo Java-Tomcat se nos facilita la construcción, prueba y lanzamiento de nuestros proyectos; con WebMatrix sucede algo similar, y no tendremos que preocuparnos en la configuración de nuestros "context path" ni del manejo de servidores virtuales para construir y lanzar nuestros proyectos, incluyendo la "bajada" y "subida" a nuestro servicio de hosting externo (como se realiza con Dreamweaver por ejemplo); y al hacer nuestras pruebas, podemos incluso seleccionar el navegador por el cual lanzar nuestro proyecto y observar su resultado...

Cabe reiterar asimismo que el tutorial que acompaña a WebMatrix está bastante detallado y muestra en pocos pasos y con casos prácticos el manejo de la plataforma y de sus componentes (HTML, CSS, ASP.Net, conexión a base de datos, etc. lo que podría constituirse en una nueva puerta de ingreso al mundo de Desarrollo Web que vale considerar ...diferente al convencional que hemos planteado en este nuestro proyecto Integración Google,  (puede revisar el Home de nuestro proyecto), debiendo resaltar que resulta necesario tener también una visión completa de lo que significa y abarca el mundo de Desarrollo Web ( si no queremos quedarnos exclusivamente con las herramientas Microsoft ), lo que podemos lograr dando una re-lectura a nuestra entrada empezando desde cero que planteamos al iniciar nuestro proyecto...y asimismo también, a los conceptos que hemos venido tocando a lo largo de su desarrollo..



Contenido del tutorial WebMatrix (pagina oficial)

Part 1 introduces you to WebMatrix and how you can install and use it.
Part 2 teaches you how to create your first Web Page using WebMatrix.
Part 3 gets you started with CSS and style sheets so you can make your page more beautiful.
Part 4 teaches you layout and how you can use layout in WebMatrix for common code across your pages.
Part 5 is all about data, where you’ll learn how to use a database in your web page, and make it more dynamic.
Part 6 shows you how to build a page that allows your users to add data to your database, so your site can render it.
Part 7 builds on this to show you how you can have a page to edit your database, and see the changes updated automatically.
Part 8 finishes off the application by showing you how to create a delete page for your data
Part 9 shows you how to publish your site to the internet using WebMatrix.

Nota : solo se requiere que tengamos una buena maquina para que no se pierda rendimiento (el entorno Java y de Netbeans también lo requiere, y es un apunte que olvidé detallar en su debido momento), y también se requiere un poco de paciencia pues el proceso de instalación e WebMatrix me parece algo largo comparado con instalar un servidor AppServ u otro similar (especialmente si no tenemos instalado ninguna herramienta de desarrollo web de Microsoft) ...pero no se necesita tener pre-instalado nada previo y todo el proceso esta automatizado, como cuando instalamos programas con la herramienta "Google Pack", que indicamos en nuestra entrada herramientas para Desarrollo Web ); y luego, una vez instalada la plataforma,  podemos continuar con cada uno de los pasos del tutorial indicado,  ...hacer nuestras pruebas ...y refrescar e incrementar nuestros conocimientos básicos y del entorno del Back-End ASP.Net y SQLServer compact. ...planteado así, creo vale la pena darle una mirada a este entorno de Microsoft...

Instalando nuestros proyectos Integracion Google 1ra y 2da Parte sobre WebMatrix:
(Una vez instalado WebMatrix en nuestro ordenador)

Nuestros proyectos Integración Google 1ra. y 2da. han sido desarrollados exclusivamente con HTML y Javascript ( recuerde que ExtJs es un "framework" de Javascript, vale decir una extensión o mejora pero hecha en código javascript), por lo que para que corran sobre WebMatrix no requieren mayor preparación sino estar completos (tal como se cargarían a la Web a través de un servicio de Hosting)

Material de Apoyo : 
( do click on blue icons to download )

IntGoogle-01.rar, que nos muestra Visualizaciones Google sobre ExtJs (versión Ext-3.4.0 en este caso) correspondiente a dicho codelab, para cargarlo como un Sitio Web de WebMatrix. Pueden revisar nuestra entrada Integracion Google 1ra parte para mayores detalles.del ejercicio..en ese caso, corriendo sobre un servidor "convencional" Apache (instalado con Appserv)

IntGoogle-02.rar, que nos muestra Visualizaciones Google y ExtJs de nuestro documento "Spreadsheet Productos" correspondiente a dicho codelab (adjuntamos también nuestro modelo de hoja de calculo en formato "xls" para que puedan realizar sus pruebas con un documento propio que puedan modificar o acondicionar a sus necesidades, cargando por supuesto este archivo a Google Docs)... Pueden revisar nuestro codelab Integracion Google 2da. parte para mayores detalles de este ejercicio como en el caso anterior descrito.

NOTA IMPORTANTE :

Resulta que el sistema de autorización "AuthSub for JavaScript" de Google ya no se encuentra disponible (pueden revisar el siguiente enlace), por lo que nuestro botón "Login" de nuestro codelab no permite el acceso a nuestro ejercicio; asimismo, la documentación de Google nos recomienda que utilicemos ahora "OAuth 2.0 for client-side applications", vale decir, tendremos que utilizar Google API Javascript Client para poder acceder a nuestras aplicaciones (u otra API cliente según la plataforma back-end que utilicemos, tal como PHP, Java, .NET, entre otros), pero en nuestro caso, como solo estamos trabajando aplicaciones por el lado del cliente, tendremos que recurrir a la librería cliente para Javascript indicada.

Por lo que, mientras adecuamos nuestro código, resulta conveniente que NO CONSIDEREN el proceso de acceso a la aplicación de la siguiente manera:

function activando(auth) {
  var c = Ext.getCmp('center');
  //google.accounts.user.login('http://www.google.com/m8/feeds/');
  auth = true;
  c.enable();
  c.update('');
  if (auth) {
    vistree.enable();
  };
};

within from : MenuGVisualization_01.js / MenuGVisualization_02.js where appropiate!


TRABAJANDO CON OAUTH 2.0 :

por supuesto, a la brevedad actualizaremos todos nuestros códigos para que trabajen con el protocolo OAuth20, y les presentamos en esta oportunidad el código y su demo de nuestro codelab que hemos cargado a la plataforma GAE (Google App Engine), pero que usted también puede probar en su servidor local de pruebas utilizando el SDK para Java de Google App Engine..

 ..now you can test our IntGoogle01-Oauth demo  (New!) .
the demo may prompt popup window (you must enable it)

IntGoogle01-OAuth20.rar ( 3.05Mb ), Este código corresponde a nuestro codelab pero adecuado al protocolo OAuth version 2.0, utilizando la "Google API Javascript Client", la cual en esta versión, incluso nos permite acceder directamente al email de nuestros usuarios.

 ..now you can test our IntGoogle02-Oauth demo  (New!) .
the demo may prompt popup window (you must enable it)

IntGoogle02-OAuth20.rar ( 3.20Mb ), Este código corresponde a nuestro codelab pero adecuado al protocolo OAuth version 2.0, utilizando la "Google API Javascript Client", la cual en esta versión, incluso nos permite acceder directamente al email de nuestros usuarios.


Es importante indicar que la documentación de Google nos indica que ahora debemos trabajar con OAuth 2.0 que se esta convirtiendo en el estándar de autenticación y autorización para acceder a nuestras cuentas y poder utilizar todas las API de Google, por ello hemos adecuado nuestro codelab a dicho estándar debiéndose tener en cuenta lo siguiente:

  • Crear un nuevo proyecto en el Google API Console, con el nombre mas adecuado que queramos
  • Crear una "OAuth 2.0 Client ID" en la opción API Access de la consola.. allí podremos indicar el nombre de nuestra aplicación y la URL de un logo que la represente ..a continuación debemos indicar el tipo de nuestra aplicación ("web application" en nuestro caso), y la URL de nuestra aplicación (acepta http://localhost ó http://localhost:8080, indicando en lugar del puerto 8080 el que nos indique que va utilizar WebMatrix para desplegar nuestro proyecto, debiendo resaltar que la plataforma WebMatrix permite que modifiquemos el puerto en su opción configuración de cada proyecto.. y que conviene que para hacer nuestras pruebas, utilicemos el mismo puerto por lo menos para nuestros proyectos WebMatrix que requieran el uso de APIs de Google (y así no estar creando diferentes proyectos en la consola por cada uno de ellos), asimismo para trabajar con la plataforma WebMatrix debemos verificar que se elija correctamente el protocolo "http ó https" que utilizaremos (generalmente "http"), y la ruta completa de acceso a nuestra aplicación, que en este caso será http://localhost:xxxx (el puerto utilizado), para que todo funcione correctamente; por lo que al crear nuestra API Access se nos indicará la carpeta "Redirect URI" donde se realizará el proceso de autenticación y autorización OAuth 2.0 solicitado (si no ha sido creada debemos editar la configuración y registrar manualmente la carpeta donde se realizará el proceso, puede ser cualquiera dentro de "www" o crear la carpeta "oauth2callback" indicada)..
  • ..y finalmente, en la misma "Google API Console" debemos seleccionar a la opción "Services" y activar la "Google+ API" (debe estar "ON" y de color verde), lográndose con ello finalmente crear nuestra "API key" en forma automática.
  • y todo ya está listo! ..ahora al volver a la opción "API Access" de nuestra aplicación, ya tendremos disponible nuestro "Client ID" y la "API Key" (dentro de "Simple Access API"), estos datos son las que debemos utilizar y reemplazar en el archivo "index.html" de nuestra aplicación para que todo pueda funcionar correctamente.

    Conviene también revisar las diferentes opciones que nos presenta la "Google API Console" pues nos puede ser necesarias como crear, modificar, renombrar, eliminar proyectos principalmente.

  • ..y ahora a probar nuestra aplicación IntGoogle01-Oauth20 e IntGoogle02-Oauth20 sobre WebMatrix !
  • y una ultima indicación.. Como estamos trabajando con la Google Maps API v2, tenemos que activar el servicio "Google Maps API v2" en la API consola, y registrar nuestra API Key al importar la API en nuestro proyecto antes de subirlo a un servicio de hosting con un dominio personalizado y así puedan funcionar los mapas de nuestro proyecto sin mayores inconvenientes (aunque la Google Maps API v2 solo estará activa hasta Marzo 2013, por lo que debemos programar nuestras actualizacion a la API v.3)..por supuesto, al trabajar con nuestro servidor local "localhost" no se presentan problemas.. el asunto es, como indicamos, al cargar nuestros proyectos a un servicio de hosting externo cualquiera.. como la plataforma GAE (Google App Engine), que es el caso de nuestra demo)



Integracion Google Parte No.1 corriendo sobre WebMatrix :




Integracion Google Parte No.2 corriendo sobre WebMatrix :




ActiveVFP 5.5 instalado sobre WebMatrix

ActiveVFP es un proyecto que requiere del lenguaje ASP.Net por el lado del servidor: y su "demo" utilza HTML y CSS por el front, y el lenguaje ASP.Net integrado a la plataforma WebMatrix nos permite a su vez utilizar VFP y tablas VFP como Back-End en nuestros proyectos. WebMatrix es un servidor IIS que soporta ASP.Net y C# por lo que si en nuestros proyectos requerimos ó utilizamos codigo VFP y tablas VFP, podemos entonces integrarlos y darles rápida salida a la Web como "sites" o proyectos WebMatrix.. El único requisito es que nuestro proyecto se presente completo tal como se cargará a la Web (incluyendo todas las librerías y complementos que lo compongan); ale decir, contener en nuestro proyecto al componente activeVFP completo.


 now you can test the activeVFP 5.5.1 demo  (New!) .
(like a codeplex project..)

activeVFP 5.5.rar ( 2.99Mb ), Este código corresponde a nuestro codelab para instalar el demo del proyecto activeVFP en nuestro servidor local WebMatrix.



Pasos para instalar los Codelabs..


Tenemos que descargar estos proyectos en la carpeta de proyectos de WebMatrix( "My Web Sites" de Mis Documentos), ó en otra carpeta que creamos conveniente como C:/WebMatrix por ejemplo; se crearán 3 carpetas de nombres Int-Google01, Int-Googlw02 y ActiveVFP_5.5 (también IntGoogle01-OAuth20, intGoogle02-OAuth20 respectivamente); luego hay que cargar estos proyectos a WebMatrix; y el proceso es bastante simple, para ello, al abrir WebMatrix debemos seleccionar la opción "Sitio a partir de carpeta", ó en el caso que ya estemos sobre un proyecto abierto, seleccionar el botón azulino de la parte superioir izquierda (al lado de "Página principal"), luego Nuevo Sitio, y allí aparece y elegimos la opción "Sitio a partir de carpeta"; se nos indicará que ubiquemos la carpeta que contiene nuestro proyecto (Int-Google01 por ejemplo), y al seleccionarla, WebMatrix creará nuestro proyecto o "website". WebMatrix pondrá como nombre de nuestro proyecto la carpeta que estemos cargando, e internamente hará las configuraciones necesarias para que el "directorio virtual" y un puerto disponible sean direccionados a nuestro proyecto ( también podemos adecuar esos datos en la opción "configuración" del proyecto ya cargado); luego debemos proceder a "ejecutar" nuestro proyecto, y al seleccionar la pestaña con ese nombre, nos aparecerá una lista con los navegadores que tenemos instalado en nuestro ordenador, seleccionemos la de nuestra preferencia ...y listo... nuestro proyecto será lanzado a nuestro navegador elegido...

Debemos hacer lo mismo con nuestro proyecto Int-Google02, y con esto veremos corriendo nuestros ejercicios  (si han seguido todos los pasos de nuestro proyecto),  hasta en 04 plataformas distintas: sobre un servidor HTTP Apache, sobre AppEngine, sobre un servidor Apache Tomcat, y ahora sobre WebMatrix; y con lo que podemos sacar como una clara conclusión - como ya habiamos indicado - que dentro del mundo Web no hay problemas de compatibilidad si trabajamos con sus elementos básicos: refiriéndonos a HTML, CSS y Javascript (reiteramos que ExtJs es un framework de javascript.. escrito en javascript nativo).. y con WebMatrix al ser bastante sencillo el proceso, conviene también "ejecutemos" nuestros proyectos en diferentes navegadores, pues como hemos indicado desde los inicios de nuestro proyecto Integración Google, a veces nuestros desarrollos no se ejecutan igual en un navegador u otro - dependiendo de la codificación javascript que utilicemos, ó la versión del framework que usemos ...cosas del mundo Web que debemos tomar en cuenta...

Deben realizar lo mismo con ActiveVFP_5.5 (que también debemos haber descargado en la carpeta de nuestra preferencia indicada, y verán en este caso, como se esperaba, que el proyecto ActiveVFP corre sin problemas en el servidor IIS Express version 7.5 en este caso que tiene anexado por el Back-End al lenguaje ASP.Net 2.0. Como una curiosidad pueden consultar la opción "Acerca de" de WebMatrix y verán que aún muestra los datos de la versión 1 de dicha plataforma... bueno, se supone que esta es la versión 2.0 beta, así que esperemos y estemos atentos a sus actualizaciones..

NOTA : el readme de ActiveVFP indica que para versión 1.0 de ASP.Net debemos registrar la librería de ActiveVFP, pero suponemos que el proceso también debe realizarse para la versión ASP.Net 2.0 - porque esa librería es externa y no pertenece a Windows - para ello; llamemos a la línea de comandos DOS ó "simbolo del sistema" (como prefieran llamarlo), vayamos hasta la carpeta donde hemos descargado nuestro proyecto ActiveVFP_5.5 y verifiquemos que allí se encuentre la librería activevfp.dll, luego ejecutemos el comando:

 regsvr32  activevfp.dll. ..y listo, ya no deberíamos tener ningún problema...

Otro punto que debemos tomar en consideración (y que debemos observar al revisar la opción "configuración" de nuestros proyectos), es que además del numero de puerto que WebMatrix asigna a cada una de nuestras aplicaciones - que podemos cambiar si lo deseamos - ;prestemos atención a la lista de archivos bajo el título "Administrar páginas predeterminadas", haciendo referencia al nombre de los archivos "inicio" del proyecto y que se ejecutarán automáticamente al invocarse el proyecto.. en el caso de nuestros proyectos Integración Google 1ra y 2da parte, nuestros archivos de "arranque" son index.html (porque son proyectos web que solo involucran HTML, CSS y Javascript); y en el caso de ActiveVFP, el archivo de arranque es "default.aspx", que corresponde a un proyecto que contiene código y datos ASP.Net 2.0.. conviene que revisemos que estos archivos se encuentren en la lista de nuestros respectivos proyectos, caso contrario debemos agregarlos manualmente o nó arrancará el proyecto desde la pantalla del "Sitio" (y sería necesario ubicarnos en el archivo de inicio que queremos ejecutar y de allí ejecutar el proyecto, como cuando hemos hecho al seguir el tutorial de WebMatrix...por supuesto, si lo han seguido, caso contrario, siempre es recomendable que sigan esos tutoriales y los prueben, pues consideramos que están bastante buenos e interesantes..)

NOTA: No realizamos en este codelab lo mismo con nuestro proyecto: Integración Google 3ra. parte, que describe un modelo CRUD de Mantenimiento de una tabla utilizando como Back-End el lenguaje PHP y la base de datos MySQL (con su respectiva pantalla de acceso ó "wizard"). y en este caso, con esta plataforma de desarrollo, no existe ningún problema respecto a trabajar con la base de datos MySQL y utilizar PHP para comunicarnos con ella (WebMatrix soporta PHP como indica su documentación y como hemos podido observar en la pantalla de configuración de nuestros proyectos), pero como la base de datos es externa a WebMatrix, y estamos recomendando esta plataforma de desarrollo de Microsoft como una alternativa para poder iniciarnos en Desarrollo Web, pues lo haremos en nuestra siguiente entrada, para detallar con más cuidado el proceso y los conceptos involucrados...


Saludos
@Mlaynes




Using the Back-End Java+MySQL: Instalando sdsimple..



Recuerde que..
Este blog esta desarrollado en idioma español pero utilizando Google Traductor puede adecuarlo al lenguaje de su preferencia.. Favor utilice la opcion del recuadro superior derecho... y Bienvenido a Integracion Google.

...y bueno amigos, continuando con el Back-End Java(JSP)+MySQL, pero continuando con nuestra modalidad de presentación de "codelabs", vamos ahora a poner la valla bien alta presentando en esta oportunidad al proyecto sdsimple.

Que es el proyecto sdsimple? es una aplicación administrativa desarrollado bajo la modalidad "Todo a la Web" bastante compacta y completa para facilitar la administración y gestión de PYMES que se distribuye bajo los términos de la Licencia Pública General GNU (tal como está publicada por la Free Software Foundation; ya sea la versión 3 de la licencia, o (según su elección) cualquier otra versión posterior). Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA; incluso sin las garantías de COMERCIALIZACIÓN o USABILIDAD O UTILIDAD PARA USOS PARTICULARES... las anotaciones son las textuales indicadas por Pedro Peña García (desarrollador del proyecto), a quien de esta humilde comunidad presentamos nuestros respetos... sdSimple se presenta como un sistema de facturación on-line y como la "gestión eficaz de tu negocio", y en este caso vamos a precisar los alcances del proyecto sdsimple para que sepamos que tenemos entre manos:

  • No solo es facturación, abarca compras, ventas, cobranzas, pagos y gestión de caja y bancos; que considero un modelo muy interesante y apropiado para empresas de servicios, o empresas que "legalmente" conforme a la legislación de cada país, por el monto de sus ventas y/o activos, no son obligadas a mantener control de Stocks ni activos (basicamente lo que conocemos como PYMES). Sdsimple no hace control de stocks -el costo de los stocks y de ventas se tendría que calcular por diferencia de inventario, como es usual y legalmente establecido para este tipo de negocios-  pero si registra los impuestos basicos involucrados en el proceso (IVA y retenciones), por supuesto todo esto depende de cada país y  puede ser suficiente, pero por poner un ejemplo, en Argentina parece existen mas impuestos y/o retenciones que considerar respecto al caso peruano, de acuerdo a solicitudes de amigos de esta comunidad que han llegado a instalar el proyecto y ponerlo en funcionamiento de acuerdo a sus necesidades.
  • El proyecto en sí tiene soporte multiempresa, pero nos da opción a un único código de acceso a cada una de ellas, asimismo solo considera un único correlativo para la facturación y otro para las compras, vale decir, tal como esta diseñado solo soporta un único punto de venta y de registro; es decir, esta realmente diseñado para ser usado directamente por los administradores del negocio.
  • No presenta un modulo de contabilidad pero por supuesto que conociendo al detalle el modo de funcionamiento del sistema, y las bases de datos que la componen (las que son intuitivamente identificables), pues podría fácilmente enlazar a una aplicación contable..
  • Esta desarrollado utilizando como Back-End Java(JSP) + MySQL, y por el front utiliza ExtJs-2.2, una versión bastante estable y totalmente compatible con la ultima version ExtJs-3.4 de su tipo distribuido por sencha.com

Prueba SdSimple on line:


  • URL : http://free.hostingjava.it/-igcode/ ( en evaluación por fallas en el servicio)

  • Alternativa :

    URL : http://mysdsimple.aws.af.cm/ ( New! )
    ( nuestro proyecto sdsimple corriendo sobre la plataforma Cloud de AppFog )

  • credenciales: usuario passer, password passer, para ambos casos
  • al ingresar, lea detalles de funcionamiento en la sección "readme" del menú..



sdsimple on AppFog Cloud


Algunas limitaciones de servicio teníamos con la instalación de nuestro proyecto sdsimple sobre freehostingjava.it, así que decidimos aprovechar la plataforma Cloud de AppFog, una PaaS publica muy difundida que acepta incluso servicios clouds privados, y que por supuesto, nos proporciona una cuota free mas generosa: hasta 2Gb de source code, 100Mb de almacenamiento MySQL (soporta también otras bases de datos SQL y No-SQL), 5Gb de data transfer mensual, y otros detalles que pueden revisar en el siguiente enlace)

Vale destacar en este punto que a diferencia de un servicio de hosting java convencional, en este caso, al tratarse de una PaaS, resulta imprescindible averiguar el nombre de la base de datos, del usuario y la contraseña que el servicio Cloud de AppFog nos proporciona al activar nuestra cuenta y crear nuestro servicio de base de datos (MySQL en este caso), y para ello nos resultó conveniente crear una aplicación "phpmyAdmin" y enlazarla (Bind it) al servicio MySQL creado y que utilizamos para nuestro "proyecto mysdsimple", y ya con phpmyAdmin instalado podemos crear, consultar y trabajar con nuestras tablas y datos de manera mucho mas fácil y eficiente, teniendo presente que para este caso, no consideramos ninguna opción de seguridad para la creación de las vistas al utilizar CREATE VIEW, con el objeto de simplificar su creación (los nombre de las bases de datos y usuarios autogeneradas son generalmente bastante largos).

Este ultimo punto indicado es importante para considerar porque el nombre de nuestra base de datos NO es el nombre del servicio MySQL que creamos, sino que éste se encuentra definido dentro de la variable VCAP_SERVICES que se crea al utilizar los servicios cloud de AppFog, y una forma muy practica de obtener este dato es creando en nuestra aplicación "phpmyAdmin" un archivo PHP que podemos llamar info.php (puede ser cualquier nombre), y que contenga como única instrucción phpinfo(); al ejecutarlo directamente desde nuestro navegador, desde la dirección de nuestra aplicacion "phpmyAdmin" por supuesto, obtendremos la pantalla de información PHP, y en ella, los valores de la variable VCAP_SERVICES (pueden también utilizar los métodos de código indicados en la documentación de AppFog)

Detalles de mysdsimple app desplegada en AppFog Cloud:
  • Servidor Apache Tomcat 6.0.35
  • JDK 7, version 1.7.0
  • mySQL version 5.5.31

y finalmente, hay que considerar que al trabajar con JDK7, al ejecutar nuestros comandos sql, debemos preparar nuestra declaraciones considerando el parámetro: Statement.RETURN_GENERATED_KEYS ó utilizar el método preparedStatement considerando ese mismo parámetro; y que con el objeto de recuperar las conexiones que se van agotando en el tiempo (time out), y durante la carga de nuestros proyectos JavaWeb, no olvidemos de considerar en la configuración de nuestro "pool de conexiones" los parámetros: validationQuery="SELECT 1" testOnBorrow="true", que resuelven estos problemas y evitan excepciones que podrían afectar el funcionamiento de nuestro proyecto..


Consideradas y planteadas las "limitaciones" del modelo de nuestro proyecto sdsimple, pasaremos a hablar de sus "virtudes" por cuando sdsimple es un verdadero proyecto cloud-computing que fácilmente podríamos adaptar para una gestión completa de un negocio o empresa PYME, por supuesto que haciendo las correcciones y/o adiciones que se requieran, pero principalmente considera que sdsimple nos facilita considerablemente todas las cosas que hay que tener presentes en un proyecto "completo" usando el Back-End Java + MySQL, y nos puede resultar un buen modelo para nuestros propios proyectos.

Debe resaltarse asimismo que, trabajar con Java no es lo mismo que trabajar con PHP que es un lenguaje de programación interpretado, diseñado originalmente y principalmente para la creación de páginas web dinámicas. PHP se usa principalmente para la interpretación del lado del servidor (server-side scripting) y por supuesto, para las conexiones con una diversidad bases de datos.. pero PHP se adapta muy bien con el servidor HTTP Apache -de uso casi generalizado- y viene ahora completamente integrado con él, como podrá fácilmente comprobar al revisar los miles de servicios hosting website y webservers que se promocionan por la red (y actualmente a costos bastante acequibles que incluso pueden ser menores US$5.00 mensuales, y en muchos casos Unlimited storage, unmetered transfer, and of course.. Unlimited domains.) ..pero el mundo Java no solo va asociado al mundo Web, con él pueden hacerse desde simples hasta complejos sistemas de escritorio, y con una perfomance comparable a la del lenguaje C, y por supuesto que con ella podemos desarrollar de todo: aplicaciones de escritorio, proyectos WEB, para moviles, y realmente para todo lo que se pueda conectar y/o asociar a una computadora... es un lenguaje muy potente, y su curva de aprendizaje no es tan sencilla, pero si usted estimado amigo lector ya ha llegado hasta etapa de nuestros codelabs (y se ha tomado la molestia de instalarlos, ejecutarlos y llegado a comprender), pues ya habra notado y convencido que mucho de lo que es desarrollo Web es como manejar una serie de multiples "paquetes" en diversos lenguajes y bajo determinados formatos y convenciones, que ya varios de ellos ya están desarrollados y listos para su uso... un ejemplo básico para nuestro caso es el manejo del formato JSON, que como han podido comprobar, las librerías que utilizamos para PHP ya están hechas y solo las utilizamos -como cuando utilizamos widgets, iframes, etc.- ..pues lo mismo sucede en el mundo Java... y lo mismo tambien con el mundo Python y otros ..y conociendo y manejando todos esos "paquetes" o modelos transversales a los entornos de desarrollo web, pues nos resultará mas sencillo, por poner un ejemplo, conectarnos a cualquier base de datos.. "leer", trabajar y mostrar su contenido como planteamos en nuestro proyecto, utilizando cualquier entorno de desarrollo, y utilizando frameworks como con ExtJs que hemos venido trabajando en nuestros codelabs.. y por supuesto que con otros frameworks también se puede llegar a lo mismo, pero la facilidad que pueda uilizar un mismo framework para diferentes entornos: PHP+MySQL, Java+MySQL, GAE-Python (Google AppEngine), e incluso con el "modernísimo" node-js/V8, que es Javascript pero por el lado del servidor, pues eso aún solo lo he comprobado con ExtJs.. aunando a lo anterior la posibilidad de integrarnos también a desarrollos para móviles utilizando Sencha Touch..

...volviendo al tema, finalmente ahora veremos como instalar el proyecto sdSimple en nuestro servidor local Tomcat, utilizando el IDE Netbeans para facilitarnos el trabajo, y poder tener al proyecto en un entorno "profesional" de desarrollo listo para que lo empecemos a revisar ..y empezar a planificar y realizar nuestras propias modificaciones y mejoras.... .por supuesto, que si han revisado nuestra entrada anterior ya deben tener una idea de como realizar todo el proceso, pero en esa oportunidad "cargamos" un proyecto que no estaba ligado al mundo Java (nuestros codelabs Integración Google 1ra y 2da parte), pero en esta oportunidad si vamos a utilizar códigos java y la base de datos MySQL que debemos haber instalado en los inicios de este proyecto Integración Google junto con Appserv (ó el entorno HTTP Apache, PHP y MySQL que hayamos elegido (WAMP ó LAMP), así que ahora solo quedan algunas cosas propias de dicho entorno que debemos considerar antes de proceder con la instalación.

 el caso es que el entorno de desarrollo Tomcat-Java-Netbeans no viene anexado a una base de datos en particular, así que podemos conectar a cualquier base de datos ya sea "local" o "remota" , es decir, disponible en nuestro equipo, en nuestra intranet o en la "nube" (además que desde el comienzo se menciono que el entorno de desarrollo AppServ no era sino la unión de tres grandes "sistemas" que nos facilitaba el proceso de configuración y enlace entre ellos, el servidor HTTP Apache, la base de datos mySQL y el lenguaje de programación PHP; pues ahora vamos a comunicarnos y mostrar a la base de datos MySQL sin utilizar HTTP Apache ni PHP  ...usando ahora Apache Tomcat y Java a través del entorno de desarrollo de Netbeans.

Si no tenemos instalado "Appserv" podemos proceder a instalar unicamente MySQL (si es posible), pero si no queremos trabajar directamente en el editor de comandos de MySQL, y trabajar con un entorno "gráfico" para el manejo de la base de datos como phpmyAdmin, pues necesitaremos también instalarlo por separado (también es posible), pero si queremos facilitarnos las cosas ..y probar todos nuestros "codelabs" anteriores, mejor procéda a la instalación de Appserv (u otro "servidor" similar), cuyos conceptos describimos en nuestro post empezando desde cero....


Material de Apoyo
( do click on blue icons to download )

myProject.rar (24,1Mb), que son las fuentes del proyecto SdSimple modificadas para corregirle unos defectos no críticos - la selección de tipo de "tema" por ejemplo - y para darle algunas prestaciones adicionales que a nuestro entender pueden ser importantes para el uso de SdSimple, como permitir que el IVA acepte decimales ( muchas gracias a 'Nash Bridges' de Argentina, amigo de esta comunidad ), y por supuesto, también hemos actualizado el framework ExtJs empleado a su versión Ext-3.4.0, la última compatible de sencha.com al código empleado en el proyecto SdSimple. Pueden revisar nuestra entrada el Potencial de ExtJs para mayores detalles al respecto.

leeme.txt, archivo readme elaborado por el desarrollador, que detalla el proceso de instalación original sugerido para el proyecto sdSimple ( para referencia ).

Cabe asimismo reiterar que estas "mejoras" efectuadas al proyecto sdSimple son mínimas y no definitivas ( a modo de demostración de las modificaciones que se quieran implementar ), y desde esta comunidad valoramos el esfuerzo y mérito de Pedro Peña García, desarrollador del proyecto, por haber realizado su diseño y programación, y para declararlo bajo licenciamiento GPL, hecho que apreciamos y reconocemos, y que nos permite ahora ponerlos a su alcance, que lo podamos instalar en nuestros propios servidores,  y que así realmente podamos observar con el debido detalle y en funcionamiento, un modelo "cloud computing" para la gestión administrativa de negocios PYME, y por supuesto, para que lo puedan considerar y/o emplear en sus proyectos y desarrollos personales bajo la plataforma Apache Tomcat + Java(JSP) + MySQL


NOTA : el empaquetado del proyecto es de 24.6Mb, y ha resultado algo pesado por la actualización a ExtJs-3.4.0 y por que hemos dejado en el proyecto todas las librerías necesarias para que el proyecto SdSimple pueda instalarse y funcionar sin mayores problemas ...es lo que esperamos, y lo que ha sido uno de los principales "problemas" de proyecto, por cuanto, instalar un proyecto Java tiene sus cosas... y ahora, solo queda empezar a detallar los pasos necesarios para su instalación en nuestro servidor local, lo que como hemos indicado y podrán intuir, es un proceso bastante similar a lo planteado para correr nuestros proyectos Integración Google 1ra y 2da sobre Apache Tomcat utilizando Netbeans, descrito en nuestro Codelab anterior de introducción al manejo básico del entorno de desarrollo Java(JSP)... a los que solo falta agregar algunas consideraciones propias de manejo del IDE Netbeans y de la base de datos MySQL.


Pasos para ejecutar la instalación.
( proceso resumido )


Paso 1
Crear la base de datos mySQL del proyecto

..desde nuestro servidor Appserv u otro similar, crear utilizando phpMyAdmin la base de datos myproject ( se crea vacía por supuesto), y cargar con la utilidad de importación, las tablas necesarias desde el archivo sdsimple.sql proporcionado y disponible en la carpeta descargada del proyecto. Solo la tabla "empresa" debe tener registrada la información de nuestra empresa de prueba, así como los datos usuario y password para acceder al sistema; "passer" y "passer" respectivamente por defecto, pero podemos modificarlos a nuestro criterio.. asimismo, podemos verificar el año de ejercicio y otros datos generales (solo los datos resaltados son críticos y necesarios para los efectos del caso).

NOTA IMPORTANTE :

Antes de iniciarse la importacion del archivo *.sql proporcionado, debe revisarse con detalle el caso de las vistas utilizadas; en este caso, el proyecto original sdsimple utiliza vistas con "Create View", y a las que ha agregado la opción: SQL SECURITY DEFINER que hace referencia al usuario con que nos conectamos a MySQL - root u otro que estemos utilizando - El caso es que, debemos cerciorarnos que el proceso de creación de las vistas sea efectuado correctamente sino tendremos probemas para trabajar las opciones de presupuestos, ventas, compras, cobros, pagos y movimientos bancarios.. puede tambien obviarse la opción de seguridad planteada eliminando la sentencia DEFINER=`admin`@`%` SQL SECURITY DEFINER en cada creación de vista.





Paso 2
Cargar nuestro proyecto al Netbeans

... un paso similar al realizado al "cargar" nuestros proyectos Integracion Google 1ra y 2da parte...recuerde que en este caso nuestro proyecto se denominará myproject, y debe indicar correctamente la ubicación de nuestra carpeta "web" y las otras solicitadas.. una vez cargado nuestro proyecto debemos ingresar las "propiedades" de nuestro proyecto e indicar que el formato de nuestra fuente Java será JDK5 ó superior; y asimismo que utilizaremos el servidor Tomcat para lanzar nuestro proyecto...


NOTA IMPORTANTE :

las fuentes proporcionadas del proyecto sdsimple son casi las mismas de las originales del proyecto pero adecuados para trabajar con la version 3.4.0 de ExtJS, pero los "jar" proporcionados solo permiten el correcto funcionamiento del proyecto sobre un servidor Tomcat 5.x y utilizando JDK5.. pero el proyecto puede facilmente actualizarse para que trabaje con Tomcat versiones 6.x y 7.x (incluso con JDK7 de Java); para ello, debe revisarse la Guia de Migración Tomcat, y que para nuestro caso significa que debemos grabar el archivo commons-logging-api.jar, de la librería Apache Commons Logging en la carpeta WEB-INF/lib de nuestro proyecto, dado que este servicio ya no es soportado directamente en los servidores Tomcat 6.x y 7.x (entre otros cambios que conviene revisar..).







Paso 3
Configuración del "Pool de Conexiones"

Paso muy importante que requiere una explicación del porque del proceso, y es el que nos permitirá finalmente ingresar al sistema y poder utilizarlo (caso contrario, solo podremos acceder a la pantalla de acceso y se nos denegará el acceso).. la configuración se realiza sobre el archivo "context.xml" que pueden ubicar en la carpeta "configuration files" del proyecto cargado ( ó dentro de la carpeta META-INF de "web" ); y allí deben verificar los datos de conexión a la base de datos MySQL que hemos creado en el primer paso (usuario y password principalmente, el contexto es Datasource por defecto por lo que no debemos cambiarlo excepto si llegásemos a instalar el proyecto en un servicio de hosting externo, en que generalmente se nos proporciona un nombre de contexto personalizado (o modifiquemos nosotros el contexto).



Paso 4
Configuración del Log del proyecto...

Paso importante para monitorear el funcionamiento "interno" del sistema a través de los mensajes de servidor Tomcat, especialmente si no llegásemos a realizar una instalación exitosa del proyecto y allí podremos detectar y corregir los principales errores de nuestra instalación ( observe que en nuestro caso configuramos la salida de nuestro log en la carpeta "Logs" de nuestro servidor Tomcat indicando la ruta completa; y por supuesto que podemos grabarla donde querramos, pero es importante revisar, con el editor de nuestra preferencia, los "mensajes" que arroja nuestro proyecto durante su carga y funcionamiento )



Paso 5
disfrutemos de nuestra instalación, y por supuesto...

que podemos hacer con SdSimple ?


si ya llegamos a ingresar al proyecto... aparte de la satisfacción de haber culminado el proceso ( observe que hay un historial bastante grande de casos de instalaciones no exitosas que pueden revisar en el mismo blog de la misma página oficial del proyecto SdSimple, que incluso ahora ya no esta activo ); pues aún quedan varios puntos pendientes y muy interesantes por revisar, como por ejemplo:

  • El método de acceso al sistema..
  • El modelo de conexion y trabajo con la base de datos MySQL (altas, bajas, modificaciones)
  • El método de impresión utilizado...
  • Manejo de servicios proporcionados como por mail.jar..
  • otros métodos utilizados...




..y ahora ..a planificar nuestras modificaciones y mejoras...

:/)


Saludos
@Mlaynes