Categoria: IT

L’Effetto DeepSeek: Come una Startup Cinese Sta Riscrivendo il Futuro dell’Intelligenza Artificiale

Il terremoto silenzioso nel mondo dell’AI Il 31 gennaio 2025, un evento apparentemente tecnico ha scosso i mercati globali e l’intero ecosistema dell’intelligenza artificiale. DeepSeek, un laboratorio cinese ancora giovane ma già tra i protagonisti mondiali, ha rilasciato il suo nuovo modello di AI, DeepSeek-R1. Bastano poche ore, e il titolo Nvidia crolla del 17% in un solo giorno. Cos’ha fatto DeepSeek di così straordinario? Come può una sola release tecnologica scuotere i colossi della Silicon Valley e alimentare un dibattito planetario su efficienza, costi e futuro dell’AI? Secondo Bridgewater Associates, uno dei fondi di investimento più rispettati al mondo, siamo davanti a una vera e propria rivoluzione. E come tutte le rivoluzioni, porta con sé tanto entusiasmo quanto domande cruciali. — Cosa ha realizzato DeepSeek Un salto qualitativo nel ragionamento DeepSeek-R1 non è semplicemente un LLM più potente. È un modello costruito con l’obiettivo di ragionare, cioè di compiere inferenze complesse attraverso più passaggi logici — un limite ancora irrisolto per molti chatbot moderni. In pratica, è progettato per pensare, non solo rispondere. Finora, il punto di riferimento pubblico era il modello o1 di OpenAI. DeepSeek-R1 riesce a eguagliarne le prestazioni nei test di matematica e ragionamento, ma con

Leggi Tutto »

How to Fix ERR_TOO_MANY_REDIRECTS on PrestaShop Admin Panel

How to Fix ERR_TOO_MANY_REDIRECTS on PrestaShop Admin Panel If you’re encountering the ERR_TOO_MANY_REDIRECTS error on your PrestaShop Admin Panel, specifically on the Modules and Products pages, you’re not alone. This issue often stems from misconfigurations related to session handling in PHP. In this article, we’ll explore the root cause and provide a step-by-step guide to resolving it. Symptoms of the Issue The error occurs only on specific admin pages, such as Modules and Products. The URL may contain …security/compromised…, indicating a possible misconfiguration. Renaming or disabling all modules does not resolve the issue. Primary Cause: PHP Session Misconfiguration One of the most common reasons for this error is an incorrect setting for session.save_path in your PHP configuration. If your session storage is misconfigured, PrestaShop may fail to establish a session properly, leading to redirection loops. How to Fix the Error 1. Check and Set the Correct session.save_path The correct session.save_path depends on your hosting environment: For Linux-based servers (Apache/Nginx): session.save_path = “/tmp” For Windows servers running WAMP: session.save_path = “c:/wamp64/tmp” Make sure that the directory exists and is writable by the web server. 2. Verify session.save_handler Ensure that your session handler matches the session.save_path. For example: If using file-based sessions,

Leggi Tutto »

Fixing the Extreme Load Time When Creating a New Product in PrestaShop 1.7.8.10: A Simple Code Replacement to Avoid a Heavy SQL Query That Slows Down Everything

Fixing the Extreme Load Time When Creating a New Product in PrestaShop 1.7.8.10: A Simple Code Replacement to Avoid a Heavy SQL Query That Slows Down Everything If you are running PrestaShop 1.7.8.10 and you have a database with a huge number of products, let’s say 600,000 products or more, and you try to add a new product in the Back Office, but suddenly you notice that your SQL server is under extreme load and everything slows down to the point that the new product page takes forever to open, then you might be facing a serious issue caused by a badly written SQL query, a query that someone thought was a great idea but in reality, it is causing massive performance problems by trying to determine the most used tax rule group by scanning the entire database in an extremely inefficient way, a method that simply does not scale when dealing with large product databases, and the worst part is that this query is executed every single time you try to open the product creation page, making the experience painfully slow and completely unacceptable for any serious e-commerce store running a large catalog. 🔎 Understanding the Problem: The Query

Leggi Tutto »

