Angel "Java" Lopez

NET, Java, PHP y Desarrollo de Software

This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

.NET

ASP.NET

Windows Form

VB.NET

C#

Sitios

Blogs

October 2006 - Posts

Nuevo curso de Scrum en Argentina

Gracias a Tobias Meyer, y la iniciativa de Alan Cyment, tenemos un curso adicional de Scrum en Argentina, en Noviembre. El curso que se había organizado para esas fechas, se llenó, así que ahora hay una segunda edición.

 Este es el mensaje original del bueno de Tobias:

 Hi all.

Alan Cyment and I have organized an extra CSM course in Buenos Aires in November.  It will take place on Monday 20 and Tuesday 21 November.  Details can be found at: http://www.agilethinking.net/latinscrum.html?csm=argentina03
The previous CSM course filled up quickly, so please get in touch soon if you are interested in enroling for this course.
Regards,
Tobias Mayer
Tuve la oportunidad de tomar el primer curso que dictó Tobias en la Argentina, el pasado Agosto, y fue excelente. Totalmente recomendable, pueden ver comentarios sobre el curso en
El segundo curso que dictará por estos lares, que ya está completo, se detalle en:
Nos leemos!
Angel "Java" Lopez
http;//www.ajlopez.com/

Posted Sun, Oct 29 2006 9:28 by lopez | with no comments

Filed under: ,

Cursos gratuitos en línea

Una vieja ambición mía, era publicar lo que doy en mis cursos, de una forma accesible, para todos los interesados. Uno de los problemas de los cursos presenciales, es que deben ser en un lugar físico, en un determinado horario. No todos pueden asistir, y para los asistentes y el instructor, el tiempo es limitado, tanto para explicar como para preguntar y dar ejemplos o tratar temas dudosos.

Por eso, he comenzado a pasar a texto en línea, en mi sitio, mi curso de Java, que por ahora estoy completando, lección a lección, paso a paso, como si fuera un blog. Esta estrategia, de armarlo despacio pero sin pausa, espero que me lleve a completarlo, con el temario que tengo pensado: desde comienzos del lenguaje, herramientas, compilación y ejecución, variables, tipos, clases y herencia, librería de clases, entrada/salidad, con uso de red, acceso a bases de datos, e iniciación a JavaServer Pages. Luego vendrá un curso de JavaServer Pages.

 El curso (y otros, sobre .NET, PHP, desarrollo de software en general), va tomando forma desde:

 http://www.ajlopez.net/cursos

Espero que les sean útiles, y poder llegar a más gente que sólo a un grupo que puede asistir a los cursos presenciales.

Angel "Java" Lopez
http://www.ajlopez.com/

 

Posted Mon, Oct 23 2006 14:48 by lopez | 2 comment(s)

Filed under: ,

Libros de JSP y Struts

En un curso, me preguntaron cuáles libros recomendaría para estudiar JSP y Struts. Como en tantos temas, hay multitud de libros, pero rescataría algunos que tengo en mi biblioteca:

Para JSP, tengo a

Pro JSP
Third Edition
Simon Brow, Sam Dalton, Dan Jepp, Dave Johnson, Sing Li, Matt Raibe

de editorial Apress. Es un libro que trata varios temas, desde los tags de JSP, pasando por la Java Standard Tag Library, la escritura de tags (el método clásico, y los nuevos métodos), JSP 2.0, el Expression Language, la configuración, seguridad de aplicaciones, servlets, variables disponibles, filtros, etc. Realmente es muy completo.

Ahora hay una cuarta edición, que no he revisado, pero abarca JSP 2.1.

En cuanto a Struts, la aplicación MVC de la gente de Jakarta, pueden consultar el

Pro Jakarta Struts
Second Edition
John Carnell with Rob Harrop

Es de la misma editorial Apress, y abarca la versión 1.2. Lo interesante es que plantea el tema de patrones, y explica cuáles fueron utilizados en el diseño de Struts. Abarca todos los temas, desde configuración de Struts, hasta validaciones en el cliente. Emplea tanto DAOs que van contra la base, como un backend basado en EJB. Lo aísla usando Service Locator y Business Delegate. Muy interesante todo lo que abarca.

No vi que estuvieran editados en español. Pero podemos encontrar

JSP Ejemplos Prácticos
de editorial Avaya, de Andrew Patzer

También es interesante el libro de JSP 2 del bueno de Agustín Froufe, de editorial Alfaomega-Rama, pero no he visto que se actualizara a las últimas versiones del tema.

Angel "Java" Lopez
http://www.ajlopez.com/

 

 

