viernes, 19 de septiembre de 2014

Skins en Sql Server

El día de ayer estuve hablando con varios compañeros de trabajo sobre el alivio que se sentía en la vista al trabajar con skins oscuros en el Visual Studio 2013, también un compañero me comentó como tuvo que hacer unos cambios a nivel de registro de Windows para poder tener también un skin oscuro en el Sql Server Management Studio 2012 (SSMS) ya que no existe una forma a nivel de menú para realizar este cambio como sí sucede en Visual Studio, otro problema que tuvo mi compañero, fue que quería que los colores del skin en Sql Server fueran similares a los utilizados en el Visual Studio bajo el tema (Dark). Investigué un poco y me di cuenta que otra forma es a través de las extensiones del SSMS pero tampoco obtuve resultados muy satisfactorios.


Después de investigar un poco más, me di cuenta que existe una forma fácil de utilizar skins en SSMS, incluso utilizando los mismos skins del Visual Studio. Desde este sitio se pueden bajar skins de Visual Studio: "http://studiostyl.es/" (es un único archivo con extensión: "vssettings"), para poder utilizar dicho tema se ingresa al SSMS y desde el menú "Tools", "Import and Export Settings" se selecciona la opción "Import selected  environment settings", después de ir al siguiente paso del "Wizard" se selecciona la opción: "No, just import new settings, overriding my current setting", en el siguiente paso a través del botón "Browse" se seleccionan los temas descargados y después incluso se pueden seleccionar las características que se quieren utilizar del skin, al dar clic sobre el botón "Finalizar", el tema se carga en este ambiente con los atributos seleccionados, igualmente consiguiendo el tema "Dark" se puede utilizar el mismo tema oscuro de Visual Studio o incluso descargar cualquier tema que sea de su agrado y configurarlo en los dos ambientes de desarrollo.



Para poder cambiar los skins ya importados o volver al original se hace desde la misma opción: "Tools->Import and Export Settings->Import selected  environment settings" con la diferencia de que aquí se selecciona el tema deseado en vez de dar al botón "Browse".



domingo, 31 de agosto de 2014

Authorization Manager

Como bien se sabe dos de las tareas más comunes en un sistema de seguridad es la “Autenticación” y la “Autorización”, la autenticación es el medio por el cual se comprueba que un usuario es quien dice ser y la autorización es la validación de las tareas que puede llevar a cabo un usuario autenticado.

El Authorization manager o AzMan es una herramienta de Microsoft, que se integra en muchos de sus sistemas operativos, de esta forma se reutilizan las bondades del sistema operativo para una de las tareas que se requieren en casi cualquier sistema como lo es la “Autorización”, del mismo modo se puede también reutilizar las características del sistema operativo para el manejo de la autenticación a través de los usuarios locales de máquinas o el Active Directory.

Esta herramienta, es una de las más flexibles, fáciles y escalables para administrar la seguridad basada en roles, es tan flexible que se pueden administrar varias aplicaciones (sistemas o módulos), cada una con sus operaciones (que es la unidad más pequeña de trabajo), tareas que están compuestas por operaciones y roles (los cuales pueden tener asignados operaciones o tareas), también se pueden crear roles que heredan características de otros roles, al mismo tiempo dichos roles pueden ser asignados a usuarios o grupos del sistema operativo. También se pueden usar scripts para cambiar permisos dinámicamente. Dicha política de seguridad puede estar almacenada en un Active Directory o un archivo XML, a dicho repositorio se le conoce con el nombre de “Store”.

La asignación de funciones y la corroboración de operaciones para un usuario se pueden configurar fuera de la aplicación y se pueden realizar mediante programación dentro de la aplicación.                        
A continuación paso a paso un ejemplo de la administración de seguridad con AzMan.

Paso 1
Clic en el menú inicio y escoger la opción run (Ejecutar), escribir AzMan.msc y dar clic en OK, este comando va a abrir el Authorization Manager.

 
Paso 2
Escoger la opción Action del menú y dar clic en Options…, se abre un cuadro de dialogo con los modo Developer o administrador. Se debe escoger el modo Developer como es de suponerse para la etapa de desarrollo (en este modo se tienen mayor cantidad de opciones, como la posibilidad de crear el store).


Paso 3
Escoger Action en el menú y dar clic en New authorization store. El usuario tiene la opción de crear un XML o utilizar el repositorio de Active Directory como authorization store. En la próxima imagen se utilizará un XML como authorization store.
Especificar la ruta del XML y digitar una descripción en caso de ser necesaria. Igualmente se recomienda en un repositorio XML durante la etapa de desarrollo y un Active Directory en producción.


Paso 4
Ingresar nuevamente al menú Action y seleccionar la opción New Application.


Paso 5
Indicar el nombre de la aplicación, una descripción y la versión de la misma.


Paso 6 
Expandir la aplicación y seleccionar la “Operation Definition” que está dentro de la carpeta Definitions. Ahora ingresar al menú “Action” o posicionar el cursor en el panel derecho y oprimir clic derecho para abrir el menú. Seleccionar la opción para crear una nueva definición de operación. Indicar el nombre, descripción y número, para la nueva operación. Se debe tener el cuidado de indicar un número único para cada una de las operaciones creadas.




Paso 7
Seleccionar la carpeta Task Definitions folder y escoger New Task en el menú Action o dar clic derecho y escoger la opción para crear una tarea nueva. Cada tarea que se crea va a tener una o más operaciones asociadas. Una tarea también puede tener tareas anidadas. Se debe indicar el nombre de la tarea y una descripción y luego dar clic en OK. 

Paso 8
Oprimir clic derecho sobre la nueva tarea y escoger la opción propiedades. En el tab Definition dar clic en Add y seleccionar las operaciones respectivas de la tarea.




Paso 9
Ya se tienen definidas todas las operaciones y tareas para cada módulo.


Paso 10
Oprimir clic derecho sobre Role definitions que está dentro de la carpeta Definitions, elegir la opción New Role Definition, indicar el nombre y la descripción del rol y dar clic en OK. 



Paso 11
Oprimir clic derecho sobre el rol y elegir la opción propiedades. En el tab Definition dar clic en Add, en la ventana que se despliega seleccionar el tab Task y escoger las tareas respectivas.


Paso 12
En el paso anterior se indicó como asignar las tareas a los roles. Ahora se debe asignar solo los roles adecuados para la aplicación creada. Seleccionar la carpeta "Role Assignments" que está en la carpeta Application y escoger la opción Action del Menú y de ahí Assign Roles. Seleccionar los roles adecuados de la lista.


Paso 13
Asignar usuarios y crear grupos para los roles definidos. Escoger la carpeta Group que está dentro de la carpeta de la aplicación, oprimir clic derecho y seleccionar la opción New application group. Indicar el nombre y la descripción del Application Group y oprimir OK.  Oprimir clic derecho sobre el nuevo Application Group y seleccionar propiedades. En la ventana de propiedades, escoger el tab Members y dar clic sobre la "Add Windows Users and Groups..." y agregar los usuarios correspondientes.




Paso 14
Seleccionar el rol que tiene asignada la aplicación (dentro de la carpeta Role Assigments), oprimir clic derecho en el rol y escoger la opción Assign Application Group y seleccionar los grupos de usuarios de la lista que se despliega.


Paso 15
Oprimir clic derecho sobre la carpeta de la aplicación y seleccionar la opción New Scope. Indicar el nombre y la descripción del Scope y oprimir OK.


viernes, 6 de junio de 2014

Microsoft Certifications

Microsoft Certifications

Al estar muy de cerca de Microsoft durante muchos de los años en los que tengo de laborar y ser contacto principal de dicha empresa en el lugar en el que trabajo, además de que muchas personas me consultan sobre este respecto, se me ocurrió recopilar un poco de la información que he recolectado durante todo este tiempo y me pareció interesante agregar un artículo en el blog sobre esto, la idea es ver un poco la historia y documentar qué es lo que existe hoy en día (2014) y las preguntas más frecuentes sobre qué hacer para certificarse con Microsoft.

Primera Generación

