Eliminar todos los datos de una tabla en CodeIgniter

En un trabajo que estoy realizando intenté hacer un delete de este tipo en CodeIgniter:

$this->db->delete("la_tabla");

Cosa que permitiría eliminar todos los elementos de una tabla, pero no fue así y en su lugar salió el mensaje:

Deletes are not allowed unless they contain a “where” or “like” clause.

Que quiere decir que las eliminaciones no están permitidas si no les pones un where o un like. Pero si ejecutamos:

delete from mi_tabla;

En una consola de MySQL, todo va bien. Bueno, no importa, el problema fue con CodeIgniter y la solución es realmente sencilla.

(más…)

Desactivar editor gutenberg de WordPress

Desactivar Gutenberg en nueva versión de WordPress

Lo que sea de cada uno, pero personalmente no me gusta el nuevo editor de WordPress llamado Gutenberg, por lo que me puse a investigar cómo podemos desactivar Gutenberg en nuestra instalación fresca de WP.

Para la gente que es más de “arrastrar y soltar” (o para los “programadores web” de hoy en día) viene bien, pero si se está acostumbrado al viejo editor, no nos acostumbraremos tan rápido.

En fin, eso no importa mucho. Si te gusta, déjalo así. Si no, entonces ahorita verás cómo puedes desactivar el editor Gutenberg.

(más…)

Hashear contraseñas en Python usando bcrypt

Hashear contraseñas con Python y bcrypt

Anteriormente vimos cómo generar una contraseña segura en Python cuando necesitamos un token o una clave segura, ahora veremos cómo hashear una contraseña en Python, usando bcrypt.

El algoritmo de bcrypt es usado también por PHP al hashear contraseñas. Igualmente está disponible en Go.

Hashear contraseñas en Python usando bcrypt

Hashear contraseñas en Python usando bcrypt

Hashear contraseñas es un estándar que debemos seguir al implementar autenticación de usuarios, por ejemplo. Pero bueno, vamos al tutorial en donde veremos:

  1. Cómo instalar la librería de bcrypt usando pip
  2. Cómo hashear una contraseña con bcrypt y Python
  3. Cómo comprobar si una contraseña coincide con el hash de bcrypt en Python
  4. Costos y límites de bcrypt en Python

(más…)

Cadena aleatoria segura criptográficamente con Python

Generar contraseña o cadena segura en Python

Con el lenguaje de programación Python es muy fácil generar un token o cadena segura, hablando criptográficamente.

Recientemente se ha introducido el módulo secrets que nos permite generar una contraseña aleatoria y segura para usarla como token, clave de encriptación o cosas de esas.

Cadena aleatoria segura criptográficamente con Python

Cadena aleatoria segura criptográficamente con Python

Si no tienes Python 3, es hora de actualizar. Mira cómo instalarlo aquí.

(más…)

Modificar estilos de título

Atajos para poner título 1, 2 y 3 en Word

En este post explicaré los métodos abreviados o atajos del teclado para poner los estilos de títulos o texto normal en Word. Microsoft Word permite que añadamos nuestros propios atajos, de tal manera que se puede personalizar el comportamiento de las combinaciones de teclas para hacer las cosas más rápido.

Personalmente tuve que cambiar varios títulos con el estilo Título 2 a Título 3, y hacerlo con el mouse resulta tedioso; por ello escribo este post.

(más…)

Sumar fechas en MySQL

Sumar y restar fechas con MySQL usando date_add y date_sub

Ya vimos cómo calcular la diferencia de fechas en años, meses, o cualquier tipo de medida en MySQL. Ahora veamos cómo operar con fechas; es decir, sumar y restar tiempo a fechas con MySQL.

Para operar fechas vamos a usar las funciones date_add y date_sub. Podremos sumar y restar estos intervalos de tiempo:

  • Años
  • Meses
  • Días
  • Horas
  • Semanas
  • Minutos

Y muchos más, así como combinaciones de los mismos. Al final dejo un enlace en donde listo y ejemplifico a todos ellos.

(más…)

Todas las unidades y formatos para interval

Todos los formatos y unidades para uso de interval en MySQL

