[VBA] Tema musicale di Tetris eseguito da una macro in VBA su Excel

Ispirato da un articolo che ho trovato online sull’argomento (Tetris Theme Song Using Processing) ho deciso di riprodurre il medesimo risultato in VBA su Excel, riproducendo quindi il tema musicale di Tetris tramite una macro per Excel.

Anzitutto importiamo dal kernel32 di Windows la funzione appropriata per eseguire un Beep, riproducendo quindi un suono, nel modo seguente:

La funzione accetta due argomenti: frequenza in Hz e durata in ms. Quindi per eseguire un 1 beep a 800Hz di 0,5 secondi, dovremo scrivere: Beep 800, 500

Detto questo voglio anzitutto riconvertire le funzioni dell’esempio nel link in VBA, creando un vettore di frequenze ed uno dei tempi, nel modo seguente:

Faccio notare che per la conversione dello spartito (che si può trovare al seguente link) è stata usata una tabella di conversione simile a questa.

Detto questo voglio riportare la medesima tabella di conversione in Excel, in un foglio che chiameremo NOTE. Il risultato che otterremo sarà simile a questo:

A questo punto voglio creare un altro foglio, chiamato SPARTITO, dove creeremo tre colonne, una nella quale scegliere le note e l’altra dove inserire i tempi come ottavi di nota.

A questo punto associamo al pulsante Suona la seguente macro:

Le frequenze vengono recuperate dal foglio NOTE.

Da qui si può scaricare il file excel comprensivo di macro: excel VBA – note musicali – tema tetris

Impostazione percorso della metropolitana in Resident Evil 3 Remake

Per risolvere l’enigma della metropolitana, in Resident Evil 3 Remake, bisogna anzitutto riattivare la corrente elettrica (questo passaggio è abbastanza semplice, basta abbattere i ragni che infestano la centrale elettrica).

Una volta riattivati i generatori per l’energia elettrica della centrale, possiamo tornare alla sala di controllo della metropolitana di Raccoon City. Qui dovremo impostare il percorso, seguendo la mappa delle stazioni possibili. La combinazione corretta è quella dell’immagine di seguito:

La combinazione in particolare è: FA 02 – RA 03 – SA 02 – FO 01

Le sigle rappresentano le iniziali delle varie stazioni sul percorso. Una volta attivate correttamente verrà data conferma del percorso sul pannello di controllo frontale.

Combinazione casseforti in Resident Evil 2 Remake [Leon 2nd run]

1. Ufficio ovest della Stazione di Polizia, primo piano: sinistra 9, destra 15, sinistra 7

2. Sala d’attesa al secondo piano della Stazione di Polizia: sinistra 6, destra 2, sinistra 11

3. Sala di trattamento delle fogne: sinistra 2, destra 12, sinistra 8

Combinazioni dei lucchetti in Resident Evil 2 Remake [Leon 2nd run]

1. Secondo piano Stazione di Polizia: armadietti spogliatoio delle docce – combinazione CAP

2. Terzo piano Stazione di Polizia: armadietto in fondo al corridoio – combinazione DCM

3. Ufficio Ovest, scrivania di Leon: a sinistra NED e a destra MRG

4. Stanza di Controllo nelle fognature – combinazione SZF

Schema elettrico celle in Resident Evil 2 Remake [Leon 2nd run]

Per attivare lo schema elettrico nelle celle, in Resident Evil 2, anzitutto dobbiamo procurarci i due componenti elettrici. Uno si trova nella Stanza del Generatore e l’altro nella Torre dell’Orologio (dove bisognerà risolvere l’enigma con gli ingranaggi). Una volta trovati i due componenti elettrici possiamo tornare alle celle dove vedremo una situazione del genere:

Muoviamo i singoli componenti in modo da far giungere la corrente allo snodo a destra, lo schema che dovremo ottenere sarà quello seguente:

Combinazione cassetta di sicurezza portatile R.P.D. in Resident Evil 2 Remake [Leon 2nd run]