Come obbligare gli utenti a registrarsi per leggere gli articoli su WordPress Hai un blog WordPress e vuoi limitare l’accesso ai tuoi articoli solo agli utenti registrati? Esiste un metodo semplice ed efficace per farlo senza dover installare plugin di membership pesanti: basta un piccolo script JavaScript che sfuma e nasconde il contenuto ai visitatori non loggati, mostrando solo un’anteprima accompagnata da un invito alla registrazione. Il meccanismo è intuitivo. Se un utente non è loggato, gli articoli vengono sfumati e troncati dopo un certo numero di caratteri, lasciando visibile solo un estratto con un messaggio che lo invita a registrarsi. Se invece l’utente ha effettuato l’accesso, il contenuto appare completo e senza restrizioni. Questo sistema permette di aumentare le registrazioni al sito senza compromettere l’esperienza utente. Implementarlo è facilissimo. Si può inserire il codice in due modi: utilizzando un plugin gratuito come Simple Custom CSS and JS oppure sfruttando il campo di tracciamento JavaScript presente in molti temi. Per esempio, Avada permette di aggiungere codice personalizzato direttamente dalla dashboard. Ecco il codice JavaScript da copiare e incollare: <script> document.addEventListener(“DOMContentLoaded”, function () { function isPostContainerPresent() { return !!document.querySelector(“#posts-container”); } if (isPostContainerPresent()) { console.log(“Post container trovato. Script non eseguito.”); return; }

Leggi Tutto »

Creare una macchina virtuale Windows 10 su Google Cloud Compute Engine

Google Cloud Compute Engine è il servizio di macchine virtuali offerto da Google. Tramite questo servizio è possibile creare e avviare numerose macchine virtuali completamente gestite, basate su immagini pubbliche di sistemi operativi o immagini personalizzate. Google fornisce unicamente immagini pubbliche windows per ambiente windows server in modalità abbonamento. Per lanciare una macchina windows 10 è quindi necessario muoversi in 2 modi: A) Tramite la creazione di un ambiente nested virtualizzato, ovvero tramite il deploy di macchine virtuali Windows 10 di livello 2 che vengono gestite da una macchina virtuale di L1 dotata di un virtualizzatore, la quale gira sull’infrastruttura kvm di google. Google permette di fare questo unicamente tramite macchine virtuali di L1 basate su Linux (KVM). 2) Tramite la creazione di un immagine personalizzata avviabile per Google Cloud Compute Engine contenente Windows 10 Analizziamo il caso 2 e procediamo a creare un immagine personalizzata per Windows 10 avviabile tramite Google Cloud Compute Engine. Google fornisce vari strumenti di build che teoricamente permettono di creare un immagine avviabile partendo da un file .iso o da un disco virtuale VHD o VMDK. La procedura per la creazione di una build partendo da un immagine ISO , precisamente l’immagine iso di

Leggi Tutto »

Comparativa performance temi Presatshop

Tema: Classic Theme Smarty Cache: SI CCC: NO LiteSpeed Cache: NO RUN1 matteo_lavaggi@nxpx01:~$ siege -b -i -c10 -t1M -fps1788.vinove-url ** SIEGE 4.0.4 ** Preparing 10 concurrent users for battle. The server is now under siege… Lifting the server siege… Transactions: 7934 hits Availability: 100.00 % Elapsed time: 59.76 secs Data transferred: 56.82 MB Response time: 0.08 secs Transaction rate: 132.76 trans/sec Throughput: 0.95 MB/sec Concurrency: 9.97 Successful transactions: 512 Failed transactions: 0 Longest transaction: 3.22 Shortest transaction: 0.06 RUN2 matteo_lavaggi@nxpx01:~$ siege -b -i -c10 -t1M -fps1788.vinove-url ** SIEGE 4.0.4 ** Preparing 10 concurrent users for battle. The server is now under siege… Lifting the server siege… Transactions: 7955 hits Availability: 100.00 % Elapsed time: 59.29 secs Data transferred: 56.95 MB Response time: 0.07 secs Transaction rate: 134.17 trans/sec Throughput: 0.96 MB/sec Concurrency: 9.97 Successful transactions: 517 Failed transactions: 0 Longest transaction: 0.34 Shortest transaction: 0.06 RUN3 matteo_lavaggi@nxpx01:~$ siege -b -i -c10 -t1M -fps1788.vinove-url ** SIEGE 4.0.4 ** Preparing 10 concurrent users for battle. The server is now under siege… Lifting the server siege… Transactions: 7905 hits Availability: 100.00 % Elapsed time: 59.02 secs Data transferred: 56.56 MB Response time: 0.07 secs Transaction rate: 133.94 trans/sec Throughput: 0.96 MB/sec Concurrency: 9.97

Leggi Tutto »

s5cmd

#COPIA DEL DATABASE# ps_sixrace fYOO1fTb9h9A 1) Assegnare i permessi del service account vm allo storage bucket gsutil -m cp gs://bucket ./ Annotare il service account usato nell’errore di accesso Concedere i premerssi al bucket tramite web consolle 2) Scaricare la copia del backup database in locale gsutil -m cp gs://bucket ./ 3) Estrarre l’archivio gz gunzip backup.sql.gz 4) Importare il dump sql nel database SQL mysql -u utente -h host -p database < backup.sql 5) Rimuovere la copia dei backup locale scaricata 6) Rimuovere i permessi del service account vm allo storage bucket #COPIA DEI DATI# wget https://github.com/peak/s5cmd/releases/download/v2.0.0/s5cmd_2.0.0_Linux-64bit.tar.gz tar xzf s5cmd_2.0.0_Linux-64bit.tar.gz vim ~/.aws/credentials cp ~/.aws/credentials ./ [default] aws_access_key_id=GOOG1E7QVRJOTXHSOMY5FIVDOQWYAGR3XPI5VQ4HVCJKJTMNR65KZZY6DIYBA aws_secret_access_key=LrYc1uqKN35gna+IunAE37/Olgni97Y/LyzdfNQt sudo gsutil -m cp -R “gs://ovh-naws01-bk/naws01/DATA/htdocs/” ./ ./s5cmd –endpoint-url https://storage.googleapis.com sync s3://ovh-naws01-bk/naws01/DATA/htdocs/* /mnt/disks/sdb/ #HARDLINK# hardlink -c -t -s 100 -m /var/www/html/prova/

Leggi Tutto »

rsync ovh – google cloud vm

1) Creare una copia di chiavi ssh oppure usare la chiave id_rsa di naws01 che è di default già aggiunta da google a tutte le vm (info@) 2) Copiare la chiave pubblica sulla VM Google negli authorized_host dell’utente info 3) Collegarsi dalla macchina ovh rsync -azH –delete –progress /var/www [email protected]:/mnt/disks/sdb/

Leggi Tutto »

Fix Address family not supported by protocol Using WordPress Studio with a MySQL Database Instead of SQLite

