Etiqueta: truco

  • Cuidadín con los For Each si se modifica el objeto del bucle

    Pues eso… aunque esto ya es algo viejo, y se supone que sabido, el otro día no lo recordé y revisando el código de un procedimiento que, a pesar de tratar con muchos registros de una base de datos de SQL Server, veía que tardaba demasiado… y mientras estaba trabajando el método me entretuve en ver la ventana esa de diagnóstico en la que te muestra todo lo que iba haciendo el código (ver la figura 1), y me percaté que repetía fechas…

    Ventana de las herramientas de diagnóstico de Visual Studio
    Figura 1. La ventana de las Herramientas de diagnósticos de Visual Studio.

    Al principio no caí en porqué lo hacía, así que… me puse a revisar el código con las llamadas a las actualizaciones a la base de datos… y al cabo de un rato caí en que estaba usando un bucle For Each y que la variable de ese bucle era un objeto de la clase que se encarga de actualizar los datos (e incluso de crearlos si no existen en la base de datos) y… ¡se me encendió la bombillita esa Light bulb de… idea!

    Fue cambiarlo a un bucle normal y tardar muchísimo menos Eye rolling smile, creo que una de las veces me llegó a tardar más de media hora y al hacer el cambio se quedó en 4 minutos o menos.
    Y el cambio que hice fue, por ejemplo (en VB), de este:

    For Each p In Productos

    a este otro:

    For i = 0 To Productos.Count - 1
    Dim p = Productos(i)

    Nota:
    El problema de los bucles for each no es solo de Visual Basic, también lo es de C# aunque se escriba de otra forma.

    Y lo cuento aquí para que cuando busque «problemas» me de la solución.

    Es que, por si no lo sabes, cuando no recuerdo cómo hacer algo en VB o C#, busco en Google, pero le añado al final elguille para que salgan los resultados que tengo publicados y, salvo excepciones, encuentro siempre lo que busco Flirt male, así que… ya sabes… Winking smile

    Nos vemos.
    Guillermo

  • Donde dije digo, digo Diego (y buscar las referencias a un método)

    Pues eso… como te comenté hace unos meses (Tiene una licencia para Visual Studio Professional 2017) resulta que solo era de evaluación, pero se ve que de unos tres meses… en fin… eso de que no digan las cosas claras es un poco frustrante, por decir algo suave, ya que en ningún lugar decían nada de que fuese una licencia de prueba, en fin… uno que siempre intenta ver la parte buena… Winking smile

    Nota:
    Poco después de publicar esta entrada he abierto el correo y me encontrado con un bonito regalo: Un regalito a una suscripción a Visual Studio Enterprise (por 12 meses).
    Gracias

    Pero resulta que solo era una licencia temporal… o al menos así lo dice la captura de la ventana de aviso que me ha salido (ver la figura 1).

    La licencia de prueba ha expirado
    Figura 1. La licencia de prueba ha expirado

    En esta ocasión si dice que «era» una licencia de prueba (Trial extension), en fin…

    Pero no me importa, con la versión Community me apaño, ya que en realidad la versión Professional la instalé porque tenía una cosilla que me venía muy bien: saber dónde se estaban usando los métodos de mis clases, (con enlaces a cada uno de los sitios en los que se accedía al método) cosa que desde hace unos meses ya no aparece, al menos como aparecía antes: encima de la definición del método.

     

    Buscar todas las referencias a un método

    Si te sitúas en la definición de un método y pulsas en el menú contextual, te saldrá algo como lo mostrado en la figura 2 y seleccionando Buscar todas las referencias te mostrará una lista desde dónde se accede a ese método (ver la figura 3).

    Menú contextual de la definición de un método
    Figura 2. Menú contextual de la definición de un método
    Las referencias al método
    Figura 3. Las referencias al método

    Nota:
    Comentarte que no solo se pueden ver las referencias a un método, también a las clases y otros tipos definidos.

    Y esto es todo… seguiré con la versión Community de Visual Studio 2017 y (mientras tenga acceso) a las versiones Preview de Visual Studio 2019 y cuando salga la definitiva (recuerda que está prevista para el 2 de abril) si no consigo una versión mayor, seguiré con la de la comunidad (que esa sí que es gratuita de por vida… o al menos por ahora lo es).

    Nos vemos.
    Guillermo

  • Quitar avisos de Windows 10 al instalar con ClickOnce

    Pues eso… que el otro día estaba probando en mi equipo con Windows 10 la instalación con ClickOnce de una aplicación y era un rollo la de preguntas que te decía, que si te está protegiendo, que no confía en la aplicación, y cosas así (ver figura 1).

    Figura 1. Aviso de Windows 10 al instalar con ClickOnce desde un sitio Web
    Figura 1. Aviso de Windows 10 al instalar con ClickOnce desde un sitio Web

    La solución es simple.

    Pero debes hacerlo en el equipo en el que se va a instalar la aplicación.

    Panel control>opciones internet>Seguridad>Sitios de confianza>sitios (agregar la dirección web)

    Abre el Panel de Control, (si no lo tienes a mano abre Inicio y escribe «panel» y te lo mostrará), selecciona Opciones de Internet (si no ves las opciones de internet, pulsa en Redes e Internet) se mostrará una ventana como la de la figura 2.

    Figura 2. Propiedades de Internet.
    Figura 2. Propiedades de Internet.

    Pulsa en la pestaña Seguridad, a continuación en Sitios de confianza y en el botón Sitios. Te mostrará una ventana nueva con los Sitios de confianza (figura 3).

    Figura 3. Sitios de confianza.
    Figura 3. Sitios de confianza.

    Si tu sitio no es https quita la marca de abajo a la derecha donde dice «Requerir comprobación del servidor (https:) para todos los sitios de esta zona«.

    Escribe el nombre de tu sitio en «Agregar este sitio web a la zona de:» (sin el http:// ni https://) y pulsa en el botón Agregar.

    Cierra todas las ventanas y ya no tendrás más avisos como el de la figura 1 (y otros parecidos) cuando se vuelva a instalar (o actualizar) algo desde el sitio que has indicado.

    Y ya está… Smile

    Espero que te sea de utilidad.

    Nos vemos.
    Guillermo