Posted Tue, Oct 17 2006 0:23 by lopez | with no comments

Filed under: ,

Jornadas de Arquitectura .NET paso a paso

Las próximas dos semanas, cada miércoles estaré en el Grupo de Usuarios Microsoft de Argentina, en Buenos Aires, dando unas charlas sobre Arquitectura .NET, explicando paso a paso cuál es la razón, motivación y consecuencia de algunos patrones de arquitectura y diseño, que aparecen en los desarrollos .NET. Creo que es una forma mejor de explicar esos temas, creando uno o más ejemplos, que viendo cada patrón por separado. Son jornadas con costo, pueden ver más información en

 http://www.mug.org.ar/Eventos/2311.aspx

Repito acá el contenido:

Con la aparición de .NET (en varias versiones), el framework y la posibilidad de hacer aplicaciones Windows, Web, distribuidas o no, con acceso a distintas bases de datos, se plantea el tema de como se estructura una aplicación .NET, de forma que sea extensible y mantenible.
Los temas de arquitectura son varios, pero lo principal es repartir las responsabilidades en distintas partes del sistema.

Durante el curso, partiendo de ejemplos que no tienen conceptos de arquitectura, veremos como surgen y para que sirven distintos patrones y estilos arquitectónicos, como la arquitectura de capas, el modelo de dominio, la independencia de la presentación de la lógica de negocios, la independencia de la base, y el problema y soluciones de persistencia.
También se implementara, sobre un ejemplo, una implementación Windows Forms, vs. otra implementación ASP.NET. Luego, visitando alguna tecnología .NET como servicios web, se implementara una aplicación donde la presentación es remota del resto de la aplicación.

DETALLES DE CONTENIDOS:

· Un ejemplo sin Arquitectura.
· Definición de Arquitectura.
· La arquitectura de capas.
· Primera separación.
· Presentación.
· Resto del Sistema.
· Patrón Service Layer.
· Objetos para nuestro Negocio.
. Entidades de Negocio.
· Modelo de Dominio.
. El problema de la persistencia.
· Data Access Objects.
· Object Relational Mapping.
· Objetos en la presentación.
. Value Objects.
· Datos entre capas.
· Capa remota.
. Data Transfer Object.
· Tecnologías: Web Service, Remoting, Windows Communication Framework.
· Independencia del Transporte.
· Cambiando la presentación.
· Ejemplo Windows.
· Ejemplo Web.

Como siempre, la presentación y los ejemplos, quedarán en mi sitio, en el material correspondiente al curso, cualquiera podrá consultarlos.

Es la segunda vez que doy esta charla en el año. Estoy pasando algunos apuntes a texto, y serán publicados en mi sitio, porque creo que simplemente el código o la presentación, no alcanzan para transmitir las ideas y discusiones planteadas. Pasaré en limpio lo que grabe de esta charla, con los ejemplos, y quedará publicado en varias páginas, en lo que espero sea la primera implementación pública de un curso, apunte mío, albergado usando ajlearning , un sistema en PHP que estoy usando privadamente en mi sitio.

Será la primera de estas experiencias a pasar a texto. Creo que es el formato ideal para que la gente interesada en ese tema, y que no pueda asistir, pueda tener algo del contenido explicado.

Angel "Java" Lopez
http://www.ajlopez.com/

Posted Thu, Oct 12 2006 15:21 by lopez | with no comments

Filed under: ,

Charlas sobre Generación de Código

Los que asistieron a alguna de mis charlas, saben que llega el momento en el que presento, tanto tenga relación con el tema tratado como que no, a mi proyecto preferido, mi generador de código a partir de un modelo, AjGenesis.

Desde hace unos años lo vengo mejorando y probando, y me ha dado muchas satisfacciones. Lo uso en cada nuevo proyecto que encaro, así que estoy cumpliendo con la máxima "comerse la comida del perro" (que podría entenderse, aplicado a programación, a que el desarrollador debe usar sus propios productos). Tanto el año pasado (2005) como en éste, he tenido la oportunidad de dar charlas solamente dedicadas al tema de generación de código con ese proyecto. Y ahora, vienen dos charlas, con las que estoy entusiasmado.

Una, el viernes que viene, en Buenos Aires, organizada por el Club de Programadores (con costo), más información en:

http://www.clubdeprogramadores.com/cursos/CursoMuestra.php?Id=287

Otra, el .. de noviembre, en la ciudad de Santa Fe, aquí en mi pais Argentina. Tendré el gusto de volver a esa ciudad, donde hay un polo informático importante, promovido desde la actividad académica y apoyado por el gobierno. Organizado por el Microsoft User Group y la Universidad Tecnológica Nacional; es gratuito, tienen información en:

