venerdì, 19 Aprile 2024

[VBA] Aggiungere nuovo foglio con data corrente in Excel

Immaginiamo di voler aggiungere, in modo programmatico, un nuovo foglio con un nome e la data corrente, per esempio IMPORTAZIONE 10 09 2018.

Quello che vedremmo come risultato nella cartella di lavoro in Excel sarebbe qualcosa di analogo:

Per farlo costruiamo una funzione in VBA nel modo seguente:

Testiamo la funzione mettendola dentro una sub:

Come è possibile notare la funzione restituisce il riferimento al nuovo foglio creato, che possiamo utilizzare nella sub di esempio per scrivere, per esempio, dentro ad una cella.

Se volessimo aggiungere un controllo, nella solita funzione CreaNuovoFoglio, perché non ci siano fogli duplicati, sarebbe sufficiente modificare la funzione nella maniera seguente:

In questo modo al nome del foglio viene posposto un termine n-simo, in questo caso (1), (2) ecc. Se lo si desidera chiaramente si può aggiungere qualunque termine oppure decidere di interrompere l’operazione.

[linux] Impostare timout SSH su Putty

Per evitare che la connessione SSH si chiuda continuamente, oltre ad allungare il timeout sul nostro server, possiamo impostarlo anche da Putty.

Per farlo andiamo su Putty > Connection

Impostiamo Seconds between keepalives(0 to turn off) da 0 a 30 (aumentiamo o diminuiamo in base alle esigenze)

Spuntiamo la casella: Enable TCP_keepalives (SO_KEEPALIVE option)

Salviamo il tutto nel profilo di sessione.

[ubuntu] Aumentare tempo di timeout da SSH

Problema: la connessione SSH va in timeout e bisogna effettuare nuovamente l’accesso.

Per modificare il timeout è sufficiente modificare il file /etc/ssh/sshd_config digitando

A questo punto aggiungiamo al file le seguenti due righe:

Il primo parametri imposta il server affinché invii pacchetti null ogni 120 secondi al client, mentre il secondo imposta l’interruzione della connessione dopo 720 pacchetti inviati a vuoto. In questo modo la connessione si interromperà dopo 720 x 120 = 86.400 secondi, ossia dopo 24 ore.

Una volta apportate tutte le modifiche salviamo e digitiamo:

In questo modo riavvieremo il servizio SSH.

Aruba, errore FTP 550 Can’t read directory: access denied

Problema: utilizzando FileZilla non si riesce a connettersi al server web su Aruba

Soluzione: aggiungere il proprio indirizzo IP agli IP autorizzati all’accesso via FTP dal panello di controllo

Per molti server Aruba ha attivo un servizio di filtro FTP che impedisce accessi non autorizzati, servizio molto utile per implementare il livello di sicurezza su uno dei protocolli più bucati di sempre.

Per aggiungere il proprio indirizzo IP a quelli autorizzati è sufficiente recarsi nel panello di controllo di Aruba.

Una volta dentro selezionare Gestione Accessi FTP.

Si presenterà una schermata simile a questa:

Premiamo su Abilita all’accesso FTP (questo abiliterà l’indirizzo IP mostrato che è anche quello da cui ci stiamo collegando). Altrimenti possiamo aggiungere manualmente un indirizzo IP cliccando poi su Aggiungi IP.

Dopodiché premiamo su Salva ed il gioco è fatto.

Adesso possiamo collegarci in FTP al nostro hosting.

[linux] Cercare testo dentro ai file in modo ricorsivo

Problema: Vogliamo cercare una porzione di testo dentro a tutti i file in una cartella e in tutte le sottocartelle

Soluzione: è sufficiente utilizzare il comando grep, nel modo seguente

Il parametro -R effettuerà una ricerca ricorsiva in tutte le sottocartelle, tra virgolette inseriamo il testo da cercare, il . (punto) indica che la ricerca debba cominciare dalla cartella corrente. 

Possiamo ovviamente indicare altre cartelle con:

 

Quanta energia consuma un PC in un anno?

Vi siete mai chiesti quanta energia consuma in media un computer all’anno? Chiaramente il consumo dipende sia dall’utilizzo che dalla potenza dell’alimentatore; per essere precisi un classico alimentatore da 450/500W non consuma energia sempre alla massima potenza, ma in base al carico computazionale sulla macchina. Per esempio se si gioca ad un videogioco si consuma più energia che se il computer rimane in stand-by.

