L'account Administrator in WINDOWS 8

E' bene sapere che utilizzando l'account built-in "Administrator" in Windows 8:

  • non sarai in grado di eseguira alcuna Metro Apps compresa la Store app;
  • l'account Administrator è esclusivamente un account locale e non può essere cambiato in un account Microsoft.

 

Drive Vaccine: escludere una partizione dal restore

Drive Vaccine è un validissimo software di ripristino del PC pensato per proteggere i computer utilizzati da molti utenti garantendo un accesso ed un controllo del PC senza limiti ma ripristinandoli alla configurazione "base" al riavvio o alla disconnessione dell'utente. Per ulteriori informazioni consiglio di visitare il sito http://www.drivevaccine.com/

Una delle funzionalità più interessanti riguarda la possibilità di escludere dal processo di restore una partizione del PC: ciò può risultare estremamente utile per salvaguardare i propri files che altrimenti andrebbero persi. Tecnicamente tale processo viene indicato nel manulae del software come la creazion di un "exemption drive"

Tuttavia il manuale non indica esattamente come fare per creare un "exemption drive".

Per far ciò è necessario prima scaricare il software dal sito http://www.drivevaccine.com/ decomprimendo l'archivio.

Si deve quindi PRIMA creare un file di setup lanciando il file eseguibile situato nella cartella Drive Vaccine PC Restore Plus\Support.

La procedura guidata porterà alla creazione di un file che andrà salvato come setup.cfg nella cartella "Drive Vaccine PC Restore Plus".

Infine si deve eseguire il file Autorun.exe di Drive Vaccine situato nella root della cartella decompressa scegliendo l'opzione "ADVANCED".

E' da sottolineare come l'installazione offra la possibilità di salvaguardare tutte le impstazioni collegate all'account locale come la cartella "My document, Desktop " ecc... inserendole nell' "exemption drive" creato.

Menu verticale multi livello con jQuery (Multi Level slide accordion menu with jQuery)

In questo post discuterò dell'utilizzo "concreto" di uno dei puù citati menù accordion jQuery, descritto in molti articoli come ad esempio:
Da subito ci si renderà conto dell'impossibilità di utilizzare facilmente il menù in un sito web. Infatti il menù presenta 2 problemi: il primo è che non è possibile cambiare il valore di href negli item che possiedono sotto livelli ed il secondo è che anche cambiando il valore di href negli item figli, l'evento onclick su tali livelli sarà interdetto.
Per spiegarmi meglio, consideriamo la struttura originale:
<ul class="topnav">
	<li><a href="#" target="scriptbreaker">Home</a></li>
	<li><a href="#">JavaScript</a>
		<ul>
			 <li><a href="#">Cookies</a></li>
			 <li><a href="#">Events</a></li>
				<ul>
					<li><a href="#">CSS</a></li>
					<li><a href="#">JavaScript</a></li>
				</ul>
			</li>
			 <li><a href="#">Tabs</a></li>
		</ul>
	</li>
	<li><a href="#">Tutorials</a>
		<ul>
			 <li class="active"><a href="#">HTML</a></li>
			 <li><a href="#">CSS</a></li>
			 <li><a href="#">Java</a>
				<ul>
					<li><a href="#">JSP</a></li>
					<li><a href="#">JSF</a></li>
				</ul>
			</li>
			 <li><a href="#">Tabs</a></li>
		</ul>
	</li>
	<li><a href="#" target="_blank">Contact</a></li>
	<li><a href="#">Upload script</a></li>
</ul>
 Analizzando il file scriptbreaker-multiple-accordion-1.js necessario per il funzionamento del menù si osserva che affinché l'effetto accordion funzioni si deve lasciare inalterato il valore di href (href='#') negli item che possiedo sotto item mentre è possibile cambiare il valore di href negli altri item. Ad esempio:
<ul class="topnav">
	<li><a href="pagina1.html" target="scriptbreaker">Home</a></li>
	<li><a href="#">JavaScript</a>
		<ul>
			 <li><a href="pagina2.html">Cookies</a></li>
			 <li><a href="#">Events</a></li>
				<ul>
					<li><a href="pagina3.html">CSS</a></li>
					<li><a href="pagina4.html">JavaScript</a></li>
				</ul>
			</li>
			 <li><a href="pagina5.html">Tabs</a></li>
		</ul>
	</li>
	<li><a href="#">Tutorials</a>
		<ul>
			 <li class="active"><a href="pagina6.html">HTML</a></li>
			 <li><a href="pagina7.html">CSS</a></li>
			 <li><a href="#">Java</a>
				<ul>
					<li><a href="pagina8.html">JSP</a></li>
					<li><a href="pagina9.html">JSF</a></li>
				</ul>
			</li>
			 <li><a href="pagina10.html">Tabs</a></li>
		</ul>
	</li>
	<li><a href="pagina11.html" target="_blank">Contact</a></li>
	<li><a href="pagina12.html">Upload script</a></li>
