NextCloud – aggiornamento elenco files di una cartella

Può capitare di caricare nuovi files all’interno delle cartelle dell’utente senza utilizzare l’interfaccia grafica di nextcloud.

In tal caso i contenuti della cartella non vengono aggiornati e nell’interfaccia si continuano a vedere solo i vecchi files.

Per aggiornare il contenuto, in tal caso è necessario eseguire il seguente comando:

sudo -u www-data php /var/www/html/nextcloud/occ files:scan –all

Scheda controller 6 assi per motori dc

DRIVER CONTROLLER SCHEDA PER MOTORI BRUSHLESS CON SENSORE HALL

CARATTERISTICHE
Tensione di alimentazione:
– scheda: 5 Vdc
– motore: da 5 a 36 Vdc
Corrente motore max. : 16 A
Potenza max: 350 watt
Regolazione della velocità: da 0-100%
Protezione: sovracorrente
Controllo inversione di fase: sì
Collegamenti:
MA/MB/MC: alle fasi del motore
5V e GND: alimentazione della scheda 5 VDC
VCC e GND: alimentazione principale del motore da collegare a un alimentatore esterno
Connettore tre pin 5V/VR (0-5V)/GND: al potenziometro esterno da 10 kohm incluso
PWM input: per la regolazione della velocità (se si utilizza l’ingresso PWM è necessario scollegare il potenziometro da VR)
Ha/Hb/Hc/+5V/GND: ingresso alimentazione e sensore Hall
SC( pin su scheda): uscita segnale impulsi di velocità
Dimensioni: 63x45x29 mm

Creare una estensione di Visual Studio

Scriverò un vademecum molto sintetico su come si può produrre un’estensione per l’ambiente di sviluppo di Visual Studio (2019), nonché per SQL Server Management Studio, entrambi basati sulla stessa infrastruttura di base.

Utilizzerò per lo sviluppo dell’estensione Visual Studio 2019 e cerchcerò di aggiornare l’interfaccia di SQL Management Studio versione 18.

In Visual Studio è necessario creare un nuovo progetto di tipo “Extensibility“.

Una volta all’interno del progetto è necessario disinstallare l’SDK 16 di Microsoft.VisualStudio.dll in quanto il management di SQL è implementato ancora con la vecchia interfaccia di Visual Studio 2017.

Per farlo si può andare nel menu strumenti e cliccare sugli strumenti nuget:

Nella maschera che si apre ci si dovrà assicurare di avere la versione 15:

In caso negativo si potrà installare al posto della 16.

A questo punto il compilatore è a posto e si può procedere con la creazione di un comando (nuova voce di menu). Per farlo è sufficiente selezionare il progetto e cliccare su Aggiungi nuovo elemento.

Nel menu scegliere Extensibility e successivamente Custom Command.

Il template genererà un insieme di classi, tra cui command1.cs, all’interno del quale vi è un metodo “Execute” che contiene il codice che verrà eseguito quando verrà selezionata la voce di menu:

    private void Execute(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
        string message = string.Format(CultureInfo.CurrentCulture, "Inside {0}.MenuItemCallback()", this.GetType().FullName);
        string title = "Command1";

        // Show a message box to prove we were here
        VsShellUtilities.ShowMessageBox(
            this.package,
            message,
            title,
            OLEMSGICON.OLEMSGICON_INFO,
            OLEMSGBUTTON.OLEMSGBUTTON_OK,
            OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST);
    }

In questo caso verrà semplicemente visualizzato un messaggio usando il metodo ShowMessageBox del framework.

Il menu all’interno del quale si presenta la nuova voce è indicato nel file che ha estensione .vsct, in particolare nel punto:

  <Group guid="guidHelloWorldSsmsExtensionPackageCmdSet1" id="MyMenuGroup" priority="0x0600">
    <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS" />
  </Group>

il valore dell’id=”IDM_VS_MENU_TOOLS” indica al sistema che il parent della nuova voce di menu sarà il menu “Strumenti” dell’applicativo.