All’interno della Stazione di Polizia, nella stanza di osservazione, accanto alla stanza degli interrogatori, si trova una cassetta di sicurezza del R.P.D., dentro la quale si trova uno dei pulsanti (chiamato pezzo di ricambio) per la tastiera della stanza degli armamenti.

ATTENZIONE! La combinazione dei tasti potrebbe cambiare, in tal caso sarà sufficiente seguire la stessa logica, segnandosi tutte le associazioni.

Per aprire la cassetta è sufficiente attivare i led in senso antiorario. Le associazioni tra led e tasti sono le seguenti:

Una delle possibili combinazioni è dunque: 1, 7, 3, 2, 4, 8, 5, 6

In sostanza è importante solamente che i led vengano attivati uno dopo l’altro in senso antiorario.

Nella lavanderia del primo piano si trova invece la seconda cassetta di sicurezza portatile, per la quale l’associazione dei tasti è la seguente:

In questo caso una delle possibili combinazioni, sempre in senso antiorario è: 1, 5, 7, 6, 2, 8, 3, 4

Medaglioni e statue in Resident Evil 2 Remake [Leon 2nd run]

Il medaglione del Leone si prende dalla Statua del Leone al secondo piano dell’ingresso della Stazione della Polizia.

La combinazione è: corona, braciere, colomba

Il medaglione dell’Unicorno si trova nella stanza in fondo al corridoio, dopo le docce al secondo piano (ci si può accedere anche dalla biblioteca, sempre al secondo piano) della Stazione di Polizia.

La combinazione è: bambini, bilancia, verme

Il medaglione della Fanciulla si trova invece al secondo piano, in fondo al ripostiglio. Per accedervi bisogna attivare l’esplosivo al C4 con il detonatore e la batteria.

La combinazione è: ariete, arpa, civetta

Configurazione Windows Server 2016 con Dominio, DNS e DHCP [per esordienti totali]

Vediamo come configurare Windows Server 2016 impostando il server come controller di Dominio (Active Directory) e configurando DNS e DHCP. Gli argomenti trattati in questo articolo saranno i seguenti:

  1. Configurazione di VirtualBox
  2. Installazione di Windows Server 2016
  3. Configurazione DHCP
  4. Configurazione del DNS
  5. Configurazione Dominio su Active Directory

Per questa guida utilizzerò una macchina virtuale configurata con VirtualBox. Prima di procedere assicuriamoci quindi di disporre di:

  1. VirtualBox installato sul computer (se vogliamo replicare l’operazione su una macchina virtuale)
  2. Un disco di installazione di Windows Server 2016

Le modalità di configurazione, a esclusione della macchina virtuale ovviamente, sono valide per qualunque Windows Server 2016.

1. Configurazione di VirtualBox

Anzitutto creiamo una nuova macchina virtuale. Per farlo apriamo VirtualBox e sotto la voce Macchina selezioniamo Nuova, possiamo anche premere CTRL+N

Diamo un nome alla nostra macchina e selezioniamo, alla voce Versione, l’opzione Windows 2016 (64-bit):

Assegniamo 4096MB di RAM (ne sarebbero sufficienti 2048, dipende da quante risorse ha la nostra macchina host) e premiamo su successivo:

Lasciamo spuntata la voce Crea subito un nuovo disco fisso virtuale:

E come tipo di disco, alla pagina successiva, scegliamo VDI (VirtualBox Disk Image):

Scegliamo di allocare lo spazio dinamicamente e procediamo oltre:

Possiamo lasciare come dimensione predefinita 50GB:

A questo punto la macchina virtuale è pronta per essere avviata. Nell’elenco delle macchine disponibili dovremmo vedere qualcosa del genere:

Clicchiamo sul tasto Avvia. Ci verrà chiesto di selezionare il dispositivo per l’installazione, scegliamo il disco o l’ISO di installazione per Windows Server 2016.

2. Installazione di Windows Server 2016

Anzitutto ci verrà chiesta la lingua in cui vogliamo configurare Windows, io lascerò tutto in italiano nel modo seguente:

Premiamo Avanti. A questo punto scegliamo Installa.

Immettiamo il codice seriale se lo possediamo, altrimenti scegliamo Non ho un codice Product Key per installare la versione di prova.

