domingo, 18 de diciembre de 2011

Gira Up To Secure 2012 en Tenerife

Gira Up To Secure 2012

Ven a pasar una mañana con nosotros disfrutando de charlas tecnológicas sobre seguridad y gestión de sistemas. Ven a ver cómo preparar los entornos de funcionamiento de los sistemas de hoy en día para ofrecer, de forma segura, los servicios de movilidad demandados en la actualidad. Ven a ver lo que será el nuevo Windows 8, los nuevos servicios de Windows Live e Internet Explorer 10.
Dirigido a: Responsables de sistemas, administradores de tecnología, auditores de seguridad, IT Pros y responsables de seguridad. Este evento NO está orientado a estudiantes de formación profesional o módulos de nivel III o grados medios, aunque si algún profesor y grupo de estudiantes desea asistir, podrá solicitarlo a info@eventos-creativos.com y se le asignarán plazas en función de disponibilidad.

Información
Fecha: 9 de Marzo de 2012
Localización: Servicio de Apoyo Empresarial CajaCanarias (SAECO) Sala de Conferencias de la sede central de CajaCanarias, Plaza del Patriotismo, 1. Santa Cruz de Tenerife.
Registro: [Registrarse]

Agenda 
09:00 - 09:30 Registro
09:30 - 10:10 Análisis Forense de smartphones: Los dispositivos móviles se han metido en nuestras empresas. Casi todos los trabajadores, ya sea de forma personal o profesional, cuentan con tecnología de smartphones, ya sea con sistemas operativos iOS, BlackBerry, Android o Windows Phone 7. En esta sesión se verá como utilizar la poderosa herramienta Oxygen Forensics para hacer análisis forense a los terminales en caso de ser necesario realizar una investigación. La empresa EnigmaSec, distribuidora oficial de Oxygen Forensicss en España impartirá esta sesión.
10:00 - 10:45 Seguridad, Mantenimiento y gestión de parches de seguridad en la nube: En esta charla podrás ver una solución de monitorización pro-activa de sistemas y redes que facilita la vigilancia de servidores, estaciones, comunicaciones, hardware, software, e inventariado, integrada con herramientas automáticas de mantenimiento de servidor y estaciones de trabajo, soporte remoto integrado, integración con herramientas PSA, etc… Se verá en acción una demostración práctica de la solución GFI MAX RemoteManagement™.
10:45 - 11:30 Soluciones de seguridad empresarial desde la nube. Nuevos retos: protección de terminales móviles: La movilidad, usuarios itinerantes, smartphones, etc…, facilitan la vida empresarial, pero también son vectores de ataque utilizados por cibercriminales. ESET cuenta con diferentes capas tecnológicas diseñadas contra el cibercrimen que, teniendo como base la nube, protege todos los vectores de ataque, incluyendo a usuarios itinerantes y terminales móviles. En esta sesión podrás ver una demostración práctica de cómo implementar este tipo de servicios.
11:30 - 12:00 Café 
12:00 - 12:45 Firma digital y biométrica en smartphones y tablets: La firma de documentos electrónicos en los smartphones/tablets permiten implementar una estrategia para reducir el uso del papel en muchos procesos de negocio con trazabilidad, menores costes, mayor productividad y garantías legales. Se acabo ir a la oficina para firmar un documento o autorizar una transacción. Esta sesión será impartida por SmartAccess.
12:45 - 13:30 Lo que será Windows 8: En esta sesión podrás ver las novedades de Windows 8, Internet Explorer 10, lo nuevo en Windows Live, y la integración de todos los servicios en una única plataforma que te llevará de tu casa al trabajo pasando por la nube.
13:30 -13:45 Preguntas y respuestas

sábado, 17 de diciembre de 2011

Error al depurar una aplicación ASP.NET MVC3

Tras tener varios problemas con mi anterior ordenador no me ha quedado más remedio que cambiarlo. Una vez que mi nuevo equipo ha estado en mis manos me he puesto manos a la obra a instalar el entorno de desarrollo en una maquina virtual (todavía no he recuperado la información de los discos duros del otro ordenador). El orden de instalación que he seguido es el siguiente
  • Visual Studio Professional 2010 (más información aquí)
  • ASP.NET MVC3 (más información aquí)
  • IIS
  • SQL Server 2008 R2 Express Edition (más información aquí)
