Skip Ribbon Commands
Skip to main content
August 30
Activar Windows 8

El nuevo release de Windows 8 Enterprise, cuando intentamos activarlo, nos envia un error de DNS.

El cual podemos resolver corriendo el siguiente comando desde MS-DOS con permisos elevados de Administrator.

slmgr.vbs /ipk “ENTER-YOUR-PRODUCT-KEY-HERE”

Debemos reemplazar el texto por nuestra licencia de Activacion.


September 15
Prueba de carga sobre una aplicación en Sharepoint utilizando ASP.NET Profiler

Para hacer la prueba de carga, vamos a utilizar una aplicación en sharepoint como ejemplo en la que solo tendremos un elemento web (WebPart) que intencionalmente se demora en el evento del clic de un botón para que nuestra prueba de carga nos pueda mostrar que nuestro código dentro del botón es lenta.

En nuestro elemento web tenemos la opción de seleccionar entre dos opciones “slow” o “fast” y un botón que sólo hará un pedido simple al servidor si la opción escogida es “fast” y un ciclo que demorará entre diez y veinte segundos si la opción escogida es “slow”.

El elemento web se muestra a continuación

sharepoint04

El código que crea los controles dentro del elemento web es el siguiente

private void BuildControls()
{
RadioButtonList rbl = new RadioButtonList() { ID = "rbl" };
rbl.Items.Add(new ListItem() { Text = "slow", Value = "slow" });
rbl.Items.Add(new ListItem() { Text = "fast", Value = "fast" });

Button button = new Button() { ID = "button", Text = "Go" };
button.Click += new EventHandler(button_Click);

this.Controls.Add(rbl);
this.Controls.Add(button);
}

El código en el botón del elemento web es el siguiente

void button_Click(object sender, EventArgs e)
{
if (((sender as Control).Parent.FindControl("rbl") as RadioButtonList).SelectedValue == "slow")
{
Random rand = new Random(DateTime.Now.Millisecond);
int seconds = rand.Next(10, 20);
for (int i = 0; i < seconds * 1000; i++)
Thread.Sleep(1);
}
}




En el código anterior se está buscando el valor seleccionado del RadioButtonList y si este es “slow”, se genera un número aleatorio entre 10 y 20 y luego se ejecuta un ciclo por mil veces esta cantidad y en cada vuelta del ciclo se espera un milisegundo dando como resultado que el ciclo demore la misma cantidad de tiempo en segundos que el número escogido aleatoriamente. Este código es equivalente a no utilizar el ciclo y simplemente poner la línea
Thread.Sleep(seconds * 1000);

El problema de esta forma es que la demora de nuestro botón consistirá únicamente en esperar, mientras que con el código anterior se está ejecutando código (el del ciclo) y se está esperando por lapsos pequeños de tiempo. El ASP.NET Profiler funciona a través de los datos que recopila en muestras que toma cada cierta cantidad ciclos del CPU (normalmente cada 10 millones), estas muestras las toma interrumpiendo el código en ejecución y analizando la pila de llamadas en el momento de la interrupción. Como las interrupciones depende de la utilización del CPU, un llamado a Thread.Sleep(…) no será interrumpido por el profiler y aunque la cantidad de tiempo de espera sea grande esta línea de código no saldrá como una línea lenta.
Ya que tenemos nuestro elemento web en nuestro sitio de Sharepoint, ejecutamos una prueba web en Visual Studio 2010 Ultimate y grabamos la ejecución de nuestro elemento web al darle clic al botón tanto cuando está seleccionada la opción “slow”, como cuando está seleccionada la opción “fast”.
En el blog Pruebas de carga utilizando ASP.NET Profiler se describe con más detalle como crear y ejecutar una prueba web así como una prueba de carga sobre la misma.
Si nuestro sitio de Sharepoint tiene la seguridad integrada a Windows, en la barra de herramientas de la prueba de web podemos especificar las credenciales a utilizar
Creamos una prueba de carga donde agregamos nuestra prueba web y configuramos los roles correspondientes para utilizar el ASP.NET Profiler (ver Pruebas de carga utilizando ASP.NET Profiler)
Antes de ejecutar la prueba de carga, para que el ASP.NET Profiler tenga acceso al código de nuestro elemento web, en la barra de herramienta de Visual Studio, vamos a Tool->Options, en el cuadro de diálogo vamos a Debugging/Symbols y en la lista con encabezado “Symbol file (.pdb) locations” agregamos la ruta donde se encuentra el archivo de símbolo de nuestro elemento web. El cuadro de diálogo se muestra a continuación
image
 