How to Use WordPress Studio with a MySQL Database Instead of SQLite If you’re using WordPress Studio and want to work with a locally developed MySQL database instead of SQLite, you’re in the right place. WordPress Studio provides built-in support for SQLite but also allows you to configure a MySQL database of your choice. Here’s a step-by-step guide to set up MySQL with WordPress Studio and solve the common issue of “Address family not supported by protocol”. Setting Up WordPress Studio with MySQL WordPress Studio supports connecting to a custom MySQL server. If you’ve already created a WordPress site in Studio and want to switch from SQLite to MySQL, follow these steps: Stop the WordPress Studio Site Use the Studio interface or terminal to stop the site. Remove SQLite Integration Navigate to your Studio’s site directory. Go to the wp-content directory and: Delete the db.php file. Delete the database directory. Navigate to the mu-plugins directory and: Delete the sqlite-database-integration-main directory. Update wp-config.php with MySQL Credentials Open the wp-config.php file in the site directory and add the following details: “`php define(‘DB_NAME’, ‘your_database_name’); define(‘DB_USER’, ‘your_database_user’); define(‘DB_PASSWORD’, ‘your_database_password’); define(‘DB_HOST’, ‘127.0.0.1’); // Use 127.0.0.1 instead of localhost define(‘DB_CHARSET’, ‘utf8’); define(‘DB_COLLATE’, ”); Note: The key

Leggi Tutto »

Fix Prestashop error You have no access to this product – missing default category

PrestaShop Product Category Fixer: Automating Missing Category Links PrestaShop users often encounter errors like: “You are not allowed to see this product” This typically occurs when products are imported using tools like SimpleImport but lack proper category associations. Specifically, the product’s id_category_default is not recorded in the ps_category_product table. To address this, the ps_category_product_fix.py script, along with the PrestaShopDB helper class, provides a robust solution to identify and resolve such database inconsistencies. Here’s an explanation of the provided scripts and how to use them. How the Scripts Work PrestaShopDB Class: Extracts database credentials from PrestaShop’s PHP configuration file (parameters.php). Provides a method to test the database connection. Fix Script (ps_category_product_fix.py): Connects to the database using PrestaShopDB. Identifies products missing entries in the ps_category_product table. For each missing product, adds the appropriate id_category_default entry into ps_category_product. Key Features of the Scripts Dynamic Credential Parsing: Automatically reads PrestaShop’s database credentials from the PHP configuration file, avoiding hardcoding sensitive information. Batch Processing: Handles large numbers of products in batches to avoid overwhelming the database or running into performance issues. Logging: Logs details about the script’s operations, including the number of records fixed and any issues encountered. Progress Display: Uses a progress bar to

Leggi Tutto »

Markdown Exampe

This is a markdown post example! h1 Heading 😎 h2 Heading h3 Heading h4 Heading h5 Heading h6 Heading Horizontal Rules Typographic replacements Enable typographer option to see result. (c) (C) (r) (R) ™ (TM) (p) (P) +- test.. test… test….. test?….. test!…. !!!!!! ???? ,, — — “Smartypants, double quotes” and ‘single quotes’ Emphasis This is bold text This is bold text This is italic text This is italic text Strikethrough Blockquotes Blockquotes can also be nested… …by using additional greater-than signs right next to each other… …or with spaces between arrows. Lists Unordered Create a list by starting a line with +, -, or * Sub-lists are made by indenting 2 spaces: Marker character change forces new list start: Ac tristique libero volutpat at Facilisis in pretium nisl aliquet Nulla volutpat aliquam velit Very easy! Ordered Lorem ipsum dolor sit amet Consectetur adipiscing elit Integer molestie lorem at massa You can use sequential numbers… …or keep all the numbers as 1. Start numbering with offset: foo bar Code Inline code Indented code // Some comments line 1 of code line 2 of code line 3 of code Block code “fences” Sample text here… Syntax highlighting var foo =

Leggi Tutto »
IT
Matteo Lavaggi

WordPress Studio

Scopri WordPress Studio: La Semplicità dell’Automazione dei Siti Web Stai cercando un modo per creare il tuo sito web su WordPress in maniera semplice, veloce e senza complicazioni tecniche? WordPress Studio è la soluzione che fa per te! Disponibile attraverso WordPress.com Studio, questo servizio è pensato per aiutare chiunque, dal principiante all’esperto, a realizzare e pubblicare siti web di alta qualità, senza preoccuparsi della complessità dell’hosting, della manutenzione o dello sviluppo tecnico. Cosa è WordPress Studio? WordPress Studio è un servizio che offre tutto il necessario per progettare, costruire e lanciare un sito WordPress. Che tu stia cercando di creare un sito personale, un blog, o un sito per la tua attività, WordPress Studio ti mette a disposizione strumenti intuitivi e assistenza professionale per darti risultati straordinari in tempi rapidi. Questo servizio comprende sia il design personalizzato del sito, che lo sviluppo e la manutenzione, in modo da permetterti di concentrarti sul tuo contenuto e sui tuoi visitatori, senza dover affrontare le sfide tecniche solitamente legate alla creazione di un sito web. Perché Scegliere WordPress Studio? Supporto Professionale: Un team di esperti lavora con te per progettare e realizzare il sito dei tuoi sogni. Dalla fase di progettazione a quella

Leggi Tutto »
IT
Matteo Lavaggi

CursorAi

Scopri Cursor AI: Il Codice Diventa Collaborazione Nel mondo dello sviluppo software, l’efficienza e la collaborazione sono le chiavi del successo. Cursor AI si presenta come la nuova frontiera per i programmatori che vogliono ottimizzare il loro flusso di lavoro e trasformare la scrittura di codice in un’esperienza realmente collaborativa. Cursor AI è un assistente AI progettato specificamente per gli sviluppatori. Immagina di avere un partner di programmazione che è disponibile 24 ore su 24, pronto ad aiutarti a risolvere problemi, a suggerire miglioramenti e persino a scrivere codice al posto tuo. Cursor AI è tutto questo e molto di più. L’obiettivo è semplice: rendere lo sviluppo software più fluido, meno stressante e più produttivo. Come Funziona Cursor AI Cursor AI utilizza algoritmi avanzati di machine learning per comprendere le tue esigenze di programmazione in tempo reale. Con una semplice integrazione nel tuo ambiente di sviluppo, Cursor AI è capace di analizzare il codice esistente e fornirti suggerimenti intelligenti, come un vero assistente esperto di sviluppo software. L’interfaccia è intuitiva e pensata per non interrompere il tuo flusso di lavoro, ma per potenziarlo. Da correzioni di errori a suggerimenti di refactoring, Cursor AI ti offre un supporto continuo mentre lavori

Leggi Tutto »
IT
Matteo Lavaggi

How to Ask ChatGPT to Write the Right LaTeX Markdown for WordPress

If you’ve ever struggled to add beautifully formatted mathematical equations or scientific notations to your WordPress website, you know how useful LaTeX can be. WordPress, especially with Jetpack, supports the use of LaTeX through a simple syntax that makes adding formulas easier. This article explains how you can ask ChatGPT to generate the right LaTeX Markdown for use in WordPress, ensuring that you get a smooth copy-paste experience with correct formatting. Why Use LaTeX in WordPress? LaTeX is a powerful typesetting language used for formatting complex mathematical equations, scientific formulas, and other specialized content that requires precision. WordPress, when integrated with Jetpack, allows you to use LaTeX with a convenient syntax, making it a great way to enhance the readability of your posts, especially for audiences interested in technical content. When using the Jetpack plugin on WordPress, you can enable LaTeX markup support and start writing beautiful mathematical content easily. This is especially helpful if you’re copying and pasting from platforms like ChatGPT where you need your equations to render perfectly on your website. Enabling LaTeX Support in WordPress with Jetpack Before getting started, you need to ensure that LaTeX is enabled in your WordPress setup. Follow these steps: Visit

Leggi Tutto »
IT
Matteo Lavaggi

The Best Way to Write in Markdown in WordPress (Easy Copy-Paste from ChatGPT with Formatting)

The Best Way to Write in Markdown in WordPress (Easy Copy-Paste from ChatGPT with Formatting) by Matteo Lavaggi, Business Process Automation Consultant Markdown is a popular choice for bloggers and content creators due to its simplicity and flexibility in creating clean, well-structured text. If you’re using WordPress and want a straightforward way to write in Markdown—especially if you’re copying formatted text from ChatGPT—this guide will help you enable Markdown support easily. A Bit of Background: The WP Githuber MD Plugin Previously, the WP Githuber MD plugin was a go-to option for Markdown support in WordPress. It provided seamless integration, letting users write posts directly in Markdown. However, this plugin has recently been removed from the WordPress plugin repository, leaving many users without a native Markdown editor. The Solution: Enabling Markdown with Jetpack With WP Githuber MD no longer available, Jetpack is an excellent alternative for adding Markdown support to your WordPress site. Jetpack’s Markdown feature lets you write posts in Markdown and renders them beautifully on your site, making it a reliable and convenient option. Here’s how to enable and use Markdown in Jetpack. Step 1: Enable Markdown in Jetpack Settings Install and activate Jetpack if you haven’t already. You

Leggi Tutto »
IT
Matteo Lavaggi

Gli Unici 6 Plugin Essenziali per un Sito WordPress Veloce e Performante

Gli Unici 6 Plugin Essenziali per un Sito WordPress Veloce e Performante di Matteo Lavaggi, Consulente Informatico e di Automazione dei Processi di Business Se desideri un sito WordPress veloce, sicuro e funzionale senza installare decine di plugin, concentrarti su una selezione essenziale è la scelta migliore. Ecco i 6 plugin indispensabili per ottenere il massimo delle prestazioni e delle funzionalità, mantenendo il tuo sito WordPress leggero e facile da gestire. 1. Advanced Google reCAPTCHA La sicurezza è una priorità, e Advanced Google reCAPTCHA offre una protezione completa contro spam e accessi non autorizzati. Integra facilmente Google reCAPTCHA nei moduli di login, registrazione e commenti di WordPress, bloccando i bot e preservando la sicurezza del tuo sito. Perché è essenziale: – Protegge dallo spam senza appesantire il sito – Si integra facilmente con i principali moduli di WordPress – Mantiene il tuo sito sicuro con un’impostazione minima 2. Classic Editor Se preferisci l’editor tradizionale di WordPress rispetto a Gutenberg, Classic Editor ti consente di lavorare con l’interfaccia che conosci, senza complicazioni. Questo plugin è perfetto per chi desidera un’esperienza di modifica più semplice e per chi utilizza plugin compatibili solo con l’editor classico. Perché è essenziale: – Mantiene la tua

Leggi Tutto »
IT
Matteo Lavaggi

Intall php redis on Windows Xampp Wampp to use redis session handler on php

### How to Check and Enable Thread Safety for Redis in PHP If you’re looking to enable Redis for your PHP application, it’s essential to first determine the version of Thread Safety that your PHP installation uses. Here’s a step-by-step guide to help you through the process: #### Step 1: Check Your PHP Thread Safety 1. **Create a `phpinfo()` File**: – Create a new PHP file in a directory that your web server can access (e.g., `info.php`). – Add the following code to the file: “`php <?php phpinfo(); ?> “` – Save the file and open it in your web browser (e.g., `http://your-server/info.php`). 2. **Locate Thread Safety Information**: – Look for the section labeled “Thread Safety” on the PHP info page. It will indicate whether it is enabled or disabled. #### Step 2: Download the Correct Redis Version 1. **Visit the PECL Website**: – Navigate to the [PECL Redis package page](https://pecl.php.net/package/redis) and find the version compatible with your PHP version. For example, if you’re using PHP 7.2, make sure to select Redis version 5.2.2 or earlier. 2. **Select the DLL Download**: – Click on the appropriate version link on the right side of the page to access the Windows file

