mostrar cuantos archivos contiene una carpeta y su tamaño

Script en bash para indicar cuantos archivos tiene una carpeta y lo que ocupa en total a partir de un directorio inicial

#!/bin/bash
dirinicial=${1:-"."}
for ((i=0; i<=15; i++)); do
    echo ""
done
echo "directorio inicial: $dirinicial"
echo "------------------------------------"
find "$dirinicial" -type d -maxdepth 1  -print0 | while IFS= read -r -d $'\0' fileName ; do {
   echo "directorio: $fileName"
   find  "$fileName" -type f | wc -l
   du -h -d 0 "$fileName"

   echo "____________________"
};
done;
unset fileName;

dando como resultado:

Autoajuste ancho columnas excel

Para no tener que cambiar el ancho de las columnas en Excel:

Pulsamos con el botón derecho del ratón sobre la hoja y elegimos “Ver código”

Elegimos worksheet en el desplegable:

Y escribimos el código:
Cells.EntireColumn.AutoFit

Y cerramos la ventana de Visual Basic.
Ahora las columnas se ajustan solas al contenido:

reducir todas las imagenes de un directorio a la mitad si son mayores de 999px

si tenemos un directorio que contiene imágenes y queremos reducir su tamaño, podemos utilizar un script desde un cron que recorre todas las imágenes, comprueba su tamaño y si es mayor del esperado lo reduce a la mitad

<?php



function createthumb($name,$filename,$new_w,$new_h){
	$system=explode('.',$name);
	$numparam=count($system);
	$tipo="";
	if (preg_match('/jpg|jpeg/',$system[$numparam-1])){
		$src_img=imagecreatefromjpeg($name);
		$tipo="jpg";
	}
	if (preg_match('/png/',$system[$numparam-1])){
		$src_img=imagecreatefrompng($name);
		$tipo="png";
	}
	if ($tipo!=""){
		$old_x=imageSX($src_img);
		$old_y=imageSY($src_img);
		if ($old_x > $old_y) {
			$thumb_w=$new_w;
			$thumb_h=$old_y*($new_h/$old_x);
		}
		if ($old_x < $old_y) {
			$thumb_w=$old_x*($new_w/$old_y);
			$thumb_h=$new_h;
		}
		if ($old_x == $old_y) {
			$thumb_w=$new_w;
			$thumb_h=$new_h;
		}
		$dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
			
		if ($tipo=="png")
		{
			imagealphablending($dst_img, false);
			imagesavealpha($dst_img, true);
			imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); 
			imagepng($dst_img,$filename); 
		} else {
			imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); 
			imagejpeg($dst_img,$filename); 
		}
		imagedestroy($dst_img); 
		imagedestroy($src_img); 
		return $filename;
	}else{
		return null;
	}
}



$directorio = '.';
$ficheros1  = scandir($directorio);

