Oggi e domani sono accessibili gratuitamente tutti i corsi di VueMastery su Vue.js.
Non ho un idea sull’argomento, ma probabilmente lunedì, sfruttando l’isolamento forzato, ne saprò qualcosa di più.
Proudly debugging the system since 1981
Oggi e domani sono accessibili gratuitamente tutti i corsi di VueMastery su Vue.js.
Non ho un idea sull’argomento, ma probabilmente lunedì, sfruttando l’isolamento forzato, ne saprò qualcosa di più.
Può essere necessario loggare tutto ciò che fa una determinata classe che però fa parte di una libreria e non contiene tutti i log desiderati. Supponendo che non sia necessario debuggare la classe in sè, che fa quello che deve fare nel modo giusto, ma come viene utilizzata all’interno del progetto ho trovato che realizzare un proxy dinamico sia una soluzione efficace e molto versatile. Anche perchè fatto uno, va bene per qualsiasi classe.
La classe che andiamo da realizzare fa due cose :
Implementare InvocationHandler significa implementare il metodo invoke:

invoke di fatto richiama il metodo del target e logga nome del metodo, parametri e risultati. Più la gestione delle eccezioni del metodo target e di tutte le altre possibili eccezioni.

Il metodo wrap permette di avere la nostra classe ben wrappata con un solo comando.
Visto che tutto questo mi ha permesso oggi di scoprire un utilizzo un pò insensato dell’accesso ai dati con conseguente lentezza ho pensato di condividerlo.

Contesto: classe Java, framework Wicket (ma non è significativo), IDE Intellij.
Quale sarà mai il motivo percui, un anonimo programmatore che mi ha preceduto, può aver pensato che avesse senso fare un metodo privato, che nel nome richiama l’idea di un factory method, che ritorna un campo della sua stessa classe?
E poi perchè commentarlo con // (5) ?
Continua a leggere“Focusing On Coding Inflates the Importance of Finding the “Right” Method to Solve a Problem Rather Than the Importance of Understanding the Problem. Before we start working on a solution to a coding problem we have to decide what the problem is–if we even have one to begin with. If we let ourselves become fixated on how to solve a problem via code–regardless of if it is a programming problem or not–and lose sight of why, we gain nothing.”
Che è più o meno:
Concentrarsi sulla programmazione porta a concentrarsi sulla ricerca del modo “giusto” di risolvere un problema invece che concentrarsi l’importanza di capire il problema stesso.
Prima di iniziare a programmare dobbiamo capire il problema e se veramente esiste. Se ci fissiamo su come risolvere un problema con la programmazione, senza considerare se questo è un problema di programmazione o meno, e dimentichiamo il perché lo stiamo risolvendo, non guadagniamo nulla.
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.
Prima versione del progetto di importazione dei post da vari social a wordpress. Per ora supportato solo delicious.
https://bitbucket.org/sgalliani/socialimporter/src
Mi devo segnare la vignetta di oggi di xkcd. Può tornare utile in caso di spaghetti-code: http://xkcd.com/1513/
Esercizi di programmazione con commenti e suggerimenti social. Interessante… Ma pare nessun supporto per java http://educationware.net/exercism-io-become-a-better-programmer/
Pl/Sql implementa la definizione probabilistica di deviazione standard, ovvero :
con la comoda funzione STDDEV, mentre a me (e forse non solo a me) serviva la versione statistica, ovvero :
SQRT((1 / COUNT(*)) * (SUM( $colonna * $colonna ) – (COUNT(*) * AVG( $colonna ) * AVG( $colonna ))))
Immagini da wikipedia
Appunti sugli speech del secondo giorno :


Repository ufficiale delle slides su slideshare .
© 2025 b0sh.net
Tema di Anders Noren — Su ↑