Friday, August 15, 2008

[MISC] ¿Cuál es el PID de un Application Pool?

Nunca me había preguntado esto hasta que un proceso w3wp.exe, o sea un Application Pool, o sea el lugar donde está corriendo uno o varios aplicativos ASP.NET, se colgó y puso la CPU del servidor al 100%. En ese momento que hicimos?, matamos el proceso porque estaba generando problemas al resto del servidor pero no sabiamos cual era el Application Pool al cual pertenecia el proceso w3wp.exe.

En el TaskManager podemos ver todos los Application Pools (w3wp.exe) corriendo en el servidor y su correspondiente PID.


En en IIS podemos ver los Application Pools que tenemos configurados pero no nos dice cual es el PID.


Una forma de hacer esa correlación es mediante un script que encontré gracias al querido www.google.com. Como usar este script pueden encontrarlo aquí, pero basicamente lo que hay hacer es ejecutar
c:\windows\system32\cscript.exe c:\windows\system32\iisapp.vbs desde un .bat.

El resultado de la ejecución del script seria lo siguiente:


Quiero agradecer a la persona que escribió el artículo de donde saqué la info para este post.

Tuesday, July 29, 2008

[ASP.NET2.0] Está viva tu aplicación web?

por Ing. Juan Pablo Ibañez
http://ing.juanpablo.googlepages.com

ASP.NET 2.0 está provisto de una funcionalidad que nos permite supervisar el estado de las aplicaciones ASP.NET implementadas, brindándonos información en tiempo de ejecución detallada. Con esta funcionalidad podemos loguear todos los acontecimientos (eventos, errores, etc.) de nuestra aplicación a un archivo de texto, al Event Viewer, a una casilla de mail, etc.

Esta funcionalidad se llama healthMonitoring y para hacer uso de ella basta en la mayoría de los casos con agregar una serie de entradas en el web.config.

En este artículo vamos a ver principalmente un evento de healthMonitoring que puede ser capturado llamado WebHeartbeatEvent. Este evento puede ser configurado para que de dispare cada un cierto tiempo, lo que provoca un efecto de latido. Mientras el servidor y nuestra aplicación estén up cada cierto tiene se disparará este "latido" y podremos saber que nuestra aplicación está en funcionamiento. Se puede configurar este evento para que grabe un log en el EventViewer, en un archivo de texto, o mande un mail.

A continuación vemos las entradas que debemos agregar en el Web.config para que mande un mail cada vez que se produce el evento.

Debemos configurar para que nuestra aplicación pueda mandar mails, por ejemplo de esta forma:

<system.net>
<mailSettings>
<smtp from="xxxxxxxxxx@xxxxxxxxxx.xxx" >
<network host="xxx.xxx.xxx.xxx" />
</smtp>
</mailSettings>
</system.net>

Ahora si configuramos las entradas para healthMonitoring:

<healthMonitoring enabled ="true" heartbeatInterval="0">
<providers>
<add name="mail"
type="System.Web.Management.SimpleMailWebEventProvider"
to="xxxxxxxxxx@xxxxxxxxxx.xxx"
from="xxxxxxxxxx@xxxxxxxxxx.xxx"
buffer="false"
subjectPrefix="Event "/>
</providers>
<rules>
<add name="mail Heartbeats"
eventName="LogueoHeartbeats"
provider="mail"
profile="Default"
minInstances="1"
maxLimit="Infinite"
minInterval="00:30:00"
custom=""/>
</rules>
<eventMappings>
<add name="LogueoHeartbeats"
type="System.Web.Management.WebHeartbeatEvent,
System.Web,Version=2.0.0.0,Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
startEventCode="0"
endEventCode="2147483647" />
</eventMappings>
</healthMonitoring>



Monday, July 07, 2008

[AJAX] Emular el UpdateProgress con ModalPopup


por Ing. Juan Pablo Ibañez
http://ing.juanpablo.googlepages.com