Prima di eseguire il debug della nuova estensione si deve configurare quale sarà l’eseguibile oggetto della modifica. Per fare questo di deve accedere alla schermata delle properties del progetto e scegliere la scheda “Debug”. Qui va indicato il path dell’eseguibile di SQL Management Studio:

Se non si procede con questa operazione la nuova voce di menu verrà assegnata ad una nuova istanza dell’ambiente di Visual Studio stesso, consentendo di aggiungere funzionalità allo stesso ambiente.

Per completare la procedura è necessario indicare dove andranno rilasciati i file di installazione dell’estensione, selezionando la scheda VSIX; nel caso di SQL SERVER questa cartella si trova in C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Extensions e andrà indicata nell’apposito spazio presente nella maschera:

Durante la compilazione, se dovesse presentarsi il messaggio d’errore

The VSIX manifest must contain element 'Prerequisites'

si dovranno aggiungere al file vsxmanifest le seguenti istruzioni:

  <Prerequisites>
    <Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[14.0,16.0]" />
  </Prerequisites>

Se ora si attiva il debug dell’applicazione, si dovrebbe aprire l’ambiente di SQL Studio con la nuova voce di menu nel menu strumenti. Ricordarsi di rieseguire il progetto di visual studio come amministratore, altrimenti il progetto non partirà.

Aggiunta del comando ad un menu contestuale

Per aggiungere il comando ad un altro menu dell’applicativo è necessario conoscerne il suo guid. Purtroppo gli id non sono ben documentati e quindi serve una scappatoia per determinarli a runtime.

Questo si può fare ed è ben documentato in questo link:

https://stackoverflow.com/questions/31759396/vsix-adding-a-menu-item-to-the-visual-studio-editor-context-menu/31769170#31769170

Una volta determinato il gUID e il CmdID, si possono aggiungere all’interno del file .vsct. In particolare andrà aggiunta tra i symbols la voce:

<GuidSymbol name="aspxContextCommandSet" value="{33F13AC3-80BB-4ECB-85BC-225435603A5E}">
  <IDSymbol name="aspxContextMenu" value="0x0070" />
</GuidSymbol>    

in cui il value di IdSymbol è il valore esadecimale del CmdID e il value del GuidSymbol rappresenta il gUID del menu.

Per completare è necessario aggiungere un gruppo:

  <Group guid="guidHelloWorldSsmsExtensionPackageCmdSet" id="MyMenuGroup" priority="0x0600">
    <Parent guid="aspxContextCommandSet" id="aspxContextMenu" />
  </Group>

in cui la voce Parent avrà il nome come indicato nel symbol.

A quel punto la nuova voce comparirà come per magia nel menu contestuale dello Studio.

Per completezza, è utile vedere quanto scritto in questa pagina ben costruita di codeproject:

https://www.codeproject.com/Articles/1377559/How-to-Create-SQL-Server-Management-Studio-18-SSMS

Utilizzare Tensorflow in ambiente Microsoft Windows

Tensorflow è un framework open source, realizzato da google, che viene utilizzato per il deep learning e che consente di implementare velocemente reti neurali di grande complessità.

Una delle caratteristiche che lo rende particolarmente diffuso è la sua capacità di utilizzare le schede grafiche Nvidia per il training delle reti, operazione molto gravosa anche per i moderni microprocessori.

Le operazioni di training possono essere multiplexate sui numerosi core presenti in una qualunque scheda grafica; infatti una scheda grafica può contenere migliaia di cores, che consentono di scalare i tempi di calcolo di qualche ordine di grandezza rispetto ai 4/8 cores di un comune microprocessore.

Normalmente Tensorflow viene implementato in Python. L’ambiente tipico è una macchina linux (ubuntu ?) su cui è molto facile installare i moduli richiesti per le elaborazioni.

Purtroppo l’utilizzo di Tensorflow all’interno di una virtual machine è limitato dal fatto che la virtual machine non consente l’accesso diretto alle risorse gpu della macchina ospite, di conseguenza non si possono utilizzare i moduli per l’elaborazione su scheda grafica. Pertanto il training in una macchine virtuale sarà sempre molto limitato.

