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

Sql Server Optimizer - nice tool


VB.NET - Come cambiare il colore di una ProgressBar (Codice)

$
0
0

VB.NET - COME CAMBIARE IL COLORE DI UNA ProgressBar (Codice)

 



Oggi vi parlo di come personalizzare la ProgressBar con colori diversi e colorare il testo di Percentuale che visualizzate al centro della ProgressBar.

Per prima cosa creo un file e ci copio il seguente codice :

      CODICE VISUAL STUDIO 2010 - VISUAL BASIC .NET - VB.NET: : (File : ProgressBarNewStyle.vb)
Imports System.Collections.Generic Imports System.Linq Imports System.Text Imports System.Windows.Forms Imports System.Drawing Imports System.Drawing.Drawing2D Namespace ProgressBarNewStyle Class MyProgressBarStyle Inherits ProgressBar Public ProgressBarLabelValue As String = "0" Public colorText As Color = Color.Green Private obbligateColor As Color Private colorBarBottom As SolidBrush Private colorBarTop As SolidBrush Public Sub New() Me.SetStyle(ControlStyles.UserPaint, False) End Sub Public Sub New(colorBar As Color) Me.SetStyle(ControlStyles.UserPaint, True) Me.obbligateColor = Color.White Me.colorBarBottom = New SolidBrush(colorBar) 'riempimento del "rettangolo" superiore bianco con opacità del 50% Me.colorBarTop = New SolidBrush(Color.FromArgb(128, obbligateColor)) End Sub Protected Overrides Sub OnPaint(e As PaintEventArgs) Dim width As Integer = 0 Dim height As Integer = 0 'La proprietà ClipRectangle applicata su PaintEventArgs ritorna il rettangolo che bisogna riempire Dim rec As Rectangle = e.ClipRectangle 'Calcolo le dimensioni del rettangolo -4 rec.Width = CInt(Math.Truncate(rec.Width * (CDbl(Value) / Maximum))) - 4 rec.Height = rec.Height - 4 'grandezza e altezza del rettangolo con opacità che andremmo a sovrappore su quello principale per 'generare l'effetto width = rec.Width height = (rec.Height \ 2) 'ProgressBarRender.isSupported verifica se può essere effettuato il rendering del rettangolo in questione 'nella progressBar con la visualizzazione corrente del sistema operativo in uso If ProgressBarRenderer.IsSupported Then 'uso un metodo statico su questa classe per disegnare orizzontalmente nel componente 'ovviamente la progressBar verrà svuotata per fare spazio al nostro riempimento ProgressBarRenderer.DrawHorizontalBar(e.Graphics, e.ClipRectangle) End If 'riempio l'interno dei rettangoli ottenuti e.Graphics.FillRectangle(colorBarBottom, 2, 2, rec.Width, rec.Height) e.Graphics.FillRectangle(colorBarTop, 2, 2, width, height) 'Applico una scritta Using sb As New SolidBrush(colorText) Dim sz As SizeF = e.Graphics.MeasureString(ProgressBarLabelValue + " %", Me.Font) e.Graphics.DrawString(ProgressBarLabelValue + " %", Me.Font, sb, New PointF((Me.Width - sz.Width) / 2.0F, (Me.Height - sz.Height) / 2.0F)) End Using End Sub End Class End Namespace
  
Codice che inserisco nel Form o dove voglio far apparire la ProgressBar :

CODICE VISUAL STUDIO 2010 - VISUAL BASIC .NET - VB.NET: : (File : Form1.vb)
 Public Class Form1
    Private newProgressBar As New ProgressBarNewStyle.MyProgressBarStyle(Color.Violet)
    Private newProgressBar1 As New ProgressBarNewStyle.MyProgressBarStyle(Color.GreenYellow)
    Public Sub New()
        InitializeComponent()
        newProgressBar.Location = New Point(12, 12)
        newProgressBar.Width = 200
        newProgressBar.colorText = Color.Black
        Me.Controls.Add(newProgressBar)

        newProgressBar1.Location = New Point(12, 50)
        newProgressBar1.Width = 276
        newProgressBar1.colorText = Color.Tomato
        Me.Controls.Add(newProgressBar1)

    End Sub


    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        newProgressBar.Style = ProgressBarStyle.Blocks
        If newProgressBar.Value < newProgressBar.Maximum Then
            newProgressBar.ProgressBarLabelValue = newProgressBar.Value.ToString
            newProgressBar.Value += 10

        End If
    End Sub

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        newProgressBar1.Style = ProgressBarStyle.Blocks
        If newProgressBar1.Value < newProgressBar1.Maximum Then
            newProgressBar1.Value += 10
            newProgressBar1.ProgressBarLabelValue = newProgressBar1.Value.ToString
        End If
    End Sub

   
End Class
 
Potete scaricare il file d'esempio :

Password :  "ImaginSystem" 


By ImaginSystems & Queen Gin   

Programming in C# Jump Start

$
0
0

Microsoft Virtual Academy - Programming in C# Jump Start Course

https://www.microsoftvirtualacademy.com/training-courses/developer-training-with-programming-in-c

This developer training course covers C#, Microsoft’s managed C-style language for the .Net Framework. In typical Jump Start fashion, this session will be engaging and demo rich. Microsoft Technical Evangelist Jerry Nixon and the co-founder of Crank211, Daren May, provide sample after sample to show simple and complex techniques you can take back to your workplace.
Because this course loosely follows the criteria for exam 70-483, it is tailored for intermediary to seasoned developers looking to bulk up on C# or for a refresher on core concepts and features.

Instructors | Jerry Nixon | Microsoft Developer Evangelist; Daren May | President & Co-founder, Crank211

good for am 70-483: Programming in C#; Course 20483: Programming in C#

HL7

$
0
0

HL7



L'HL7 è un protocollo di comunicazione utilizzato in ambito sanitario, si tratta di messaggi scambiati vi socket che hanno più o meno questo aspetto:

MSH|^~\&|MELO|MELO|META|LABO|20130218083052||OML^O21^OML_O21|361F406F1DD52C8A689A|P|2.5
PID|||CNAGNN32B20F205P^^^NPAA^NN~CNAGNN32B20F205P^^^MELO^PI||CAIANI^GIOVANNI||19320220000000|M|||^MILANO^^MI^^^BDL^^015146~VIA TRENTO, 4^CESANO BOSCONE^^MI^20090^^L^^015074~V. TRENTO 4^CESANO BOSCONE^^MI^20090^^H^^015074|||||||CNAGNN32B20F205P|063SM829|||||||||100^ITALIA^L||||||^^L
PD1|||^^^^^^ASLA
PV1||O|||||27069^DE ANGELIS ANGELO^DE ANGELIS ANGELO^^^^^MED_BAS||||||||||||0120130218007366^^^MELO^VN|||||||||||||||||||||||||20130218000000
PV2|||||||||||||||||||||||||||||||||||||||||||||^NO
ORC|NW|102822620130218@1^OP^102822620130218@1^URI||102822620130218^OP^102822620130218^URI||N|||20130218083000|CB^^CASSOLA BARBARA|||01REPCUP^^^^^^^^CUP||||01REPCUP^CUP^LCUP|192.168.201.78^caba||NA|CUP^^^^^MELO&MELO^XX^^^01REPCUP
TQ1|1|1|||||||R
OBR|1|102822620130218@1^OP^102822620130218@1^URI||L00387^PT (PRELIEVO SINGOLO DEL^LPRZ^90.75.4^PT ( SINGOLO CICLO)||||||||||||^^^^^^^MED_BAS|||||||||||||||O
NTE|1|O|NO|GI^50OBX|1|TS|DTP^DATA ORA PRELIEVO||20130218083000||||||O


Sono composti da vari segmenti che parsati ti danno le informazioni contenute nel messaggio.

Time Line

$
0
0

TIME LINE



La Timeline è un componente molto interessante.... continua....

Giovedi' 23 Maggio 2013 Sant'Onorato, abate

Proprietà Oggetto

$
0
0

Molto utile per vedere tutte le proprietà presenti in un oggetto

            $.each(OGGETTO, function (key, element) {
                alert('key: ' + key + '\n' + 'value: ' + element);
            });

ANDROID - Android Studio non si avvia? Ecco il fix

$
0
0

ANDROID - Android Studio non si avvia? Ecco il fix


androidstudio

Solo ieri, alcuni utenti si lamentavano del fatto che l’Android Studio non si avviasse su Windows 7 e, curiosando nei vari file di questo bundle, abbiamo scovato il problema e, conseguentemente, il fix.

Iniziamo dal motivo del mancato avvio: allo start, la nostra versione di IntelliJ ha bisogno di trovare la cartella di Java per poterne richiamare un eseguibile. E dov’è il problema? Se abbiamo installato il software, è perché il Java lo ha trovato, non è così? No, benché la premessa sia giusta, il file che avvia il nostro IDE èstudio.bat, che va ad appendere al percorso del JDK la stringa \bin\java.exe, non trovando l’eseguibile, perché la maggior parte di noi ha già inclusa la cartella dei binari nel path dello stesso Java. In questo modo, nella variabile di questo script, la cartella bin viene ripetuta due volte, causando il mancato avvio del software.

Per risolvere questo problema, andiamo quindi a creare tra le nostre variabili di sistema una nuova entry che condurrà alla cartella del JDK in modo univoco per il nostro Android Studio, in modo da non aver ulteriori problemi.

Seguiamo quindi il percorso

Pannello di controllo -> Sistema -> Impostazioni di sistema avanzate -> Variabili d’ambiente

e premiamo il tasto Nuova… più in basso, nel frame relativo alle variabili di sistema. A questo punto, diamo alla nostra nuova variabile il nome ANDROID_STUDIO_JDK e le impostiamo come valore la cartella del JDK dove troveremo la directory bin che, nel nostro caso è C:\Program Files (x86)\Java\jdk1.7.0_17. A questo punto, premiamo su tutti gli OK che vediamo e siamo pronti ad avviare l’Android Studio.

By ImaginSystems & Queen Gin   


Deploy one shot da SQL Server on premise a SQL Azure database

$
0
0
Effettuare una migrazione da SQL Server a SQL Azure Databaseè piuttosto semplice.

Ci sono vari metodi per farlo, e la maggior parte sono indicati qui.
Come indicato nel link è possibile:

- Migrare utilizzando uno script del database esistente (opportunamente corretto in base a quanto SQL Azure Database supporta)
- Migrare con il Data-tier Application Export and Import
- Migrare verso SQL Database con Integration Services

Oltre ad essi è possibile anche fare un vero e proprio deploy, sempre tramite l'ausilio di semplici strumenti di Management Studio.
Andiamo a vedere come farlo con l'apposito wizard.

Migrare con Deploy wizard
Tramite SQL Server Management Studio, è possibile migrare il nostro database on premise verso un nuovo SQL Azure Database con pochi semplici click, utilizzando il wizard di deploy:



Con il wizard proposto, connettersi all'istanza su Windows Azure:


Da notare la possibilità di ridefinire il nome, l'edizione e l'occupazione del nuovo database ed il path per il file temporaneo che viene creato, con estensione .bacpac (leggere questo mio post per ulteriori dettagli).
Una volta impostata la connessione, procedere con il deploy ed attendere il resoconto finale, nulla di più semplice:


L'unica tabella esportata è la dbo.Foo, ovvero l'unica tabella creata nel database Utilities che ho in questo esempio.
L'operazione, consente di effettuare un deploy one shot. Ciò significa che rieseguendola ancora con lo stesso database di destinazione, riceverete un errore come il seguente:


Quindi non fate l'errore di considerare questo deploy come uno strumento di continuous integration. 
Si tratta solamente di un deploy effettuato una tantum, che prende un SQL Server on premise e lo "converte" in un SQL Azure database. 

Stay Tuned! 

Plantronics Voyager Legend UC B235 EMEA

$
0
0

Sono circa 3 mesi che sto utilizzando giornalmente questo auricolare bluetooth di professionale fattura della Plantronics, il Voyager Legend UC B235 EMEA
Ne sono davvero soddisfatto, per tutta una serie di motivi, tant’è che spesso lo utilizzo anche al posto delle cuffiette quando devo vedere filmati o altro al pc.
Diciamo subito che il suo prezzo non è tra i più popolari. Attualmente viene offerto da Amazon a circa 118 euro, che non sono effettivamente pochini.
La scatola che lo contiene è davvero ricca: scatoletta di ricarica, basetta (sempre per la ricarica), manualetto multilingue, connettore bluetooth per pc, caricatore da parete e alcuni copri auricolari di riserva, tutto di eccellente qualità.
La scatoletta che lo contiene è realizzata molto bene. Un coperchio superiore di plastica trasparente racchiude sia l’auricolare che il connettore USB per il pc.

Questa scatoletta ha però 2 importanti caratteristiche.
Innanzitutto ha gli agganci magnetici. Non appena si avvicina il connettore USB, ad esempio, viene subito risucchiato nella sua posizione (molto comodo).
E soprattutto possiede una batteria interna che funge da fonte di ricarica per l’auricolare una volta che lo si inserisce al suo interno (5 micropioli magnetici fanno da passaggio energetico con l’auricolare).
La ricarica di questa scatoletta avviene via USB-MicroUsb collegandola alla sua predisposta presa laterale.
Fino a che non la si utilizzerà nei propri viaggi/spostamenti non ci si immagina neppure la comodità di questa possibilità di ricarica.
Anche senza fonte energetica a portata di mano, basta inserire l’auricolare in questa custodia e subito si ricarica.
Lo stato della sua carica è segnalato da 2 piccoli led blu, e devo dire che riesce a resistere per settimane con un uso medio di ricarica.
Una pensata davvero geniale, che altri produttori di auricolari bluetooth dovrebbero prendere in considerazione (perlomeno per i loro modelli di più alta gamma).
Il cavetto USB-MicroUSB non è però compreso nella confezione, ma è un male minore, dato che ormai lo si trova dappertutto (se si possiede almeno un cellulare, smartphone, tablet, hard disk esterno e così via).

Il connettore bluetooth per pc è piccolo e funzionale.

Non appena inserito nella porta USB viene riconosciuto immediatamente (ho provato sia con Windows 7 che con Windows 8), e permette di utilizzare l’auricolare anche al pc, offrendo la possibilità di non avere fili che intralciano (come quelli delle cuffiette).
Sul lato del connettore, quando è in funzione, compare una striscia led blu molto discreta.
È effettivamente molto comodo poter indossare un solo dispositivo sia per ascoltare dal pc che per rispondere alle telefonate (se sopraggiunge una chiamata mentre si guarda un video, l’auricolare passa immediatamente in modalità telefono).

La vera chicca, ovviamente, è l’auricolare in sé stesso.
Qua sotto un riassunto delle sue caratteristiche principali.

Sul lato posteriore ci sono le 2 levette per accenderlo e per regolare il volume di ascolto.
Sulla striscia che fa da auricolare ci sono 2 pulsanti: quello all’estremità inferiore permette di aprire e chiudere le telefonate, come anche di impartire alcuni comandi – solo in inglese – per verificare lo stato di carica delle batterie (ad esempio).
Quello laterale è per mettere in pausa l’ascolto.
Diciamo che di quest’ultimo non ne ho quasi mai fatto uso, mentre quello alla base lo utilizzo per rispondere alle chiamate.
Quando lo si indossa, infatti, si sente la voce “Incoming call, enter or ignore?”
Ho notato però che bisogna quasi urlare “Enter!” per riuscire ad aprire la chiamata, e perciò mi sono trovato più comodo nel premere semplicemente il piccolo pulsante sull’auricolare.

La ricarica dell’auricolare può essere effettuata in 4 modi diversi.
Utilizzando la base magnetica, come si vede nella figura qua sotto.

Inserendolo nella sua custodia dotata di batteria interna (comodo quando lo si porta appresso – è protetto e nel frattempo si ricarica pure).
Oppure tramite il suo cavo apposito, questo qua.

In questo caso basta semplicemente basta agganciarlo nella apposita fessura e collegarlo alla porta Usb del pc.
Personalmente non ho mai (almeno finora) utilizzato questa modalità, dato che mi è sufficiente la ricarica attraverso la sua custodia.
La quarta modalitàè l’attacco magnetico utilizzando la basetta di ricarica, che consente di mantenere sempre in posizione l’auricolare, come si vede dalla foto qua sotto.

Vediamo un po’ di dettagli tecnici, riassunti nella tabella qua sotto.

Come si vede la durata della batteria dell’auricolare si attesta sulle 7 ore.
Il peso, inoltre, è veramente contenuto, solo 18 grammi, tant’è che dopo un po’, complice anche la sua perfetta ergonomia, non ci si accorgerà nemmeno di averlo indosso.
A questo contribuisce anche il suo rivestimento con una gomma che assomiglia ad una pelle umana, non scivolosa né attaccaticcia, molto ben congegnata.

Che dire, sono veramente soddisfatto di questo auricolare Plantronics.
Se proprio vogliamo trovargli qualche difetto, direi che manca completamente la lingua italiana.
Tutti i messaggi che fornisce sono in inglese
E aggiungerei anche la scarsa sensibilità nel prendere le chiamate semplicemente dicendo “Enter” quando queste arrivano.
Direi comunque che sono piccolezze rispetto a quanto di buono viene offerto.
Tutto sta a trovarlo al miglior prezzo possibile.

OFFRO - Offro Service Manual (Manuali Tecnici) delle seguenti Marche : TOSHIBA - OLIVETTI - ecc..

$
0
0

OFFRO - Offro Service Manual (Manuali Tecnici) delle seguenti Marche : TOSHIBA - OLIVETTI - ecc..


 


In questi giorni ho rimesso mani al sito di www.imaginsystems.it e ho deciso di dedicare una parte del sito all'Assistenza Tecnica delle fotocopiatrici.
Principalmente : TOSHIBA , BROTHER , KYOCERA , OLIVETTI , UTAX , TA TRIUMPH ADLER , DEVELOP, KONIKA MINOLTA . 

Il servizio che voglio offrire tramite il sito è quello di creare una rete di Tecnici che possono consultare gratuitamente ovunque i Manuali Tecnici, Part List ecc.. 
Attualmente il servizio è in fase di aggiornamento, sto aggiungendo tutti i manuali che attualmente ho a disposizione.

Se vi interessa potete iscrivervi al seguente indirizzo: www.imaginsystems.it e dovete soltanto inserire la vostra e-mail ed aspettare che vi arrivi il link di attivazione!!

Sapendo che non posso inserire tutti i Manuali per ovvie ragioni di spazio Server, potete inviarmi la richiesta via e-mail o apposita pagina che troverete nel sito. 

Il servizio è totalmente gratuito e in fase di Beta Test!!

By ImaginSystems & Queen Gin   

SQL Server Feature Limitations (Windows Azure SQL Database)

WPF - Binding Password in una TextBox

$
0
0
Per chi sviluppa come me applicazioni desktop, usare WPF è diventato ormai naturale, anche per applicazioni semplici dove non è richiesta chissà che "appeal grafico" o "elaborazione multimediale".
A parte le capacità grafiche quindi, usare WPF per applicazioni semplici non è sbagliato, perchè si può avere un beneficio enorme dal motore di "Binding" magari con un bel "ViewModel"sotto che tradotto in spiccioli significa "vi risolverete parecchi problemi alla svelta e in modo pulito".
 
Come tutte le belle cose però, a volte si incappa in stupidaggini teoriche che invece ci danno del filo da torcere nell'implementazione, come ad esempio Bindare una TextBox ad una proprietà password, di un oggetto Utente.

Definirla banale è ancora troppo poco, infatti subito viene da pensare che basti usare il controllo PasswordBox e mettendo in binding la proprietà"Text" tutto fili liscio, ma purtroppo per mia esperienza diretta non funziona come dovrebbe.

Dopo un po' di stupore ovviamente ho cercato in internet se potesse esserci un senso, ed ho trovato qualcosa:
Ma neanche a dirlo, la soluzione prospettata (e nemmeno le altre trovate sul web) mi hanno risolto il problema...subdolo e fastidioso.

Allora, sono ricorso al buon metodo "arrangiati" e la mia soluzione più veloce, anche se poco elegante, è stato implementarmi un banale controllo con TextBox e TextBlock, che simuli gli asterischi durante la digitazione.
Usando la TextBox è possibile bindare la proprietà"Text" normalmente, basta mettere il foreground a White così la lettera non si vede e sopra a questa casella di testo, la TextBlock che viene riempita di asterischi durante la digitazione (notare la proprietà"IsHitTestVisible" per essere trasparente alla digitazione).

Il parte di markup è (la proprietà si chiamava "Password"):

<UserControl x:Class="....PasswordTextBoxControl"....>
  
<Grid HorizontalAlignment="Stretch">
      
<TextBox Text="{Binding Password,Mode=TwoWay}" Name="txt" TextChanged="txt_TextChanged"
               
Foreground="White" FontFamily="Courier New" />

      
<TextBlock Name="lbl" FontWeight="Bold"
                 
FontSize="{Binding FontSize,ElementName=txt}"
                 
FontFamily="{Binding FontFamily,ElementName=txt}"
                 
HorizontalAlignment="Left"IsHitTestVisible="False" Margin="5,0,0,0"
                  
VerticalAlignment="Center" />
  
Grid>
UserControl>


Mentre il codice che ci sta dietro:

publicpartialclassPasswordTextBoxControl : UserControl
{
   public PasswordTextBoxControl() 
   {
      InitializeComponent();
   }

   privatevoid txt_TextChanged(object sender, TextChangedEventArgs e)
   {
     
lbl.Text = newstring('*', txt.Text.Length);
   }
}

Con questo, l'ho utilizzato ed ho ottenuto quello che cercavo:




Tutto risolto, soprattutto senza perderci troppo tempo.
Anche questo caso dimostra come il principio di Pareto ricorra spesso nello sviluppo di un'applicazione... 

Windows 8.1

$
0
0
Microsoft ha annunciato il lancio di una nuova Release di Windows, Windows 8.1

Visto il flop delle vendite sarà rilasciata una versione con funzionalità e caratteristiche leggermente differenti per venire incontro alle esigenze dei consumatori.

Nuove caratteristiche e nuove funzionalità!

Voi cosa ne pensate?

Ahref un nuovo tool SEO

$
0
0
Avete mai sentito parlare di Ahrefs?

Un tool SEO molto interessante per scoprire backlink.

Andando sul sito https://ahrefs.com/ potete iscrivervi ed iniziare a provare questo fantastico tools.

Grazie alle nuove funzionalità ed alle features innovative permetterà di trovare i link verso un sito web desiderato.



Un tool a nostro avviso davvero interessante ed utile per i professinisti SEO ed per tutti i SEO specialist.

Da provare!

Giocare con i trattori online

$
0
0
I giochi in cui bisogna guidare risultano essere sicuramente tra i più comuni in rete e oggi proponiamo una novità abbastanza originale.

Facciamo riferimento a un sito di giochi di trattori sul quale è possibile individuare diversi giochi in cui bisogna controllare veicoli di questo tipo.
Il sito è disponibile all'url giochiditrattori.net e risulta essere semplice da usare.

L'iscrizione non è infatti richiesta e i giochi messi a disposizione sono gratis.
Sono giochi online e per questo motivo devono essere giocati attraverso il browser senza installare programmi sul pc.

Tra i diversi giochi presenti troviamo i giochi di trattori da trasporto che ottengono un enorme successo.
La modalità di gioco proposta è piuttosto facile.

Bisogna guidare i trattori che si trovano nel gioco per portare a destinazione il carico.
Sono giochi nei quali è ncessario essere rapidi e molto precisi per evitarre gli ostacoli senza perdere i prodotti.

Il sito mette a disposizione anche giochi di genere differente come i vari puzzle nei quali è necessario posizionare i pezzi in modo esatto per visualizzare l'immagine di un trattore.

Si tratta quindi di un sito sicuramente utile per i vari appassionati di questo argomento che vogliono passare il tempo in modo decisamente divertente.

Unicode Support from NAV 310 to NAV 2009

$
0
0

Unicode Support from NAV 3.10 to NAV 2009

Microsoft Issues

Ø  The double-byte character set, code page ‘XXX’à (ex: 932 Japanese), is not supported by this version of Microsoft Dynamics NAV: Microsoft Dynamics NAV 2009, Microsoft Dynamics NAV 5.0, Microsoft Dynamics NAV 4.0, Microsoft Business Solutions–Navision 3.70, Navision Attain 3.6, or Navision Attain 3.10.

Ø  Supported only on NAV 2013, native support

Double-Byte Character Set (DBCS) code page error when you start Microsoft Dynamics NAV

Ø  It is known that NAV CC (Classic Client) does not support natively DBCS (Double-Byte Character Set) and so does the new NAV 2009 RTC (Role Tailored Client)

Ø  Due to differences in how the CC and RTC check the code page isn’t still possible to enable DBCS in the RTC but this is possible for the CC by implementing new fin.stx file.

Workaround to handle unicode chars

Ø  How to enable and to display double-byte character sets in Microsoft Dynamics NAV
https://mbs.microsoft.com/knowledgebase/KBDisplay.aspx?scid=kb;EN-US;915374

 

WHAT TYPE OF ENCODING?

Ø  Roughly speaking regarding what we have done is merely enabling the Japanese characters to be stored into SQL Server but… not directly!

Ø  The Japanese code page is 932 (Shift-JIS) while we are using the Latin1 code page 1252 to store the data. To know more about Windows Collation Designators you can check:

http://msdn.microsoft.com/en-us/library/aa176553.aspx

Ø  This means that while we are typing Japanese chars in the NAV classic Client (using code page 932), this have been reverted (translation encoded) in their respective characters using code page 1252 and stored in this way in the SQL Server field.

Ø  This means that while we are seeing this in NAV :

Ø  Then the solution can come out clearly: use C# encoding function to manage the ‘translation’ between one set of character to another.

Support

  • Note XXXX (ex. 932) is the placeholder for the one of the following code pages:

http://msdn.microsoft.com/en-us/library/aa176553.aspx

 932: Japanese Shift-JIS 936: Simplified Chinese GBK  949: Korean  950: Traditional Chinese Big5

    • All windows languages are supported
      SUPPORTO LINGUE CINESE TRADIZIONALE, GIAPPONESE etc.

SPIEGAZIONE SUPPORTO UNICODE PER NAV 2009 e NAV 2013

Ø  NAV 2009 non supporta unicode

Ø  NAV 2013 supporta unicode nativo

NAV 2013 Sample

Ø  On Page Chin2 field is visible with Chinese Char

Ø  Unicode & Chinese Data

 

NAV 2009 Sample, Classic Client

Ø  Only unicode, no Chinese

 Cosa significa:

Ø  Se sarebbe già possibile (con la modifica sopra illustrata) inserire un dato in cinese (es: su Word) ciò non è sarebbe possibile su NAV in quanto il client non riconosce i caratteri e li scrive in formato “?????????”

Ø  In pratica NAV (e SQL Server) non riescono a memorizzare il dato in cinese anche se sembra che possa essere inserito

Ø  Su un database SQL Server (con collaction CS o CI latin general_1) non è possibile inserire caratteri cinesi (non li fa scrivere nel db, mette ‘???????’unknow data value)

Le possibilità di gestione sarebbero 3:

Ø  1 - Creare e scrivere direttamente in un db cinese (chinese collaction) > è un nuovo db NAV\SQL

Ø  2 - Convertire il db attuale in unicode support (raddoppia lo spazio su disco, rallenta il database, non sappiamo quanto ci metterebbe a convertirlo, potrebbe non convertire il tutto e bloccarsi durante la conversione; gestirebbe correttamente la scrittura del dato cinese sul db ma non lo potrebbe visualizzare comunque in NAV (cioè scrive nel db ma non visualizza in NAV)

Ø  3 - Modificare il db attuale modificando un parametro che permetta di inserire il dato in formato unicode metadato (cioè non in cinese ma nel suo unicode) dicendo a SQL di non scartare il dato; con questa soluzione in sostanza potremmo importare dati da file esterni : TXT, XLS se salvati in unicode format

 

Gestirebbe correttamente la scrittura del metadato unicode (creato da alcune procedure di Codifica\Decodifica da installare basate su windows) che rappresenta il cinese ; non lo potrebbe visualizzare comunque in NAV (cioè scrive nel db un dato che potremmo OnDemand convertire in cinese ma non visualizza in NAV)

o    Soluzione meno invasiva

 

Opzione 3”

Cosa si può fare:

Ø  Supportiamo la scrittura del metadato sul database (unicode corrispondente al cinese)

Ø  E’ possibile caricare tramite batch input (file TXT, XLS salvato in unicode) nel database

Ø  E’ possibile creare ed esporre delle viste che visualizzano sia il metadato che la lingua cinese (da esporre al web)

Ø  E’ possibile dal web scrivere il metadato di ritorno al db utilizzando le stesse funzioni usate

Ø  Come funziona: tramite 2 funzioni custom su SQL viene fatto Encode \ Decode del dato per permettere di scrivere \ leggere il dato in unicode e di visualizzarlo in cinese.

Come lo facciamo:

Visualizzazione, esposizione dati, importazione\esportazione dati

Ø  Modifica ed aggiunta dati: - Per visualizzare i dati in cinese (o modificarli \ aggiungerli etc.) è necessario creare alcune “Windows Forms” da lanciare da Nav per visualizzare\modificare i dati; queste maschere sembrano NAV ma son NAV; sono fatte in Visual Studio. Sarà possibile aggiungere dati salvando in metadati ma visualizzando in cinese 

Ø  Esposizione dati per Web: - Saranno create delle viste SQL che richiamando le funzioni Encode \ Decode e visualizzeranno in dati in cinese

Es: Vista con dati unicode

/****** Script for SelectTopNRows command from SSMS  ******/

SELECTTOP 1000 [Code]

      ,[DescrReconverted]

      ,[Descr]

      ,[Chinese]

FROM[Demo Database NAV (7-0)].[dbo].[CRONUS Italia S_p_A_$V_ART_CINESE_NAV]

 

Ø  Descr = METADATO (unicode), Chinese = dati in cinese (trascodificato da procedura)

 

Ø  Import\Export dati: Saranno creati dei DTS che utilizzando i sistemi di codifica visti sopra  permetteranno l’inserimento del metadato unicode.

ES SQL DTSX: COMPLETE FLOW

FLAT FILE (OR UNICODE OR CHINESE COLLACTION TABLE)

OBJECT SCRIPT

Ø  Lo script component converte il dato NAV da Chinese in unicode e lo scrive su SQL in unicode (cosa non possibile da NAV)

Ø  Input Columns (unicode data from SQL Unicode Table or Unicode TXT or EXCEL files)

DT_WSTR  > double bytes for Chinese chars

Ø  Output Columns (string format to handle unicode data DT_STR)

 

C# code in Script Component

/* Help:  Introduction to the Script Component */

/* The Script Component allows you to perform virtually any operation that can be accomplished in a .Net application within the context of an Integration Services data flow.

* Expand the other regions which have "Help" prefixes for examples of specific ways to use

* Integration Services features within this script component. */

 

Namespaces

using System;

using System.Data;

using Microsoft.SqlServer.Dts.Pipeline.Wrapper;

using Microsoft.SqlServer.Dts.Runtime.Wrapper;

using System.Text;

 

// RS, 20130531, Encode\Decode Integrated Script (C#)

// This is the class to which to add your code.  Do not change the name, attributes, or

// parent of this class.

 

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]

publicclassScriptMain : UserComponent

{

Help:  Using Integration Services variables and parameters

     * Example of reading from a variable or parameter:

     *  DateTime startTime = Variables.MyStartTime;

     *

     * Example of writing to a variable:

     *  Variables.myStringVariable = "new value";

     */

Help:  Using Integration Services Connnection Managers

     *

     * If the component needs to hold a connection open while processing rows, override the

     * AcquireConnections and ReleaseConnections methods.

     *

     * Example of using an ADO.Net connection manager to acquire a SqlConnection:

     *  object rawConnection = Connections.SalesDB.AcquireConnection(transaction);

     *  SqlConnection salesDBConn = (SqlConnection)rawConnection;

     *

     * Example of using a File connection manager to acquire a file path:

     *  object rawConnection = Connections.Prices_zip.AcquireConnection(transaction);

     *  string filePath = (string)rawConnection;

     *

     * Example of releasing a connection manager:

     *  Connections.SalesDB.ReleaseConnection(rawConnection);

     */

Help:  Firing Integration Services Events

    /* This script component can fire events.

     *

     * Example of firing an error event:

     *  ComponentMetaData.FireError(10, "Process Values", "Bad value", "", 0, out cancel);

     *

     * Example of firing an information event:

     *  ComponentMetaData.FireInformation(10, "Process Values", "Processing has started", "", 0, fireAgain);

     *

     * Example of firing a warning event:

     *  ComponentMetaData.FireWarning(10, "Process Values", "No rows were received", "", 0);

     */

   

    ///

    /// This method is called once, before rows begin to be processed in the data flow.

    /// You can remove this method if you don't need to do anything here.

    ///

   

Publicoverridevoid PreExecute()

    {

        base.PreExecute();

        /*

         * Add your code here

        */

    }

 

    /// This method is called after all the rows have passed through this component.

    ///

    /// You can delete this method if you don't need to do anything here.

   

Publicoverridevoid PostExecute()

    {

        base.PostExecute();

        /*

         * Add your code here

         */       

    }

 

    /// This method is called once for every row that passes through the component from     

//  Input0.

    /// Example of reading a value from a column in the the row:

    /// string zipCode = Row.ZipCode

    ///

    ///Example of writing a value to a column in the row:

    /// Row.ZipCode = zipCode

   

   

Publicoverridevoid Input0_ProcessInputRow(Input0Buffer Row)

    {

        /*

         * Add your code here

        */

       

        // Create a new variable of type Encoding and

        // assign it the Latin *** code page 1252 ***

        // To know more about it

        // http://msdn.microsoft.com/en-us/library/system.text.encoding_members.aspx

 

        Encoding nav = Encoding.GetEncoding(1252);

 

        // Create a new variable of type Encoding and assign it the Japanese

        // *** Code page 932 Japanese

        // Encoding unicode = Encoding.GetEncoding(932);

 

        Encoding unicode = Encoding.GetEncoding(936);

 

        // Assign Rowdata Values

        byte[] unicodeCod = unicode.GetBytes(Row.Cod);

        byte[] unicodeDescription = unicode.GetBytes(Row.Description);

        byte[] reconverted = nav.GetBytes(Row.Description);

 

        // Assign Added Output Fields

        this.Output0Buffer.AddRow();     

               

        Output0Buffer.CodNav = nav.GetString(unicodeCod);

        Output0Buffer.DescriptionNav = nav.GetString(unicodeDescription);

        Output0Buffer.Reconverted = unicode.GetString(reconverted);

 

 

        // **

 // ComponentMetaData.FireInformation(10, "Process Values",     

 unicode.GetString(reconverted), "", 0, true);       

        // Row.Cod = nav.GetString(unicodeCod);

        // Row.Description = nav.GetString(unicodeDescription);

        // **       

    }

}

  

