Archivo de la categoría: cosas técnicas

Posts relacionados con la programación o manejo o configuración de los oredenadores (computadores)

He vuelto a activar el Site Kit de Google (los anuncios de AdSense)

Actualizado (02-jun-23 22.46):
Pues parece que ahora no quieren que «monetice» el sitio, así que… ¡Que le den a Google AdSense! 🙄
Así que… ya sabes… PayPaleame algo 😉

Pues eso… lo mismo lo vuelvo a quitar, ya que en realidad lo quité porque a mí no me gustaba que pusieran tantos anuncios, veré si puedo que no se muestren tantos anuncios, tal como he hecho en elguille.info que ahora solo se muestra un anuncio por página (o eso es lo que me parece). También esperaba algo de más actividad por PayPal, pero… nada… ¡me invitan a pocas cervezas virtuales! 😉Y de alguna forma hay que mantener al que mantiene el sitio para que pueda seguir manteniéndolo… no sé si me explico 🤔😅

Dejaré que se activen los anuncios y ya decidiré si molestan mucho o no… si no molestan, los dejo y espero que algo entrará en «la cesta de la compra».

Y ya sabes, si prefieres que elguillemola.com esté sin anuncio, ten la buena costumbre de invitarme al menos una vez al mes a un «mate* virtual» (*mate = ya sabes, u refresco, una birra, un ponche, jajaja)

De todas formas, aquí te dejo el enlace de PayPal para que hagas un donativo si así lo estimas oportuno. Gracias🙏🏻

Escanea este código QR para hacer una donación por PayPal.

Nos vemos.
Guillermo

Utilidad para invertir las asignaciones de controles a objeto y viceversa (ReordenarAsignaciones)

Pues eso, hay ocasiones en las que en el código asigno los datos de una tabla a los controles del «formulario» (quien dice formulario dice página XAML, etc.), sí, sé que se puede hacer con DataBinding, pero… casi siempre prefiero usar el modo manual ya que así parece que tengo más control con lo que hago y, de hecho, en algunas ocasiones el DataBinding no va como debería, al menos eso me ha pasado en varias páginas de Xamarin.Forms. No sé si tú lo harás así, pero yo suelo hacerlo con bastante frecuencia, será por la forma de trabajar que tengo. 😊

