Salta.NET se presenta! Nueva célula en Salta, Argentina

by Guillermo Diéguez 19. June 2011 17:30

Saludos! somos Salta.NET, una nueva célula formada hace poco menos de un mes. Nos dedicamos a indagar sobre temas de desarrollo web en ASP.NET y C#, principalmente. Nuestra célula está integrada por 2 personas. Patricio Pérez, Vice-Líder y yo, Guillermo Diéguez, líder de Salta.NET. Ambos tenemos 16 años y cursamos el penúltimo año de secundario actualmente.

Empezamos a interesarnos en el desarrollo web gracias a nuestra MSP, Ivana Tilca, que nos dió una charla sobre Expression Studio en el año 2010. Un profesor nuestro tuvo la “delicadeza” de invitarnos a asistir, porque era una charla para un curso más alto. Aceptamos, y recibimos el cartón con el código Dreamspark! Todo con la promesa de empezar a desarrollar usando software Microsoft. Mi compañero ya tenía conocimientos en programación en PHP, MySQL, Javascript, Python, CSS, HTML, Ajax, etc, etc, etc. Yo me sentía muy desubicado, ya que no entendía nada!

Por eso, guardé el código que Ivana me facilitó en mi armario, para futuro uso. Al año, con mi compañero tuvimos una idea, hacer una web que comunicase a los docentes con sus alumnos de una forma más didáctica, interesante, intuitiva, y la desarrollamos en PHP. Cuando estuvo lista (nos llevó como 4 meses por falta de ganas), decidimos subirla. Pasó otro mes más y no teníamos pensado nada más que nuestro proyecto.

Aquí es donde apareció Ivana de nuevo! Daban unas charlas en la Universidad Nacional de Salta, por conocido evento “RunWeb Camp”! Nos enteramos por la cadena de mails, y decidimos participar de las charla que pudiéramos, porque teníamos clase a la mañana.

Fuimos, nos reencontramos con Ivana, nos dió toda la ayuda que uno espera recibir al no saber nada de nada sobre ASP.NET, y nos motivó de la mejor forma, para que empezáramos con esto, que era algo nuevo para nosotros. El reto que nos propuso fue el de realizar la misma aplicación web que habíamos hecho en PHP, pero en ASP.NET. Ahí apareció Miguel Saez, para hablar con mi compañero, el programador principal de nuestra célula. Nos habló sobre Web Matrix, Visual Studio, etc etc, por lo que me incliné más al diseño, en lo que me ayudó Ivana.

Así empezó todo, y llegamos a formar la célula que ahora les escribe.

Próximamente, vamos a estar subiendo videos, fotos de nosotros, capturas de pantalla, nuestra idea principal y los problemas que nos fueron surgiendo. A medida que vayamos avanzando con nuestro proyecto, vamos a ir posteando toda la información que pueda serle de utilidad a otras células que les interese.

Tags: , , , ,

Comienzos | Células

Introducción al desarrollo web con WebMatrix

by Guillermo Bellmann 26. January 2011 14:00

En esta serie de posts podrán aprender cómo hacer una aplicación web sencilla que se usa para gestionar una lista de películas favoritas.

Si quieren verlo directamente en inglés pueden hacerlo acá, pero para los que prefieren tener el contenido en nuestro idioma, esta es la lista de posts al respecto:

Parte 1: Proceso de instalación

Parte 2: Creando nuestra primera página

Parte 3: Demos un poco de estilo

Parte 4: Utilizando layout

Parte 5: Utilizando datos

Parte 6: Creando un formulario para agregar datos

Parte 7: Creando una página de edición de datos

Parte 8: Creando una página de borrado de datos

Parte 9: Publicando nuestro sitio

Esperamos que les sirva y cualquier pregunta que tengan, no duden en consultar.

Tags: , ,

Comienzos | dotNET | webmatrix

WebMatrix parte 8 – Creando una página de borrado de datos

by Guillermo Bellmann 26. January 2011 08:30