SQL Destination Preview

Ø  Code = converted from Chiese to Unicode

Ø  Descr = converted from Chiese to Unicode

Cosa non si può fare nel db attuale (non unicode e non in cinese):

Ø  Su Nav non è possibile visualizzare i dati i cinese dal client classic > ‘???????’

Ø  Non è possibile stampare il documento in cinese (stesso problema del client) > ‘???????’

Ø  Non è possibile fatturare in cinese (e contabilizzare fatture in cinese)

Se servisse fatturare su NAV occorre creare un “DB Cinese”

Ø  Importare tramite viste sql e stored procedures i dati dal db attuale sul db cinese trascodificando tramite le funzioni sopra descritte e scrivendo il dato in cinese

Ø  Non è possibile eseguire una fatturazione in NAV poiché ci sono dei vincoli nelle localizzazioni cinesi, giapponesi etc.; sulla cinese viene messo un oggetto che collegato al tel. stacca il protocollo di fatturazione cinese che deve validare le fatture

 

SUPPORT UNICODE IN NAV – PROCEDURA

WINDOWS INPUT DATA

Ø  Come indicato nella documentazione Microsoft, Dynamics NAV 2009 non è direttamente abilitato all’utilizzo diretto dei caratteri Unicode. Il sistema operativo (windows) permette di utilizzare i caratteri Unicode anche per la visualizzazione e l’inserimento dei dati con programmi non abilitati utilizzando una particolare impostazione del menu [Region and Language] in ITA [Paese e Lingua] (in questo documento facciamo riferimento ad un client Windows 7). Si suppone che il computer sia già impostato per utilizzare i caratteri cinesi.