</ul>
Se si effettua la modifica sopra riportata si osserverà che dopo aver cliccato su una voce di menù principale per espandere le sotto voci, i link sulle sotto voci non funzionano più!
Il problema è dovuto al file scriptbreaker-multiple-accordion-1.js ed in particolare alla seguente funzione:
if($(this).find("a:first-child").attr('href') == "#"){
 				    $(this).click(function () {
 				        return false;
                    });
 		  		}
che evita lo spostamento ad inizio pagina quando un item principale, con href="#", viene premuto. E' quindi necessario cancellare o commentare la seguente funzione ed assegnare all'evento onclick in valore "return false" direttamente nelle voci principali. Quindi:
<ul class="topnav">
	<li><a href="pagina1.html" target="scriptbreaker">Home</a></li>
	<li><a href="#" onclick='return false;'>JavaScript</a>
		<ul>
			 <li><a href="pagina2.html">Cookies</a></li>
			 <li onclick='return false;'><a href="#">Events</a></li>
				<ul>
					<li><a href="pagina3.html">CSS</a></li>
					<li><a href="pagina4.html">JavaScript</a></li>
				</ul>
			</li>
			 <li><a href="pagina5.html">Tabs</a></li>
		</ul>
	</li>
	<li><a href="#" onclick='return false;'>Tutorials</a>
		<ul>
			 <li class="active"><a href="pagina6.html">HTML</a></li>
			 <li><a href="pagina7.html">CSS</a></li>
			 <li onclick='return false;'><a href="#">Java</a>
				<ul>
					<li><a href="pagina8.html">JSP</a></li>
					<li><a href="pagina9.html">JSF</a></li>
				</ul>
			</li>
			 <li><a href="pagina10.html">Tabs</a></li>
		</ul>
	</li>
	<li><a href="pagina11.html" target="_blank">Contact</a></li>
	<li><a href="pagina12.html">Upload script</a></li>
</ul>
Riguardo invece il primo problema riscontrato, ovvero l'impossibilità di rendere attivi gli item con sotto item, ovvero gli item con valore href="#", una possibile soluzione è quella di duplicare la voce come sottovoce. Pertanto:
<ul class="topnav">
	<li><a href="pagina1.html" target="scriptbreaker">Home</a></li>
	<li><a href="#" onclick='return false;'>JavaScript</a>
		<ul>
			<li><a href="pagina13.html">JavaScript</a></li>
			 <li><a href="pagina2.html">Cookies</a></li>
			 <li onclick='return false;'><a href="#">Events</a></li>
				<ul>
					<li><a href="pagina14.html">Events</a></li>
					<li><a href="pagina3.html">CSS</a></li>
					<li><a href="pagina4.html">JavaScript</a></li>
				</ul>
			</li>
			 <li><a href="pagina5.html">Tabs</a></li>
		</ul>
	</li>
	<li><a href="#" onclick='return false;'>Tutorials</a>
		<ul>
			<li><a href="pagina15.html">Tutorials</a></li>
			 <li class="active"><a href="pagina6.html">HTML</a></li>
			 <li><a href="pagina7.html">CSS</a></li>
			 <li onclick='return false;'><a href="#">Java</a>
				<ul>
					<li><a href="pagina16.html">Java</a></li>
					<li><a href="pagina8.html">JSP</a></li>
					<li><a href="pagina9.html">JSF</a></li>
				</ul>
			</li>
			 <li><a href="pagina10.html">Tabs</a></li>
		</ul>
	</li>
	<li><a href="pagina11.html" target="_blank">Contact</a></li>
	<li><a href="pagina12.html">Upload script</a></li>
</ul>
 

Page.ResolveUrl in head runat="server"

Per utilizzare il metodo Page.ResolveUrl all'interno del tag head con l'attributo runat="server", è sufficiente utilizzare il simbolo # al posto dell' =, come di seguito riportato:
<head runat="server">
<link rel="stylesheet" type="text/css" href="<%#ResolveUrl("~/script/somefile.css")%>" />
</head>
e richiamando Page.Header.DataBind() nella Sub Page_Load()
Public Sub page_load()
        Page.Header.DataBind()
End Sub

ASP.NET Routing e Authorization

Ho utilizzato il routing asp.net per la gestione delle lingue in un sito web registrando nell'Application_Start del Global.asax:
routes.Add("en", New Route("en/{*path}", New GlobalizationRouteHandler(CultureInfo.GetCultureInfo("en"))))
routes.Add("it", New Route("it/{*path}", New GlobalizationRouteHandler(CultureInfo.GetCultureInfo("it-IT"))))
In questo modo una pagina in lingua inglese viene riscritta come http://www.miosito.com/it/pagina.aspx ed un pagina in lingua inglese come http://www.miosito.com/en/pagina.aspx.
Il problema di questa tecnica nasce nel momento in cui alcune pagine appartengono a direttori il cui accesso è limitato dall' "access rules" standard, aggiungendo quindi al direttorio un file web.config simile al seguente che permette l'accesso al solo ruolo "Admin":
<configuration>
    <system.web>
        <authorization>
            <allow roles="Admin" />
            <deny users="*" />
        </authorization>
    </system.web>