Hasta el momento hemos creado una aplicación guiada por los datos que lista nuestras películas favoritas, le dimos un estilo, y le agregamos la funcionalidad para agregar películas y modificar las existentes en la base de datos. El próximo paso en la creación de esta aplicación es darle al usuario la posibilidad de borrar registros de la base de datos.

Deben haber escuchado el término ABM (CRUD en inglés) usado para referirse a aplicaciones web y los datos. ABM es la sigla para Alta, Baja y Modificación (CRUD: Create, Retrieve, Update, Delete), y es precisamente eso lo que estamos construyendo con WebMatrix.

Agregar la página de borrado

Para empezar, agregaremos una nueva página CSHTML y la llamaremos DeleteMovie.cshtml.

Reemplazaremos el código HTML en ella por el siguiente:

<h1>Delete a movie</h1>
<p>Are you sure you want to delete the movie <strong>@Movie.Name ?</strong></p>
<form action="" method="post">
    <input type="submit" value="Yes"/>
    <input type="button" value="No" onclick="window.location = 'dataMovies.cshtml'" />
</form>
 
  

Esto crea un formulario básico con 2 botones, un botón de tipo "submit" que dispara un HTTP POST (al igual que el de la página de edición del post anterior), y otro botón que nos redirecciona de vuelta a la lista de películas.

Al igual que la página EditMovies.cshtml, esta página será llamada con un parámetro que es el ID de la película a borrar. Así que, como se puede ver en el código anterior en "Are you sure you want to delete the movie @Movie.Name?" ("¿Está seguro que desea borrar la película @Movie.Name?") donde el valor de Movie.Name será insertado por el servidor. Por esto debemos decirle al servidor cómo obtener este valor:

Para hacer esto, como antes, ponemos código Razor al comienzo de la página para capturar el parámetro de entrada.

   1:  @{
   2:   
   3:  var id=Request["id"];
   4:   
   5:  var SQLSELECT = "SELECT * FROM Favorites where ID=@0";
   6:   
   7:  var db = Database.Open("Movies");
   8:   
   9:  var Movie = db.QuerySingle(SQLSELECT,id);
  10:   
  11:  var MovieName=Movie.Name;
  12:   
  13:  }
  14:   

Here you can see that the parameter was passed to the page as 'id' (using DeleteMovie.cshtml?id=<whatever>), and this is used to find the specific movie. A query is run against the database, and the record for that movie is retrieved. Now you can derive the name of that movie, and render it when the page is rendered.

Aquí se puede ver que el parámetro se pasó a la página como "id" (usando DeleteMovie.cshtml?id=<algo>), y esto se utiliza para encontrar la película en particular. Se lanza una consulta a la base de datos y se trae el registro para esa película. Ahora podemos derivar el nombre de la película y renderizarlo cuando se renderiza la página.

Probémoslo, corramos la página DeleteMovie.cshtml?id=<algo>, y veremos la siguiente pantalla, siempre teniendo en cuenta que <algo> sea un ID válido en la base de datos:

Si presionamos el botón "No", seremos redireccionados de vuelta a la página dataMovies.cshtml. Si presionamos "Yes", no sucede nada, porque todavía no hemos escrito el código para manejar el borrado.

Para borrar un registro de la base de datos se usa el comando SQL DELETE. Tiene la siguiente sintaxis:

DELETE FROM <tabla> WHERE <campo>=<valor>

Así, si quisiéramos borrar la película con ID=2 podríamos escribir:

DELETE FROM Favorites WHERE ID=2

Cuando el usuario presiona el botón "Yes", el formulario será enviado y ocurrirá el borrado, así que fácilmente podemos hacer lo siguiente en el postback:

   1:  if(IsPost){
   2:   
   3:  var SQLDELETE = "DELETE FROM Favorites WHERE ID=@0";
   4:   
   5:  db.Execute(SQLDELETE,id);
   6:   
   7:  Response.Redirect("dataMovies.cshtml");
   8:   
   9:  }
  10:   

This will delete the movie, and redirect us back to the listing page so that we can see it's gone.

Esto borrará la película y nos redireccionará nuevamente a la página con el listado de películas en donde podemos ver que ya no existe.

