Toolbox al cioccolato

Per rendere utilizzabile ogni PC come si deve con tutta una serie di tools che a mio avviso ritengo indispensabili, utilizzo da qualche settimana uno script PowerShell.

Si basa su Chocolatey e infatti la prima riga dello script permette di installarlo.

Richiede di essere eseguito con PowerShell come Amministratore.

Ecco la mia lista di programmi di cui non posso fare a meno, ma soprattutto, lo script:

#Uncomment the following line to install Chocolatey.
#@powershell -NoProfile -ExecutionPolicy Bypass -Command “iex ((New-Object System.Net.WebClient).DownloadString(‘https://chocolatey.org/install.ps1′))” && SET “PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin”

choco install notepadplusplus -y

choco install vlc -y

choco install 7zip -y

choco install ultrasearch -y

choco install paint.net -y

choco install vim -y

choco install google-chrome-x64 -y

choco install windirstat -y

choco install autohotkey -y

choco install sysinternals -y

choco install teamviewer -y

choco install tor-browser  -y

#Less useful

#choco install ultravnc -y

#choco install ammyy -y

#choco install gitkraken -y

#choco install DotNet35 -y

#choco install DotNet45 -y

#choco install crystalreports-for-visualstudio -y

Advertisements

Alla ricerca del commit perduto

Una delle certezze che si ha usando git è che quando qualcosa è stato salvato con un commit è scolpito nella pietra e quasi impossibile da perdere. Maneggiando con GitKraken ho fatto degli errori e ho fatto dei passaggi che mi hanno portato a perdere un branch. Era un branch di esperimenti con cose di poco conto ma ci tenevo a recuperare il lavoro svolto.

Col comando

git reflog

ho ottenuto la cronologia di tutte le ultime operazioni fatte con un risultato di questo tipo:

image

Ho individuato (in rosso) il commit di mio interesse: 8cfba14.

A questo punto il gioco è fatto:

git checkout 8cfba14

ho controllato il contenuto e ovviamente c’era tutto, ora basta fare un nuovo branch

git branch wallpaper 8cfba14

così da avere un comodo riferimento a quel commit come era prima dei miei errori.

Le interfacce grafiche costruite sopra git sono molto comode per la routine quotidiana e hanno spesso un look accattivante e generano un albero della cronologia molto chiaro. Tuttavia a volte non si capisce bene cosa facciano sotto il cofano e fanno cose inaspettate.image

La riga di comando permette un controllo totale, chirurgico. Penso che conoscere bene la riga di comando di git sia uno dei fondamenti da cui non possiamo prescindere perché significa essere in grado di salvaguardare/recuperare/manutenzionare le preziose ore di lavoro che ogni giorno dedichiamo alla nostra passione. È la nostra cassaforte con super poteri di viaggio nel tempo, funzioni di ricerca (lo sapevate git grep?) e molto altro. Vale la pena conoscerla a fondo.

Static Code Analisys

Prima di qualche mese fa non avevo mai messo le mani su un tool di anlisi statica del codice. Implementando un progetto di build ho approfondito la questione, integrando nel processo dei controlli di code analisys tramite FxCop.

image

FxCop nasce come progetto interno di Microsoft per verificare l’adesione alle .NET Framework Design Guidelines del codice che viene scritto ogni giorno. Analizza il CIL degli assemblies alla ricerca di più di 200 possibili “violazioni” raggruppate in:

  • COM (Interoperability)
  • Design
  • Globalization
  • Naming
  • Performance
  • Security
  • Usage Maintainability
  • Portability
  • Reliability

Ho preso spavento vendendo il risultato della prima analisi di un assembly relativo a progetto a cui sto lavorando da qualche mese di dimensioni ridotte! La nota positiva è che cercando di risolvere tutti i warning si approfondiscono tematiche che normalmente si trascurerebbero. La prima cosa che mi è venuta in mente è che ho imparato come implementare IDisposable correttamente, cosa che prima facevo “a sentimento”.