</configuration>
Pertanto l'url http://www.miosito.com/direttorio/pagina.aspx viene reindirizzato alla pagina di login a meno che l'utente non sia identificato ed appartenente al ruolo Admin.
Se però l'indirizzo diventa http://www.miosito.com/it/direttorio/pagina.aspx, ovvero l'indirizzo riscritto dal routing, la limitazione imposta nel web.config sembra non funzionare ed è possibile accedere alla pagina protetta!
Per prevenire questo fenomeno è sufficiente aggiungere al web.config principale del sito:
<location path="it/direttorio">
        <system.web>
            <authorization>
                <allow roles="Admin"/>
                <deny users="*" />
            </authorization>
        </system.web>
    </location>

    <location path="en/direttorio">
        <system.web>
            <authorization>
                <allow roles="Admin"/>
                <deny users="*" />
            </authorization>
        </system.web>
    </location>

Esecuzione di file SQL di grandi dimensioni in MS SQL SERVER

L'esecuzione di file SQL di grandi dimensioni mediante un procedimento di copia/incolla diretto del contenuto del file nella finestra di esecuzione delle query in MS SQL Server Management, non è possibile.

In questi casi è opportuno eseguire il seguente comando in uno script Windows o direttamente nel command line:

SQLCMD -S NOMESERVER\sqlexpress -d MyDatabase -E -i C:\Scripts\MyScriptFile.sql

modificandolo opportunamente.

ASP.NET Ajax client-side framework failed to load su

Improvvisamente e senza alcuna ragione, una mia applicazione su hostforlife.com ha smesso di funzionare correttamente.

La console degli errori di Firefox restituiva il seguente errore:

ASP.NET Ajax client-side framework failed to load
'Sys' is undefined.

esguendo pagine in cui era inserito <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"/>.

Ho risolto il problema aggiungendo nel web.config la seguente sezione:

<handlers> 
    <remove name="WebServiceHandlerFactory-Integrated"/> 
    <remove name="ScriptHandlerFactory"/> 
    <remove name="ScriptHandlerFactoryAppServices"/> 
    <remove name="ScriptResource"/> 
    <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
</handlers>

PaperCut: software per il controllo delle stampe

PaperCut è un software per la gestione delle stampe che può essere utile a qualsiasi organizzazione, corporate o educational, per ridurre il costo correlato alle operazioni di stampa.

PaperCut permette il controllo delle quote di stampa ed un monitoroggio e reportistica avanzata attraverso una semplice interfaccia web di amministrazione. PaperCut è disponibile in due versione: PaperCut NG (http://www.papercut.com) e PaperCut MF (http://www.papercut-mf.com).

Personalmente mi sono occupato dell'installazione, dell'amministrazione e delle personalizzazioni di PaperCut MF, la soluzione più evoluta di PaperCut che prevede anche l'utilizzo di software embedded e/o l'integrazione di hardware per il controllo di dispositivi multifunzione (MFD). In particolare ho implementato il controllo di multifunzioni Toshiba integrate con lettori Copicode-IP alfanumerici in una rete Windows 2008 Server con cliente Windows Vista PRO.

Questionari online con Google Docs

Google Docs permette di creare semplicemente e gratuitamente questionari online e di gestirne i risultati in tempo reale con la possibilità di esportare i dati nei più diffusi formati. Ogni questionario può essere pubblicato su qualsiasi pagina web, oppure fruito direttamente online da Google Docs.

Per creare un questionario è sufficiente accedere ai documenti di Google e creare un documento di tipo "Form". Sarà poi semplice creare domande a scelta multipla, testuali ecc..

piczard: Image Management Solution For ASP.NET

Circa 3 anni fa ho avuto la fortuna di acquistare un controllo per la manipolazione delle immagini denominato iLoad progettato e sviluppato da Sergio Turolla  un developer Italiano con la "d" maiuscola.

Ho utilizzato iLoad con successo in moltissimi progetti ottenendo risultati altrimenti raggiungibili con molte difficoltà. Quando mi è giunta la notizia che Radactive, la società di Sergio Turolla, avrebbe chiuso i battenti, sinceramente mi sono sentito sconfortato.

Poche volte infatti mi capita di essere estremamente soddisfatto di un acquisto e dell'assistenza fornita: iLoad è un controllo flessibile e robusto; Sergio Turolla è la persona più competente e disponibile cha io abbia mai incontrato.

Fortunatamente però Sergio Turolla ha pensato di offrire alla comunità di sviluppatori ASP.net un nuovo controllo che assomiglia molto nelle funzionalità a iLoad: sto parlando i piczard di cui è possibile scopire le funzionalità al sito http://piczard.com/.

Io sinceramente non l'ho ancora provato ma nel prossimo progetto abbandonerò il tanto amato iLoad per piczard e, conoscendo il suo creatore, sono certo che non me ne pentirò!