La historia de mis desventuras

Palabras más, palabras menos sobre desarrollo de software.

Archive for 29 diciembre 2009

Microsoft Virtual Academy

Posted by Jhonny López Ramírez en 29 diciembre 2009

logo_mva

Frente al pedido de un amigo sobre material de formación básico para .Net recordé a MVA (Microsoft Virtual Academy) y decidí darle de nuevo un vistazo. La verdad es que la página ha mejorado mucho en su diseño e interactividad y ahora los contenidos ofrecidos son de diversa índole. Se pueden encontrar vídeos, presentaciones en Power Point, demostraciones, etc.

Recomiendo a MVA como un excelente punto de partida para la formación en desarrollo con .Net, sobre todo porque agrupa los dispersos contenidos del MSDN. Adicionalmente resalto el hecho de que la formación en este portal está planteada en tres escenarios principales: carreras, cursos y especializaciones. Debo aclarar que no se trata exclusivamente de la plataforma .Net para el desarrollador, también tiene gran cantidad de contenido para profesionales TI que se desenvuelven en el ecosistema de desarrollo Microsoft. Sólo me queda un reparo: mucho del contenido se encuentra aún en inglés.

Dejo aquí el enlace para los interesados:

http://tinyurl.com/mvamicrosoft

Por cierto, con este post despido el 2009. Deseo a todos los lectores (!) de este blog un 2010 cargado de todo aquello que les haga sentir vivos.

Posted in Formación Profesional | Etiquetado: , | Leave a Comment »

Autorización configurable en ASP.NET MVC

Posted by Jhonny López Ramírez en 26 diciembre 2009

En esta entrada construiremos un prototipo de configuración de autorización para ASP.NET MVC. En el Web.config de la aplicación asociaremos las acciones del controlador con los roles que estarían autorizados. Para este caso tendremos una aplicación con tres roles: Administrator, Advanced, Limited.

Lo primero que crearemos será la sección de configuración que nos permitirá especificar la autorización a los distinos roles de la aplicación. Para ello, en el apartado <configsections> de nuestro web.config crearemos una sección de configuración:

<configSections>
 <section name="MyMvcAuthorization"
  type="System.Configuration.NameValueSectionHandler,System,Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</configSections>
A continuación y para simular el comportamiento de una aplicación crearemos un Controller, una clase de modelo y unos métodos de acción. A continuación cada uno:

El modelo

En la carpeta models de nuestro proyecto agregaré un archivo Model.cs y escribiré el siguiente código:

namespace MVCAuthorization
{    
     public class Person    
    {        
          public string Name { get; set; }
          public int Id { get; set; }    
     }
}

Como ven, se trata de un POCO bastante sencillo. Vamos con el controller:

El controller

Una clase controladora sencilla:

namespace MVCAuthorization.Controllers

{

    public class PersonsController : MyBaseController

    {

        List<Person> persons = new List<Person>();

        //

        // GET: /Persons/

        [Authorize()]

        public ActionResult Index()

        {



            Person firstPerson = new Person

            {

                Id = 1,

                Name = "Fulano de Tal"

            };


            Person secondPerson = new Person

            {

                Id = 2,

                Name = "Sutano de Tal"

            };


            persons.Add(firstPerson);

            persons.Add(secondPerson);


            return View();

        }


        //

        // GET: /Persons/Details/5

        [Authorize()]

        public ActionResult Details(int id)

        {

            Person person = persons

                .FirstOrDefault(it => it.Id == id);


            return View(person);

        }


        //

        // GET: /Persons/Create

        [Authorize()]

        public ActionResult Create()

        {

            return View();

        }


        //

        // POST: /Persons/Create


        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Create(Person person)

        {

            try

            {

                // TODO: Add insert logic here

                persons.Add(person);

                return RedirectToAction("Index");

            }

            catch

            {

                return View();

            }

        }


        //

        // GET: /Persons/Edit/5

        [Authorize()]

        public ActionResult Edit(int id)

        {

            return View();

        }


        //

        // POST: /Persons/Edit/5


        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Edit(int id, FormCollection collection)

        {

            try

            {

                // TODO: Add update logic here


                return RedirectToAction("Index");

            }

            catch

            {

                return View();

            }

        }

    }

}

De esta clase controladora quiero que notemos dos cosas interesantes: en primer lugar, que la clase hereda de MyBaseController. La implementación de esa clase base la pondré aquí más adelante, dado que es esta clase la que se encargará de verificar si una acción está autorizada a un usuario en un rol determinado. En segundo lugar, que cada método (puntualmente cada GET) está decorado con el atributo [Authorize()]. Esto obligará a los usuarios no autenticados a loguearse. Y obligará, también, a que la clase base, como lo veremos más adelante, verifique para dichos métodos la autorización.

Lo que se hará a continuación es establecer, de esta clase controladora, los permisos de los roles frente a los métodos de acción. Para ello volvemos al web.config y agregamos la sección MyMvcAuthorization, que hemos definido anteriormente y que es un Dictionary tradicional:

Leer el resto de esta entrada »

Posted in Desarrollo de software | Etiquetado: | 10 Comments »

ADSI de carácter industrial

Posted by Jhonny López Ramírez en 22 diciembre 2009

Esta ha sido una idea que ha rondado a la coordinación y subdirección del centro y no es, para nada, descabellada entendiendo que se correspondería con las tecnologías medulares del CEAI.