Aquí está el código completo para la página DeleteMovie.cshtml:

   1:  @{
   2:   
   3:  var id=Request["id"];
   4:   
   5:  var SQLSELECT = "SELECT * FROM Favorites where ID=@0";
   6:   
   7:  var db = Database.Open("Movies");
   8:   
   9:  var Movie = db.QuerySingle(SQLSELECT,id);
  10:   
  11:  var MovieName=Movie.Name;
  12:   
  13:  if(IsPost){
  14:   
  15:  var SQLDELETE = "DELETE FROM Favorites WHERE ID=@0";
  16:   
  17:  db.Execute(SQLDELETE,id);
  18:   
  19:  Response.Redirect("dataMovies.cshtml");
  20:   
  21:  }
  22:   
  23:  }
  24:   
  25:  <h1>Delete a movie</h1>
  26:   
  27:  <p>Are you sure you want to delete the movie <strong>@Movie.Name ?</strong></p>
  28:   
  29:  <form action="" method="post">
  30:   
  31:  <p><input type="submit" value="Yes"/>
  32:   
  33:  <input type="button" value="No" onclick="window.location = 'dataMovies.cshtml'" /></p>
  34:   
  35:  <br/>
  36:   
  37:  </form>
  38:   

Llamando a la página de borrado desde la lista de películas

Ahora que tenemos nuestra página de borrado funcionando, conectémosla con la página con el listado de películas para que el usuario pueda seleccionar un ítem de la lista y solicitar su borrado.

En la página del listado de películas simplemente tenemos que agregar un hipervínculo a cada entrada de la lista, donde el vínculo es a la página DeleteMovie.cshtml, pasándole el ID de la película seleccionada.

Aquí está en código completo para dataMovies.cshtml:

   1:  @{
   2:   
   3:  var db= Database.Open("Movies");
   4:   
   5:  var sqlQ = "SELECT * FROM Favorites";
   6:   
   7:  var data = db.Query(sqlQ);
   8:   
   9:  }
  10:   
  11:  <div id="movieslist">
  12:   
  13:  <ol>
  14:   
  15:  @foreach(var row in data){
  16:   
  17:  <li>
  18:   
  19:  <a href="EditMovie.cshtml?id=@row.id">@row.Name, @row.Genre, @row.ReleaseYear
  20:   
  21:  </a>
  22:   
  23:  <a href="DeleteMovie.cshtml?id=@row.id">Delete</a>
  24:   
  25:  </li>
  26:   
  27:  }
  28:   
  29:  </ol>
  30:   
  31:  <a href="AddMovie.cshtml">Add a new movie</a>
  32:   
  33:  </div>
  34:   

Ejecutamos la página para ver el flujo del borrado. Primero, aquií vemos la nueva página dataMovies.cshtml:

Si ahora seleccionamos el hipervínculo de borrado (delete) en cualquiera de las películas, seremos llevados a la página de "Borrar película", donde se nos preguntará si realmente queremos borrar la película de la lista:

Si presionamos "No", retornaremos al listado con la película todavía allí. Si decimos que sí, entonces retornaremos al listado, pero la película ya no se encontrará allí. Aquí está el resultado de decir "Si".

Tags: , ,

Comienzos | dotNET | webmatrix

WebMatrix parte 7 – Creando una página de edición de datos

by Guillermo Bellmann 25. January 2011 23:06

Hasta ahora hemos creado nuestra página de películas, le dimos estilo, la hicimos guiada por los datos, y luego creamos un formulario que se puede usar para agregar películas a la base de datos. El próximo paso será crear un formulario muy similar que usaremos para editar nuestra lista de películas existente.

Veamos entonces cómo se ve la aplicación hasta el momento:

Como se puede ver, tiene una lista de películas, con la posibilidad de agregar una nueva película a través del vínculo en la parte de abajo. Para obtener un efecto cuando se pasa por encima con el mouse hicimos que cada ítem de la lista de películas sea un hipervínculo, usando el tag <a>. Tiene sentido entonces que si quisiéramos editar una película usáramos este hipervínculo, así que vamos a seguir este proceso a continuación.

