Sunday, July 29, 2007

Debugging VS 2005 con Wii

. Sunday, July 29, 2007
0 commenti

...senza parole!!

Read More »»

Hide Column di una Datagrid

.
0 commenti

Spesso si ha l'esigenza di nascondere del controllo Datagrid una determinata colonna.
Lato server è possibile accedere alla collection DataGridColumnCollection e settare la property Visible a false:

myDatagrid.Columns[0].Visible = false;

E' possibile solo se abbiamo settato la proprietà AutoGenerateColumns a false.
Nel caso invece tale proprietà è impostata a true si può implementare l'evento ItemDataBound e accedere alla collection di TableCell:
private void myDatagrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
e.Item.Cells[
0].Visible = false;
}

Un altro modo per ottenere lo stesso risultato è usare un semplice script javascript:
<script language="javascript">
var table
= document.getElementById('myDatagrid');
for (var r = 0; r<table.rows.length; r++)
table
.rows[r].cells[0].style.display = 'none';
</script>

Read More »»

Friday, July 27, 2007

Microsoft Health CUI

. Friday, July 27, 2007
0 commenti

Recentemente Microsoft ha rilasciato le Design Guidance e un set di controlli, sia per Web che per Windows, di nuova generazione da usare in applicazioni mediche.
Il progetto si trova su Codeplex, mentre per avere un overview basta andare sul sito Microsoft Health Common User Interface.

Read More »»

Wednesday, July 25, 2007

Gatineau

. Wednesday, July 25, 2007
0 commenti

Cos'è Gatineau?. E' il nome in codice della risposta di Microsoft a Google Analytics, un tool di analisi web. Il tutto è iniziato con l'acquisizione della società Deepmetrix nel maggio del 2006, da quel momento Microsoft ha iniziato a lavorare ad un servizio statistico in grado di constrastare quello di Google. 
La fase di alpha test dovrebbe essere alle porte, staremo a vedere.
Alcune immagini:




Fonte: Ian Thomas

Read More »»

Sunday, July 22, 2007

C# Programming Tools

. Sunday, July 22, 2007
0 commenti

Una lista di link di diversi tools, framework, class libraries divisi per categoria( Regular Expression, Obfuscators, Refactoring, Testing ecc ).

Read More »»

Saturday, July 21, 2007

DisabledItems in Word

. Saturday, July 21, 2007
0 commenti

Quando si cerca di aprire un file di Office e compare l'errore:
"Si è verificato un grave errore l'ultima volta che è stato aperto 'nome file'. Continuare?"
significa che tale file è stato contrassegnato come danneggiato o disattivato da Office.
Per tale motivo il file viene incluso nella lista degli Elementi Disattivati:



A questo punto si potrebbe procedere attivando gli elementi visualizzati nella finestra tramite l'apposito pulsante(Attiva), oppure si può individuare la chiave che viene generata automaticamente nel registry e cancellarla.


E' possibile interagire con il registry attraverso la classe Registry del namespace:

using Microsoft.Win32;

RegistryKey key
= Registry.CurrentUser.OpenSubKey( @"Software\Microsoft\Office\11.0\Word\Resiliency", true);
if( key != null)
{
if( key.SubKeyCount > 0)
key.DeleteSubKeyTree(
"DisabledItems");
key.Close();
}


Ciò che facciamo è ottenere la subkey di Resiliency, se esiste allora effettuiamo la cancellazione.
A questo punto possiamo riprovare ad aprire il file.

Read More »»

Tuesday, July 17, 2007

Lista Package, Stored Procedures, Parametri

. Tuesday, July 17, 2007
0 commenti

In Oracle è possibile tramite query conoscere la lista dei package:

SELECT object_name FROM user_objects WHERE object_type = 'PACKAGE'


oppure dato un package la lista delle stored procedures contenute:

SELECT OBJECT_NAME, PROCEDURE_NAME FROM USER_PROCEDURES WHERE OBJECT_NAME = 'name package'


infine data una stored procedure è possibile conoscere il nome dei parametri, il tipo e se sono in ingresso o uscita:

SELECT * FROM USER_ARGUMENTS WHERE PACKAGE_NAME = 'name package' AND OBJECT_NAME = 'name stored procedures'

Read More »»

Sunday, July 15, 2007

Microsoft demos from WPC

. Sunday, July 15, 2007
0 commenti

Diverse demo su tecnologie come:

  • Microsoft Surface,
  • Photosynth,
  • Windows Live per Windows Mobile,
  • Microsoft RoundTable,
  • CRM,
  • Microsoft SilverLight,
  • Windows Server 2008,
  • Windows Automotive.d

...da non perdere

Fonte: Microsoft demos per WPC

Read More »»

Saturday, July 14, 2007

Bugtracker.NET

. Saturday, July 14, 2007
0 commenti