Uno de los controles mas usados de la librería AJAX de Microsoft (ajax.asp.net) es el control UpdatePanel. Este control nos permite hacer un postback parcial de la página y solamente modificar una sección de la misma sin tener que recargar completamente la página. Cuando este postback parcial demora mucho, es conveniente mostrarle el estado al usuario, generalmente se muestra un mensaje como por ejemplo "cargando...", "loading...", "procesando...", etc.
La librería AJAX de Microsoft nos permite hacer esto mediante el control UpdateProgress. Usar este control es sumamente fácil, lo que debemos hacer es definir en un div, por ejemplo, el templete que deseamos que se muestre cuando se está realizando un postback asíncrono.

Un ejemplo de UpdateProgress seria:

<asp:UpdateProgress ID="UpdateProgress1" runat="server">

    <ProgressTemplate>

        An update is in progress...

    </ProgressTemplate>

</asp:UpdateProgress>


Cuando algunos de los UpdatePanel que tenga nuestra página .aspx haga un postback parcial, aparecerá el UpdateProgress y el usuario sabrá que debe esperar hasta que se actualice la parte de la página que está englobada en el UpdatePanel.

Hasta aquí es todo muy simple, el problema surge generalmente cuando el usuario no espera que se actualice la página y hace click nuevamente en el botón, o en otros botones y genera sucesivos postback parciales de la página. Para evitar esto existen varias soluciones:
  1. Deshabilitar del lado del cliente por Javascript todos los controles que hagan postback al servidor hasta que finalice la actualización parcial de la página. El problema es que requiere mucho código Javascript para hacerlo. Si agregamos un control nuevo, tenemos que modificar nuestra rutina para contemplar este nuevo control.
  2. Otra opción, que es la razón de este artículo es utilizar un ModalPopup que cuando presionemos cualquier control que haga un postaback parcial aparezca bloqueando toda posibilidad de que el usuario haga un click en otro control. La ventaja de esta solución es que podemos implementarla de manera tal que sea independiente de la cantidad de controles que tenga nuestra página y de cantidad de páginas que tenga nuestro sitio, etc, etc, etc.

Los elementos que debemos utilizar en esta segunda opción son:
  1. MasterPage.
  2. ModalPopup.
  3. Sys.WebForms.PageRequestManager.

La idea es armar un esquema que no necesite ser replicada en cada una de los webforms que creemos en nuestra aplicación, es por eso que utilizaremos una MasterPage. Es decir en nuestra MasterPage tendremos definido el ModalPopup y el Javascript necesario para hacerlo aparecer, cuando se lance una petición de postback parcial por cualquiera de los controles definidos en cualquiera de nuestros webforms que tengan seteada nuestra MasterPage y también ocultar el ModalPopup cuando la actualización esté terminada.

Muestra MasterPage podría ser:

<%@ Master Language="C#" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title></title>

    </head>

    <body>

        <%-- Código Javascript --%>

        <form id="form1" runat="server">

            <div>

                <asp:ScriptManager ID="ScriptManager1" runat="server"

                    EnableScriptGlobalization="True"

                    EnableScriptLocalization="True">

                </asp:ScriptManager>

                ESTA ES UNA MASTER PAGE

                <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">

                </asp:contentplaceholder>

            </div>

            <%-- ModalPopup --%>

        </form>

    </body>

</html>


Una vez que tenemos nuestra MasterPage lo que debemos definir en esta es el ModalPopup. Un ejemplo de ModalPopup sería:


<asp:LinkButton ID="LinkButton1" runat="server" Visible="true"/>

<asp:Panel ID="Panel" runat="server" Style="display: none">

    <table class="modalPopUp" border="0" cellpadding="0" cellspacing="0">

        <tr class="modalPopUpTopRow">

            <td valign="middle">

                <img src="images/ajax-loader.gif" alt="procesando..." />

            </td>

        </tr>

        <tr>

            <td align="center">

                Procesando...

            </td>

        </tr>

    </table>
</asp:Panel>

