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.

Vedi articolo

[risolto] Su Chrome appare una banda nera in alto che impedisce di cliccare sulle schede o sui pulsanti della finestra

Problema: Su Windows 10, utilizzando due monitor, su Chrome appare una banda nera in alto che impedisce di cliccare sulle schede, sul menu delle opzioni oppure sui pulsanti della finestra.

Soluzione: Aprire il task manager premendo ALT+CTRL+CANC e andando su Gestione Attività, andare in Dettagli e trovare il processo dwm.exe. Terminare il processo. Il processo dovrebbe riavviarsi da solo, risolvendo il problema.

Più nel dettaglio sembra che si tratti di un bug, già noto dalla seconda metà del 2018, di Windows 10. Nel caso specifico il problema si presenta nella maniera seguente:

Lì dove dovrebbero esserci le schede ed i pulsanti della finestra c’è solo una striscia nera. Il problema si presenta solamente a schermo intero e su un singolo monitor.

Riducendo la finestra, oppure aprendola a schermo intero su un altro monitor, il problema non sembra presentarsi. Dei due o più monitor non c’è uno “preferito” dal problema, avviene in modo casuale su qualunque. L’unica soluzione possibile sembra il riavvio del sistema.

Un’altra soluzione suggerita da Microsoft è quella di disabilitare l’accelerazione hardware in Chrome, ma questo non sembra incidere in alcun modo sulla questione, tanto più che io l’avevo disattivata da principio e la cosa è iniziata a succedere diverso tempo dopo.

In sostanza sembra che al momento, a meno che non correggano questo errore con qualche nuovo aggiornamento, l’unica soluzione concreta, a parte il riavvio, sia quella di terminare il processo dwm.exe (Desktop Windows Manager). Una volta terminato, il processo si riavvierà da solo e il problema non dovrebbe presentarsi, almeno per un po’.

Vedi articolo

