viernes, 31 de mayo de 2019

Cómo insertar más de un registro en una sola consulta con MySQL

Normalmente para crear un nuevo registro en una base de datos de MySQL la consulta que se aplica es la siguiente:

Sabemos que, la sintaxis para eliminar un registro de la base de datos es la siguiente:

INSERT INTO `MiTabla` (`id`, `Columna_1`, `Columna_2`, `Columna_N`) VALUES (Valor_1, 'Valor_2', 'Valor_3', 'valor_N');

Pero ahora ¿cómo hacerle para insertar varios registros de una sola vez en MySQL?

La consulta ahora se extiende como sigue:

INSERT INTO `MiTabla` (`id`, `Columna_1`, `Columna_2`, `Columna_N`) VALUES (Valor_1, 'Valor_2', 'Valor_3', 'valor_N'), (Valor_1, 'Valor_2', 'Valor_3', 'valor_N'),('...','y','así','sucesivamente');

Saludos

miércoles, 29 de mayo de 2019

Cómo eliminar varios registros al mismo tiempo con MySQL

Sabemos que, la sintaxis para eliminar un registro de la base de datos es la siguiente:

DELETE FROM NombreDeLaTabla WHERE id = 66;
En donde el 66, es un mero ejemplo del ID que en realidad vas a borrar.

Seguramente sucede que quieres borrar varios registros específicos. Para poder borrar varios registros a la vez en MySQL, lo que debes hacer es, cambiar el operador "=" por la sentencia IN:
DELETE FROM NombreDeLaTabla WHERE id IN (1,2,3,...,254);

martes, 28 de mayo de 2019

Laravel blade: cómo inicializar una variable

Por alguna razón, dentro de tu motor de plantillas Blade de Laravel, requieres inicializar y actualizar algún valor de la nueva variable creada.

Para poder inicializar una variable dentro de blade lo que tienes que hacer es lo siguiente:
@php
$miVariableNueva = 0;
@endphp
Saludos.

Referencias
https://www.quora.com/How-can-I-set-a-variable-inside-Laravels-blade-template

lunes, 27 de mayo de 2019

Laravel Homestead Maximum execution time of 30 seconds exceeded [Solucionado]

Me ha pasado que, por alguna razón un script de PHP en Laravel Homestead debe ejecutarse por unos minutos y me sale ese error:
Laravel Homestead Maximum execution time of 30 seconds exceeded
Laravel Homestead Maximum execution time of 30 seconds exceeded

domingo, 26 de mayo de 2019

Cómo obtener el id del Usuario autentificado en Laravel

En diversas ocasiones necesitamos obtener el ID del usuario que está autentificado, por ejemplo, para los casos en los que se desea almacenar el 'user_id' en la BD o para guardar parámetros relacionados con el $user en las sesiones.

Típicamente la manera de hacerlo es la siguiente:
use Illuminate\Support\Facades\Auth;
//...
// Primero obtenemos la información del usuario que está autentificado...
$user = Auth::user();
// Para obtener el ID:
$user->id;
Pero existe una manera todavía más simplificada:
use Illuminate\Support\Facades\Auth;
//...
// Simplemente obtener el ID de usuario que está autentificado...
$id = Auth::id();

Nota

Hay que asegurarse de que, en la parte superior de nuestro archivo php, esté incluido también la inclusión del Facade Auth:
use Illuminate\Support\Facades\Auth;
Saludos.

Referencias

Cómo verificar si un usuario es invitado o guest en Laravel Blade

Verificar si un usuario es un invitado corresponde a la forma inversa de verificar si un usuario está autentificado o no.

Desde este punto, el programador busca mostrar cierto contenido o elementos de un menú para cuando un usuario no está autentificado.

En Laravel Blade existen directivas que nos facilitan varias tareas.

Una primera forma es verificar directamente si el usuario es invitado:
    @if(auth()->guest())
        // El usuario no está autentificado.
    @endif
De la misma manera, esto se puede verificar de manera más sencilla:
    @guest
        // El usuario no está autentificado.
    @endguest
Además, se puede utilizar las directivas a manera if-else:
    @guest
        // Sección para usuarios que no tienen cuenta.
    @else
        // Sección para usuarios registrados y que ya iniciaron sesión de su cuenta.
    @endguest

Saludos.

