Crear Consultas de la base de datos caché

Laravel simplifica bastante, el acto de limitar las consultas repetidas a la base de datos, poniendo a nuestra disposición llamadas al  método que maneja la  caché.

Pongamos como ejemplo que tenemos una tabla ‘consultas’, que se actualiza poco y a la cual necesitamos acceder, muchas veces, para incorporar sus datos en algún analisis.

Lo que nos permite Laravel es almacenar estas consultas en cache  durante  un tiempo, ene nuestro ejemplo colocamos  60 minutos y acceder a ellas mediante el uso de remember, sin tocar la BD

$consultas = Consulta::remember(60)->get();

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

Subir montañas hermana hombres……..

El uso de update

El método update es el encargado de retornar las columnas afectadas por un acción, veámoslo debajo

$cantidad = $casas->whereNull('categoria_id')->update(['categoria_id' => 2]);

Aquí update nos devuelve el número de registros o filas donde se cumple el planteamiento, asignar el valor 2 a aquellas casas donde categoría_id es null

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

….Un sueño es más que todo  y casi nada……

Ejemplos de uso del pattern

El pattern ofrece un control primario de los campos input de un formulario, y puede ser complementado con el uso de seudo elementos css y funciones js.

Cadena obligatoria variada.

Puede contener letras mayúsculas, minúsculas, números y los caracteres !?-   ,  y un  tamaño  entre 8 y 12 caracteres.

pattern="[A-Za-z0-9!?-]{8,12}" required

cadena obligatoria  de letras minúsculas, con un número opcionalmente de hasta dos dígitos al final. La cadena completa tendrá entre 5 y 12 caracteres

pattern="^([a-z]+[0-9]{0,2}){5,12}$" required

 Cadena compleja para email

pattern="^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" required/

Cadena  para admitir  nombres de cualquier nacionalidad:

Incluye nombres compuestos y la mayoría de normas de acentuación. El número de caracteres será como mínimo 3 y como máximo 32. 

[a-zA-ZàáâäãåąčćęèéêëėįìíîïłńòóôöõøùúûüųūÿýżźñçčšžÀÁÂÄÃÅĄĆČĖĘÈÉÊËÌÍÎÏĮŁŃÒÓÔÖÕØÙÚÛÜŲŪŸÝŻŹÑßÇŒÆČŠŽ∂ð ,.'-]{2,32}

El usuario solo podrá meter una palabra de 4 a 16 caracteres entre la con las letras de A-Z y a-z

pattern=»[A-Za-z]{4-16}

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

…subir montañas hermana hombres…

Trabajar en remoto con Git

Git,  es como casi todo el que se mueve en el mundo de la programación sabe, un gestor de versiones, y una de sus características más potentes, es que permite la participación de diferentes integrantes de un equipo en el desarrollo, a través del uso de branchs(ramas),  lo que enriquece enormemente las potencialidades de la colaboración.

Este es aún más interesante y útil si trabajamos con  repositorios,   hospedados en la red de internet u otra cualquiera de acceso remoto. 

Los comandos que muestro hoy son para eso, o sea los que utiliza Git para conectar y trabajar con repositorios remotos.

Ya que podemos tener tantos repositorios remotos como deseemos,  podremos tener tantas versiones de nuestro código como consideremos necesario, para lo cual vamos a precisar de un flujo de información flúido, sobre todo si vamos a interactuar con varios compañeros.

Aquí algunos de los  comandos:

git remote 

Muestra los nombres de los remotos que posees vinculados, o qué tienes especificado en git.

$ git remote -v

Devuelve  las URLs que Git ha asociado al repositorio remoto. Son las que usará para interactuar con él.  

git clone

Clona un repositorio en la dirección que le des: la sintáxis es:

git clone https://github.com/tu repositorio destino

Si luego de clonar, llamas al comando  remote, debe mostrar como mínimo el repositorio del que ha clonado, y lo hará nombrará origin

git remote add [nombre] [url]:

Añade un repositorio remoto

  git fetch [remote-name] 

Devuelve los datos de tus proyectos remotos.

Este comando, trae al nuestro, los datos de los proyectos alojados en los repositorios remotos, por lo que a partir de ese momento dispondremos de  referencias a todas las ramas de ese remoto, con la posibilidad de poder inspeccionarlas o combinarlas

git fetch origin

En este caso por ejemplo, nos trae todo el trabajo nuevo que ha sido enviado a ese servidor desde que lo clonamos, o desde la última vez que trajimos datos de el.

Es importante destacar que el comando git fetch solo trae datos a nuestro, repositorio local, pero no lo combina automáticamente con el proyecto que estamos desarrollando, ni tampoco actualiza lo que tengamos ya creado.

La combinación debe hacerse de mod manual.

aj https://github.com/Antonio_J/test (fetch)
aj https://github.com/antonio_J/test (push)

Con este comando asignamos el alias aj a este repositorio, y ya podemos usar ese nombre para  enviar o traer datos en función de los permisos que tengamos.

Entonces para traer la información que tiene Antonio, podríamos hacer esto sencillamente:

$ git fetch aj

 Esto nos dara al final algo como esto

* [new branch]      master     -> aj/master
* [newbranch]      test    -> aj/test

Ahora podemos acceder localmente a la rama maestra de Antonio,   con el nombre aj/master, de igual modo, esta queda disponible para que podamos combinarla con alguna rama nuestra o    inspeccionarla.

git push [nombre-remoto] [nombre-rama

Envía  un proyecto a un servidor. Si  por ejemplo lo que quieres  es enviar tu rama master a tu servidor origin, debes ejecutar:

$ git push origin master

Este comando funciona solo en servidores clonados sobre los que tenemos permisos de escritura.

Una cuestión importante, es que funciona solo si nadie con los mismos  permisos  ha enviado datos entretanto.

Si un compañero clona el mismo repositorio y envía información antes que nosotros, no podremos enviar porque será rechazado.

La solucion más fácil  a esto, es hacer un fetch al compañero para bajar su código, combinarlo con el que tenemos y entonces hacer el push al servidor.  

git remote show [nombre-remoto]

Nos devuelve información sobre un servidor remoto especifico.

git remote show:

Nos da información sobre todos los servidores remotos y sus proyectos

Entre la información que nos brinda, nos dirá a cuál rama estamos enviando la información cuando ejecutamos  git push, también nos dice cualés ramas remotas aún no tenemos,  las  que serán combinadas si ejecutamos ejecutes git pull, y las que  han sido eliminadas del servidor.

git remote rename.

Modifica  el nombre de la referencia de un remoto, con la sintaxis :

git remote rename aj antonio

Hemos renombrado el remoto aj como antonio

git remote rm aj

Elimina un remoto

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

…., si avanzo sígueme, si me detengo empújame, si retrocedo mátame…….

Ordenando por tipo de relaciones

Un modo de ordenar los resultados por relaciones, es también obteniendo por ejemplo el ultimo registro añadido, digamos que tenemos un modelo Pedido, relacionado con el modelo Cliente y queremos que nos muestre en la vista los pedidos colocando encima el ultimo.   

Lo primero seria describir la relación entre ambos dentro de la clase Cola

public function lastestPedido()
{
    return $this->hasOne(\App\Pedido::class)->latest();
}

En el controlador  creamos una variable que en su interior tomará los  pedidos según clientes ordenados de forma descendente, según fecha de creación.

$clientes= Cola::with('latestPedido')->get()->sortByDesc('latestPedido.created_at');

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

Subir montañas hermana hombres……

Usando hashlib en Python

Python nos ofrece multiples librerías con valor incalculable para todo el tema de criptografía, una de ellas la librería hashlib, que nos va a permitir trabajar con un tipo de encriptado conocido como SHA

Su nombre proviene del inglés, ( Secure Hash Algorithms ), y su labor consiste en crear estructuras seguras, mediante funciones de encriptado, que puedan ser utilizados por diferentes lenguajes de modo transversal.

Los algoritmos o funciones SHA con que trabaja haslib, son varios(‘sha256', 'sha384', 'sha224', 'sha512', 'sha1'), con diferentes tamaños de bloque

hashlib, posee dos funciones asociadas, que usaremos al aplicar las transformaciones:

  • encode() : Convierte las cadenas en bytes, para que la funcion hash pueda procesarla.
  • hexdigest() : Devuelve el dato codificado en formato hexadecimal.

Haremos una pequeña demostración de su uso:

Introduciremos un cadena  y la convertiremos a su equivalencia en bytes utilizando la funcion enconde(),  para que la funcion SHA  pueda manipularla, esta la codifica con hexdigest(), e imprimimos la cadena resultante

import hashlib 
import hashlib 
   
 # valor de entrada 
 str = "el comienzo de todo"
   
 result = hashlib.sha256(str.encode()) 
  
 # Imprimiendo el valor hexadecimal. 
 print("El resultado es: ") 
 print(result.hexdigest()) 
 print ("\r") 
  
 # salida: El resultado es: 
 9f78aef8f9e252913e43156c570568592f014cb0175d52a6071a5eed8959e183
    
   
 # valor de entrada 
 str = " el comienzo de todo "
  
 result = hashlib.MD5(str.encode()) 
   
 # Imprimiendo el valor hexadecimal. 
 print("El resultado es: ") 
 print(result.hexdigest())
 # salida: El resultado es: 3455ed58e2999e23fc7385207e4fb999 

Y listo esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

…. hay que levantarse cada mañana con una esperanza y dormirse cada noche con una meta….

Propiedad Background

La propiedad Background CSS Una propiedad usada a menudo en css es  background-image, que se encarga de mostrar la imagen de fondo de un elemento.

background asimila solo un valor y es uno de estos tres, URL, none o inherit, su valor inicial es none, y no se hereda

 La imagen que muestra se coloca en el area  que ocupan el contenido  del elemento  hasta copar todo, hasta el borde.

En el caso de que se importe una imagen se usa el patrón URL, que asimila lo mismo  URIs que URLs, ya sean  externas , internas,   relativas o absolutas, según el caso.

Para recoger la URL que conduce a la imagen el formato es  url(direccion), además permite que la dirección como tal se encierre entre comillas, ya sean estas dobles o sencillas

Veamos un ejemplo:

  
 div {
   background-image: url(http://www.mipaginadeimagenes.net/banco/css/imagenes/logo.png);
 }
  
 h2, h3, h4, h5 {
   background-image: url("imagenes/retrato.png");
 }
  
 h2, h3, h4, h5{
   background-image: url('../imagenes/arte.gif');
 } 

Distribucion:

Cuando la imagen de fondo es más grande que el area donde queremos mostrarla, se vera solo la parte que va desde  esquina superior izquierda  a su opuesto y lo hara justo en la esquina superior izquierda del espacio que ocupa el elemento que recibe la imagen:

Si sucede al revés y la imagen es más pequeña que el espacio reservado para ella, el navegador la repetirá,  en todas las direcciones hasta cubrir completamente el espacio del elemento.

Para ayudar a resolver estos dentro de background existen diferentes opciones como   background-repeat,  que permitirá que la imagen se repita o no, background-attachment, permite que se mantenga fija en un su posición o se desplace cuando se mueve el cursor y   background-position, que brinda la posibilidad de modificar la posición por defecto e la imagen

La propiedad Background puede usarse simultáneamente en un area, por ejemplo un div junto a un color de fondo, por  eso es común ver background-image y background-color en un mismo espacio o elemento. En estos casos la imagen tiene prioridad, y el color de fondo solo será visible en aquellas areas de la imagen que sean transparentes por ejemplo al usar imágenes en formato png o en aquellas zonas que no estén cubiertas por la imagen

Usar ambas es una buena práctica, porque permite tener desde el primer momento algo que cubra el elemento. Considerando que puede haber demora en cargar la URL, o un fallo, que exista un color de fondo con una apariencia parecida a la imagen (si fuera posible),  mejorar la experiencia.

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

…., si avanzo sígueme, si me detengo empújame, si retrocedo mátame…….

Relaciones con condicionales y ordenadas

La forma típica en que definimos una relación en Laravel es la siguiente:

public function camiones() {
    return $this->hasMany('App\Camione');    
}

Sin embargo esto podemos enriquecerlo si deseamos obtener esa relación ordenada según algún criterio.

En el código siguiente lo ordeno por capacidad de carga.

public function contratoCamiones() {
    return $this->hasMany('App\Camiones')->where('contrato', 1)->orderBy('capacidad');
}

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

Subir montañas hermana hombres……