Hasta donde tengo memoria, las primeras certificaciones proveídas por Microsoft incluían la MCP (Microsoft Certified Professional), MCAD (Microsoft Certified Application Developer), MCSD (Microsoft Certified Solution Developer), MCDBA (Microsoft Certified Data Base Administrator) en el área de desarrollo o MCSE (Microsoft Certified Systems Engineer) y MCSA (Microsoft Certified Systems Administrator) en el área de infraestructura, entre muchas otras, estas evolucionaron de entre tecnologías tan variadas como Visual Studio 5.0, 6.0 (Incluyendo Visual Fox), 2002, 2003, SQL Server 6.5, 7.0 o 2000.

Segunda Generación

Casi que Con la salida del Visual Studio 2005 y SQL Server 2005, surgió lo que Microsoft denominó certificaciones de la nueva generación que ahora eran más orientadas hacia una especialización particular:

MCTS (Microsoft Certified Technology Specialist): Digamos que Homólogo al MCP, una de sus principales similitudes es que consistían en certificaciones que se ganaban con tan solo un examen, aunque algunos MCTS requerían de dos exámenes, adicionalmente, el MCTS venía más orientado a una especialidad en específica, mientras que el MCP era totalmente genérico, tomando en cuenta gran variedad de especialidades como SQL Server 2005 o BizTalk 2006, así con el MCTS existían certificaciones con “apellido” por decirlo así como por ejemplo: “MCTS SQL Server 2005”.

MCITP: Microsoft Certified IT Professional, que podía tener especialidades en el área de Business Intelligence, como DB Developer o como DBA (Homólogo al MCDBA).

MCPD: Microsoft Certified Professional Developer, que podía tener especialidades en aplicaciones Windows, Web (Homólogo al MCAD) y aplicaciones Enterprise (Homólogo al MCSD, que era por decirlo así, un escalafón más por encima del MCAD). Esta certificación también tenía “apellido” como por ejemplo: “MCPD: Web Developer”.

Adicionalmente se incluye un nivel nuevo, el Microsoft Certified Architect Program que reúne como requisitos 10 años de experiencia y 3 años como arquitecto, además de una tutoría de un arquitecto certificado de Microsoft.

Una característica de esta generación de certificaciones era que existían muchos exámenes que se podían reutilizar, por ejemplo el examen 70-536 podía servir para varios MCTSs y para todos los MCPDs), por esta razón siempre es muy importante el conocer muy bien todos los exámenes requeridos para cada certificación lo que se conoce como el Certification RoadMap.




Tercera Generación

Actualmente ya existe una nueva generación, esta se divide en cuatro grandes áreas (Business, Client, Server, Database y Development) en prácticamente todas estas áreas existe la certificación (aunque al no tener la palabra “certified”, digamos que es más como un asociado) MTA (Microsoft Tecnology Associate), la cual llega a sustituir al MCTS, la principal diferencia radica en que los exámenes para los MTA no se reutilizan en las certificaciones de mayor nivel.

Un dato curioso es que en los siguientes niveles de esta generación prácticamente todos los acrónimos de las certificaciones coinciden con acrónimos de la primera generación, aunque no necesariamente tienen relación con los mismos, de hecho podríamos decir que prácticamente no tienen relación. Por ejemplo el siguiente nivel consiste en el MCSA (Microsoft Certified Solutions Associate) que aplica para las áreas de Client, Server y Database, el en área de Business el análogo al MCSA es el MOS Specialist (Microsoft Office Specialist), mientras que en el área de desarrollo (development) no hay una certificación para este primer nivel.

El siguiente nivel lo conforman el MOS Master (en el área de Business), MCSE (Microsoft Certified Solutions Expert) para las áreas de Server y Database, estas también poseen apellidos como por ejemplo (MCSE Data Platform) y digamos que están al nivel de los anteriores MCPD y MCITP, mientras que en el área de desarrollo a este nivel tenemos la certificación MCSD (Microsoft Certified Solutions Developer), interesante notar que esta dice “Solutions” y no “Solution” como la de la primera generación, estás también tienen “apellido” como por ejemplo: “MCSD Web Apps”.

En la cumbre de esta pirámide, nos encontramos con el Microsoft Certified Solutions Master (MCSM) y Microsoft Certified Architect (MCA).




Quiero certificarme, ¿qué hacer?

