Liberar espacio del servidor – tienda online Prestashop

logotipo prestashop

He estado optimizando imágenes y código para hacer que todo vaya más rápido y ocupe menos espacio. Pronto implementaré un blog en una tienda online que administro, pero me encuentro que la tienda está ocupando casi todo el espacio disponible. Después de borrar algunos archivos error.log de algunos módulos (sobre todo módulos de formas de pago), el espacio seguía siendo insuficiente.
Mirando entre las carpetas encontré algo inusual en la carpeta /img/tmp, que luego vi explicado en el siguiente foro:

http://www.prestashop.com/forums/topic/61807-solved-temporary-image-import-files-in-imgtmp/

En el enlace anterior nos proponen una modificación en el código PHP relativa a la importación de archivos CSV. En concreto me quedo con este fragmento de la conversación:

– Probablemente estos archivos son archivos temporales que son creados durante una importación, o redimensionamiento… ¿Pueden ser borrados? ¿Y por qué no se borraron después de importar?
–  Correcto, puedes borrar todos los archivos de la carpeta  /img/tmp excepto el index.php.

– Probably these are the temporary image files that are created during import/resizing/etc.
Can these be deleted? And why arent these deleted after import ?
– That’s correct. You can delete all files in /img/tmp except for index.php.(…)

Este post también puede ser útil: https://likonet.es/likonet/optimizar-base-de-datos-de-prestashop-2/

Y este para el espacio saturado por los correos electrónicos por defecto y sin destinatario, que he tenido que limpiar alguna que otra vez: http://www.cafetero100.info/2011/12/09/como-vaciar-el-email-por-defecto-en-cpanel-y-mantenerlo-limpio/

Solucionar error al traducir módulos de Prestashop 1.6

Este error lo podemos encontrar al traducir los campos de los módulos de nuestra tienda online Prestashop, realizando los siguientes pasos:

logo-prestashop

    • En el Back-Office, nos dirigimos a Localización > traducciones
    • En «Tipo de Traducción» escogemos dónde está el texto que queremos traducir. Si la traducción no es de un módulo, ni de una plantilla de email, ni del Back Office… dejaremos marcada la opción por defecto. La mayoría de las traducciones imprescindibles y de más prioridad se encuentran en esta opción, y en «traducciones de los módulos instalados»

traducciones prestashop

    • Elegimos la opción «traducciones de los módulos instalados».
    • Al elegir esta opción, es posible que nos encontremos con este error, donde xxxx será el número de campos en total que se pueden traducir:

¡Advertencia! La configuración de PHP limita el número máximo de campos para enviar en un formulario
1000 = max_input_vars.
Por favor, solicite a su proveedor de alojamiento que aumente este límite a xxxx al menos, o deberá editar el archivo de traducción.

error traducciones prestashop
error traducciones prestashop
  • Solución 1: Añadir las siguientes líneas al archivo .htaccess. No funciona con todos los proveedores:
    # inicio - cambio el valor de max_input_vars
    php_value post_max_size "32M"
    php_value max_input_vars 5000
    # final - - cambio el valor de max_input_vars
  • Solución 2: Subir un archivo php.ini a la carpeta del administrador de Prestashop con la siguiente línea:
    max_input_vars=8000
  • Solución 3: Contacta con el servicio técnico de tu proveedor, es posible que por seguridad deban ser ellos quienen realicen los ajustes.

Filosofía 1

Pulsa "Siguiente" para comenzar

Categorías Sin categoría

Java – uso de static


package pruebas;

public class Pruebas {

public static void main(String[] args) {

//https://www.youtube.com/watch?v=QIV7FfXa-zY

Empleados trabajador1 = new Empleados("Paco");
Empleados trabajador2 = new Empleados("Ana");
trabajador1.cambiarSeccion("RRHH");

System.out.println(trabajador1.devuelveDatos());
System.out.println(trabajador2.devuelveDatos());

System.out.println(trabajador1.devuelveDatosdos());
Empleados.Idsegunda++;
System.out.println(trabajador2.devuelveDatosdos());

// usamos la variable idsiguiente

Empleados trabajador3 = new Empleados("Felipe");
Empleados trabajador4 = new Empleados("Margarita");

System.out.println(trabajador3.devuelveDatostres());
System.out.println(trabajador4.devuelveDatostres());

}

}

