Thursday, October 30, 2008

Microsoft Second Ligth

. Thursday, October 30, 2008
2 commenti

In un'unica parola sbalorditivo:

Read More »»

Wednesday, October 29, 2008

Sessioni PDC 2008

. Wednesday, October 29, 2008
0 commenti

Per chi vuole fare una scorpacciata di video sulle varie novità ( Windows 7, Windows Azure, WF 4.0, Oslo, Developing con Microsoft Surface, Dublin e tantissimo altro) presentate alla Professional Developers Conference 2008:
PDC 2008 Video

Read More »»

Monday, October 27, 2008

Link .Net #7

. Monday, October 27, 2008
0 commenti

Settimo appuntamento con Link .Net

Encrypting web.config values

Passi necessari per poter criptare le sezioni del web.config. en

Best practices for creating websites in IIS 6.0

Omar AL Zabir mostra le operazioni fondamentali da compiere quando si crea un web site in IIS 6.0. en

Developing Custom Workflow Activities for Microsoft Dynamics CRM 4.0

Creare un custom activities da utilizzare nell'ultima versione CRM di Microsoft 4.0. en

Il controllo PasswordBox di WPF? Ecco come ti svelo la password e come la proteggo nel VisualTree

Un interessante post di Leonardo in cui viene mostrato come rendere più sicuro il controllo PasswordBox introdotto in Windows Presentation Foundation ( WPF). it

Crack.NET

Un tool di debug e di scripting che ci consente di accedere ai componenti interni di applicazioni WPF. en

Quake in Silverlight with 3D and Texture Mapping

Straordinario porting di uno dei più bei giochi della storia videoludica Quake usando Silverlight. en

Read More »»

Friday, October 24, 2008

Power Facebook

. Friday, October 24, 2008
0 commenti

Qualcuno forse si aspetterà di leggere un post sul fenomeno Facebook che impazza per il globo, sulla nuova mania, sul social network, sulle differenze con MySpace, ma non troverete nulla di tutto ciò smile_teeth; d'altronde sarei la persona meno indicata per argomentare su queste tematiche visto che ho anche cancellato il mio mai utilizzato account.
Sperando, quindi, di non deludere troppo, voglio segnalare a chi ne fa uso un'applicazione desktop che trovo estremamente innovativa ( come si può notare dall'immagine): Visual Sage.visual sage
Sviluppata con Windows Presentation Foundation  ( WPF) che permette di navigare/utilizzare Facebook direttamente dal vostro desktop, fornendovi l'accesso a molte delle sue funzioni: Facebook Notification, Poke, Profile, Photo browsing, Chat e Instant Messenger.
Se alle tante feature ci aggiungiamo che è completamente free nè risulta che almeno un giro di prova è "d'obbligo".
Concludo con i requisiti:
Windows XP SP2 e successivo oppure Windows Vista.

Share this post :

Read More »»

Tuesday, October 21, 2008

ViewstateSize

. Tuesday, October 21, 2008
0 commenti

Il programmatore Asp.Net spesso si trova a benedire il viewstate per l'indubbia comodità ma altre volte a maledirlo in quanto può essere causa di un calo sensibile delle prestazioni.
Per questo motivo è sempre bene tener d'occhio le dimensioni che può assumere e quindi disattivarlo laddove è possibile, perchè semplicemente non viene utilizzato o non è necessario.
Tempo fa avevo indicato nel post: Analisi Viewstate, una serie di tool utili all'analisi del campo hidden, aggiungo oggi un addon per Firefox che ci può aiutare nel compito di monitoraggio della dimensione del viewstate della pagina.
ViewstateSizeSi chiama ViewstateSize e potete scaricarlo dal seguente link:
http://kirkov.dk/viewstatesize/

Read More »»

Saturday, October 18, 2008

E-book free: Microsoft Robotics

. Saturday, October 18, 2008
0 commenti

ms_robotics Questo mese Microsoft Press mette a disposizione un altro e-book da poter scaricare gratuitamente previa registrazione.
Dopo Introducing Microsoft SQL Server 2008, questa volta è possibile leggere un overview su Microsoft Robotics.
Microsoft Roboticts Studio è un ambiente di sviluppo di software, basato su Windows, per applicazioni di robotica installabili su una vasta gamma di device.
Per chi è interessato all'e-book lo trovate qui.

Read More »»

Wednesday, October 15, 2008

Vicessitudini sul deployment web

. Wednesday, October 15, 2008
0 commenti