Scegliamo a questo punto la versione da installare (questa opzione dipende anche dalla versione del disco di installazione che stiamo utilizzando). Io installerò la versione Windows Server 2016 Standard (Esperienza desktop). ATTENZIONE! Installando la versione senza Esperienza desktop, si avrà accesso al sistema operativo solo da PowerShell.

Premiamo avanti e accettiamo le condizioni di licenza.

Procediamo avanti e ci verrà chiesto il tipo di installazione che intendiamo fare. Scegliamo Personalizzata: installa solo Windows (opzione avanzata).

Scegliamo il disco sul quale intendiamo effettuare l’installazione. Nel mio caso ho un unico disco e posso utilizzarlo per intero (il disco virtuale da 50GB creato all’inizio).

A questo punto comincerà la copia dei file per l’installazione, aspettiamo.

Finita l’installazione Windows si riavvierà da solo e arriverà a chiederci una password per Administrator.

Fatto tutto questo si arriverà alla schermata di accesso.

Per usare ALT+CTRL+CANC dentro a VirtualBox premiamo i tasti CTRL (destro) + CANC. Inseriamo la password e premiamo Invio.

Lasciamo avviare Windows, mentre verrà aperto il Server Manager. Ci verrà chiesto se attivare l’individuazione della rete, diciamo di .

Nel caso ci siano dei servizi non avviati sotto il Server Locale, clicchiamo sulla voce Servizi.

Clicchiamo col destro su ciascun servizio in arresto e scegliamo l’opzione Avvia servizi.

Se tutti i servizi ripartono arriveremo ad una situazione come la seguente.

Potrebbe capitare comunque, a seguito di installazioni successive, che alcuni servizi non si avviino o tendano a disattivarsi automaticamente. Di solito si tratta di servizi secondari e non essenziali all’operatività del sistema operativo, in tal caso possiamo anche ignorarli.

3. Configurazione DHCP

Procediamo adesso a configurare sul server il servizio di DHCP, in modo che il nostro server si occupi dell’assegnazione degli indirizzi all’interno della rete. Questo servizio andrà poi disabilitato sul router, per evitare conflitti tra i due. Per chi volesse approfondire il funzionamento del DHCP rimando alla pagina dedicata all’argomento su Wikipedia:

In telecomunicazioni e informatica il Dynamic Host Configuration Protocol (DHCP) (protocollo di configurazione IP dinamica) è un protocollo di rete di livello applicativo che permette ai dispositivi o terminali di una certa rete locale di ricevere automaticamente ad ogni richiesta di accesso a una rete IP. Fonte: Wikipedia – DHCP

Apriamo dunque il Server Manager e andiamo su Gestione > Aggiungi ruoli e funzionalità

Andiamo su Ruoli Server e spuntiamo la voce Server DHCP. Clicchiamo su Aggiungi funzionalità.

Si verrà avvisati che dobbiamo assegnare un indirizzo IP statico al Server.

Premiamo su Annulla e premiamo WIN + R per aprire la finestra Esegui. Digitiamo CMD.

Nel prompt dei comandi digitiamo ipconfig. Scopriamo così i parametri della rete sulla quale si trova il server. Nel mio caso questa rete dipende dalla macchina virtuale di VirtualBox e appare configurata nel modo seguente:

A questo punto apriamo il Pannello di controllo dal menu Start.

Andiamo su Rete e Internet > Centro connessioni di rete e condivisione > Modifica impostazioni scheda. Individuiamo la nostra scheda di rete e clicchiamoci sopra col destro, andiamo su Proprietà.

Selezioniamo Protocollo Internet versione 4 (TCP/IPv4) e poi scegliamo Proprietà. Configuriamo i parametri nel modo seguente (ovviamente si dovranno mettere i parametri rispetto alla rete che si intende configurare):

Questo significa che ho posizionato il server all’indirizzo 10.0.2.100. Questa è una scelta assolutamente arbitraria. Dal momento che ci troviamo all’interno della rete 10.0.0.0/8 abbiamo a disposizione 16.777.214 di host assegnabili. Per valutare i parametri della rete rimando all’IP Calculator.