Crear la página de edición

Primero, crearemos una nueva página CSHTML en WebMatrix, y la llamaremos EditMovie.cshtml. Esta página eventualmente tendrá el formulario que se cargará con el detalle de la película seleccionada, y cuando se cambie este detalle, los cambios serán enviados de vuelta a la base de datos.

Por lo tanto, debemos reemplazar el contenido por defecto en EditMovie.cshtml por este formulario. Se va a ver muy similar al que se creó en el post anterior.

<h1>Edit a Movie</h1>
<form action="" method="post">
    <p>Name:<input type="text" name="formName" /></p>
    <p>Genre:<input type="text" name="formGenre" /></p>
    <p>Year:<input type="text" name="formYear" /></p>
    <p><input type="submit" value="Edit Movie" /></p>
</form>

Llamar a la página de edición desde el listado de películas

Bien, ya tenemos la base de nuestro formulario de edición. Pero, ¿cómo inicializamos el formulario con el contenido de la base de datos para la película seleccionada? Bien, primero tratemos de entender cómo hacer que esta página sepa qué película queremos editar, y para esto debemos volver a nuestra página dataMovies.cshtml.

Como podrán recordar, teníamos la lista de ítems escritos de la siguiente manera:

<li><a href="#">@row.Name, @row.Genre, @row.ReleaseYear</a></li>

El hipervínculo no nos llevaba a ningún lado porque el href era solamente “#”. Así que hagamos que el hipervínculo nos lleve a EditMovie.cshtml, de la siguiente manera:

<li><a href="EditMovie.cshtml ">@row.Name, @row.Genre, @row.ReleaseYear</a></li>

Fantástico, pero no importa cuál película seleccionemos, siempre va a llamar a EditMovie.cshtml, y esta página no va a tener idea de qué película estamos editando. Pero dataMovies.cshtml ya sabe qué película – porque la hemos seleccionado, así que podemos usar esto para pasar el ID de la película que hemos seleccionado a EditMovie.cshtml de esta manera:

EditMovie.cshtml?id=<algo>

Y como ya sabemos cuál es el ID de la fila actual (@row.id), podemos usar Razor para escribir el ID mientras escribimos la lista, por lo que cambiamos nuestro <li> para que se vea de la siguiente manera:

<li><a href="EditMovie.cshtml?id=@row.id">@row.Name, @row.Genre, @row.ReleaseYear</a></li>

Ahora si miramos a dataMovies.cshtml vamos a obtener lo siguiente:

No se ve para nada diferente, pero miren qué sucede cuando miramos el código HTML de la página. Esta no es la página .cshtml que vemos en WebMatrix, sino el HTML que es generado por el servidor (a partir de las instrucciones en el cshtml), y enviado al navegador.

En Internet Explorer 9 se puede ver esto haciendo click derecho en cualquier lugar de la página y seleccionando “Ver código fuente”

   1:  <!DOCTYPE html>
   2:  <html lang="en">
   3:    <head>
   4:      <meta charset="utf-8" />
   5:      <title>My Favorite Movies</title>
   6:      <link rel="stylesheet" type="text/css" href="movies-html5.css" />
   7:    </head>
   8:   
   9:  <body>
  10:    <header>
  11:      <h1>A list of my Favorite Movies</h1>
  12:    </header>
  13:   
  14:    <div id="movieslist">
  15:    <ol>
  16:      <li><a href="EditMovie.cshtml?id=1">It&#39;s a wonderful life, Comedy, 1946</a></li>
  17:      <li><a href="EditMovie.cshtml?id=2">Lord of the Rings, Drama, 2001</a></li>
  18:      <li><a href="EditMovie.cshtml?id=3">The Fourth World, Anime, 2012</a></li>
  19:      <li><a href="EditMovie.cshtml?id=4">The Lion King, Family, 1994</a></li>
  20:      <li><a href="EditMovie.cshtml?id=5">Forrest Gump, Comedy, 1994</a></li>
  21:      <li><a href="EditMovie.cshtml?id=6">The Million Year Journey, Anime, 2014</a></li>
  22:    </ol>
  23:   
  24:    <a href="AddMovie.cshtml">Add a new movie</a>
  25:  </div>
  26:   
  27:    <footer>
  28:   
  29:      This site was built using Microsoft WebMatrix. 
  30:   
  31:      <a href="http://web.ms/webmatrix">Download it now.</a>
  32:   
  33:    </footer>
  34:   
  35:  </html>
  36:   

