venerdì 27 novembre 2009
Errore VMware: "Another task is already in progress"
La soluzione consiste nel connettersi in ssh all'host ESX fisico su cui risiede la VM e nel riavviare come utente root il servizio "mgmt-vmware".
service mgmt-vmware stop
Stopping VMware ESX Management services:
VMware ESX Host Agent Watchdog [ OK ]
VMware ESX Host Agent [ OK ]
Aspettare 30 secondi e poi restartare il servizio
service mgmt-vmware start
Starting VMware ESX Management services:
VMware ESX Host Agent (background) [ OK ]
Availability report startup (background) [ OK ]
Il server ESX e le macchine virtuali che girano su di esso si disconnetteranno dal Virtual Infrastructure/vSphere Client e se non si riconnettono da sole basta fare click con il tasto destro sull'host ESX e scegliere "reconnect".
Quando tutto risulta riconnesso, ritentare l'operazione che in precedenza dava errore e a questo punto tutto dovrebbe funzionare correttamente.
venerdì 6 novembre 2009
Limite dimensioni messaggio in Exchange 2007
Dopo aver settato i limiti dalla GUI (Exchange Management Console) sulle mailbox degli utenti, passare alla shell (Exchange Management Shell) e digitare i seguenti comandi. I comandi in maiuscolo servono per elencare i parametri di configurazione, quelli con il "set" servono per impostarli.
GET-TRANSPORTCONFIG
set-transportconfig -MaxReceiveSize VALORE
set-transportconfig -MaxRecipientEnvelopeLimit VALORE
set-transportconfig -MaxSendSize VALORE
GET-RECEIVECONNECTOR LIST
set-receiveconnector -MaxMessageSize VALORE (se richiesto, impostare la "identity" con i valori elencati dal comando precedente)
GET-SENDCONNECTOR LIST
set-sendconnector -MaxMessageSize VALORE (se richiesto, impostare la "identity" con i valori elencati dal comando precedente)
VALORE può essere espresso, per esempio, come 10000 o 10MB
lunedì 28 settembre 2009
VMware vSphere Client in Windows 7
Da, infatti, gli errori seguenti quando si tenta di connettersi ad un server Esx o ad un Virtual Center:
- Error parsing the server "nome del server" "clients.xml" file.
- The type initializer for 'VirtualInfrastructure.Utils.HttpWebRequestProxy' threw an exception.
Per fare si che il programma funzioni, esiste un workaround.
- Modificare il file VpxClient.exe.config in questo modo:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.net>
<connectionManagement>
<clear/>
<add address="*" maxconnection="8" />
</connectionManagement>
</system.net>
<appSettings>
<add key = "protocolports" value = "https:443"/>
</appSettings>
<runtime>
<developmentMode developerInstallation="true"/>
</runtime>
</configuration> - Creare nella cartella C:\Program Files\Vmware\Infrastructure\Virtual Infrastructure Client\Launcher (o la cartella dove si è installato il software) una sottocartella Lib. In questa cartella copiare il file system.dll di .Net recuperato da una macchina che non abbia Windows 7 (vedi in fondo)
- Creare una nuova variabile di sistema chiamata DEVPATH con valore C:\Program Files\Vmware\Infrastructure\Virtual Infrastructure Client\Launcher\Lib
A questo punto si potrà utilizzare tranquillamente il software.
PS: per comodità, ho inserito in un file zip il file già modificato e il file system.dll ed è possibile scaricarlo qui.
mercoledì 24 giugno 2009
Shrink del file di log di SQL Server su tutti i database
mercoledì 3 giugno 2009
Disabilitare un bottone dopo il click (Asp.Net)
giovedì 14 maggio 2009
Windows Server 2008 e condivisione cartelle
Lavorando su cartelle condivise residenti su server con sistema operativo Windows Server 2008, ci si può imbattere nel seguente messaggio di errore sui client, all’apertura della cartella:
Se è impossibile installare gli aggiornamenti software perché si verifica un'interruzione del servizio, attenersi alla seguente procedura:
1. Accedere a un controller di dominio basato su Windows Server 2008.
2. Fare clic sul pulsante Start, scegliere Esegui, digitare gpmc.msc, quindi scegliere OK.
3. Nella console Gestione criteri di gruppo, espandere Foresta: Nomedominio, Nomedominio e Controller di dominio, fare clic con il pulsante destro del mouse su Criteri predefiniti controller di dominio e scegliere Modifica.
4. Nella console Editor Gestione Criteri di gruppo espandere Configurazione computer, Criteri, Modelli amministrativi e Sistema, fare clic su Accesso rete, quindi doppio clic su Consenti algoritmi di crittografia compatibili con Windows NT 4.0.
5. Nella finestra di dialogo Proprietà fare clic sull'opzione Abilitato, quindi scegliere OK.
Note
o Per impostazione predefinita l'impostazione Non configurato è impostata per il criterio Consenti algoritmi di crittografia compatibili con Windows NT 4.0 nei seguenti oggetti Criteri di gruppo:
§ Criterio dominio predefinito
§ Criterio controller di dominio predefinito
§ Criteri del computer locale
Per impostazione predefinita, il comportamento per il criterio Consenti algoritmi di crittografia compatibili con Windows NT 4.0 nei controller di dominio basati su Windows Server 2008 è di impedire, a livello di programmazione, alle connessioni di utilizzare gli algoritmi di crittografia impiegati in Windows NT 4.0. Di conseguenza, gli strumenti che enumerano impostazioni dei criteri efficaci in un computer membro o in un controller di dominio non rileveranno il criterio Consenti algoritmi di crittografia compatibili con Windows NT
o I controller di dominio basati su Windows 2000 e quelli basati su Windows Server 2003 non dispongono del criterio Consenti algoritmi di crittografia compatibili con Windows NT 4.0. Di conseguenza i controller di dominio basati sulle versioni precedenti a Windows Server 2008 accettano richieste di canali sicuri dai computer client anche se tali computer utilizzano i vecchi algoritmi di crittografia impiegati in Windows NT 4.0. Se le richieste di canali sicuri vengono elaborate in modo intermittente dai controller di dominio basati su Windows Server 2008, si verificheranno risultati incoerenti.
6. Installare aggiornamenti software di terze parti che correggano il problema o rimuovere i computer client che utilizzano algoritmi di crittografia incompatibili.
7. Ripetere i passaggi da
8. Nella finestra di dialogo Proprietà fare clic sull'opzione Disabilitato, quindi scegliere OK.
Importante Per motivi di protezione, è necessario impostare di nuovo l'opzione per questo criterio su Disabilitato.
sabato 9 maggio 2009
jQuery e Intellisense con Visual Studio 2008 (VS 2008)
Step 1: Installare il Service Pack 1 di VS 2008
L'SP1 di VS 2008 aggiunge il supporto al "richer intellisense" per JavaScript ed anche l'autocompletamento per un ampio range di librerie JavaScript.
È possibile scaricare l'SP1 per Visual Studio 2008 QUI.
Step 2: Installare la patch KB958502 di VS 2008
Questa patch, rilasciata da Microsoft qualche settimana fa, fa si che VS verifichi la presenza di un file "-vsdoc.js" quando viene aggiunta una reference ad una libreria JavaScript. Se lo trova, lo utilizza per la gestione dell'Intellisense per quella libreria.
Il file "-vsdoc.js" può contenere anche commenti XML che forniscono la documentazione per i metodi JavaScript. La patch può essere scaricata gratuitamente da QUI.
Step 3: scaricare il file jQuery-vsdoc.js
Microsoft ha lavorato assieme al team di jQuery per creare assieme un file "-vsdoc.js" che contiene tutta la documentazione ed il supporto intellisense necessari. È possibile scaricare sia le librerie di jQuery che il file "-vsdoc.js" dalla pagina ufficiale di download di jQuery. (Il file vsdoc si trova sotto il link "Documentazione")
Salvare poi il file -vsdoc.js nella stessa cartella della libreria jQuery all'interno del progetto. È importante notare che i due file devono avere lo stesso prefisso, altrimenti non verrà riconosciuto da VS. Ad esempio se la libreria si chiama jquery.1.2.6.js il file vsdoc dovrà chiamarsi jquery.1.2.6-vsdoc.js
Ora è possibile referenziare la dll all'interno della pagina con un normale tag html <script/>:
<script src="../Folder/jquery.1.2.6.js" type="text/javascript"></script>
In questo modo VS andrà a cercare il file vsdoc appropriato e lo userà per fornire il supporto intellisense.
giovedì 23 aprile 2009
Disintallare System Center Essential (SCE) 2007
Di seguito la procedura completa. Ovviamente dovete sostituire a NomeDominio il nome del vostro dominio...
Eliminare il gruppo SCE Managed Computers da Active Directory
Start > Esegui > dsa.msc
Tasto destro su NomeDominio e click su Trova
Digitare SCE Managed Computers nel campo Nome e click su Trova
Tasto destro su SCE Managed Computers nella lista di risultati e poi Elimina
Chiudere Computer e Utenti di Active Directory
Eliminare le Group Policies
Start > Esegui > gpmc.msc
Espandere NomeDominio
Espandere Group Policy Objects
Tasto destro su SCE Managed Computers Group Policy (…) e poi Elimina
Tasto destro su System Center Essentials All Computers Policy e poi Elimina
Chiudere Group Policy Management Console
Eliminare Service Connection Point (SCE)
La seguente procedura richiede ADSI Edit.
Start > Esegui > adsiedit.msc
Tasto destro su Domain (NomeDominio) sulla sinista e click su Nuovo > Query
Scrivere SCESCP nel box Name
Click sul bottone Browse, selezionare NomeDominio, e click su OK
Incollare la stringa (&(objectCategory=serviceConnectionPoint)(cn=SCESCP)) nel box Query String e click su OK
Espandendo Domain (NomeDominio) sarà comparsa la voce SCESCP. Click su quella voce.
Tasto destro su CN=SCESCP nel pannello di destra e click su Delete
Lasciare ADSI Edit aperto per il prossimo step
Eliminare Service Connection Point (SDKServiceSCP)
Tasto destro su Domain (NomeDominio) sulla sinista e click su Nuovo > Query
Scrivere SDKSCP nel box Name
Click sul bottone Browse, selezionare NomeDominio, e click su OK
Incollare la stringa (&(objectCategory=serviceConnectionPoint)(cn=SDKServiceSCP)) nel box Query String e click su OK
Espandendo Domain (NomeDominio) sarà comparsa la voce SDKSCP. Click su quella voce.
Tasto destro su CN=SDKServiceSCP nel pannello di destra e click su Delete
giovedì 16 aprile 2009
Asp.Net Menu e Internet Explorer 8 (IE8)
martedì 7 aprile 2009
SQL Server 2008 Row Constructors
Tramite l’utilizzo di Row Constructors è possibile inserire più righe in una tabella utilizzando un’unica istruzione INSERT:
INSERT INTO dbo.Customers(custid, companyname, phone, address)
VALUES
(1, 'cust 1', '(111) 111-1111', 'address 1')
,(2, 'cust 2', '(222) 222-2222', 'address 2')
,(3, 'cust 3', '(333) 333-3333', 'address 3')
,(4, 'cust 4', '(444) 444-4444', 'address 4')
,(5, 'cust 5', '(555) 555-5555', 'address 5');
In aggiunta a questa possibilità, ora la clausola VALUES è generale anche con altri comandi; in particolare è utilizzabile laddove sia necessario poter accedere ad una serie di valori, come se questi fossero in una tabella, ma senza avere una tabella reale. In parole più semplici è possibile riscrivere una serie di SELECT unite da un operatore UNION come un unico comando SELECT…VALUES:
SELECT *
FROM
(VALUES
(1, 'cust 1', '(111) 111-1111', 'address 1')
,(2, 'cust 2', '(222) 222-2222', 'address 2')
,(3, 'cust 3', '(333) 333-3333', 'address 3')
,(4, 'cust 4', '(444) 444-4444', 'address 4')
,(5, 'cust 5', '(555) 555-5555', 'address 5')
) AS C(custid, companyname, phone, address);
giovedì 5 marzo 2009
Redirect trasparente in HTML
C'è un modo molto semplice, però, per raggiungere questo risultato senza darne la percezione all'utente. Il metodo sfrutta i frame, ma sulla pagina non c'è alcuna traccia del loro utilizzo e nella barra sul browser l'indirizzo non cambia. Basta fare così:
<html>
<head>
</head>
<frameset>
<frame name="main" src="http://www.nuovodominio.it">
</frameset>
<body>
</body>
</html>
PS: ci sono anche altri modi per fare ciò, ma tutti utilizzano javascript. Questo è l'unico modo che non prevede l'utilizzo di script o codici particolari.
mercoledì 25 febbraio 2009
Finestre modali (window.showModalDialog) e problema di cache
Per ovviare a questo problema, bisogna inserire nel page load della pagina che verrà utilizzata come finestra modale le seguenti righe di codice:
Response.Cache.SetCacheability(HttpCacheability.NoCache)
Response.Cache.SetExpires(DateTime.Now - New TimeSpan(1, 0, 0))
Response.Cache.SetLastModified(DateTime.Now)
Response.Cache.SetAllowResponseInBrowserHistory(False)
Ricordo che, per richiamare la finestra in modo che sia modale, si deve utilizzare questa un metodo javascript:
hlkNuovaFinestra.Attributes.Add("onclick", "javascript: window.showModalDialog('PaginaDaAprire.aspx', null, 'status:no; dialogWidth:500px; dialogHeight:400px; dialogHide:true; help:no; scroll:no;')"
In questo esempio, viene aperta una finestra modale di 400x500 pixel, senza barra di stato e senza bottoni e scroll semplicemente cliccando sull'HyperLink denominato hlkNuovaFinestra.
mercoledì 18 febbraio 2009
Recuperare un'immagine da Database con VB.Net
Dim Album As New Collection
Dim Query As String
Dim Archivio As SqlConnection
Private Sub Form2_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load
Archivio = New SqlConnection
Archivio.ConnectionString = "stringa di connessione"
Query = "SELECT Foto FROM ALBUM"
Dim cmd As New SqlCommand(Query, Archivio)
Archivio.Open()
Dim I As Integer = 0
Dim reader As SqlDataReader = cmd.ExecuteReader()
Dim Temp As Byte ()
While reader.Read
Temp = reader(0)
Album.Add(Temp)
End While
If Album.Count > 0 Then
Temp = CType (Album.Item(conta), Byte())
Dim Img As MemoryStream = New MemoryStream(Temp)
PictureBox1.Image = Image.FromStream(Img)
End If
End Sub
Private Sub btnIndietro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIndietro.Click
Dim Temp As Byte ()
If conta > 1 Then
conta = conta - 1
Temp = CType (Album.Item(conta), Byte())
Dim Img As MemoryStream = New MemoryStream(Temp)
PictureBox1.Image = Image.FromStream(Img)
End If
End Sub
Private Sub btnAvanti_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAvanti.Click
Dim Temp As Byte ()
If conta Album.Count Then
conta = conta + 1
Temp = CType (Album.Item(conta), Byte())
Dim Img As MemoryStream = New MemoryStream(Temp)
PictureBox1.Image = Image.FromStream(Img)
End If
End Sub
Caricare un'immagine in Database con VB.Net
Archivio = New SqlConnection
Archivio.ConnectionString = "stringa di connessione"
Private Sub btnFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFile.Click
OpenFileDialog1.Filter = "BMP - Bitmap Windows | *.bmp | " _
& "GIF - CompuServe Graphics Interchange | *.gif | JPG - " _
& "Compatibile JFIF | *.jpg"
OpenFileDialog1.Title = "Seleziona l'immagine da caricare ..."
OpenFileDialog1.ShowDialog()
If OpenFileDialog1.FileName <> "" Then
TextBox1.Text = OpenFileDialog1.FileName.ToString
PictureBox1.Image = Image.FromFile(OpenFileDialog1.FileName.ToString)
End If
End Sub
Private Function ImageToStream()As Byte ()
Dim Image As New Bitmap(TextBox1.Text)
Dim stream As MemoryStream = New MemoryStream()
Image.Save(stream, _
System.Drawing.Imaging.ImageFormat.Bmp)
Return stream.ToArray()
End Function
Private Sub Carica()
If File.Exists(TextBox1.Text) Then
Dim Query As String
Query = "INSERT INTO Album (Foto) VALUES (@Img)"
Dim comando As New SqlCommand(Query, Archivio)
Archivio.Open()
Dim param As SqlParameter = New SqlParameter("@Img", SqlDbType.Binary)
param.Value = ImageToStream()
comando.Parameters.Add(param)
comando.ExecuteNonQuery()
comando = Nothing
Archivio.Close()
PictureBox1.Image = Nothing
TextBox1.Text = ""
Else
MessageBox.Show("File inesistente!!" , ""Test DB Image", _
MessageBoxButtons.OK, MessageBoxIcon.Exclamation, _
MessageBoxDefaultButton.Button1, _
MessageBoxOptions.DefaultDesktopOnly)
End If
End Sub
lunedì 19 gennaio 2009
Leggere un singolo valore da una query in VB.Net
domenica 18 gennaio 2009
Conversione di un immagine in un array di byte
venerdì 16 gennaio 2009
Validazione di indirizzo email con VB.Net e Regular Expression
Dim ValidateMail As String = "^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-z]{2,4}|[0-9]{1,3})(\]?)$"
Dim EmailAddress As String = "$mionome@dominio.com$"
If Regex.IsMatch(EmailAddress, ValidateMail) Then
...
Else
...
End If
giovedì 15 gennaio 2009
Mount di un'unità cd in un sistema SCO/Unix
cd /dev/cdrom
e dare un
ls
per verificare il nome. In questo esempio, supponiamo che il nome sia c0b0t6l0
Di conseguenza, il comando per effettuare il mount è:
mount -r -F cdfs /dev/cdrom/c0b0t6l0 /mnt/cdrom