class Empleados {

// private String nombre; <-- añadimos final porque no vamos a cambiar el nombre de la persona private final String nombre; private String seccion; private int Idprimera; // la ponemos public y static // se pone en cursiva porque es una variable DE CLASE // no pertenece a ningún objeto public static int Idsegunda; // todos tendrán idtercera, pero solo la clase tendrá idsiguiente private int Idtercera; private static int Idsiguiente=1; public Empleados(String nom){ nombre=nom; seccion="Administracion"; Idsegunda=1; // Usamos la variable de clase desde el constructor // ahora al crear los objetos, se incrementa sola Idtercera=Idsiguiente; Idsiguiente++; } public Empleados(String nom, int Id) { nombre=nom; seccion="Administracion"; this.Idprimera=Id; } public void cambiarSeccion(String seccion) { //setter this.seccion=seccion; } public String devuelveDatos() { return "El nombre es "+nombre+" y la sección es "+seccion+" y su id es "+Idprimera; } public String devuelveDatosdos() { return "El nombre es "+nombre+", la sección es "+seccion+" y su id es "+Idsegunda; } public String devuelveDatostres() { return "El nombre es "+nombre+", la sección es "+seccion+" y su id es "+Idtercera; } }

Ejemplo JSlider – Java

package ejemplojslider;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class EjemploJSlider extends JFrame implements ActionListener {

JLabel etiqueta;
JSlider js;

public EjemploJSlider() {

setVisible(true);
setBounds(0, 0, 600, 600);
setLayout(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);

etiqueta = new JLabel(«Hola»);

// clase FONT
// setFont(…..)

etiqueta.setFont(new Font(«Serif», Font.PLAIN, 15));

js = new JSlider(JSlider.HORIZONTAL, 1, 50, 15);

etiqueta.setBounds(10, 10, 300, 60);
js.setBounds(10, 110, 200, 60);

add(etiqueta);
add(js);

// Después de añadir el slider a la ventana
js.setMajorTickSpacing(10);
js.setMinorTickSpacing(1);
js.setPaintTicks(true);
js.setPaintLabels(true);

// esto es lo que hace que se cambie la letra
// dentro de addChangeListener
// – nótese que ahora no es addActionListener, como en los botones –
// creamos un new ChangeListener… el resto se autocompleta

js.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent ce) {

// el valor en tiempo real del indicador del slider,
// convertido a entero,
// pasado como parametro de Font – tamaño de fuente,
// y ésta pasada como parámetro de etiqueta

etiqueta.setFont(new Font(«Serif», Font.PLAIN, (int)((JSlider)ce.getSource()).getValue()));
}
} );

}

public static void main(String[] args) {

EjemploJSlider ejsl = new EjemploJSlider();

}

@Override
public void actionPerformed(ActionEvent ae) {

}

}

Java y MySQL

package primeraconexion;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class PrimeraConexion {

public static void connect(){

String url = «jdbc:mysql://localhost:3306/nombre_base_de_datos»;
String user = «root»;
String pass = «»;

System.out.println(«Conectando…»);

try (Connection connection = DriverManager.getConnection(url, user,pass)) {

System.out.println(«Conectado!!»);
System.out.println(«Insertando …»);
Statement s = connection.createStatement();

// 3 Consultas básicas –

// insert into nombretabla (campo1,campo2,…) value (valor1,valor2,…)
// select nombrecampo front from nombretabla where … order by … limit
// UPDATE table_name SET column1 = value1, column2 = value2, … WHERE condition;

String consulta1 = «insert into tabla (campo) value (\»valor2\»)»;
s.executeUpdate(consulta1);

String nuevaconsulta = «select * from tabla»;
ResultSet rs = s.executeQuery(nuevaconsulta);

while (rs.next()) {

System.out.println(«campo= «+rs.getObject(«campo»));

}

rs.close();

} catch(SQLException e) {

System.out.println(e.getMessage());

}
}

public static void main(String[] args) throws SQLException {

PrimeraConexion conexion = new PrimeraConexion();
conexion.connect();

}

}

Ejemplo Swing Java 2

public class Formulario extends JFrame implements ActionListener{

private JLabel texto; // etiqueta o texto no editable
private JTextField caja; // caja de texto, para insertar datos
private JButton boton; // boton con una determinada accion

public Formulario() {

super();// usamos el contructor de la clase padre JFrame
config();
componentes();
}

private void config() {
this.setTitle(«Esta Es Una Ventana»); // colocamos titulo a la ventana
this.setSize(310, 210); // colocamos tamanio a la ventana (ancho, alto)
this.setLocationRelativeTo(null); // centramos la ventana en la pantalla
this.setLayout(null); // no usamos ningun layout, solo asi podremos dar posiciones a los componentes
this.setResizable(false); // hacemos que la ventana no sea redimiensionable
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // hacemos que cuando se cierre la ventana termina todo proceso
}

private void componentes() {
// creamos los componentes
texto = new JLabel();
caja = new JTextField();
boton = new JButton();
// configuramos los componentes
texto.setText(«Inserte Nombre»); // colocamos un texto a la etiqueta
texto.setBounds(50, 50, 100, 25); // colocamos posicion y tamanio al texto (x, y, ancho, alto)
caja.setBounds(150, 50, 100, 25); // colocamos posicion y tamanio a la caja (x, y, ancho, alto)
boton.setText(«Mostrar Mensaje»); // colocamos un texto al boton
boton.setBounds(50, 100, 200, 30); // colocamos posicion y tamanio al boton (x, y, ancho, alto)
boton.addActionListener(this); // hacemos que el boton tenga una accion y esa accion estara en esta clase
// adicionamos los componentes a la ventana
this.add(texto);
this.add(caja);
this.add(boton);
}

@Override
public void actionPerformed(ActionEvent e) {
String nombre = caja.getText(); // obtenemos el contenido de la caja de texto
JOptionPane.showMessageDialog(this, «Hola » + nombre + «.»); // mostramos un mensaje (frame, mensaje)
}
public static void main(String[] args) {
Formulario V = new Formulario(); // creamos una ventana
V.setVisible(true); // hacemos visible la ventana creada

}
}