¿Ven cómo, cuando se creó la vista, el valor del ID para cada fila en particular fue escrito en el HTML? Ahora, cuando se carga EditMovie.cshtml, podemos tomar este ID y usarlo para encontrar el registro en el que estamos interesados.

Terminando la página de edición

Bien, volvamos a EditMovie.cshtml.

¿Se acuerdan que antes vimos que si ponemos una @{ al comienzo de la página, y escribíamos código adentro, entonces ese código se ejecutaría cuando la página se está cargando? Bien, ese es el lugar perfecto para poner el código para leer el ID que está en la URL de la página, y luego usarlo para traer el nombre, género y año de lanzamiento de esta película.

Cuando se llama a una página con la sintaxis que estamos utilizando (o sea NombreDeLaPagina.cshtml?<Parametro>=<Valor>), se puede averiguar el valor del parámetro usando el objeto Request. Así, por ejemplo, para EditMovie.cshtml?id=6, podemos usar el siguiente código:

var id=Request["id"];

Este código crea una variable local, llamada “id” y utiliza el valor del parámetro (también llamado “id”) para inicializarla. WebMatrix es suficientemente inteligente para darse cuenta que ambos IDs son diferentes basándose en el contexto en el que se los utiliza.

Ahora que tenemos el ID, podemos usarlo en una consulta SELECT de SQL para encontrar el registro de esa película.

   1:  var id=Request["id"];
   2:  var SQLSELECT = "SELECT * FROM Favorites where ID=@0";
   3:  var db = Database.Open("Movies");
   4:  var Movie = db.QuerySingle(SQLSELECT,id);
   5:  var MovieName=Movie.Name;
   6:  var MovieGenre=Movie.Genre;
   7:  var MovieYear=Movie.ReleaseYear;

Bastante directo, ¿no? Decimos “Select * from Favorites where el campo ID sea igual al ID que pasamos como parámetro” y luego ejecutamos eso contra la base de datos. Como sólo queremos 1 registro, decimos db.QuerySingle para obtener un sólo registro.

Luego se ejecuta la consulta, y el Nombre (Name), Género (Genre) y Año de Lanzamiento (ReleaseYear) son cargados en variables locales.

Esto está todo bien, pero el problema es que los valores todavía están en las variables y no en el formulario. Así que ¿cómo hace el usuario para editarlos? Bien – la respuesta es simple – recuerden que este código se ejecuta antes que la página sea renderizada, así que tenemos las variables antes de que se escriba el código HTML. Y debido a esto, podemos inicializar el formulario con estos valores. El formulario usa campos <input> para mostrarnos campos de texto, y éstos soportan una propiedad “value”. Podemos ahora usar esto directamente con las variables para inicializarlas.

Éste es el código hasta ahora:

   1:  @{
   2:    var id=Request["id"];
   3:    var SQLSELECT = "SELECT * FROM Favorites where ID=@0";
   4:    var db = Database.Open("Movies");
   5:    var Movie = db.QuerySingle(SQLSELECT,id);
   6:    var MovieName=Movie.Name;
   7:    var MovieGenre=Movie.Genre;
   8:    var MovieYear=Movie.ReleaseYear;
   9:  }
  10:   
  11:  <h1>Edit a Movie</h1>
  12:  <form action="" method="post">
  13:    <p>Name:<input type="text" name="formName" value="@MovieName" /></p>
  14:    <p>Genre:<input type="text" name="formGenre" value="@MovieGenre" /></p>
  15:    <p>Year:<input type="text" name="formYear" value="@MovieYear" /></p>
  16:    <p><input type="submit" value="Edit Movie" /></p>
  17:  </form>
  18:   

Ahora cuando la página se ejecute, van a ver que se inicializa con los valores de la película. Prueben ejecutando dataMovies.cshtml primero, de esta manera:

Luego seleccionen una película. Se puede ver en la imagen de arriba que se está seleccionando la tercera fila, y se está llamando a EditMovie.cshtml con un id de 3.

La página luego se carga y se ve como se muestra a continuación:

Pueden escribir en cualquiera de los campos de texto para cambiar cualquiera de los valores, pero cuando presionen “Edit Movie”, no pasa nada. Podrán recordar, de la página de Agregar Película del post anterior, que el botón desencadena un submit en el formulario, el cual es un HTTP POST (en oposición al HTTP GET que ocurrió cuando la página se llamó desde el hipervínculo), el cual debe ser procesado.

La forma de hacer esto anteriormente fue usar un bloque de código if(IsPost), así que vamos a hacer lo mismo aquí:

   1:  if(IsPost){
   2:    MovieName=Request["formName"];
   3:    MovieGenre=Request["formGenre"];
   4:    MovieYear=Request["formYear"];
   5:  }
   6:   

El formulario utiliza los valores formName, formGenre y formYear para los valores del Nombre, Género y Año de lanzamiento. Estos se pasan en el objeto Request. Si el usuario ha editado los mismos de alguna manera, los nuevos valores van a estar allí, así que podemos actualizar la base de datos con ellos.

Para actualizar la base de datos usamos el comando SQL “UPDATE” que tiene la siguiente sintaxis:

UPDATE tabla SET columna = valor, columna = valor, columna = valor… WHERE clave=valor

Así que, en nuestro caso, tenemos 3 columnas que estamos actualizando para el Id que ya conocemos, así que aquí está el código para crear la consulta y ejecutarla:

   1:  var SQLUPDATE = "UPDATE Favorites Set Name=@0, Genre=@1, ReleaseYear=@2 WHERE id=@3";
   2:  db.Execute(SQLUPDATE, MovieName, MovieGenre, MovieYear,id);

Esto usa parámetros en SQL (@0, @1, etc., que no hay que confundir con la “@” que marca el comienzxo de un bloque Razor) para que el SQL sea más fácil de leer. Sólo recuerden que los valores @ son reemplazados, en orden, con los valores dentro del código db.Execute(), por lo que, en este caso, MovieName es @0, MovieGenre es @1, etc.

Finalmente, una vez que la película fue editada, es una buena idea redireccionar nuevamente a la página de la lista para que podamos ver los resultados de la edición, actualizados dinámicamente. Hicimos lo mismo en la página de agregar película. Aquí está el código:

Response.Redirect("dataMovies.cshtml");

Y para su conveniencia, aquí está el código completo para la página EditMovies.cshtml:

   1:  @{
   2:      var id=Request["id"];
   3:      var SQLSELECT = "SELECT * FROM Favorites where ID=@0";
   4:      var db = Database.Open("Movies");
   5:      var Movie = db.QuerySingle(SQLSELECT,id);
   6:      var MovieName=Movie.Name;
   7:      var MovieGenre=Movie.Genre;
   8:      var MovieYear=Movie.ReleaseYear;
   9:   
  10:      if(IsPost){
  11:        MovieName=Request["formName"];
  12:        MovieGenre=Request["formGenre"];
  13:        MovieYear=Request["formYear"];
  14:        var SQLUPDATE = "UPDATE Favorites Set Name=@0, Genre=@1, ReleaseYear=@2 WHERE id=@3";
  15:        db.Execute(SQLUPDATE, MovieName, MovieGenre, MovieYear,id);
  16:        Response.Redirect("dataMovies.cshtml");
  17:      }
  18:  }
  19:   
  20:  <h1>Edit a Movie</h1>
  21:    <form action="" method="post">
  22:      <p>Name:<input type="text" name="formName" value="@MovieName" /></p>
  23:      <p>Genre:<input type="text" name="formGenre" value="@MovieGenre" /></p>
  24:      <p>Year:<input type="text" name="formYear" value="@MovieYear" /></p>
  25:      <p><input type="submit" value="Edit Movie" /></p>
  26:    </form>

Así que ahora podemos ver qué pasa cuando la ejecutamos. Asumiendo que comenzaron con la página dataMovies.cshtml, y seleccionaron para editar alguna de las películas, deberían ver esto:

Si ahora editan el valor de “Year” de 2012 a 2011, y presionan el botón “Edit Movie”, la base de datos se actualizará, y serán redireccionados a la página de la lista, donde ahora podrán ver que el año de lanzamiento es 2011.

Con esto habrán editado exitosamente un registro de la base de datos!!

Tags: , ,

ASPX | Comienzos | dotNET | webmatrix

Presentación - Célula Sinergia

by Sinergia 7. June 2010 23:58

Hola a todos!
Mi nombre es Matias Tebele, tengo 17 años y actualmente estudio en la escuela técnica ORT (sede Almagro).
Participé en dos Imagine Cup: categoría Robotics & Algorithms en el año 2009, donde terminé rank #38; y en las categorías Windows Phone 7 Rockstar Award (video de mi app) y Envisioning 2020 Award de este año, donde a pesar de no haber llegado a las finales aprendí nuevas tecnologías y profundicé temas ya sabidos.

Semifinales de la Imagine Cup 2009 - Robotics & Algorithms

 

Además tuve el agrado de asistir a dos Codecamp (08 y 09) y espero poder hacerlo este año desde el lado de un orador :)