Premiamo OK. Una volta tornati sulla schermata con tutte le reti disabilitiamo e riabilitiamo la rete, cliccandoci sopra col destro e scegliendo l’opportuna voce.

Torniamo sul Server Manager e riprendiamo la configurazione del DHCP. Se l’errore dovesse ripresentarsi premiamo su Continua e ignoriamolo (ormai sappiamo di aver impostato un indirizzo statico). Clicchiamo su Avanti.

Alla voce Funzionalità clicchiamo ancora Avanti. Qui non selezioniamo alcunché.

Sotto la voce Server DHCP clicchiamo su Avanti.

Alla Conferma spuntiamo la voce Riavvia automaticamente il server di destinazione se necessario. Premiamo Installa.

Attendiamo la fine dell’installazione. Una volta conclusa clicchiamo su Completa configurazione DHCP.

Nella schermata successiva clicchiamo su Commit.

Se tutto è andato bene vedremo una schermata come la seguente. Clicchiamo su Chiudi.

Adesso sul Server Manager spostiamoci su Strumenti > DHCP.

Si aprirà una schermata come la seguente. Clicchiamo col destro sul nome del server e poi scegliamo Aggiungi/Rimuovi binding.

Nella schermata successiva confermiamo la scheda di rete interessata.

Adesso espandiamo la voce sotto al server e clicchiamo col destro su IPv4, dopodiché scegliamo Nuovo ambito…

Premiamo Avanti.

Diamo un nome all’ambito, tipo Generale. Il nome è a piacere. Poi premiamo su Avanti.

Configuriamo l’indirizzo IP iniziale e finale. Ricordiamoci i parametri di cui parlavamo prima. La nostra rete ha lunghezza 8 e subnet mask 255.0.0.0. Il primo indirizzo IP sarà al minimo 10.0.0.1 mentre il massimo indirizzo IP sarà 10.255.255.254. Possiamo ovviamente scegliere anche un intervallo minore. Io avrò una configurazione come la seguente:

Negli indirizzi esclusi inseriamo quello assegnato al server e al gateway. Per aggiungere un singolo indirizzo basta mettere quello iniziale e premere su Aggiungi. Altrimenti si può aggiungere un intervallo scegliendo l’indirizzo iniziale e quello finale.

Premiamo su Avanti. Scegliamo la durata del lease. Se non abbiamo particolari esigenze possiamo lasciare il valore predefinito.

Confermiamo di voler configurare le opzioni adesso.

Inseriamo ora l’indirizzo del router (gateway predefinito), nel mio caso 10.0.2.2.

Al DNS aggiungiamo quello di Google per ora 8.8.8.8

Alla voce Server WINS premiamo ancora Avanti.

Confermiamo l’attivazione dell’ambito.

Infine premiamo su Fine.

4. Configurazione del DNS

Procediamo adesso a configurare il server come server DNS. In questo modo il server si occuperà della traduzione dei nomi di dominio.

Andiamo nuovamente su Server Manager > Gestione > Aggiungi ruoli e funzionalità. Sotto la voce Ruoli server selezioniamo Server DNS.

Una volta spuntata la voce confermiamo Aggiungi funzionalità.

Premiamo Avanti fino alla voce Conferma. Selezioniamo Riavvia automaticamente il server di destinazione se necessario. Poi scegliamo Installa.

Attendiamo il completamento dell’installazione. Una volta completata premiamo su Chiudi. Adesso sempre andiamo ancora su Server Manager > Strumenti > DNS.

Si aprirà una finestra simile alla seguente.

Adesso clicchiamo col destro sul nome del nostro server e poi su Configurazione server DSN…

Scegliamo ancora Avanti.

Scegliamo Creazione di una zona di ricerca diretta e poi di nuovo Avanti.

Scegliamo Questo server gestirà la zona e premiamo ancora Avanti.

Diamo un nome alla zona, che sarà anche il nome del dominio che andremo a configurare in seguito. Nel mio caso metterò petarkaran.local. Ci possiamo mettere quello che preferiamo.

