Come si verificano I memory leak in Java

Come si verificano I memory leak in Java

Qualche giorno fa ho letto un articolo molto interessante: “How Memory Leaks Happen in a Java Application”.

Uno dei vantaggi del linguaggio Java è quello di gestire la deallocazione degli oggetti in maniera automatica attraverso il “garage collector”. In particolari circostanze questa gestione può fallire e possono verificarsi dei memory leak.

In informatica, un memory leak (“perdita o fuoriuscita di memoria”) è un particolare tipo di consumo non voluto di memoria dovuto alla mancata deallocazione dalla stessa, di variabili/dati non più utilizzati da parte dei processi. (Wikipedia)

I memory leak non dipendono da una errata implementazione del garbage collector,  ma da un uso improprio degli oggetti costruiti dall’applicazione. È un classico problema di PEBCAK (Problem Exists Between Chair And Keyboard), ed è tra i più difficili da diagnosticare.

Continua a leggere Come si verificano I memory leak in Java

UIImageView – pinch to zoom in iOS Swift 3+

Avete una UIImageView e volete dare la possibilità all’utente di ingrandire l’immagine e muoverla con un “pizzico”?

SOLUZIONE: aggiungere una scrollview e tre righe di codice 🙂

  • Aggiungiamo una ScrollView che conterrà la UIImageView

ScrollView > ImageView

  • Modifichiamo il ViewController in modo da implementare il protocol (o interfaccia) UIScrollViewDelegate e aggiungiamo queste righe di codice:
import UIKit

class ImageViewController: UIViewController,  UIScrollViewDelegate {
//MARK: - controls
  
    @IBOutlet weak var imgView: UIImageView!
    @IBOutlet weak var scrollView: UIScrollView!

//MARK: - View Controller methods

    override func viewDidLoad() {
        super.viewDidLoad()
        scrollView.delegate = self
        scrollView.minimumZoomScale = 1.0
        scrollView.maximumZoomScale = 6.0
    }

//MARK: - UIScrollViewDelegate implementations

    func viewForZooming(in scrollView: UIScrollView) -> UIView? {
        return imgView
    }
}

Finito. Non è necessario altro.

Happy coding… 🙂

SCP Resume

Non so voi, ma a me capita spesso di trasferire file con scp da e verso un server remoto. La cosa più frustrante succede quando stai trasferendo un file abbastanza grande e la connessione scp cade. Spesso mi son chiesto perché scp non supporti il resume.

La soluzione, comunque, è abbastanza semplice: usare rsync! ;)

Esempio:

Se per trasferire il file abbiamo utilizzato scp:

scp big.file [email protected]:~

per ripristinare la connessione:

rsync -r --partial --progress --rsh=ssh big.file [email protected]:~

Ancora più semplice se creiamo un alias all’ultimo comando come scpresume