En fin, escribo este post con el fin de presentarles la célula en la que soy líder y que fue creada hace una semana. Como bien dice el título, la célula se llama Sinergia y el tema principal es Robotics.

Como primer proyecto les presento RoboSafe: un sistema de seguridad basado en un robot que será capaz de moverse por sí mismo, girar, y reaccionar de manera eficiente ante choques o cualquier otro obstáculo. Al detectar movimiento, cierta información como una imagen previamente capturada, fecha y hora del suceso será enviada a una persona a través de SMS sin importar dónde esté, alertándole que se detectó movimiento y ofreciéndole acciones a tomar, así como también podrá visualizar la foto que tomó el robot luego de la detección de movimiento. Además, toda la información será guardada y registrada en una computadora local.

El objetivo del proyecto es que cuando una persona deje su casa sola, pueda dejar el robot vigilándola sin ningún problema, ya que el dueño esté donde esté será notificado en su celular en caso de que se detecte movimiento y, además de informarle lo sucedido, pueda tener la oportunidad de ingresar a una aplicación desde su celular donde encontrará la información detallada de lo sucedido y acciones a tomar.

Para lograr esto el robot contará con una cámara IP montada, encargada de la detección de movimiento y la imagen tomada posteriormente en caso de que se haya detectado. Esta información se procesará en una computadora local que estará conectada a la cámara IP mediante una conexión WiFi.
Además, el robot contará con sensores de distancia, encargados de esquivar objetos en tiempo real como paredes, sillas, mesas o cualquier otro objeto dentro de una casa que pueda ser un obstáculo para el robot.
El encargado de enviarle instrucciones al robot es la computadora local, por lo que estará conectada al robot mediante una conexión inalámbrica.


