Sitio Web del poderoso ChicoDotNet

Sitio Web del poderoso ChicoDotNet es el lugar donde puedes aprender todo lo nuevo sobre desarrollo de aplicaciones para Windows, ASP .NET, SmartClient y adquirir los súper poderes que te da la mejor plataforma de creación de programas: Microsoft .NET

20080223

Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida

Windows Vista cumplió un año en noviembre de 2007, si bien su distribución masiva se llevó a cabo hasta enero de ese mismo año desde noviembre de 2006 está en manos de los socios de negocio de Microsoft.

Lo que sigue es mi anécdota personal sobre Windows Vista, el sistema operativo más confiable que he tenido en mis manos, si quieres ir a "la carnita" de la noticia que estoy tratando haz clic aquí para ir a la parte noticiosa del post, si no pues sigue leyendo :-P.

En lo particular yo tuve acceso a Windows Vista en diciembre de 2006, cuando llegaron "los dulces" a la compañía en la que yo trabajaba en ese entonces, me acuerdo muy bien de que me tomó 3 días inventariar todo mi software, respaldar toda mi información de los últimos 15 años -ahora ya uso un array de discos en mi casa para mis cosas personales y antiguas-, que vivían en mi entonces nueva laptop HP dv2135 LA, que venía originalmente con Windows XP Professional y que compré específicamente esperando la llegada de Vista:

  • Procesador Intel Core 2 Duo @ 1.66 Ghz.
  • 2 Gb en memoria RAM @ 600 Mhz.
  • Disco duro de 120 Gb @ 7200 rpm.
  • Pantalla 15.4" WXGA @ 1280x800.
  • Multi-puertos modernos (3 USB, 1 Firewire, 1 Slot Expansion Port 3, 1 LAN 10/100 Mbps, 1 SD, 1 ExpressCard, 1 DVD-RW con tecnología LightScribe, Sonido 3D con un montón de puertos de audio).

No compré una Mac Book Pro en lugar de la HP porque el financiamiento para la laptop fue otorgado a mitad por la compañía con la que trabajaba y uno de mis dos entonces jefes, un experto en administración de proyectos de tecnología me dijo que iba a ser una lata tenerme dos meses corriendo XP en modo virtualización o pagar por la licencia sin usar de Mac OS X. Me acuerdo también que el otro de mis dos entonces jefes, un prominente gurú de tecnologías Microsoft me hizo ver que mi decisión de instalar la versión x64 de Windows Vista Ultimate en lugar de la versión x86 me iba a tomar todo un fin de semana o más para encontrar los controladores adecuados (en realidad sólo batallé por el Firewire y estaba en la página Web de Dell) pero no tuvo problema con mi pasión por la tecnología.

Pues bueno, instalé Windows Vista Ultimate x64 y luego todo el ambiente de desarrollo necesario también en versión x64, herramientas como Visual Studio Team System 2005, Microsoft SQL Server 2005 Developer Edition, Visual Source Safe 2005 y por supuesto Microsoft Office 2007 Ultimate, mis habituales herramientas de terceros que funcionaron sin problemas (La más preocupante fue mi licencia de Norton Internet Security, el antivirus que he utilizado los últimos 5 o 6 años y que acababa de renovar en octubre de 2006) y fuí el segundo de toda la compañía que lo tuvo instalado (el proceso se retasó un día porque el encargado de las licencias de software creyó que iba yo a poner la versión de 32 bits y estaba quinto en la lista de espera, cuando le dije que la de 64 bits sólo consultó con el jefe y al rato ya estaba yo instalando).

Bueno, pues si bien la puntuación total de la Evaluación de la experiencia en Windows de mi laptop es de 3.1 por culpa del chipset gráfico Intel Mobile 945 Express Chipset que me da 3.4 para Aero y 3.1 para gráficos de juego, Windows Vista sólo me ha dado un par de dolores de cabeza en más de un año de ser mi compañero de trabajo más frecuente: el primero fue el controlador Firewire y el segundo la incompatibilidad de 64 bits con el API de SharePoint, pero en general se ha mantenido con un índice de confiabilidad entre 9.24 del segundo día de uso (el primero falló la instalación del Bluetooth y de LightScribe y estuvo en 9.17) y 2.2 el día que tronó como ejote mi iPod luego de probar una versión alpha o beta, no recuerdo de Safari para Windows (qué increíble que las herramientas de monitoreo incluídas en Windows Vista me permitan platicarles toda la historia), pero en general el promedio de uso intenso que yo le doy como desarrollador mantiene la confiabilidad entre 6 y 8, que son valores que me permiten trabajar muy a gusto, aunque estoy pensando seriamente cambiar mi laptop en su cumpleaños 1.5 por una del doble de capacidad siguiendo la Ley de Moore el próximo mes de abril. Ahora la noticia:

Reporte de vulnerabilidades de Windows Vista a un año de su lanzamiento

Jeff "Security Guy" Jones quien mantiene un blog sobre seguridad informática en TechNet y que es el director estratégico en el Microsoft Security Technology Unit publicó un reporte de vulnerabilidades. Este trabajo analiza la divulgación de las vulnerabilidades y actualizaciones de seguridad para el primer año de Windows Vista y las analiza en el contexto de su predecesor, Windows XP, junto con otros sistemas operativos modernos de trabajo como Red Hat, Ubuntu y productos de Apple y Novell.