$imagenes=0;
$contador=0;
foreach ($ficheros1 as $key => $value){
      if (!in_array($value,array(".",".."))){
         if (is_dir($directorio . DIRECTORY_SEPARATOR . $value)){
           //no hacer nada
         }else{
            $imagenes++;
            $gis=@getimagesize($value);
            list($width, $height, $type, $attr) = $gis;
            
            if ($width>=1000 || $height>=1000){
                print_r($value);
                echo " ".$width."x".$height;
               echo " hay que redimensionar";
               $filename="".$value;
               $new_w=(int)($width/2);
               $new_h=(int)($height/2);
               createthumb($value,$filename,$new_w,$new_h);
               $contador++;
               echo "
"; } // esto solo si hay problemas de timeout //if ($contador==500){break;} } } } echo "Se han convertido $contador de $imagenes imagenes"; ?>

Se podria mejorar buscando imagenes en lugar de recorrer todos los archivos, pero queda para otro momento

poner un enlace a un chat de whatsapp

Se puede poner un enlace para que nos abra el whatsapp con la conversación abierta y un texto ya cargado:

https://web.whatsapp.com/send?phone=34xxxxxxxxx&text=Hola%20me%20gustaria%20escribirte%20algo

es importante fijarse en el prefijo del teléfono y que los espacios tienen que ir escapados con %20

Destacar texto sobre imagen con css

Si ponemos un texto sobre una imagen nos arriesgamos a que en función del color del texto y los tonos de la imagen no se lea bien:

Podemos añadir sombra al texto para que destaque más:

color:white;
text-shadow: 2px 2px black;

Y por ultimo podemos aprovechar y poner mas de una sombra para formar un borde por todos los lados:

color:black;
text-shadow: 2px 0 #ffffff, -2px 0 #fff, 0 2px #fff, 0 -2px #fff, 1px 1px #fff, -1px -1px #fff, 1px -1px #fff, -1px 1px #fff;

 

actualizar campo fecha con hora en mysql

Si tenemos en una tabla un campo para fecha y otro para hora:

y cambiamos el tipo de fecha de date a datetime todas las horas se quedan como 00:00:00

actualizamos el valor con la sentencia;:

UPDATE tabla
SET fecha = CONCAT_WS(‘ ‘,date(fecha),hora)

Y nos queda en un solo campo la fecha con la hora

 

utilizar excel para sumar notas de varios examenes en una hoja (BUSCARV)

Normalmente las oposiciones vuelcan las notas en un pdf, pasamos los datos a un ficheros de texto

y separamos las columnas mediante algún delimitador como ;


abrimos el excel e importamos los datos

Indicando que el delimitador es:

Una vez que tenemos los 2 ficheros de texto vamos a juntar las notas:

 

sobre el primer fichero pegamos los datos de la segunda tabla

Y utilizamos la funcion BUSCARV

poniendo como parametros, la celda a buscar, el rango donde va a buscar ( utilizamos $ para bloquear las filas), la columna, que dentro del rango es la 3 y falso para que la busqueda sea exacta.

Una vez la hemos puesto, la arrastramos sobre todas las filas de la columna y tenemos juntas las 2 notas en un solo fichero

ahora solo nos quedaria quitar los alumnos que no han aprobado el segundo examen y sumar las dos notas

Hay que tener en cuenta que son formulas y si queremos quitar los datos auxiliares desaparecen los datos calculados por lo que se recomienda añadir una columna al lado de la calculada y pegar “solo los valores” para poder posteriormente eliminar la columna calculada

Y nos queda la hoja terminada

actualizar campo tabla mysql por orden de otra columna

Si despues de tener una tabla queremos añadir una columna para indicar un orden, podemos actualizarla tabla usando update con inner join

UPDATE
tabla YT
INNER JOIN
(SELECT
id,
@rowNumber := @rowNumber + 1 AS rn
FROM tabla , (SELECT @rowNumber := 0) var
where campofiltro=4
ORDER BY id ASC
) AS t
ON YT.id = t.id
SET YT.nuevacolumna = t.rn where campofiltro=4

Mostrar imagen de combinación en carrito de la tienda en Prestashop

Si tenemos una tienda con combinacion de productos, cada uno de ellos puede tener asociada una o mas imagenes

si elegimos una en concreto con combinacion, al añadir al carrito muestra la foto del producto por defecto

Para solucionarlo hay que cambiar un par de templates y añadir unas funciones a la clase producto.

en Product.php

public static function getProducImage($id_product_attribute,$id_product) { if (isset($id_product_attribute) && $id_product_attribute) { $id_image = Db::getInstance()->getValue(' SELECT `image_shop`.id_image FROM `'._DB_PREFIX_.'product_attribute_image` pai'. Shop::addSqlAssociation('image', 'pai', true).' LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_image` = pai.`id_image`) WHERE id_product_attribute = '.(int)$id_product_attribute. ' ORDER by i.position ASC'); } if (!isset($id_image) || !$id_image) { $id_image = Db::getInstance()->getValue(' SELECT `image_shop`.id_image FROM `'._DB_PREFIX_.'image` i'. Shop::addSqlAssociation('image', 'i', true, 'image_shop.cover=1').' WHERE i.id_product = '.(int)$id_product ); } return $id_image; } public static function getProducImageUrl($id_product_attribute,$id_product) { if (isset($id_product_attribute) && $id_product_attribute) { $id_image = Db::getInstance()->getValue(' SELECT `image_shop`.id_image FROM `'._DB_PREFIX_.'product_attribute_image` pai'. Shop::addSqlAssociation('image', 'pai', true).' LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_image` = pai.`id_image`) WHERE id_product_attribute = '.(int)$id_product_attribute. ' ORDER by i.position ASC'); } if ($id_image!=""){ $aux=str_split($id_image); $salida="img/p/"; foreach($aux as $n){ $salida.=$n."/"; } $salida.=$id_image.".jpg"; return $salida; }else{ return ""; } }

en templated/checkout/_partials/cart-detailed-product-line.tpl

 {assign var='attributoimageid' value=Product::getProducImage($product.id_product_attribute,$product->id)}
     {assign var='attributoimage' value=Product::getProducImageUrl($product.id_product_attribute,$product->id)}
      {if $attributoimage}
       
       
        
         
          <img src="{$attributoimage}" data-full-size-image-url="{$product.cover.large.url}" />
      {else}
          {if $product.cover}
              <img src="{$product.cover.bySize.cart_default.url}" alt="{$product.name|escape:'quotes'}">
            {else}
            <img src="{$urls.no_picture_image.bySize.cart_default.url}" />
          {/if}
      {/if}

En modules/ps_shoppingcart/ps_shoppingcart.tpl

{assign var='attributoimageid' value=Product::getProducImage($product.id_product_attribute,$product->id)}
                          {assign var='attributoimage' value=Product::getProducImageUrl($product.id_product_attribute,$product->id)}
                            {if $attributoimage}
                            
                                <img src="{$attributoimage}" style="max-width:90px" data-full-size-image-url="{$product.cover.large.url}" />
                            {else}
                                {if $product.cover}
                                    <img src="{$product.cover.bySize.cart_default.url}" alt="{$product.name|escape:'quotes'}">
                                  {else}
                                  <img src="{$urls.no_picture_image.bySize.cart_default.url}" />
                                {/if}
                            {/if}

Cookies en javascript

function setCookie(key, value, expirydays)

{

var expires = new Date(); expires.setTime(expires.getTime() + (expirydays * 24 * 60 * 60 * 1000)); document.cookie = key + ‘=’ + value + ‘;expires=’ + expires.toUTCString();

}
function getCookie(key) {

var keyValue = document.cookie.match(‘(^|;) ?’ + key + ‘=([^;]*)(;|$)’); return keyValue ? keyValue[2] : null;

}