<cc1:ModalPopupExtender ID="ModalPopupExtender" runat="server"

    BehaviorID="programmaticModalPopupBehavior"

    TargetControlID="LinkButton1"

    PopupControlID="Panel"

    BackgroundCssClass="modalBackground"/>

Basicamente es ModalPopup tiene un gif animado y una leyenda de "Procesando...". O sea que cuando algún control haga una petición de postback parcial aparecerá este ModalPopup indicando que debe esperar a que termine la actualización de la página evitando que el usuario pueda hacer click en cualquiera de los controles.


Lo que falta ahora es el código Javascript que hacer aparecer y desaparecer el ModalPopup cada vez que comienza y finaliza un request.

Para esto haremos uso del objeto PageRequestManager y le añadiremos 2 funciones una para el evento beginRequest y otro para el evento endRequest.

Estas funciones lo que hacen es buscar el BehaviorID del ModalPopup y una vez que obtenemos la referencia al ModalPopup llamar al método hide() o show() del ModalPopUp.


<script type="text/javascript">

    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(

        function (sender, arg){

            var modalPopupBehavior = $find('programmaticModalPopupBehavior');

            modalPopupBehavior.hide();

        }

    );

   

    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(

        function (sender, args) {

            var modalPopupBehavior = $find('programmaticModalPopupBehavior');

            modalPopupBehavior.show();

        }

    );

</script>

Thursday, June 12, 2008

[MISC] GMAIL Labs...

En esta entrega quiero contarles sobre GMAIL Labs. Soy usuario de GMAIL desde el 2004, época en la cual había que conseguir una invitación para poder tener tu cuenta. En estos 4 años de uso de GMAIL, las funcionalidades de mi cuenta han ido mejorando increiblemente, cada día puedo hacer mas cosas con mi GMAIL y lo bueno de esto es que unos de
los primeros en recibir esas nueva mejoras. Qué es eso del primero??? Las nuevas funcionalidades de GMAIL no son incorporadas a las cuentas de todos los usuarios a la vez, sino que lo van haciendo por lotes, primeros algunos usuarios y despues otros. La última funcinalidad de mi GMAIL es GMAIL Labs.

GMAIL Labs se ve algo así:



GMAIL Labs es un conjunto de nuevas funciones que están en beta y pueden ser habilitadas o no desde Settings.



Las funciones que tengo disponibles hasta ahora son:
  1. Quick Links, dds a box to the left column that gives you 1-click access to any bookmarkable URL in Gmail. You can use it for saving frequent searches, important individual messages, and more.
  2. Superstars, adds additional star icons. After enabling this feature, you can choose which icons you wish to use in the "General" Settings page.
  3. Pictures in chat, see your friends' profile pictures when you chat with them.
  4. Fixed width font, adds an option to the reply dropdown menu that lets you view a message in fixed width font.
  5. Custom keyboard shortcuts, lets you customize keyboard shortcut mappings. Adds a new Settings tab from which you can remap keys to various actions.
  6. Mouse gestures, use your mouse to navigate with gestures. Hold right-click and move the mouse left to go to a previous conversation, move it right to go to the next conversation, and move up to go back to the inbox view. Works best on Windows.
  7. Signature tweaks, places your signature before the quoted text in a reply, and removes the "--" line that appears before signatures. Can't use this and the "Random signature" Labs feature at the same time.
  8. Random signature, rotates among random quotations for your email signature. Can't use this and the "Signature tweaks" Labs feature at the same time.
  9. Custom date formats, adds options to the general settings page allowing the date and time format to be changed independent of language. For example, you can use a 24-hour clock (14:57) or show dates with the day first (31/12/07).
  10. Muzzle, conserves screen real estate by hiding your friends' status messages.
  11. Old Snakey, kick it old school with Old Snakey! Enable keyboard shortcuts and hit '&' from the main page to play a game of snake.
  12. Email Addict, lets you take a break from email and chat by blocking the screen for fifteen minutes and making you invisible in chat.
  13. Hide Unread Counts, hides the unread counts for inbox, labels, etc.
