Skip to main content

RunningLow – Uno script PowerShell per controllare lo spazio libero su FileSystem e inviare e-mail quando scende sotto al livello di guardia

Questo articolo ha lo scopo di illustrare il funzionamento di RunningLow, un semplice script PowerShell che ho realizzato con l’intento di dotare i miei server Windows di uno strumento in grado di avvisarmi quando lo spazio libero residuo sui vari Hard-Disk locali e di rete scende sotto al livello di guardia.

Chiunque lavori abitualmente con macchine Windows fisiche e/o virtualizzate conosce benissimo l’importanza di avere costantemente sotto controllo questa informazione: un server che finisce lo spazio va rapidamente incontro a problemi bloccanti e cessa di funzionare correttamente, stante l’impossibilità di svolgere la maggior parte delle operazioni basate su I/O: creare file temporanei, memorizzare informazioni, svolgere le periodiche attività di manutenzione, backup e aggiornamento, creare o aggiornare sessioni web – se queste vengono gestite tramite file – e così via. La faccenda è ancora più grave quando i server in questione ospitano servizi DBMS come MySQL o MS-SQL, dove l’impossibilità di utilizzare il FileSystem può tradursi nella perdita di consistenza di indici, integrità dei dati contenuti nelle varie tabelle e altre spiacevolissime situazioni.

Lo scopo primario di RunningLow è prevenire tutto questo: lo script è infatti in grado di controllare uno o più drive locali e/o di rete verificando che lo spazio libero non sia sceso al di sotto di una quota preimpostata e, in caso affermativo, inviare un avviso tramite e-mail a uno o più indirizzi. L’idea non è certo originale: esistono decine di strumenti di amministrazione e applicativi specifici che sono in grado di svolgere queste operazioni: persino CCleaner della Piriform – sebbene soltanto nella versione PRO – può essere configurato in modo da inviare avvisi. Al tempo stesso, se non volete spendere altri soldi in licenze o se non avete voglia di appesantire il vostro sistema con un agent perennemente attivo, potreste apprezzare l’economicità e le performance di questa semplice e leggera alternativa.

Approfondisci

VS2017 – No executable found matching command dotnet-ef – come risolvere

Se vi siete imbattuti in questo articolo è probabile che vi siate imbattuti in un problema piuttosto comune legato all’utilizzo del comando dotnet ef di Entity Framework Core all’interno di un progetto .NET Core su Visual Studio… o per meglio dire tentato utilizzo, visto che la riga di comando restituisce il seguente errore:

No executable found matching command “dotnet-ef”

Questa problematica è piuttosto fastidiosa, anche perché il framework non fornisce nessuna indicazione per poterla risolvere e diventa quindi difficile risalire alle cause del mancato funzionamento del comando. Questo articolo è stato scritto proprio con l’intento di fare luce sull’argomento e suggerire alcune possibili soluzioni per risolvere l’anomalia.

Approfondisci

Come convertire file MS Word DOC e DOCX in PDF con ASP.NET e C#

Chi non ha mai avuto bisogno di convertire uno o più file DOC e/o DOCX da Word in PDF almeno una volta nella vita? Niente di più facile, direte voi: è sufficiente selezionare il formato .PDF nell’apposita casella a discesa che appare subito dopo aver fatto click sul pulsante “Salva Come…”. A dire la verità, non era così facile in passato: questo metodo è infatti disponibile solo a partire da Office 2010; prima di allora, l’unico modo per ottenere questo risultato era utilizzare software appositi – solitamente basati su Ghostscript – o installare driver di stampa PDF come Bullzip, CutePDF e altri.

Office 2010 ha risolto il problema per l’utente medio, ma soltanto a condizione che abbia una valida licenza MS Office e il software installato sulla propria macchina. Chiunque non sia provvisto di queste cose non può far altro che ricorrere alle alternative di cui sopra, o procedere all’acquisto di un software – non necessariamente MS Office – che lo metta in condizione di fare altrettanto.