Leggi Tutto »

Automazione dei Processi: Come Trasformare un File Excel in un’Applicazione con AppSheet

Automazione dei Processi: Come Trasformare un File Excel in un’Applicazione con AppSheet di Matteo Lavaggi, Consulente Informatico e di Automazione dei Processi di Business Introduzione Per molte piccole e medie imprese (PMI), Excel è lo strumento principale per l’analisi dei dati e la gestione delle operazioni aziendali. Grazie alla sua flessibilità e alla sua vasta gamma di funzionalità, Excel permette alle aziende di tenere sotto controllo i propri dati e di gestire processi fondamentali come l’inventario, le vendite e la reportistica. Tuttavia, nonostante la sua diffusione, l’inserimento manuale dei dati e la presentazione dei risultati non sono sempre ottimizzati. Fogli complessi possono diventare difficili da usare e condividere, specialmente quando i team aziendali crescono o quando si lavora da mobile. Il Problema: Inserimento Dati e Presentazione Una delle sfide più comuni con l’uso di Excel riguarda la gestione dei dati. Il processo di inserimento manuale può essere lento, soggetto a errori e spesso non è ottimizzato per l’uso su dispositivi mobili. Inoltre, quando più persone devono collaborare sugli stessi file, possono verificarsi conflitti o problemi di accesso. Anche la presentazione dei dati risulta spesso poco intuitiva e difficilmente accessibile per chi non ha dimestichezza con i fogli di calcolo. La