Chi sviluppa in Asp.Net 2.0 sa che è possibile lanciare una web application senza effettuare nessuna compilazione, in quanto di default ogni pagina viene compilata al "volo".
Premetto che in questo post non scriverò dei diversi svantaggi (di reali vantaggi sinceramente non sono ancora riuscito a trovarne) che presenta questa "metodologia" bensì di alcuni problemi con cui mi sono dovuto scontrare ultimamente.
Lo scenario è un grosso progetto web basato sull'architettura di DNN.
Per precompilare la parte web ho utilizzato l'add-in Web Deployment Project, il quale consente di compilare un sito web in uno ( alla Visual Studio .NET 2003) o più assembly.
Per avere una completa descrizione delle opzioni che offre questo add-in vi rimando al seguente articolo: Using Web Deployment Projects with Visual Studio 2005.
Inoltre per completezza è bene anche una lettura a VS 2005 Web Deployment Projects di Scott Guthrie.

Ho optato per un unico assembly, quindi ho lanciando il build.
Ho subito ottenuto un errore che di per sè non vuol dire praticamente nulla:
"aspnet_merge.exe" exited with code 1
Per avere un'informazione più utile bisogna modificare il livello di verbosity dell'output del MS-Build:
Tools > Options > Project and Solution > Build and Run
Dalla tendina MSBuild project build ouptut verbosity selezionate la voce Diagnostic o Detailed.
Ricordatevi di attivare la finestra di output:
View > Output
A questo punto è stato necessario modificare una serie di classi che presentavano namespace identici.
Questo provoca "collisioni" quando il tool cerca di generare un unico assembly
Primo consiglio quindi, è quello di definire sempre per le pagine un namespace in modo esplicito non facendo ricorso alla "tecnica" del copy & paste.

Il secondo passo è stato quello di copiare il progetto compilato nella web folder e lanciarlo, pensando di aver svolto il grosso del lavoro, ma invece ecco che spunta un altro errore:
Could not find a part of the Path XXX\App_GlogalResources\Locales.xml
Dopo una breve ricerca con "san google" trovo che una possibile soluzione consiste nel cancellare dalla root del progetto il file PrecompiledApp.config.
Erroneamente, senza pormi troppe domande, ho cancellato il suddetto file.

In effetti dopo questa semplice modifica si presenta un altro errore:
Could not find file 'c:\DotNetNuke.config'.
Debuggando è saltato fuori che alcune property dichiarate nell'assembly DotNetNuke non venivano settate.
Preciso che nel progetto queste property vengono settate nel file Global.asax, quindi mi sono chiesto perchè quest'ultimo non veniva in fase di esecuzione "analizzato".
Credo che il motivo sia collegato alla cancellazione del file PrecompiledApp.config.
Il file contiene il numero di versione del tool di precompilation ( 2 per Asp.Net 3.5) e se il sito è in grado di essere aggiornato:

   1: <precompiledApp version="2" updatable="true"/>

Tiene traccia delle opzioni di deploy dell'applicazione ed indica ad Asp.Net se deve compilare ogni file ad ogni richiesta:
Deploy
L'attributo updatable impostato a true è applicabile alle pagine .aspx, agli user control ( .ascx), master file ma non al file Global.asax che viene compilato ( bin\App_global.asax.compiled).

L'ultima cosa che mi rimaneva da risolvere era quella di consentire alla cartella App_GlobalResources di risiedere nella directory di distribuzione.
L'unico workaround che sono riuscito ad adottare è stato quello di modificare nel file Localization.vb dell'assembly DotNetNuke, situato in:
\Library\Components\Localization
la costante ApplicationResourceDirectory come segue:
   1: Public Const ApplicationResourceDirectory As String = "~/DNN_GlobalResources"
Come sempre la curiosità è la stessa, conoscere altre eventuali soluzioni da quelle appena descritte.

Read More »»

Monday, October 13, 2008

Link .Net #6

. Monday, October 13, 2008
0 commenti

Sesto appuntamento con Link .Net

Silverlight 2 RC0 + ADO.NET Data Service + Entity Framework

Pietro Brambati ci mostra come utilizzare gli ADO.NET Data Service e ADO.NET Entity Framework con Silverlight 2 RC0. it

Creating Workflows for Windows Sharepoint Services and MOSS2007

Un tutorial passo passo su come creare un flusso di lavoro di approvazione usando Workflow Foundation in Sharepoint 2007. en

Modifying Data with the ListView's EditItemTemplate

Matt Berseth ci mostra come usare l'eccezionale controllo ListView introdotto in ASP.NET 3.5. en

Geocoding with the Virtual Earth Web Service

Tutorial su come utilizzare i Web Services di Virtual Earth. en

Read More »»

Tuesday, October 7, 2008

Facebook e PowerShell

. Tuesday, October 7, 2008
0 commenti