Te explico:
Digamos que tengo una tabla de una base de datos, que he convertido con la utilidad Generar las clases (de VB o C#) de una tabla de SQL Server o Access (mdb) en la que tengo asignada en una variable (por ejemplo, LaFactura) el contenido de la tabla Facturas y quiero asignar el contenido de ese objeto a los diferentes controles, haría algo como esto para asignar los valores de LaFactura a los controles:

/// <summary>
/// Mostrar la factura en los campos.
/// </summary>
private void MostrarLaFactura()
{
    chkFacActiva.IsChecked = LaFactura.Activa;
    txtFacActividad.Text = LaFactura.Actividad;
    txtFacAdultos.Text = LaFactura.Adultos.ToString();
    txtFacAgente.Text = LaFactura.Agente;
    txtFacCuantasReservas.Text = LaFactura.CuantasReservas.ToString();
    txtFacCuantosPagos.Text = LaFactura.CuantosPagos.ToString();
    txtFacDescuento.Text = LaFactura.Descuento.ToString("0.##");
    txtFacFechaFactura.Text = LaFactura.FechaFactura.ToString("dd/MM/yyyy HH:mm");
    txtFacHoraActividad.Text = LaFactura.HoraActividad.ToString("hh\\:mm");
}

Y tengo este otro método para hacer el caso contrario (asignar al objeto LaFactura el valor de los controles):

/// <summary>
/// Asignar los campos a la factura para guardar.
/// </summary>
/// <returns>True si algo no va bien.</returns>
private bool AsignarLaFactura()
{
    LaFactura.Activa = chkFacActiva.IsChecked;
    LaFactura.Actividad = txtFacActividad.Text;
    LaFactura.Adultos = txtFacAdultos.Text.AsInteger();
    LaFactura.Agente = txtFacAgente.Text;
    LaFactura.CuantasReservas = txtFacCuantasReservas.Text.AsInteger();
    LaFactura.CuantosPagos = txtFacCuantosPagos.Text.AsInteger();
    LaFactura.Descuento = txtFacDescuento.Text.AsDecimal();
    LaFactura.FechaFactura = txtFacFechaFactura.Text.AsDateTime();
    LaFactura.HoraActividad = txtFacHoraActividad.Text.AsTimeSpan();

    return false;
}

En el método MostrarLaFactura las asignaciones las hago de la forma habitual, es decir, asigno a los controles los datos que quiero mostrar, por ejemplo, si es fecha le asigno de la forma dd/MM/yyyy, etc.

El caso especial es cuando lo hago al revés: AsignarLaFactura, que debo convertir el contenido de los controles al formato adecuado, en este caso utilizo para las fechas, horas y cifras con decimales unos métodos de extensión que tengo definidos para hacer esa tarea (que empiezan con As y tienen el formato AsTIPODATOS), esto último no es parte de la utilidad que me he fabricado, pero… la tiene en cuenta 😉

Hacer esto manualmente, que es como lo hacía hasta hace 2 días, es tedioso y, por supuesto se pueden producir errores, que modificas tras el aviso de Visual Studio, pero… es, ¿cómo decirlo?, un peñazo por no decir co**zo. 😊

Y me puse a fabricarme una utilidad (sí, en C#) para hacer eso, por ahora es muy simple y en las asignaciones no contempla que haya comentarios, pero… todo se andará.

Las asignaciones que convertir se indican como argumentos en la línea de comandos, yo lo que hago es tener el proyecto abierto en Visual Studio y en la parte de DEBUG le asigno lo que se indicará en la línea de comandos (ver la captura 1), al hacerlo de esta forma (indicando los valores a convertir como argumentos de la aplicación), hay que tener en cuenta que los valores asignados al array args del método Main se hacen de esta forma:
ladoIzquierdo = ladoDerecho, de forma que si pones: chkFacActiva.IsChecked = LaFactura.Activa; esta será las asignaciones al array args:
args[0] = "chkFacActiva.IsChecked"
args[1] = "="
args[2] = "LaFactura.Activa;"

Y esto es lo que tengo en cuenta, por eso aún no contemplo los comentarios, ya que analizo el contenido del array args de tres en tres valores:

for (int i = 0; i < args.Length - 2; i += 3)

Pero eso ya lo arreglaré en la próxima revisión.

Figura 1. Los argumentos de la línea de comandos del proyecto

 

Dicho esto, no me queda mucho más que decir 😊

Solo ponerte el enlace al proyecto publicado en GitHub: ReordenarAsignaciones, el nombre en realidad tendría que ser InvertirAsignaciones, pero… así es como lo creé inicialmente y… seguramente se quedará así 😉

Nota:
En el repositorio de GitHub incluyo las clases con las extensiones que te he comentado y muchas más.
El código de Extensiones está tanto para Visual Basic (el original) como para C# (el convertido).

También he creado un paquete de NuGet que he definido como Tool de .NET 6 de forma que lo puedas instalar si tienes instalado el SDK de .NET 6 o superior.
De esa forma lo podrás tener como una utilidad de .NET y no preocuparte de instalarlo (extraer el código ejecutable en una carpeta) y asignar el path a ese directorio para poder usarla desde cualquier línea de comandos.

El paquete de NuGet se llama igual: ReordenarAsignaciones y este enlace te llevará a la página de NuGet donde tengo ese «paquete».
Notar que no es necesario instalarlo en un proyecto de Visual Studio, simplemente instalarlo usando la línea de comandos:
dotnet tool install --global ReordenarAsignaciones --version 1.2.0
Esto te instalará la versión que tengo a la hora de escribir esto, pero en la página de NuGet te muestra siempre qué tienes que hacer para instalarlo.

Para actualizar el «paquete» siempre es el mismo código independientemente de la versión:
dotnet tool update --global ReordenarAsignaciones

 

Espero que te sea de utilidad, esa es la intención 😉

Y si te parece bien, acuérdate de invitarme a un cafelito virtual mediante un donativo/donación con PayPal. Usando este enlace o este código QR:

Gracias 🙏🏻

Nos vemos.
Guillermo

Cómo cambiar la descripción de varios de los videos de YouTube de tu canal (en vez de uno por uno)

Pues eso… estoy echando una mano para modificar las descripciones de los videos en un canal de YouTube (que me han dado permiso de editor) y claro, hacerlo uno a uno, es algo tedioso, aparte de tomar mucho tiempo, sobre todo teniendo en cuenta que en ese canal ¡hay más de 500 videos a los que añadir la nueva descripción!

Y la verdad es que es algo simple de hacer, pero como todo, tienes que saber hacerlo 😉

Y aunque este tema no sea de programación, pues… también está bien compartir «el truco» para hacer esto. Nunca se sabe si ya tienes un canal de YouTube o vas a tenerlo y puede que quieras cambiar las descripciones de forma masiva.

En realidad, esto no es para cambiar todas las descripciones, solo la de los videos seleccionados, esto está bien, ya que puede que no quieras modificar todas las descripciones.

Te explico (sin video, aunque esté relacionado con los videos) cómo hace resto paso a paso.

Nota:
Los pasos que te voy a explicar están tomados de esta «ayuda» de YouTube:
Make bulk changes to videos – Edit multiple videos.

  • Lo primero es entrar en tu canal de YouTube, concretamente en YouTube Studio.
  • Del panel de la izquierda selecciona Contenido (Content).
  • Muestra los videos a los que quieres modificar la descripción.
  • Puedes clasificarlos por fecha, número de vistas, nombre, etc. (ver figura 1).
  • Una vez que tengas los videos de los que quieres cambiar la descripción, los va seleccionando (usando los check-boxes a la izquierda de cada video)
  • Arriba te indicará los videos que tienes seleccionado (ver la figura 2).
  • Pulsa en Edit (Editar) y te mostrará una lista desplegable con las cosas que puedes hacer con esos videos seleccionados (ver figura 3).
  • En este caso quiero cambiar la descripción, así que, selecciono esa opción.
  • Te mostrará otras acciones a realizar con la descripción (ver figura 4). En esta captura lo que quiero es añadir ese texto al principio de lo que ya haya.
    También puedes añadirlo al final, reemplazar lo que haya por el nuevo texto (que es lo que tengo que hacer en el canal ese que estoy editando) o simplemente quitar las descripciones.
  • Para hacer los cambios tienes que pulsar en el «botón» de arriba a la derecha que indica «Update Videos» (actualizar vídeos), tal como te muestro en la figura 5.
  • Finalmente acepta lo que vas a hacer, para asegurase de que no lo haces por error, tienes que marcar la casilla «I understand the implications of this action» (Sé que puedo meter la pata y cargarme los videos, pero… ;-)) En serio, la traducción sería algo así como: «Comprendo las consecuencias de esta acción».
    Finalmente, tienes que darle a «Update videos» (actualizar videos). Ver la figura 6.
  • Y hecho esto, ya tienes las descripciones cambiadas.

Capturas

Figura 1. Seleccionar videos en YouTube Studio
Figura 2. Editar los videos seleccionados
Figura 3. Indica lo que quieres hacer con los videos seleccionados.
Figura 4. Indica qué quieres hacer con la descripción de los vídeos seleccionados.
Figura 5. Actualizar las descripciones
Figura 6. Confirma que quieres hacer lo que estás a punto de hacer.

Espero que te pueda ser de ayuda.

Nos vemos.
Guillermo

P.S.
El canal que estoy haciendo cambios es @CesarTeruel, no es de programación es un canal sobre conocerte a ti mismo, saber lo que eres y… bueno… échale un vistazo si quieres.