Leggi Tutto »

How to Fix wsl (windows subsystem for linux) download and upload speed

  How to Fix Network Speed Issue in WSL2 If you’ve been experiencing network speed issues in Windows Subsystem for Linux 2 (WSL2), you’re not alone. Many users have reported slower network performance compared to the host Windows machine. Fortunately, there are solutions available that can help mitigate this problem. This article will guide you through the steps to improve your WSL2 network speed. Solution 1: Modify the WSL Configuration To start with, you can adjust the WSL configuration to use mirrored networking mode. Follow these steps: Create a new file named .wslconfig in the directory C:\Users\YOURUSER\. Add the following content to the .wslconfig file: [wsl2] [experimental] networkingMode=mirrored Save the file. Open your terminal and run the command: wsl –shutdown Restart your WSL distro. Once restarted, your WSL distro should now have the same network speed as your Windows host. For more details, you can refer to the official documentation here. Solution 2: Enable IPv4 Forwarding Another solution involves enabling IPv4 forwarding on your network interface. Here’s how to do it: Open Command Prompt (CMD) with administrative privileges. Run the following command: netsh int ipv4 set interface “Wi-Fi” forwarding=enable This command enables IPv4 forwarding on your Wi-Fi interface, which can

Leggi Tutto »

Prestashop > 1.7.8 change UPC , name, meta and seo max lenght

With prestashop 1.7.8 update lot of thing change regarding field validation, so previous modification that work on prestashop version does not work. This guide can help you to change lenght but also field content validation, this usually is used for change UPC lenght, name lenght, meta title , description lenght ecc. 1) Change every field lenght value in database, for example ps_product.upc and ps_product_lang.name and ps_product_attribute.upc according to the new value you need. 2) Change in Classes\Validate.php Classes\Validate.php change isUpc validation to something like this: return !$upc || preg_match(‘/^[^<>={}]*$/’, $upc); or #return !$upc || preg_match(‘/^[0-9]{0,255}$/’, $upc); 3) In src\PrestaShopBundle\Form\Admin\Product\ProductCombination.php change ‘attrivute_upc’ regex 0,12 to 0,255 new Assert\Regex(‘/^[0-9]{0,255}$/’), or to allow extra character: new Assert\Regex([ ‘pattern’ => ‘/^[^<>={}]*$/’ ]), 4) Same in ProductOptions.php 5) in ProductSeo.php change meta_description and meta_title ‘counter’ => 128, to what do you have se in point 1. 6) in src\Core\Domain\Product\ProductSettings.php change constant value: public const MAX_NAME_LENGTH = 192; 7) in \src\PrestaShopBundle\Form\Admin\Product\ProductInformation.php chang new Assert\Length([‘min’ => 3, ‘max’ => 128]), 8) in src/Core/Domain/Product/ValueObject/Upc.php: public const VALID_PATTERN = ‘/^[0-9]{0,12}$/’; and public const MAX_LENGTH = 255;

Leggi Tutto »
IT
Matteo Lavaggi

Prestashop 1.7.x e il problema delle Slow Queries: come ottimizzare la tua piattaforma e-commerce

Prestashop 1.7.x e il problema delle Slow Queries: come ottimizzare la tua piattaforma e-commerce Introduzione Prestashop è uno dei più popolari sistemi di gestione e-commerce disponibili oggi. Ma come con ogni software, ci sono sempre delle sfide e delle questioni che emergono, specialmente quando il software inizia ad adattarsi alle esigenze crescenti dei suoi utenti. La Sfida delle Slow Queries Una delle principali criticità che molti utenti di Prestashop 1.7.x stanno riscontrando, specialmente quelli con grandi database di prodotti, è il problema delle slow queries. Queste sono le query al database che richiedono molto tempo per essere eseguite e possono influenzare significativamente le prestazioni del tuo sito web. Il problema diventa particolarmente evidente quando si ha un database che contiene centinaia di migliaia di prodotti e di prezzi specifici. Un esempio di una delle query più frequentemente lente può essere visto nel log del database: SELECT COUNT(DISTINCT `id_product`) FROM `ps_specific_price` WHERE `id_product` != 0 LIMIT 1; Questa query viene eseguita ogni volta che un utente visita una pagina prodotto. Il suo scopo principale è di “ottimizzare” la cache della risposta fornita dal motore del database. Ma, come si può facilmente intuire, c’è un grosso problema con questa query. L’Origine del