Los resultados del análisis muestran que el perfil de vulnerabilidad gracias a las mejoras de la seguridad de Windows Vista es mejor que el de su predecesor. El análisis de las actualizaciones de seguridad de Microsoft también pone de manifiesto que las mejoras en el proceso de actualización de seguridad y el proceso de desarrollo han reducido el impacto de las actualizaciones de seguridad de Windows a los administradores de manera significativa en comparación con su predecesor, Windows XP.

El reporte puedes descargarlo en formato PDF desde el blog de Jeff Jones o en el enlace siguiente en TechNet: Windows Vista One Year Vulnerability Report.

Etiquetas: , , , , , , ,

Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida

Escrito por Alfonso Lara Ramos @ 07:00 0 comentarios

Busca Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida en Technorati | Guarda Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida en Yahoo | Guarda Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida en Google Bookmarks | Envía Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida a Furl | Envía Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida a Newsvine | Guarda Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida en Ma.gnolia.com | Envía Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida a Reddit | Envía Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida a BarraPunto | Envía Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida a Digg | Envía un Meme sobre Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida | Guarda Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida en del.icio.us | Envía Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida a Fresqui | Menea Windows Vista es el sistema operativo moderno con menos vulnerabilidades en su primer año de vida en Menéame

Contenidos relacionados: Google, Live Search, Tafiti, Yahoo

20080208

Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger

Casi íntegramente copiado del blog de Martín (ex-autor de Memorias de un Geek), después de todo un desarrollador pragmático reutiliza lo que ya está bien hecho. Por cierto, al final incluyo un truco para realmente detectar quien no te admite en su lista de Windows Live Messenger.

Hace un tiempo, Genbeta recibió una serie de amanzas por este post (ahora mismo inaccesible, pero se puede leer en la caché de Google), asegurando que si no lo retiraban, habría problemas.

Efectivamente, ayer mismo, Julio Alonso escribía en el weblog corporativo de la red, comentando que las amenazas se habían hecho realidad: se había iniciado un ataque DDoS contra Genbeta, provocando que no cargase o que lo hiciese de forma muy lenta.

Así, en Al otro lado del mostrador se hacen eco de una iniciativa de Enrique Dans, que es difundir la información original por todos los blogs que sea posible, para que se cumpla aquello de ¿que no quieres caldo? pues toma dos tazas. Así que a continuación reproduzco la información original ofrecida en el post de Genbeta:

Parece mentira que después de tanto tiempo (¡años ya!) del invento de este fraude todavía haya gente que siga cayendo en él. Es muy simple, y seguro que muchos lo conocéis, simplemente se trata de páginas que ofrecen el servicio de mostrarte quién te tiene como no admitido o te ha eliminado del mésenyer a cambio de que les des tu datos de conexión, es decir, tu usuario y contraseña. Creía que este negocio ya estaba más que muerto, pero hoy mismo un par de contactos míos me han saltado con la típica ventanita que me acceda a una de esas páginas para que me lea el futuro.

Como norma general, dar la contraseña de tu correo a alguien que no pertenezca a tu familia ya es un suicidio tecnológico, y en este caso sería como darle la contraseña de tu tarjeta de crédito a una persona desconocida para que te muestre el dinero que tienes. ¿Quieres saber qué es lo que hacen? La mayoría de páginas, después de mostrarte esa información, se conectan a tu cuenta varias veces al día para molestar a todos tus contactos con spam descarado. Lo que es peor, esto puede colapsar tu cuenta y no sería raro que la perdieras para siempre, o al menos que la conexión sea pésima. Así que ya sabes, no des tu contraseña a ningún sitio web, o atente a las consecuencias.

Pero claro, ¡tú quieres saber quién te tiene como no admitido! Sorpresa: esos sitios, además de ser peligrosos, no funcionan. Microsoft cambió hace tiempo el protocolo para que los servidores de MSN no difundieran esta información. Antes sí podías, pero ahora mismo ni siquiera puedes saber el estado de otra persona sin que ella te invite/admite o sin saber la contraseña de la cuenta (sin cambiar la configuración de la cuenta). Sin rebuscar demasiado, algunos sitios fraudulentos que siguen esta práctica serían: blockoo.com, scanmessenger.com, detectando.com, quienteadmite.info, checkmessenger.net, blockstatus, etc… Todos ellos son potenciales phishing, y ninguno funciona más allá de recolectar cuentas de correo.

Cómo saber quién te tiene no admitido en el MSN

Ahora difundido el post, el truco para saber realmente quien no te admite ya en su lista de contactos de Windows Live Messenger.

Son solamente dos pasos:

  1. Como se muestra en la imágen da click en el botón de menú y selecciona la siguiente opción: Herramientas > Opciones
    Cómo saber quién no te tiene admitido en el Windows Live Messenger - Paso 1
  2. En el menú que te aparece da clic en la opción Privacidad, ahí te sale tu lista de admitidos y no admitidos... Bueno pues quien te haya dejado en estado de no admitido aparecerá con la siguiente apariencia cuando le des clic derecho (La opción Eliminar está habilitada):
    Cómo saber quién no te tiene admitido en el Windows Live Messenger - Paso 2, Opción 1
    En el caso que aún te quiere tener en contacto la apariencia es la siguiente (la opción Eliminar está deshabilitada):
    Cómo saber quién no te tiene admitido en el Windows Live Messenger - Paso 2, Opción 2

