Entradas

Mostrando las entradas con la etiqueta cheatsheet

Comandos de Python

Instalar bibliotecas desde el archivo requirements.txt

pip install -r requirements.txt

Instalar bibliotecas desde el archivo pyproject.toml

uv pip install -r pyproject.toml

Comandos varios de SQL Server

Ver el tipo de modelo de recuperación

SELECT name, recovery_model_desc
FROM sys.databases
WHERE name = 'YourDatabaseName';

Establecer el modo de recuperación a FULL

ALTER DATABASE AdventureWorks SET RECOVERY FULL

Saber la ruta física de una base de datos local de Microsoft SQL Server (LOCALDB)

Listar las instancias de LocalDB

SqlLocalDB i

Consulta

SELECT 
    db.name AS DatabaseName,
    mf.name AS LogicalName,
    mf.physical_name AS PhysicalFilePath,
    mf.type_desc AS FileType
FROM 
    sys.master_files mf
INNER JOIN 
    sys.databases db ON db.database_id = mf.database_id
WHERE 
    db.name = 'YourDatabaseName';

Tabla de Entidades de HTML

Trabajando con ChatGPT, escribí una página que realiza el formato de sintáxis de distintos tipos de códigos para éste blog, entre otros proyectos; Y he notado un problema: al usar HTML y reemplazar código, éste se pueden confundir los caracteres típicos que componen las etiquetas de HTML (&, <, > y =) , con símbolos especiales de algún lenguaje, tales como operadores o definición de plantillas.

La mejor solución es simplemente, reemplazar éstos caracteres molestos por su equivalente en entidad de HTML, como se muestra en la tabla siguiente:

Operador Entidad
& &amp;
< &lt;
> &gt;
= &equals;

Código de limpieza

code = code
	.replace(/&/g, "&amp;")
	.replace(/</g, "&lt;")
	.replace(/>/g, "&gt;")
	.replace(/=/g, "&equals;");

Referencias

Comandos de ImageMagick

Convertir todos los archivos .jpg a .png

for %i in (*.jpg) do magick "%i" "%~ni.png"

Obtener Paleta

Obtiene una lista de todos los colores de la imagen
magick imagen -unique-colors paleta.txt
Obtiene una lista los 16 colores más representativos de la imagen
magick imagen -unique-colors -colors 16 paleta.txt

Aplicar máscara a imagen

magick imagen imagen_máscara -compose multiply -composite

Creat un archivo pdf en blanco tamaño carta

magick -size 2550x3300 xc: -density 300 carta.pdf
Los 2550x3300 pixels provienen de 8.5x11 pulgadas por 300 DPI (8.5 * 300 = 2550, 11 * 300 = 3300).

Redimensiona pixel art

magick -filter Point cover.bmp -resize 2048x2048 cover.png

Degradado pixel art

magick -size 64x48 gradient:white-black -ordered-dither o8x8,2 dither.png

Consulta de registros de IIS con Log Parser

Estamos llegando al final del ciclo de vida de los servidores actuales y nos estamos preparando para migrar de IIS a RedHat. Mientras se lleva a cabo la planificación de esta migración, es necesario obtener estadísticas sobre el tráfico en ciertas carpetas y los horarios de uso. Esto nos permitirá decidir qué se migrará y qué se conservará únicamente en el snapshot final.

Para esta tarea, recurrí a Log Parser, una herramienta lanzada en 2010 que permite ejecutar consultas sobre archivos de texto (en mi caso, archivos .log) utilizando una sintaxis similar a SQL. Sin embargo, me encontré con una sorpresa: aunque utiliza SQL, no se trata del estándar, ni siquiera del SQL usado por SQL Server. Su sintaxis es particular y algo de nicho, lo que hace que sea complicado obtener ayuda directa de herramientas de inteligencia artificial.