Leggi Tutto »
IT
Matteo Lavaggi

Prestashop Slow Query Cloud SQL CPU Performance Benchmark

Prestashop è una piattaforma ecommerce opensource relativemente versatile, che sicuramente non brilla per prestazioni, performance e team di sviluppo. Nonostante questo è una scelta ottima per gli ecommerce di piccole e medie dimensioni in quanto semplice da mantenere e relativamente poco assetata di risorse. Tuttavia un design del codice non splendido può portare rapidamente alla formazione di colli di bottiglia nelle performance del sito, e dove non si può intervenire sistemando il codice (che è sempre la soluzione consigliata), quello che rimane da fare è scalare verticalmente la potenza dei server (prestashop non è una piattaforma ecommerce che può scalare nativamente in orizzontale). Questo è il risultato che si può avere pasando da un SQL server cloud HA (Google Cloud SQL) 2 CPU e 7GB di ram a 4CPU e 10 GB di RAM. Come potete vedere le query più “pasticciate” hanno tempi di esecuzione ridotti del 70%, a discapito di un costo raddoppiato (che in configurazione HA è di fatto quadruplicato per la copia di replica del database). Non serve ovviamente citare l’estrema semplicità della gestione di un database Cloud SQL raffrontata alla necessità di gestire un cluster autonomo, ovviamente con qualche downside riugardo al rapporto costo/prestazioni che è

Leggi Tutto »
IT
Matteo Lavaggi

Utilizzare RSYNC su SSH con Chiave Privata per sincronizzare file di proprietà di www-data e preservare accesso e modification time

Rsync per poter impostare correttamente il modification time richiede di essere eseguito con l’utente PROPRIETARIO del file, in quanto il mtime è un attributo che richiede un access super user. Non basta avere l’accesso in scrittura per esempio tramite permessi 664/775 come gruppo. Ovviamente non è consigliato utilizzare una connessione ssh tramite publickey per un utente che non è dotato di accesso shell come l’utente www-data. Per risolvere è necessario usare la connessione ssh tramite un utente dotato di accesso shell e chiave privata su entrambe le macchine, ed eseguire il comando rsync sulla macchina remota scalando i priviligi dall’utente che apre la connessione ssh all’utente www-data. In questo modo la connessione ssh viene aperta dall’utente normale , e poi il comando ssh viene eseguito tramite sudo dall’utente normale come account di servizio www-data:   You have to differentiate 2 things: who establishes the SSH connection. which remote user owns the files that you want to copy. Overview (srcmachine) (rsync) (destmachine) srcuser — SSH –> destuser | | sudo su jenkins | v jenkins Let’s say that you want to rsync: From: Machine: srcmachine User: srcuser Directory: /var/lib/jenkins To: Machine: destmachine User: destuser to establish the SSH connection. Directory: /tmp Final files owner: jenkins. Solution rsync –rsync-path ‘sudo -u jenkins rsync’ -avP

Leggi Tutto »
IT
Matteo Lavaggi

Risparmiare spazio nella cartella immagini di Prestashop per cataloghi con molte foto uguali