http://www.mug.org.ar/Eventos/2369.aspx

Espero poder transmitir a los asistentes a esta charla, la idea que subyace a trabajar con generación de código, tanto con AjGenesis como con el utilitario que elijan, y en especial, destacar la importancia del modelo. A diferencia del concepto de "software factories" (aunque tiene sus puntos en común), con AjGenesis se puede encarar la generación de artefactos de texto (no solamente código), desde un modelo, o de varios modelos. Por ejemplo, para entender la necesidad de más de un modelo, en los ejemplos a presentar habrá un modelo independiente de la plataforma (cómo es el sistema, las entidades y relaciones que maneja), y otro, dependiente de la plataforma (base de datos a usar, lenguaje, presentación web), que pueden combinarse. Así, desde un modelo independiente de la plataforma, se puede generar la misma solución para PHP, para VB.NET, o para VB.NET con NHibernate. Se pueden generar código de capas, que cumpla con los patrones de Business Entities, Business Components, o que siga los lineamientos de Evans, con Entities, Repositories, Services, y una capa de Application y otra de Infrastructure.

O lo que venga mañana. El modelo independiente sigue estando, es cuestión de adaptar las plantillas y procesos de generación, para que produzca lo que necesitamos, en la tecnología que precisemos.

Angel "Java" Lopez
http://www.ajlopez.com/

Posted Tue, Oct 10 2006 15:13 by lopez | with no comments

Aprendiendo Windows Workflow Foundation

En estos dias, he ordenado algunos enlaces y recursos sobre el Windows Workflow Foundation, el motor de workflow de Microsoft que es parte del nuevo .NET 3.0 en desarrollo. Más información sobre WWF desde

http://msdn.microsoft.com/workflow

El motor puede ejecutarse sobre cualquier instalación de .NET 2.0. Lo pueden bajar del enlace de arriba. Consiste en nuevos namespaces (System.Workflow.*), y utilitarios como el Workflow Designer, que pueden utilizarse desde Visual Studio 2005.

El sitio donde se encuentran recursos y ejemplos es:

http://wf.netfx3.com/

Si quiere estudiar sobre este motor de workflow, puedo sugerir algunos enlaces:

Windows Workflow Reference
http://msdn2.microsoft.com/en-us/netframework/aa663322.aspx

Windows Workflow Overview
http://msdn2.microsoft.com/en-us/netframework/aa663340.aspx

La documentación del producto en línea
Windows Workflow Foundation General Reference
http://msdn.microsoft.com/library/en-us/WF_GeneralRef/html/150ef247-47e4-4ce1-bd4d-14a901ce269e.asp

La lista detallada de clases
Windows Workflow Foundation Class Library
http://msdn.microsoft.com/library/en-us/WF_ClassLibrary/html/WF_ClassLibrary_Reference_Home.asp

Artículos de Dino Esposito, con ejemplos en WinForms y ASP.NET:
Cutting Edge: Windows Workflow Foundation
http://msdn.microsoft.com/msdnmag/issues/06/03/cuttingedge/default.aspx
Cutting Edge: Windows Workflow Foundation, Part 2
http://msdn.microsoft.com/msdnmag/issues/06/04/cuttingedge/default.aspx

Hosting Windows Workflow
http://www.odetocode.com/Articles/457.aspx
Este artículo explica como albergar a WWF dentro de una aplicación.

De TheServerSide.net:

Enterprise _NET Community Manage Application Processes with Windows Workflow Foundation
http://www.theserverside.net/tt/articles/showarticle.tss?id=ManageAppProcesses

Will work for process: Create and run WF workflows
http://www.theserverside.net/tt/articles/showarticle.tss?id=WorkforProcess

Un nuevo artículo de Microsoft:
Web Service Workflows Deploy Distributed Business Processes With Windows Workflow And Web Services — MSDN Magazine, October 2006
http://msdn.microsoft.com/msdnmag/issues/06/10/WebServiceWorkflows/default.aspx

WWF puede persistir el estado de sus instancias y de su historia. Una interesante discusión en:
WWF Persistance Status
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=774811&SiteID=1

Se pueden escribir workflows basados en máquinas de estado:
State Machines In Windows Workflow
http://www.odetocode.com/Articles/460.aspx

Bart De Smet tiene una categoría de blog sobre WWF, con artículos:

Getting started with Windows Workflow Foundation (WF)
http://community.bartdesmet.net/blogs/bart/archive/2006/08/27/4278.aspx