Personalmente no tengo habilitadas todas estas funciones, solo las que creo que me son más útiles como ser: Superstars, Pictures in chat y Signature tweaks.

Otro punto importante es que estas nuevas funciones estan en BETA y pueden hacer que tu GMAIL se tilde, clave, o como quieras llamarlo, por lo cual hay una forma de entrar a GMAIL pero con GMAIL Labs deshabilitado. En la siguiente imagen vemos algunas consideraciones que hace GMAIL sobre su GMAIL Labs y la forma para deshabilitarlo en caso que falle.

Wednesday, June 04, 2008

[MISC] Noticias mias y yapas...

Hola, como están? Yo muy bien, como les comenté antes rendí el examen 70-536. Ese día estaba contento, pero hoy recibí otra sorpresa, un mail donde me dan mi MCP ID y también acceso a sitio para todos los que somos Microsoft Certified Professional.
Les cuento, en ese sitio los MCP podemos ver nuestro historial, crear logos con las certificaciones obtenidas, comprar cosas en el MCPeShop, suscribirmos al MCP Flash y acceder a numerosos recursos.

Por ahora solo soy MCP, todavía no soy MCTS que es mi objetivo asi que el único logo que estoy habilitado a usar es este:
De todas formas estoy mas que contento ;)

Ahora si les dejo unos videitos muy buenos de nuevas cosas que está haciendo Microsoft.






















Wednesday, May 28, 2008

[Células.NET] Células.NET Córdoba en Facebook

Facebook esta de moda, no hay con que darle. Es divertido, está lleno de gente, miles de juegos para divertirse entre amigos y no nos podemos quedar afuera. Los programadores también tenemos que divertirnos, jaja ni yo me lo creo diciendo esto, pero bueno, hay que cambiar algunas cosas. Es por esto que creé un grupo en Facebook llamando Células.NET Córdoba para que, aparte de capacitarnos en tecnologías Microsoft, también nos divirtamos.

Acá les dejo el logo del grupo:

[NET 2.0] Un paso mas cerca...

Es es un post de felicitación :), felicitación a mi mismo ;) por haber rendido exitosamente el examen: Exam 70–536: TS: Microsoft .NET Framework 2.0 - Application Development Foundation
lo que me coloca a un paso de obtener la certificación MCTS: .NET Framework 2.0 Web Applications.

Aprovecho el post para explicar como se obtiene esta certificación. MCTS son las siglas de Microsoft Certified Technology Specialist y se puede ser especialista en algunas de estas 3 tecnologías:

  1. Web Applications
  2. Windows Applications
  3. Distributed Applications
Para obtener cualquiera de estas 3 certificaciones hay que rendir 2 exámenes. El primero, Exam 70–536: TS: Microsoft .NET Framework 2.0 - Application Development Foundation, sobre el Framework 2.0. Este examen te habilita a rendir cualquiera de los otros 3, es como el básico, pero de básico no tiene nada, por lo menos es mi opinión. Luego se puede optar por:
  1. Exam 70–528: TS: Microsoft .NET Framework 2.0 - Web-Based Client Development, esta es la que estoy buscando yo.
  2. Exam 70-526: TS: Microsoft .NET Framework 2.0 – Windows-Based Client Development.
  3. Exam 70–529: TS: Microsoft .NET Framework 2.0 – Distributed Application Development.
Una vez aprobados los 2 exámenes obtenes la certificación. Fácil, no? jajaja

Les dejo link a una imagen mas explicativa del plan que estoy siguiendo yo:
http://www.mediafire.com/imgbnc.php/6b720bd0175d99e42c8ad79a375058e86g.jpg





Thursday, May 15, 2008

[Conferencias] EVENTO TÉCNICO EN CÓRDOBA
por Ing. Juan Pablo Ibañez
http://ing.juanpablo.googlepages.com