Finalmente quisiera concluír con la moraleja de que no deberías preocuparte por revisar este tipo de cosas, quien te elimina sin avisarte o sin una razón justificada no merece que te preocupes por mantenerlo en tu lista de contactos. Y si agregas a tus amigos de verdad y te portas bien con la gente no debería darse el caso muy seguido de que te eliminen. Felices relaciones humanas ;-)

Etiquetas: , , , , , , , ,

Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger

Escrito por Alfonso Lara Ramos @ 09:00 0 comentarios

Busca Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger en Technorati | Guarda Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger en Yahoo | Guarda Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger en Google Bookmarks | Envía Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger a Furl | Envía Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger a Newsvine | Guarda Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger en Ma.gnolia.com | Envía Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger a Reddit | Envía Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger a BarraPunto | Envía Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger a Digg | Envía un Meme sobre Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger | Guarda Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger en del.icio.us | Envía Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger a Fresqui | Menea Cómo saber quién no te tiene admitido en el MSN Windows Live Messenger en Menéame

Contenidos relacionados: Google, Live Search, Tafiti, Yahoo

20071207

Ciclo de vida de la depuración de aplicaciones

1. - Reproduce el error

Paso 1: Reproduce el error. - Esto puede parecer muy básico, pero para entender y en consecuencia ser capáz de corregir el error debes poder reproducirlo, entendiendo cuáles son las variables que están involucradas, en qué condiciones se lleva a cabo y entonces será posible empezar a trabajar en la depuración de errores de tu aplicación. Es sorprendente cuántas veces nos podemos encontrar con ingenieros de pruebas, desarrolladores e incluso arquitectos que te platican acerca de un bug que les salió pero que ya no pueden reproducir y más sorprendente aún es cuántas aplicaciones salen a producción con estos errores que no se corrigieron simplemente porque no era posible reproducirlos en la fase de desarrollo y pruebas. Una situación común es que funcione bien en tu máquina de desarrollo pero en en ambiente de pruebas el software no funcione correctamente. (¿Cuántos ingenieros se necesitan para determinar que la URL de su aplicación ASP.NET apuntaba a http://localhost/?).

2. - Describe el errorr

Paso 2: Describe el error. - Una vez que haz logrado reproducir el error es importante documentarlo adecuadamente, si no pudieras corregirlo en éste momento al menos puedes ayudar a que otro miembro del equipo pueda entender de que se trata el error para que posteriormente pueda trabajar en él, mientras mejor describas el error es más sencillo que puedas depurarlo de forma adecuada para corregirlo. Es también importante este tipo de documentación para efectos de errores que pudieran repetirse en futuras aplicaciones como guía para trabajar con patrones y antipatrones de diseño que eviten las malas prácticas.

3. - Siempre asume que el error es tuyo

Paso 3: Siempre asume que el error es tuyo. - Primero échale una mirada a tu código, la mayor parte de las veces puedes gastar demasiado tiempo analizando el código de otros cuando en realidad el problema se encuentra en el órden de las instrucciones que tu mismo escribiste o en la forma de hacer un llamado a otra clase o interfase desde tu propio código, una vez descartado esto puedes empezar a revisar lo que pasa en otras partes de la aplicación.

4. - Divide y vencerás

Paso 4: Divide y vencerás. - Trata distintos caminos, lee el código, trata de re-programar cada una de las acciones que el código realiza, es más fácil que dividiendo las funciones y subfunciones encuentres el error en tu código que si simplemente te pones a revisarlo como un todo, sobre todo toma en cuenta la regla del 80-20: el 80% de los errores es causado por el 20% de los elementos que intervienen en un proceso.

5. - Piensa en forma creativa

Paso 5: Piensa en forma creativa. - ¿El error puede ser causado por algo que se te pasó? ¿Tienen algo que ver las versiones de tus aplicaciones totalmente actualizadas en la máquina de desarrollo contra el servidor de pruebas que nadie actualiza? ¿Qué tanto de tu código está "hardcodeado" y podría no corresponder al ambiente de pruebas? ¿Se te ocurrió poner una condición AND en un IF en lugar de anidarlas? ¿Te faltó un ELSE?

6. - Utiliza herramientas

Paso 6: Utiliza herramientas. - Hay muchas herramientas para ayudarte a depurar una vez que llegas a este paso, desde el mismo Visual Studio hasta las herramientas de IBM-Rational, Compuware y Quest, pasando por NUnit, TestDriven.NET, FxCop, .NET Memory Profiler, y CLRProfiler.

7. - Inicia la depuración pesada

Paso 7: Inicia la depuración pesada. - Cuando empiezas a utilizar herramientas ya debes tener una idea del tipo de error que estás buscando, localizarlo y acabar con él. La diferencia entre esta depuración con la depuración ligera es que al tener ya una idea de lo que estás buscando y auxiliarte con una herramienta adecuada ya no estás sólo rastreando un error a ciegas, puedes ver valores de entrada y salida y en general es en este punto donde tus hipótesis de lo que está fallando se desmienten o se corroboran, ayudándote a programar una solución adecuada.

8. - Verifica que el error haya sido corregido

Paso 8: Verifica que el error haya sido corregido. - Antes de decir: "Esto ya quedó" lo más correcto es como todo en la ingeniería: revisa que realmente haya quedado, Muchas veces la corrección de un bug te hace darte cuenta de otros más que estaban por ahí escondidos, vuelve al paso 1 y si todo ha quedado entonces ahora sí dale proteger a tu control de código fuente.

9. - Aprende y comparte

Paso 9: Aprende y comparte. - Platica el error y la solución con el equipo, es la mejor manera de que ellos compartan contigo otros conocimientos que vayan adquiriendo, termina la documentación del error con la solución encontrada, siempre es bueno terminar la depuración de tu código de esta manera para mejorar la forma en la que vas desarrollando tu código y el del resto del equipo.

Etiquetas: , , , , , , ,

Ciclo de vida de la depuración de aplicaciones

Escrito por Alfonso Lara Ramos @ 22:00 0 comentarios

Busca Ciclo de vida de la depuración de aplicaciones en Technorati | Guarda Ciclo de vida de la depuración de aplicaciones en Yahoo | Guarda Ciclo de vida de la depuración de aplicaciones en Google Bookmarks | Envía Ciclo de vida de la depuración de aplicaciones a Furl | Envía Ciclo de vida de la depuración de aplicaciones a Newsvine | Guarda Ciclo de vida de la depuración de aplicaciones en Ma.gnolia.com | Envía Ciclo de vida de la depuración de aplicaciones a Reddit | Envía Ciclo de vida de la depuración de aplicaciones a BarraPunto | Envía Ciclo de vida de la depuración de aplicaciones a Digg | Envía un Meme sobre Ciclo de vida de la depuración de aplicaciones | Guarda Ciclo de vida de la depuración de aplicaciones en del.icio.us | Envía Ciclo de vida de la depuración de aplicaciones a Fresqui | Menea Ciclo de vida de la depuración de aplicaciones en Menéame

Contenidos relacionados: Google, Live Search, Tafiti, Yahoo

20070901

Como cambiar tu dirección IP desde la línea de comandos

Mientras estás desarrollando y probando es importante a veces cambiar tu dirección IP y luego regresar a tu dirección normal DHCP. Hacerlo a mano es tedioso y te lleva mcho tiempo pero Windows tiene un comando shell que te permite hacerlo de manera sencilla: NETSH.

NETSH tiene muchas funcionalidades que puedes encontrar con la opción /?, pero volviendo al tema para hacer el cambio de forma sencilla necesitas el comando NET INTERFACE IP.

Por ejemplo: para mostrar la información de tu IP actual utilizarías:

C:\>netsh interface ip show addresses

Para cambiar tu IP a dinámica (DHCP) utilizarías la siguiente sintaxis:

C:\>netsh interface ip set address name="Local Area Connection" source=dhcp

Donde sustituyes Local Area Connection con el nombre de tu conexión.

Y para hacerla estática utilizarías:

C:\>netsh interface ip set address "Local Area Connection" static xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx x

Donde sustituyes Local Area Connection con el nombre de tu conexión y las x con valores separados por espacios y donde el primer valor es tu nueva IP estática, el segundo la máscara de subred, el tercero la puerta de enlace predeterminada y el cuarto la métrica.

Etiquetas: , , , ,

Escrito por Alfonso Lara Ramos @ 13:40 0 comentarios

Busca Como cambiar tu dirección IP desde la línea de comandos en Technorati | Guarda Como cambiar tu dirección IP desde la línea de comandos en Yahoo | Guarda Como cambiar tu dirección IP desde la línea de comandos en Google Bookmarks | Envía Como cambiar tu dirección IP desde la línea de comandos a Furl | Envía Como cambiar tu dirección IP desde la línea de comandos a Newsvine | Guarda Como cambiar tu dirección IP desde la línea de comandos en Ma.gnolia.com | Envía Como cambiar tu dirección IP desde la línea de comandos a Reddit | Envía Como cambiar tu dirección IP desde la línea de comandos a BarraPunto | Envía Como cambiar tu dirección IP desde la línea de comandos a Digg | Envía un Meme sobre Como cambiar tu dirección IP desde la línea de comandos | Guarda Como cambiar tu dirección IP desde la línea de comandos en del.icio.us | Envía Como cambiar tu dirección IP desde la línea de comandos a Fresqui | Menea Como cambiar tu dirección IP desde la línea de comandos en Menéame

Contenidos relacionados: Google, Live Search, Tafiti, Yahoo

20070819

Microsoft Open Source

Microsoft Open Source

El año pasado Microsoft iniciaba trabajos con Mozilla para ayudar a que Firefox y Thunderbird se pudieran ejecutar sin problemas en Windows Vista, como resultado hay ahora por ejemplo un plug-in para Windows Media Player compatible con Firefox disponible, en diciembre de 2006 se publicaba en ECMA el estándar ECMA 376 que define Office Open XML (OO-XML), además de esto desde la aparición de .NET 1.1 estamos viendo cada vez más la transcisión de cada vez más software de código abierto apoyado por Microsoft.

La discusión esta desde diciembre en la red. ¿Está Microsoft realmente convirtiéndose en una compañía que apoya el Open Source? En esta entrada de blog pretendo poner todas las cartas sobre la mesa, mi opinión sobre que plataforma es la mejor está en la descripción de la presente bitácora pero pretendo que esta entrada sea completamente un trabajo de investigación científica. El verdadero fin es que puedas conocer las opciones que Microsoft está ofreciendo y si te sirven las aproveches y si no pues busques otras opciones que te parezcan mejores pero con toda la información junta. Arrancamos.

Primeramente hay que hacer algunas definiciones importantes para evitar ambiguedades.

Open source

El término Open Source surge como desambiguación de la definición de software libre, que en inglés sería free software, lo cual daba lugar a entenderlo como software gratuito o libre dependiendo quien lo leyera. El software Open Source permite a los usuarios ver y modificar el código fuente. Su filosofía se rige por 10 principios básicos:

  1. Libre redistribución: el software debe poder ser regalado o vendido libremente.
  2. Código fuente: el código fuente debe estar incluido u obtenerse libremente.
  3. Trabajos derivados: la redistribución de modificaciones debe estar permitida.
  4. Integridad del código fuente del autor: las licencias pueden requerir que las modificaciones sean redistribuidas solo como parches.
  5. Sin discriminación de personas o grupos: nadie puede dejarse fuera.
  6. Sin discriminación de áreas de iniciativa: los usuarios comerciales no pueden ser excluidos.
  7. Distribución de la licencia: deben aplicarse los mismos derechos a todo el que reciba el programa.
  8. La licencia no debe ser específica de un producto: el programa no puede licenciarse solo como parte de una distribución mayor.
  9. La licencia no debe restringir otro software: la licencia no puede obligar a que algún otro software que sea distribuido con el software abierto deba también ser de código abierto.
  10. La licencia debe ser tecnológicamente neutral: no debe requerirse la aceptación de la licencia por medio de un acceso por clic de ratón o de otra forma específica del medio de soporte del software.

Para que la licencia pueda ser considerada Open Source debe cumplir además cinco criterios que están definidos por la Open Source Initiative:

  1. No mantener secretos intencionales: El estándar no debe ocultar ningún detalle necesario para una implementación interoperable. Como los errores son inevitables, el estándar debe definir un proceso para reparar erores durante la implementación y pruebas de interoperabilidad e incorporar dichos cambios en una versión revisada o subsecuente del estándar bajo términos que no violen el deecho Open Source.
  2. Disponibilidad: El estándar debe estar disponible libremente y públicamente (por ejemplo en un sitio Web estable) bajo términos libres de derechos y a un costo razonable y no discriminatorio.
  3. Patentes: Todos los patentes esenciales para la implementación del estándar deben ser licenciados bajo derechos libres para uso irrestricto o ser cubiertos por una promesa de no afirmación cuando sean utlizados como software open source.
  4. Sin acuerdos: No debe haber ningún requisito para la ejecución de un acuerdo de licencia, de no revelación, de concesión, aceso de clic por ratón, o de ninguna otra forma de papeleo para desplegar las puestas en práctica que conforman el estándar.
  5. Ninguna dependencia incompatible con los derechos Open Source: La puesta en práctica del estándar no debe requerir ninguna otra tecnología que no pueda resolver los criterios de este requisito.

Algunos ejemplos de licencias Open Source son las siguientes:

  • Academic Free License
  • Adaptive Public License
  • Apache Software License
  • Apache License, 2.0
  • Apple Public Source License
  • Artistic license
  • Attribution Assurance Licenses
  • New BSD license
  • Computer Associates Trusted Open Source License 1.1
  • Common Development and Distribution License
  • Common Public Attribution License 1.0 (CPAL)
  • Common Public License 1.0
  • CUA Office Public License Version 1.0
  • EU DataGrid Software License
  • Eclipse Public License
  • Educational Community License
  • Eiffel Forum License
  • Eiffel Forum License V2.0
  • Entessa Public License
  • Fair License
  • Frameworx License
  • GNU General Public License (GPL)
  • GNU Library o "Lesser" General Public License (LGPL)
  • Historical Permission Notice and Disclaimer
  • IBM Public License
  • Intel Open Source License
  • Jabber Open Source License
  • Lucent Public License (Plan9)
  • Lucent Public License Version 1.02
  • MIT license
  • MITRE Collaborative Virtual Workspace License (CVW License)
  • Motosoto License Mozilla Public License 1.0 (MPL)
  • Mozilla Public License 1.1 (MPL)
  • NASA Open Source Agreement 1.3
  • Naumen Public License
  • Nethack General Public License
  • Nokia Open Source License
  • OCLC Research Public License 2.0
  • Open Group Test Suite License
  • Open Software License
  • PHP License
  • Python license (CNRI Python License)
  • Python Software Foundation License
  • Qt Public License (QPL)
  • RealNetworks Public Source License V1.0
  • Reciprocal Public License
  • Ricoh Source Code Public License
  • Sleepycat License
  • Sun Industry Standards Source License (SISSL)
  • Sun Public License
  • Sybase Open
  • Watcom Public License 1.0
  • University of Illinois/NCSA Open Source License
  • Vovida Software License v. 1.0
  • W3C License
  • wxWindows Library License
  • X.Net License
  • Zope Public License
  • zlib/libpng license

En el caso de Microsoft la licencia que está en proceso de validación es la Microsoft Open Specification Promise, que estalece desde el 16 de octubre de 2006 la apertura como software de código abierto en cumplimiento con los criterios de Open Source Initiative los alcances que Microsoft tenga en los esfuerzos realizados sobre las siguientes especificaciones:

Servicios Web

  • Identity Selector Interoperability Profile v1.0
  • WS-I Basic Profile
  • Remote Shell Web Services Protocol
  • WS-Management
  • SOAP
  • WS-Management Catalog
  • SOAP 1.1 Binding for MTOM 1.0
  • WS-MetadataExchange
  • SOAP MTOM / XOP
  • WS-Policy
  • SOAP-over-UDP
  • WS-PolicyAttachment
  • Web Single Sign-On Interoperability Profile
  • WS-ReliableMessaging
  • Web Single Sign-On Metadata Exchange Protocol
  • WS-RM Policy
  • WS-Addressing
  • WS-SecureConversation
  • WS-AtomicTransaction
  • WS-Security: Kerberos Binding
  • WS-BusinessActivity
  • WS-Security: Kerberos Token Profile
  • WS-Coordination
  • WS-Security: Rights Expression Language (REL) Token Profile
  • WS-Discovery
  • WS-Security: SAML Token profile
  • WSDL
  • WS-Security: SOAP Message Security
  • WSDL 1.1 Binding Extension for SOAP 1.2
  • WS-Security: UsernameToken Profile
  • WS-Enumeration
  • WS-Security: X.509 Certificate Token Profile
  • WS-Eventing
  • WS-SecurityPolicy
  • WS-Federation
  • WS-Transfer
  • WS-Federation Active Requestor Profile
  • WS-Trust
  • WS-Federation Passive Requestor Profile

Especificaciones de virtualización

Seguridad

Formatos Office XML

Robótica

Algunas de las características de la promesa son que estas especificaciones pueden ser utilizadas libremente y fácilmente desde ahora en adelante; no es necesario ni siquiera informar a Microsoft acerca de uso de la licencia open para la implementación de aplicativos o soluciones pero obviamente el uso de las especificaciones implícitamente indica su aceptación; la licencia es viral; existe el compromiso de mantener los estándares abiertos y darles soporte (no es una licencia "AS-IS", que sería como: no nos hacemos responsables si decides salir a producción con nosotros); permite la creación de obras libres o comerciales a partir del uso de las especificaciones sin restringir las tecnologías que deban implementarse con ellas.

La razón de la apertura de Microsoft al licenciamiento Open Source es simple: la comunidad de desarrolladores ha creado más de 79000 aplicaciones Open Source utilizando tecnologías Microsoft, además los clientes comunes de la compañía con empresas que utilizan tecnologías Open Source tales como SugarCRM, MySQL, Novell, JBoss, Zend, XenSource, Sun Microsystems, Mozilla, Aras, SpikeSource, y Xorp han generado un nicho de colaboración de negocios cada vez más grande para entregar valor a partir de la colaboración en el ámbito del código abierto.

Una gran gama y variedad de aplicaciones de código abierto basadas en tecnología Microsoft pueden encontrarse en sourceforge.net, CodePlex y Google Code. Se apoya bastante el trabajo de la comunidad de desarrollo a partir de sitios de la compañía tales como Coding4Fun.

Además algunos ejemplos importantes de código abierto de la compañía se pueden encontrar en los ejemplos de la librería MSDN, y en TechNet. Existen ya incluso implementaciones de aplicaciones de código abierto tales como:

  • IronPhyton. -Lenguaje Phyton para implementación de lenguajes ágiles bajo .NET
  • ASP.NET AJAX. - Implementación de código abierto de JavaScript para comunicación con objetos del lado del servidor.
  • SharePoint Learning Kit. - Un kit de código abierto que permit la colaboración de grupos académicos utilizando SharePoint Server.
  • WiX. - Instalador de aplicaciones de código abierto basado en XML.

Y bueno, el principal debate en la red es respecto a la estandarización ISO de Office Open XML, que es un estándar compuesto de 27 espacios de nombres y 89 módulos de esquema, todos abiertos, la especificación se divide en los lenguajes de marcado ennumerados a continuación:

  • WordprocessingML - Utilizado para procesamiento de textos.
  • SpreadsheetML - Utilizado para procesamiento de hojas de cálculo
  • PresentationML - Utilizado para definir presentaciones
  • DrawingML - Para dibujo
  • VML (en discusión) - Para dibujo con vectores
  • Office Math ML - Para notaciones matemáticas, distinto del estándar MathML de la W3C pero convertible fácilmente por XSLT

La especificación está dividida entro de ECMA en documentos que tratan acerca de tratamiento de documentos docx y pdf y su fin último es entregar a la comunidad un estándar de la industria que permita la interoperabilidad de Office con cualquier desarrollo libre.

Otro estándar abierto es XAML, que es el lenguaje de marcado utilizado en Windows Presentation Foundation, del cuál he escrito recientemente en varias entradas.

Si bien se puede discutir largamente en la red el tema lo importante, lejos de ser un tema de "estar a favor o en contra de Microsoft", la discusión es acerca de lo positivo que puede ser contar con un formato unificado para los documentos apoyado por toda la industria, algo que produciría sin duda un efecto tan positivo como el que experimentó anteriormente, por ejemplo, el HTML a partir de contar con un estándar ISO perfectamente documentado y aprobado en torno al cual construir, evitando un mundo con innecesarias incompatibilidades.

Etiquetas: , , , , , ,

Microsoft Open Source

Escrito por Alfonso Lara Ramos @ 12:55 0 comentarios

Busca Microsoft Open Source en Technorati | Guarda Microsoft Open Source en Yahoo | Guarda Microsoft Open Source en Google Bookmarks | Envía Microsoft Open Source a Furl | Envía Microsoft Open Source a Newsvine | Guarda Microsoft Open Source en Ma.gnolia.com | Envía Microsoft Open Source a Reddit | Envía Microsoft Open Source a BarraPunto | Envía Microsoft Open Source a Digg | Envía un Meme sobre Microsoft Open Source | Guarda Microsoft Open Source en del.icio.us | Envía Microsoft Open Source a Fresqui | Menea Microsoft Open Source en Menéame

Contenidos relacionados: Google, Live Search, Tafiti, Yahoo

20070527

Los 10 errores de seguridad más comunes en ASP .NET

A continuación les enumeraré los 10 errores más comunes que se cometen cuando desplegamos una aplicación ASP.NET, les explico la razón por la que esos errores pueden ser peligrosos y les indico la manera más adecuada de corregirlos. Espero que les sea de utilidad:

  1. Custom Errors deshabilitado. En el archivo Web.config de nuestras aplicaciones ASP.NET la etiqueta custom Errors se encuentra comentada por defecto cuando creamos una nueva aplicación, esto deja el valor RemoteOnly por defecto. Sin embargo muchas veces cuando estamos probando el software en un servidor remoto hay ocasiones en las que por comodidad dejamos el valor en Off, esto permite a todos los usuarios que ingresan a las páginas de la aplicación enterarse de los errores que suceden en la aplicación, al momento de depurar. Sin embargo esto no es bueno al momento de desplegar, puesto que cualquiera puede también ver pedazos de código cuando hay alguna falla. Lo más adecuado es prender la opción, lo cual puedes aprovechar para mostrar errores más amigables al usuario, esto incluso te sirve para optimizar para buscadores ;-). Un ejemplo de cómo prender esta opción es el siguiente:
    <customErrors mode="On">
    <error statusCode="404" redirect="default.aspx" />

    </customErrors>
  2. Dejar habilitado el seguimiento de la página. El seguimiento de página (tracing) normalmente se encuentra apagado, sin embargo también por cuestiones de depuración puede encenderse, la forma más sencilla es hacerlo en el archivo que estemos trabaando utilizando la etiqueta Trace en la declaración de página del formulario en el que estamos trabajando, sin embargo una buena práctica es hacerlo de modo sólo local (por si necesitamos que el seguimiento esté de todos modos encendido) desde el archivo Web.config y luego apagarlo al desplegar, hacerlo de esta manera encenderá el seguimiento en todos los formularios del proyecto y evitará que se nos olvide apagarlo, lo haces con la etiqueta trace de la siguiente manera:
    <trace enabled="true" traceMode="SortByTime" localOnly="true" />
  3. Depuración habilitada. Tener esta opción habilitada, afecta al rendimiento de la aplicación, muestra errores más detallados y sólo debe encenderse mientras estamos desarrollando precisamente para el proceso de depuración, la forma correcta de desplegar es dejando en el archivo Web.config la opción de depuración apagada, otra buena práctica en el caso de las aplicaciones ASP.NET creadas con Visual Basic es dejar las opciones explicit y strict encendidas, de este modo hacemos código mejor construído (léase 100 veces: no garantiza que perfectamente construído, pero ayuda). La forma de configurar esto es de la siguiente manera:
    <compilation debug="true" strict="true" explicit="true"/>
  4. Cookies suplantables. Los hackers pueden realizar ataques de XSS (Cross Site Scripting) cuando las cookies son accesibles del lado del cliente, intentan este tipo de ataques cuando se encuentran por ejemplo con saludos del tipo Hola ChicoDotNet en las páginas en la que se inicia sesión agregando su propio código del lado del cliente. Esto puedes dificultarlo fácilmente -valga la redundancia- cuando enciendes las cookies HttpOnly, esto se hace de la siguiente forma:
    <httpCookies httpOnlyCookies="true" />
  5. Sesión sin cookies. Para hacer disponible una aplicación a los clientes que no aceptan cookies se tiene la opción de colocar la sesión en la URL, muchos las utilizan por defecto para no complicarse asignando a la etiqueta sessionState el atributo cookieless con el valor UseUri, sin embargo esto abre la posibilidad de suplantar a un usuario determinado visitando la dirección que contiene la sesión, esto puedes evitarlo almacenando la sesión en una cookie que expire pronto, pero queda el problema de los clientes que no aceptan cookies, para ellos necesitas enviar la sesión en la URL, ¿Cómo resolver eso?, enciende la autodetección, eso hará que los clientes que las acepten las usen y los que no las reciban en la URL, se hace con el siguiente código en Web.config:
    <sessionState cookieless="AutoDetect" />
  6. No emitir cookies seguras. Las cookies seguras se emiten utilizando SSL, esto hace que la transmisión se realice en forma encriptada, para configurar SSL en IIS puedes ver el artículo en MSDN que te indica como hacerlo en IIS 6.0, en el caso de IIS 7.0 es mucho más sencillo como ya había mencionado anteriormente. Para la configuración de la transmisión de las cookies por medio de SSL utiliza el siguiente código:
    <authentication mode="Forms">
    <forms requireSSL="true" />
    </authentication>
  7. Sesiones alargables. Para alargar el tiempo de expiración de una sesión se utiliza el atributo slidingExpiration de la etiqueta forms, esto da mayor tiempo a los hackers para suplantar a un usuario determinado, la recomendación es dejarlo como se indica a continuación:
    <forms slidingExpiration="true" />
    .
  8. Uso de cookies de autenticación por defecto. El nombre por defecto de una cookie de autenticación es .ASPXAUTH, una buena práctica es nombrar estas de manera distinta, por ejemplo utilizando un GUID, de esta manera evitamos que alguien que se firme en una aplicación del servidor y pueda modificar la cookie para firmarse en otra utilizando la primera cookie obtenida. Este valor se pondría en el lugar que indico a continuación:
    <authentication mode="Forms">
    <forms name="{80aae8ec-cee2-46bc-ba57-eb89cd3db488}" requireSSL="true" />
    </authentication>
  9. Paso de variables por URL. El uso de Request.Querystring("variable") para operaciones de negocios debe ser evitado, sobre todo si se trata de información sensible, se debe preferir el uso de variables de sesión o de ViewState, de otro modo cualqueir persona con algo de conocimientos de programación podría hacer ataques de XSS o de SQL injection.
  10. Credenciales o cadenas de conexión en Web.config. Esto es lo más común de la lista, debe evitarse a toda costa el guardar usuarios y contraseñas en etiquetas credentials y cadenas de conexión o configuraciones de aplicación en Web.config sin antes cifrarlas adecuadamente. O. K., IIS evita la descarga de estos archivos de forma remota, pero ¿Qué me dicen de los del hosting? Hay que tener mucho cuidado con esto.