Confermiamo la creazione di un nuovo file DNS. Premiamo Avanti.

Selezioniamo Consenti aggiornamenti dinamici sicuri e non sicuri. Di nuovo Avanti.

Nella schermata successiva aggiungiamo i server DNS da cui prelevare le informazioni. Nel nostro caso utilizzerò quelli di Google: 8.8.8.8 e 8.8.4.4. Aggiungiamo anche quelli di OpenDNS: 208.67.222.222 e 208.67.220.220

Per aggiungerli è sufficiente digitare gli indirizzi e premere Invio.

Confermiamo la configurazione finale.

A questo punto dobbiamo fare solo un paio di modifiche. Anzitutto torniamo alla configurazione della scheda di rete. Impostiamo l’indirizzo del server come Server DNS preferito.

Confermiamo con OK. Adesso andiamo sul DHCP. Server Manager > Strumenti > DHCP

Sotto il nostro server, all’IPv4 sotto la voce Ambito > Opzioni Ambito individuiamo 006 Server DNS ed impostiamo l’indirizzo IP del nostro server.

Clicchiamo sopra 006 Server DNS e rimuoviamo il DNS di Google impostato prima, mettendoci l’indirizzo del nostro server. Questo sarà il valore per il Server DNS preferito per tutti i client attaccati alla rete gestita dal nostro Server.

Se abbiamo fatto tutto correttamente dovremmo arrivare ad una situazione del genere:

Premiamo OK e con questo abbiamo configurato anche il servizio DNS.

5. Configurazione Dominio su Active Directory

Infine configuriamo il dominio che gestirà il nostro server. Un dominio di Active Directory è esattamente la stessa cosa di un dominio web a cui siamo abituati comunemente. Per esempio petarkaran.it è un dominio e potrei utilizzarlo anche come dominio di AD. Inutile dire che se lo configurassi come tale, dopo dovrei provvedere ad indirizzare le chiamate sulla porta 80 e la porta 443 verso il mio server web dove si trova il sito internet, per non creare conflitti interni. In caso contrario, da dentro il dominio gestito da Windows, il sito risulterebbe irraggiungibile. Allo scopo di questo esercizio configurerò un dominio chiamato petarkaran.local. Non essendo *.local utilizzato dai siti web non rischio conflitti con la rete esterna. Inutile dire che il dominio può essere scelto in modo arbitrario e a piacere.

Prima di procedere voglio fare un altro piccolo approfondimento. Possiamo immaginare un dominio come il contenitore del nostro server, gestore del dominio, di tutti i client (gli utenti che possono accedere al dominio) e di tutti i computer (dispositivi che sono connessi al dominio). In sostanza un dominio contiene questi 3 elementi principali.

Il Server si occupa di amministrare i permessi e le relazioni tra client (utenti) e dispositivi (computer). Un gruppo di domini costituisce un albero.

A sua volta un gruppo di alberi costituisce una foresta.

Detto tutto questo cominciamo la configurazione del nostro server per elevarlo a gestore del Dominio.

Anzitutto voglio cambiare nome al mio server, chiamandolo SERVER (questo passaggio non è obbligatorio, lo faccio per motivi puramente estetici). Questo passaggio non è obbligatorio e può essere saltato.

Cliccando col tasto destro sul simbolo di Windows scegliamo Sistema.

Individuiamo il nome del computer e clicchiamo su Cambia impostazioni

Nella finestra che si aprirà scegliamo Cambia… Cambiamo il nome in SERVER.

Premiamo OK e di nuovo OK. Poi scegliamo di riavviare il server.

 

Una volta riavviato il server andiamo su Server Manager > Gestione > Aggiungi ruoli e funzionalità

Dalla sezione Ruoli server selezioniamo Servizi di dominio Active Directory.

Come al solito premiamo Avanti e configuriamo il Riavvio automatico. Premiamo infine su Installa.

Aspettiamo la conclusione dell’aggiornamento, dopodiché selezioniamo la voce Alza di livello il server a controller di dominio.

Essendo il primo dominio che configuriamo dobbiamo aggiungere una nuova foresta. Procediamo quindi nel modo seguente (il mio dominio sarà petarkaran.local):