Amigos, en esta oportunidad quiero contarles que por suerte y por fin se realiza en Córdoba un evento del MUG.

Aquí les dejo los temas, horarios y link para registrarse.

Particularmente creo que va a estar bueno ya que los oradores son muy buenos. Eugenio creo que la mayoría lo debe conocer es un grande y Matías Iacono, colega mío en la UTN tambíen es un groso.

Córdoba - Todo Microsoft 2008
Martes, 20 de Mayo de 2008
Lugar: Auditorio de Radio Nacional - General Paz Esq Santa Rosa, Córdoba Capital

Jornada de actualización profesional con la presentación de las novedades 2008 en tecnología Microsoft. Por primera vez juntos tres de los mas reconocidos profesionales cordobeses.
Evento gratuito. Vacantes limitadas.

16:15 hs - Acreditación

16:45 hs - Inicio de las Conferencias

La Seguridad en Windows Server 2008 - Enrique Dutra (MVP)

- Conoce el nuevo firewall de Windows 2008.

- Redes Seguras. Conexion segura mediante NAP.

- Bitlocker


Introducción a SQL Server 2008 - Matías Iácono (MVP)
- Evolución de las versiones de SQL Server

- Entorno de administración de SQL Server

- Conceptos de gestión de SQL Server


Visual Studio 2008 - Eugenio Serrano (MVP)

- Creando la siguiente generación de aplicaiones Web con mayor productividad

- Diseñador HTML y CSS, AJAX, WLS, JS Debugging e INtellisense


22:00
- Fin del evento - Sorteos

Para registrarse, este es el link:
http://www.mug.org.ar/registracion.aspx?idevento=3004

Friday, May 09, 2008

[AJAX] Carga dinámica de páginas ASPX con AJAX Enabled WebService

por Ing. Juan Pablo Ibañez
http://ing.juanpablo.googlepages.com

Con la aparición de AJAX, ahora podemos cargar ciertas partes de una página ASPX sin tener que recargar toda la página. El problema surge cuando en una página queremos incluir diferentes funcionalidades que habitualmente están en páginas separadas. Si intentamos incluir todas las funcionalidades en nuestra página e ir cargándolas mediante AJAX, nuestra página comienza a hacerse demasiado grande para poder albergar todo el código que permite cambiar las partes y mostrar las distintas funcionalidades sin recargar toda la página. Hay aplicaciones grandes que requieren utilizar otro enfoque, como ser cargar páginas ASPX dentro de páginas ASPX pero sin hacer PostBack de la página contenedora. La técnica explicada en este artículo nos permite tener nuestra aplicación dividida en todas las páginas ASPX que necesitemos, y cargarlas dentro de una página contenedora usando AJAX, lo cual nos permite dividir mejor la funcionalidad, distintos equipos pueden trabajar independientemente en cada página ASPX, nuestra aplicaciones está mas desacoplada, prolija y demás beneficios.

En el siguiente ejemplo voy a mostrar como cargar diferentes ASPX dentro de otra página ASPX haciendo uso de AJAX WebServices. La imagen [Imagen1] que vemos a continuación es un esquema de lo que se pretende hacer.


[Imagen1]

La página contenedora tiene 1 div donde se insertará mediante AJAX el HTML de las páginas ASPX que se quieran cargar dinámicamente dentro de la página contenedora. Si nuestras ASPX que queremos cargar tiene elementos que hacen PostBack, debemos cargarlas dentro de un iframe, de lo contrario, por ejemplo, al presionar un Button en la página que se cargo dentro de la contenedora, se hará un PostBack que recargará también nuestra contenedora y la idea es que la contenedora nunca se recargue completamente.

Nuestra solución entonces deberá tener al menos los componentes que se muestran en la siguiente imagen [Imagen2].

