Últimos artículos
Estas son las últimas entradas en el blog.
De todo un poco para solucionar los problemas diarios de un administrador de IT y DBA
Estas son las últimas entradas en el blog.
De todo un poco para solucionar los problemas diarios de un administrador de IT y DBA
¿Porque un systemctl enable myservice.service da este error?
Hoy es unos de esos días donde algo tan simple deja de funcionar. Te pongo en contexto: Un worker service creado en .NET 7.0 encargado de interactuar con un servicio de telefónia Asteriks y una API de .NET
Este servicio funciona correctamente en el servidor linux que cuenta con CentOS y una distro de «FreePBX». Por lo que se decidió pasar a servicio la ejecución del mismo.
Para ello, de acuerdo a la documentación de .NET tan solo con el siguiente archivo de texto es suficiente:
Host ASP.NET Core on Linux with Nginx | Microsoft Learn
[Unit]
Description=Example .NET Web API App running on Linux
After=network.target
[Service]
WorkingDirectory=/var/ami
ExecStart=/usr/bin/dotnet /var/ami/WorkerServiceAMI.dll
Restart=always
KillSignal=SIGINT
SyslogIdentifier=dotnet-ami
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
Una vez generado el mismo tan solo al ejecutar systemctl enable myservice.service debería funcionar pero recibía constantemente este error:
Failed to execute operation: No such file or directory
Luego de romperme la cabeza y no encontrar la solución en Google me puse analizar el porque no encontraba el archivo. Y entendí lo siguiente: Systemctl es parte del administrador de servicios del sistema, por lo tanto busca los archivos de forma predeterminada en /etc/systemd/system o /usr/lib/systemd/system.
Solución:
Copia el archivo dentro de esa ubicación y asunto arreglado.
Espero que te sirva este dato.
Sino sábes lo que es net MAUI te dejo un video donde está bien explicado.
La historia corta es que es el framework de Microsoft para desarrollar aplicaciones móviles nativas para iOs, Android, MacOs y Windows.
En caso de que requieras persistencias historicamente se ha trabajado siempre con el motor SQLLite de forma local. Pero si quieres algo más robutos te conviene buscar un motor de bases de datos como PostgreSQL, MySQL, MSSQl, etc.
Pero la cuestión aquí es: «Puedo conectarme directamente a MySQL desde Net MAUI?
La respuesta corta es: «No, Lamentablemente no es posible». El problema está en la forma en que se realiza la encriptación de la conexión al motor, y el sistema operativo que la intenta hacer, por ejemplo Android.
Tuve varias horas cacharreando con el asunto, y cada paso que avanzaba, se compensaba con dos mas de retroceso.
¿Porque lo intente hacer?
A fines educativo, ya que no es la manera correcta.
¿Como deberías hacerlo?
Siempre a través de un servicio web (WebService Rest Ful). Es la mejor alternativa ya que simplemente con un cliente web (http client) podrás realizar la integración de una manera standarizada.
Seguramente para serializar / deserializar tus json ocupas la librería externa de Newtonsoft Json.NET – Newtonsoft
Esta librería nos acompaña desde el 2011, y durante todo el furor de .NET framework fue la mejor alternativa que teníamos disponible.
Luego con la aparición de Net Core (2016) y su enfoque en el rendimiento estaba claro que había que tener algo nativo para el trabajo con JSON ya que es un estándar a la hora de pasar información entre servicios web del tipo WebAPI. Por ello surgió la clase nativa System.Text.Json. De manera muy tímida fue adquiriendo mayor funcionalidad, pero sobre todo un mejor rendimiento en performance frente a su competidor mas estable.
Al día de hoy tenemos Net 7.0 y en la puerta Net 8.0 que será liberado en noviembre del 2023. Por ello me propuse realizar una comparativa para ver que tan cierto era esto de que System.Text.Json es 100% más rapido que NetwtonSoft.
Aquí te dejo el video y los resultados te sorprenderán
Para ello haremos un #benchmark usando los frameworks de #net7 y #net8.
Errores como esto puede significar que algo anda mal con tu TempDB
The operating system returned error 1117(No se puede realizar la solicitud por un error del dispositivo de E/S.) to SQL Server during a write at offset 0x0000003f840000 in file 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\tempdb.mdf'
Se puede tratar de indagar el motivo, pero en esta ocasión, vamos a mover directamente la TempDB que está en producción. Quedó actualmente en el disco del sistema operativo (mal ahí), y llegó la hora de llevarla a un nuevo disco preparado para todas las E/S que estaba recibiendo.
Aquí te explico en esta tutorial como realizar el proceso
Paso 1: Creamos la nueva ubicación: En mi caso H:\TempDB
Paso 2: Con la siguiente consulta podremos generar el script necesario para poder moverlo directamente
declare @destiny as varchar(20)
set @destiny = 'G:\TempDB\'
SELECT 'ALTER DATABASE tempdb MODIFY FILE (NAME = [' + t.name + '],'
+ ' FILENAME = ''H:\TempDb\' + t.name
+ CASE WHEN t.type = 1 THEN '.ldf' ELSE '.mdf' END
+ ''');' as command
FROM sys.master_files t
WHERE t.database_id = DB_ID(N'tempdb');
En mi caso 5 archivos MDF (4 en la posición anterior, y 1 que ya había movido a fines de prueba) y un 1 archivo LDF
La respuesta ya te indica que en el próximo reinicio ocuparán la nueva ubicación
Estamos a full con el nuevo framework de Microsoft, y en esta oportunidad te enseñamos a capturar la pantalla y activar el menú de compartir.
La ventaja de Net MAUI ( al igual que con Xamarin) es que es multiplaforma y nativo.
¿Esto que significa? Que desde unas pocas líneas podremos acceder a las funciones nativas de la plataforma en donde se esté ejecutando, y para nosotros será indiferente.
En este caso vamos a dividir esta situación en dos partes:
Gracias a la interface IScreenShot podremos capturar la pantalla actual en la que nos encontremos. Esto funcionará para cualquiera de las plataformas disponibles por Net MAUI
Screenshot – .NET MAUI | Microsoft Learn
El resultado de la misma será en un conjunto de bytes (Stream), disponibles para nuestro siguiente paso
2. Guardar el archivo
Para ello haremos uso de la clase histórica de .NET llamada System.IO
System.IO Namespace | Microsoft Learn
Ya teniendo nuestra captura convertida a un archivo procedemos a pasarselo a la clase encargarda de las funciones de «compartir»
Share – .NET MAUI | Microsoft Learn
Como siempre, te dejo un video con todos los pasos bien explicado y acceso al código. Recuerda dejar tu like y tu comentario. Nos vemos…
Con la nueva versión de Microsoft para el desarrollo de aplicaciones nativas móviles ya en producción, ha nacido un nuevo boom. Anteriormente te contamos sobre Net MAUI: el Framework de .NET para el crear aplicaciones para diferentes plataformas, entre ellas iOs y Android.
Parecía que Xamarin era la única opción disponible, pero un poco olvidada en el tiempo, sin embargo con la llegada de Net 5, trajo consigo esta ansiada evolución: Net MAUI.
El día de hoy con muchos de sus bugs púlidos, y con muchos de los plugins originarios de Xamarin, ya migrados a este nuevo framework, empezamos a hilar finos para empezar a crear aplicaciones aptas para producción y de indole comercial.
Una de esas características es poder monetizar tu aplicación a través de una cuenta de Google Adsense.
Hoy te contaré los pasos necesarios para poder lograrlo y no morir en el intento.
Es necesario que la aplicación esta subida a PlayStore (Android) o AppStore (iOs)
Está plataforma integrará tu cuenta de Google Adsense y Google Analitycs en una sola. Te permitirá crear tus banners y los diferentes tipos de productos disponibles para monetizar a través de la publicidad
Te permitirá buscar tu aplicación desde las tiendas oficiales
dotnet add package Plugin.MauiMTAdmob
Los siguientes pasos consiste en crear directamente sobre tu vista, el yaml correspondiente al control equivalente a tu banner. A continuación te dejo el video del proceso completo.
No te olvides de comentar y dejar tu like!!!
IT CallCenters
Desarrollo de aplicaciones web y mobile