Cloud Camp 2da edición, Buenos Aires November 20, 2010
Posted by oscarlama in .NET, AMAZON EC2, Arquitectura, Cloud Computing, Google App Engine, Java, JRapid, noticia, Windows Azure.Tags: Cloud Computing
add a comment
Como va gente,
Este año ha sido bastante movido en lo que es el mundo de las tecnologías de la información.
Hoy les voy a presentar un resúmen de lo visto en el CloudCamp Buenos Aires 2da edición.
Cualquier comentario, será bienvenido.
Gracias y hasta la próxima.
Conferencia Microsoft MIX – 10 Argentina March 24, 2010
Posted by oscarlama in 1.1 comment so far
Que tal a todos,
Les comento que el día Lunes 22 de Marzo pasado, participe de dicha conferencia y a decir verdad, hubieron bastantes temas interesantes, que a lo largo de este artículo iré detallando.
La charla comenzó con una breve introducción en lo que viene haciendo
Microsoft, realizada por Miguel Saez ( Responsable Programa Académico Microsoft), quien señaló lo siguiente:
a) Integración de Vs2010 con Jquery, que vendría incluido en sus nuevos templates.
b) La intención de microsoft es que IE6 desaparezca y a su vez IE9 adoptará los estándares HTML5, CSS3 y SVG (Gráficos Vectoriales Escalables).
c) Microsoft realiza una fuerte apuesta a las nuevas capacidades de IE9, como por ejemplo acelerar el rendimiento del navegador al enviar instrucciones al GPU para manejo de imágenes.
d) Breve resúmen de la transición desde: Web 1.0 ->HTML +CS, Web 2.0 -> Ajax+ DOM + AsyncRequest y ahora el actual HTML5 Web -> Grafico y Media.
e) Test de rendimiento de las futuras características del CS3.0 y el uso del GPU en el procesamiento de imágenes y media , con todos los browser del mercado. (Benchmark)
Con respecto a los temas de fondo, que es lo que todos estábamos esperando, fueron los siguientes:
I Parte
Presentación de Windows Phone 7
Características:
– Diseño orientado al usuario
– Plataforma más rica en cuanto a experiencia al usuario, rápida y aplicaciones más fáciles para el desarrollador.
– Metro Desing System Inspiration. (Diseño gráfico orientado a simbología de transporte)
– Uso de Hubs( Aplicaciones People, Games, Office, music + Videos)
– Se libera el Software para developers Windows Phone en forma gratuita.
– El mismo código Silverlight es portable a plataformas de dispositivos móviles.
(Break de 10 minutos donde disfrutamos de galletitas, café y gaseosas..)
II Parte
Demos con el uso de las nuevas tecnologías
a) Demostración de tecnologías VS2010 RC , ASPNET MVC2 y Jquery .
Lo nuevo:
* Navegabilidad mejorada de búsqueda de métodos (permite buscar código por notación Pascal Case)
* Intelligent Sense mejorado ( busca la palabra contenida en el resultado)
* Soporte para trabajar en múltiples monitores
* Generación automática de los diagramas de secuencia
de un método con un simple click. ( muy interesante)
* Aparece un nuevo tipo de release llamado “Staging”, que permitirá
tener un webconfig especial para los deploy en equipos remotos, así
podríamos hacer un build con ese webconfig.
Para esta tecnología se mostró una carrito de compras.
b) Demostración de tecnologías: Silver Light4, Silverlight Toolkit, MOG for Silverlight, ASPNET MVC, Windows Azure, Vs 2010 Beta 2, Microsoft Expression Blend for NET 4 Preview.
Se presentó una aplicación que administra el calendario de conferencias, por cada relator. La cual estaba en 4 idiomas, y contenía una API para traducir texto “on the fly” con el Transletor de Microsoft. Pero lo que más me llamó la atención, dentro de las nuevas características del SL4, es que tiene la opción de realizar una impresión con un layout personalizado, a diferencia de la impresión de paginas actual que nos imprime todo el contenido de la página y como si fuera poco se puede definir el nombre del archivo en la cola de impresión.
Otra novedad es que VS2010 hace uso de MEF (Microsoft Extension Framework), que permite mostrar por ejemplo un panel que consuma información desde twitter o facebook. Si bien es cierto en las versiones anteriores de Silverlight ya existía la opción de ejecutar la aplicación fuera del navegador, ahora existe la opción de poder especificar el tamaño de la ventana y además permitir su acceso a la Webcam o al FileSystem. La demo que presentó Nicolas Paez permitía con un botón de la aplicación Web, instalarse en la máquina y crear un acceso directo en el escritorio,luego se ejecutó y abrió un archivo Word. Para hacer esto se necesitan dos pasos: primero configurar que la aplicación SL4 tenga la funcionalidad de ejecutarse como aplicacion Desktop y lo segundo es darle los privilegios necesarios realizar la exportación a Word.
c) Demostración de tecnologías VS 2010 Ultimate, Silverlight y XNA. Para los que no han oído hablar de XNA es un framework para desarrollo de juegos para Windows Phone 7 ,XBOX 360 y Windows PC.
La demostración consistió en el juego Moon Patrol, que más de alguno jugó quizás en su infancia. Sebastian Renzi ,desarrollador del demo, comentó en forma muy resumida que la arquitectura de este tipo de aplicación consistía en dos Layers una que contiene la lógica y otra que se preocupa de la parte gráfica.
d) La última presentación de esta conferencia, estuvo a cargo del diseñador Daniel Garcia (Mexicano). Quien expuso ejemplos de como crear interfaces para Windows Phone 7 utilizando la herramienta Expression Blend 4. En 15 minutos nuestro amigo mexicano expuso un prototipo de aplicación para dispositivos móviles, el cual consumía datos de una base de datos que provee Expression para estos casos.
Debo mencionar que Expression Blend 4 permite crear interfaces tanto SilverLight como para Windows Phone 7, donde para este ultimo cuenta con todos sus estilos gráficos ya predefinidos.
Bueno gente, es todo por ahora, espero que todos sigamos colaborando para asi estar al tanto de todo lo que sucede en el mundo (microsoft jaja).
Un abrazo!
Oscar.
HQL – Nhibernet – Castle Record ( Uso de alias en consultas) March 22, 2010
Posted by oscarlama in .NET, 1, Arquitectura, coding, Tips.Tags: .NET, CastleRecord, HQL, Nhibernet, troubleshooting
add a comment
Que tal a todos,
Este es mi primer post, y quiero compartir con ustedes algo que quizás ya más de alguno vio.
Es la desaparición del uso de “alias” de SQL en el nuevo lenguaje HQL (Hibernate Query Language. El proyecto en el cual estoy trabajando tiene tecnología Nhibernet con Castle Record.
El tema surgio cuando necesitaba obtener una columna sumarizada de mi consulta a la Base Datos, si bien es cierto se puede realizar en la query HQL, no es trivial el posterior mapeo con el control gridView.
Realizando una pequeña investigción en la Internet, me encontré que no se considero el uso de alias, para algunos fue algo que se debió incluir y para otros no. El tema es que segun fuentes informales esta funcionalidad se incorporará en las futuras versiones.
Bueno volviendo a nuestro problema, encontré 3 posibles soluciones que compartiré con ustedes:
Caso 1)
Con HQL podes agregar campos calculados en la clausula “select” solo si el calculo está adentro de una función (es un tema del parser actual).
Eso significa que tu select luciría algo así:
select shop, cast(p.Price * shop.Quantity, double) from ShoppingCart shop join shop.Products p where shop.Cartguid = :cart
La respuesta de esa select es un List de List. La list interna tiene dos elemento el primero es shop y el segundo el el calculo.
Para transformarla en una List de un solo tipo de obj (digamos shopCalc) deberás usar un especifico ResultTransformer.
Toda esta historieta es valida solo y exclusivamente si usas la versión SVN de NH.
Caso 2)
Mapeo de objeto usando el tag <formula> de la property. El tag <formula> sirve exactamente para eso; con el le estas diciendo a NH que ese campo es algo que no tiene persistencia si no que lo calcula el RDBMS y por lo tanto NH no le presta mucha atención (o por lo menos no debería causar problema, si lo causa es seguramente un BUG).
El valore del tag <formula> es una expresión SQL (subrayo SQL).
El tag formula está disponible ya en la 1.2.0GA.
Caso 3)
Usando los tag <insert> y <update> a false (insert=”false” update=”false”)
Los tag se aplican a una property de una clase y sirven para decirle a NH de despreocuparse de ese campo sea cuando hace el insert que cuando hace el update de esa clase. Los tag <insert> y <update> están disponible desde mucho tiempo y seguramente en la 1.2.0GA. 
Personalmente yo utilicé la del caso 2), para mi caso en particular necesitaba obtener la diferencia entre dos columnas de tipo Datetime de la Base Datos. El código para crear dicha propiedad virtual es el siguiente:
[Property(Formula = " DateDiff(hour,StartTimeLog,getdate())")]
public virtual string OpenLogHours { get; set; }
Espero que les sirva este articulo.
Saludos !!
Oscar.
Consumiendo desde .Net un Web Service publicado en Java (HttpWebRequest da time out) January 28, 2010
Posted by Leandro Romero in .NET, Arquitectura, coding, Diseño, Tips.Tags: GetRequestStream Time Out, java, troubleshooting, web service
3 comments
Buenas gente! Tanto tiempo!
Desde hace un tiempo estoy trabajando en un aplicación que consume unos web services hechos en Java, la cual por momentos tiene bastante concurrencia y operaciones que demandan mucho trabajo para las dos “puntas” que están en juego.
Tengo que aclarar que esta aplicación no la desarrollé yo, la “heredé” digamos. Así que lo que estaba en producción andaba sin problemas. Los usuarios se conectaban, hacían sus operaciones sin mayores problemas, y como no necesitaba mayores mantenimientos esa parte yo no la había tenido demasiado en cuenta.
Hasta que llegó el día que el servicio que exponía el amigo (nótese: AMIGO) java tuvo que sufrir algunos cambios, con lo cual tuve que actualizar referencias del Wsdl en mi solución .Net. Hasta acá nada del otro mundo, agarro el proyecto donde está la referencia Web (sí, está hecho a la antigua porque la aplicación es del 2006) pego la nueva dirección del wsdl y actualizo referencias. Esto hace que la clase que hace de proxy se regenere (básicamente borra lo que estaba y vuelve a armar los archivos necesarios, entre ellos el Reference.cs). Compilo, genero el exe nuevo y le digo al analista: “Deployalo en preproducción para acelerar la salida a producción, total no toqué nada, debería andar como hasta ahora”
Y no, por algo existe Murphy. A los dos días el cliente que estaba haciendo las pruebas en prepro me dice: “Lean, esto que compilaste no anda”. “Cómo que no anda si no toqué nada??!?!” (La excusa del programador nº 1) “No anda, tira un error de conección cuando se conectan 3 usuarios y ejecutan una tarea los 3, fijate el log!”
Y como buen desarrollador profesional que soy, fuí a ver el log y decía:
The operation has timed out System.Net.WebException System.IO.Stream GetRequestStream() at System.Net.HttpWebRequest.GetRequestStream() at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
“Elemental mi querido Watson” dije al ver el time out, “el server java no está respondiendo”, pero no, la excepción es bastante clara, está fallando al obtener el Request Stream; o sea, no mandó nada todavía, se está preparando para hacer la llamada y falla. Raro, no?
Investigando esa excepción (googleando) en los foros todos eran bastante claros “Flaco, a los stream que abras cerralos, eso te pasa por no cerrarlos: Stream.Close() papá!” (son foros argentinos, por eso) Pero no, yo no me encargo de streams ni nada de eso a mano, porque para eso está el código generado automáticamente por el Visual Studio y este código es el mejor, no tiene errores, es perfecto porque lo hace automático el Visual Studio no?
NO, claramente es la Lección aprendida 1. Según este blog (el único que vi que dió con este problema) que me pasó mi buen amigo Charly es un bug del proxy que se genera automáticamente, para solucionar esto hay que deshabilitar el parámetro KeepAlive del request, más específicamente hacer un override de un método de esa clase y deshabilitarlo y más técnicamente hablando:
protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
HttpWebRequest webRequest = (HttpWebRequest)base.GetWebRequest(uri);
webRequest.KeepAlive = false;
webRequest.ConnectionGroupName = Guid.NewGuid().ToString();
return webRequest;
}
Puse esto en la clase proxy (la que está en el archivo Reference.cs) y voilà! problema arreglado
Ahora, haciendo un poco de reflexión, por qué antes andaba y cuando yo regeneré el cliente tuve que hacer esto??? Para despejar esta duda que no me dejaba dormir, utilicé una herramienta amiga llamada Reflector para ver el código de la dll que se compiló en su momento, ya que dudaba de los fuentes que había heredado y sí, efectivamente estaba esa porción de código de alguien (sólo Dios sabe quien) que se topó con el mismo problema.
Leccion aprendida 2 (y consejo sano, además). Siempre documentar las soluciones “mágicas” que se incluyan en el código, porque uno nunca sabe quién va a ser el pobre santo (o gil) que lo herede y más si se escriben en archivos que se generan automáticamente.
Y ahora sí, el cliente lo probó en test, lo deployamos en preproducción donde fue sometido a estrés sin ningún problema y finalmente salió a producción. Siempre son lindos los finales felices!
Hasta luego!
Leandro
HTML 5 – Aggiornando la web November 27, 2009
Posted by charly in coding, Diseño.Tags: desarrollo, development, html, standards, web, web development, www
add a comment
Desde hace un tiempo se esta desarrollando la especificación del estándar HTML 5, el cual trae consigo una serie de cambios esperados desde hace tiempo.
Se quitaron tags, sobre todo los que tenían que ver con la presentación, los cuales pueden manejarse con estilos CSS, por ejemplo: <font>, <center>.
Se agregar nuevos tags con el objetivo de darle más semántica al código, por ejemplo: <footer>, <section>, <article>, <dialog> . Así como también otros tags y atributos fueron modificados.
Una de las mejoras realizadas es el llamado “local storage” ó “DOM storage”. Funcionalidad por la cual se podrá mantener información en el cliente, totalmente integrada al estándar, mitigando el riesgo de la pérdida de conexión.
Algo muy esperado por los usuarios es la feature de soporte de “Drag and Drop” nativo para que el usuario pueda arrastrar documentos, imágenes, videos, etc desde y hasta el navegador para compartir contenido.
Otra característica muy bienvenida por la comunidad es algo llamado “Web workers”, la cual habilita el uso de scripts que corren en background, en un contexto aislado a la interacción del usuario con la página. Así se mejoran los tiempos de respuesta y “lags” en la navegación de los sitios.
Próximamente voy a compartir más info ahondando en los temas más importantes
Links relacionados:
Draft de la especificación HTML 5 (WC3)
Cualquier comentario pueden escribirme a carlos.paez at snoopconsulting com
Charla atributos de calidad en .Net November 19, 2009
Posted by charly in .NET, Arquitectura, ASP.NET, coding, Diseño.3 comments
Durante el día de hoy tuve la oportunidad de dictar una charla en las oficinas de Buenos Aires, el tema elegido fue “Atributos de calidad con .net”.
Les dejo la presentación aquí. Espero que les sea útil.
Cualquier comentario pueden escribirme a carlos.paez at snoopconsulting com
notatki programisty (usar log4net en sharepoint) July 16, 2009
Posted by npaez in .NET, sharepoint.Tags: log4net, sharepoint
add a comment
Ja! puede que se pregunten que es “notatki programisty”, bueno resulta que como es costumbre por estos dias estabamos trabajando con SharePoint. En particular en esta ocasión intentábamos configurar log4net y mientras haciamos troubleshooting dimos con un blog en un idioma desconocido para nosotros (aunque Charly aventuró correctamente que se trataba de polaco). Si bien ninguno de nosotros manejaba ese idioma, entendimos lo suficiente para resolver nuestro issue. Por si les interesa el blog en cuestión es este:este blog (http://notatkiprogramisty.blogspot.com/2008/04/szybki-start-z-log4net.html)
Saludos!
Presentacion en UTN June 25, 2009
Posted by npaez in agile, noticia.Tags: agile, utn
add a comment
El martes pasado estuve de invitado en la clase de la materia Arquitectura de Proyecto IT de la Universidad Tecnológica Nacional (regional Buenos Aires). Durante la misma presenté nuestro caso de implementación de métodos ágiles. De los aproximadamente 20 alumnos presentes, solo unos 5 conocian de métodos ágiles y solo 2 habían aplicado. La participación de los alumnos fue buena y creo que la presentación les resulto interesante.
Aquí está publicado el material utilizado durante la presentación.
Como crear una master page propia en Sharepoint June 18, 2009
Posted by matiassnoop in .NET, coding, Diseño, sharepoint.Tags: desarrollo, masterpages, moss, sharepoint, wss
add a comment
A continuación describiré los pasos que se deben seguir para crear un feature con una master page:
1) Creamos un proyecto de tipo Class Library( llamemosle por ejemplo: DemoMasterPageFeature)
2)Creamos una carpeta llamada 12.
3) Agregamos una carpeta en 12, y le llamamos Template.
4) Agregamos una carpeta en Template, y le llamamos Features.
5) Agregamos una carpeta en Features, y le llamamos DemoMasterPage.
6)Agregamos tres carpetas en DemoMasterPage, y les llamamos MasterPages, Images y Styles.
7)En la carpeta MasterPages hacemos nuestra masterpage, llamemosla: demomasterpage.master
8)Por otro lado en las carpetas Images y Styles agregaremos las imágenes y los css correspondientes.
9)Agregamos un archivo xml llamado feature.xml a la carpeta DemoMasterPage.
10)En el escribiremos el siguiente código:
<Feature Id=”95F25D4A-D256-4158-96FE-010F599149CC” Title=”Demo Master Page”
Scope=”Site” Version=”1.0.0.0″ Hidden=”FALSE” DefaultResourceFile=”core” xmlns=http://schemas.microsoft.com/sharepoint/ Description=”This Feature contains the demo master page”>
<ElementManifests>
<ElementManifest Location=”elements.xml” />
<ElementFile Location=”MasterPages\demomasterpage.master” />
</ElementManifests>
</Feature>
11)Agregamos un archivo xml llamado elements.xml a la carpeta DemoMasterPage.
12) En el escribiremos el siguiente código:
<Elements xmlns=”http://schemas.microsoft.com/sharepoint/”>
<Module Name=”DemoMasterPage” Url=”_catalogs/masterpage” Path=”MasterPages” RootWebOnly=”FALSE”>
<File Url=”demomasterpage.master” Type=”GhostableInLibrary” />
</Module>
</Elements>
13)Realizamos un build en el proyecto para guardar los cambios.
Una vez que realizamos todos estos pasos debemos deployar el feature:
1)Copiamos la carpeta DemoMasterPage en %Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES.
2)Abrimos una command prompt del visual studio e ingresamos lo siguiente:
cd C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN.
3)Posteriormente ingresamos lo siguiente: stsadm -o installfeature -name DemoMasterPage -force
4)Finalmente: stsadm -o activatefeature -name DemoMasterPage -url http://mysitecollectionpath -force
Ahora debemos setear la nueva Master Page.
1)Trabajando en MOSS debemos ir a la configuración del sitio y acceder dentro de Aspecto al link Página Maestra.
2)Seleccionamos en el combo nuestra página y aceptamos.
Con todo estos pasos cumplidos ya tendríamos nuestra nueva MasterPage.
Para realizar el post me guíe en la siguiente pagina: http://sharepointmagazine.net/technical/development/deploying-the-master-page
Demo de cierre de iteración June 7, 2009
Posted by npaez in agile, practices.Tags: agile, sprint review
add a comment
El viernes pasado terminanos la tercer iteración del proyecto de portal de compras en el cual estamos trabajando actualmente. Un hecho interesante fue que la demo del producto construido la llevo adelante el product owner y su equipo. Personalmente me parece algo absolutamente normal que sea el product owner quien muestre el producto que el mismo definió, pero esto no parece ser normal para todo el mundo. La realidad es que el hecho de que lo muestre el product owner, no tiene que ver con cuan estable esté el producto sino con cuan acorde esté el producto con lo que el product owner esperaba. Durante la iteración trabajamos en forma conjunta y validando con el product owner cada funcionalidad desarrollada y es por ello sabiamos que el producto era precisamente lo que el product owner queria.