Publicado el Deja un comentario

Implementación alternativa a Google Maps

Hace un tiempo atrás hice una implementación con Google Maps para la búsqueda de una dirección y despliegue de la dirección encontrada en un mapa, la verdad funcionaba como los dioses hasta antes de la limitante de Google a su api MAPS, la cual dejó una cuota de 1 render de mapa por día de forma gratuita y si se desea que la api continúe funcionando sólo hay que registrar la tarjeta de crédito y pagar, rogando que el número de usos del mapa sean los mínimos posibles y que el sitio no vaya a ser blanco de ataques que llamen constantemente la aplicación (DDoS).

La buena noticia es que existen alternativas que permiten la implementación del servicio de forma simple y lo mejor de todo gratuitas, hice uso del servicio de mapas https://leafletjs.com y otro servicio https://nominatim.org el cual traduce una dirección de texto a coordenadas, la implementación que realicé es bien sencilla y puede tener fallas pero es más que nada para tener una idea del como realizar la solución usando estos servicios, espero que les ayude

See the Pen API de direcciones by Cesar Gonzalez (@donpandix) on CodePen.

Publicado el Deja un comentario

Lista de tablas y SPs SQL Server

Lista de tablas y Stored Procedures de un esquema en un servidor SQL Server versión 2012+

Estas simples instrucciones retorna una lista de las tablas y procedimientos almacenados en un esquema particular de un esquema Sql Server en su versión 2012, el código es el siguiente

-- Lista de tablas
SELECT * FROM INFORMATION_SCHEMA.TABLES

-- Lista de SP's
SELECT * FROM INFORMATION_SCHEMA.routines where routine_type = 'PROCEDURE'

-- Lista de tablas con las columnas y sus descripciones
SELECT	sys.objects.name AS TableName, 
		sys.columns.name AS ColumnName,
		ep.value AS Description
FROM sys.objects
INNER JOIN sys.columns ON sys.objects.object_id = sys.columns.object_id
CROSS APPLY fn_listextendedproperty(default, 
									'SCHEMA', 
									schema_name(schema_id),
									'TABLE', 
									sys.objects.name, 
									'COLUMN', sys.columns.name) ep
ORDER BY sys.objects.name, 
		 sys.columns.column_id
		 
		 
-- Ejemplo listado de tablas para borrar contenido
SELECT 'DELETE FROM ' + TABLE_NAME 
  FROM INFORMATION_SCHEMA.TABLES 
 WHERE TABLE_NAME LIKE 'SCC_%'

Publicado el Deja un comentario

Listado de Archivos de forma recursiva a un archivo

Esta es una instrucción sencilla en DOS para la obtención de los archivos en una carpeta específica de forma recursiva, esto es muy útil cuando se necesita realizar alguna documentación en la cual require la especificación de todos los elementos de las carptetas y sub-carpetas, por ejemplo, de un sitio web completo, la instrucción es la siguiente:

dir /b /s /a-d  >lista_archivos.txt
Publicado el Deja un comentario

Número Factorial En Java

Implementación del cálculo del número factorial en lenguaje Java

Esta es una implementación del cálculo del número factorial extremadamente sencilla, que tiene como propósito el de responder a una necesidad programática basado en la simpleza, sólo con un par de lineas de código y recursividad he llegado a una solución que es posible desarrollarla en cualquier lenguaje. Para este caso he usado JAVA que es el leguaje en el cual estoy profundizando actualmente. el nivel del problema es muy básico pero es importante realizar el ejercicio de forma personal con el fin de ir habilitando la mente para solucionar problemas mas complejos. Sin más acá el desarrollo de la solución.

/**
 *  Clase para el cálculo del valor Factoral (n!) 
 *  de un número entero usando recursividad
 */
class Factorial {
  
  /**
   *  Cálculo el valor factorial (n!)
   *  llamada al método
   *
   *  int retorno = Factorial.calculo(3)
   *
   *  retorno asumirá el valor: 6
   */
	public static int calculo (int numero) {
		if (numero <= 1) return 1;
		return numero * Factorial.calculo(numero - 1);
	}
  
}

La manera de usar este código es la siguiente:

int retorno = Factorial.calculo(3);
System.out.println(retorno);

El texto de salida por pantalla sería

6
Publicado el Deja un comentario

Lista doblemente enlazada con Java

Implementación de ejemplo de una lista doblemente enlazada en lenguaje JAVA 8+