Personalmente me motivó mucho concursar en la Imagine Cup 2009 y fue lo que impulsó mis ganas de investigar y aprender acerca de todo lo relacionado con Robotics Studio. De ahí surgió la idea del proyecto, que inicialmente estaba enfocado para un Proyecto Final de mi escuela, y luego Nico me dio la chance de poder presentarlo en el Proyecto de Investigacion Microsoft representando a mi propia célula.
Además tengo la suerte de tener como MSP encargado de la célula a Pablo Gauna, que como todos saben es un gran ganador, además de ser una gran persona, y de seguro va a poder ayudarme en lo que necesite.

Voy a dedicarle mas información acerca de la célula y su avance en otros posts. También voy a aprovechar a postear información, guías y todo lo que pueda ayudar en la comunidad!

Un abrazo a todos,
Mati.

Tags: , ,

Cómo conocí el Programa Académico Microsoft

by Nicolas Vilela 1. June 2010 14:08

 

Nada es fácil, pero ¿Quién quiere nada?.

 

En el último año del secundario participé, con mi amigo Pablo Gauna de Gaming.net, iniciativa de Microsoft que acerca a los alumnos de colegios secundarios al mundo de la programación.

Tuvimos la suerte de ganar en la final en la provincia San Luis (hermoso lugar por cierto), luego de eso conocimos Imagine Cup y ya que Gaming.net se basaba en una de las categorías de Imagine Cup participamos de aventureros no más.

