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
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
Tenia un archivo de +500mb de texto ( un sql para ser exacto ) , y quería eliminar 4 millones de lineas, para ser exacto entre la 80.079 y la 4.130.924 de los más de 10 millones que tenia el archivo.
Al intentar abrir el archivo con programas como Visual Studio Code o Sublime text ( trabajando en MAC ) , tardaba mas de 2 minutos en abrir el fichero y luego era inviable intentar seleccionar con el ratón todas las lineas para eliminar.
El terminal llega al rescate, utilizando la herramienta “sed” en menos de 10 segundos el fichero baja hasta los 288mb
Al final con un par de pasadas el fichero termina con menos de 60mb
Para capturar trazas de Android lo primero es tener instaladas las herramientas platform-tools que vienen con el sdk
Abrimos un terminal y con el telefono conectado ( y habilitadas las herramientas de desarrollador ) para permitir la depuracion miramos si aparece el dispositivo conectado:
adb devices
Para empezar a capturar trazas: adb logcat
Si queremos filtrar para que solo nos aparezcan los de un paquete
Para añadir al lado de la informacion del post, el numero de visitas que tiene ( tal y como se hace en este blog ) hay que modificar el fichero content.php
Estamos trabajando para rellenar y guardar un formulario y queremos ver si todos los valores persiten en bbdd y se recuperan correctamente.
Para ellos abrimos la consola del navegador:
Y ejecutamos el siguiente código:
var i=1;$('input[type=text]').each(function(){ $(this).val(i);i++;})
Así no tenemos que ir campo por campo rellenandolo.
Para marcar el segundo elemento de todos los select:
De cara a optimizar el código tengo un fichero con varias funciones js, que las utilizo en varias paginas, pero quiero poder variar algún comportamiento para la misma acción en distintas paginas, por lo que para evitar tener que pasar algún parámetro o duplicar funciones voy a utilizar eventos.
Así en la función del fichero js lanzo el evento:
function guardarx(){
//guardo con ajax...
.ajax(....
// Creo el evento
var event = new CustomEvent("evento-guardar-x", { "Parametro": "Valor" });
//Lanzo el evento
document.dispatchEvent(event);
}
Y luego en cada una de las paginas que utilizan el js puedo añadir un listener si deseo añadir funcionalidad especial.
Realmente es un recopilatorio de distintas paginas para poder configurar una raspberry como servidor ssh ( en casa ) para utilizarlo como proxy en las conexiones desde lugares públicos y evitar problemas de filtrado de paginas: