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

July 2007 - Posts

A post a day, keeps the doctor away

Los que me conocen un poco, saben que prefiero escribir a hablar. Ya tengo mis años encima, y el esfuerzo físico de hablar me pesa. Estando más cerca del arpa que de la guitarra, quisiera poder escribir más, pasar en limpio varios conceptos, opiniones, e ideas. Creo que escribir sirve para muchas cosas, pero a mí en particular, me sirve para "pasar en limpio", hacerme "caer la ficha" sobre algún tema. También tiene como consecuencia, poder explayarme, sin límite de tiempo, sobre algo que me interesa, y hacer clara (o por lo menos intentarlo) mi postura sobre algún tema. A diferencia de las conversaciones de café, al escribir, tengo todo el tiempo a mi disposición, puedo detenerme, dar ejemplos, volver a repasar algo, colocar enlaces y referencias, citar perfectamente algo, recordar algo olvidado, comentar en detalle. Creo que también el lector gana en algo: no tiene que estar presente, o puede ir discutiendo, revisando lo escrito, sin tener que confiar en la memoria o en una conversación rápida (por supuesto, hay contras: la falta de diálogo inmediato es la principal).

Abrigando tantas inquietudes, desde hace más de un año he tratado de ir pasando a escrito muchas posturas y opiniones, acá y en otros de mis blogs. Con respecto a desarrollo de software, ya he escrito varios ejemplos de código, para explicar en cursos algunos conceptos, la mayor parte de los cuales están para bajarse en mi sitio personal:

http://www.ajlopez.com

Podemos discutir sobre la conveniencia, o la calidad de algunos ejemplos, pero siempre me pareció interesante, poder mostrar algo andando, más que declamar conceptos.

Aunque hay ejemplos, falta explicación. Mi intención es poder ir pasando más por escrito varios de los temas que trato de explicar en charlas y cursos.

Lo que pasa con los cursos y charlas, es que me parece que para algunas cosas, no es lo más eficiente que puedo encarar. Creo que los cursos son interesante para dialogar, pero hay trayectos de un curso, que son declamativos, explicativos, expositivos, y eso lo podría exponer mejor por escrito que hablando con mi escasa voz, ante los que puedan asistir a un curso. Claro, habrá que ver si lo que digo puede resultar interesante, pero me parece que, en caso de tener algo de esa cualidad, bien podría potenciarla con simplemente pasar en limpio, escribir, lo que opino y pienso.

Cualquiera que haya encarado escribir sobre un tema, lo más probable que haya encontrado es lo de "una cosa es decir, otra es hacer". No es fácil para todos escribir. Para ir animándome, para imponerme alguna disciplina, comencé a escribir en mis blogs. Pero desde hace casi dos meses, me he propuesto escribir un "post" cada día. Hasta ahora he cumplido. Pueden ver la lista en:

A post a day, keeps the doctor away

Sobre las virtudes de escribir, pueden consultar:

Lo que no está escrito, no existe

Sobre alguna esperanza de que lo que escribo, sirva de algo, pueden leer:

Los dientes del perro

Bueno, disculpen, hoy no hubo nada de Java, ni de .NET, ni de PHP, ni siquiera de mi caballito de batalla, la generación de código. Pero espero que les sirva. A mí, me ha servido, ya como disciplina, ya como aclaración de lo que me queda rebotando en la neurona.

Nos leemos!

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

Posted Saturday, July 28, 2007 11:53 PM by lopez | with no comments

Múltiples frameworks soportados en VS 2008

Una de las características nuevas del Visual Studio 2008, es el soporte de compilación destinada a distintas versiones del Framework de .NET (que estuvieran instalados en la máquina de desarrollo). Antes, con VS2003 sólo podíamos ir contra .NET 1.x,  y con VS 2005 sólo contra .NET 2.x. Ahora, al crear un proyecto podemos elegir la versión del framework que vamos a utilizar:

 