Referencias

https://laravel-news.com/five-useful-laravel-blade-directives

Cómo verificar si un usuario está autentificado o no en Laravel Blade

Siempre es útil conocer qué directiva de blade nos puede simplificar la tarea de verificar si el usuario ya ha iniciado sesión o no.

Un ejemplo que me viene a la mente es desplegar el menú con ciertos elementos cuando un usuario ya ha iniciado sesión u ocultar dichos elementos cuando el usuario ha cerrado sesión o no está autentificado.

Una primera solución, es verificar si la variable $user es nula o no:
     @if(auth()->user())
       // El usuario ya ha iniciado sesión. Mostrar aquí el contenido correspondiente.
     @endif
La mejor solución es
    @auth
       // El usuario ya ha iniciado sesión. Mostrar aquí el contenido correspondiente.
    @endauth
Saludos.

Referencias

viernes, 24 de mayo de 2019

Programar autorecuperación o auto arranque de MariaDB cuando el servicio ha sido detenido o matado en CentOS 7

Ha sucedido en ocasiones que, en CentOS, el servicio de MariaDB es detenido (killed) por otro proceso (pendiente de mencionar aquí), cuando hay escasez de recursos de CPU o el servidor tiene una sobrecarga y lo primero que hace es matar a un proceso, en este caso, el de MariaDB.

Requisitos

Tener acceso root.

jueves, 23 de mayo de 2019

wp theme list: Error: This does not seem to be a WordPress installation.

Si estás intentando listar los temas o themes de Wordpress con WPCLI y te encuentras con el siguiente error:

Error: This does not seem to be a WordPress installation.

Pass --path=`path/to/wordpress` or run `wp core download`.

Lo que pasa es que: o no estás en el directorio raíz de tu sitio wordpress o te ha faltado especificar la ruta de dicho directorio.

Es decir, puedes ejecutar:

$ wp theme list --path=/var/www/webservertutorials.icu/public_html/

Saludos 🍸.

laravel storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied

Cuando sale este error, significa que hay que configurar los permisos pertinentes de las carpetas correspondientes en el servidor.

Lo que debes hacer es posicionarte en la carpeta raíz de tu proyecto y aplicar los siguientes comandos (probablemente requieras de privilegios de root, por lo que usaremos "sudo")

Primero, establecer el dueño de los archivos o las carpetas, para ello puedes listarlo con

$ ls -lah

miércoles, 22 de mayo de 2019

Laravel Blade: cómo mostrar el año actual en el que estamos

Hay ocasiones en que necesitas desplegar el año actual en la vista utilizando Laravel Blade.

Un ejemplo que se me viene a la mente es la de mostrar un texto de derechos reservados en la sección del footer o pie de página, como por ejemplo:

© 2019 Mi Organización. Todos los derechos reservados.

Entonces, con Laravel Blade lo despliegas de la siguiente manera:

{{ now()->year }}


{{ now()->year }}

También puede ser:

{{ date('Y') }}

Es todo. Saludos.

martes, 21 de mayo de 2019

¿Cómo salir del editor VIM sin guardar los cambios?

Para salir del editor y no guardar los cambios, lo que tienes que hacer es lo siguiente:

Presionar la tecla "ESC",

luego presionas la tecla "q" y el signo de admiración y luego "enter",

es decir:

q!


Saludos

¿cómo programar correos electrónicos o email para que se envíen a una hora y fecha especificada con Gmail?

Programar envío de correos.

El botón de "enviar" tiene un submenú o flechita hacia abajo que, al pusarla, muestra la opción de "programar envío"

viernes, 17 de mayo de 2019

Mariadb falla al arrancar después de modificar la variable innodb_log_file_size en my.cnf

Resulta que, después de seguir las recomendaciones del software "mysqltuner" en CentOS 7, procedí a modificar el archivo /etc/my.cnf en donde coloqué la siguiente variable, justo al final de la sección de [mysqld]


#innodb_log_file_size = 16M


Entonces, al reiniciar

$ sudo systemctl mariadb restart

Me da el siguiente error:


Job for mariadb.service failed because the control process exited with error code. See "systemctl status mariadb.service" and "journalctl -xe" for details.

La solución en mi caso es:

jueves, 16 de mayo de 2019