How to make a workflow dynamic - Part 1
http://community.bartdesmet.net/blogs/bart/archive/2006/08/28/4322.aspx

How to make a workflow dynamic - Part 2
http://community.bartdesmet.net/blogs/bart/archive/2006/08/31/4369.aspx

Exposing a workflow through a web service
http://community.bartdesmet.net/blogs/bart/archive/2006/09/03/4388.aspx

Exposing a workflow via WCF
http://community.bartdesmet.net/blogs/bart/archive/2006/09/04/4392.aspx

Tom Lake, trabajó en el WWF SDK, y mantiene un blog con cantidad de información, acerca del uso de XAML en workflows, creación de nuevas actividades, y WWF en general:

Assorted Windows Workflow  XAML activation and how to use it
http://blogs.msdn.com/tomlake/archive/2006/05/02/588756.aspx

Switch Activity
http://blogs.msdn.com/tomlake/archive/2006/08/30/Switch-activity.aspx

Basics of Working with Custom Types in Workflow
http://blogs.msdn.com/tomlake/archive/2006/07/17/668507.aspx

Do you want to invoke another workflow but you won’t know which one until runtime
http://blogs.msdn.com/tomlake/archive/2006/07/14/666287.aspx

Do you need to launch another process from your workflow
http://blogs.msdn.com/tomlake/archive/2006/07/14/666159.aspx

How to set activity property from a custom input form
http://blogs.msdn.com/tomlake/archive/2006/06/05/618185.aspx

Couple of custom activities that you can use to synchronize branches of a ParallelActivity
http://blogs.msdn.com/tomlake/archive/2006/05/04/590225.aspx

Have you had problems using the FileWatcher sample in a StateMachineWorkflow or WhileActivity
http://blogs.msdn.com/tomlake/archive/2006/05/02/588575.aspx

How to send data to a workflow
http://blogs.msdn.com/tomlake/archive/2006/06/02/614492.aspx

Project template for XAML Activation Console Application
http://blogs.msdn.com/tomlake/archive/2006/05/18/601271.aspx

Examples of using Persistence and Tracking in ASP_NET
http://blogs.msdn.com/tomlake/archive/2006/05/17/600143.aspx

Using XAML activation in ASP_NET with a StateMachineWorkflow
http://blogs.msdn.com/tomlake/archive/2006/05/08/592554.aspx

Dentro del motor de workflow, viene un motor de reglas, muy flexible. Algunos enlaces interesantes:

Introduction to the Windows Workflow Foundation Rules Engine
http://msdn.microsoft.com/windowsvista/reference/default.aspx?pull=/library/en-us/dnlong/html/intWF_FndRlsEng.asp

Windows Workflow: Rules and Conditions
http://www.odetocode.com/Articles/458.aspx

WWF: Comparing WWF rules and the Microsoft Business Rule Engine
http://www.topxml.com/BizTalk-Rule-Engine/re-16296_WWF–Comparing-WWF-rules-and-the-Microsoft-Business-Rule-Engine.aspx

WF: Comparing WF rules and the Microsoft Business Rule Engine 
http://geekswithblogs.net/cyoung/articles/56488.aspx

Rules Examples
Ejemplos de Microsoft, para destacar:

External Ruleset Demo (beta 2.2)
http://wf.netfx3.com/files/folders/rules_samples/entry309.aspx
The External Ruleset Toolkit demonstrates how to store rulesets in an external SQL Server database and load them at runtime for use by a Policy activity.

Rules Driven UI
http://wf.netfx3.com/files/folders/rules_samples/entry819.aspx
This sample will demonstrate this capability by using rulesets to pre-populate fields, do cross validation and various calculations on a target Windows Form. We will also show rules features such as forward chaining in this sample.

Sobre motores de reglas en general:

Use Rules In Your Applications
http://www.codeproject.com/useritems/Rules_In_Your_Apps.asp
A Rules Engine class library with source code and documentation

Using a Rules Engine to separate Business rules from the application
http://www.codeproject.com/useritems/Using_a_Rules_Engine.asp

Algunas discusiones interesantes en los foros de Microsoft:

Re Trouble with WebService and Persistence - MSDN Forums
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=292683&SiteID=1

Using the Rules Engine with complex data containers - MSDN Forums
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=320688&SiteID=1

Re 3 layered architecture - Where to house rules - MSDN Forums
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=263825&SiteID=1

Más enlaces sobre WWF

How to lock a workflow instance using SqlWorkflowPersistenceService?http://blogs.msdn.com/sonalic/archive/2006/04/28/586498.aspx