Incluso en un proyecto que ya tengamos armado, podemos cambiar la versión con la que compilará, en sus propiedades:

Al parecer, no lo probé, pero permite que en una solución convivan proyectos con distintos "target frameworks".

Nos leemos!

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

Posted Friday, July 27, 2007 6:15 PM by lopez | with no comments

Filed under:

Beta 2 de Visual Studio 2008 y .NET 3.5 liberada!

Ayer 26 de Julio, quedó disponible la nueva beta 2 de VS 2008 (antes conocido como Orcas). Más detalle en el blog de Scott Guthrie:

http://weblogs.asp.net/scottgu/archive/2007/07/26/vs-2008-and-net-3-5-beta-2-released.aspx

Algunas características mencionadas en ese "post", traducidas acá:

Soporte de múltiples "targets" en VS 2008

Desde VS 2008 se pueden armar aplicaciones para múltiples versiones de .NET (no sólo para la 3.5):

Soporte de CSS y Diseño Web en VS 2008

Ahora hay un modo "split" que permite ver el diseño y el HTML de una página (lo del split también se nota en el diseñador de Windows Presentation Foundation):

Soporte de ASP.NET AJAX y JavaScript

.NET 3.5 tiene incorporado soporte ASP.NET AJAX (y con nuevas capacidades, como soporte de WebParts en UpdatePanel, y soporte de serialización JSON en Windows Communication Foundation).  VS 2008 también tiene soporte de JavaScript y AJAX "puro":

Mejoras en lenguajes y LINQ

Los nuevos compiladores de Visual Basic y C# contienen mejoras en los lenguajes. Ambos agregar conceptos de programación funcional que permiten escribir un código más limpio, terso, y expresivo (según Scott Guthrie). Estas "features" permiten la introducción de un nuevo modelo de programación llamado LINQ (language integrated query) que hace que de las consultas y trabajo con datos un concepto de programación de "primera clase" (no algo separado) en .NET. 

Mejoras en acceso a datos con LINQ to SQL

LINQ to SQL es un OR/M (object relational mapper) incorporado dentro de .NET 3.5.  Nos permite modelar bases de datos relacionales usando un modelo de objetos .NET.  Podemos consultar la base con LINQ, así como actualizar, insertar, borrar datos con él. Provee un modo fácil de intregra lógica de negocios y reglas de validación en su modelo de datos:

(tengo un ejemplo con código en:

Linq en Orcas Beta 1

)

 

Más mejoras

En desarrollo de clientes, tenemos un diseñador de Windows Presentation Foundation. ClickOnce y WPF XBAPs funcionan ahora con FirFox. Proyectos WinForms y WPF pueden usar ahora el ASP.NET Application Services (Membership, Roles, Profile) para datos de usarios. Desarrollo con Office es más rico, con soporte del Office 2007 ribbon. Proyectos y diseñadores de WCF y de Workflow están incluidos en VS 2008. Unit Testing es soportado en VS Professional (y no sólo en VSTS).  Integración contínua es ahora parte del TFS. Testing de AJAX (unit y de load) es soportado por el VS Test SKU. Y más...

Veremos el año que viene la versión final?

Nos leemos!

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

Posted Friday, July 27, 2007 11:37 AM by lopez | with no comments

Tutoriales de Silverlight y WPF

Hay algunos tutoriales paso a paso en línea en el sitio

http://www.nibblestutorials.net/

sobre dos grandes temas: Silverlight y Windows Presentation Foundation.

Pero lo más interesante es que están realizados en el propio Silverlight, la nueva forma de Microsoft de exponer parte de la funcionalidad de Windows Presentation Foundation en el medio del browser. En general, se orientan a ser realizados con Blend, pero creo que pueden servir para aprender sobre WPF, que pronto quedará totalmente integrado (con diseñador y todo) en el Visual Studio 2008.

Wiki del proyecto en:

http://blog.nibblestutorials.net/

Todo gracias al esfuerzo de Celso Gomes, de Brasil.

