Quantcast
Channel: Home Page http://blogs.dotnethell.it
Viewing all 24464 articles
Browse latest View live

SQL Server 2012 e 2008 R2 Cumulative Updates


Kingston DataTraveler Ultimate 3.0 G3 e modello entry-level SE9

$
0
0

Ho recentemente acquistato 2 chiavette Kingston (una marca sempre affidabile) dalle prestazioni (e costi) di livelli completamente diversi. Eccole qua, nelle loro spartane confezioni.

Sono la Datatraveler Ultimate 3.0 G3 da 32 GB, compatibile USB 3.0, e la SE9 da 16 GB questa volta solo USB 2.0.
I corrispettivi numero di modello sono:

DTU30G3/32GB
DTSE9H/16GB

Come dimensioni sono quanto di più diverse si possa immaginare.
Minuscola quella (diciamo) entry-level, ben più massiccia quella USB 3.0.

I prezzi si attestano (valori di Amazon Italia) sugli 11 euro per la piccolina, e sui 34 per quella grossa, come si vede qui e qui.

Tutte e due sono costituite da un corpo interamente metallico; in tal modo si ha la migliore dispersione del calore. Ad entrambe, però, manca il cappuccio per proteggere la presa USB: per alcuni può essere un vantaggio (si evita di perderlo, ad esempio), ma si ha una protezione in meno nel caso entrassero corpuscoli estranei nelle prese.
Quella più piccola è addirittura un monoblocco unico, senza nemmeno giunture, mentre quella grossa ha una superficie che scorre per far rientrare la porta USB, che però non protegge nel suo incavo. Ha un interno in plastica bianca e una piccola luce a led blu che lampeggia durante l’uso (nel caso della chiavetta piccola, invece, non c’è modo di sapere se è in uso o meno).

Per quanto riguarda la Datatraveler Ultimate 3.0 G3, bisogna soprassedere per quanto riguarda l’estetica.
Considerando che le più recenti chiavette, di quasi tutte le marche, sono caratterizzate da dimensioni sempre più microscopiche, questa pen drive spicca per le sue dimensioni enormi, che potrebbero complicare la vita nei portatili in cui le porte USB sono molto ravvicinate (anche se la sua larghezza, a onor di cronaca, risulta tutto sommato contenuta).
Ecco qua sotto quanto sporge dal pc.

Qua sotto invece la sua immagine “istituzionale”, in cui si nota il suo interno in plastica bianca.

Mi ha lasciato un po’ perplesso, invece, lo scorrimento orizzontale del suo cappuccio (se vogliamo chiamarlo così). Alla fin fine non protegge completamente la porta USB (il cui incavo rimane aperto) e, a chiavetta estratta, mostra l’interno in plastica bianca non esattamente il massimo come aspetto.
È dotata di un piccolo e discretissimo led di un colore tra il viola e il blu che lampeggia (solo) durante l’uso.
Attenzione che, se usata intensamente, tende a scaldarsi molto, dato che il suo corpo esterno è metallico.

Arriva formattata in FAT32, dei 32 GB totali, ne sono disponibili 29,2.
Qua sotto le sue caratteristiche tecniche.

Le sue prestazioni sono di assoluto rispetto, come si vede da questa schermata dei test con HD Tune.

Valori così elevati sono tipici solo di chiavette di alta e altissima qualità.

La SE9, invece, è davvero mignon, come si vede dalla foto qua sotto.

Come detto è composta da un unico blocco metallico, senza giunture di nessun tipo, con un pratico foro per inserirla in un portachiavi.
Essendo tutta in metallo, nell’uso inteso si scalda molto, meglio ricordarsene durante l’uso.

Qua sotto le sue specifiche tecniche.

Da notare le dimensioni veramente minuscole, come si vede anche da questa foto dove è collegata al mio notebook.

Se non la si aggancia a qualcosa, infatti, si rischia di perderla alla prima occasione.
Le prestazioni sono però davvero scarse, come si vede da questo test con HD Tune, in cui si notano le grandi differenze con il grafico precedente.

Qua sotto è la fase di copia di un unico file di grandi dimensioni (circa 3 GB). Si nota la bassa velocità di scrittura (difficile che superi i 5 MB/sec), su porta USB 3.0.

Tra tutti i test che ho fatto negli ultimi tempi su chiavette di varie marche, questa è la più scarsa come performance.

Giusto come metro di paragone, ecco come esce una analoga schermata, usando questa volta la G3 (stesso file, stessa porta USB 3.0 del pc, sempre partendo da chiavette completamente vuote e con il pc che non sta effettuando nessuna altra operazione).