Premiamo su Avanti. Creiamo adesso una password per le modalità di ripristino dei servizi di directory. E’ molto importante non dimenticare questa password, perché sarà necessaria in caso di necessità di ripristino della active directory. Premiamo su Avanti.

Confermiamo la creazione della Delega DNS.

Clicchiamo su Cambia… e inseriamo utente e password di amministratore.

Clicchiamo su Avanti. Confermiamo il nome di dominio NetBIOS (sono i vecchi nomi di dominio sostanzialmente). Clicchiamo su Avanti.

Alla schermata successiva clicchiamo ancora su Avanti.

Verrà mostrato il riepilogo di tutte le impostazioni, clicchiamo di nuovo su Avanti.

Se va tutto bene arriveremo ad una schermata come la seguente. L’importante è che compaia la spunta verde che Tutti i controlli dei prerequisiti sono riusciti.

Clicchiamo infine su Installa. Se tutto è andato bene il sistema verrà riavviato e al prossimo accesso apparirà una schermata simile a questa:

Faccio notare come questa volta l’amministratore non è più del SERVER ma del dominio PETARKARAN. Notiamo anche l’avviso sulla scheda di rete.

Entriamo dentro Windows e andiamo alle impostazioni della scheda di rete. Noteremo che l’indirizzo del DNS è stato spostato su 127.0.0.1. Benché funzioni anche così, facendo il loopback sull’indirizzo locale della macchina, che è anche il server DNS, per una serie di bug di Windows ci viene mostrato un errore.

Modifichiamo il server DNS preferito impostando l’indirizzo su quello del nostro SERVER, nel mio caso nel modo seguente:

Adesso andiamo su Server Manager > Strumenti > DHCP e aggiungiamo alle Opzioni ambito il parametro 015 Nome dominio DNS inserendo il nome del nostro dominio, nel modo seguente:

Premiamo OK. Se tutto è andato bene vedremo una configurazione come la seguente alla fine:

A questo punto il nostro Server è stato elevato a controller di dominio e abbiamo finito.

[magento 2] Exception #0 (LogicException): catalog_product index does not exist yet. Make sure everything is reindexed [risolto]

In Magento 2 l’errore Exception #0 (LogicException): catalog_product index does not exist yet. Make sure everything is reindexed si riferisce al fatto che il catalogo dei prodotti non è stato indicizzato. Questo problema si presenta frequentemente quando si usano altri motori per la gestione del catalogo, come ad esempio ElasticSearch (specialmente con il plugin di Smile-SA, ma non solo).

Per risolvere il problema lanciamo nuovamente l’indicizzazione del catalogo ed aggiorniamo il tutto, procedendo nel modo seguente da riga di commando.

ATTENZIONE: In teoria l’unico comando utile e necessario è il seguente:

Se dovessero sorgere problemi o non esserci risultati, procedere nella maniera descritta di seguito.

Se non lo abbiamo procuriamoci n98-magerun2.

Scarichiamolo nella cartella di installazione di Magento, poi rendiamolo eseguibile, eseguendo i seguenti comandi:

A questo punto eseguiamo la richiesta di reindicizzazione:

Eseguiamola anche sul fulltext:

Faccio notare che sto concedendo al PHP 5G di memoria per poter portare a termine, senza errori, il processo.

Qualora dovessero sorgere errori nel processo di indicizzazione, come per esempio Catalog Search index is locked by another reindex process. Skipping., procediamo nel modo seguente, altrimenti andiamo alla pulizia della cache.

Individuiamo i processi attivi con:

Reimpostiamo il processo che ci interessa con:

Nel dubbi possiamo reimpostarli tutti eseguendo i seguenti comandi:

A questo punto possiamo rilanciare il processo che ci interessa.

Puliamo tutta la cache:

La cache di Magento è una delle cose più problematiche, per cui conviene eseguire anche comandi superflui per ripetere l’operazione per sicurezza.

Detto questo riavviamo apache e il servizio di elastisearch, se lo abbiamo installato:

A questo punto dovrebbe essere tornato tutto normale.