MODIFICHE WINDOWS

Come si imposta:

Ø  L’impostazione è[Language for non-Unicode programs], che si trova nel tab [Advanced] di [Region and Language]:

Dal menu visualizzato, selezionare Chinese Simplified, PRC,oppure Chinese Traditional (es: Taiwan). Questa impostazione richiede il riavvio del pc.

Ø  Fatta questa prima modifica, il client è abilitato all’inserimento dei caratteri Unicode in Dynamics NAV; lo farebbe però solo su un db con collaction cinese

 

MODIFICA A PARAMETRO NAV (su SQL SERVER) per SUPPORT INPUT UNICODE DATA

Ø  Prima di poter effettivamente utilizzare questa caratteristica, è necessario modificare un parametro del server Dynamics NAV che se impostato impedisce l’inserimentonel database di caratteri non compatibili con la collation indicata per il database SQL: per modificare questo parametro è necessario impostare il database in Single User Mode (), effettuare la modifica ed uscire dal Single User Mode.

Il campo [Convalida regole di confronto] in [Confronto] deve essere impostato a FALSE

Ø  Cosa fa questo flag : permette a NAV di scrivere i dati senza chiedere la validazione della collaction SQL Server (bypass input)

Ø  Gli altri parametri di questa pagina non devono essere modificati.

 