En este post vamos a explicar y ver los formatos que podemos usar a la hora de usar la palabra clave interval en MySQL. Esto es más que nada una guía detallada de todos los formatos y unidades válidas al usar interval, cosa que se ve más al sumar y restar fechas en MySQL o mejor dicho, al trabajar con fechas.

Me he dado a la tarea de crear una tabla con ejemplos, descripción y rangos que explican todas las unidades posibles.

Mira más tutoriales de MySQL aquí.

(más…)

Comprobar si es correo electrónico en Python

Ya vimos cómo validar un correo o email en JavaScript. Ahora hagamos lo mismo con Python, veamos una forma de saber si el usuario puso un correo válido.

De nuevo lo digo, aunque el correo parezca válido, no lo sabremos hasta que lo comprobemos enviando un mensaje con un token o algo similar; pero bueno, el punto es ver si un correo es válido según su forma como cadena.

Al final, un usuario podría poner uno que sea temporal, o que sea falso, por lo que no importa mucho la validación, sino la comprobación de la existencia.

(más…)

Eliminar duplicados de un arreglo en JavaScript

Eliminar elementos duplicados de arreglos en JavaScript

En este post veremos cómo eliminar elementos repetidos o duplicados de un arreglo en JavaScript. Para esto, no nos limitaremos a arreglos con tipos de datos simples; sino también arreglos de objetos.

Eliminar duplicados de un arreglo en JavaScript

Eliminar duplicados de un arreglo en JavaScript

Explicado de otra forma, lo que haremos será:

  • Ver cómo eliminar datos primitivos (cadena, entero, booleano, etcétera) repetidos de arreglos en JavaScript
  • Eliminar objetos repetidos, ya sea basados en una propiedad o comparándolos en profundidad.

Vamos allá.

(más…)

Buscar índice de un elemento en arreglo de JavaScript

Buscar índice o posición de elemento en arreglo de JavaScript

El índice de un elemento en un arreglo es importante cuando realizamos búsquedas o comprobamos si determinado valor existe en un arreglo. Hoy veremos dos maneras de buscar la posición de un elemento en un arreglo de JavaScript.

Como primer ejemplo veremos el uso de indexOf, que busca datos en arreglos con tipos de datos que no son objetos.

Buscar índice de un elemento en arreglo de JavaScript

Buscar índice de un elemento en arreglo de JavaScript

En segundo lugar, veremos una nueva versión llamada findIndex que nos permite definir una función que será la que busque a partir de un criterio, algo así como un indexOf mejorado. Esto sirve muy bien cuando queremos buscar dentro de un arreglo de objetos o cuando queremos que se cumpla cierto criterio de búsqueda.

(más…)

Servir fuera de la carpeta raíz

Servidor web completo en Go

Vamos a ver cómo crear un servidor web en el lenguaje de programación Go, también conocido como Golang. Lo que haremos será crear un servidor simple que responderá a peticiones GET, es decir, a las direcciones URL y que servirá archivos.

Explicado de otra manera, nuestro server hará esto:

  • Responder a peticiones dependiendo de la URL
  • Leer parámetros que pasamos por la URL
  • Servir un directorio y archivos, por ejemplo HTML, imágenes, vídeos, etcétera; algo así como lo hace el buen Apache o el servidor en Python.

No necesitaremos librerías extras ni frameworks, pues el maravilloso lenguaje provee todo lo que necesitamos.

Por cierto, si no lo tienes, mira cómo instalar Go en Windows.

Este tutorial es completo, explicaré a detalle cada cosa, te aseguro que aunque es un poco largo te enseñará lo robusto que es el lenguaje Go en cuanto a la web.

(más…)

Narcisista en C

Número narcisista en C

Después de algún tiempo de haber publicado el algoritmo para saber si un número es narcisista en varios lenguajes de programación es hora de implementarlo en el lenguaje C.

No podemos usar el código de C++ porque C++ no es compatible con C; aunque al revés sí se puede. Es decir, podemos usar código de C en CPP pero no podemos usar código de CPP en C.

Narcisista en C

Narcisista en C

En fin, veremos cómo implementar el algoritmo para determinar si un número es narcisista en C.

(más…)