Continuando con la implementación de estructuras de datos acá presento una lista doblemente enlazada y el recorrido de sus valores hacia adelante y atrás, su implementación es solo una variación de la lista simple, pero con la particularidad que cada nodo no solo tiene un puntero al siguiente sino también un puntero al anterior, acá el código con la implementación y un link a repl.it para la revisión de la ejecución del siguiente código.

Tabla de desempeño basado en Big O

AlgoritmoTiempo promedioPeor caso
BúsquedaO(n)O(n)
InserciónO(1)O(1)
EliminaciónO(1)O(1)

El ejemplo de ejecución en Repl.it https://repl.it/@donpandix/Estructura-Datos
El objeto nativo de java se llama LinkedList y su documentación oficial está en https://bit.ly/2Z1FNO1

Publicado el Deja un comentario

Lista Enlazada con Java

Con el propósito de profundizar y/o recordar conocimientos escenciales en lo que refiere a codificación, comenzaré nuevamente a publicar algunas implementaciones de los conceptos estructura de datos y algoritmos, en esta oportunidad presento la implementación de una lista enlazada simple en lenguaje JAVA, ya tenía una implementación de esta estructura de datos realizado con Swift, pero quise realizarla en este JAVA porque es un lenguaje que en lo particular me gusta mucho. sin más les dejo el código.

Acá les dejo un link al proyecto en repl.it si desean analizarlo y ejecutarlo con más detalle https://repl.it/@donpandix/Estructura-Datos

Un dato relevante para quienes les gusta conocer más en profundidad las implementaciones, es su desempeño definido por su Big O:

Algoritmo Tiempo promedio Peor caso
Búsqueda O(n) O(n)
Inserción O(1) O(1)
Eliminación O(1) O(1)

El objeto nativo de java se llama LinkedList y su documentación oficial está en https://bit.ly/2Z1FNO1

Publicado el 1 comentario

Formateo de una fecha en SQL Server

Formato específico para una fecha almacenada en base de datos SQL Server 2012

Este es un ejemplo muy simple de un formato de un dato tipo datetime a una cadena de texto con un formato customizado deacuerdo a las necesidades del usuario

Para más información consultar https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql?view=sql-server-2017

Publicado el Deja un comentario

Cálculo de fechas SQL Server

Ejemplo simple para el cálculo de diferencias en fechas

Acá hay una consulta SqlServer para el cálculo de diferencias de fechas sql, el rango de la diferencia está en días minutos y segundos, esto lo uso particularmente para cuando necesito saber el tiempo que ha pasado desde que un dato fue insertado o actualizado hasta la fecha actual.

Como dato adicional puedes consultar esta publicación para el formateo de registros del tipo datetime https://cesarg.cl/formateo-de-una-fecha-en-sql-server/

Este cálculo de fechas lo realicé en una query de SQL Server 2012, es muy sencilla y tiene como base de cálculo la fecha y hora actual del servidor, por otro lado hay que considerar que la unidad que usa sql server para restar o sumar periodos a una fecha es el día, entendiendo esto, por lo que para restar periodos inferiores a días, ejemplo: horas, minutos y segundos se debe dividir 1(día) por 24, 2460 y 2460*60 respectivamente.

El resultado de esta consulta sería algo como esto

Espero que les sea útil y cualquier comentario o mejora no dudes en realizarlo.

Publicado el 2 comentarios

Valida el RUT chileno con Java

Valida Rut Chileno con expresiones regulares

Después de bastante tiempo, me di cuenta que no había subido ninguna validación de RUT chileno con Java. Es por esto que hoy comparto este código basado en una que está desarrollada con PHP y JavaScript . Espero que les sea de bastante utilidad.

 

Publicado el Deja un comentario

Validación de email con Javascript

La validación de email es una de mis funciones más recorridas y usadas frecuentemente en las aplicaciones que desarrollo, por lo que, esta función en particular, se ha vuelto una de mis herramientas básicas y principales de mi arsenal de desarrollador. Hoy la pongo a disposición de la comunidad con la esperanza que sea de gran utilidad en los actuales y futuros desarrollos.

La función que pongo a continuación, por lo general, la tengo dentro de un objeto que envuelve una serie de funciones comunes como son la validación de RUT, TRIM, Rellenos de cadenas con ceros… etc, pero con el fin de simplificar este POST lo dejé en una función sencilla para una implementación y uso de manera simple y muy rápida. La base de la validación es a través de una expresión regular, por lo que es importante mencionar, que la validación busca comprobar al forma del correo ingresado, pero no su existencia de la cuenta, para ello se necesitaría una implementación algo más compleja.

GIST del snippet

 

Saludos!