Digital Ocean - cómo cambiar el dominio para que apunte a otro droplet

Me he encontrado en la situación en la que tengo un dominio que apunta a un droplet con una dirección IP específica y ahora quiero que ese dominio apunte a otro droplet.

Parece que la tarea es sencilla.

martes, 14 de mayo de 2019

Laravel Homestead Nginx 502 Bad Gateway - posible solución

Te encuentras una vez, como cualquier otro día, iniciando tu servidor local con

$ vagrant up

Tu servidor arranca aparentemente con normalidad, accedes a tu proyecto Laravel

http://laravel-app.local:8000

Y resulta que te topas con el siguiente error

502 - Bad Gateway  Nginx

A mí esto me ha pasado con cierta frecuencia. Por lo que la solución provisional que me ha funcionado es simplemente reiniciar el servidor:

$ vagrant reload

Intento de nuevo abrir mi app y ya funciona todo con normalidad.

sábado, 11 de mayo de 2019

MacOS 💻 no se puede cambiar el nivel del brillo del teclado

Teclado con brillo en la MacOS 💻
Si de repente necesitas modificar el brillo del teclado de la mac y resulta que no se puede y te sale el siguiente símbolo del brillo prohibido,

Cómo agregar un repositorio con código ya existente a un repositorio nuevo en bitbucket

Digamos que ya creaste un proyecto, una aplicación Laravel php u otra cosa que deseas pasarlo a control de versiones con Git en Bitbucket.

Entonces, primero ve a tu cuenta de Bitbucket y haz clic sobre el símbolo de + "create"
Bitbucket, creando un nuevo repositorio

Laravel Homestead The following SSH command responded with a non-zero exit status.


Después  de simplemente actualizar mi Laravel homestead en Mac 💻 me aparecieron varios errores al intentar hacer 
$ vagrant up
--------------------------------------------------------------------------------

viernes, 10 de mayo de 2019

Comprar dominio de Internet barato y direccionarlo a Digital Ocean

Voy a mostrarles brevemente dónde adquirir dominios de Internet a bajo precio y colocarlos en una página web para su visualización utilizando Digital Ocean.

Namecheap

En este caso vamos a utilizar una (de tantas) empresa que se dedica al registro de dominios, la cual se llama Namecheap.

En namecheap.com se pueden comprar dominios de Internet a muy bajo precio

ssh WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! [cómo solucionar]


Estás intentando conectarte a tu servidor por medio de SSH y resulta que te salen los siguientes mensajes de error:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is

Add correct host key in /var/root/.ssh/known_hosts to get rid of this message.

Offending ECDSA key in /var/root/.ssh/known_hosts:7
ECDSA host key for xxx.xxx.xxx.xxx has changed and you have requested strict checking.
Host key verification failed.

Lo que debes hacer es, dependiendo lo que te diga el mensaje de error, respecto a la localización del archivo, es editar el archivo /.ssh/known_hosts

En mi caso (de acuerdo a lo que especifica el mensaje de error), el archivo se encuentra en:

$ sudo nano /var/root/.ssh/known_hosts

Dentro de ese archivo, localiza la IP a la que te quieras conectar, ponte en esa línea con el cursor. Ahora lo que debes hacer es borrar esa línea. Para ello, lo puedes hacer rápidamente con el juego de teclas "ctrl + k". Guardas los cambios con "ctrl + o" , le dices que sí, y cierras con "ctrl + x".

Ahora, intentas conectarte de nuevo a esa IP o dominio vía SSH y te va a salir el siguiente mensaje:

The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
ECDSA key fingerprint is SHA256:U4mcWdRqeuheehjgQm8H6434ejbynpqDjZ/tGflOs.

Are you sure you want to continue connecting (yes/no)?

Por lo que respondes que sí, con "yes" y enter.

Listo, ya debes poder conectarte de nuevo con normalidad! 😎

miércoles, 8 de mayo de 2019

Cómo saber cuál es la versión de Laravel

Para conocer la versión de Laravel que estás utilizando en tu aplicación, puedes aplicar el siguiente comando.

$ php artisan --version

Cabe destacar que ese comando debes ejecutarlo en dentro de la carpeta raíz de tu aplicación, ya que de otra manera, es probable que te salga el siguiente error:

php artisan --version could not open input file

Referencias:



martes, 7 de mayo de 2019