Bugtracker.NET è un'applicazione web, open source, scritta in ASP.Net ( entrando così nelle mie grazie ), C# e Microsoft Sql Server, utile per il tracciamento dei bug.
Presenta una serie di feature interessanti tra cui una sorta di ACL sui progetti, in modo da controllare chi può vedere o modificare i relativi bug, oppure creare delle query ad hoc per effettuare dei filtri personalizzati, o un'utility integrata che permette di generare dei screenshot da postare insieme alla descrizione dei bug.
Per maggiori dettagli qui.

Read More »»

General network error. Check your network documentation.

.
0 commenti

Da qualche settimana randomicamente compare nei logs di una windows application l'errore:
General network error. Check your network documentation.
Dopo una breve ricerca su google ho visto che in molti hanno risolto inserendo nella stringa di connessione:
POOLING=FALSE
(Ovviamente in questo modo non è possibile sfruttare i vantaggi del pooling di connessione)
Dopo una settimana di test posso dire anch'io che tale fix sembra funzionare, anche se non mi è chiara ancora la causa dell'errore.

Read More »»

Wednesday, July 11, 2007

Cheat Sheets

. Wednesday, July 11, 2007
0 commenti

Una raccolta veramente interessante di Cheat Sheets, dalla formattazione di stringhe, alle regular expression, ai css e tanto altro. Da stampare.

Read More »»

Monday, July 9, 2007

Photosynth

. Monday, July 9, 2007
0 commenti

Per chi come me si è fatto sfuggire la possibilità di testare Photosynth può rimediare andando sul sito Microsoft Live Labs.
E' possibile provare diversi ambienti che il team ha messo a disposizone:

  • Gyeongbokgung, palazzo nel sud della Corea
  • Piazza San Pietro
  • Grassi Lakes, Canada
  • Piazza San Marco
  • Gary Faigin Studio, Art Studio a Seattle

Il tutto usando semplicemente il proprio browser(Explorer 6.0 e 7.0, Firefox 1.5 e 2.0). Impressionante.

Read More »»

Upload file via FTP

.
11 commenti

In diversi lavori in Asp.Net 1.1 ho fatto uso di una libreria: EdtFTPNet, per superare l'ostacolo di upload di file tramite FTP. Ma il Framework 2.0 cosa offre?
Sono state introdotte due nuove classi per consentire l'uso del protocollo FTP, cioè FtpWebRequest che deriva da WebRequest e FtpWebResponse che invece deriva da WebResponse.
Il codice che ci consente di eseguire l'upload in un file è veramente molto semplice:

using System.IO;
using System.Net;
try
{
string nameFile = FileUpload.PostedFile.FileName;
//Apro una connessione
FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create( System.IO.Path.Combine( "url ftp", nameFile));
//Aggiungo le credenziali
ftp.Credentials = new NetworkCredential( "username", "password");
//Indico il comando di uplaod
ftp.Method = WebRequestMethods.Ftp.UploadFile;
byte[] arrayFile = new byte[ FileUpload.PostedFile.ContentLength];
Stream read
= FileUpload.PostedFile.InputStream;
//Riempio l'array
read.Read( arrayFile, 0, FileUpload.PostedFile.ContentLength);

Stream w
= ftp.GetRequestStream();
//Scrivo il contenuto dell'array
w.Write(arrayFile, 0, arrayFile.Length);
w.Close();
}
catch (Exception exc)
{
//TODO: log errore
string error = exc.Message;
}