Certo, si potrà sempre creare una seconda partizione sul disco fisso su cui installare in dual boot una macchina linux.

Questo comporta oneri che non sempre si giustificano, in termini di tempo di installazione, di spazio su disco, ecc. ecc. .

Esiste, tuttavia, una opportunità più semplice, per chi possiede una macchina windows: installare l’ambiente Tensorflow su windows e sfruttare le risorse della scheda grafica in maniera nativa.

Per far ciò è necessario installare il toolkit cuda di nvidia, al link https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal

Non ci si deve lasciar prendere dalla tentazione di installare la release di CUDA più recente in quanto Tensorflow è stato compilato per funzionare unicamente con la release 10.1.

Perciò è necessario accedere alle release legacy presenti nella pagina summenzionata e scaricare e installare la versione 10.1. Questa può essere installata anche sopra una precedente installazione di una versione più recente, senza problemi.

Ovviamente, per funzionare, Tensorflow necessita dell’ambiente python, quindi è necessario installare la release più recente della versione 3 dell’interprete Python, sulla relativa pagina python.org. Ricordarsi di installare anche l’ambiente pip, presente tra le opzioni.

Una volta installato Python, si può accedere al relativo ambiente da una finestra del dos, semplicemente scrivendo

python

Di qui si deve installare il modulo tensorflow

pip install tensorflow

e poi i datasets

pip install tensorflow-datasets

a questo punto si può verificare se funziona il tutto importando il relativo modulo

import tensorflow_datasets as tfds

Se il modulo CUDA è stato caricato correttamente non si dovrebbero presentare errori e il risultato dovrebbe essere il seguente:

I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_101.dll

ESP32-CAM

Per programmare questa ottima schedina sono necessarie alcune precauzioni di base.

Dato che non sono presenti connettori usb, si rende indispensabile utilizzare un convertitore USB/UART, preferibilmente con la possibilità di scelta tra tensioni a 5V oppure a 3,3v.

Infatti, il modulo ESP32 necessita di una tensione di alimentazione a 5v, però accetta i comandi sui suoi terminali con tensioni a 3,3v. Questo vuol dire che se lo alimentassimo con un convertitore a 5v, si potrebbero bruciare i pin di ingresso del chip ftdi.

L’unica possibilità è utilizzare un modulo convertitore a 3,3v e una alimentazione separata dell’ESP32 a 5v, prelevata magari da un alimentatore per telefonini.

Come convertitore io utilizzo prevalentemente l’ottimo FT232RL, visibile in figura, oppure quello scaricabile da futura elettronica, al link https://www.futurashop.it/FT232USBUARTA_USB_UART :

usb-ttl-ft232rl-pinout

Il ponticello lo rende utilizzabile anche a 3,3v. Questo modulo va collegato all’ESP32-CAM unicamente con i terminali RX, TX, GND, rispettivamente ai piedini 10 (U0TXD), 11 (U0RXD), 2 (GND)

120602 - ESP32-CAM Development Board , da DFRobot a € 13,50 su ...

L’alimentazione va fornita al terminale 1 (5v) e 9 (GND) collegando i terminali di un piccolo alimentatore usb.

Programmazione

Per programmare il modulo è necessario scaricare le librerie che sono state indicate nell’altro articolo disponibile a questo link: https://www.fattodate.org/2019/10/30/configurare-esp32-cam/

Dopo aver compilato il codice arduino, prima di caricarlo sulla scheda è necessario ponticellare il terminale 14 (GPIO0) verso massa e poi applicare il bottone di reset.

Successivamente al caricamento, se tutto sarà andato per il verso giusto, si dovrà fornire un altro reset (prima si dovrà rimuovere il ponticello del terminale 14) e visualizzare i parametri con cui è stato programmato collegando il monitor seriale con la velocità di 115200 baud.

Il monitor fornirà l’indirizzo IP della scheda.

Il Coronavirus si può curare ?

Sembra proprio di sì…

