Fix Hibernation after swap partition resize

Hibernation can be an important feature for many users: it allows people to turn on the PC and get it in the exact state session of when it was turned off (open files, running applications, configurations edited, terminals, etc.).

This feature is based on usage of swap partition. In poor words: when user hibernate PC, all content of RAM memory is stored in this partition and is fetched at next startup time. For this reason, the swap partition must be bigger (or at least equal) than RAM size and, in case of RAM update, must be enlarged.

The problem

The problem is that, after a resize operation, swap partition’s UUID is modified and initramfs is unable to recognize swap partition. This means that when you try to hibernate your PC, it don’t wake up correctly and boots as you turned it off normally.

The solution

The solution is very simple: after swap partition resize operation, let’s inform initramfs about new UUID. Let’s see how.

Continue Reading

Riattivare ibernazione dopo il ridimensionamento della partizione swap

L’ibernazione può essere un funzionalità importante per molti utenti: essa permette di spegnere il PC ed ottenere, alla riaccensione, la sessione nello stesso identico stato di quando è stata arrestata (file aperti, applicazioni caricate, configurazioni modificate, terminali, ecc.).

Questa funzionalità si basa sull’utilizzo della partizione di swap. In parole povere: quando l’utente iberna il PC, tutto il contenuto della memoria RAM viene conservato in questa partizione e viene recuperato all’avvio successivo. Per questa ragione, la partizione di swap deve essere più grande (o almeno pari) della dimensione della RAM e, in caso di un aggiornamento di RAM, va ridimensionata.

Problema

Il problema è che, dopo un operazione di ridimensionamento, l’UUID della partizione di swap viene modificato e initramfs non riesce più a riconoscere la partizione swap. Ciò significa che quanto proverete ad ibernare il PC, esso non si riattiverà nel modo corretto e si avvierà come se fosse stato spento normalmente.

Soluzione

La soluzione è molto semplice: dopo il ridimensionamento della partizione di swap, informiamo initramfs riguardo il nuovo UUID. Vediamo come.

Continue Reading

Resize multiple images using Linux

Resize an image is a simple operation: there are many software able to do that. The most obvious are Gimp or Photoshop. But what’s the right procedure to resize lots of images?

Imagine you have to prepare thumbnails for a gallery or resize all images to insert into a presentation or, again, reduce photos to send them by email, etc.

Open each image with Gimp or Photoshop and resize them one by one is foolish. How can we perform this operation in a simple way and without stress?

The solution

Use Linux command line. Resize multiple images with Linux is very simple by using ImageMagick suite.

First of all, let’s install ImageMagick that includes lots of tools to manipulate images. To do that, execute following command in terminal window:

Continue Reading

Ridimensionare un gran numero di immagini con Linux

Il problema

Ridimensionare un immagine è un’operazione semplice: esistono molti software in grado di farlo. I più conosciuti sono Gimp e Photoshop. Ma qual’è la giusta procedura per ridimensionare un gran numero di immagini?

Immaginate di dover preparare le anteprime per una galleria o di dover ridimensionare tutte le immagini da inserire in una presentazione o, ancora, di dover ridurre delle foto da mandare via email, e così via.

Aprire le immagini con Gimp o Photoshop e ridimensionarle una ad una sarebbe una follia. Come si può eseguire questa operazione in modo semplice e senza stress?

La soluzione

Utilizzare la riga di comando di Linux. Ridimensionare più immagini con Linux è molto semplice se si utilizza la suite ImageMagick.

Continue Reading

Processi PHP con Gearman e Supervisor

Problema

Spesso in un progetto PHP capita di dover eseguire operazioni in modo asincrono. Alcuni esempi sono: lavorazione di code email, indicizzazione di dati, calcoli che richiedono lunghi tempi di elaborazione.

Prassi comune è gestire tali operazioni utilizzando cron per eseguire processi in backgroud. Tuttavia, utilizzare cron richiede espedienti per evitare l’accavallemento delle esecuzioni e ci costringe ad implementare procedure specifiche e meccanismi di stoccaggio dei dati necessari per l’elaborazione.

Soluzione: Gearman + Supervisor

La soluzione che concerne Gearman e Supervisor, invece, non richiede alcun meccanismo di data storage e fornisce un modo molto semplice per sviluppare processi in PHP.

Continue Reading