Ejecutamos nuestra prueba de carga y el reporte de ASP.NET Profiler nos va a mostrar la ruta de código mas demorada
image

El reporte del Profiler contiene varias vistas, la que se muestra inicialmente es la vista de resumen, especificada por la lista de selección en la barra de herramientas “Current View” donde en este caso está seleccionado el valor “Summary”. Si aquí escogemos la opción “Modules” se nos muestra el reporte por ensamblado

image

Aquí buscamos el ensamblado de nuestro elemento web, desplegamos su contenido y se nos muestran los métodos que se llamaron durante la ejecución y debajo de éstos las líneas ejecutadas. Si damos clic derecho sobre alguna de estas líneas y vamos a la opción “View Code” veremos el código al que se está refiriendo. En nuestro caso, vamos al llamados del evento clic del botón y dentro de este vamos a la línea más visitada como se muestra en las siguientes imágenes

image

image

September 02
Pruebas de carga utilizando asp.net Profiler

En Visual Studio 2010 Ultimate podemos hacer pruebas de carga de manera remota utilizando varias computadoras simultáneamente. Esto se logra a través de una arquitectura en la que se tiene un controlador de pruebas y uno o varios agentes de prueba. Cada agente de prueba corre las pruebas y almacena información del resultado, cada uno esta asociado a sólo un controlador. El controlador puede tener asociado varios agentes y administra y concentra los resultados de las pruebas de cada uno

Los agentes y controladores de prueba se instalan a través del instalador Visual Studio Agents 2010, que se muestra a continuación

instaall

Aquí tenemos tres opciones de instalación, “Install Microsoft Visual Studio Test Controller 2010” para instalar un controlador de prueba, “Install Microsoft Visual Studio Test Agent 2010” para instalar un agente de prueba e “Install Microsoft Visual Studio Lab Agent 2010” para instalar un agente de laboratorio de pruebas que se usa para pruebas remotas a través del TFS y que solo se puede instalar en máquinas virtuales

Para esta prueba yo instalé el controlador de pruebas en mi máquina local. Al final de la instalación podemos configurar el controlador si tenemos marcada la opción “Configure test controller now” o podemos entrar a configurar el controlador de pruebas luego de la instalación en Inicio->Programas->Mocrosoft Visual Studio 2010->Microsoft Visual Studio Test Controller 2010 Configuration Tool

La herramienta de configuración se muestra a continuación

configureController

En el primer bloque especificamos un usuario con cuenta de administrador de la máquina con el nombre de dominio si fuera necesario. El segundo bloque lo dejamos inhabilitado ya que no estamos trabajando con TFS en este caso. En el tercer bloque especificamos el nombre de un servidor sql donde el controlador va a guardar los datos de los resultados de las pruebas, este servidor puede ser sqlexpress de la máquina local

Con Visual Studio 2010 Ultimate tenemos la posibilidad de correr pruebas de carga simulando un máximo de 250 usuarios en pruebas locales y usando un solo núcleo del procesador de la máquina. Para simular usuarios de manera remota así como para usar mas de un núcleo del procesador de la máquina del controlador hay que obtener una licencia de un paquete de usuarios virtuales para pruebas de carga para visual studio 2010(Visual Studio Load Test Virtual User Pack 2010), cada licencia obtenida da un total de 1000 usuarios virtuales para la simulación de las pruebas de carga. Con una subscripción MSDN podemos obtener esta licencia. Para agregarla al controlador, en el configurador hacemos clic en el botón “Manage virtual user licenses” y agregamos nuestra o nuestras licencias.

Cuadro de diálogo para agregar las licencias

configureControllerLincences

Con esto podemos aplicar los cambios y proceder a instalar los agentes de prueba