Nel mio caso specifico lascio il computer di casa acceso anche quando non lo uso, spesso per compilare programmi o essere semplicemente disponibile da remoto.

In pratica questi sono i dati di un computer che è stato acceso per 365 giorni 24 ore al giorno. Per il calcolo del costo è stato utilizzato un parametro di 0,14 €/kWh.

Chiaramente questo risultato non sarà identico per tutti, ma possiamo dire che in media un computer lasciato acceso tutto il giorno ed utilizzato in modo mediamente intensivo consumi circa 500kWh all’anno, oppure circa 40kWh al mese.

Per confronto di seguito riporto invece i dati di un server Dell PowerEdge T110II (Intel® Xeon® Processor E31270v2, 4C/8T, 3.50GHz, 8M Cache, 69W, Turbo; 16GB Memory (2x8GB) 1600Mhz Dual; 2TB, SATA, 3.5in, 7.2K RPM) che gestisce un dominio con 15 utenti con funzionalità principale di server dati.

Anche in questo caso il server è rimasto acceso per 365 giorni 24 ore al giorno. Il consumo totale è stato di 270,15 kWh.

In pratica giocare ai videogiochi costa più che gestire una piccola rete aziendale! 

[joomla] Errore ERR_CONTENT_DECODING_FAILED su Chrome in Joomla 3.x

Problema: Quando si tenta di effettuare il login dal frontend si incorre nell’errore ERR_CONTENT_DECODING_FAILED su Chrome, mentre la pagina appare tutta bianca

Soluzione: disabilitare la compressione GZIP e pulire la cache

Quando si tenta di effettuare il login dal frontend di Joomla si potrebbe incorrere in una pagina vuota oppure nell’errore ERR_CONTENT_DECODING_FAILED. Cancellando l’URL e tornando alla homepage il login risulta effettuato e si può tornare a navigare.

Per risolvere il problema dovrebbe essere sufficiente disabilitare la compressione GZIP andando su Sistema > Configurazione globale > Server.

A questo punto andiamo su Sitema > Pulisci cache, selezioniamo tutte le voci e poi premiamo su Elimina.

Fatto tutto questo il problema dovrebbe risultare risolto.

[windows] Programmare spegnimento automatico ad una determinata ora

Obiettivo: Programmare lo spegnimento automatico del computer ad una determinata ora, per esempio alle ore 20 tutti i giorni.

All’interno di Windows è possibile configurare delle attività programmate. Per farlo clicchiamo col destro sul tasto Start e selezioniamo Gestione computer.

Spostiamo su Utilità di pianificazione e poi tra le opzioni a destra scegliamo Crea attività di base.

Seguiamo la procedura guidata e diamo un nome alla nostra pianificazione, per esempio “Spegnimento automatico ore 20”

Scegliamo quando attivare l’attività, per esempio Ogni giorno.

A questo punto ci verrà chiesta la data e l’ora, nonché il numero di ricorrenze.

Scegliamo avvio programma dalla schermata successiva.

A questo punto selezioniamo il programma shutdown.exe e passiamogli il parametro -s

Il parametro -s avvierà lo spegnimento entro 60 secondi dall’esecuzione, altrimenti possiamo impostare lo spegnimento ad un tempo prefissato con il parametro -t, per esempio -t 30 per avviare lo spegnimento entro 30 secondi, o -t 0 per avviarlo immediatamente.

Premiamo avanti e poi fine.

 

[WordPress] Creare un’area widget personalizzata in 6 semplici passaggi

Le aree dei widget in WordPress dipendono sempre dal template utilizzato, quindi per aggiungere un’area widget personalizzata bisogna modificare il template specifico che ci interessa.

Prima di cominciare procuriamoci tutto il necessario:

  1. Avere installato WordPress (lo si può scaricare da qui)
  2. Utilizziamo il template Twenty Sixteen (ricordo che la procedura è valida per qualunque template)

Se abbiamo tutto pronto cominciamo.

1. Apriamo l’editor di WordPress

L’editor si trova in Bacheca > Aspetto > Editor.

2. Andiamo su functions.php

Una volta aperto l’editor andiamo su functions.php, selezionabile dall’elenco a destra.