Ejemplo Swing Java 1

package ejswing1;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

/*

1 – Creamos 1 botón, con JButton
2 – Usamos setBounds
3 – lo metemos en el frame con .add
4 – añadimos «extends JFrame implements ActionListener» a la clase principal
5 – Usamos .addActionListener con el botón
6 – Autocompletar cuando proceda

*/

public class EjSwing1 extends JFrame implements ActionListener {

JFrame ventana = new JFrame();

JLabel label1 = new JLabel(«Etiqueta1»);
JLabel label2 = new JLabel(«Etiqueta2»);
JLabel label3 = new JLabel(«Etiqueta3»);

JButton botonsalir = new JButton(«Salir»);
JButton boton2 = new JButton(«Boton2»);
JButton boton3 = new JButton(«Boton3»);

JButton boton4 = new JButton();

public void graficos() {

ventana.setLayout(null);
ventana.setSize(600,600);
ventana.setVisible(true);

label1.setBounds(30, 0, 100, 50);
label2.setBounds(30, 50, 100, 50);
label3.setBounds(30, 100, 100, 50);

botonsalir.setBounds(130, 0, 100, 50);
boton2.setBounds(130, 50, 100, 50);
boton3.setBounds(130, 100, 100, 50);
boton4.setBounds(130, 150, 100, 50);

boton4.setText(«Cambiar»);

ventana.add(label1);
ventana.add(label2);
ventana.add(label3);

ventana.add(botonsalir);
ventana.add(boton2);
ventana.add(boton3);
ventana.add(boton4);

// al escribir «sleep» se me ha autocompletado la siguiente línea
// y también la parte del main «throws Interrumped…»
/*Thread.sleep(3000);
System.exit(0);*/

// después de «implements» y del action perfomed, debemos añadir esto
botonsalir.addActionListener(this);
boton4.addActionListener(this);

}

public static void main(String[] args) {

EjSwing1 nuevo = new EjSwing1();
nuevo.graficos();

}

@Override
public void actionPerformed(ActionEvent ae) {

if (ae.getSource()==botonsalir) {
System.exit(0);
}

if (ae.getSource()==boton4) {
label3.setText(«Nuevo texto»);
}

}

}

Ficheros en Java

Crea un fichero de texto con el nombre y contenido que tú quieras. Luego crea una aplicación que lea este fichero de texto carácter a carácter y muestre su contenido por pantalla sin espacios. Por ejemplo, si un fichero tiene el siguiente texto “Esto es una prueba”, deberá mostrar “Estoesunaprueba”.

public class Archivos1 {

public static void main(String[] args) throws FileNotFoundException, IOException {

File archivo1 = new File(«C:\\Users\\Jorge\\Desktop\\archivotexto.txt»);
// BR 1 redLine()
Reader reader1 = new FileReader(archivo1);
//System.out.println((char)br1.read());
try (BufferedReader br1 = new BufferedReader(reader1)
// read() lee un caracter, pero lo devuelve como entero
/*
int michar= br1.read();
char minuevochar= (char)michar;
*/
) {
//System.out.println((char)br1.read());

int comprobacion = br1.read();

while (comprobacion!=-1) {

// comillas simples para caracteres

if ((char)comprobacion!=’ ‘) {

System.out.print((char)comprobacion);

}

comprobacion = br1.read();

}
} catch (IOException io) {
System.out.println(io);
}

}

}

Ejercicio Arrays y bucles

Un array es un objeto que contiene un número fijo de valores de un solo tipo. La longitud del array se fija tras su creación.

Cada objeto en un array se llama elemento, y se accede a él mediante su índice numértico. Es decir, un elemento de un array tiene un índice (un número entero) y un valor. Hemos de recordar que el primer elemento de un array siemnpre tiene índice 0, con lo que el 4º elemento tiene índice 3…


public static void main(String[] args) {

// declarar un array de enteros
int[] arrayDeEnteros;
// allocates memory for 10 integers
arrayDeEnteros = new int[4];

// initialize elements
arrayDeEnteros[0] = 100;
arrayDeEnteros[1] = 200;
arrayDeEnteros[2] = 300;
arrayDeEnteros[3] = 400;

System.out.println("Element at index 0: "+ arrayDeEnteros[0]);
System.out.println("Element at index 1: "+ arrayDeEnteros[1]);
System.out.println("Element at index 2: "+ arrayDeEnteros[2]);
System.out.println("Element at index 3: "+ arrayDeEnteros[3]);

System.out.println(arrayDeEnteros.length);

byte[] arrayDeBytes;
short[] arrayDeShorts;
long[] arrayDeLongs;
float[] arrayDeFloats;
double[] arrayDeDoubles;
boolean[] arrayDeBooleans;
char[] arrayDeChars;
String[] arrayDeStrings = new String[4];

// bucles con array

//for (int i=0; i<=3; i++) { for (int i=0; i