En este caso, yo instalé dos agentes de prueba, uno en mi máquina local que va a correr la prueba y otro en una máquina externa que va a recopilar información de la prueba a través del ASP.NET Profiler

Para instalar los agentes volvemos al instalador de Visual Studio Agents 2010 y escogemos la opción  “Install Microsoft Visual Studio Test Agent 2010”. Al igual que en la instalación del controlador podemos configurar el agente al final de la misma, o podemos cerrar el instalador e ir a Inicio->Programas->Microsoft Visual Studio 2010->Microsoft Visual Studio Test Agent 2010 Configuration Tool. En el primer paso de la herramienta de configuración escogemos la opción Service, ya que no vamos a interactuar con aplicaciones de escritorio, sino con una sitio web. El siguiente paso es muy parecido a la herramienta de configuración del controlador

ConfigureTestAgent02

Especificamos un usuario administrador y su contraseña y en el segundo bloque especificamos el nombre de la máquina (o el número IP) donde esta el controlador de pruebas al que queremos asociar este agente y previamente instalamos. Si todo sale bien, al final, nos saldrá un cuadro de diálogo como el siguiente

ConfigureTestAgent03

Para configurar y correr las pruebas de carga utilizamos Visual Studio 2010 Ultimate. Aquí, creamos un proyecto de prueba

vsNewProject

y en él agregamos un archivo de prueba web sobre el que vamos a correr la prueba de carga

vsWebTes01

Una prueba de este tipo nos permite “grabar” una secuencia de actividades sobre un sitio web para luego ser ejecutadas en el mismo orden. Yo en particular ejecuté la prueba sobre un pequeño sitio que solo consta de dos páginas. Cuando se agrega la prueba al proyecto inmediatamente aparece el navegador para guardar la secuencia de acciones que queremos probar

vsWebTes02

Cada comando que ejecutemos en nuestro sitio se irá guardando como se muestra a continuación en el panel de la izquierda del navegador

vsWebTes03

Este panel izquierdo aparece en el navegador gracias a un Add-on de internet explorer que se llama Web Test Recorder. Si al ejecutar la prueba no aparece esta barra o aparece deshabilitado el botón de grabar, entonces es probable que este deshabilitado este Add-on. Para habilitarlo, en el internet explorer, en el menú, vamos a Tools->Manage Add-ons, nos parece un cuadro de diálogo y bajo la sección “Toolbars and Extensions”, buscamos “Microsoft Web Test Recorded” de “Microsoft Corporation” y lo habilitamos como se muestra en la imagen

image

Cuando hayamos ejecutado todas las acciones que queremos guardar en nuestra prueba, la detenemos a través del botón de Stop del “Web Test Recorder”. Visual Studio nos muestra todas las páginas visitadas en nuestra “grabación”

vsWebTes04

Ejecutar esta prueba, significa volver a visitar todas las páginas que se guardaron en la misma. El objetivo de la prueba de carga es correr esta prueba varias veces simulando varios usuarios simultáneos

Ahora agregamos una prueba de carga al proyecto

vsLoadTest01

Al agregarla aparece un wizard para la configuración de la misma. La primera página es una introducción. En la segunda página podemos poner el nombre de la prueba y cómo queremos que se comporte la simulación del “tiempo de pensamiento” entre cada prueba. Esto es un tiempo de espera entre cada iteración de las pruebas simulando usuarios reales visitando nuestro sitio a probar

vsLoadTest03

En el siguiente paso especificamos la cantidad de usuarios que queremos simular y cómo va a ir comportándose la cantidad de éstos durante el transcurso de la prueba o si se van a mantener constante

vsLoadTest04

Como en las pruebas de carga se pueden ejecutar varias pruebas al mismo tiempo, en el siguiente paso tenemos la opción de escoger la forma en la que queremos que se ejecuten estas en conjunto

vsLoadTest05

Esto es porque un paso más adelante nos van a preguntar sobre el porciento de ejecución de cada prueba que agreguemos. La opción que escojamos aquí nos dice cómo se van a interpretar esos porcientos. Si tuviéramos dos pruebas, la A y la B y a la prueba A le ponemos un 75% de ejecución y a la prueba B un 25% de ejecución, entonces para cada opción la interpretación es la siguiente:

Basados en el número de pruebas que se hagan: Si la cantidad total de veces que se corrieran las  pruebas en nuestra prueba de carga fuera 100, 75 de ellas se hicieran sobre la prueba A y 25 de ellas sobre la prueba B

Basados en el número total de usuarios: Si vamos a hacer nuestra prueba de carga con 1000 usuarios virtuales, 750 de ellos van a correr solo la prueba A y 250 de ellos solo la prueba B

Basados en el ritmo del cada usuario: Cada usuario virtual va a ejecutar 3 veces la prueba A y una vez la prueba B cíclicamente

Basado en el orden de ejecución: Cada vez que se terminen tres ejecuciones de la prueba A se va a ejecutar la prueba B una vez, independientemente del usuario virtual que le toque. La diferencia de este caso con el primero es que aquí se sigue un orden secuencial, solo se ejecuta la prueba B si la A ya se ha ejecutado tres veces

En realidad para nuestro caso solo vamos a agregar una prueba a ejecutar, por lo que mi opción a escoger en este paso no hace ninguna diferencia

En el siguiente paso agregamos nuestra prueba web hecha anteriormente que va a acaparar el 100% de las pruebas de la prueba de carga

vsLoadTest08

En el siguiente paso podemos simular una mezcla de velocidades de red para las pruebas

vsLoadTest09

En el siguiente paso una mezcla de navegadores para las pruebas

vsLoadTest10

En el siguiente paso vamos a ver agregados los contadores que tenemos en nuestra máquina para medir la prueba y podemos agregar contadores de otras máquinas

vsLoadTest11

y en el último paso podemos escoger si la prueba va a tener un límite de duración, o un límite de cantidad de iteraciones así como detalles del logeo en caso de errores

vsLoadTest12

Una vez configurada la prueba veremos en el Diseñador de Visual Studio un sumario en forma de árbol de la configuración que acabamos de hacer

Ahora tenemos que agregar el controlador y los agentes a la prueba de carga

En Visual Studio, vamos a la opción de menú Test->Manage Test Controllers…, aparecerá una ventana de diálogo donde pondremos el nombre de la máquina donde esta el controlador, y veremos la cadena de conexión de la base de datos donde se va a guardar la información de los resultados de la prueba y los agentes asociados al controlador, como se muestra a continuación

vsLoadTest20

En esta ventana, a cada agente le vamos a poner una propiedad con un valor, el nombre de esta propiedad puede ser cualquiera y su valor también. El objetivo de esto es poder asociar mas adelante los roles de nuestra prueba de carga con cada uno de estos agentes, como veremos mas adelante. Esto lo hacemos a través del botón Properties. En este caso, yo le puse a mi máquina local, la propiedad Server, con valor true y a la máquina externa la propiedad con nombre Server con valor false como se muestra a continuación

vsLoadTest21

Cerramos estas ventanas y en el explorador de soluciones de Visual Studio hacemos doble clic en el elemento Local.testsettings que esta debajo de Solutions Items. Nos aparece un cuadro de diálogo de propiedades de la prueba. Vamos a la sección Roles y en la lista desplegable “Test execution method” escogemos la opción “Remote execution” y en la caja de texto “Controller” ponemos el nombre de la máquina donde esta el controlador

image

Mas abajo en “Roles”, vamos a agregar dos roles, cada uno de ellos nos va a representar un agente de prueba para este caso, aunque en realidad cada rol puede tener asociado mas de un agente. Agregamos los dos roles que en este caso yo les llame “WebTest” y “Profiler”, dejándole al rol WebTest la opción de ser el rol que va a correr la prueba

image

Debajo de los roles agregados, aparece una lista de atributos asociados a cada uno, que en este momento esta vacía. Estos atributos nos sirven para filtrar los agentes asociados a cada rol. O sea, si en este momento le damos a la opción “Preview matching test agents” para cada rol nos aparecerán los dos agentes asociados al controlador como se muestra a continuación

image

Esto es porque no tenemos ningún filtro asociado a los roles para los agentes. Si agregamos al rol WebTest un atributo con nombre Server y valor true veremos que al ir a “Preview matching test agents” solo nos sale el agente que cumple con estos atributos porque así lo configuramos anteriormente. De la misma manera, al rol Profiler le ponemos un atributo con nombre Server y valor false solo nos saldrá asociado el otro agente

Ahora en la sección “Data and Diagnostics” vamos a deseleccionar todos los valores para el rol WebTest, ya que este solo nos interesa para correr la prueba, como se muestra a continuación

image

Y para el rol Profiler solo seleccionamos el valor de ASP.NET Profiler, pues solo lo queremos para guardar los datos del ASP.NET Profiler

image

Hecho esto aplicamos los cambios y podemos proceder a ejecutar nuestra prueba de carga

Mientras se ejecuta la prueba de carga en el diseñador de Visual Studio veremos gráficas del avance de a lo más cuatro de nuestros contadores

vsLoadTest23

Al final veremos un sumario de la prueba

vsLoadTest24

En esta vista, le damos clic al botón “View profile performance report” (Penúltimo botón en la barra de botones del sumario). Esto nos genera el reporte del resultado obtenido por el ASP.NET Profiler. El reporte debe ser parecido a este

vsLoadTest25

En este reporte se muestra al inicio, el camino hacia la función que mas se demoró en la ejecución de la prueba. Ahí vemos el proceso del IIS, el w3wp como raíz, debajo el método ProcessRequest de la página defualt2.aspx, luego el método ProcessRequest del objeto Page, luego el método Page_Load de la página default2.aspx y luego un llamado al índice de cadena del objeto HttpRequest de la página. Si damos clic en cualquiera de estas ligas de llamado a métodos, se nos muestra una representación del tiempo de demora, en porcientos de cada uno de los comandos que ocurrieron en este método y, de ser posible(o sea, si se tiene el archivo de símbolos asociado), el código ejecutado. Por ejemplo, en mi prueba, yo tengo el archivo de símbolos de la página default2.aspx, por lo que al darle a la liga del llamado al método Page_Load de la misma, me muestra lo siguiente

vsLoadTest30

A través de la representación gráfica superior se puede navegar por cada uno de los métodos ejecutados, pero solo si se tiene el archivo de símbolos del código en cuestión, se podrá ver el código exacto ejecutado, mostrando en rojo la línea mas demorada. En mi ejemplo, si en vez de darle a la liga del Page_Load de mi página, le hubiera dado a la liga del llamado al ProcessRequest del objeto Page me hubiera mostrado lo siguiente

vsLoadTest29

Aquí se ve una representación gráfica de los llamados de las funciones, pero no el código porque yo no tengo el archivo de símbolos asociado a la clase Page

Posteriormente escribiré otro post haciendo una prueba de carga similar sobre una aplicación en SharePoint

August 30
Pasos para solicitar la asociación de tu MCP ID a Extend Solutions

 

Hola. En esta ocasión les comparto el proceso de alta en el portal de Partners concluyendo en la vinculación de tu MCP ID con Extend Solutions. Este es un proceso obligatorio para todos los que somos empleados en Extend, así que si tienes una o más certificaciones este es un tema que te interesará.

Algunos ya conocen bien el proceso, pero para aquellos que son nuevos al tema facilitamos en este blogpost los pasos para su apoyo.

 

1. En primero lugar, necesitarás acceder a esta dirección: https://partner.microsoft.com/

 

2. Ahora haz clic en “Su Membresía”

image

 

 

3. Al abrirse el menú, escoge la opción: “Administre su cuenta”

clip_image004

 

 

