Articoli per la categoria 'Tecnici'

Json e carattere “+”

Basta utilizzare la funzione javascript

encodeURIComponent

Calcolare l’Hash di una lista (Extension Method)

public static class Extensions
{
	public static int CalculateHash<T>(this List<T> myList) where T : IEquatable<T>
	{
	if (myList.Count == 0) return 0;
		unchecked
		{
			return myList.Aggregate(0, (current, v) => (current ^ 397)*v.GetHashCode());
		}
	}
}

System.ApplicationException : For property ‘CreationDate’ expected ’19/07/2010 17:27:17′ of type ‘System.DateTime’ but got ’19/07/2010 17:27:17′ of type ‘System.DateTime’

Se eseguendo un test con NUnit si riceve questo errore è probabile che bisogna utilizzare DateTime.Today invece di DateTime.Now.

Test con Rhino Mocks

MockRepository mockRepository = new MockRepository();
var logRepository = mockRepository.StrictMock<ILogRepository>();
//la classe da testare ha un construttore che accetta una interfaccia
LogController sut = new LogController(logRepository);
 
string returned =....
 
//Mock metodo GetLog; mi aspetto che venga chiamato una sola volta
logRepository.Expect(t => t.GetLog(eventualiParametri)).Return(returned ).Repeat.Once();
mockRepository.ReplayAll();
 
string expected = sut.MetodoDaTestare();
 
Assert.AreEqual(expected, actual.Data);
 
logRepository.VerifyAllExpectations();

Rendere un assembly visibile ad un altro

Nel file AssemblyInfo.cs dell’assemby che deve essere visibile inserire la seguente riga di codice:

[assembly: InternalsVisibleTo("MioNamespace.NomeAssembly")]

Adesso MioNamespace.NomeAssembly dovrebbe poter “vedere” i membri dichiarati internal.

Installare language pack italiano per Windows 7 Professional

Dopo aver installato Windows 7 Professional ho deciso di installare il “language pack italian”.

Ho letto diverse guide in cui cui veniva spiegato come effettuare l’installazione della nuova lingua, ma si sono rivelate un flop. Il language pack deve comparire tra gli aggiornamenti consigliati. Non chiedetemi il perchè, ma questo  non è accaduto.

Dopo aver scaricato il file iso (da MSDN Academic Alliance) contenente language pack in italiano, ho estratto il file “lp.cab” (circa 40 MB) contenuto nella cartella “it-it”.

Successivamente, basta lanciare la finestra di comando con privilegi di amministratore (Start->nel box di ricerca scrivere “cmd” e premere Ctrl+Shift+Invio) copiare e incollare la seguente linea:

dism /online /add-package /packagepath:d:\langpacks\It-It\lp.cab

Una volta ottenuto il messaggio di successo dell’installazione, apriamo l’editor del registro di sistema, tramite il comando regedit, e cerchiamo e cancelliamo la chiave:

 \HKLM\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\en-US.

Riavviamo il computer e avremo Windows 7 Professional in italiano.

Spero serva a qualcun’altro.

Generare una sitemap XML

Esistono molti tools/script/programmi che permettono di creare una sitemap per i motori di ricerca, ma veramente pochi (mi riferisco a quelli scaricabili gratuitamente) sono validi…

Vi faccio qualche esempio:

Leggi il resto dell´articolo »

Installare Apache 2.2,PHP 5.2, MySql 5.1 su Windows XP

L’installazione di Apache 2.2 , PHP 5.2, MySql 5.1 è indispensabile per poter testare in locale qualsiasi script php.

In questo articolo tratterò l’installazione e configurazione su Windows XP.

Prima di tutto è necessario scaricare:

  • MySql (nome del file mysql-essential-5.1.32-win32.msi)
  • Apache 2.2 (nome del file apache_2.2.11-win32-x86-no_ssl.msi)
  • PHP 5.2.9 (nome del file php-5.2.9-1-Win32.zip NOTA: non è il pacchetto di installazione!)

Avviamo il file di installazione di Apache. Dopo aver accettato i termini di utilizzo, apparirà una finestra in cui dovremo compilare i seguenti campi:

  • Network Domain -> localhost
  • Server Name -> localhost.local
  • Administrator’s Email Address -> admin@localhost.local
  • Selezionare l’opzione “for All Users, on port 80, as a Service”
  • Premere il tasto “Avanti”

Nella finestra successiva ci verrà chiesto se eseguire una installazione tipica o personalizzata; io ho scelto quella personalizzata e ho selezionato tutti i componenti.

Se il procedimento è andato  a buon fine dovreste vedere nella tray bar l’icona:

apache_icon_tray

Inoltre digitando nella barra degli indirizzi il link http://localhost/ dovrebbe apparire il seguente testo:

It works!

Adesso procediamo all’installazione del php engine versione 5.2.

Volutamente non abbiamo scaricato il pacchetto di installazione; per esperienza personale consiglio di eseguire la procedura di installazione manualmente.

Decomprimiamo l’archivio php-5.2.9-1-Win32.zip in c:\php.

In c:\php cerchiamo il file php5ts.dll e spostiamolo in c:\windows\system32.

Supponendo di aver installato Apache in C:\Programmi\Apache Software Foundation\Apache2.2 apriamo il file C:\Programmi\Apache Software Foundation\Apache2.2\conf\httpd.conf con un normalissimo editor testuale (il blocco note va più che bene).

Osservando il contenuto del file, notiamo una lunga lista direttive che iniziano con la parola “LoadModule” oppure con “#LoadModule”; alla fine di questo elenco (dovrebbe essere la riga 127)  incolliamo le 3 righe seguenti:

LoadModule php5_module “c:/php/php5apache2_2.dll”
AddType application/x-httpd-php .php
PHPIniDir “C:/php”

Ovviamente se avete utilizzato percorsi diversi, adattate le righe precedenti.

Dimenticavamo di configurare il php engine…  per far ciò basta rinominare il file c:\php\php.ini-dist in php.ini .

Adesso non ci resta che riavviare Apache (click col tasto destro sull’icona nella tray bar -> “Open Apache Monitor” -> “Restart”).

Adesso testiamo se tutto è andato come speravamo:

  • Aprire la cartella C:\Programmi\Apache Software Foundation\Apache2.2\htdocs;
  • Creare un file vuoto test.php
  • Copiare e incollare la seguente istruzione: <?php  phpinfo();  ?>
  • Digitare nalla barra degli indirizzi del browser l’indirizzo http://localhost/test.php

Dovrebbe apparire una pagina contenente tutte le informazioni su Apache, PHP e i moduli caricati.

Ora passiamo all’installazione di MySql 5.1.

Avviamo il file di installazione mysql-essential-5.1.32-win32.msi e scegliamo una installazione “tipica”.

Clicchiamo un paio di volte sul tasto “Next” fino a visualizzare una finestra in cui ci viene proposto di “configurare il Server MySql adesso”; selezioniamo l’opzione e premiamo il tasto “Finish”.

Una volta visualizzata la procedura guidata, selezioniamo l’opzione “Standard Configuration”. Nella finestra successiva compiliamo i seguenti campi:

  • Selezionare l’opzione “Install as Wndows Service”;
  • “Service Name: MySql”
  • “Launch the MySql Server Automatically”
  • Premere il tast “Next>”

Adesso dobbiamo configurare il nostro account:

  • Selezioniamo l’opzione “Modify Security Settings”:
  • “New root password:  password” (NOTA: ho scelto una password a caso, ovviamente dovete scegliere la password che più vi aggrada);
  • “Confirm:password”;
  • Deselezionare l’opzione “Enable root access from remote machines”;
  • Premere il tasto “Next>” e poi “Execute”.

L’installazione di MySql è completata.

Non ci resta che installare l’estensione mysqli; i passi da eseguire sono i seguenti:

  • spostare il file c:\php\libmysql.dll in c:\windows\system32\
  • aprire il file c:\php\php.ini con il solito editor testuale, cercare la riga extension_dir = “./” e sostituirla con extension_dir = “c:\php\ext”
  • cercare la riga ;extension=php_mysqli.dll e sostituirala con extension=php_mysqli.dll per attivare l’estensione mysqli;
  • cercare la riga ;extension=php_mysql.dll e sostituirala con extension=php_mysql.dll per attivare l’estensione mysql;

NOTA: Le estensioni mysql e mysqli possono essere entrambe abilitate.

A questo punto per verificare il tutto basta riavviare apache e aggiornare la pagina http://localhost/test.php; Scorrendo la pagina, ad un certo punto, dovrebbero comparire le informazioni sulla/e estensioni MySqli e/o MySql.

I file php.ini e httpd.conf contengono diverse direttive per poter adattare secondo le nostre esigenze il php engine e il web server Apache; entrambi i file contengono commenti a sufficienza, per cui il mio consiglio è di dargli almeno uno sguardo.

Spero di esserti stato di aiuto.

Shadows Simulator – Simulatore di ombre per impianto fotovoltaico

Un pò di tempo fà mi è stato chiesto di realizzare un programma che data una determinata località geografica (latitudine e longitudine) e un preciso intervallo temporale, riuscisse a simulare le ombre generate da edifici, alberi o comunque da generici ostacoli collocati attorno a un pannello fotovoltaico.

Leggi il resto dell´articolo »