Etiquetas: , , , , , , , ,

Escrito por Alfonso Lara Ramos @ 06:25 0 comentarios

Busca Los 10 errores de seguridad más comunes en ASP .NET en Technorati | Guarda Los 10 errores de seguridad más comunes en ASP .NET en Yahoo | Guarda Los 10 errores de seguridad más comunes en ASP .NET en Google Bookmarks | Envía Los 10 errores de seguridad más comunes en ASP .NET a Furl | Envía Los 10 errores de seguridad más comunes en ASP .NET a Newsvine | Guarda Los 10 errores de seguridad más comunes en ASP .NET en Ma.gnolia.com | Envía Los 10 errores de seguridad más comunes en ASP .NET a Reddit | Envía Los 10 errores de seguridad más comunes en ASP .NET a BarraPunto | Envía Los 10 errores de seguridad más comunes en ASP .NET a Digg | Envía un Meme sobre Los 10 errores de seguridad más comunes en ASP .NET | Guarda Los 10 errores de seguridad más comunes en ASP .NET en del.icio.us | Envía Los 10 errores de seguridad más comunes en ASP .NET a Fresqui | Menea Los 10 errores de seguridad más comunes en ASP .NET en Menéame

Contenidos relacionados: Google, Live Search, Tafiti, Yahoo