Il problema delle dimensioni della cartella img Se avete mai gestito un ecommerce dotato di un grande catalogo prodotti, dove numerosi prodotti hanno la stessa foto (immaginate ad esempio un catalogo di prodotti generici, oppure un catalogo dove lo stesso prodotto viene caricato più volte per avere la compatibilità con differenti applicazioni), sicuramente vi sarà capitato di fare i conti con le dimensioni estremamente elevate della cartella immagini! Facciamo un esempio: Un esempio di uno dei nostri clienti (www.sixrace.it) può descrivere ancora meglio il problema: Sixrace vende ricambi e accessori per moto delle migliori marche, il loro catalogo conta centinaia di migliaia di articoli, molti dei quali presentano numerose foto ciascuno (anche 20). I prodotti caricati sul sito prestashop sixrace.it vengono caraicati numerose volte in quanto lo stesso prodotto può essere compatibile con moto differenti, per favorire l’indicizzazione google e la vendita tramite marketplace e comparatori, sixrace, ha scelto di caricare un singolo prodotto per ogni compatibilità , così da ottimizzare il seo e la ricerca da parte dei clienti. Se prendiamo ad esempio un prodotto quasi universale come una batteria, lo stesso codice viene caricato come centinaia di prodotti differenti, ciascuno con titolo differente (comprendente l’indicazione del modello di

Leggi Tutto »

Google CloudSQL MYSQL 8.0 – Creazione utenti con permessi per singolo Database

Creare utenti per il servizio di database CLOUD SQL di Google per MYSQL 8 è diverso rispetto a creare un utente tramite un client MYSQL classico (es terminale con mysql-client, adminer.php ,phpmyadmin,…). Il processo di creazione classico di un utente tramite un client mysql prevede che alla creazione di un nuovo utente sia necessario specificare quali pemessi assegnare a questo utente, e su quali database applicarli. Se invece create un utente mysql tramite la consolle google cloud su un istanza google cloud sql con mysql 8, di default l’utente creato riceverà il ruolo di “superuser”. Questo significa che ogni utente creato manualmente tramite l’interfaccia di google cloud potrà accedere a qualsiasi database ed effettuare praticamente tutte le operazioni su qualsiasi dato presente all’interno, compreso la manipolazione di altri utenti. Per creare correttamente un utente mysql usando il servizio google cloud sql per mysql 8 la procedura corretta è quella di utilizzare un client mysql. Collegatevi al database con le credenziali di root (utente principale creato durante il setup dell’istanza), dopodchè eseguite i comandi di creazione specificando i permessi adeguati esattamente come fareste per creare un utente su un database mysql classico. ATTENZIONE se avete già creato un utente tramite la

Leggi Tutto »

Prestashop LiteSpeed + LiteCache vs Apache2 + FullPageCache – Speed TEST

Configurazione Server: apws (server Apache2) Apache2 4 core 4GB RAM PHP7.2-FPM Pretashop 1.7.6.9 + Full Page Cache Plugin 1.4 lsws (Server LiteSpeed) Litespeed Enterprise 1 core 2Gb RAM LSPHP72 Prestashop 1.7.6.9 + LiteCache Plugin 8.1.2 Apache Benck Test ab -k -n 1000 -c 20 https://lsws Completed 100 requests Completed 200 requests Completed 300 requests Completed 400 requests Completed 500 requests Completed 600 requests Completed 700 requests Completed 800 requests Completed 900 requests Completed 1000 requests Finished 1000 requests Server Software: nginx/1.18.0 Server Hostname: lsws Server Port: 443 SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256 Server Temp Key: X25519 253 bits TLS Server Name: lsws Document Path: /it/ Document Length: 457133 bytes Concurrency Level: 20 Time taken for tests: 3.953 seconds Complete requests: 1000 Failed requests: 0 Keep-Alive requests: 0 Total transferred: 457467000 bytes HTML transferred: 457133000 bytes Requests per second: 252.96 [#/sec] (mean) Time per request: 79.064 [ms] (mean) Time per request: 3.953 [ms] (mean, across all concurrent requests) Transfer rate: 113009.16 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 2 5 4.9 4 43 Processing: 4 73 38.9 69 368 Waiting: 2 36 20.6 33 129 Total: 7 78 39.0 74 370 Percentage of the requests served within a certain time

Leggi Tutto »

LiteSpeed – Prestashop Login Error 500 [STDERR] PHP Fatal error: Uncaught Error: Call to undefined function Httpful\curl_init()

Errore: Error 500 quando si prova a fare il login dal frontend (redirect login=back=my-account) CMS: Prestashop 1.7.6.9 Server: Ubuntu 20.04+Litespeed Enterprise Cache: LiteSpeed Cache Log: /usr/local/lsws/logs/error.log [STDERR] PHP Fatal error: Uncaught Error: Call to undefined function Httpful\curl_init() Soluzione: sudo apt-get install lsphpXX-curl

Leggi Tutto »

Obsolescenza di un Computer da lavoro

Perchè dovreste acquistare solamente computer di fascia alta per lavorare? Bella domanda, visto che in questi giorni sto cambiando il mio computer ho colto l’occasione per fare due ragionamenti! Ho deciso che era venuto il momento di cambiare computer per l’ufficio, non che fossi particolarmente scontento della mia vecchia macchina, ma in alcune applicazioni specifiche iniziava a far sentire i suoi anni! Detto fatto PC nuovo, come sempre ho preso il meglio che fosse disponibile sul mercato per le mie esigenze e a conti fatti parliamo di circa 3’000€ di investimento con singola scheda video (non ho necessità videoludiche o di rendering). Mi sono messo a fare due conti sulla vecchia macchina che ancora mi permette di lavorare molto meglio di qualsiasi computer di fascia media e quello che ne è uscito è abbastanza interessante! All’epoca scelsi un computer con caratteristiche al massimo della categoria, quindi paragonabile a quello nuovo. La CPU ha 10 anni e non è mai stata sostituita. La Scheda Video è stata aggiornata pochi mesi fa con un modello top di gamma del 2016. La Ram negli anni è stata raddoppiata , e il vecchio Disco è stato sostituito con alcuni SSD alcuni anni fa. La

Leggi Tutto »

Configurare una connessione Split Tunnel VPN L2TP per accedere alla LAN remota tramite VPN e navigare in locale tramite la propria connessione internet

Quando configuri una VPN L2TP di default Windows imposta la connessione per trasferire tutto il traffico verso l’esterno tramite la nuova VPN. Questo potrebbe essere un problema nel caso in cui la connessione del sito remoto non sia molto performante! Il rischio è quello di sovraccaricare il sito remoto con il traffico locale del proprio computer verso internet! Se volete configurare Windows perchè permetta l’accesso alla LAN remota tramite VPN e a tutti i computer sotto di essa, ma lasciare il traffico verso internet in uscita dal vostro computer sulla connessione internet locale, dovete impostare la connessione VPN affinchè NON inoltri tutto il traffico di rete sul tunnel L2TP! Configurare una VPN split tunnel Per fare questo sono necessari 2 passaggi: Configurare la connessione VPN perchè NON utilizzi il default gateway per tutte le richieste Configurare una mappa di routing per accedere alla rete LAN remota! Per disabilitare il default gateway della VPN dovete aprire le impostazioni di rete (Dalla barra di stato tasto destro sull’icona di rete, apri impostazioni di rete e internet”. Ora nella nuova schermata di rete windows 10 selezionate una scheda di rete sulla sinistra (Ethernet o Wifi). In alto a destra scegliete “Modifica opzioni scheda”.

Leggi Tutto »

Il tentativo di connessione L2TP non è riuscito perché il livello sicurezza ha riscontrato un errore di elaborazione durante le prime negoziazioni con il computer remoto.

Se stai avendo problemi a collegarti ad una VPN L2TP tramite Windows 10 o Windows 11, ecco la “soluzione” al problema! In data 12/01/2022 Microsoft ha rilasciato un aggiornamento combinato di sicurezza per Windows 10 e Windows 11 che ha bloccato l’accesso alle VPN L2TP! Il Messaggio di errore che Windows comunica in fase di tentativo di connessione alla VPN L2TP è il seguente: “Il tentativo di connessione L2TP non è riuscito perché il livello sicurezza ha riscontrato un errore di elaborazione durante le prime negoziazioni con il computer remoto.” Se in questo momento stai avendo problemi a collegarti alla tua VPN L2TP da Windows 10 o Windows 11, e ricevi il messaggio di errore elaborazione, non disperare! Ecco una soluzione per risolvere questo problema! Per ripristinare l’accesso alle tue PVN dovrai disinstallare un aggiornamento di Windows Update, precisamente il KB5009543 per Windows 10 e KB5009566 per Windows 11! Per disinstallare gli aggiornamento di sicurezza puoi seguire questi due metodi: 1) Tramite prompt dei comandi: wusa /uninstall /kb:5009543 for Windows 10 wusa /uninstall /kb:5009566 for Windows 11 2) Tramite Windows Update cercando “Visualizza Cronologia degli Aggiornamenti”, poi scegliendo “Disinstallare gli aggiornamenti” e rimuovendo l’aggiornamento incriminato KB5009543 o KB5009566