Managing Workflow’s Lifecycle
http://blogs.msdn.com/moustafa/archive/2006/03/02/542459.aspx

Microsoft Windows Workflow Foundation (WWF)
http://www.kainos.com/index.php?option=com_knowledge&task=view&id=29&Itemid=116

Ajax based Workflow Monitor
http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,a423e010-647b-4a32-8dfe-071bf6f43705.aspx

Angel “Java” Lopez
http://www.ajlopez.com/en

 

Posted Mon, Oct 9 2006 10:32 by lopez | with no comments

Escribiendo templates de AjGenesis en otros lenguajes

Hola gente!

Hace unos días, un "thread" de la excelente lista de .NET del Microsoft Users Group de Argentina:

Ejecutar codigo desde variable

me recordó un tema de mi "backlog" para AjGenesis, mi proyecto de generación de código. Y ayer, el bueno de Juan Pablo García, me envió por "email" el enlace a

Evaluate C# Code (Eval Function)
http://www.codeproject.com/csharp/evalcscode.asp

Es lo que quiero agregar al AjGenesis (y quizas en alguna parte de SaasyLongTail, el proyecto en el que participo en SW): que un template pueda ser escrito en C# o VB.NET, de la siguiente forma: genero un texto

using...
using...
class MyTemplate { 
    public void Evaluate(AjGenesisContext context) {
 ... y aquí generar el código del template
    }
}
Si el template es

<h1>Prueba</h1>
<h2>${Project.Name}</h2>
<#
    for (int k=1; k<=6; k++) {
#>
<h2>Mensaje <#= k #></h2>
<#
   }
#>
 
deberia generar algo como

using...
using...
class MyTemplate {
    public void Evaluate(AjGenesisContext context) {
        context.Out.WriteLine("<h1>Prueba</h1>");
        context.Out.WriteLine("<h2>" + context.Evaluate("Project.Name") + "</h2>");
        for (int k=1; k<=6; k++) {
            context.Out.Write("<h2>Mensaje ");
            context.Out.Write(k);
            context.Out.WriteLine("</h2>\n");
        }
    }
}
 

y así.... Como veran, es el viejo truco de JSP y ASP.NET: compilar el template. La idea me la sembró justamente JavaServer Pages, alguna vez.

En la solución planteada en el enlace de Juan Pablo, habra que ver como descargar esa DLL luego.

Bueno otros enlaces similares:

An Eval Function for C# using JScript.NET (JavaScript)
http://www.odetocode.com/Code/80.aspx

How To Programmatically Compile Code Using C# Compiler
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q304/6/55.asp&NoWebContent=1

Evaluate C# Code (Eval Function)
http://www.codeproject.com/csharp/evalcscode.asp

The expression evaluator revisited (Eval function in 100% managed .net)
http://www.codeproject.com/useritems/eval3.asp

Evaluating Mathematical Expressions by Compiling C# Code at Runtime
http://www.codeproject.com/cs/algorithms/matheval.asp

http://www.codeproject.com/useritems/eval3.asp
http://www.codeproject.com/csharp/runtime_eval.asp
http://www.codeproject.com/csharp/csi.asp

Otro camino es implementar su propio lenguaje:

A Simple Compiler for the Common Language Runtime
http://www.codeproject.com/cs/algorithms/compiler.asp

Vean como usa la SharpIDE, encantador... :-).... ya va a caer esa IDE en algun AjGenesis.ToolsContrib... :-)

Discusion interesante en:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=141666&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=524490&SiteID=1

Otro camino es scripting:

http://weblogs.asp.net/rosherove/articles/dotnetscripting.aspx
http://www.codeproject.com/csharp/scripting.asp
http://www.codeproject.com/dotnet/DotNetScript.asp
http://www.alintex.com/products.aspx

La gente de Java tiene, por ejemplo:

http://www.singularsys.com/jep/

Algunos enlaces que colecciono:

http://www.ajlopez.net/Busqueda.php?Filtro=Interpre

Posted Mon, Oct 2 2006 8:56 by lopez | with no comments

Una Semana Típica

Hola gente!

Solo como curiosidad, para exponer qué hago cada semana, puedo publicar hoy esta agenda esperada de la semana que comienza:

Para justificar que no posteo todos los días... Smile

Referencias

MUG = Microsoft Users Group
Club de Programadores
Southworks

Angel "Java" Lopez
http://www.ajlopez.com/

Posted Mon, Oct 2 2006 2:53 by lopez | 1 comment(s)