20070513

La clase SystemInformation

Una de las clases que casi no veo en aplicaciones de negocios es SystemInformation y eso que es una de las más útiles para muchas aplicaciones de negocios de misión crítica. Por ejemplo imagínate que tienes un servidor de base de datos del que depende una aplicación muy importante, de pronto se va la luz del site y entra en modo de batería, queda una hora para hacer el respaldo de la información y son las 3 de la mañana, hora en la que recibes un montón de transacciones del otro lado del mundo, necesitas un mail al servicio de pager del encargado de los servidores y disparar el respaldo por si la batería se termina. O no seamos tan dramáticos, supón que haces una aplicación de transmisión FTP que se tiene que enterar de que se cayó la red y notificarlo para pausar la descarga o transmisión de un archivo que están enviando por bloques. Es ahí donde esta clase es realmente útil.

El caso es que la clase SystemInformation te puede dar precisamente eso: información acerca del esado del sistema, que puedes aprovechar en tus aplicaciones de muchas maneras distintas.

Algunos ejemplos de lo que puedes encontrar en dicha clase y algunas ideas de uso son los siguientes:

  • Modo de aranque del sistema (A prueba de fallos, normal, última configuración conocida, etc.)
  • Nombre NETBIOS del equipo (Para identificar estaciones en las que corre la aplicación)
  • Capacidad de uso de carácteres de doble byte (japoneses, hebreos, chinos, etc.)
  • Si está encendido el doble contraste (para aplicaciones accesibles a los débiles visuales)
  • Velocidad de repetición del teclado (para programación de videojuegos)
  • Conteo de monitores (para determinar por ejemplo la disposición de las ventanas en entornos de muchas herramientas)
  • Estado de la conexión de red (para el caso del FTP que te platicaba)
  • Existencia de las extensiones para plumas (para aplicaciones Tablet PC)
  • Estado de la batería (para controlar el rendimiento según el estado de la batería y que puedas usar más tiempo el equipo o para el caso del servidor crítico que puse de ejemplo)
  • Tamaño de la pantalla (para hacer aplicaciones que se ajusten al tamaño de la misma desde el inicio sin tener que estar maximizadas)
  • Nombre de usuario de Windows (para autenticación y autorización)

En general es una clase muy interesante porque en base a la información básica del sistema puedes hacer muchas cosas que pueden ser muy útiles o simplemente divertirte un rato. Por cierto, esta clase la encuentras en el espacio de nombres System.Windows.Forms ¡Feliz codificación!

Etiquetas: , ,

Escrito por Alfonso Lara Ramos @ 07:20 0 comentarios

Busca La clase SystemInformation en Technorati | Guarda La clase SystemInformation en Yahoo |