A questo punto spostiamoci in fondo al file e aggiungiamo il seguente codice:

Faccio notare come il nome della funzione, nuovo_widget(), è assolutamente arbitrario, purché rispetti i parametri di programmazione in PHP.

Dentro eseguiamo il metodo register_sidebar che permette di definire una specifica sidebar.

I parametri passabili tramite array sono:

  • name – il nome della sidebar, un testo descrittivo
  • description – la descrizione della sidebar, che apparirà sotto il suo nome nella bacheca, non è obbligatorio
  • id – identificativo della sidebar, deve essere tutto minuscolo e senza spazi, di predefinito è un valore numerico intero autoincrementale
  • before_widget – codice HTML da anteporre ad ogni widget
  • after_widget – codice HTML da posporre ad ogni widget
  • before_title – codice HTML da anteporre ad ogni titolo di widget
  • after_title – codice HTML da posporre ad ogni titolo di widget

Una volta aggiunto il codice premiamo su Aggiorna file.

3. Andiamo su page.php

Adesso aggiungiamo il widget in tutte le posizioni che desideriamo. Nel nostro caso lo aggiungeremo sul lato sinistro di tutte le pagine, modificabili da file page.php

Andiamo quindi a modificare il file page.php

Individuiamo la riga con get_header(); e posizioniamoci alla riga successiva aggiungendo il seguente codice:

Ricordiamoci che nuova-sidebar è l’ID che abbiamo definito prima per la nostra sidebar, mentre la classe barra-sinistra la dovremo ancora definire.

Individuiamo la riga con:

E modifichiamola nel modo seguente:

In questo modo il contenitore principale sarà modificato in base alla presenza o meno del widget. La situazione di partenza era questa:

Noi vogliamo arrivare ad una nuova situazione simile a questa:

4. Modifichiamo il style.css

Adesso non ci resta che aggiungere gli stili appena utilizzati. Andiamo quindi a modificare il Foglio di stile (style.css)

In fondo al file aggiungiamo le seguenti due righe di CSS (queste sono molto essenziali, per ottenere un risultato migliore bisognerebbe rielaborarle un po’).

Salviamo il file.

5. Andiamo sui Widget

Adesso è il momento di testare il nostro nuovo widget, spostiamoci perciò nei widget ed inseriamo nella nuova area, per esempio, il widget per la ricerca.

6. Risultato

A questo punto possiamo aprire il nostro sito e verificare il risultato, che dovrebbe apparire così.

[CCNA] Subnetting di una rete di classe B utilizzando i numeri binari

Proseguendo sulla falsa riga dell’esercizio precedente, dove avevamo calcolato le subnet per una rete di Classe C, supponiamo questa volta di avere l’indirizzo 172.24.0.0/16 e voler creare 10 subnet.

Vediamo quali saranno gli schemi IP dei numeri di broadcast, di rete e del numero di host, nonché la subnet mask.

1. Calcoliamo anzitutto il numero di subnet necessarie

In questo caso abbiamo un indirizzo di Classe B, quindi il suo schema potrebbe essere rappresentato nel modo seguente: NNNNNNNN . NNNNNNNN . HHHHHHHH . HHHHHHHH

A differenza del precedente esercizio, qui abbiamo 16 bit su H da cui possiamo prestare i bit per le nostre subnet. Come al solito il numero di subnet valide sarà dato da 2^N-2

Se prendessimo in prestito 2 H trasformandoli in N (ottenendo quindi il seguente schema NNNNNNNN . NNNNNNNN . NNHHHHHH . HHHHHHHH) potremmo realizzare 2^2-2 = 4 - 2 = 2 subnet

Faccio notare che con 1 H potremmo creare solo 2 subnet non valide.

Siccome vogliamo realizzare almeno 10 subnet, ci serve un numero di subnet tale che 2^N-2 \ge 10 ovvero dobbiamo prendere in prestito 4 H da trasformare in N, nel modo seguente: NNNNNNNN . NNNNNNNN . NNNNHHHH . HHHHHHHH

2. Determiniamo la prima subnet valida

A questo punto lavoriamo sullo schema precedente, dal momento che i primi due ottetti resteranno fissi, prendiamo in considerazione solo gli ultimi due: NNNNHHHH . HHHHHHHH