MY TEST CASE

Ø  La principale difficoltà segnalata da Microsoft Italia era relativa all’impossbilità di inserire direttamente i caratteri cinesi nel database Dynamics NAV, in quanto i campi rimangono di tipo VARCHAR mentre i campi contenenti dati Unicode sono di tipo NVARCHAR. Ne deriva che un dato visualizzato in Dynamics NAV come scritto con caratteri cinesi (due bytes) viene in effetti salvato nel database nelle sue componenti costitutive in byte.

Ø  Poiché sono presenti alcune procedure di scambio automatico dei dati, è stata implementata nell’ambiente di sviluppo e test una possibile soluzione per questo problema.

Ø  Si tratta di una serie di metodi esposti da una classe scritta in C# per .NET 3.5, che forniscono le funzionalità di conversione dalla codifica Unicode cinese e giapponese verso la codifica utilizzata da Dynamics NAV, e viceversa.

Per installare ed utilizzare queste funzioni è necessario abilitare il server nel quale verranno richiamate le funzioni all’utilizzo di CLR, mediante i seguenti comandi:

 

Da console SQL (new query)

       -- attivazione CLR per supporto Assembly --

sp_configure'clr enable', 1  

GO

RECONFIGURE  

GO

  

Codeunit Parser“UnicodeConverter.dll”

