Proudly debugging the system since 1981

Autore: bosh (Pagina 17 di 48)

Come decidere quanti chilometri correre

“Per calcolare quanto correre in una settimana e quanto devono essere lunghi i tuoi lunghi […] esiste una formula molto semplice. Distanze fino alla Mezza Maratona: la percorrenza settimanale dovrebbe essere da 3 volte la distanza di gara in su. Mentre il lungo (da farne 2 o 3 durante la preparazione) dovrebbe misurare almeno i 2/3 della gara. […] Maratona: in questo caso, chiaramente, il fattore di moltiplicazione si riduce a 2 per la distanza di gara, mentre i lunghi rimangono sempre i 2/3.”
http://www.runlovers.it/2016/come-decidere-quanti-chilometri-correre-in-base-al-tuo-obiettivo/

Sincronizzare i file con un drive esterno

Non ho mai trovato un programmino semplice e gratuito per mantenere aggiornata la copia di una directory su un disco esterno. Ci sono evoluti programmi commerciali che lo fanno, ma per una banalità del genere non voglio pagare. Ci sono i tools del sistema operativo ma richiedono troppa attenzione (no, se il file è già presente nella cartella di destinazione e ha la stessa data di ultima modifica non devi sovrascriverlo se no ci mettiamo una vita…). Ci sono ottimi tools open source, come rsync, ma che sono molto complessi e, nel caso di quest’ultimo ottimizzati per la sincronia tra due dispositivi intelligenti (2 pc, 2 server…) in modo da ridurre la banda utilizzata.

Per cui, vista la banalità della cosa, ho deciso di dedicare qualche ora a scriverne uno, invece che a provare l’ennesima cosa che non fa quello che voglio.

Requisiti che mi sono dato :

  • Sincronia unidirezionale da una cartella sorgente ad una di destinazione
  • Possibilità di scegliere se rimuovere o meno i file cancellati nella sorgente anche nella destinazione
  • Nessuna richiesta di conferma all’utente
  • Parametrizzazione da linea di comando, cosi si fa un bello script e non ci si pensa più
  • Resistenza all’errore. Se fallisce la copia di un file o l’esplorazione di una cartella si passa alla successiva

La versione molto alpha (ma che già fa tutto quello che voglio) è disponibile a questo indirizzo : https://bitbucket.org/sgalliani/mysync/downloads/20160131%20mySync.zip

Fold

Mi ci è voluta più di qualche imprecazione per arrivare a questa implementazione :

fun Shop.getSetOfProductsOrderedByEveryCustomer(): Set<Product> {
    return customers.fold(allOrderedProducts, {
        orderedByAll, customer -> 
orderedByAll.minus( orderedByAll.filter { !customer.orderedProducts.contains(it) }) })
}

Salvo poi scoprire nelle soluzioni che esisteva il magico intersect

fun Shop.getSetOfProductsOrderedByEveryCustomer(): Set<Product> {
    // Return the set of products ordered by every customer
    return customers.fold(allOrderedProducts, {
        orderedByAll, customer ->
        orderedByAll.intersect(customer.orderedProducts)
    })
}

L’esercizio era questo : https://github.com/Kotlin/kotlin-koans/blob/master/src/ii_collections/_22_Fold_.kt

Comunque Kotlin è bellissimo.

« Articoli meno recenti Articoli più recenti »

© 2025 b0sh.net

Tema di Anders NorenSu ↑