La prima subnet valida sarà quindi: 0001HHHH . HHHHHHHH

Vi ricordo che la 0000HHHH . HHHHHHHH non è valida dal momento che l’ID della subnet coinciderebbe con l’ID di rete.

Schematizzando il tutto avremo quindi:

ID prima sottorete 00010000 . 00000000 16 . 0 172.24.16.0
Primo host valido 00010000 . 00000001 16 . 1 172.24.16.1
Ultimo host valido 00011111 . 11111110 31 . 254 172.24.31.254
Broadcast prima sottorete 00011111 . 11111111 31 . 255 172.24.31.255

Come è facile notare basta riempire di 0 gli H dell’ID di sottorete, tutti 0 e un ultimo 1 per il primo host e via discorrendo. 

3. Determiniamo l’ultima subnet valida

In maniera analoga al punto precedente, determiniamo ora l’ultima subnet. Prendiamo lo schema e sostituiamo agli N la sequenza 1110 (vi ricordo che la 1111 porterebbe ad un broadcast non valido rispetto alla rete stessa)

L’ultima subnet sarà quindi: 1110HHHH . HHHHHHHH

A questo punto non ci rimane che calcolare il resto, con il medesimo procedimento di poco fa.

Schematizzando il tutto avremo quindi:

ID ultima sottorete 11100000 . 00000000 224 . 0 172.24.224.0
Primo host valido 11100000 . 00000001 224 . 1 172.24.224.1
Ultimo host valido 11101111 . 11111110 239 . 254 172.24.239.254
Broadcast prima sottorete 11101111 . 11111111 239 . 255 172.24.239.255

4. Determiniamo tutte le subnet valide

Come è facile immaginare basta ripetere gli schemi in rosso per tutte le varianti degli N in verde, cioè da 0001 a 1110 (ricordo che la somma binaria procede come 0001, 0010, 0011, 0100, ecc.).

Lo schema che otterremo sarà il seguente:

Subnet ID Rete Primo host Ultimo host Broadcast
0 (non valido) 172.24.0.0 172.24.0.1 172.24.0.254 172.24.15.255
1 172.24.16.0 172.24.16.1 172.24.16.254 172.24.31.255
2 172.24.32.0 172.24.32.1 172.24.32.254 172.24.47.255
3 172.24.48.0 172.24.48.1 172.24.48.254 172.24.63.255
4 172.24.64.0 172.24.64.1 172.24.64.254 172.24.79.255
5 172.24.80.0 172.24.80.1 172.24.80.254 172.24.95.255
6 172.24.96.0 172.24.96.1 172.24.96.254 172.24.111.255
7 172.24.112.0 172.24.112.1 172.24.112.254 172.24.127.255
8 172.24.128.0 172.24.128.1 172.24.128.254 172.24.143.255
9 172.24.144.0 172.24.144.1 172.24.144.254 172.24.159.255
10 172.24.160.0 172.24.160.1 172.24.160.254 172.24.175.255
11 172.24.176.0 172.24.176.1 172.24.176.254 172.24.191.255
12 172.24.192.0 172.24.192.1 172.24.192.254 172.24.207.255
13 172.24.208.0 172.24.208.1 172.24.208.254 172.24.223.255
14 172.24.224.0 172.24.224.1 172.24.224.254 172.24.239.255
15 (non valido) 172.24.240.0 172.24.240.1 172.24.240.254 172.24.255.255

Faccio notare come in questo caso tutti gli ID di rete siano a .0, mentre il terzo ottetto procede con lo stesso schema del quarto ottetto della classe C.

5. Determiniamo la subnet mask

Come nel caso precedente riprendiamo lo schema sul quale abbiamo realizzato le subnetNNNNNNNN . NNNNNNNN . NNNNHHHH . HHHHHHHH

Agli N sostituiamo gli 1 e agli H sostituiamo gli 011111111 . 11111111 . 11110000 . 00000000

Traducendo gli ottetti binari otteniamo quindi: 255.255.240.0

Questa sarà la nostra subnet mask. Ricordiamoci che siccome abbiamo in tutto 20 uni, la subnet è rappresentabile anche con /20

Nello specifico la prima subnet potremmo rappresentarla come 172.24.16.0/20 mentre l’ultima subnet sarebbe 172.24.224.0/20