Ø  Cosa fa: gestisce la trascodifica unicode tramite DLL Windows

Copiare la DLL UnicodeConverter.dll nella cartella del server SQL (normalmente in C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\) per l’utilizzo in SQL, tramite il comando

Da console SQL Server (new query)

C# Code per DLL

// ** Code, Encode ** /

// ** RS, 20130531 ** /

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using Microsoft.SqlServer.Server;

using System.Data.SqlTypes;

using System.Text;

 

// PUBLIC CLASS ** CONVERTER **   

publicclassConverter

    {

        [SqlFunction(IsDeterministic = true)]

        publicstaticSqlString Chinese2NAV(SqlString ChineseString)

        {

            /* Encode es: 1252 Non Unicode*/

            Encoding NotUnicode = Encoding.GetEncoding(1252);

            /* Encode es: 936 Unicode*/

            Encoding Chinese = Encoding.GetEncoding(936);

 

            return (NotUnicode.GetString(Chinese.GetBytes((string)ChineseString)));

        }

 

        [SqlFunction(IsDeterministic = true)]

        publicstaticSqlString NAV2Chinese(SqlString NotUnicodeString)

        {

            /* Encode es: 1252 Non Unicode*/

            Encoding NotUnicode = Encoding.GetEncoding(1252);

            /* Encode es: 936 Chinese*/

            Encoding Chinese = Encoding.GetEncoding(936);

 

            // Return Chinese

            return (Chinese.GetString(NotUnicode.GetBytes((string)NotUnicodeString)));

        }

 

        [SqlFunction(IsDeterministic = true)]

        publicstaticSqlString Japanese2NAV(SqlString JapaneseString)

        {

            /* Encode es: 1252 Non Unicode*/

            Encoding NotUnicode = Encoding.GetEncoding(1252);

            /* Encode es: 932 Chinese*/

            Encoding Japanese = Encoding.GetEncoding(932);

 

            return (NotUnicode.GetString(Japanese.GetBytes((string)JapaneseString)));

        }

 

        [SqlFunction(IsDeterministic = true)]

        publicstaticSqlString NAV2Japanese(SqlString NotUnicodeString)

        {

            /* Encode es: 1252 Non Unicode*/

            Encoding NotUnicode = Encoding.GetEncoding(1252);

            /* Encode es: 932 Chinese*/

            Encoding Japanese = Encoding.GetEncoding(932);

 

            // Return Japanese

            return (Japanese.GetString(NotUnicode.GetBytes((string)NotUnicodeString)));

        }

 

    }

  