Come si vede le prestazioni sono di qualche ordine di grandezza superiori.
(PS: Un grazie a Gennaro Prota che mi ha fatto notare il 4 luglio 2013 un'incongruenza in queste 2 ultime immagini nella prima versione di questo post).

Diciamo che la salva il design riuscito, le dimensioni minuscole e la mancanza del cappuccio (il che la rende pratica). Oltre al prezzo concorrenziale, ovviamente, che si attesta sui 10/11 euro.
Da tenere a mente che, non avendo il cappuccio, potrebbe diventare un problema se entrano dei corpi estranei minuscoli nella fessura USB (granelli di sabbia o altro).

Insomma, 2 chiavette Kingston per usi e con finalità abbastanza diversi, ma che potrebbero tornare utili in contesti frequenti. Inoltre la marca rappresenta una garanzia di lunga durata.

PS:
Foto realizzate con Sony Xperia Ion.

Replicare righe in base a valore di colonna

$
0
0
Oggi è arrivata una richiesta sul forum, replicare i record in base al numero contenuto in una colonna. Diciamo una trasformazione: da una tabella con una riga per ogni chiave, ad una che contiene tante righe per chiave quanto un valore specifica.
Devo dire che non è la prima volta che mi trovo domande di questo tipo, quindi ho deciso di scirivere qui una possibile soluzione.

Partiamo con la tabella dei "parametri":

CREATETABLE #ParameterTable

(

    ID intNOTNULLPRIMARYKEYCLUSTERED

  , Value int NOTNULL

  , RepeatValue intNOTNULL 

);

GO

 

INSERTINTO #ParameterTable(ID, Value, RepeatValue)

VALUES

    (1,2,4)

  ,(2,9,3)

  ,(3,7,20);

GO


Come vedete è una tabella che contiene, per ogni id il numero di volte in cui ripetere la riga in output.
Ciò significa che per il primo record (con ID = 1) devo ottenere in output 4 righe, per il secondo 3, e per il terzo 20.

Il tutto è stato risolto con una CTE (Common Table Expression), in questo modo:

WITH ReplicateTable(ID, Value, RepeatValue, RepeatedTime)as

        (

      SELECT

          ID

        , Value

        , RepeatValue

        ,1

      FROM

        #ParameterTable

      UNIONALL

      SELECT

          ID

        , Value

        , RepeatValue

        , RepeatedTime +1

      FROM

        ReplicateTable R

      WHERE

        R.RepeatedTime< R.RepeatValue

        )

SELECT

    ID

  , Value

  , RepeatedTime

FROM

    ReplicateTable

ORDERBY

    ID

  , RepeatedTime;

GO



La CTE ci consente di effettuare una ricorsione e quindi di utilizzare il filtro indicato nella where del secondo statement, dopo la UNION, per iterare. Il risultato è il seguente:

ID          Value      RepeatedTime

----------- ---------- ------------

1           2          1

1           2          2

1           2          3

1           2          4

2           9          1

2           9          2

2           9          3

3           7          1

3           7          2

3           7          3

3           7          4

3           7          5

3           7          6

3           7          7

3           7          8

3           7          9

3           7          10

3           7          11

3           7          12

3           7          13

3           7          14

3           7          15

3           7          16

3           7          17

3           7          18

3           7          19

3           7          20

27 righe, quelle che ci aspettavamo (4 + 3 + 20).

Nel caso in cui il RepeatValue vale 0, ottenitamo però, con questa query, un risultato errato. Impostando 0 come valore di ripetizione nel terzo record (ID = 3) otteniamo quanto segue:

ID          Value      RepeatedTime

----------- ---------- ------------

1           2          1

1           2          2

1           2          3

1           2          4

2           9          1

2           9          2

2           9          3

3           7          1 --> il record appare e con RepeatedTime errato



Per migliorare, è sufficiente cambiare il membro di start, ovvero la condizione della prima select nella CTE:

WITH ReplicateTable(ID, Value, RepeatValue, RepeatedTime)as

        (

      SELECT

          ID

        , Value

        , RepeatValue

        ,1

      FROM

        #ParameterTable

      WHERE

        RepeatValue<>0

      UNIONALL

      SELECT

          ID

        , Value

        , RepeatValue

        , RepeatedTime +1

      FROM

        ReplicateTable R

      WHERE

        R.RepeatedTime< R.RepeatValue

        )


Con questo filtro, escludiamo già di partenza la ricorsione su tutti i record il cui RepeatValue vale zero.
Tutto sta nel capire cosa significa quel valore di ripetizione. Il richiedente potrebbe voler far comparire il record una sola volta se NON E' RIPETUTO. In tal caso quindi, lo zero assume tutt'altro significato. 
Ciò significa che la richiesta diventa: "si vuole mostrare ogni record almeno una volta (caso di ripetizione 0) più tutte le volte che deve essere ripetuto". 
La CTE diventa la seguente:

WITH ReplicateTable(ID, Value, RepeatValue, RepeatedTime) as

        (

SELECT

          ID

        , Value

              , RepeatValue

        ,0

      FROM

        #ParameterTable

      UNIONALL

      SELECT

          ID

        , Value

              , RepeatValue

        , RepeatedTime +1

      FROM

        ReplicateTable R

      WHERE

        R.RepeatedTime< R.RepeatValue

)


Stavolta abbiamo agito sul RepeatedTime. E il risultato che avremo è il seguente:

ID          Value      RepeatedTime

----------- ---------- ------------

1           2          0

1           2          1

1           2          2

1           2          3

1           2          4

2           9          0

2           9          1

2           9          2

2           9          3

3           7          0

I risultati sottolineati sono quelli NON RIPETUTI, ma che appaiono comunque la prima volta.

Dipende molto dal tipo di richiesta, ma con le CTE ci si può sbizzarrire abbastanza, anche se c'è da fare attenzione, come sempre, alle performance e ai livelli di ricorsione che si vogliono raggiungere.
Se volete migliorare ancora lo script, potete creare una stored procedure parametrizzata che si adatti a quanto vi viene commissionato. Mi raccomando, controllate i piani di esecuzione generati.

Stay tuned! 



Diverimento con i giochi in rete

$
0
0
I siti che mettono a disposizione giochi gratis da utilizzare in rete attraverso il browser risultano essere molti e oggi segnaliamo una novità originale.

Parliamo di giochidipescagratis.com che è un sito di giochi di pesca gratis facile da utilizzare ma certamente interessante per chi vuole trovare giochi di questo genere.

Il sito propone infatti un archivio di giochi di pesca enorme in cui tutti hanno la possibilità di individuare giochi divertenti per proprie esigenze.

Tra i giochi maggiormente realistici possiamo individuare i giochi di pesca nel fiume come quello disponibile attraverso questo collegamento che si differenzia per una grafica molto curata.
Nel gioco è necessario pescare in un fiume cercando di pescare il numero più alto possibile di pesci.

Troviamo anche giochi maggiormente semplici e che necessitano di meno impegno. Tra quest troviamo diversi giochi di pesca sulla barca come quello indicato tramite il link.
Sono giochi nei quali è necessario controllare una barca e tentare di pescare i pesci che si trovano nel mare.

I giochi di pesca rappresentano un modo di giocare piuttosto differente dal normale ma propongono un grande divertimento e quindi hanno sicuramente successo.
Giochidipescagratis.com costituisce una delle soluzioni più interessanti per chi vuole trovare giochi di questo genere e per questo motivo il consiglio è quello di visitare il sito.

Condividere settings dei tool di Red-Gate al team con TFS

$
0
0
Nel post precedente abbiamo illustrato come condividere la cartella degli snippet di SQL Prompt a tutto il team. Abbiamo utilizzato dropbox per condividere e powershell per copiare i file e spostare i puntamenti direttamente sul registry.
Ma se il team lavora con un'installazione di Team Foundation Server oppure se sfrutta Team Foundation Service, la cosa è ancora più semplice poiché non c'è da installare nessun tool aggiuntivo per lo sharing.
Nel post di cui sopra facevamo riferimento a come sfruttare un HD condiviso "in-the-cloud" per ottenere lo sharing nel team, ma lo stesso risultato si ottiene utilizzando, appunto, TFS/TFService (nel caso di Team Foundation Service e TFS Express è tutto free).

Il principio è il medesimo:
- una cartella deve esistere e deve essere sincronizzata per tutti gli sviluppatori del team
- il tool deve dare la possibilità di configurare i puntamenti alle cartelle di configurazione
- uno script deve poter cambiare questi puntamenti

Visto che stiamo parlando sempre di tool di terze parti "attaccati" a SQL Server, cerchiamo di capire come spostare tutti i puntamenti alle configurazioni di ogni plugin di Red-Gate che si utilizza per il ciclo di vita del database. Andremo a configurare nella fattispecie:
SQL Prompt snippets (utilizzati per creare frammenti di codice t-sql)
SQL Compare filter e project file (utilizzati per creare i diff script sulle strutture e per escludere oggetti durante l'operazione di deploy)
SQL Data Compare project file (utilizzato per creare i diff script sui dati)

Con SQL Prompt andremo ad impostare la cartella di caricamento degli snippet (copiandoli anche dalla base per non perdere eventuali modifiche già applicate).
Con SQL Compare andremo ad impostare la cartella di caricamento dei progetti e dei filtri (file .scp e .scpf).
Con SQL Data Compare andremo ad impostare la cartella di caricamento dei progetti (file .sdc).

Ma andiamo per passo. Come Source Control Manager utilizzeremo Team Foundation Service nel nostro esempio.

1) Creazione delle cartelle sotto source control
Immaginiamo di creare una cartella SQLTools sotto il progetto $SampleProject sul TFService dimostrativo.


Una volta fatto il checkin, ogni qual volta abbia luogo una get, la struttura verrà sincronizzata. Chiunque faccia la get latest version si troverà la seguente situazione sul proprio workspace:



2) Copia dei file sulle cartelle sotto controllo del codice sorgente
Prendiamo i nostri file e copiamoli sul source control:
facciamo checkin e tutti avranno, dopo una get, la cartella sincronizzata anche nel contenuto.