Quiero esbozar aquí algunas implicaciones de ello. Lo considero positivo, en primer lugar por lo ya dicho: que se integraría un poco más este programa con lo que son los lineamientos tecnológicos del centro y dejaría de ser un programa que se entiende aislado de lo es el saber-hacer del CEAI. En segundo lugar, porque formaríamos personal capacitado para atender un sector de la industria del software algo desatendido en una región en la que, dicho esto a ojo de buen cubero, sería sumamente relevante. Adicionalmente, virar en ese sentido descongestionaría en alguna medida la presión laboral que ejerce el hecho de que varias universidades e instituciones tecnológicas estén produciendo tecnólogos en sistemas con énfasis en el desarrollo de software comercial. A todo lo anterior deben sumársele otras cosas positivas, como la oportunidad que representa para nosotros, los instructores del área, en términos formativos, desarrollar proyectos de esas características. Y para los aprendices especializarse: en esta área les traerá, antes que nada, grandes beneficios.

Sin embargo, debemos cuestionarnos al respecto de lo siguiente: ¿el énfasis industrial será sólo formativo o deberá convertirse también en nominal? Quiero decir, ¿el título de estos grupos dará cuenta de que su orientación es a la informática industrial? Digamos que es claro que el programa de análisis y desarrollo de sistemas de información se corresponde con un programa formal de tecnología en sistemas. Digamos además que en términos de las bases de conocimiento necesarios para el desarrollo de proyectos de software, sean industriales o del sector comercial y de servicios, es similar. Pero reconozcamos que el tiempo que se dedicaría a los componentes adicionales para dar un matiz industrial al programa reduciría el tiempo en lo que son componentes comunes del desarrollo de software dedicado al comercio y a los servicios – tanto más cuando ya vienen de nuevo reducidos los tiempos de las nuevas versiones del programa –, y que, siendo así, lo más justo es que este énfasis derive en que se profiera un título que le corresponda. Porque de lo contrario, ¿qué le dirá al sector industrial que el egresado de este programa tiene ése enfoque? ¿Y qué hará que el egresado, en vista de que está preparado mas no titulado de manera acorde, se inserte en el sector laboral por la parte del desarrollo de software comercial, perdiendo así algunas de las ventajas que he señalado antes?

No sé en qué medida la autonomía de los centros permita que se agregue el apéndice necesario al título que profiere el CEAI para los adsi, ya de por sí largo, logrando así que quede evidencia del proceso, o si la mención de los proyectos desarrollados durante la fase lectiva sirva como referente en el mercado laboral o si sea necesario llegar al nivel de una mesa sectorial que revise el programa y que lo ajuste a dichas necesidades, pero lo que sí es cierto es que además de lograr dar un viraje tan interesante al saber-hacer del egresado de esta especialidad se debe lograr articular esto con un título que le sea equivalente. Al pan por su nombre. Lo mismo que al vino.

Posted in Formación Profesional | Etiquetado: , , | Leave a Comment »

Aplazado lanzamiento de Visual Studio 2010

Posted by Jhonny López Ramírez en 22 diciembre 2009

Microsoft ha decidido aplazar el lanzamiento de Visual Studio 2010® y su correspondiente framework (.Net Framework 4.0). Esto se debe a que se han tomado muy en serio los cuestionamientos sobre rendimiento, sobre todo en la gestión de memoria virtual,  que se han encontrado en las sucesivas betas lanzadas. En ese sentido se habían recibido comentarios por parte de los usuarios de la primer beta y se realizaron mejoras importantes en la segunda, pero han decidido que tienen que mejorar aún más y lanzarán en febrero de 2010 una versión candidata final con dichas mejoras. Tomarán el feedback de dicha versión y reaccionarán para completar la versión definitiva, que aún no tiene fecha. De hecho, en el blog de Soma se ha retirado el conteo regresivo que apuntaba a la fecha de lanzamiento inicial (22 de marzo de 2010).

Tengo reacciones encontradas al respecto. Tenía muy presente el lanzamiento puesto que pensaba iniciar algunos proyectos en esta nueva versión y tendré que retrasarlos o bien iniciarlos y luego migrarlos; ninguna de las dos ideas termina de gustarme. Pero por otro lado, supongo que el producto lanzado tendrá mayor calidad y no tendremos que esperar a un Service Pack que solucione estos inconvenientes.

Posted in Desarrollo de software | Etiquetado: , | Leave a Comment »

Google y la privacidad

Posted by Jhonny López Ramírez en 11 diciembre 2009

En una reciente entrevista de la CNBC a Eric Schmidt, CEO de Google, se le preguntó sobre las políticas de privacidad del motor y el uso de toda la información que recopila el mismo y esto fue lo que respondió:

“Si usted tiene algo que no quiere que nadie sepa, quizás usted no debería estar haciéndolo. Si usted realmente necesita ese nivel de privacidad, la realidad es que los motores de búsqueda, Google incluido, retienen esta información durante algún tiempo y es importante, por ejemplo, ya que todos estamos sometidos en los Estados Unidos a la Ley Patriótica y es posible que toda esa información podría ponerse a disposición de las autoridades.”

Creo que es bastante clara la posición de Google frente a los datos que recopila de sus usuarios. Y bastante escandalosa. Al punto que, por ejemplo, desde Mozilla empiezan ciertas voces a sugerir optar por otros motores de búsqueda (sorpréndanse, sugieren a Bing, ya que tiene una mejor política de privacidad que Google).

Sugiero usar Ecosia.

Posted in Otras categorías | Etiquetado: | 2 Comments »

Ecosia, el buscador ecológico

Posted by Jhonny López Ramírez en 5 diciembre 2009

Posted in Otras categorías | Etiquetado: | Leave a Comment »