REGISTRAZIONE ASSEMBLY PER DLL SU SQL SERVER

Registrazione DLL‘UnicodeConverter.dll'

 

Ø  CREATE ASSEMBLY UnicodeConverter from 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\UnicodeConverter.dll' WITH PERMISSION_SET = SAFE

 

Ø  Mio test case:

 

 

-- attivazione CLR per supporto Assembly --

sp_configure'clr enable', 1  

GO

RECONFIGURE  

GO

 

-- Creazione ASSEBLY per pubblicare la DLL a SQL --

CREATEASSEMBLYUnicodeConverterfrom'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Binn\UnicodeConverter.dll'WITHPERMISSION_SET=SAFE

  

Infine devono essere create le funzioni su SQL utente da richiamare per la conversione:

CREATEFunctionChinese2NAV(@matchStringnvarchar(max))returnsnvarchar(max)

ASEXTERNALNAMEUnicodeConverter.Converter.Chinese2NAV

 

CREATEFunctionJapanese2NAV(@matchStringnvarchar(max))returnsnvarchar(max)

ASEXTERNALNAMEUnicodeConverter.Converter.Japanese2NAV

 

CREATEFunctionNAV2Chinese(@matchStringnvarchar(max))returnsnvarchar(max)

ASEXTERNALNAMEUnicodeConverter.Converter.NAV2Chinese

 

CREATEFunctionNAV2Japanese(@matchStringnvarchar(max))returnsnvarchar(max)

ASEXTERNALNAMEUnicodeConverter.Converter.NAV2Japanese

 

Queste funzioni potranno quindi essere utilizzate per la scrittura e la lettura dei dati nel formato Dynamics NAV.

Ø  Si noti che queste funzioni convertono le stringhe senza porre limitazioni circa la lunghezza della stringa stessa: devono quindi essere verificate e confrontate rispetto alla lunghezza effettiva dei campi disponibili in Dynamics NAV tenendo presente il fatto che non c’è corrispondenza tra la lunghezza delle stringhe Unicode e quelle Dynamics NAV equivalenti.

 

Il test del corretto funzionamento delle funzioni può essere fatto tramite le seguenti chiamate:

Code\Encode Functions

Encoding nav = Encoding.GetEncoding(1252);

Encoding unicode = Encoding.GetEncoding(932);

byte[] unicodeBytes = unicode.GetBytes(textBox1.Text);

textBox2.Text = nav.GetString(unicodeBytes);

 

Select with Functions

select dbo.NAV2Chinese(N'²ÊƼÎâ')

 

example

  

Riferimenti:

Microsoft Officials

http://blogs.msdn.com/b/nav/archive/2009/06/16/how-to-manage-nav-dbcs-data-using-c.aspx

https://mbs2.microsoft.com/Knowledgebase/KBDisplay.aspx?scid=kb$EN-US$915374&wa=wsignin1.0

http://blogs.msdn.com/b/freddyk/archive/2008/11/04/transferring-data-to-from-com-automation-bjects-and-webservices.aspx

 

Encoding code page (ex: 1252 ITA)

http://msdn.microsoft.com/en-us/library/system.text.encoding_members.aspx

 

Blog Kekunda

http://petrescent5.kekunda.com/chan-4194086/all_p1.html

Referencing a custom assembly inside a Script Task

http://microsoft-ssis.blogspot.it/2011/05/referencing-custom-assembly-inside.html

http://microsoft-ssis.blogspot.it/

 

NAV 2013 SOAP Web Services on a multilanguage environment

http://blogs.msdn.com/b/nav/archive/2012/11/07/nav-2013-soap-web-services-on-a-multilanguage-environment.aspx

Pillole di programmazione C#, C++

http://www.aino.it/Attivita/Appunti_C_Sharp/Programmazione.htm

 

by Roberto Stefanetti, documents repacked

Come funzionano i giochi di parcheggio online

$
0
0
In questo articolo segnaliamo un nuovo sito di giochi online dedicato a una particolare categoria di giochi.

Il sito di cui parliamo è giochidiparcheggiogratis.com che risulta essere un sito di giochi gratis su cui sono presenti solo giochi di parcheggio.

I giochi di parcheggiare rappresentano una categoria di giochi di guida abbastanza diversi dal normale perchè la precisione risulta essere certamente più importante che la velocità.

I giochi propongono ambientazioni di diverso tipo ma l'obiettivo è sempre lo stesso. Risulta essere necessario parcheggiare il veicolo in un determinato posto evitando i vari ostacoli che si trovano nel gioco.

I giochi di parcheggiare più comuni risultano essere sicuramente i giochi di parcheggio auto nei quali è necessario controllare auto di diverso genere e parcheggiarle in modo corretto.

Troviamo anche giochi più originali come giochi di bus da parcheggiare che hanno una difficoltà superiore per le dimensione del pullman.

I giochi proposti dal sito risultano essere gratis e possono essere giocati in modo molto rapido tramite il browser.
Si tratta per questo motivo di un tipo di giochi facili da utilizzare e decisamente divertenti.

Il trading

$
0
0
Quando si parla di investimenti, i riferimenti possono essere di diverse categorie, in questo caso vogliamo parlare del trading, un'attività per investitori che vogliono negoziare con i suddetti strumenti finanziari, ossia indici che possono essere negoziati dal trader secondo la propria conoscenza in materia di questi.

Per investire in borsa occorre conoscenza della materia, questo per evitare di perdere durante movimenti finanziari di titoli di borsa, infatti occorre conoscere i mercati per negoziare in modo più professionale. Un'altra soluzione per investire è il trading online che è simile al trading tradizionale, ma con la differenza che i titoli si negoziano via internet con qualunque computer connesso.

Nuovi corsi (riveduti) Trainsignal su SQL Server 2012