Probé generar consultas con ChatGPT y Gemini, pero ambas herramientas fallaron al dar una respuesta precisa debido a la naturaleza especializada, y no estandarizada del lenguaje que usa Log Parser. Por ello, aquí dejo algunos ejemplos de consultas que me han funcionado para generar estadísticas simples, por si a alguien más le resulta útil.

Configuración

Descarga Log Parser desde el sitio oficial https://www.microsoft.com/en-us/download/details.aspx?id=24659

Aparentemente, la ruta de Log Parser no se agrega a la ruta de variables de entorno, lo que significa que no se puede llamar simplemente desde la consola, por lo que se tiene especificar su ruta completa (C:\Program Files (x86)\Log Parser 2.2\LogParser.exe)

En mi caso hice un archivo.bat para que pueda escribir los archivos .sql aparte.
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" -i:IISW3C -o:CSV file:%~1

Documentación

Dependiendo de lo que se quiera consultar, Log Parser utiliza determinadas columnas que espera estén en los archivos de texto, mismas columnas se puede consultar con el parámetro -h (help) e -i: (input), donde especificamos el formato a consultar, en mi caso son los logs de IIS (IISW3C)
logparser -h -i:IISW3C
Lo que nos devuelve la lista de columnas con su respectivo tipo, en éste caso lo remuevo para mayor facilidad al copiar y pegar, adicionalmente de algunos ejemplos.
LogFilename , LogRow , date , time , c-ip , cs-username , s-sitename , s-computername , s-ip , s-port , cs-method , cs-uri-stem , cs-uri-query , sc-status , sc-substatus , sc-win32-status , sc-bytes , cs-bytes , time-taken , cs-version , cs-host , cs(User-Agent),  , cs(Cookie),  , cs(Referer),  , s-event , s-process-type , s-user-time , s-kernel-time , s-page-faults , s-total-procs , s-active-procs , s-stopped-procs

Consultas

Quiero hacer una lista de carpetas que se han usado en éste año (u_ex25*.log), y saber cúantas veces ha sido servido un recurso, (asociado a una carpeta, usando EXTRACT_TOKEN para obtener el primer folder), de manera exitosa (status 200).
SELECT 
	COUNT(*) AS Hits,
	EXTRACT_TOKEN(cs-uri-stem, 1, '/') AS Service
INTO servicios.csv	
FROM C:\inetpub\logs\LogFiles\W3SVC3\u_ex25*.log
WHERE 
	sc-status = 200 AND 
	cs-uri-stem LIKE '/%'
GROUP BY Service 
ORDER BY Hits DESC

Curiosamente, la herramienta ya estaba instalada en el servidor, lo que me hace pensar que ya había intentado usarla en el pasado… y que seguramente me desesperó. Conociéndome, es muy probable que en aquel momento incluso haya escrito alguna herramienta propia para obtener las estadísticas que necesitaba.

Lista de Regex comunes en PHP

Lista

UsoRegex
UUID/GUID/[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}/
EMail^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$
Date (YYYY/MM/DD)\d{4}\/\d{2}\/\d{2}
Variables PHP\$[A-z_][A-z0-9_]*
Detecta palabras entre "{" y "}"\{.*?\}

Uso

if(preg_match($regex, $str))
{
    ECHO 'OK';
}

Instrucciones comunes para Postgresql

Versión

SELECT version();

Activar extensiones

CREATE EXTENSION IF NOT EXISTS vector;

Funciones

gen_random_uuid()

Listar las tablas denro de un schema dado

SELECT table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'your_schema'
ORDER BY table_name;

Listar detalles de columnas de la base de datos actual

SELECT
	table_schema, 
	table_name, 
	column_name,
	data_type,
	is_nullable,
	column_default,
	character_maximum_length, 
	numeric_precision, 
	datetime_precision
FROM
	information_schema.columns
WHERE
	table_schema NOT IN ('information_schema','pg_catalog')
ORDER BY table_schema, table_name, ordinal_position