[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.

 

Vedi articolo

[windows] Migrare utenti su un nuovo dominio, senza migrazione del dominio

Per quelli a cui piace complicarsi la vita, ecco come migrare i computer e gli utenti da un dominio all’altro, preservando configurazioni e file.

Scenario: abbiamo dei computer con degli utenti di dominio, con Windows Server, che vogliamo spostare su un nuovo dominio, senza però effettuare la migrazione del dominio stesso

Anzitutto assicuriamoci di avere sui computer l’utente amministratore locale accessibile. Qualora non ci fosse, o non se ne ricordasse la password, possiamo ripristinarlo seguendo questa guida.

Qualora l’utente administrator non fosse abilitato, ricordiamoci che possiamo attivarlo (eventualmente anche dalla modalità di ripristino) digitando:

A questo punto sul nostro computer avremo un utente di dominio, che chiameremo CONTOSO\Mario, e un utente locale Administrator.

  1. Attacchiamo il computer alla rete con il nuovo dominio, chiamato NEWCONTOSO, dove abbiamo creato un nuovo utente NEWCONTOSO\Mario
  2. Entriamo come amministratore locale
  3. Apriamo C:\Users ed individuiamo la cartella che apparteneva all’utente CONTOSO\Mario, supponiamo che sia mario.contoso
  4. Apriamo Esegui (WIN + R) e digitiamo regedit per aprire l’editor del registro
  5. Raggiungiamo l’elenco dei profili su HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\
  6. Qui compariranno varie voci del tipo S-1-5-21-XXXX dei profili degli utenti, cerchiamo le voci corrispondenti alla cartella mario.contoso alla voce ProfileImagePath
  7. Cancelliamo la voce del registro associata al profilo utente del precedente dominio
  8. Per evitare ogni forma di conflitto rinominiamo la cartella C:\Users\mario.contoso in qualcosa tipo C:\Users\mario.contoso__
  9. Scarichiamo CCleaner e facciamo una pulizia del registro
  10. Apriamo il Panello di controllo e creiamo un nuovo utente amministratore del computer, chiamato Mario, come l’utente che intendiamo registrare
  11. Andiamo sopra C:\Users\mario.contoso__ e clicchiamo col destro, andiamo su Proprietà > Sicurezza > Avanzate, qui andiamo su Autorizzazioni > Cambia autorizzazioni, se non esiste aggiungiamo il nuovo utente amministratore Mario e diamogli completa autorizzazione sulla cartella, spuntiamo anche le voci Includi autorizzazioni ereditarietà dell’oggetto padre di questo oggetto e Sostituisci tutte le autorizzazioni degli oggetti figlio con autorizzazioni ereditabili derivate da questo oggetto, premiamo OK e attendiamo. Se ci fossero degli errori ignoriamoli e diamo Continua fino alla fine. Poi andiamo su Proprietario > Modifica, se non vediamo l’utente Mario aggiungiamolo premendo Altri utenti o gruppi… altrimenti selezioniamolo e spuntiamo Sostituisci proprietario in sottocontenitori ed oggetti
  12. Adesso facciamo logout dall’account amministratore ed entriamo con l’utente amministratore locale Mario
  13. A questo punto apriamo il prompt dei comandi (WIN+R e poi cmd) e digitiamo il comando:

    In questo modo prendiamo il controllo della cartella
  14. Sistemiamo i permessi in modo che il nostro utente locale Mario abbia accesso completo
  15. Adesso usciamo da Mario (mi raccomando disconnettiamo l’utente) e torniamo su Administrator
  16. Una volta dentro andiamo su Esplora risorse e selezioniamo la visualizzazione dei file nascosti
  17. Adesso tagliamo (CTRL+X) le cartelle AppData, Documents, Pictures, Videos, Desktop (ed eventuali altre) dalla cartella C:\Users\mario.contoso__ e spostiamoli nella cartella dell’utente Mario locale, probabilmente C:\Users\mario
  18. Diamo OK a tutti gli alert, tentiamo Riprova laddove possibile, altrimenti diamo Ignora
  19. Riavviamo il computer
  20. A questo punto possiamo procedere a configurare il nuovo dominio, utilizzando il Computer Connector di Windows Server
  21. Una volta eseguita la connessione ci chiederà quali utenti vogliamo far migrare i profili, selezioniamo la seconda voce Configura il computer per me e per altri utenti
  22. Selezioniamo l’utente NEWCONTOSO\Mario e andiamo avanti
  23. Nella scelta del profilo selezioniamo il profilo locale Mario
  24. Proseguiamo e concludiamo la configurazione con le altre opzioni a nostra scelta
Vedi articolo

[xamarin] Pubblicare app iOS in beta su TestFlight da Visual Studio 2017 su Windows

Obiettivo: Pubblicare la beta di una app per iOS, sviluppata con C# e Xamarin su Visual Studio 2017 per Windows

Per molti sarà una banalità, ma ho trovato che la pubblicazione di app iOS da Windows (ok, capisco che me la sto proprio cercando) è una piccola avventura, a differenza di quando si lavora su Android. Anzitutto dobbiamo assicurarci di avere tutti gli ingredienti necessari per poter procedere. Questi comprendono:

Xamarin e Visual Studio 2017 su Windows (nel mio caso specifico Windows 10)

Un Mac con installati Visual Studio 2017 ed Xcode per poter compilare al app.

Application Loader 3.0 (scaricabile da qui) per poter caricare la app online sull’Apple Store.

Un account Apple Developer e uno su iTunes Connect.

Una volta preparata la nostra app e testata sulla macchina virtuale di Xcode, possiamo cominciare a pensare alla sua pubblicazione. Come ho accennato prima tutte le guide online in merito si riferiscono principalmente a Visual Studio 2017 con Xamarin già installati sul Mac, mentre io mi ostino per volerci lavorare da Windows.

Quello che voglio fare è distribuire la app in beta verso alcuni utenti registrati per TestFLight, in modo da poter effettuare un debugging realistico rispetto all’utilizzo degli utenti.

Per poterlo fare anzitutto devo aggiungere degli utenti su iTunes Connect.

Indirizzo: https://itunesconnect.apple.com/

Per farlo mi sposto nell’apposita sezione.

Una volta dentro, da Utenti di iTunes Connect premo sul tasto più e aggiungo un nuovo utente.

A questo punto posso inserire l’indirizzo email col quale ho registrato il mio iPhone sul quale voglio fare le prove, mettendo un nome e cognome come riferimento.

Adesso mi verrà chiesto di selezionare un ruolo per il mio utente.

Scegliendo il ruolo mi verrà detto quali saranno le sue possibilità di accesso, quello che mi interessa è che sia disponibile per TestFlight.

Fatto questo possiamo salvare e spostarci a configurare la parte di Apple Developer.

Indirizzo: https://developer.apple.com/

Anzitutto aggiungiamo il dispositivo sul quale vogliamo far agire l’utente. Spostiamoci su Devices > All (indirizzo: https://developer.apple.com/account/ios/device/) e clicchiamo sul tasto più per aggiungere un dispositivo. Ci verranno chiesti un nome descrittivo e un UDID. Per trovare l’UDID suggerisco la seguente guida.

A questo punto registriamo un identificatore per la nostra app, andando su Identifiers > App IDs (indirizzo: https://developer.apple.com/account/ios/identifier/bundle/create).

Il Bundle ID è quello che abbiamo stabilito nel file Info.plist alla seguente chiave:

Dove com.miodominio.NomeApp è il formato di dominio inverso, un po’ come succede anche su Android.

Una volta aggiunta la app, con le opportune configurazioni, aggiungiamo i certificati per la distribuzione.

Andiamo su Certificates > All e premiamo sul tasto più per aggiungerne uno.

Selezioniamo App Store and Ad Hoc e seguiamo la procedura guidata. Alla fine della procedura ci sarà dato un file di certificato da installare sul Mac dove abbiamo Xcode ed il resto.

NOTA: La medesima cosa si può fare anche da Xcode, andando su Preferenze > Account > Gestisci certificati e cliccando sul tasto aggiungi.

Ora spostiamoci a creare un Provisioning Profiles di distribuzione.

Per farlo andiamo su Provisioning Profiles > Distribution (indirizzo: https://developer.apple.com/account/ios/profile/production)

Clicchiamo sul tasto più per aggiungere un profilo e selezioniamo un profilo di distribuzione Ad Hoc.

Seguiamo le istruzioni. Alla fine ci verrà dato un file con estensione *.mobileprovision che dobbiamo mettere sul nostro Mac e cliccarci due volta sopra per installarlo. Apparentemente non succederà nulla, ma il profilo sarà stato installato.

Fatte tutte queste belle cose arriva l’avventura finale. Compilare la app da Visual Studio 2017 che gira su Windows.

Per poterlo fare correttamente è necessario apportare alcune modifiche.

Anzitutto apriamo Info.plist e assicuriamoci di aver impostato correttamente i parametri di compatibilità.

Assicuriamoci di aver impostato correttamente la lingua:

Ma soprattutto di aver inserito il parametro per il beta testing:

Adesso apriamo Entitlements.plist e assicuriamoci di inserire anche qui il medesimo parametro:

Spostiamoci sulle proprietà della nostra app e configuriamola nel modo seguente:

In questo modo l’esportazione avverrà nella cartella bin\iPhone\Ad-Hoc dentro la radice del progetto, dove verrà creato un file con estensione *.ipa.

Assicuriamoci anche che sia visibile l’identità giusta della firma ed il corretto profilo di provisioning. A tale proposito, qualora non fosse possibile vederli, consiglio di aprire e chiudere Visual Studio o lanciare una compilazione sul Mac collegato in rete.

Assicuriamoci anche di aver configurato la giusta impostazione di compilazione, che nel mio caso risulta così:

Se abbiamo fatto tutto come si deve troveremo nella suddetta cartella, bin\iPhone\Ad-Hoc, il nostro file *.ipa.

Spostiamolo sul nostro Mac e apriamo Application Loader.

Clicchiamo su Delivery Your App e poi su Choose. Scegliamo il file *.ipa da caricare e attendiamo la fine del caricamento.

Se tutto è andato bene la nostra app diventerà disponibile per il test agli utenti che abbiamo selezionato precedentemente.

Errori comuni

Di seguito riporto alcuni errori comuni che sono stati generati da Application Loader o inviati via email al momento dell’invio della app in testing:

  1. Missing beta entitlement – Your app does not include the beta-reports-active entitlement. If you intend to distribute this build via TestFlight for beta testing, please re-build this app with an App Store Distribution provisioning profile. Do not use ad-hoc profiles.
    SOLUZIONE: inserire <key>beta-reports-active</key> nei file Info.plist e Entitlement.plist come descritto precedentemente
  2. the bundle contains a key that is not included in the provisioning profile beta-reports-active
    SOLUZIONE: c’è un errore nel profilo di compilazione, assicurarsi che sia di Distribuzione, come detto prima; maggiori informazioni si trovano qui
  3. Your app does not include the beta-reports-active entitlement
    SOLUZIONE: vedere punto 1, stesso problema
  4. Errore Invalid architecture: ARMv7. 32-bit architectures are not supported when deployment target is 11 or later
    SOLUZIONE: questo è un errore di Visual Studio, per risolverlo è necessario configurare correttamente la Compilazione iOS nelle impostazioni del Progetto, come illustrato in precedenza, inoltre bisogna inserire UIRequiredDeviceCapabilities in Info.plist
  5. ipa file too large
    SOLUZIONE: in questo caso non dipende assolutamente dal file, ma può dipendere dai certificati (vedi all’inizio) oppure dalla velocità della connessione da cui facciamo l’upload; assicuriamoci che il profilo di Provisioning e i certificati siano installati sulla macchina con Xcode.
Vedi articolo

[windows] Ripristinare password di account locale su Windows 7/8

Problema: Ripristinare la password di un account locale, per esempio Administrator oppure un altro account, su un computer con Windows 7 oppure Windows 8

Questo esempio vale anche per Windows 8 (non ho ancora provato su Windows 10), mentre mi avvarrò di un Windows 7 per illustrare la procedura. Anzitutto procuriamoci un disco di installazione di Windows 7, con il quale poter avviare il ripristino del computer. Nel caso non si disponga di tale disco lo si può anche scaricare online, per esempio da qualche torrent, perché quello che ci interessa non è installare un nuovo sistema operativo, ma solo ripristinare quello corrente, quindi non è indispensabile disporre di una copia originale o di codici di licenza.

In secondo luogo assicuriamoci che sia possibile avviare il disco dal BIOS, tipicamente cambiando l’ordine di boot dalla configurazione del BIOS (nella maggior parte dei PC si accede al BIOS premendo F2 oppure CANC/DEL) oppure accedendo al menu di boot (tipicamente premendo F12 all’avvio).

Una volta inserito il disco premiamo INVIO per accedere al disco, anziché avviare il sistema operativo:

A questo punto sarà avviato il sistema di ripristino, selezioniamo la lingua:

Premiamo avanti, a questo punto selezioniamo dalla voce in basso l’opzione per il ripristino del computer.

Verranno cercati i sistemi operativi ripristinabili. Selezioniamo a questo punto il sistema operativo che ci interessa (tipicamente ce ne sarà uno solo) e procediamo:

Premiamo avanti. A questo punto si apriranno le opzioni di ripristino:

Clicchiamo su Prompt dei comandi

A questo punto notiamo che ci troviamo nell’unità X:, il sistema operativo è stato probabilmente montato sull’unità D: (attenzione! tipicamente non si tratta di C:, anche se sul computer originale Windows era montato su C:). Per visualizzare tutte le unità montate basta digitare:

Ci verrà mostrato qualcosa di simile a questo:

Possiamo entrare in D: digitando semplicemente D: e premendo INVIO. Utilizzando il comando dir possiamo accertarci di essere nel volume giusto.

A questo punto vogliamo sostituire Sticky Keys con il Prompt dei comandi sul nostro PC originale. Sticky Keys si avvia premendo ripetutamente il tasto SHIFT, in questo modo senza dover accedere al PC avvieremo il prompt dei comandi. Per maggiori informazioni su Sticky Keys suggerisco la pagina di Wikipedia.

Per fare la sostituzione digitiamo sul prompt dei comandi:

In questo modo faremo una copia di backup del file sethc.exe nella radice del sistema e poi lo sostituiremo con cmd.exe.

Il risultato dovrebbe apparire così se tutto è andato bene:

Usciamo dal prompt dei comandi digitando exit, dopodiché premiamo il tasto riavvio.

Una volta riavviato il sistema premiamo per 5 volte rapidamente il tasti SHIFT finché non compare il prompt, di fronte alla schermata di login.

Adesso digitiamo:

In questo modo verranno visualizzati gli account registrati sul PC.

Nel mio caso sono disponibili gli utenti Administrator, Guest, Mario e SVEN. Immaginiamo di voler cambiare la password per l’utente Mario. Quindi digitiamo:

Al posto di USERNAME e PASSWORD digitiamo il nome utente e la nuova password.

Nel mio caso ho digitato Mario e come password Pappapero4321.

Se tutto è andato bene possiamo accedere con il nostro utente e la nuova password.

A questo punto è importante ripristinare sethc.exe per motivi di sicurezza. Se si prova a farlo dal sistema operativo avviato si otterrà un errore.

Per fare il ripristino è necessario ripetere i primi passaggi e accedere al sistema di ripristino. A quel punto digitiamo:

Così ripristineremo la copia che abbiamo salvato sulla radice nella posizione originale.

Vedi articolo

[windows] Copiare cartelle e file preservando i permessi e le condivisioni sulla destinazione

Problema: Copiare dati e cartelle di un profilo, come per esempio AppData, su un altro profilo senza copiare anche i relativi permessi e preservando i permessi e le condivisioni del profilo di destinazione

Senza entrare nel merito del perché si potrebbe voler fare qualcosa del genere (molto utile in realtà quando si fa la migrazione dei profili) è sufficiente utilizzare robocopy.

Nello specifico il seguente comando:

/E serve a copiare tutto il contenuto, comprese le sottocartelle vuote

/R:0 serve per saltare eventuali errori, dovuti magari a mancanza di permessi

Potremmo aggiungere anche il /COPY:flag[s] per copiare solo determinate caratteristiche (di predefinito è su /COPY:DAT, D=Data, A=Attributi, T=Timestamps, eventualmente S=Informazioni di sicurezza dei NFTS ACLs, O=Informazioni sul proprietario, U=Auditing info)

Vedi articolo

[excel] Copiare solo celle visibili e non quelle nascoste

Problema: Quando si seleziona un gruppo di celle e si copiano normalmente, vengono copiate anche le celle nascoste, mentre si vorrebbero copiare solamente le celle visibili

Immaginiamo di avere un intervallo di celle come il seguente:

Se adesso decidessimo di nascondere la terza riga avremmo il seguente risultato:

Selezionando l’intervallo A1:B5 e copiando (per esempio con CTRL+C) copieremo in realtà anche la riga 3 che è nascosta. Lo stesso vale quando si utilizzano i filtri sulle celle.

Per copiare invece solamente le celle visibili dobbiamo fare nel modo seguente:

  1. Selezioniamo l’intervallo che vogliamo copiare come faremmo normalmente
  2. Nella scheda Home spostiamoci su Trova e seleziona e selezioniamo Vai a formato speciale…
  3. Nella finestra selezioniamo Solo celle visibili e premiamo Ok
  4. Eseguiamo la copia come faremmo normalmente (o banalmente premendo CTRL+C)

Adesso abbiamo copiato solo le celle visibili e possiamo incollarle dove vogliamo.

Per maggiori approfondimenti consiglio la guida ufficiale di Office: Copiare solo le celle visibili

Vedi articolo

[windows server] Spostare la cartella dei file di aggiornamento di WSUS

Obiettivo: spostare la cartella di archiviazione degli aggiornamenti di WSUS in una nuova posizione

Tipicamente i file di aggiornamento gestiti dal server WSUS si trovano nella posizione C:\Comsys WSUS.

Per cambiare tale cartella è sufficiente trovare il programma wsusutil.exe ed effettuare lo spostamento nel modo in cui segue:

  1. WIN+R per aprire ESEGUI e digitare CMD per aprire il prompt dei comandi
  2. Spostarsi nella cartella di wsusutil.exe tipicamente dovrebbe trovarsi in C:\Program Files\Update Services\Tools
  3. Digitare quindi CD C:\Program Files\Update Services\Tools
  4. Creare quindi la nuova cartella di destinazione dei file di aggiornamento, per esempio su un disco F creando una cartella F:\WSUS
  5. Digitare quindi wsusutil.exe movecontent F:\WSUS F:\move.log
  6. Questo comando avvierà lo spostamento dei file dalla posizione attuale a quella nuova
Vedi articolo

[python] Radiazione di Hawking e tempo che impiega un buco nero ad evaporare

In memoria di Stephen Hawking propongo un modesto esercizio in Python per calcolare il tempo di evaporazione di un buco nero, secondo la radiazione di Hawking.

In questo caso utilizzeremo le librerie scipy e numpy di Python.

Il mio esempio sarà fatto sotto Windows. Anzitutto installiamo quindi le librerie necessarie utilizzando pip, nella PowerShell digitiamo:

Una volta fatto avviamo un nuovo progetto in python e andiamo anzitutto a calcolare la suddetta formula. L’equazione di evaporazione di un buco nero, che si trovasse in una condizione ideale (ovvero nessuna aggiunta di energia, quindi ipoteticamente in un universo completamente vuoto e senza radiazione di fondo) è la seguente:

t_{ev} = \frac{5120 \pi G^2 M_0^3}{\hbar c^4}

Per scriverla in Python digitiamo:

Faccio notare che da scipy importiamo le costanti fisiche e matematiche che possiamo utilizzare secondo la seguente tabella.

M0 è l’ipotetica massa iniziale di un buco nero di massa solare, nello specifico di 1,98892 * 10^{30} kg .

Il risultato dovrebbe essere:

Il risultato è in secondi, possiamo convertirlo in miliardi di anni digitando:

Il risultato è qualcosa come 2 * 10^{58} miliardi di anni, molto più dell’attuale vita dell’universo stimata attorno ai 13 miliardi di anni.

Adesso proviamo ad inserire l’equazione in un grafico, dove vogliamo confrontare vari tipi di buco nero in base alla massa ed il tempo di evaporazione.

Per farlo anzitutto convertiamo la nostra precedente equazione in una funzione digitando:

Ricordiamoci che il risultato della funzione è in secondi. A questo punto prepariamo i valori del nostro asse x, che saranno le masse di diversi buchi neri. Prendiamo 100 valori tra 0 e 1030.

Sull’asse Y calcoliamo i corrispondenti valori:

Adesso impacchettiamo tutto in un grafico generato con matplotlib.

Il risultato sarà qualcosa di simile a questo:

Vedi articolo