$
0
0

A gennaio di quest’anno avevo scritto le mie impressioni dei corsi Trainsignal su SQL Server 2008.
A parte la loro indubbia utilità (offerte formative di questo tipo sono sempre le benvenute), ne avevo sottolineato anche gli aspetti su cui la società avrebbe fatto meglio a dedicare del tempo per apportarne miglioramenti.
Negli ultimi 2 mesi ho potuto accedere alle nuove versioni di questi tutorial, questa volta dedicati a SQL Server 2012 ed anche a gran parte degli altri titoli (gli MTA, ad esempio) che mettono a disposizione, come sempre con una grande preferenza per gli aspetti sistemistici, più che di sviluppo.
Trainsignal è, infatti, piuttosto focalizzata su argomenti sistemistici, come ad esempio le certificazioni Cisco e VMWare.

Per chi non conoscesse la Trainsignal, questa immagine racchiude visivamente la sua storia.

Tutti i corsi offerti sono usufruibili sia online che disconnessi dalla rete, utilizzando il cosiddetto Trainsignal Offline Player, che ne permette il loro download (anche parziale, lezione per lezione) e tiene traccia degli avanzamenti eseguiti.
Ecco qua sotto come appare una schermata di questo tool.

Questo sotto è l’istruttore del corso su SQL Server Querying, una nuova entrata per quanto io sappia.

Mentre qua sotto il sommario di questo corso, “SQL Server 2012 Querying (70-461)”,
specificatamente indirizzato al superamento dell’esame di certificazione Microsoft 70-461.
È comunque molto utile per chiunque, anche alle prime armi, dato che si parte proprio dalle basi dello sviluppo con T-SQL.

Lesson 1: Introduction to SQL Server 2012 (00:08:37)
Lesson 2: Introduction to Relational Databases (00:38:03)
Lesson 3: Introduction to SELECT Statements (00:34:54)
Lesson 4: Filtering Results with WHERE Statements (00:19:56)
Lesson 5: Utilizing Joins (00:31:48)
Lesson 6: Executing Subqueries and UNION Statements (00:23:44)
Lesson 7: Aggregating Data (00:37:47)
Lesson 8: Advanced Data Aggregations (00:33:47)
Lesson 9: Built-In Functions (00:26:29)
Lesson 10: Query Optimization (00:27:03)
Lesson 11: Modifying Data (00:16:42)
Lesson 12: Advanced Data Modification (00:14:18)
Lesson 13: Managing Transactions (00:39:59)
Lesson 14: Implementing Error Handling (00:16:10)
Lesson 15: XML Basics (00:15:28)
Lesson 16: Retrieving XML (00:18:01)
Lesson 17: Importing XML (00:13:15)
Lesson 18: Creating and Altering Tables (00:16:36)
Lesson 19: Data Validation with Constraints (00:37:23)
Lesson 20: Creating and Modifying Triggers (00:18:06)
Lesson 21: Creating and Modifying Views (00:15:46)
Lesson 22: Creating and Modifying Stored Procedures (00:13:11)
Lesson 23: Creating and Modifying User Defined Functions (00:16:50)

Come si vede, una lezione può durare dagli 8 ai 40 minuti.
Manca purtroppo un’indicazione della durata totale del corso.
Diciamo che l’Offline Player presenta alcune comodità degne di nota.
Per prima cosa, come detto, fornisce da subito un’indicazione visiva dell’avanzamento della propria preparazione.

Molto comodi i comandi per aumentare la velocità (1,5 volte) – a patto di comprendere molto bene l’inglese – e rivedere gli ultimi 30 secondi, nel caso si volesse fissare meglio in mente un concetto appena appreso.
Ovviamente ci sono anche le indicazioni temporali: tempo trascorso e durata totale del video.

Il Trainsignal Offline Player presenta però qualche piccolo bug.
Ad esempio, più di una volta, dopo aver tentato di riprendere un download interrotto, mi segnala che c’è un errore in quella lezione, e l’unica azione che posso fare è eliminarla completamente e procedere ad un suo reinserimento nella lista, come si vede da questa immagine.

Un’altra volta, ma questo mi è capitato solo in un’occasione, è proprio uscita una schermata di errore non gestito.

Un’altra volta mi è capitato che la lezione giungesse improvvisamente alla fine, saltando gran parte del suo contenuto, pur mostrando il suo download correttamente completato.
Inoltre, non permette di memorizzare il proprio account, ed ogni volta che lo si lancia bisogna inserire le proprie credenziali. Un po’ scomodo.
Anche il download procede solo 2 lezioni alla volta: per chi dispone di una connessione veloce, è un’impostazione un po’ limitante.
Sicuramente ci sono dei punti da mettere a posto.
Ma a questo punto, non era più semplice consentire il diretto download dei video, magari proteggendoli con una password? Forse sì, ma ogni società prende le sue scelte in merito alla protezione dei propri contenuto.
Tutto sta, però, a fornire un tool di visualizzazione a prova di errori.
Per fortuna è possibile impostare la visualizzazione a tutto schermo, dato che nella modalità normale il video risulta davvero di piccole dimensioni, un po’ sacrificato dalle grandi barre superiore e inferiore.

I corsi sono però indubbiamente migliorati. Migliore presentazione, migliore realizzazione tecnica, cura nei particolari e nei dettagli. L’inglese è ben scandito e ben comprensibile (perlomeno per i corsi che ho potuto seguire io, non so per gli altri).
Alcuni aspetti, però, si potrebbero ancora migliore: innanzitutto dare più spazio alle prove pratiche (su SQL Server in questo caso), lasciando un attimo da parte le numerose slide.
Ho notato, infatti, che in alcune lezioni la parte “slide Powerpoint” occupa la metà della lezione stessa (se non di più). Un po’ troppo: meglio far vedere subito la pratica.
Aggiungerei anche un maggiore livello di approfondimento. I corsi Pluralsight – giusto per avere un metro di paragone – sono più approfonditi ed entrano maggiormente nei dettagli.

Il costo per accedere alla libreria completa si attesta sui 49 $ al mese.

Non è pochissimo, ma bisogna ammettere che la loro offerta è molto vasta, e dal punto di vista sistemistico offre davvero tutto quanto possa servire, in qualsiasi ambito.

Per chi volesse, infine, fare un pensierino sul presentare domanda di assunzione in Trainsignal (hanno sede vicino a Chicago, a Schaumburg, nell’Illinois).

Ecco cosa offrono:

Quante potrebbero essere le aziende di casa nostra che dovrebbero prendere spunto da questa offerta?

Che dire quindi: Trainsignal, come lo era anche prima, rappresenta una buona scelta come fonte di formazione informatica continua, a patto però di comprendere piuttosto bene l’inglese parlato ed accettare un prezzo di listino un po’ superiore alla media.
Ovviamente se questo viene sovvenzionato dalla propria azienda, tanto meglio.

Viewing all 24464 articles
Browse latest View live