Che esperienza avete con l’analisi statica del codice e cosa vi ha insegnato?

Open Live Writer

Pensavo fosse sparito dalla faccia della Terra e invece in forma open source vive ancora.

openlivewriter-purpleheader

Questo post è il primo che scrivo usando Open Live Writer: la versione open source e aggiornata del molto comodo Windows Live Writer che esisteva anni fa.

Metto qui il link per il download dal sito ufficiale del progetto.

http://openlivewriter.org/

Azure PowerShell Start Virtual Machine

This is the script I use to start virtual machines in our cloud environment. I write it down here for archive and sharing purposes.

1.png

It is based on the Azure RunAs automation account.

The only thing thing you need to do is to schedule this script daily.


<#
    .DESCRIPTION
        Turns of virtual machines only office days.

    .NOTES
        AUTHOR: Michele Ferracin
#>


# No Sunday, no Saturday.
$wd = (Get-Date).DayOfWeek

if ($wd -eq "Sunday" -or $wd -eq "Saturday") {
 exit 0;
}

$connectionName = "AzureRunAsConnection"
try
{
    # Get the connection "AzureRunAsConnection "
    $servicePrincipalConnection=Get-AutomationConnection -Name $connectionName        

    "Logging in to Azure..."
    Add-AzureRmAccount `
        -ServicePrincipal `
        -TenantId $servicePrincipalConnection.TenantId `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint 
}
catch {
    if (!$servicePrincipalConnection)
    {
        $ErrorMessage = "Connection $connectionName not found."
        throw $ErrorMessage
    } else{
        Write-Error -Message $_.Exception
        throw $_.Exception
    }
}

Start-AzureRmVM -Name "YourVM1" -ResourceGroupName "YourResourceGroup"

Start-AzureRmVM -Name "YourVM2" -ResourceGroupName "YourResourceGroup"


Ultrasearch (e Windows Search)

Ogni tanto si scoprono dei tool / programmi che, una volta adoperati, ci si chiede come si sia potuto fare senza.

Questo è il caso di Ultrasearch, almeno per me.

Ultrasearch esegue ricerce di file nel disco a una velocità stratosferica. La cosa interessante è che si basa sulla MFT del file system NTFS per raggiungere tale velocità.

A questo punto sorge una domanda. Non so se avete problemi con le ricerche di file in Windows (soprattutto in cartelle non indicizzate) ma io sono disarmato dalla lentezza di cui il sistema operativo stesso soffre in questo caso. Perché Windows non fa uso delle stesse tecniche di ricerca di Ultrasearch visto che l’NFTS l’ha inventato proprio Microsoft? E se ne fa uso, come mai è così lento?

Ad ogni modo ringrazio il collega Giacomo per avermi fatto scoprire Ultrasearch che ho già usato con ottimi risultati in più di qualche occasione.

P.S.: A me la ricerca di Windows funziona particolarmente nella cartella OneDrive con tanto di ricerca nei contenuti. Per il resto lascia molto a desiderare.

Aggiornare un servizio di Windows via Powershell

Avete implementato un servizio di Windows e, come è consuetudine, avete scoperto un bug e lo avete risolto.

Ora bisogna aggiornare il servizio.

Siccome il mio codice ha spesso dei bug mi è capitato di dover ripetere più volte questo processo:

  • Compila la dll con la correzione;
  • Spegni il servizio nel server;
  • Sostituisci la dll;
  • Riavvia il servizio.

All’n-esima volta mi sono stufato e ho creato uno script powershell che recita:

Set-Service -Name MadLab.Router -ComputerName 125.0.0.254 -Status Stopped

Copy-Item -Path .\MadLab.Router.Servizio\bin\Release\* -Destination \\125.0.0.254\madlab-ame\MadLab.Router\ -Exclude *config*,*vshost*, *.pdb

Set-Service -Name MadLab.Router -ComputerName 125.0.0.254 -Status Running