Il discorso si fa leggermente diverso – e certamente più complicato – per gli sviluppatori che vogliono ottenere lo stesso risultato a livello di codice: esiste un modo semplice e gratuito per convertire file DOC o DOCX in formato PDF all’interno di una applicazione ASP.NET o .NET Core sviluppata in linguaggio C#, possibilmente senza consentire agli utenti il download del file DOC/DOCX originario? E soprattutto, nel caso in cui si tratti di una applicazione web, senza dover acquistare una licenza di MS Office sul server di pubblicazione?

Approfondisci

WordPress – Catchable fatal error: Object of class WP_Error could not be converted to string – Come risolvere

L’11 giugno 2017 questo sito ha subito un downtime di diverse ore a causa di un errore piuttosto strano verificatosi all’interno del database di WordPress. Se vi siete imbattuti in questo articolo è molto probabile che il vostro sito sia stato colpito dalla medesima problematica. Se le cose stanno così, siete finiti nel posto giusto: farò del nostro meglio per aiutarvi a risolvere raccontandovi la mia esperienza.

Dal punto di vista dell’utente, l’anomalia si presentava come un classico errore HTTP 500 – Application Error che bloccava tutte le pagine non servite tramite cache. Come sempre in questi casi la prima cosa che ho fatto è stata abilitare gli appositi switch WP_DEBUG e WP_DEBUG_LOG presenti all’interno del file wp-config.php, che – come probabilmente sanno molti lettori – si trova nella cartella principale di WordPress contiene tutti i parametri di configurazione principali dell’installazione in uso.

Come si può facilmente evincere dai commenti, il primo switch inserisce l’errore all’interno del HTTP response così da consentire all’utente di visualizzarlo on-screen, mentre il secondo – più sicuro – si limita a scriverlo all’interno di un file debug.log dedicato, anch’esso presente nella cartella principale di WordPress.

Questo era l’errore riportato:

Catchable fatal error: Object of class WP_Error could not be converted to string in /var/www/ryadel.com\wp-includes\rewrite.php on line 326

Sfortunatamente questa informazione non era sufficiente a comprendere cosa fosse davvero successo, ma se non altro puntava in una direzione chiara: ho quindi dato un’occhiata al codice sorgente del rewrite.php, fino a imbattermi nella seguente funzione (la linea 326 è quella evidenziata):

Approfondisci

Come aumentare il limite di 2 GB di memoria delle applicazioni a 32-bit (x86) nelle versioni di Windows a 64-bit (x64)

Se vi siete imbattuti in questo articolo è molto probabile che vi siate imbattuti in una classica problematica che incontrano molti power-user e amministratori di sistema lavorando con sistemi Windows a 64 bit di qualsivoglia tipo (Windows 2008 Server, Windows 2012 Server, Windows 7, Windows 10 e così via) e vecchi applicativi o eseguibili a 32-bit (x86): la cronica mancanza di memoria utilizzabile da questi ultimi, che si traduce in errori come il seguente:

Memoria insufficiente

La cosa più frustrante è che l’errore in questione si verifica anche quando il sistema è dotato di un grande quantitativo di memoria RAM libera, cosa che induce molti a pensare che il problema sia di tutt’altro avviso. La verità, come spesso accade, sta nel mezzo: pur trattandosi senza dubbio di un problema di memoria, le cause non sono da ricercare nella mancanza di RAM libera nel sistema quanto piuttosto nelle modalità di funzionamento dei processi a 32-bit all’interno del sistema operativo Windows: a prescindere dalla memoria globale, nessun processo a 32-bit ha la possibilità di utilizzare più di 2 Gigabytes di memoria complessiva. Le ragioni legate a questa problematica, ben documentate in questa pagina di Wikipedia (e relativi riferimenti), sono strettamente legate all’architettura x86 e, se il sistema è a 32-bit, possono essere aggirate soltanto con dei workaround che prevedano modalità di memory-paging (PAE) da implementare all’interno dell’applicazione stessa.

Fortunatamente, se la macchina dove vogliamo eseguire l’applicativo è dotata di un sistema operativo a 64 bit, abbiamo la possibilità di aggirare questo “tetto” in almeno due modi:

 

Approfondisci

Close