Leggendo il titolo può risultare un pò strano il connubio, ma aspettate il resto del post per capire come ciò sia possibile. 
Il merito è di Facebook Organizer con cui è possibile connettersi a Facebook usando PowerShell e quindi visualizzare amici, gruppi, foto ecc.
Prima di procedere con l'importazione del Facebook pack verificate di aver installato sul sistema Windows PowerShell V2 (CTP2).
Nel caso sia presente una versione precedente allora sarà necessario avviare la procedura di disinstallazione:
pannello di controllo>installazione applicazione>checkare la voce mostra aggiornamenti
A questo punto potete munirvi dell'ultima versione di PowerGUI.
Dopo aver scaricato Facebook.dll e FacebookOrganizer.powerpack, lanciate PowerGUI in modalità STA (Single-threaded Apartment) tramite il comando -sta:
C:\Programmi\PowerGUI\Quest.PowerGUI.exe -sta
Adesso si può importare il pack.
Lanciando lo script del nodo connect situato nella cartella Facebook viene sollevata un'eccezione, ossia che l'assembly Facebook deve risiedere nella directory:
C:\Program Files\Coding4Fun\Facebook\Binaries\
Potete, a questo punto, creare il percorso sopra indicato oppure modificare lo script specificando un percorso differente.
Dopo avere effettuato l'autenticazione verranno creati i seguenti nodi figli:
FacebookPowerShell 

  • My Friends
  • My Albums
  • My Groups
  • My Events

Ora siete pronti ad interrogare Facebook tramite PowerShell.

Read More »»

Sunday, October 5, 2008

Tema per Activity

. Sunday, October 5, 2008
0 commenti

Quando si crea un custom activity è possibile implementare un tema che definisca l'aspetto grafico all'interno del visual designer modificando stili di background, di foreground, font, icone.
I passi da seguire sono essenzialmente tre.
Creare una classe che implementa il nuovo tema:

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Text;
   4: using System.Resources;
   5: using System.Reflection;
   6:  
   7: using System.Drawing;
   8: using System.Drawing.Drawing2D;
   9: using System.Workflow.ComponentModel.Design;
  10:  
  11: namespace SeqWF
  12: {
  13:   public class MyActivityTheme : ActivityDesignerTheme
  14:   {
  15:     public MyActivityTheme(WorkflowTheme theme)
  16:            : base(theme)
  17:     {
  18:       this.BackgroundStyle = LinearGradientMode.Vertical;
  19:       this.BackColorStart = Color.Orange;
  20:       this.BackColorEnd = Color.White;
  21:  
  22:       this.BorderColor = Color.Black;
  23:       this.BorderStyle = DashStyle.Solid;
  24:  
  25:       this.ForeColor = Color.Black;
  26:  
  27:       ResourceManager rm = new ResourceManager( "SeqWF.MyResource",
  28:                            Assembly.GetExecutingAssembly());
  29:       this.DesignerImagePath = rm.GetString("IconeSave");
  30:     }
  31:   }
  32: }

Implementare un nuovo designer per l'activity:

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Text;
   4:  
   5: using System.Workflow.ComponentModel;
   6: using System.Workflow.ComponentModel.Design;
   7:  
   8: namespace SeqWF
   9: {
  10:   [ActivityDesignerTheme(typeof(MyActivityTheme))]
  11:   public class MyActivityDesigner : ActivityDesigner
  12:   {
  13:   }
  14: }

Attribuire il nuovo designer al custom activity:

   1: using System;
   2: using System.Workflow.ComponentModel;
   3: using System.Workflow.ComponentModel.Design;
   4:  
   5: namespace SeqWF
   6: {    
   7:   [Designer(typeof( MyActivityDesigner))]
   8:   public partial class PersistActivity: Activity
   9:   {
  10:   }
  11: }

Ed ecco il risultato finale:
themeActivity 
La classe base di tutti i designer è ActivityDesigner, ma Workflow Foundation presenta altre classi di designer specifiche per particolari tipi di activity, per esempio CompositeActivityDesigner dalla quale ereditano le classi ParallelActivityDesigner e SequentialActivityDesigner.
Nel caso di un custom activity di tipo composite la classe che si occuperà di definire il tema dovrà ereditare da CompositeDesignerTheme.
Quest'ultima presenta diverse property in più rispetto alla classe ActivityDesignerTheme come per esempio poter indicare informazioni circa lo stile del connector tramite ConnectorStartCap  e ConnectorEndCap.
Per concludere un suggerimento:

nel caso in cui il designer non venga aggiornato con il tema creato allora potete provare a cliccare tasto destro sull'activity, selezionare la voce "Select Custom Theme" e cliccare su "OK":

themeActivity1

Read More »»