4. Ahora ingresa tu cuenta de Windows Live (a la que tienes vinculado(as) tu(s) certificación(es).

clip_image005

 

 

5. Ya dentro, ahora toca asociarte como persona primero, pulsando el vínculo del mismo nombre:

image

 

 

6. Ingresa el nombre “EXTEND” en el primer campo marcado por el asterisco (*) como obligatorio, y luego el ID del Microsoft Partner Network de EXTEND que es: 1264404

  

7. Pulsa el botón “Encontrar mi organización”

image

 

 

8. Si ves los mismos datos que en la imagen (es decir: EXTENDSOLUTIONS Paseo de la Reforma 107, Oficina 102, etc.) selecciona la organización y enseguida haz clic en “Asociarse a esta organización”

image

 

 

9. Ingresa tu correo electrónico de Extend junto con tu nombre y apellidos, y a continuación pulsa el botón “Enviar”

image

 

 

10. Si todo ha ido bien se mostrará una pantalla como ésta indicándote que has concluido el proceso exitosamente y a continuación recibirás un correo en tu cuenta de Extend para activar la asociación.

image

 

 

11. En el correo busca el vínculo “vaya a esta página” para activar la asociación aceptándola.

clip_image017

 

 

12. Ya en la página, completa el formulario de registro, pero en la sección donde te preguntan si cuentas con un MCP ID, selecciona el radio botón NO porque la vinculación del MCP ID la harás un poco más adelante.

image

 

 

13. Te deberá mostrar la siguiente pantalla en donde debes pulsar el vínculo “Página de inicio de su cuenta individual”

image

 

 

14. Ahora sí, para iniciar la vinculación de tu MCP pulsa el botón “Editar Perfil”

image

 

15. Actualiza tus datos escribiéndolos EXACTAMENTE IGUAL a como aparecen en tu Transcript, y captura tu MCP ID. Finalmente pulsa el botón “Actualizar”

image

 

 

16. Y ya para concluir el procedimiento, haz clic en la pestaña “MCP y Certificaciones” y te debe aparecer la(s) Certificación(es) que ostentas. Ahora selecciona “EXTEND SOLUTIONS” de la lista despegable y pulsa el botón “Confirmar Asociación”

image

 

¡Listo!

Con esto has completado tu alta en el portal de Partners y la vinculación de tu MCP ID con Extend Solutions. ¡Felicidades!

Espero haberles ayudado, y hasta la próxima!
Gam Novelo

(Con material de Dulce Reyes)

August 24
Tips en 90. Agosto 2011


TIPS EN 90 Tip en 90 Ago.JPG

 

 

 

Muchos pasan gran parte del día en la oficina, principalmente sentados frente a la computadora, en una posición muchas veces no del todo cómoda. Es por eso que te pasamos unos tips que te ayudarán a acomodar tus articulaciones, eliminar el estrés y prevenir problemas. Recuerda que una buena postura es de mucha ayuda.

 

1.- Camina: levántate y camina por un par de minutos estirando tus piernas, esto ayuda a relajar los músculos y prevenir calambres.

 

2.- Estira los hombros: ponte de pie, respira profundamente y levanta tus brazos por sobre tu cabeza. Intenta estirar (sin levantar los talones) como si quisieras tocar el techo. Luego estira tus brazos a la altura de tus hombros y trata de extender al máximo los dedos de las manos. Repite algunas veces el ejercicio.

 

3.- Fortalece el cuello: mira al frente y lleve la oreja derecha hacia el hombro de ese lado, manteniendo este estiramiento al menos cinco segundos, luego lo mismo con el lado izquierdo y luego déjala caer hacia delante. Vuelve a levantar la cabeza y ahora gírala al lado derecho, buscando tocar con la barbilla el hombro, mantente así por cinco segundos y cambia de costado.

 

4.- Ejercita la espalda: ponte de pie y pon la espalda recta, luego gira tu parte superior sin mover las piernas una vez hacía cada lado. Luego levanta tus brazos y deja caer tu cuerpo un par de veces de lado sin despegar los pies del suelo.

 

 

 

VN:F [1.9.1_10

August 10
Sabes que esta haciendo tu SQL Server en este preciso momento?

Si quieres saber que esta haciendo tu SQL Server en este preciso momento, que consultas, que stored procedures se están ejecutando en este instante, como se están bloqueando unas contra otras, que comando SQL exactamente es el que fue enviado a la base de datos, en inclusive el plan de ejecución, y un montón de información mas que te permitirá entender de forma precisa que esta pasando en tu servidor SQLServer en un momento dado, checa este blog post de Brent Ozar en donde te muestra, en video, el uso del comando sp_WhoIsActive, creado por Adam Machanic.

August 05
Como vuelvo a un snapshot si borre la red para la que estaba configurado?

El escenario es el siguiente:

Se tiene configuradas ciertas redes virtuales en Hyper-V:

image

Y por alguna razón (o inclusive por error) decidimos borrar una de ellas, digamos, por ejemplo, la que, en el caso de ejemplo planteado aquí, se llama “External Bridge Virtual Network”.

Después de borrarla, obviamente hay que indicarle a las maquinas virtuales en nuestro Hyper-V que utilicen otra red, si es que queremos que sigan teniendo conectividad, esto es fácil, simplemente entramos a propiedades de la maquina virtual :

image

Y luego indicamos a que red virtual se conectara ahora:

image

Y listo. Pero… que pasa con los snapshots? Que pasa si queremos regresar a una de nuestras maquinas virtuales al estado que tenia hace un par de semanas (o hace un par de minutos) cuando todavia existia la red virtual que borramos?

Pues sencillamente no funciona… al aplicar el snapshot, a veces falla silenciosamente… a veces apaga a la maquina virtual, pero nunca aplica el cambio, por lo que quedamos incapacitados para volver a ese snapshot.

Si entramos entonces a los settings de la snapshot, nos encontraremos entonces con este error:

The network adapter is configured to a switch port which no longer exists. In order for this virtual machine to boot you will need to reconfigure this virtual network adapter

image

Esto efectivamente bloqueara al snapshot, haciendo imposible revertir al a maquina virtual a dicho snapshot otra ves.

Que hacer? La primer a vez que me paso esto, pensé: Ya quedaron inutilizadas para siempre mis snapshots… luego recordé que la configuración de las snapshots aparece como XML en el disco duro, y pensé en editarla ahí, pero los archivos estaban bloqueados por el proceso de Hyper-V.

Que hacer entonces…?

Recordé en ese momento que cuando quiero pasar una maquina virtual de un servidor a otro, hago un Export, y que las snapshots siempre funcionan, aunque la configuración de redes virtuales del entorno Hyper-v en el que voy a hacer la recuperación fuera totalmente distinta, de todas formas funcionaban perfectamente las snapshot… asi que exporte la maquina virtual (primero la apague, y luego le di click derecho Export) Y despues la importe de nuevo…

Y efectivamente, eso resolvió el problema, el adaptador de red en la snapshots volvió a estar disponible para ser ajustado!

August 04
¿Qué quiere decir AAA?

De algún modo siempre hay gente que me anda preguntando (no sé por qué a mí) o el significado de siglas como “IUYTRENDH” <---(ejemplo inventado) o qué significa x o y abreviación, extensión de archivo, o sigla y sus sinónimos.

Desde tiempos inmemoriales deseé tener una herramienta como el link que ahorita les comparto, y fue apenas hace unos años (en el 2000) cuando di con esta joya:

www.acronymfinder.com

image

Creado en 1987 por Mike Molloy tenía por intención principal publicar el acervo de abreviaciones que él había ido recogiendo de manera personal en una hoja de Word desde el ‘85 (que eran como mil definiciones en aquel entonces) para beneficiar al mundo entero. Y vaya que nos ha ayudado!

Hoy día ya contiene más de 1 millón de definiciones, y aunque éste no fue el primer sitio web de búsqueda de abreviaciones (hay otros, como por ejemplo acronymattic), una de las cosas que lo distinguen es que está abierto a lo que se llama “user-generated content” es decir: uno puede ingresar una sugerencia de acrónimo y después de ser revisada, verificada y editada es agregada a su BD donde la podrás consultar. Esta es la gran ventaja del sitio en comparación con otros: que las definiciones son contenido editado por seres humanos, verificado y revisado cuidadosamente.

De modo que acronymfinder te puede servir para definir:

  • AAA Administration, Authorization, and Authentication (Information Technology)
  • AAA Antiaircraft Antiarmor (Military & Government)
  • AAA Achalasia-Addisonianism-Alacrima (Science & Medicine)
  • AAA Asistencia Asesoria y Administracion (Organizations, Schools, etc.)
  • AAA Association des Auteurs Autoédités (Business & Finance)
  • AAA Anything, Anytime, Anywhere (Slang, Chat & Pop culture)
  •  

Con sus 15 años en la web, acronymfinder es ya el recurso más completo de su clase que jamás haya existido.

No pretendo ser el único individuo pisando suelo nacional que lo conozca (seguro varios de ustedes dirán, “bah, esas son viejas noticias”) pero para quien pueda serle útil lo comparto porque a mí me ha sacado de más de un apuro. Espero les sirva!

Gam Novelo.

August 03
Lightswitch: Error al conectarse con SQL Express (Solucionado)

Anteriormente ya había utilizado Lightswich en mi laptop sin ningún problema, hoy, sin embargo, al hacer algunos ejercicios en mi equipo de escritorio, me encontré con el siguiente error:

Error 1 An error occurred while establishing a connection to SQL Server instance '.\SQLEXPRESS'. 
  
Login failed for user 'SBW\SBWSQL'. C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\LightSwitch\v1.0\Microsoft.LightSwitch.targets 95 10 SBW

Precisamente me preocupaba ir a tener algún problema por que en ese equipo reinstale el SQLEXPRESS cuando me estaba peleando con los problemas que me genero el haber instalado la version 1.0 de Vault.

Afortunadamente, encontré la solución en un thread de los foros de MSDN.

Básicamente entre a la carpeta: %LOCALAPPDATA%\Microsoft\Microsoft SQL Server Data\SQLEXPRESS' borre el contenido y el problema se resolvió.

Al volver a inspeccionar el contenido de esa carpeta, me encontré con que al ejecutar la aplicación de Lightswich, el contenido  de esa carpeta “se crea”:

image

A juzgar por el contenido, en esa carpeta se guarda “la base de datos master” que se usa para cuando una monta una base de datos SQL sin cargarla en una instancia determinada.

August 03
Lightswitch 2011

Lightswitch, una nueva de tecnología que esperado por años, por fin ha sido liberada. Lightswich permite construir aplicaciones muy rápidamente, utilizando un enfoque basado en la descripcion del modelo de datos, que a su vez es accedido mediante el EntityFramework de Microsoft y que permite derivar la interfaz de una aplicacion muy rápidamente a partir del modelo.

Desde una perspectiva teórica, a este enfoque se le conoce como MDA (Model Driven Architecture). Uno de los proyectos que mas ha analizado esta forma de construir aplicaciones es NakedObjects. Inclusive es posible descargar un libro que explica toda esta filosofia de derivar sistemas a partir de modelos.

A traves de los años que llevo desarrollando sistemas, y desde que tuve contacto con otra tecnología similar al principio de mi carrera (Apple Direct2Web) siempre he pensado que existen varios patrones de “derivación de interfaces a partir del modelo” que no estan siendo aprovechados en la industria tanto como deberían.

Por ejemplo, hace algunos años, escribí un blog post comparando los patrones Edit then List y List then Edit, en aquel entonces soñaba con que Visual Studio me permitiera derivar estos patrones fácilmente a partir del modelo…  Y Lightswitch no me ha decepcionado: Esta es la forma de derivar una pantalla a a partir del modelo con Lightswitch:

image

A través de esta forma puedo escoger alguno de las “plantillas de pantalla” disponibles “out-of-the-box” en Lightswitch, pero, diran Uds., ninguno de ellos es exactamente lo que tu describes en tu articulo, bueno, la pantalla de “List and Details” corresponde con el patrón “Master List, Detail Editor” que describo en mi articulo. La plantilla “Search Data Screen” combinada con la “New Data Screen” puede usarse para construir el patron “List then Edit”

Por otro lado, una de las maravillosas características de Ligthswitch es que es que extensible, así que todo lo que tengo que hacer, si quiero tener templates que correspondan perfectamente con los patrones que he encontrado es crear un nuevo “Screen Template”.

En los próximos blog posts estaré compartiéndoles mis hallazgos mientras juego con los tutoriales para Lightswitch disponibles en MSDN.

Finalmente les comento que es posible descargar un Training Kit de Lightswitch aquí.

1 - 10Next
 

 Sobre este blog

 
About this blog
Bienvenido al Blog de Extend Solutions! En Extend utilizaremos este espacio para exponerle al mundo el trabajo que hacemos!