Creare una funzione personalizzata in VBA per Excel che restituisca una matrice

Obiettivo: creare una funzione personalizzata in Excel che restituisca come risultato una matrice n x m

Supponiamo di voler realizzare una funzione personalizzata in Excel che effettui la medesima operazione di MATR.PRODOTTO, ma allo stesso tempo consideri sempre la matrice in ingresso A come una matrice n x 1 e la matrice in ingresso B come una matrice 1 x m. Facciamo questa semplificazione a titolo di esempio.

Quindi abbiamo due matrici tipo queste:

A =  \begin{bmatrix}  a_1 \\ a_2 \\ a_3  \end{bmatrix}    B =  \begin{bmatrix}  b_1 & b_2 & b_3  \end{bmatrix}

Il loro prodotto risulterà così:

A \times B=  \begin{bmatrix}  a_1b_1 & a_1b_2 & a_1b_3 \\  a_2b_1 & a_2b_2 & a_2b_3 \\  a_3b_1 & a_3b_2 & a_3b_3  \end{bmatrix}

Nel nostro modulo aggiungiamo ora il seguente codice:

Notiamo che in questo modo vengono percorsi tutti i valori del range, indipendentemente dalla loro geometria, come se fossero in una riga o colonna.

Per testare il risultato possiamo fare una verifica su un esempio con la funzione MATR.SOMMA.PRODOTTO. Nel caso specifico creiamo una versione e parametrizzabile del SOMMA.PIÙ.SE.

A1:A7 e B1:B7 sono riempiti con valori da esempio. E2:H2 saranno quattro spazi dove potremo inserire, a nostro piacimento da 0 a 4 nominativi da verificare. In E3 abbiamo la seguente formula di controllo (NB: fatta con MATR.PRODOTTO):

=MATR.SOMMA.PRODOTTO(–(A2:A7=E2:H2);MATR.PRODOTTO(B2:B7;E1:H1))

In E4 aggiungiamo invece la formula con la nostra versione di MATR.PRODOTTO:

=MATR.SOMMA.PRODOTTO(–(A2:A7=E2:H2);MATH_MATRICE(B2:B7;E1:H1))

Scopo raggiunto.

Creare mappa personalizzata in Civilization VI

Creare una mappa personalizzata in Civilization VI è estremamente facile (e anche molto divertente).

Il gioco integra un World Builder a cui si può accedere dai contenuti aggiuntivi.

L’editor non è dei migliori, dal punto di vista grafico e dell’utilizzabilità, però fa il suo sporco dovere. Basterà fare un po’ di prove per capire come funziona. Una caratteristica in particolare, da tenere a mente, è l’inserimento delle città stato, che normalmente dovrebbe avvenire tramite script e che altrimenti dobbiamo mettere a mano.

Per farlo sarà sufficiente impostare il leader desiderato come “caratteristica del terreno“, nel modo seguente:

Clicchiamo sulla casella nella quale vogliamo mettere la città stato e poi impostiamo la Start Position su Leader e nel menu a tendina di sotto il nome della città stato che vogliamo inserire.

Una volta creata la nostra mappa premiamo ESC e salviamo dal menu, come se stessimo salvando il gioco.

Da impostazione predefinita la mappa viene salvata con estensione *.Cvi6Map in:

%UserProfile%\Documents\My Games\Sid Meier’s Civilization VI\Saves\WorldBuilder

A questo punto per aggiungerla alle mappe giocabili nel gioco è sufficiente apportare un paio di modifiche.

Nel mio esempio il gioco è installato su Steam, quindi ci spostiamo su:

%ProgramFiles%\Steam\steamapps\common\Sid Meier’s Civilization VI\Base\Assets\Configuration\Data

Qui dentro si trovano i file XML con tutte le mappe giocabili nel gioco, possiamo aprirne alcuni per capire come funziona la cosa e poi crearne uno nostro personale, da aggiungere a quelli esistenti. Il file si potrebbe chiamare per esempio LeMieMappe.xml (faccio notare come il nome del file è assolutamente irrilevante, purché sia un file XML e probabilmente non contenga caratteri speciali).