Al abrir un proyecto en el que estoy trabajando en ASP.NET MVC3 e intentar depurarlo obtenía un mensaje de error. Este mensaje de error me informaba que el Visual Studio no podía lanzar el depurador web. Siguiendo las indicaciones del mensaje lancé la aplicación sin depurar (CTRL+F5 en mi configuración) y el mensaje de error que obtuve fue este

Error HTTP 500.21 - Internal Server Error 
El controlador "BlockViewHandler" tiene una condición previa incorrecta "ManagedPipelineHandler" en su lista de módulos

Tras mirar la MSDN y algún foro encontré la solución que no es otra que lanzar el script aspnet_regiis.exe desde la carpeta del framework
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir

Espero que les sea de utilidad...

domingo, 4 de diciembre de 2011

Namespaces en javascript (2 de 2)

Siguiendo con la creación de objetos y los namespaces en javascript, ahora vamos otra forma de inicializar objetos. Está vez vamos a declarar un entorno y lo vamos a pasar como argumento de una función autoejecutable. El siguiente código nos muestra como hacerlo
var myContext = {};
(function (context) {
    var foo = 'Foo';
    var bar = 'Bar';

    // Private methods
    function getFoo () {        
        return foo;
    }

    function getBar () {
        return bar;
    }

    // Public methods
    context.getMessage = function () {
        return getFoo() + ' ' + getBar();        
    }

})(myContext);

console.log(myContext.getMessage());
console.log(myContext.getFoo()); // Uncaught TypeError: Object #<Object> has no method 'getFoo'
console.log(myContext.getBar()); // Uncaught TypeError: Object #<Object> has no method 'getBar'
Vemos como las variables 'foo' y 'bar' así como los método 'getFoo' y 'getBar' permanecen privados, por lo que solo tienen visibilidad dentro de su contexto. Lo métodos asignados al objeto pasado como parámetro (context), se podrán acceder de manera pública. Como nota, cabe destacar que este es el patrón que sigue jQuery.

This Namespace Proxy

Al leer sobre patrones y como declarar objetos en javascript unos de los patrones que más fama tiene es el patrón This Namespace Proxy (mejor no hacer traducciones) del desarrollador James Edwards. El patrón utiliza los comando apply y call. Para muchos este el patrón más elegante que hay en javascript. Veamos un ejemplo
var myContext = {};
(function () {
    var foo = 'Foo';
    var bar = 'Bar';

    // Private methods
    function getFoo() {        
        return foo;
    }

    function getBar() {
        return bar;
    }

    // Public Methods
    this.getMessage = function () {
        return getFoo() + ' ' + getBar();
    };

}).apply(myContext);

console.log(myContext.getMessage()); // Foo Bar
console.log(myContext.getFoo()); // Uncaught TypeError: Object #<Object> has no method 'getFoo'
console.log(myContext.getBar()); // Uncaught TypeError: Object #<Object> has no method 'getBar'

Siguiendo este patrón, podemos incluso asignar un mismo módulo a dos contextos direfentes, consiguiendo implementaciones paralela como podemos ver en el siguiente ejemplo
// Declarations
var myContext1 = {}, myContext2 = {};

// Method for any context
var increment = function (pSeed) {
    var lValue = pSeed || 0;
    this.increment = function () {
        return lValue++;
    }
};

increment.call(myContext1);
increment.call(myContext2, 100);

console.log(myContext1.increment()); // 0
console.log(myContext1.increment()); // 1
console.log(myContext1.increment()); // 2
console.log(myContext2.increment()); // 100
console.log(myContext2.increment()); // 101
console.log(myContext2.increment()); // 102

Conclusiones

En la programación Javascript, hay que evitar la creación de variables y métodos globales, si pretendemos integrar librerías de terceros o escribir un código que pueda ser reutilizado. Para ello tenemos que estructurarlo correctamente para evitar duplicidades que hagan que la ejecución de nuestro código no sea la esperada.

Para ello, recurrimos a la creación de objetos que actúen como contenedores de código que compartan funcionalidad. A lo largo de este artículo y del anterior hemos visto diferentes aproximaciones al mismo problem.