( FileUpload è l'id del nuovo webControl aggiunto in ASP.Net 2.0 che permette di selezionare un file da inviare ad un server )
Da evidenziare la possibilità di indicare tutta una serie di comandi FTP, nel caso specifico abbiamo fatto uso dell'UploadFile ma la scelta è ampia:

  • AppendFile
  • DownloadFile
  • DeleteFile
  • GetDateTimestamp
  • GetFileSize
  • ListDirectoryDetails
  • ListDirectory
  • MakeDirectory
  • PrintWorkingDirectory
  • Rename
  • RemoveDirectory
  • UploadFile
  • UploadFileWithUniqueName

Read More »»

Sunday, July 8, 2007

Ongopongo

. Sunday, July 8, 2007
0 commenti

Si tratta di un sito in cui è possibile condividere mappe personali create con Google Maps.
Si trova di ogni, dai posti da visitare in una determinata città, oppure i posti in cui andare a mangiare se si lavora in Vodafone Milano, oppure gli Hard Rock Cafes sparsi sul globo e tanto altro. Il tipico sito in cui perdere un pò di tempo :D.

Read More »»

Saturday, July 7, 2007

Silverlight ed Opera

. Saturday, July 7, 2007
0 commenti

Il browser Opera versione 9.22 beta supporta la nuova tecnologia Microsoft Silverlight. Un'ottima notizia direi.
Fonte: Opera Desktop Team

Read More »»

LogMeIn

.
0 commenti

LogMeIn Pro è un servizio di accesso remoto veramente ben fatto.
In pratica permette dopo l'installazione di un active-x di circa 8 mega di poter controllare attraverso il browser, in totale sicurezza, i propri pc.
La versione free presenta ovviamente delle limitazioni, per esempio non è possibile il traferimento di file da pc a pc oppure la possibilità di stampare automaticamente i file remoti in locale, ad ogni modo un servizio che trovo utilissimo.

Read More »»

Friday, July 6, 2007

CMS Matrix

. Friday, July 6, 2007
1 commenti

CMS Matrix è un sito che raccoglie quasi 800 CMS scritti in diversi linguaggi, open source o commerciali, ma cosa più importante permette di metterli a confronto evidenziando in diverse categorie( System Requirements, Security, Support, Ease of Use, Performance, Management, Interoperability, Flexibility, Built-in Applications, Commerce ) le varie feature.

Read More »»

Datagrid con scroll verticale

.
0 commenti

Per ottenere in una web application una datagrid con scroll verticale basta un semplice div, ma procediamo per ordine.
Come primo passo bisogna creare l'header della datagrid.
Supponiamo che quest'ultima sia costituita da tre colonne, l'header diventa banalmente una tabella con tre celle:

<table cellSpacing="0" cellPadding="0" width="600" border="1">
<tr>
<td width="200">LastName</td>
<td width="200">Title</td>
<td width="200">City</td>
</tr>
</table>

Adesso possiamo disattivare l'header della datagrid deselezionando la proprietà "Mostra Intestazione".
Inoltre come si può notare le celle hanno una dimensione fissa di 200px, di conseguenza per ottenere un perfetto allineamento anche le colonne della datagrid devono avere la stessa caratteristica.
Ci sono due strade per ottenere questo allineamento, lavorare con le Template Column oppure se la proprietà "AutoGenerateColumns" è impostata su true, possiamo nell'evento ItemDataBound:
private void dgrScroll_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)

{

foreach( TableCell cell in e.Item.Cells)

cell.Width
= 200;

}


Come secondo ed ultimo passo incapsulare la datagrid in un div:
<DIV style="OVERFLOW: auto; WIDTH: 613px; HEIGHT: 300px; TEXT-ALIGN: left">

<asp:datagrid id="dgrScroll" runat="server" CellPadding="0" CellSpacing="0" BorderWidth="1px"

AutoGenerateColumns
="true" Width="600px">

</asp:datagrid></DIV>

Il div presenta uno stile in linea con larghezza fissa impostata a 613, cioè 600 è la dimensione fissa dell'header e della datagrid e 13 sono i pixel della scrollbar laterale.
Inoltre lo stile presenta la proprietà OVERFLOW, il quale valore indicherà al browser come comportarsi nel renderizzare la datagrid nel caso in cui le impostazioni width ed height non consentono la totale visualizzazione. In questo modo nel momento in cui la nostra datagrid supera l'altezza di 300 px allora apparirà la scrollbar verticale.
Questo è il risultato finale:

Read More »»

Wednesday, July 4, 2007

Importare contatti da Outlook 2003

. Wednesday, July 4, 2007
0 commenti

L'esempio fa uso di un assembly PIA( Primary Interop Assemblies ) Microsoft.Office.Interop.Outlook. Si tratta di un wrappper che ci permette di scrivere applicazioni in .NET e di comunicare con codice unmanaged dei componenti COM di Microsoft Office.
Supponiamo di voler mostrare in una datagrid i seguenti contatti:

Nel caso sulla vostra macchina è installato Office 2003 basterà referenziare l'assembly dalla tab COM:

A questo punto possiamo aggiungere le using:


using System.Reflection;
using Outlook = Microsoft.Office.Interop.Outlook;

Il metodo di estrazione e bind dei contatti:

//Istanziando la classe viene creato il processo di Outlook
Outlook.Application outlook = new Outlook.Application();
Outlook.NameSpace oNS
= outlook.GetNamespace( "mapi");
DataRow row;
DataTable dt
= new DataTable();
dt.Columns.Add(
new DataColumn( "Nome", typeof( string)));
dt.Columns.Add(
new DataColumn( "Posizione", typeof( string)));
dt.Columns.Add(
new DataColumn( "Società", typeof( string)));
dt.Columns.Add(
new DataColumn( "Reparto", typeof( string)));
dt.Columns.Add(
new DataColumn( "Abitazione", typeof( string)));
try
{
oNS.Logon( Missing.Value, Missing.Value,
true, true);
Outlook.MAPIFolder oContacts
= oNS.GetDefaultFolder( Outlook.OlDefaultFolders.olFolderContacts);
Outlook.Items oItems
= oContacts.Items;
Outlook.ContactItem oCi
= null;

oCi
= (Outlook.ContactItem)oItems.GetFirst();
while ( oCi != null)
{
row
= dt.NewRow();
row[
"Nome"] = oCi.FirstName;
row[
"Posizione"] = oCi.JobTitle;
row[
"Società"] = oCi.CompanyName;
row[
"Reparto"] = oCi.Department;
row[
"Abitazione"] = oCi.MailingAddressStreet;
dt.Rows.Add( row);

oCi
= ( Outlook.ContactItem)oItems.GetNext();
}

// Log off
oNS.Logoff();
oNS
= null;
// Release objects
oCi = null;
oItems
= null;
oContacts
= null;
//Bind datagrid
dgContacts.DataSource = dt;
}
catch( Exception exc)
{
//TODO: log error
string error = exc.Message;
}
finally
{
if( outlook != null)
{
outlook.Quit();
outlook
= null;
}
GC.Collect();
GC.WaitForPendingFinalizers();
}
Tra le cose importanti da sottolinare:
1)se si sostituisce il while con il codice:

foreach( Outlook.ContactItem oCi in oContacts.Items)
{
row
= dt.NewRow();
row[
"Nome"] = oCi.FirstName;
row[
"Posizione"] = oCi.JobTitle;
row[
"Società"] = oCi.CompanyName;
row[
"Reparto"] = oCi.Department;
row[
"Abitazione"] = oCi.MailingAddressStreet;
dt.Rows.Add( row);
}

accade una cosa strana le risorse non vengono rilasciate, di conseguenza il processo di Outlook non viene chiuso,
2)non tutte le property possono essere lette. Questo per ragioni di sicurezza, infatti se per esempio cercate di leggere la property Email1Address compare un avviso:
"Un programma sta tentando di accedere agli indirizzi di posta elettronica memorizzati in Outlook. Consentire l'operazione? Se l'operazione non è prevista potrebbe trattarsi di un virus, pertanto scegliere No"(A program is trying to access email addresses you have stored in outlook. Do you want to allow this?)
Quest'ultimo è uno dei meccanismi di Outlook per evitare che codice non autorizzato possa essere eseguito. E' presente in tutte le versioni a partire da Outlook 2000 con SP3 ed ovviamente non si può disattivare.
Esistono delle library di terze parti per ovviare come per esempio Outlook Redemption, oppure se la posta è gestita da Exchange si può vedere Outlook E-MAil Security Update.

Read More »»

Tuesday, July 3, 2007

LLOOGG inviti

. Tuesday, July 3, 2007
2 commenti

Se qualcuno è interessato ho 4 inviti per LLOOGG. Basta chiedere e vi sarà dato!!

Read More »»

Sunday, July 1, 2007

Microsoft Windows MultiPoint Software Development Kit

. Sunday, July 1, 2007
0 commenti

Chi non ha ancora visto Surface?
L'ormai famoso schermo da 30 pollici touchescreen prodotto dalla Microsoft....penso proprio nessuno. Ma non tutti sanno che è possibile scaricare il kit di sviluppo:
con cui generare programmi che permettono l'uso di mouse multipli su una singola macchina(non sarà la stessa cosa di surface però..)
Come si può intuire requisito fondamentale oltre al Framework 3.0 e VS 2005, due mouse USB.
Devo farci assolutamente un giro!

Read More »»

Pensavo meglio....

.
0 commenti

63%How Addicted to Blogging Are You?

Mingle2 - Online Dating

Read More »»

Second Life all'italiana?

.
0 commenti

In ItalCity3D crei il tuo avatar con cui chattare o passeggiare per le vie della città virtuale. Con la moneta locale Euro City puoi acquistare il terreno su cui costruire la casa(a disposizione ci sono 369.263 oggetti e 10.810 textures) ma soprattutto come in ogni società che si rispetti pagare le tasse(ma non basta già pagarle nella vita reale?).
Fonte: La voce d'Italia

Read More »»

HTC Touch

.
0 commenti

Nuovo modello per la casa taiwanese, si tratta di un nuovo smartphone che include il meglio delle soluzioni tecnologiche presenti oggi sul mercato.

La feature che spicca di più è sicuramente lo schermo tattile facile da utilizzare e un'interfaccia utente estremamente semplice. Permette di passare da un menù all'altro sfiorando il display touchscreen con le dita.(anticipando così l'atteso iPhone di casa Apple)
Windows mobile 6, Tri-band GSM con GPRS/EDGE, stereo Bluetooth 2.0 e Wi-Fi, 200 ore di stand-by e 5 ore di autonomia durante l'uso, fotocamera da 2 megapixel CMOS sono soltanto alcune delle caratteristiche del nuovo smartphone, da ammirare QUI.
Unica pecca la mancanza come nel caso del modello HTC S-710 dell'UMTS.

Read More »»