Como vemos en esta imagen del Explorador de Soluciones, tenemos:
          1. Default.aspx, nuestra página contenedora.
          2. Default.js, código Javascript para hacer la llamada al WebService y cargar el contenido que este devuelve en nuestro div.
          3. Page1.aspx, una de las páginas que queremos cargar dentro de Default.aspx
          4. Page2.aspx, otra de las páginas que queremos cargar dentro de Default.aspx
          5. PageLoader.asmx, el WebService que devuelve el HTML que vamos a cargar dentro del DIV de Default.aspx
          6. web.config, configuración para hacer uso de las librerías de AJAX ASP.NET y configuración para usar AJAX ASP.NET WebServices.
          7. ajax-loader.gif, imágenes que mostramos mientras se cargan las páginas interiores.




[Image2]

La idea es que nuestra página Default.aspx tenga un DIV donde cargar el HTML de las páginas que queremos cargar, haga una llamada a un AJAX Enabled WebService y mientras se carga la página interior muestre un Loading...

La estructura de nuestra página Default.aspx sería algo así:

<body>

    <form id="form1" runat="server">

        <asp:ScriptManager ID="ScriptManager1" runat="server">

            <Scripts>

                <asp:ScriptReference Path="Default.js" />

            </Scripts>

            <Services>

                <asp:ServiceReference Path="PageLoader.asmx" />

            </Services>

        </asp:ScriptManager>

        <div align="center">

            <h2>Página Contenedora</h2>

            <input id="btnLoadPage1" type="button" value="Cargar Página 1" onclick="return btnLoadPage1_onclick()" />

            <input id="btnLoadPage2" type="button" value="Cargar Página 2" onclick="return btnLoadPage2_onclick()" />

            <br />

            <hr />

            <br />

            <div id="Loading" style="display: none">

                <table style="width: 200px; height: 200px">

                    <tr>

                        <td align="center" valign="middle">

                            <img id="Img1" src="Images/ajax-loader.gif" alt="loading..." />

                        </td>

                    </tr>

                </table>

            </div>

            <div id="Target">

            </div>

        </div>

    </form>

</body>


Tenemos un ScripManager configurado para tener acceso a nuestro código JavaScript:

<Scripts>

  <asp:ScriptReference Path="Default.js" />

</Scripts>

y también le configuramos el path a nuestro WebService para que pueda crear automáticamente el proxy que vamos a usar desde nuestro código JavaScript:
<Services>

    <asp:ServiceReference Path="PageLoader.asmx" />

</Services>


También tenemos 2 HTML Buttons, uno para llamar a Page1.aspx y otro para Page2.aspx y además 2 divs, uno para mostrar la imagen de Loading mientras se carga la página interior y otro para cargar el HTML que devuelve el WebService.


Al presionar cualquiera de los botones se hace una llamada al AJAX Enabled WebService como vemos en el siguiente código:


function btnLoadPage1_onclick()
{
    ret = PageLoader.LoadPage("Page1.aspx", OnComplete, OnTimeOut, OnError);
    document.getElementById('Loading').style.display = 'block';
    return(true);
}
function btnLoadPage2_onclick()
{
    ret = PageLoader.LoadPage("Page2.aspx", OnComplete, OnTimeOut, OnError);
    document.getElementById('Loading').style.display = 'block';
    return(true);
}

function OnComplete(args)
{
    document.getElementById('Target').innerHTML = args;
}

function OnTimeOut(args)
{
    alert("Service call timed out.");
}

function OnError(args)
{
    alert("Error calling service method.");
}


PageLoader es el proxy creado por el ScriptManager y LoadPage es el [WebMethod] expuesto por nuestro WebService. La llamada es asíncrona por lo que nos pide que especifiquemos la función que se va a llamar cuando se haya completado la petición, la función que se llama si se produce un time out y la función que se llama si se produce un error.

O sea que las funciones de los botones hacen 2 cosas: la petición y mostrar la imagen de Loading.

Una vez que el AJAX Enabled WebService devuelve el HTML, cargamos este dentro del div "Target" en la función OnComplete.