http://channel9.msdn.com/ShowPost.aspx?PostID=263360

http://www.microsoft.com/design/Voices/Detail.aspx?key=better_web_wpfe&voice=wpfe

http://www.celsogomes.net

Nos leemos!

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

Posted Thursday, July 26, 2007 11:39 AM by lopez | 1 comment(s)

Recursos sobre Hibernate

En varios de los ejemplos que vemos en mis cursos de Java, terminamos usando Hibernate, la librería de ORM (Object Relational Mapping) para Java. Es realmente muy útil para armar un modelo de dominio con relaciones entre objetos, y manejar su persistencia de una forma bastante transparente. Ya escribiré sobre generar código desde AjGenesis para Hibernate (así como para NHibernate, algo adelanté en Generando aplicaciones con AjGenesis).

Mientras, hay varias páginas con recursos, tutoriales y ejemplos de uso de Hibernate. Una de las más abarcativas es:

Mini-guide: Hibernate and NHibernate

aunque por ahora es en su mayoría sólo sobre Hibernate.

Algunos enlaces más:

Hibernate vs. Spring
Developing J2EE Applications Using Hibernate Annotations and Spring MVC
Object Generation: A Better Approach to Hibernate Integration
Using Spring with JDO and Hibernate
Bridge the gap between Struts and Hibernate

Complete Hibernate 3.0 Tutorial
Hibernate Examples
Using Hibernate as a JDBC

Más enlaces en

http://del.icio.us/ajlopez/hibernate

http://del.icio.us/ajlopez/orm

http://del.icio.us/ajlopez/nhibernate

Nos leemos!

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

Posted Friday, July 20, 2007 11:42 AM by lopez | with no comments

Filed under: , ,

Código Abierto en .NET

El jueves que viene, organizado por el Club de Programadores y el Centro Argentino de Ingenieros, voy a dar una charla sobre código abierto en .NET. Tengo para mostrar conceptos de:

- NAnt: derivado del Ant de Java, permite la automatización de tareas, desde compilar, probar y armar paquetes de instalación en .NET
- NUnit: librería de pruebas, para la escritura de test de programas
- NHibernate: Utilitario de Object Relational Mapping, de mapeo de objetos a bases de datos relaciones
- AjGenesis: Generador de codigo y artefactos de textos, basado en modelo libre y plantillas. (jeje)

La charla es gratuita, pero hay que inscribirse previamente en:

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

Nos leemos!

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

Posted Tuesday, July 17, 2007 3:30 PM by lopez | with no comments

Filed under:

Linq en Orcas Beta 1

Estoy probando una máquina virtual con Orcas Beta 1 instalada, la versión por venir del Visual Studio 9. En otro "post" enumeraremos las principales novedades, pero hoy quería concentrarme en mostrar un pequeño gran paso que trae incorporado. (código de este ejemplo en Dbml1.zip)

Los que vieron LINQ, como tecnología Microsoft de mapeo objeto a relacional (o similar), recordaran que había un utilitario, de comando de línea, SQLMetal, que generaba código para realizar ese mapeo. Ahora, el SQLMetal sigue vivo, y seguirá un tiempo (me gustaría saber si está el código disponible), pero, siguiendo la idea de hacer todo desde el Visual Studio, la versión Orcas provee un nuevo tipo de item: Linq to SQL.

En el ejemplo, se puede arrastrar tablas desde una conexión de datos SQL Server, y luego aparecen en el nuevo diseñador (en este caso, usando un base de un Hands On Lab de Orcas Beta 1, sobre una base de datos similar a la de DinnerNow, con restaurantes, menús, e items de menús):

 

Por debajo, en un archivo de código producido automáticamente por el "designer" (jeje... vieron la luz, la generación de código... hace años que la gente de Redmond va agregando cada vez más este tipo de utilitarios dentro del VS... ), queda en este caso, un DinnerNowDataContext:

public partial class DinnerNowDataContext : global::System.Data.Linq.DataContext {