Cuando alguien va a empezar a certificarse siempre es recomendado empezar por la última generación disponible y estudiar muy bien el RoadMap, así se podría determinar por qué ruta empezar, por ejemplo podría determinarse que el área de su interés es desarrollo (development) y más específicamente el área Web por lo que tendría muy claro que el primer examen a llevar a cabo sería el 70-480.

En el sitio Web www.microsoft.com/learning, se puede encontrar información muy útil sobre todas las certificaciones disponibles de Microsoft, los exámenes que estos requieren, los cursos necesarios para optar por los diferentes exámenes, el temario completo de cada uno, así como libros recomendados entre los que se encuentran los famosos self-paced que según Microsoft contienen la información necesaria para aprobar un examen en específico. Por supuesto dicho sitio solamente incluye material de Microsoft pero existe mucho más material de estudio de terceros incluyendo libros, simuladores, etc. Siempre lo más importante de estos ejercicios de certificación es el homologar conocimientos e ir siempre aprendiendo cosas nuevas con el fin de utilizar dicha información en la labor diaria, talvez es muy difícil que alguien domine perfectamente cualquier tema y/o tecnología pero es muy útil el conocer al menos gran parte de las opciones que nos brinda Microsoft, para explotar de una mejor forma dichas tecnologías.

Para realizar un examen de certificación de Microsoft al igual que cualquier otro tipo de certificación como Cisco, Solaris, Oracle o Adobe, estos no pueden ser realizados por universidades si no que requiere de proveedores de exámenes reconocidos por el ente certificador (Exam Providers), como por ejemplo VUE, Thomson Prometric o Certiport, en el caso de Microsoft actualmente solamente tiene un proveedor certificado, Thomson Prometric (http://www.prometric.com), los exam providers, tienen a su vez asociados Test Centers que es donde se realiza físicamente el examen, por ejemplo en Costa Rica tenemos New Horizons o Biznet. Desde el sitio de Prometric se pueden revisar los test centers, además se pueden inscribir para programar y pagar un examen (actualmente el costo es de $100) también se puede revisar la disponibilidad de horarios.

domingo, 18 de mayo de 2014

Emprendedurismo social en Costa Rica y su relación con empresas de Tecnologías de la Información y Comunicación

Como parte de los requisitos que se me solicitaron para mi reciente graduación como MBA de la ULACIT, estuvo el desarrollo de un proyecto de Investigación Empresarial Aplicada, me parece muy provechoso escribir aquí un extracto de dicha investigación cuyo título es compartido por esta entrada del blog, además de que me parece que es un tema interesante e introduce un poco de aportes a raíz de mi formación como tecnólogo:

El término emprendedurismo social, se asocia con la acción de los emprendedores, identificándose estos por poseer iniciativas muchas veces creativas o innovadoras que terminan en la creación de nuevas empresas o de un proyecto concreto. Este último punto es muy importante, ya que un emprendedor, para ser considerado como tal, debe ser proactivo y poner en marcha las buenas ideas e intenciones que posee. Asimismo, en cuanto al concepto de emprendedor social, es posible partir de la definición anterior y determinar que un emprendedor social es alguien que posee iniciativas, muchas veces creativas e innovadoras, las cuales culminan en el desarrollo de una nueva empresa o un proyecto concreto, siempre orientado a lo social. Por esto último, se entiende que su fin es ayudar a la sociedad o al medio ambiente y a la vez velar no solo por los intereses propios, sino también por los comunes. Una definición muy interesante es la dada por Álvaro Ramírez (2008, p. 1), del Departamento de Creación de Empleos y Desarrollo de la Empresa Organización Internacional del Trabajo (OIT), en una entrevista ofrecida de cara al concurso “Emprendedor Social del Año – América Central 2008”.

En dicha entrevista, Ramírez manifiesta que no existe una definición única y universal, sin embargo, afirma que todo emprendimiento social debe reunir al menos tres elementos clave: “un objetivo social, una innovación transformadora y un modelo de negocios sostenible“. Dicha definición es muy certera, sencilla e interesante, pues engloba los conceptos del emprendedurismo en cuanto a innovación y, por supuesto, al hecho de ser sostenible- ningún emprendimiento se puede considerar exitoso si no logra ser sostenible-. Dicha definición incluye, además, el “objetivo social” propio de este tipo de emprendimientos.

En la presente investigación, se trató de partir de este concepto y enfocarlo espacialmente hacia Costa Rica. Si bien se podría decir que el emprendedurismo social es un concepto relativamente joven, ya ha tenido cierto impacto mundial y abundan los casos de su utilización. Quizá el más conocido de entre varios casos anónimos es el del “Banco de los pobres”, formalmente Grameen Bank de Bangladesh, el cual puso en marcha el concepto de “Microcréditos” creados específicamente para ayudar a los más pobres a emprender sus proyectos Esta iniciativa, impulsada por Muhammad Yunus, lo hizo acreedor del Premio Nobel de la Paz en el año 2006. El propósito de enfocar el estudio en el país es determinar la existencia de este tipo de iniciativas locales, más específicamente en la industria de las tecnologías de la información y la
comunicación.

Según autores como Merino, A; Ballesteros, C; Bilbao, P; Carrero, I; Contreras, D; Díaz, E; Labajo, V; Linares, P y Varlos, C (s.f.) la tecnología es un punto esencial para la puesta en marcha de los emprendimientos sociales. En su “Guía del Emprendedor Social”, el uso de la tecnología ofrece ventajas tales como transparencia, escalabilidad de la solución, distribución, rapidez, conexión directa, mayor internacionalización, conectividad, eliminación de barreras y prejuicios y accesibilidad. Además, da paso a la optimización de recursos, maximización del impacto social, ajuste de la inversión necesaria y localización de las barreras de la comunicación a través de herramientas como la Internet, los teléfonos móviles inteligentes y los protocolos de comunicación.

Después de la presente investigación se llegaron a las siguientes conclusiones:

1. En términos generales y según la posición de emprendedores, académicos y afines del área de las tecnologías de la información y comunicación, así como también aquellos individuos relacionados con emprendimientos en el país, los casos de emprendedurismo social en Costa Rica son escasos. Lo anterior se debe a varios motivos, entre los que destacan una cultura muy poco orientada al emprendedurismo, en términos generales, por aspectos como la gran cantidad de oportunidades de empleo, especialmente en el área de las tecnologías de la información y comunicación, una cultura muy orientada al individualismo, la falta de información y formación en las universidades y centros de estudios y al escaso apoyo por parte del gobierno y las entidades financieras.

2. Realmente, las tecnologías de la información pueden ser un gran aporte para emprendimientos, tanto comerciales como sociales. Por muchos años, ha existido la percepción, que en ocasiones se torna real, de que los recursos relacionados con las TIC resultan costosos. Sin embargo, con eventos tan importantes como la apertura en las telecomunicaciones y el consiguiente “boom” en la venta de dispositivos móviles y APPS, así como el surgimiento de tecnologías en la nube, el desarrollo de nuevos emprendimientos en este ámbito ha resultado más aprovechable o al menos lo ha sido el aporte de este tipo de tecnologías para el desarrollo de emprendimientos sociales.

3. Algunos casos de emprendimientos sociales en nuestro país son el INBio Parque, la clínica de especialidades médicas Asembis, la Asociación Costarricense para Organizaciones de Desarrollo Empresarial (Acorde), FUNDECOPERACION, FUPROVI, ADAPTE, AMPO, Costureras del Obelisco, Dogood, Reciclarte y Fundación Acción Joven, entre otros muchos casos un poco más anónimos por la misma naturaleza de enfocarse en ayudar antes de darse a conocer. Casos como la universidad CENFOTEC o ASIS (Asociación para la Innovación Social) pueden considerarse como emprendimientos sociales en el área de las tecnologías de la información y comunicación, ámbito en que dichos casos son más escasos.

4. En general, la visión de los futuros emprendedores en el área social es un poco más alentadora que su actual desarrollo en el país. Si bien se identifican los mismos problemas que se dan en la actualidad, tales como la falta de apoyo y de información en los procesos formativos, sí consideran que los proyectos con fin social pueden ser rentables, a la vez que estarían dispuestos a pagar de más por este tipo de emprendimientos.