3) Creazione del powershell per lo spostamento dei puntamenti alle cartelle di default (scaricarlo direttamente da qui se preferite)
Perfetto, abbiamo tutto quello che serve per condividere i file. I tool però continueranno a puntare alle rispettive cartelle di configurazione di default, ragion per cui dovremo cambiarle direttamente nel registry (e questo è il caso dei plugin di Red-Gate, non è detto che tutti si comportino allo stesso modo). Il powershell script seguente effettua la riconfigurazione dei plugin e del puntamento alle cartelle di configurazione, in base a quali sono i parametri che gli vengono passati (input da tastiera, vi verranno fatte domande durante l'esecuzione).
Vediamolo nel dettaglio:

La prima parte si occupa di richiedere la folder del workspace su cui vogliamo salvare i dati e quella che conterrà gli snippet.

Write-Host "This program will ask some folder information about the RedGate products. Please be sure that you've installed at least the SQL Developer Bundle." -ForegroundColor "cyan"

Write-Host "Press any key to continue (ESC to quit).." -ForegroundColor "cyan"

# comment when executing via ISE

$x = $host.UI.RawUI.ReadKey("NoEcho, IncludeKeyDown")

if ($x.VirtualKeyCode -eq [char]27) {

    Return

}

 

#region PREREQUISITES

#TFS workspace folder

$WorkspacePath = Split-Path $MyInvocation.MyCommand.Definition -Parent


#ask for the snippet destination folder name

Write-Host

Write-Host "Please enter the Snippet folder name" -ForegroundColor "darkcyan"

$SnippetFolderName = Read-Host

$NewSnippetFolder = $WorkspacePath + "\" + $SnippetFolderName

if(!(Test-Path $NewSnippetFolder-or !$SnippetFolderName)

{

    Write-Host "Destination Snippet folder does not exist (" $SnippetFolderName ")" -ForegroundColor "red"

    Return

}

#endregion

 

Questa sezione si occupa di effettuare la copia dei file snippet dalla folder di default a quella nuova, immessa durante l'esecuzione. Infine viene segnata la nuova folder come proprietà di registro.

#region SNIPPETS MANAGEMENT

#ask for the sql prompt folder name

Write-Host

Write-Host "Please enter the name of the SQL Prompt folder located into ProgramFiles/RedGate path" -ForegroundColor "darkcyan"

$SQLPromptFolder = Read-Host

#copies the snippet files into the dropboxfolder

$LocalAppDataSnippetFolder = $env:LOCALAPPDATA + "\Red Gate\" + $SQLPromptFolder

if(!(Test-Path $LocalAppDataSnippetFolder))

{

    Write-Host "Snippet folder does not exist, you may not have SQL Prompt installed or you specified a wrong SQL Prompt folder name.." -ForegroundColor "red"

    Return

}

#snippets are there, so gather the list and copy them all to the new folder (fallback)

$LocalAppDataSnippets = $LocalAppDataSnippetFolder + "\Snippets\*.sqlpromptsnippet"

Write-Host "Copying *.sqlpromptsnippet files from " $LocalAppDataSnippets " to " $NewSnippetFolder ".." -ForegroundColor "gray" -NoNewline

Copy-Item $LocalAppDataSnippets $NewSnippetFolder

Write-Host "Done." -ForegroundColor "green"

#registry property

$SQLpromptRegistryFolder = "HKCU:\Software\Red Gate\" + $SQLPromptFolder

if(!(Test-Path $SQLpromptRegistryFolder-or !$SQLPromptFolder)

{

    Write-Host "Registry path missing, you may not have Red-gate products installed or you specified a wrong folder name.." -ForegroundColor "red"

    Return

}

Set-Location $SQLpromptRegistryFolder

 

Write-Host "Moving to " $SQLpromptRegistryFolder ".." -ForegroundColor "gray"

 

Write-Host "Changing registry setting for Snippet default folder to " $NewSnippetFolder ".." -ForegroundColor "gray" -NoNewline

Set-ItemProperty . "Snippets Folder" $NewSnippetFolder

Write-Host "Done." -ForegroundColor "green"

#endregion

 

Questa parte si occupa di impostare la nuova cartella per il Compare ed i suoi filtri, scrivendo anche qui la proprietà di registro.

#region COMPARE AND FILTERS MANAGEMENT

#destination folder (the same as the Workspace tool folder)

$NewCompareFolder = $WorkspacePath

#ask for the sql compare folder name

Write-Host

Write-Host "Please enter the name of the SQL Compare folder located into ProgramFiles/RedGate path" -ForegroundColor "darkcyan"

$SQLCompareFolder = Read-Host

#registry property

$SQLCompareRegistryFolder = "HKCU:\Software\Red Gate\" + $SQLCompareFolder + "\UI\"

if(!(Test-Path $SQLCompareRegistryFolder-or !$SQLCompareFolder)

{

    Write-Host "Registry path missing, you may not have Red-gate products installed or you specified a wrong folder name.." -ForegroundColor "red"

    Return

}

Set-Location $SQLCompareRegistryFolder

Write-Host "Moving to " $SQLCompareRegistryFolder ".." -ForegroundColor "gray"

Write-Host "Changing registry setting for Compare default project folder to " $NewCompareFolder ".." -ForegroundColor "gray" -NoNewline

Set-ItemProperty . "SharedProjectDirectory" $NewCompareFolder

Write-Host "Done." -ForegroundColor "green"

Write-Host "Changing registry setting for Compare Filters default folder to " $NewCompareFolder ".." -ForegroundColor "gray" -NoNewline

Set-ItemProperty . "DefaultFilterFolder" $NewCompareFolder

Write-Host "Done." -ForegroundColor "green"

#endregion


Questa parte, come la precedente, si occupa di impostare la nuova cartella per il Data Compare, scrivendo anche qui la proprietà di registro.

#region DATA COMPARE AND FILTERS MANAGEMENT

#destination folder (the same as the Workspace tool folder)

$NewDataCompareFolder = $WorkspacePath

 

#ask for the sql data compare folder name

Write-Host

Write-Host "Please enter the name of the SQL Data Compare folder located into ProgramFiles/RedGate path" -ForegroundColor "darkcyan"

$SQLDataCompareFolder = Read-Host

#registry property

$SQLDataCompareRegistryFolder = "HKCU:\Software\Red Gate\" + $SQLDataCompareFolder + "\UI\"

if(!(Test-Path $SQLDataCompareRegistryFolder-or !$SQLDataCompareFolder)

{

    Write-Host "Registry path missing, you may not have Red-gate products installed or you specified a wrong folder name.." -ForegroundColor "red"

    Return

}

Set-Location $SQLDataCompareRegistryFolder

Write-Host "Moving to " $SQLDataCompareRegistryFolder ".." -ForegroundColor "gray"

Write-Host "Changing registry setting for Data Compare default project folder to " $NewDataCompareFolder ".." -ForegroundColor "gray" -NoNewline

Set-ItemProperty . "SharedProjectDirectory" $NewDataCompareFolder

Write-Host "Done." -ForegroundColor "green"

Write-Host "Changing registry setting for Data Compare Filters default folder to " $NewDataCompareFolder ".." -ForegroundColor "gray" -NoNewline

Set-ItemProperty . "DefaultFilterFolder" $NewDataCompareFolder

Write-Host "Done." -ForegroundColor "green"

#endregion

 

Set-Location "C:"

 

Write-Host "Process completed successfully." -ForegroundColor "yellow"

Write-Host "Restart SQL Server Management Studio and Red-Gate product to apply the changes.." -ForegroundColor "yellow" 


Note: 
Per ragioni di spazio il codice non è molto leggibile. Ma scaricando da qui il file sarà tutto molto più chiaro.
Come prerequisito è necessario avere installato tutti i prodotti elencati sopra, in alternativa la modifica è nulla per le applicazioni che non sono presenti sulla macchina (verranno restituiti messaggi di errore).

Lo script deve essere condiviso col team e ogni membro deve poterlo eseguire. Una buona pratica da seguire è quella di includere anch'esso nel source control, in modo che ogni sviluppatore possa usufruirne.
Per controllare se il tutto funziona, ecco i test da fare sulle vostre macchine:
- apertura di SQL Compare:
    1) vi dovreste trovare, quando premuto Open Project.. la folder corretta così come indicata nello script powershell. Nel caso del mio esempio "C:\TFS_Workspace\SampleProject\SQLTools"
     
    2) nelle proprietà dell'applicazione (Tools -> Application Options..) dovreste trovare la Filter Folder impostata a quella che avete definito voi nello script:
       

- apertura di SQL Data Compare vi dovreste trovare, quando premuto Open Project.. la folder corretta così come indicata nello script powershell. Nel caso del mio esempio "C:\TFS_Workspace\SampleProject\SQLTools"

- direttamente da SQL Server Management Studio, aprire il menu "SQL Prompt" e selezionare la voce "Snippet Manager"..

Premendo la voce "Locate on disk" si apre la cartella da cui vengono letti gli snippet. Se tutto è configurato correttamente, la folder specificata corrisponderà a quella immessa al prompt dello script powershell. Inoltre, essa conterrà tutti gli snippet copiati direttamente dalla cartella di default. Nel nostro esempio "C:\TFS_Workspace\SampleProject\SQLTools\Snippets".

Una volta che il binding delle cartelle è terminato, ogni modifica farà apparire i file nei pending changes. Ad esempio, cambiando il file di filtro del SQL Compare, otterremo quanto segue:

Per quanto riguarda invece l'aggiunta di nuovi file, la gestione è un po' differente. Immaginiamo di creare un nuovo snippet direttamente dallo snippet manager:
Premendo "Save" un nuovo file, chiamato PRV.sqlpromptsnippet verrà aggiunto alla cartella. 
Come fare per vederlo nei pending changes e poi effettuarne il checkin?
Sempre nel team explorer sui pending changes, vi è una voce Detected: n add, direttamente nelle Excluded Changes:


A questo punto basta premere "Promote" e l'aggiunta verrà spostata direttamente sui pending changes. Da qui in poi è tutto come se fosse una normale modifica ad un file già esistente. 
Alternativamente è sempre possibile utilizzare i power tools ed andare ad aggiungere i file al source control dall’esplora risorse di windows con l’apposita integrazione.

Conlusioni
Rendere disponibile al team le impostazioni dei software che tutti i membri condivideranno non è una pratica da sottovalutare. Con una get ed un semplice script preconfezionato ci si trova ad essere allineati in un paio di click. Questo non vale solo per i nuovi colleghi, i quali si trovano un vero e proprio "welcome kit", ma anche per chi già lavora da tempo nel team. Nell'esempio che abbiamo trattato, ogni tool di terze parti per la gestione del ciclo di vita del database è allineato e pronto per essere "visto" da tutti i membri allo stesso modo.
I prodotti di compare o data compare sono fondamentali nel processo di deploy e ogni modifica ai file di progetto si riflette su tutti gli sviluppatori, che, grazie a questo, sono in grado di recepire i cambiamenti ed eseguire in automatico i vari componenti necessari alla pubblicazione del database. Anche durante la stesura del codice, avere snippet ed utilità già pronte aumenta la produttività di ogni membro del team stesso. 
Insomma, non sottovalutate mai le suddette possibilità, poichè la presenza di procedure simili, porta ad un conseguente modus operandi uniforme, più tracciabile e più coerente.

Stay Tuned! 

VB.NET - Convertire un numero in formato ore hh:mm:ss (Codice)

$
0
0

VB.NET - Convertire un numero in formato ore hh:mm:ss (Codice )



 

Oggi vi voglio mettere a disposizione una funzione che trasforma Esempio : 1,5 ore nel formato 1:30:00 che conosciamo hh:mm:ss .

Esempio di come richiamare la funzione : 

       CODICE VISUAL STUDIO 2010 - VISUAL BASIC .NET - VB.NET:
  Dim risultato As String = ConvertitoreFormatoOra("1,5")
Codice della funzione .

      CODICE VISUAL STUDIO 2010 - VISUAL BASIC .NET - VB.NET:
      Function ConvertitoreFormatoOra(ByVal Informazione As String) As String
        'Prendo il dato ed estrapolo solo i numeri
        Dim numero As Double = Double.Parse(Informazione)
        'Tronco il numero ed ottengo le ore e minuti
        Dim hour As Integer = System.Math.Truncate(numero)
        'Dal numero che ottengo elimino le ore e mi calcolo i minuti effettivi convertiti in 60 secondi
        Dim minutes As Double = 60 * (numero - hour)
        'Minuti arrotondati
        Dim minutes_rounded As Double = System.Math.Truncate(minutes)
        'Mi calcolo i secondi e arrotondo
        Dim temp_seconds As Double = System.Math.Round(60 * (minutes - minutes_rounded))
        'Tronco i secondi
        temp_seconds = System.Math.Truncate(temp_seconds)
        Dim seconds As String
        If temp_seconds = 60 Or temp_seconds = 0.0 Then
            minutes_rounded = minutes_rounded + 1
            seconds = "00"
        Else
            seconds = temp_seconds.ToString
        End If
        'Ecco l'output dell'informazione
        Dim hour_format As String = hour.ToString() & ":"& minutes_rounded.ToString() & ":"& seconds
        Return hour_format
    End Function

By ImaginSystems & Queen Gin   

Altro - 10 motivi per non riparare il computer agli amici

$
0
0

10 motivi per non riparare il computer agli amici

info  10 motivi per non riparare il computer agli amici

Riportiamo un articolo scritto tempo fa da Giampiero Biancoli sul suo Blog perchéè simpatico, comico e soprattutto assolutamente vero:

Se lavori nell’ambiente informatico, avrai sicuramente un tuo gruppo di persone a cui ti sei ritrovato a fare assistenza, tuo malgrado.
Non ti ricordi come è successo, ma una volta hai montato un masterizzatore a un amico, hai creato un sito per uno zio, hai reinstallato il sistema operativo a un tuo ex compagno di scuola, hai aiutato il figlio del vicino a fare una ricerca su wikipedia… sempre gratis.
Tu te ne sei scordato il giorno dopo… ma loro no.

Ecco 10 motivi per cui non dovevi farlo:

(1) Diventi automaticamente disponibile sempre e per sempre; a qualunque ora del giorno e della notte, ovunque tu sia: al lavoro, sotto la doccia…

“Pronto, ciao ti disturbo?”
“Beh in questo momento sono in barca in ferie…”
“Ah… ma tanto tu fai presto in queste cose. Senti ho il computer che quando lo accendo mi da errore 000×32F33. Cosa può essere? Sono disperato…”
“Si, ma sono in mezzo al mare”
“Va bene. Dimmi cosa devo fare…”

(2) Diventi oggetto di una catena di passaparola selvaggio.
“Aspetta che lo chiedo a un mio amico, lui di sicuro lo sa. Poi è molto alla mano e se ha tempo ti da una mano volentieri.”

(3) Diventi automaticamente il responsabile e amministratore del PC

“Ti ricordi che l’anno scorso mi avevi installato quel programma per vedere i filmati? Ecco, stamattina, vado ad accendere il PC e non si accende più, cosa può essere successo? Non è che hai fatto qualcosa di strano?”

(4) Devi conoscere tutti i programmi e tutti i sistemi operativi esistenti sul pianeta. Da Blender al GWBASIC, da Windows ME alle più improbabili distro di Linux. Dovrai saper fare tutto di tutto: non sono ammesse lacune per chi “conosce il computer”

“Senti, scusa se ti disturbo, ma ho un problema: come faccio ad importare un audiolibro con Itunes?”
“Guarda, mi dispiace, ma non ho l’Ipod e Itunes non lo conosco”
“Dai che tu ci capisci di sicuro più di me. In due minuti tu fai tutto…”

(5) Diventi, per esteso, la prima persona da consultare per tutto ciò che funziona a corrente elettrica

“Ciao, scusa se ti disturbo, ma ho l’home theatre della sala che non funziona più bene. Tu guardi anche quelle cose lì? Perchèè da qualche giorno che si sente un fruscio dal vufer e magari bisogna solo cambiare un fusibile…”

(6) Vieni visto come uno spacciatore di hardware

“Ciao, scusa se ti disturbo, volevo comprarmi un PC portatile, tu non è che hai delle bazze?”
“No”
“Come no? Lavorando nei computer vuoi che non ti passi sotto mano qualche occasione? Beh se hai qualcosa fammelo sapere, intanto mi daresti un’occhiata a dei preventivi che mi sono fatto fare?”

(7) Devi sempre navigare nell’ignoto.

“Ciao, scusa se ti rompo, ma il PC non va più”
“Come non va più? Non si accende o cosa?”
“No no, si accende ma poi non va”
“Cos’è che non va? Il sistema operativo?”
“Io non ci capisco mica niente… non va”
“Ma che sistema operativo hai?”
“Cosa vuoi che ne sappia io che sistema operativo ho….cos’è il sistema operativo? Dove devo leggere? Guarda, fai prima se vieni qua a dare un’occhiata, aspetto, vai tranquillo, va bene anche stasera dopo il lavoro…”

(8) Lavorarai sempre gratis… se va bene!

Al di là di qualche caffè offerto, non vedrai mai un soldo. Di sicuro, però, ne spenderai: viaggi, telefonate, probabilmente anche cavetti, vecchi componenti, batterie, viti, ecc…

(9) Grazie alla tua disponibilità, sarai sempre sottovalutato e verrai classificato al massimo come “smanettone”.

I “tecnici”, quelli veri, fanno le stesse cose che fai tu (forse con meno cura), ma prendendo 80 euro all’ora, saranno visti come semidei.

(10) Serve davvero un decimo motivo?

Inserito : By ImaginSystems & Queen Gin   

Giovedi' 18 Luglio 2013


Villorba e Povegliano: è giusto unirli?

$
0
0
Villorba - Resto perplesso di fronte alla volontà di alcuni politici di avviare la fusione dei Comuni di Villorba e Povegliano: sono due realtà molto diverse tra loro. Le stesse frazioni presenti sul territorio di ogni singolo comune hanno delle peculiarità che non facilitano una corretta gestione della res publica. Pensiamo, ad esempio, allo sfalcio dell'erba nei parchi di Villorba, dove in alcuni posti funziona solo grazie all'opera dei volontari.
I sindaci dei due Comuni, Marco Serena per Villorba e Sergio Zappalorto per Povegliano, sono convinti che unendo le "forze" si riuscirà a risparmiare sui costi di gestione. Questo punto, in alcuni casi, va preso in considerazione, ma più che parlare di fusione, bisognerebbe puntare sulla collaborazione per alcuni servizi, come quelli legati alla polizia municipale e alla gestione di alcuni uffici comunali.
In particolare, per quanto riguarda Villorba, prima di pensare ad una "fusione" con un altro Comune, bisognerebbe risolvere alcuni problemi di fondo. Mi riferisco, in particolare, a quelli legati all'uso delle risorse finanziarie. Credo, infatti, che in questi ultimi anni siano state sperperate ingenti somme di denaro pubblico, ed ora non si può credere di risolvere certi problemi legati alla mancanza di liquidità, associandosi ad altre realtà. 
Tra i soldi che a Villorba le ultime Giunte municipali hanno sperperato, vorrei ricordare quelle legate a Villa Giovannina: che senso ha aver ricevuto un immobile del valore di alcuni milioni di euro se poi non si può utilizzare che in rare occasioni?
A dicembre 2011, poi, il sindaco Marco Serena ha trascinato il Comune di Villorba in un'impresa finanziaria legata all'acquisto di una struttura da adibire a scuola dell'infanzia, e i cittadini che non hanno condiviso tale scelta sono stati tacciati di non essere capaci di vedere al di là del proprio naso, perché con tale operazione si faceva risparmiare i soldi che il Comune ogni anno versava per l'affitto della scuola allora ubicata nella frazione di Catena. Questo ragionamento poteva anche avere un senso, ma quando il sindaco Serena lo scorso mese di maggio, attraverso la stampa locale, ha detto che le casse comunali erano in difficoltà e si rischiava di non pagare gli stipendi ai dipendenti comunali, allora bisogna chiedersi chi, purtroppo, non è in grado di vedere al di là del proprio naso.
A Villorba esiste anche il caso "Maber": molti cittadini si chiedono cosa ci sia dietro il fallimento di un'azienda che da un lato ha lasciato a casa novanta lavoratori, dall'altro non ha ottemperato gli accordi col Comune e relativi al versamento di una cospicua somma utile a finanziare delle opere pubbliche.
Ci si lamenta - nella Giunta municipale di Villorba - della scarsità delle risorse finanziarie disponibili, ma cosa si fa per incentivare, ad esempio, le attività produttive esistenti sul proprio territorio? A Villorba esiste un'ampia zona industriale edificata sottraendo immensi campi all'agricoltura, e ora si dovrebbero elaborare e adottare politiche utili a incentivare gli imprenditori a realizzare aziende per assumere personale. Invece di far arrivare lavoratori nell'area industriale, il sindaco Marco Serena pensa di realizzare una parte di questa zona per accogliere le prostitute. Questa "pensata" non mi sembra una cosa buona per la comunità locale: per la zona industriale occorre incentivare le aziende così che nuovi lavoratori possano garantire un dignitoso reddito ai propri familiari, evitando, invece, che delle ragazze siano costrette a prostituirsi per garantire la "pappa" ai propri sfruttatori.
Insomma, io credo che a Villorba ci siano problemi che debbano essere affrontati e gestiti da una nuova classe politico-amministrativa, e la Lega nord - che è arrivata ad intitolare una strada villorbese ad un personaggio condannato per truffa dal Tribunale di Saluzzo - ha fatto già troppi danni alla comunità locale e non può pensare, ora, di trovare una soluzione ai problemi finanziari comunali avviando una fusione con il Comune di Povegliano.
(Carlo Silvano - silvcarlo#tin.it)

Recensione libro Training Kit (Exam 70-462): Administering Microsoft SQL Server 2012 Databases (MS)

$
0
0


I cosiddetti “Training Kit” della Microsoft Press (ora O’Reilly) sono conosciuti per essere una delle poche fonti (e comunque quella “istituzionale”) per prepararsi all’esame di certificazione. Queste 600 pagine costituiscono il materiale di riferimento per l’esame 70-462 sulla parte amministrativa (ovvero da puro DBA) di SQL Server 2012, l’ultima edizione attualmente disponibile.
Questi Training Kit, soprattutto negli anni passati, si portavano appresso una nomea non molto positiva, in quanto erano piuttosto infarciti di refusi ed errori di ogni genere. Negli ultimi tempi la loro qualitàè sicuramente migliorata. Il Training Kit gemello, ad esempio, quello per l’esame 70-461 (sviluppo con SQL Server 2012), è davvero ben fatto e costituisce un ottimo manuale che torna utile anche al di là della semplice preparazione all’esame.
Peccato che con questo titolo si sia tornati indietro ai tempi bui.
Basta dare un’occhiata alla pagina delle Errata del sito della O’Reilly per rimanere sconcertati dalle innumerevoli segnalazioni di errore riportate dai lettori. È vero che alcune di esse sono innocui refusi o piccole imprecisioni facilmente individuabili, ma da un libro del genere, considerando anche il suo prezzo non basso, ci si aspetterebbe una precisione quasi maniacale.
Chiunque voglia, prima della sua lettura, impegnarsi con la matita a sistemare tutti gli errori riportati, dovrà mettere in conto qualche ora di duro e pignolo lavoro.

Peccato davvero: l’impaginazione e il layout generali, infatti, sono molto buoni. Un buon numero di immagini (un po’ scure ma comprensibili), tante note a margine e procedure guidate, persino il numero dei minuti necessari per leggere ogni lezione di ogni capitolo.
Qua sotto 2 immagini prese a caso.





I capitoli sono 11, più un dodicesimo di Case Studies riepilogativi.
La vera utilità di questo genere di libri, come ho scritto altre volte, sono le domande a quiz (simil esame) poste al termine di ogni lezione. Nell’appendice finale sono riportate e spiegate sia le risposte esatte che quelle sbagliate, e questo è un plus non da poco.
L’inglese, pur molto freddo ed impersonale, è comprensibile, senza termini gergali o poco conosciuti.
All’inizio del libro si raccomanda al lettore di mettere in piedi una sofisticata rete di 5/6 computer, con tanto di Domain Controller. Volendo non è poi strettamente necessaria, oltre ad essere di difficile e costosa implementazione.
Per quanto riguarda gli argomenti trattati, un buon primo terzo iniziale è completamente dedicato all’installazione e alla configurazione di SQL Server 2012. Ci si dedica poi, nella parte centrale del libro, ad argomenti piuttosto avanzati (e tipici di un vero DBA), come Mirroring, Failover Clustering e Repliche.
Gli ultimi 3 capitoli sono invece adatti anche a chi sviluppa, dato che trattano performance, indici e strategie di backup.

Sul Cd accluso – grande vantaggio – è presente il software per la simulazione dell’esame con 200 domande (con relative risposte). È stato inserito anche il Pdf del libro stesso.
Volendo si poteva inserire anche il database AdventureWorks2012, utilizzato negli esempi di codice.
Si sarebbero sfruttati meglio i miseri 40 MB inseriti nel Cd.
La rilegatura è invece molto buona, flessibile e comoda da maneggiare, non essendo questo un libro molto sottile, come si vede qua sotto.



Per chi fosse curioso di sapere chi sono i 3 autori, eccoli qua.



Infine, come ogni Training Kit che si rispetti, nelle ultime pagine è inserito un voucher per ottenere il 15% di sconto sul costo dell’esame (circa 150 euro in Italia).
Eccolo, nell’immagine qua sotto, appena sopra il Cd.



Insomma, a voler guardare qualcosa di utile lo si riesce lo stesso a recuperare, fosse solo per le parti di domanda/risposta (nel libro e nel Cd).
Mi piacerebbe, però, che la Microsoft Press (o chi per lei) prestasse maggiore attenzione alla cura realizzativa dei prossimi Training Kit.

Sommario
1 - Chapter 1: Planning and Installing SQL Server 2012
61 - Chapter 2: Configuring and Managing SQL Server Instances
105 - Chapter 3: Configuring SQL Server 2012 Components
153 - Chapter 4: Migrating, Importing, and Exporting
193 - Chapter 5: SQL Server Logins, Roles, and Users
229 - Chapter 6: Securing SQL Server 2012
279 - Chapter 7: Mirroring and Replication
327 - Chapter 8: Clustering and AlwaysOn
371 - Chapter 9: Troubleshooting SQL Server 2012
417 - Chapter 10: Indexes and Concurrency
465 - Chapter 11: SQL Server Agent, Backup, and Restore
523 - Chapter 12: Code Case Studies
567 – Index






Roberto Calderoli, i militanti vadano via dalla Lega nord

$
0
0

VILLORBA (Treviso) - Nessuno dovrebbe meravigliarsi delle parole offensive che Roberto Calderoli ha pronunciato recentemente contro un Ministro della Repubblica Italiana. Sono inutili le scuse che Calderoli ha pronunciato in Senato perchéè un personaggio poco credibile. Anni fa, quando era ministro per la semplificazione, indossò una maglietta con delle vignette satiriche contro Maometto, e a Bengasi si registrarono furiose proteste che causarono la morte di otto persone. Già allora Roberto Calderoli avrebbe dovuto, a mio avviso, abbandonare la scena politica.

Roberto Calderoli è stato anche a Villorba nel maggio del 2011 per sostenere la candidatura a sindaco dell'attuale primo cittadino Marco Serena: ci fu un comizio proprio in piazza del Dominicale e, con Calderoli, prese la parola anche Renzo Bossi, il quale è stato al centro di aspre polemiche per le sue bocciature scolastiche e per i rimborsi-spese ottenuti dal proprio partito. 

Grazie anche alla presenza di Renzo Bossi e Roberto Calderoli nel corso di quel comizio tenutosi a Villorba, Marco Serena è stato eletto sindaco della città.

Ora è inutile scandalizzarsi per le parole pronunciate recentemente da Calderoli: è opinione comune che offendere faccia parte del dna del leghista. Chi vuole prendere le distanze da Calderoli, e sapendo che quest'ultimo mai e poi mai si dimetterà dal partito retto dalla famiglia Bossi, faccia allora un atto di coraggio: si dimetta dalla Lega nord!

Supporto

$
0
0

Avviso per tutti coloro che hanno formulato domande o richiesto assistenza in questo blog:

Come è facile immaginare il blog non permette di sviluppare un dialogo interattivo.

Per formulare domande e aprire discussioni in modo costruttivo il luogo adatto è la Microsoft Community:

http://answers.microsoft.com/it-it

Per i professionisti IT invece:

http://social.technet.microsoft.com/Forums/it-IT/home

Nella Microsoft Community sono Moderatore ed Autore Wiki.

Nei Forum TechNet sono Moderatore per la sezione Windows Client.

A presto.

JAVA - Come monitorare una cartella (Codice)

$
0
0

JAVA - Come monitorare una cartella (Codice)


 

Come monitorare una cartella e stampare a video dei messaggi :

Created
Delete
Modify
CODICE JAVA :
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import java.util.List;

public class pp {

	public static boolean bandiera = true;
	
    public static void main(String[] args) {

        //define a folder root
        Path myDir = Paths.get("D:/data");  

        	loops(myDir);

       
    }
    
    public static void loops(Path myDir){
    	 try {
    		 if(!bandiera) return;
             WatchService watcher = myDir.getFileSystem().newWatchService();
             myDir.register(watcher, StandardWatchEventKinds.ENTRY_CREATE, 
             StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY);

             WatchKey watckKey = watcher.take();

             List<WatchEvent<?>> events = watckKey.pollEvents();
             for (WatchEvent event : events) {
                  if (event.kind() == StandardWatchEventKinds.ENTRY_CREATE) {
                      System.out.println("Created: " + event.context().toString());
                  }
                  if (event.kind() == StandardWatchEventKinds.ENTRY_DELETE) {
                      System.out.println("Delete: " + event.context().toString());
                  }
                  if (event.kind() == StandardWatchEventKinds.ENTRY_MODIFY) {
                      System.out.println("Modify: " + event.context().toString());
                  }
              }
         	loops(myDir);
          } catch (Exception e) {
              System.out.println("Error: " + e.toString());
          }
    }
}

By ImaginSystems & Queen Gin   

WINDOWS - Come rimuovere i Servizi di Windows

$
0
0

WINDOWS - Come rimuovere i Servizi di Windows


 

Oggi vi voglio segnalare un piccolo trucco per eliminare i servizi definitivamente dal vostro PC. Le operazioni da compiere sono veramente poche, una riga di codice di comando e il gioco è fatto. Per prima cosa apriamo la lista dei servizi in questo modo: START->Esegui->scrivere Services.msc.


Una volta aperta la lista dei servizi e individuato quello che vogliamo eliminare, cliccateci sopra due volte. Vi si aprirà una nuova finestra con le proprietà di quel servizio. Appuntiamoci il nome del servizio, lo trovate scritto nel campo “Nome Visualizzato”. Una volta fatto questo, apriamo il Prompt dei Comandi: START->esegui->CMD. Aperta questa finestra, per eliminare un servizio dobbiamo dare il seguente comando:

sc delete ServiceName
ServiceName, va sostituito con la scritta che vi siete appuntanti prima, quella che si trovava nel campo “Nome Visualizzato”. Fatto questo, date il comando con INVIO. Adesso il servizio è stato eliminato del tutto. Se avete altri trucchi da segnalarci, vi ricordo che i commenti sono sempre disponibili a qualsiasi tipo di comunicazione.

ATTENZIONE!!! 

Per chi ha Windows Vista / Windows 7 / Windows 8 il Nome da inserire dopo il comando sc delete è“Nome Servizio”  e non “Nome Visualizzato” .

By ImaginSystems & Queen Gin   

JAVA - Invertire una Array utilizzando Collection di Java.Util

$
0
0

JAVA - Invertire una Array utilizzando Collection di Java.Util


 

Come monitorare una cartella e stampare a video dei messaggi :

import java.util.ArrayList;
import java.util.Collections;
public class OrdinaArrayReverce {
  public static void main(String[] args) {
    //Creo un ArrayList di tipo Stringa
    ArrayList<String> arrayList = new ArrayList<String>();
    //Aggiungo elementi all'ArrayList
    arrayList.add("A");
    arrayList.add("B");
    arrayList.add("C");
    arrayList.add("D");
    arrayList.add("E");
    //Stampo lo stato dell'ArrayList prima di ordinarlo
    System.out.println("Prima di Ordinare, ArrayList Contiene : " + arrayList);
    /*
      Per invertire l'ordine di tutti gli elementi di un Java ArrayList,      usiamo il metodo di classe Collections.
     Questo metodo di (reverse) invertire l'ordine degli elementi della lista specificata.
    */
    Collections.reverse(arrayList);
    System.out.println("Dopo dell'Ordinamento, ArrayList Contiene : " + arrayList);
  }
}
/*
Output deve essere :
Prima di Ordinare, ArrayList Contiene : [A, B, C, D, E]
Dopo dell'Ordinamento, ArrayList Contiene : [E, D, C, B, A]
*/

By ImaginSystems & Queen Gin   

Giocare con i giochi di moto online

$
0
0
I giochi di moto presentano alcune caratteristiche particolari che li fanno essere certamente tra i giochi più divertenti presenti in questo momento.
Si tratta di giochi molto rapidi che possono essere utilizzati da tutti senza difficoltà.

Tra i giochi più richiesti troviamo i giochi di motocross. Troviamo anche siti interamente relativi a questo genere di giochi come Giochidimotocrossgratis.com e per questo motivo risultano essere semplici da trovare.
I giochi di motocross necessitano di abilità visto che bisogna superare diversi ostacoli guidando in modo sicuramente preciso.

Oltre ai giochi di motocross troviamo diversi altri generi di giochi di moto.
Tra i migliori troviamo i giochi di trial che propongono una tipologia di gioco abbastanza simile.
Anche in questi giochi bisogna superare diversi ostacoli usando la moto.

Molto diversi sono i giochi di motocross freestyle perchè in questo caso la caratteristica principale è la velocità.
In questi giochi bisogna gareggiare contro rivali controllati dal pc.

I giochi di moto disponibili in rete sono semplici da giocare.
Basta usare il browser e non bisogna installare programmi sul pc.

Il suggerimento è quello di utilizzare i giochi di moto in rete tramite il browser.

La Prima App

$
0
0
Ebbene si, anche io ho ceduto alla tentazione di scrivere una semplice App per smartphone.
La scelta e' ricaduta su Android, ma ben presto provero' a realizzare qualcosa per Windows Phone.
La App  la potete trovare su Google Play al seguente indirizzo:
https://play.google.com/store/apps/details?id=com.runcalc

Suggerimenti, critiche e qunat'altro sono ben accetti 

SQL Server 2012 e 2008 Cumulative Updates

Recensione libro Learning SQL Server Reporting Services 2012 (Packt)

$
0
0


Recentemente la Packt mi ha fatto dono di questo nuovo libro di oltre 500 pagine tutte dedicate all’ultima versione dei Reporting Services affinché ne esponessi le mie impressioni in un post.
L’autore, indiano come tanti altri autori di questa casa editrice, ha al suo attivo anche le precedenti edizioni di questo titolo, quindi dovrebbe essere una indiscussa autorità in materia, come infatti lo si vede da questa immagine che lo descrive.



Per chi volesse rendersi conto delle caratteristiche di questo nuovo libro, consiglio di scaricarsi dal sito della Packt un Pdf di ben 77 pagine contenente l’intero capitolo 4, “Working with Report Manager”.
Purtroppo in questo Pdf le immagini sono solo in bianco e nero, e non a colori come accade nei Pdf di altre case editrici.
Il libro è comunque tutto in bianco e nero, e balza subito all’occhio la grande quantità di immagini di cui è dotato, tra l’altro di grande formato.
Mancano però di una certa definizione, punto su cui la Packt dovrebbe intervenire.

Ecco qua sotto due foto che ho scattato.





In quest’ultima si può notare una delle tantissime sezioni “Hands-on”, ovvero esercitazioni guidate passo per passo in cui si invita il lettore a portare a termine un ben determinato compito.
Il lettore ideale di questo libro può (e deve) possedere solo delle basi di T-SQL e di SQL Server in generale. Non è richiesto che abbia avuto delle precedenti esperienze coi Reporting Services.
Il primo, lunghissimo, capitolo è infatti un’approfondita introduzione a questo mondo, con tanto di procedura dettagliatissima per l’installazione e la configurazione.
Si entra poi nel dettaglio della creazione di report utilizzando sia Visual Studio 2012 che il Report Builder 3.0.
La seconda parte è più avanzata (che però non ho ancora letto in maniera approfondita), e tratta argomenti che in prima battuta non sono strettamente necessari, quali l’integrazione con SharePoint (senz’altro utile e moderna, ma non adatta per tutti gli scenari) e con Azure.
L’inglese utilizzato è molto comprensibile, ed anche la rilegatura della Packt è sufficientemente flessibile da poterlo tenere aperto sulla scrivania senza problemi.
Personalmente avrei approfondito un po’ meglio la questione “Expressions”, che vengono molto utilizzate da chi sviluppa Report a livello enterprise, mentre qua sono solo accennate e mostrate nei loro utilizzi base.
Forse anche la parte BI, terreno di battaglia della maggior parte degli sviluppi sui report, è solo accennata.
Ma aggiunge anche quelle avrebbe reso questo libro di dimensioni improponibili, e per questo è da valutare positivamente la scelta dell’autore di escluderla quasi del tutto.
Per il resto lo ritengo un buon libro, soprattutto nella prima parte, e credo che anche chi è già avvezzo alla creazione di report troverà qualcosa di nuovo e di utile da imparare.

Qua sotto i dettagli del libro, prezzo compreso, e il sommario.



Sommario
1 - Preface
9 - Chapter 1: Overview and Installation – SQL Server Reporting Services 2012
73 - Chapter 2: SQL Server Reporting Services 2012 Projects with Visual Studio 2012
131 - Chapter 3: Overview of SQL Server Reporting Services 2012 Architecture, Features, and Tools
177 - Chapter 4: Working with Report Manager
245 - Chapter 5: Working with Report Builder 3.0
325 - Chapter 6: Power View and Reporting Services
373 - Chapter 7: Self-service Data Alerts in SSRS 2012
409 - Chapter 8: Reporting Services and Programming
461 - Chapter 9: Windows Azure SQL Reporting
507 - Chapter 10: Applications Accessing Report Servers
533 - Index

PS
Foto scattate con Sony Xperia Ion.

Si cambia ritmo

$
0
0

Manco su Estering da un bel po', la pigrizia di solito vince sulla voglia di scrivere.
C'è da dire che il nuovo lavoro mi porta via moltissime energie, ma almeno finalmente mi sento (tutto sommato) soddisfatta.

Nuove competenze, nuove richieste, nuovo modo di pensare... Orientarsi al business pur rimanendo un tecnico quasi puro.

Erano 6 anni che non mi dedicavo a una singola azienda, avendo lavorato nel mondo dei servizi per più di un lustro, ma mai come ora sento il peso delle responsabilità.
Una carica che dà soddisfazione e contemporaneamente logora.

Lavorare in una multinazionale era sulla lista che io chiamo "cose da fare prima di morire" e, assieme a vedere DJ Tiesto live e andare a Vienna a visitare il castello di Sissi, posso barrare il desiderio come realizzato. Ora resta quella cosuccia del viaggio a due passi dal Polo Nord, ma si vedrà...

Viewing all 24464 articles
Browse latest View live