L’Ospedale di Mantova e quello di Pavia hanno sperimentato con successo questa terapia, salvando pazienti in terapia intensiva.
Perché nessuno ne parla?

Forse perché scombussolerebbe i piani di preparazione del vaccino “tana libera tutti” ?

Da contro.tv di Massimo Mazzucco

Configurare Alphabot per Raspberry

Per la configurazione di Alphabot con Raspberry è preferibile adottare una modalità di accesso remoto, magari con openvnc.

Per utilizzarlo è necessario abilitarlo dal menu con

sudo raspi-config

Si deve scompattare la cartella compressa distribuita con Alphabot che ha la seguente struttura:

Arduino …

Raspberry

+ Alphabot

++mjpg-streamer

++python

++Web-Control

Le cose importanti si trovano dentro Web-Control, in particolare vi si trova il file main.py che contiene un semplice eseguibile che trasforma il raspberry in un server Web a tutti gli effetti.

Per farlo utilizza una libreria python che si chiama bottle. Si installa con:

pip install bottle

Successivamente sarà necessario dare i permessi di esecuzione (777) a mjpeg_streamer che si trova dentro mjpeg_streamer_experimental.

A questo punto è sufficiente eseguire

python main.py

Il server sarà raggiungibile all’indirizzo

http://192.168.xxx.xxx:8000

dal quale si potrà controllare il robot con dei semplici comandi direzionali. Lo streaming vero e proprio sarà disponibile alla porta 8080.

Openvino – download dei modelli di inferenza in formato IR

Per poter utilizzare openvino con i modelli già predisposti da intel è necessario averli in formato ottimizzato.

Per far ciò è sufficiente accedere alla directory

/opt/intel/openvino/deployment_tools/open_model_zoo/tools/downloader

qui si deve lanciare l’aggiornamento delle dipendenze:

python3 -mpip install –user -r ./requirements.in

e successivamente si può lanciare il download di tutti i modelli:

./downloader.py –all

Questo comando trasferirà tutti i modelli nella directory intel, pronti per essere utilizzati.

OpenVino – creare i progetti demo con visual studio 2019

Per iniziare ad usare OpenVino è possibile utilizzare i modelli demo, contenuti nel direttorio:

C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\open_model_zoo\demos

Prima di utilizzarli è necessario generare i progetti visual studio per ciascun demo. E’ sufficiente lanciare il comando:

build_demos_msvc.bat

Questo lancerà tutta una serie di comandi cmake, uno per ogni progetto, generando tutti i progetti all’interno del direttorio:

C:\Users\NomeUtente\Documents\Intel\OpenVINO\omz_demos_build

Questi si potranno lanciare nell’IDE visual studio uno alla volta oppure utilizzando la comoda soluzione demos.sln che li genererà tutti insieme.

Il risultato sarà compilato nel direttorio:

C:\Users\NomeUtente\Documents\Intel\OpenVINO\omz_demos_build\intel64\Debug

Ovviamente si potranno compilare anche in versione Release.

Prima di lanciare uno qualsiasi degli eseguibili generati è necessario impostare alcune variabili d’ambiente. E’ sufficiente eseguire il comando setupvars.bat che si trova in:

C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\bin

e nello stesso prompt andare nel direttorio dove si trovano gli eseguibili generati e eseguire da lì i programmi.

OpenVino – scaricare i modelli di apprendimento per Inferenza

Dopo aver configurato OpenVino e scaricato tutte le dipendenze, incluso python3, per eseguire inferenze sui diversi modelli disponibili è necessario scaricare i modelli disponibili online.

Questo modelli sono file con estensione .xml e .bin e ve ne sono per ogni tipo di inferenza, come face detection, pose detection, car detection e così via.

Per scaricare questi documenti è necessario aprire una finestra del prompt e eseguire il comando:

python ./downloader.py –all –output_dir c:/intel/models

Questo scaricherà tutto l’albero dei modelli di inferenza nel direttorio indicato.

Il comando downloader.py si trova nel direttorio:

C:\Program Files (x86)\IntelSWTools\openvino_2020.1.033\deployment_tools\open_model_zoo\tools\downloader