Lo que queda ahora es ocultar el Loading, esto lo hacemos desde la página interior, por ejemplo, Page1.aspx, en el evento onload en el body:

<body onload="parent.document.getElementById('Loading').style.display='none';" style="margin:0px;">

    <form id="form1" runat="server">

        <table style="width:200px;height:200px;">

            <tr>

                <td valign="middle" align="center" style="background-color:Blue;color:White">

                    Page1.aspx

                </td>

            </tr>

        </table>

    </form>

</body>


Solo quedaría ver el WebService, que lo que hace basicamente es devolver un HTML con un IFRAME con la página que le pasamos como parámetro, de esta forma si nuestra Page1.aspx o Page2.aspx hacen un PostBack, este no afecta a la página contenedora.


[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[System.Web.Script.Services.ScriptService]

public class PageLoader : WebService

{

    [WebMethod]

    public string LoadPage(string pageName)

    {

        return @"<iframe frameborder='0'

                         scrolling='no'

                         marginheight='0'

                         marginwidth='0'

                         height='200px'

                         width='200px' id='frame' src='" + pageName + "' runat='server'></iframe>";

    }

}


Es importante destacar la siguiente línea que es la que permite que el hacer AJAX Enabled al WebService:


[System.Web.Script.Services.ScriptService]


El siguiente gif animado muestra el ejemplo funcionando:






Tuesday, May 06, 2008

[Células.NET] Células.Net en Córdoba

En esta oportunidad quiero comentarles sobre Células.Net, un programa
académico de Microsoft para estudiantes que estén interesados
en aprender mas sobre tecnologías Microsoft. Córdoba se está
convirtiendo en un gran foco de grupos de estudios y tengo el agrado de comentarles
que estoy formando parte como profesor guía de 3 de estos grupos. Quiero
darles la bienvenida a estas personas que se han puesto por objetivo aprender
mas sobre tecnologías Microsoft formando parte de esta comunidad. Les
presento las células:


Nombre Clave: Developnet
Blog: http://developmentnet.blogspot.com

Nombre Clave: Hibridos
Blog: http://hibrides.blogspot.com



Nombre Clave: Antares
Blog: http://antarescell.blogspot.com

En este proyecto estoy junto
a Matías Iácono quien es profesor guía de otro conjunto
de células. Para el manejo de todas las células que tenemos entre
los 2 hemos creado una lista de distribución, usando los grupos de Google.
Los interesados pueden ver los avances de estas células en: http://groups.google.com.ar/group/celulasnetcordoba

Saludos a todos.


Wednesday, March 26, 2008

[Conferencias] 1ras Jornadas de Actualización Informática en el ISIPE

Hola, les comento que voy a participar de las primeras jornadas de actualización informática en el ISIPE. Voy a estar disertando sobre como mejora la productividad ASP.NET 2.0.

Les dejo el anuncio que mando la gente del ISIPE.


1º JORNADAS DE ACTUALIZACIÓN INFORMÁTICA



Un espacio creado por I.S.I.P.E. - Instituto de Servicios Informáticos para Empresas de la Universidad Empresarial Siglo 21-, para que puedas actualizarte en el campo de las Tecnologías Informáticas -IT-.
Vas a tener la oportunidad de escuchar a figuras destacadas del ámbito nacional e internacional, y conocer las distintas herramientas de IT existentes en el mercado, su aplicación, ventajas y desventajas para generar beneficios competitivos en un mercado que así lo exige.

27 y 28 de marzo / 2008 - Córdoba



Jueves 27

16.00 hs. ''Nuevas tecnologías en el mundo Java''

Objetivos: Introducir a los presentes en las nuevas tecnologías para interfaces gráficas JavaFX. Mostrar ambientes de desarrollo para tecnología J2ME y la integración de Java con lenguajes scripting modernos Ruby.

Disertante: Ezequiel Singer -Trabaja en la división de educación de Sun Microsystems. Integra desde la Argentina a un equipo de más de 500 estudiantes de las principales universidades del mundo en un proyecto que tiene como base acercar a la tecnología SUN a los ámbitos académicos. Su misión es interactuar con profesores, alumnos y directivos en la formación de grupos de usuarios, foros, en la confección de eventos, charlas, seminarios y talleres y en el continuo apoyo a las currículas, manteniendo actualizados los ámbitos académicos con la última tecnología SUN-.

18:30 HS. Break

19.00 hs. ''Herramientas para mejorar la productividad en desarrollo Web con .NET''

Objetivos: - Dar a conocer las diferencias y nuevas mejoras que se han introducido en el mercado a partir del Visual Studio 2005, haciendo hincapié en el desarrollo de aplicaciones web
.

- Mostrar las nuevas herramientas de ASP.NET 2.0 que ayudan a mejorar notablemente la productividad, acortando los tiempos y estandarizando los métodos de desarrollo.
- Mostrar las principales características de Silverlight, su implementación en el desarrollo de sitios web e interacción con lenguajes de servidor.

Disertante: Mgt. Gustavo Ferrero -Ingeniero en Sistemas (UCC).Master en Ingeniería de Software (ITBA). Tiene experiencia en integración de tecnología (J2EE y .NET) y gran capacidad de investigación. Posee sólidos conocimientos técnicos en diferentes lenguajes de programación (Visual Basic, Visual C, DELPHI) y ha liderado grandes proyectos tecnológicos. Algunas de sus publicaciones: "Ciclo de vida en Espiral Win-Win", "Métricas de Software", "Algoritmos de Minería de Datos"-
Ing. Juan Pablo Ibáñez -
Ingeniero en Sistemas. Posee experiencia en el desarrollo de aplicaciones mobiles y aplicaciones para Internet en proyectos de gran envergadura para empresas nacionales y extranjeras. Sus publicaciones: "Tecnologías AJAX", en Netdeveloper y Ineta Latam - International .NET Association-
Ing. Matías Saúl Iacono Dagatti -Licenciado en Ingeniería de Sistemas. Aprobado con Honores, en la certificación en ASP.net 2.0 (Whidbey), otorgado por Microsoft MVP Academy. Certificado en C# nivel 100 otorgado por Microsoft MVP Academy-



Viernes 28

16:00 hs. "Gestión por Procesos" Caso de éxito: CONAGUA Gobierno de México (Premiado con el Premio Anual de Transparencia México 2005).

Objetivos: Lograr que los asistentes aprendan cómo las organizaciones hacen de la administración de la información el aspecto clave de su gestión. Exponer porque un modelo de gestión por procesos de negocio reduce costos, incrementa la eficiencia, mejora la calidad y acorta los tiempos de producción y respuesta

Disertantes: Lic. Federico Silva (Marketing Manager - PECTRA Technology, Inc.),
AS.
Alfredo Cisterna (Product Manager - PECTRA Technology, Inc.), Ing. Isidro Gaytán Arvizu (Director del Sistema CONAGUA.) Lic. Juan Carlos Garcés del Ángel (Coordinador Operativo del Sistema de Gestión Hidroagrícola, CONAGUA)

18.30 hs. Break

19:00 hs. ''Testing de Software, adaptación y como aplicar técnicas efectivas ''. Caso de Éxito: Nimbuzz (Holanda)

Objetivos: Lograr ser capaces de Identificar las técnicas de testing adecuadas y los modelos a aplicar. Generar independencia de Vendors y reportar Errores en empresas internacionales.

Disertantes: Sergio Emanuel Cusmai -Director de QAustral S.A. Empresa especializada en Calidad de Software y Negocios. Gerente General de Nimbuzz Argentina S.A. Tester Certificado por la British Computer Society.-
Menno Johan Bieringa
. Holanda -Web Manager de Nimbuzz Argentina S.A. Desarrollador Web Senior-

Arancel: $24 por jornada.


INSCRIPCIONES
Ituzaingó 484 - 5º piso
de 17 a 20 hs.