Dicho y hecho allá por agosto de 2007 Pablo y yo nos veíamos en pleno viaje destino Corea. Un viaje inolvidable, la competencia de nuestra categoría duro 24hs y luego a seguir disfrutando de la experiencia realizando tours y distintas actividades.

Ganamos! Y volvimos con el trofeo entre las manos y una alegría inmensa, orgulloso de tener a mi amigo Pablo que me enseño una de las mejores lecciones de la vida: “Si te lo propones y trabajas en ello. Todo es posible”

Fue así como luego de varias entrevistas y demás tuve que decidir en qué Universidad iba continuar mis estudios.

Gracias a Gaming.net había conocido la UADE, una excelente y por demás preciosa casa de estudios ubicada en el centro de la Ciudad Buenos Aires.


Seul, Corea.

 

 

Con gran apoyo de parte de todos conseguí una beca para comenzar mi carrera allí.

En paralelo al curso de las materias regulares la universidad me acerco la propuesta de trabajar con robots y otra vez dije: ¿Por qué no? Fue así como comenzó el Taller de robótica que al poco tiempo ya contaba con 7 u 8  alumnos más llenos de entusiasmo y ganas de aprender!

Al comentarle mi situación al Programa Académico me acercaron la propuesta de que el taller de robótica sea una Célula de Estudio Microsoft.

Encantados aceptamos y al poco tiempo recibimos materiales, tuvimos una charla con expertos y a nuestro MSP Dami Galletini.

Tampoco debo olvidar a Robert(Roberto para los amigos!) nuestro Lego Mindstorm donado por el Programa Académico Microsoft.

Fue así como luego de mucho esfuerzo me llego la mención de Microsoft Student Partner J la cual conservo hasta el día de hoy con gran orgullo.

Prometo en un futuro post contar como comencé mi pasantía en el Programa Académico MS…

 

Abrazo a todos,

Nico.

 

 

 

 

Universidad Argentina de la Empresa.

Tags: ,

MSP | Comienzos


Concurso CodeCamp

Conocé mas acerca del mayor evento de la
Comunidad Microsoft en Argentina.

WWW.CODECAMP.COM.AR

------------------------------------------------

Para los que están Participando:

-Que es una célula?

-Como puedo promocionar mi proyecto?

-Dreamspark

Administradores:

Armando Meabe.
Guillermo Bellmann.
Miguel Saez.
Nicolás Vilela.
Ivana Tilca.

Esperamos que disfrutes de este sitio, lo hicimos dando nuestro mayor esfuerzo.

Nunca te olvides:
El límite es tu imaginación.

Especialistas Microsoft

Daniel Levi (IT Pro´s)

Daniel Priego (Expression Studio)

Debora Di Piano (Team Fundation Server)

 


Channel 9 - Visual Studio 2010 and .NET Framework 4 Training Course

Includes videos and hands-on-labs designed to help you learn how to utilize the Visual Studio 2010 features and a variety of framework technologies including: C# 4.0, Visual Basic 10, F#, Parallel Computing Platform, WCF, WF, WPF, ASP.NET AJAX 4.0, ASP.NET MVC Dynamic Data
Watch it online now ›

The Code Project – Tech Summit

Join us at The Code Project Tech Summit to experience the Microsoft Visual Studio 2010 launch alongside the Visual Studio team. At this virtual event you can explore, network, and learn from the experts on the latest and greatest version of Microsoft Visual Studio.
Watch it online now ›