Leggi Tutto »

Prestashop .7.6 and 1.7.7 make birthday (age) mandatory and limit 18+ years old

Create a new override file in /override/classes/form/CustomerFormatter.php $this->language = $language; parent::__construct($translator,$language); } public function getFormat() { $format = parent::getFormat(); //override/add all customisations for fields $format[‘birthday’] = (new FormField()) ->setName(‘birthday’) ->setType(‘text’) ->setLabel( $this->translator->trans( ‘Birthdate’, [], ‘Shop.Forms.Labels’ ) ) ->addAvailableValue(‘placeholder’, Tools::getDateFormat()) ->addAvailableValue( ‘comment’, $this->translator->trans(‘(E.g.: %date_format%)’, array(‘%date_format%’ => Tools::formatDateStr(’31 May 1970′)), ‘Shop.Forms.Help’) ) ->setRequired(true); //As addConstraints method is private we need to call the logic here. We don’t need to iterate over all the fields again, just the changed ones. $constraints = Customer::$definition[‘fields’]; $field = $format[‘birthday’]; if (!empty($constraints[$field->getName()][‘validate’])) { $field->addConstraint( $constraints[$field->getName()][‘validate’] ); } return $format; } } Create a new file in /override/classes/Validate.php } } Change translation to include “You must have 18+ years” in the error message shown in front office. Remember to restart php (fpm or apache) to clear opcache and delete /var/cache/* data to regenerate override sudo service php7.2-fpm restart sudo rm -rf var/cache/*

Leggi Tutto »

Certbot e auth_basic in Nginx

Hai bisogno di consulenza o assistenza? Contattami Ora! Matteo Lavaggi – Sistemista esperto in consulenza informatica e Marketing Digitale In questo articolo vediamo come rendere compatibile uno dei virtualhost nginx configurati sul vostro server, con il plugin certbot per verificare il dominio in fase di rinnovo del certificato. In questo articolo ⇒ https://www.matteolavaggi.it/rinnovo-dei-certificati-letsencrypt-su-ubuntu-server-in-configurazione-nginx-reverse-proxy-ssl-apache-web-server-o-nginx-web-server-ssl-php-fpm-sotto-cloudflare/ abbimo visto come configurare tutti i virtualhost nginx per funzionare con il plugin certbot sotto cloudflare tramite verifica webroot. Un ulteriore upgrade che potrebbe rendersi necessario è quello di bypassare la verifica auth_basic presente in uno o più virtualhost. Con questa modifica il plugin certbot sarà in grado di bypassare la richiesta user password e procedere alla verifica del dominio! Quello che dovete fare è aggiungere alla location specifica /.well-known (vedi articolo precedente), la direttiva seguente: location /.well-known {  auth_basic off; alias /var/www/certbot/.well-known; } ENJOY Hai bisogno di consulenza o assistenza? Contattami Ora! Matteo Lavaggi – Sistemista esperto in consulenza informatica e Marketing Digitale

Leggi Tutto »

Rinnovo dei certificati letsencrypt su ubuntu server in configurazione nginx (reverse proxy ssl) + apache (web server) o nginx web server ssl + php-fpm sotto cloudflare

Hai bisogno di consulenza o assistenza? Contattami Ora! Matteo Lavaggi – Sistemista esperto in consulenza informatica e Marketing Digitale Questa è una configurazione tipo che potete ritrovare in numerosi server web: CLOUDFLARE PROXY  -> NGINX SSL PROXY -> APACHE o PHP FPM Sebbene l’utilizzo di cloudflare permetta di NON usare un terminatore ssl lato server (il traffico tra il vostro server web e cloudflare potrebbe essere in chiaro), questo non è consigliato per svariati motivi (sicurezza, rimozione del proxy cloudflare, accesso diretto al web server, ecc). La soluzione ottimale è quindi quella di utilizzare la cifratura SSL anche tra il web server e il proxy cloudflare, tramite un certificato SSL. Il problema di questa configurazione è che rende “difficile” l’utilizzo del plugin certbot sul vostro server, in quanto la verifica del dominio utilizzata di default dallo stesso FALLISCE in uno scenario di questo tipo. Una soluzione semplice è quella di utilizzare il plugin certbot in modalità webroot, in questo modo si istruisce il plugin ad utilizzare una directory precisa per la verifica del dominio, invece che risolvere il server_name e seguire il percorso che farebbe una normale “chiamata” allo stesso dominio (NGINX->APACHE per esempio). Il funzionamento è molto semplice: Si

Leggi Tutto »