   [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public DinnerNowDataContext(string connection) :
       base(connection) {
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public DinnerNowDataContext(global::System.Data.IDbConnection connection) :
       base(connection) {
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public DinnerNowDataContext() : 
   base (global::DbmlLibrary1.Properties.Settings.Default.DinnerNowOrcasLabsConnectionString)    {
}
    public global::System.Data.Linq.Table<Menu> Menus {
     get {
        return this.GetTable<Menu>();
     }
    }

    public global::System.Data.Linq.Table<RestaurantCategory> RestaurantCategories {
     get {
        return this.GetTable<RestaurantCategory>();
     }
    }

....

 

de manera similar a como lo generaba el utilitario SQLMetal. Como antes, define "business entities" que son las clases que corresponden a las tablas de la base, como ejemplo:

 

[global::System.Data.Linq.Table(Name="dbo.Menu")]
public partial class Menu : global::System.Data.Linq.INotifyPropertyChanging, global::System.ComponentModel.INotifyPropertyChanged {
    private global::System.Guid _MenuId;
    private global::System.Nullable<global::System.Guid> _MenuTypeId;
    private global::System.Guid _RestaurantId;
    private global::System.DateTime _StartDate;
    private global::System.DateTime _EndDate;
    private global::System.Data.Linq.EntitySet<MenuItem> _MenuItems;
    private global::System.Data.Linq.EntityRef<MenuType> _MenuType;
    private global::System.Data.Linq.EntityRef<Restaurant> _Restaurant;

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public Menu() {
        this._MenuItems = new global::System.Data.Linq.EntitySet<MenuItem>(new global::System.Action<MenuItem>(this.Attach_MenuItems), new global::System.Action<MenuItem>(this.Detach_MenuItems));
        this._MenuType = default(global::System.Data.Linq.EntityRef<MenuType>);
        this._Restaurant = default(global::System.Data.Linq.EntityRef<Restaurant>);
    }

    [global::System.Data.Linq.Column(Storage="_MenuId", Name="MenuId", DBType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, CanBeNull=false)]
     public global::System.Guid MenuId {
        get {
           return this._MenuId;
        }
        set {
           if ((this._MenuId != value)) {
              this.OnPropertyChanging("MenuId");
              this._MenuId = value;
              this.OnPropertyChanged("MenuId");
           }
        }
     }

...

Veremos hasta donde llega la adopción de LINQ, y el soporte que consiga en otras bases de datos.

Gracias a la gente de Southworks por la máquina virtual.

Nos leemos!

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

Posted Friday, July 13, 2007 11:16 AM by lopez | 1 comment(s)

Filed under:

YouOS, sistema operativo en línea

No es la primera vez que veo una iniciativa como ésta, creo recordar que DynamicDrive había nacido así. Pero con AJAX y la maduración de las tecnologías Web, ahora hay un mejor ambiente para encontrarse con un sistema operativo en línea:

Se puede programar! Pueden leer:

Most of these applications have been written by users such as you! If you have some technical savvy, you can help YouOS grow by developing applications yourself. Just goto the Stuff menu again, mouse over the YouPanel menu and click on Develop Apps. Development documentacion and tutorials are available.

Es una versión alpha temprana, diríamos. Pero parece interesante. Veremos hasta donde llega esta tendencia. Creo igual que el camino es el uso de aplicaciones en línea, más que un sistema operativo. O la colaboración de varias aplicaciones, que expongan servicios y otra que los tome y los consuma y los exponga.

Nos leemos!

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

Posted Thursday, July 12, 2007 11:35 AM by lopez | 2 comment(s)

Charla Gratuita: Introducción a la Biología Molecular para programadores

La biología es una ciencia interesantísima, y de alguna manera, relacionada de varias formas con sistemas. El manejo de la información en genes, el armado de un cuerpo, fenotipo, a partir de esa información, los sistemas que componen cada ser vivo, son campo para el estudio de algo asombroso como es la vida.

Y dentro de la biología, la biología molecular se ocupa de estudiar cómo es que funcionan, cómo es ese "software" de vida que de alguna forma se encarna en "hardware" de compuestos orgánicos. El bueno de Sebastián Bassi dará una charla gratuita, el jueves 12 de Julio, acá, en Buenos Aires, en el Club de Programadores:

Biología Molecular para programadores. Fundamentos y herramientas esenciales para trabajar en Bioinformática.

La Bioinformática se ha convertido en una disciplina imprescindible en la investigación y el desarrollo de la agricultura, la veterinaria, la salud humana y la biotecnología.

El manejo, análisis y almacenamiento de datos biológicos son fundamentales en diversas areas cientificotecnológicas y requieren de recursos humanos no solo del sector de las ciencias biológicas sino de diversas disciplinas, fundamentalmente del sector informático.

Esta charla pretende dar una visión global de los alcances de la Bioinformática, tanto desde una perspectiva académica como comercial.

Debe inscribirse previamente en:

Inscripción

Pueden ver más información sobre el tema en:

http://www.bioinformatica.info
http://www.bio.net/

Pueden visitar también el sitio que dirige Sebastián:

http://www.clubdelarazon.org

 

Nos leemos!

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

Posted Wednesday, July 11, 2007 12:17 PM by lopez | with no comments

Tecnología y Arte

Martín Salías nos avisa de este video, donde puede verse la aplicación de la tecnología sobre el arte. Escribe Martín "Relax, and enjoy...".

Interesante trabajo. Me pregunto hasta donde llegará la nueva tecnología a insertarse en el arte. Creo que será una herramienta, como en su tiempo la técnica influyó creando nuevos materiales para el arte. También me pregunto hasta dónde influirá Internet en la evolución del arte. Es una pregunta muy grande para contestarla ahora, pero que quede "picando"...:-)

Posted Saturday, July 07, 2007 12:54 PM by lopez | 1 comment(s)

Mi primer robot

Marcelo Dushkin acaba de publicar el sitio

http://www.miprimerrobot.com.ar

su trabajo en el TortuRob:

El proyecto "TortuRob" está destinado a hacer posible en forma sencilla y económica, la experimentación en Robótica en la escuela y el hogar.
Consiste en una electrónica basada en microprocesador, que hace de interfaz entre una PC y la mecánica del robot.
El proyecto provee la documentación para construir y comandar esta interfaz.

Marcelo es un entusiasta colaborador del proyecto XLogo, una implementación de Logo en Java. Ha trabajado desde hace tiempo para extenderlo para llegar a controlar este tipo de dispositivos que ahora nos muestra.

Igualmente, el TortuRob tiene todo preparado para ser accesible desde otras tecnologías de programación. Leemos en su FAQ:

P: ¿El proyecto sólo funciona en Linux?
R: No. Si bien insistimos en la importancia de usar software libre, el proyecto también puede ser utilizado en un sistema privativo.
P: ¿El proyecto sólo funciona con XLogo?
R: No. Las herramientas provistas están basadas en XLogo, porque consideramos que es el medio ideal para el aprendizaje. Pero por tratarse de un proyecto libre, se pueden implementar otras herramientas.

Ahora estoy "hasta las manos", pero sería interesante hacer algún proyecto sobre el TortuRob. Alguno se anima? A contactarse ahí en el sitio. Yo apenas cambio las pilas de un control remoto, pero me gustaría que alguien encare un acceso a ese dispositivo desde C#, que, por ejemplo, pueda invocarse desde Mono.

Marcelo desde hace tres décadas se dedica al diseño de sistemas digitales. Dicta cursos de electrónica digital, microcontroladores, y robótica educativa. Pueden ver algunos de sus cursos en el Club de Programadores (busquen ahí por instructor).

Más enlaces sobre Logo en mi delicious.

Nos leemos!

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

Posted Wednesday, July 04, 2007 11:30 AM by lopez | 1 comment(s)

Filed under: ,