Cómo calcular la edad a partir de la CURP (México)

Cabe destacar que, momentáneamente, esta serie de funciones ayudarán a calcular la edad para aquellos nacidos antes del año 2000. Ya que a partir de ese año, en esa parte de la CURP se les asigna letras en vez de números. Este punto lo dejaré como pendiente.

Mientras tanto, pondré una serie de código con varias funciones que ayudarán a calcular la edad a partir de la CURP.

function validate_curp($valor) {     
     if(strlen($valor)==18){         
        $letras     = substr($valor, 0, 4);
        $numeros    = substr($valor, 4, 6);         
        $sexo       = substr($valor, 10, 1);
        $mxState    = substr($valor, 11, 2); 
        $letras2    = substr($valor, 13, 3); 
        $homoclave  = substr($valor, 16, 2);
          if(ctype_alpha($letras) && ctype_alpha($letras2) && ctype_digit($numeros) && ctype_digit($homoclave) && is_mx_state($mxState) && is_sexo_curp($sexo)){ 
            return true; 
        }         
    return false;
     }else{
         return false; 
    } 
}

function is_mx_state($state){     
    $mxStates = [         
        'AS','BS','CL','CS','DF','GT',         
        'HG','MC','MS','NL','PL','QR',         
        'SL','TC','TL','YN','NE','BC',         
        'CC','CM','CH','DG','GR','JC',         
        'MN','NT','OC','QT','SP','SR',         
        'TS','VZ','ZS'    
    ];     
    if(in_array(strtoupper($state),$mxStates)){         
        return true;     
    }     
    return false; 
}

function is_sexo_curp($sexo){     
    $sexoCurp = ['H','M'];     
    if(in_array(strtoupper($sexo),$sexoCurp)){         
       return true;     
    }     
    return false; 
}

function fecha_de_nacimiento_desde_curp($la_curp){
    //primero validamos la curp
    if(validate_curp($la_curp)){
        $numeros    = substr($la_curp, 4, 6); 
        $anio=substr($la_curp,4,2);
        $mes=substr($la_curp,6,2);
        $dia=substr($la_curp,8,2);
        $fecha_de_nacimiento = $dia."-".$mes."-19".$anio;
        
        return calcula_edad($fecha_de_nacimiento);
    }else{
        return null;
    }
}

$la_curp = 'BADD760313HCMLNS09';
//Validar la Curp
if(validate_curp($la_curp)){
 echo '

La CURP '.$la_curp.' es válida

'; }else{ echo '

La CURP '.$la_curp.' es inválida

'; } function calcula_edad($fecha_de_nacimiento){ $hoy = date("Y-m-d"); $diff = date_diff(date_create($fecha_de_nacimiento), date_create($hoy)); return $diff->format('%y'); } $fecha_de_nacimiento = "30-08-1984"; //dd-mm-aaaa $hoy = date("Y-m-d"); $diff = date_diff(date_create($fecha_de_nacimiento), date_create($hoy)); echo 'La edad es '.$diff->format('%y'); echo '
Ahora calculando la edad para '.$la_curp; $edad_curp = fecha_de_nacimiento_desde_curp($la_curp); echo "
La edad desde la curp es $edad_curp"; ?>
Este código lo puedes probar en intérpretes en línea, tales como phpfiddle.org.
Saludos.

miércoles, 1 de mayo de 2019

Cómo calcular la edad a partir de la fecha de nacimiento con PHP


La forma más simple para calcular la edad con PHP es la siguiente:
$fecha_de_nacimiento = "30-08-1984"; //dd-mm-aaaa
$hoy = date("Y-m-d");
$diff = date_diff(date_create($fecha_de_nacimiento), date_create($hoy));
echo 'La edad es '.$diff->format('%y');

Puedes probar este código al instante en tohtml.com.

Asimismo, si utilizas la librería Carbon, la edad se puede calcular como sigue:
$edad = Carbon::createFromDate(1975, 5, 21)->age;

echo 'La edad es '.$edad;
Queda pendiente demostrar esto en línea, cuando el sitio http://phpio.net/tools/carbon vuelva a estar disponible.

Referencias

https://www.codexworld.com/how-to/calculate-age-from-date-of-birth-php/

Quizás también te interese



Adicionalmente,


 

Tags