Adesso vediamo un esempio di configurazione base (nel mio esempio ho spostato la mappa dalla posizione di salvataggio in

%ProgramFiles%\Steam\steamapps\common\Sid Meier’s Civilization VI\Base\Assets\Maps\Extra (ma questo cambiamento non è obbligatorio)

Faccio notare alcune caratteristiche interessanti:

Maps: definisce il percorso della mappa, il nome e la descrizione che appariranno a video, oltre che un indice per l’ordinamento, ovvero la posizione in cui farla apparire assieme a tutte le altre mappe

MapSizes: definisce i parametri entro i quali può essere configurato il gioco, oltre che la dimensione predefinita, il numero minimo e massimo di giocatori ecc.

In questo unico file potremmo aggiungere n mappe, specificando i dettagli in entrambi i tag.

concurrent.futures.process.BrokenProcessPool eseguendo QuantumProgram di qiskit-sdk

Soluzione: il codice eseguito in Python deve essere protetto, o meglio “guarded”, ciò significa che il QuantumProgram deve essere eseguito dentro ad un’istruzione if __name__ == “__main__”

Compilando il programma nell’esempio nel qiskit-sdk-py si incorre nel seguente errore durante l’esecuzione:

Questo accade perché si tentano di avviare delle biforcazioni del processo originale senza aver utilizzato un idioma appropriato per il modulo. Per correggere il problema è sufficiente reimpostare il codice eseguibile in questo modo:

Ambiente di prova:

  • Version used: Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32
  • Environment name and version (e.g. Python 3.6.1): Python 3.6.3
  • Operating System and version: Microsoft Windows 10 Pro 10.0.16299 build 16299

 

Pubblicato originariamente su Github.

Usando la rotellina su Google Maps lo zoom è troppo veloce

Problema: scorrendo la rotellina su Google Maps per lo zoom, la mappa si rimpicciolisce o ingrandisce troppo rapidamente e senza possibilità di calibrare l’ingrandimento

Soluzione: probabilmente dipende dal software/driver del mouse, nel mio caso dal software Logitech Options (modello mouse M310)

Continua l’epopea del mouse con la rotellina che fa male.

Dopo aver scaricato Logitech Options mi accorgo che, su Google Maps, quando si utilizza la rotellina per ingrandire, la mappa letteralmente fugge via, ingrandendosi o rimpicciolendosi a dismisura.

Si passa da:

A qualcosa tipo:

E viceversa, con una sola rotazione del mouse.

Disinstallando il programma, che tra l’altro riceveva continui aggiornamenti, il tutto è tornato regolare.

Extreme Injector v3.7.3 (funzionante su Windows 10)

L’altro giorno cercavo di installare Cinematic Tools per Assassin’s Creed Unity, ma ho scoperto che nel download del sito ufficiale era incluso uno Extreme Injector non compatibile con Windows 10. Dopo un po’ di ricerca ho trovato la versione funzionante scaricabile dalla pagina ufficiale del forum MPGH.net.

Questa è l’interfaccia che dovrebbe apparire se va tutto bene.

HASH SHA256 del file (controllato con antivirus Kaspersky IS2017): 93DDA8B91586ACF53C70DFD3F512FCFF5793A9AF69E174D7E3AD67190361BCE8

Per farlo funzionare è necessario avere installato il Microsoft Visual C++.

In teoria basterebbe la versione 2017, ma per precauzione ho installato anche la 2015.

Scaricare Visual C++ Redistributable per Visual Studio 2015

Download ufficiale

Scaricare Microsoft Visual C++ Redistributable per Visual Studio 2017

Downloads | IDE, Code, & Team Foundation Server | Visual Studio

Una volta entrati nella pagina scendere in fondo e cliccare su Altri strumenti e framework

Calcolare indirizzo IP e rete in PHP

In rete si trovano già numerosi calcolatori di indirizzi IP e rete, come per esempio questo oppure questo.

Prendendo spunto da essi ecco una classe in PHP per ottenere i medesimi risultati. Lo scopo principale in questo caso è utilizzare le operazioni binarie in PHP per calcolare i vari valori di ID Rete, Subnet mask, ecc.

Ecco di seguito un esempio di utilizzo:

 

Installare macOS 10.13 High con VirtualBox su Windows

Cercando un modo di installare il Mac su una macchina virtuale su Windows ho trovato questa fantastica guida online:

Steps to Install macOS 10.13 High Sierra on VirtualBox on Windows

Gli unici unici problemi che mi si sono presentati riguardavano la fase di avvio, quando la macchina virtuale partiva con schermo nero senza fare altro apparentemente.

Nel mio caso il problema è stato risolto modificando nella maniera seguente le impostazioni suggerite:

Versione: Mac OS X (64–bit) e non quelle suggerite in automatico

Chipset: PIIX3 (la dimensione della RAM invece è a piacere e non inficia il funzionamento della macchina, a parte la velocità ovviamente)

Cambiando questi due parametri la macchina virtuale si è avviata senza problemi.

Piccola curiosità:

Le istruzioni al passaggio 5 possono essere seguite da CMD oppure da PowerShell. Nel caso della PowerShell basta anteporre il i caratteri ./ all’eseguibile, ottenendo la seguente serie di comandi:

./VBoxManage.exe modifyvm “macOS 10.13 High Sierra” –cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff
./VBoxManage setextradata “macOS 10.13 High Sierra” “VBoxInternal/Devices/efi/0/Config/DmiSystemProduct” “iMac11,3”
./VBoxManage setextradata “macOS 10.13 High Sierra” “VBoxInternal/Devices/efi/0/Config/DmiSystemVersion” “1.0”
./VBoxManage setextradata “macOS 10.13 High Sierra” “VBoxInternal/Devices/efi/0/Config/DmiBoardProduct” “Iloveapple”
./VBoxManage setextradata “macOS 10.13 High Sierra” “VBoxInternal/Devices/smc/0/Config/DeviceKey” “ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc”
./VBoxManage setextradata “macOS 10.13 High Sierra” “VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC” 1

Queste istruzioni vanno a modificare un file macOS 10.13 High Sierra.vbox (dipende come avete chiamato la macchina) che si trova nella sua cartella in VirtualBox VMs.

Si tratta di un file XML dove appariranno istruzioni del tipo:

 

 

Mixed Content: The page at ‘https://’ was loaded over HTTPS, but requested an insecure script ‘http://’

Soluzione: Se utilizzate WordPress potete utilizzare un plugin come Really Simple SSL, altrimenti assicuratevi che tutti gli indirizzi nella pagina incriminata siano del tipo HTTPS

Se il browser (in questo caso Chrome) vi segnala il seguente errore

Significa che la pagina che state visitando sta cercando di caricare del contenuto da una connessione non protetta (HTTP) su una connessione protetta (HTTPS). Il problema si risolve semplicemente cambiando il protocollo sugli indirizzi incriminati, oppure forzando un redirect completo della pagina su HTTPS.

Il terzo tasto del mouse smette di funzionare

Soluzione: cliccare velocemente tante volte sulla rotellina finché non si riprende

Eh sì, sembra una cosa quasi magica, lo so. Ma partiamo dall’inizio. Stamani ad un tratto mi rendo conto che la rotellina del mouse non permette più il click. Di conseguenza per chiudere le schede all’interno di Chrome bisogna andare sulla piccola X anziché poter cliccare con il cosiddetto terzo tasto (cliccare con la rotellina insomma). Uhm… Cosa potrà mai essere?

Il mouse è nuovo, comprato a luglio. Possibile che si sia già danneggiato? Magari potrebbe essere un problema di software.

Prima di ipotizzare il danno mi scarico il Logitech Options nella speranza che installi anche dei driver (comunque non lo fa) e permetta la gestione del mouse, o per lo meno una schermata dove si possa verificare se il famigerato click arriva o no al computer. Comunque niente, la situazione non cambia.

Che dipenda da un aggiornamento maledetto di Windows 10? Difficile a dirsi.

Indago in giro e trovo una soluzione di sostituzione di alcuni componenti sulla PCB del mouse.

In fondo all’articolo qualcuno suggerisce di gettare il mouse alcune volte contro il muro!

Dai non potrà funzionare! E invece sì, nessuna sostituzione, niente riparazioni, un semplice frenetico e squilibrato click sulla rotellina e tutto torna operativo come per magia.

Probabilmente dentro ci sarà qualcosa di spostato, ma se tanto mi dà tanto, per ora è tornato a funzionare.

 

Errore contenente l’URL “http://hubblecontent.osi.office.net/” quando si inserisce un’icona o un’immagine

Finalmente la Microsoft ha trovato una soluzione, anche se temporanea, al problema che si manifestava quando si cercavano di inserire delle Icone in PowerPoint.

In particolare quando si andava a cliccare qui

Compariva il seguente messaggio di errore:

La soluzione consiste nell’andare su Opzioni Internet (in Windows 10 basta cercare il nome nel menu)

E poi dalla scheda Avanzate trovare la voce Non salvare pagine crittografate su disco e togliere la spunta.

A quel punto il sistema di inserimento delle icone dovrebbe tornare a funzionare.

Si tratta di una soluzione provvisoria, così classificata dalla stessa Microsoft, in quanto altera quello che dovrebbe essere il normale funzionamento del sistema che appunto non dovrebbe salvare le pagine crittografate sul disco.

Fonte: qui l’articolo originale sul sito ufficiale di MS Office