venerdì, novembre 20, 2009

Strange problem with certificates in mono (unsolved...)

I was testing GDocBackup on OpenSuse. GDocbackup runs on Win but also on Linux + Mono.
As many other times I got an error about authentication. No problem. The problem is related to SSL Certificates. GDocBackup authenticates through an https connetion. But Mono is shipped without many root certificates. So the error.
No problem: the solution is easy. Using mozroot I download all the root certificate. This solution has always worked. But today on OpenSuse I continue to get the error. :(
After a lot of tests and search it seems to be a problem with Mono. Some root certificates as not considered valid. One of them is the root certificate "on top" of www.google.com (the CA is Equifax certificate authority).

A fast solution: add an "accept all" CertificatePolicy in GDocBackup.
...
ServicePointManager.CertificatePolicy = new ByPassCheckCert();
...


private class ByPassCheckCert : ICertificatePolicy
{
public bool CheckValidationResult(
ServicePoint srvPoint,
System.Security.Cryptography.X509Certificates.X509Certificate certificate,
WebRequest request,
int certificateProblem)
{
return true;
}
}

Using this policy all https certificates is considered valid.

A note: ServicePointManager.CertificatePolicy is deprecated in NET 2.0. You should use ServicePointManager.ServerCertificateValidationCallback. But Mono does not suport it. ("to be implemented" )

This is not a good day.... :(

Some links:
  • http://code.google.com/p/google-gdata/issues/detail?id=238&can=1&q=certificate
  • https://bugzilla.novell.com/show_bug.cgi?id=495690
  • http://www.mail-archive.com/mono-list@lists.ximian.com/msg30929.html
  • https://bugzilla.novell.com/show_bug.cgi?id=495916

sabato, ottobre 31, 2009

Microsoft Azure e Google App Engine

E' un po' di tempo che faccio test su Microsoft Azure e su Google App Engine. Devo dire che entrambe sono molto potenti ed hanno funzionalità molto interessanti.
A questo punto sorge una domanda: meglio la prima o la seconda? Me lo sono chiesto più volte. Non ho ancora trovato una risposta definitivia. Probabilmente la risposta è la solita: "dipende" :)

Lavorando quasi esclusivamente su .NET, mi trovo molto bene su Azure dal punto di vista dello sviluppo. Tutto è molto famigliare e l'ambiente di sviluppo locale che simula l'infrastruttura Azure, è molto ben integrato in Visual Studio.
Anche App Engine ha un ottimo ambiene di sviluppo locale: Eclipse + un plugin con tanto di simulatore locale dell'infrastruttura di Google App Engine.
Ovviamente la differenza è che su Azure posso usare Asp.net mentre su App Engine mi devo "accontentare" di Jsp e Servlet. Non escludo che si possano usare librerie più avanzate ma la produttività/consistenza/facilità d'uso di Asp.net rispstto a Jsp/Servlet è enorme.
Quindi, in definitiva, meglio Azure dal punto di vista dello sviluppo.

Ma non c'è solo sviluppo: dopo c'è il deploy e la gestione dell'applicazione "live". E qui App Engine è molto più avanti. L'interfaccia di gestione via web è molto veloce e piena di informazioni di stato: richieste/secondo, log in tempo reale, visualizzatore di dati, ecc.
Anche nel deploy App Engine è migliore: con pochi click e in pochi secondi l'applicazione viene pubblicata, direttamente da dentro Eclipse. Anche con Azure è possibile pubblicare direttamente da Visual Studio ma poi su Azure ci vogliono diversi minuti per attivare l'applicazione. Non so se sono stato sempre sfortunato ma alcune volte dovevo aspettare anche 15 minuti per vedere la mia applicazione attivarsi. Su App Engine la cosa invece è immediata.

Altima cosa: i costi. Entrambe le piattaforme sono a pagamento con schemi di pricing sostanzialmente "a consumo". Più l'applicazione lavora, più si paga.
Il vantaggio di App Engine rispetto a Azure, è che Google offre gratuitamente l'uso di App Engine se non si supera un certo carico giornaliero. Azure invece è a pagamento da subito, anche per applicazioni piccole e leggere.
Un paio di numeri sull'offerta free di Google: 1 milione di richieste al giorno, 1 GByte di banda http e 6 ore di Cpu. Tutto questo al giorno!


Per una comparazione più dettagliata, leggere il post di Kevin Marshall sul suo blog. Personalmente lo condivido... almeno al 80% :)




venerdì, ottobre 30, 2009

Community Torino: è partita!

E' iniziata ufficialmente l'attività della community Torino Technologies Group (il sito web sarà pronto a breve).

Nel primo incontro pubblico abbiamo parlato di Controllo di Versione del codice sorgente e di Virtualizzazione (Vmware, HyperV, Citrix, ecc.). Sul primo argomento ho raccontato la mia esperienza con Subversion. Le slides saranno pubblicate sul sito appena sarà pronto. Nel frattempo sono disponibili qui: http://gs.fhtino.it/download

mercoledì, ottobre 28, 2009

Segnalazione articolo di Joel Spolsky

Per gli studenti universitari del settore Computer Science & C.. Da leggere assolutamente. E poi meditare, meditare e meditare.

Un paio di citazioni, ad inizio articolo:

"It is amazing how easy it is to sail through a Computer Science degree from a top university without ever learning the basic tools of software developers, without ever working on a team..."

"Where are students supposed to learn about version control, bug tracking, working on teams, scheduling, estimating, debugging, usability testing, and documentation? Where do they learn to write a program longer than 20 lines?"

Se sei uno studente o un professionista e se vuoi farti un'idea del "version control/source control", queto giovedì ci sarà il primo incontro pubblico della community "Torino Technologies Group".
L'incontro sarà presso il MIC - Microsoft Innovation Center del Politecnico di Torino.
Si parlerà anche di Virtualizzazione: Vmware e HyperV.

Maggiori dettagli qui: http://blogs.devleap.com/marco/archive/2009/10/22/nuova-community-a-torino-target-piemonte.aspx

giovedì, ottobre 22, 2009

Community a Torino: in partenza

Community torinese, ops piemontese, dedicata alle tecnologie Microsoft e non solo. Previste ampie divagazioni. :)
Dettagli qui: http://blogs.devleap.com/marco/archive/2009/10/22/nuova-community-a-torino-target-piemonte.aspx

venerdì, settembre 18, 2009

Notiziona: Mono gira anche su iPhone

Chi non conosce Mono, il framework .Net compatibile che permette di far girare applicazioni .Net su Linux e Mac? Beh, oggi Mono ha fatto un nuovo passo avanti: una versione che gira su iPhone. MonoTouch http://monotouch.net/

Leggendo le FAQ sembrerebbe più un convertitore di applicazioni più che un porting di Mono su iPhone ("MonoTouch is delivered as a static compiler that turns .NET executables and libraries into native applications. ")
Sempre dalle FAQ: è necessario un Mac e iPhone SDK.

Ultimo dettaglio, non trascurabile: è a pagamento!


mercoledì, settembre 16, 2009

GDocBackup runs on Mac

It's official: GDocBackup runs quite well on Mac OS X + Mono.

A mini HowTo is coming soon. In the meantime, read instructions for Linux on the FAQ page. They also apply to Mac (more or less).










giovedì, agosto 27, 2009

GDocBackup 0.4.1

I've released a new version of GDocBackup: 0.4.1.48

Download http://gs.fhtino.it/gdocbackup

The new version allows you to export the same document in more than one format. Sometimes there are temporary problems with some format on Google Docs servers. So, if one format is broken, perhaps the other one is good.






There is also a pure command line version. At the moment it's very rudimental. I hope to improve it in the future (feedback appreciated).

As the previous versions, GDocBackup runs on Windows (+Net) and Linux (+Mono). Perhaps it runs also on Mac + Mono but I cannot test it. I haven't a Mac. If you have a Mac, please, test it and send me feedback. Thanks.


giovedì, luglio 23, 2009

Segnalazione: intervista a David Parnas

Altra segnalazione, sempre sullo sviluppo software.  Una vecchia intervista (1999) a  David Parnas. Da leggere. Un paio di passaggi illuminanti e attualissimi.


Q: What is the most often-overlooked risk in software engineering?
R: Incompetent programmers. There are estimates that the number of programmers needed in the U.S. exceeds 200,000. This is entirely misleading. It is not a quantity problem; we have a quality problem. One bad programmer can easily create two new jobs a year. Hiring more bad programmers will just increase our perceived need for them. If we had more good programmers, and could easily identify them, we would need fewer, not more.



Q: What is the most-repeated mistake in software engineering?
R: People tend to underestimate the difficulty of the task. Overconfidence explains most of the poor software that I see. Doing it right is hard work. Shortcuts lead you in the wrong direction and they often lead to disaster.



No comment.

martedì, luglio 21, 2009

Segnalazione articolo di Tom DeMarco su IEEE Software

Per chi sviluppa software e per chi ha almeno un'idea di massima di cosa sia l'ingegneria del software, questo articolo (pdf)  di Tom DeMarco su IEEE Software è assolutamente da leggere.

Prima citazione:
"I’m gradually coming to the conclusion that software engineering is an idea whose time has come and gone."
Conclusione:
"Software development is and always will be somewhat experimental.  The actual software construction isn’t necessarily experimental, but its conception is. And this is where our focus ought to be. It’s where our focus always ought to have been."

Si è anche sviluppata una bella discussione su CodingHorror. Alcuni commenti sono molto interessanti. Ovviamente non tutti sono d'accordo con DeMarco.  :)

martedì, giugno 30, 2009

GDocBackup DOES run on Linux

Many blogs report that GDocBackup is for windows only. It's WRONG!
I don't understand... perhaps it's not so clear reading my web site but I confirm that GDocBackup RUNS on Linux + Mono (tested on Ubuntu and OpenSuse).




martedì, giugno 23, 2009

GDocBackup: raggiunti i 1000 download

In questi giorni sono apparse alcune recensioni di GDocBackup su alcuni siti web. Il traffico è aumentato di colpo e in 2 giorni ci sono stati quasi 1000 download. In questo momento il totale di download è pari a 1070 !
Update (06/07/2009): download oltre 3000

mercoledì, giugno 10, 2009

GDocBackup showed during Google IO

In the last days, Google has published the videos and slides of all the sessions of the last Google IO (May 27-28, 2009, San Francisco). Google IO is the annual developer conference, organized by Google.
Eric Bidelman (Google developer) showed GDocBackup during the session "Building Applications in the Cloud". Ok, ok, only 30 seconds during a long session (40 minutes) but, despite of that, I'm very happy and proud! 
Eric showed it as an example of application that uses the export functionality of Google Documents List Data APIs and does a local backup.   Thank you Eric!
(Video time:  23:02)

martedì, giugno 09, 2009

NSIS + HM NIS Edit

Per semplificare l'installazione volevo creare una Setup per GDocBackup. Ho fatto un po' di ricerche e molti consigliavano NSIS. Molto potente, gratuito ma.... un po' incasinato. A me non sembra molto intuitivo come funziona il suo sistema di scripting... boh... sarò un po' tonto.
Facendo altre ricerche ho scoperto che esistono alcuni editor per gli script di NSIS. Il più interessante è HM NIS Edit, pure lui gratuito. Per rendere le cose ancora più semplici ha un bel wizard che in pochi passi permette di impostare le caratteristiche principali del pacchetto di setup (nome, versione, ecc.) e i file che lo compongono. In pochi click ecco pronto lo script di setup. Un click sul pulsante di compilazione e l'exe per il setup è pronto.

Adesso, finalmente, c'è un Installer per GDocBackup.






lunedì, maggio 04, 2009

GDocBackup 0.3.0 released

GDocBackup is simple utility to backup (export) all your documents from Google Documents to local disk. It's open source and freeware. Requires NET or Mono. Runs on Win or Linux.

http://gs.fhtino.it/gdocbackup

Feedback is welcome

giovedì, aprile 23, 2009

Malware e affini: Vista è più sicuro di XP

Recentemente Microsoft ha pubblicato il Security Intelligence Report volume 6.
http://www.microsoft.com/sir

C'è un grafico molto interessante che indica la percentuale di infezioni, o meglio, la percentuale di rimozioni di infezioni eseguite dal Malicious Software Removal Tool di Microsoft divise per sistema operativo (Xp, Vista, Win server).
Il dato più evidente è che le macchine Vista vengono infettate molto meno delle macchine XP. E all'interno dello stesso segmento, versioni più recenti di service pack proteggono maggiormente.



Importante: il report NON è influenzato dal maggior numero di macchine XP rispetto a quelle Vista. Vedere il report per i dettagli su come sono stati raccolti ed elaborati i dati.

mercoledì, aprile 15, 2009

GDocBackup 0.2.0

I've released GDocBackup 0.2.0.

http://gs.fhtino.it/gdocbackup

GDocBackup exports documents from Google Documents to local hard disk. It runs on Windows + NET Frameword and Linux + Mono.


martedì, marzo 17, 2009

Simple Google Documents Backup utility

Recently Google Documents List APIs Team released a new version of the API. Now you can download documents.
Using the new APIs I wrote in .NET a very very simple utility for downloading all my documents. It does a simple backup: for each document in Google Docs, it downloads the document if the document is not present on the local disk or if it was modified.



More info, compiled exe and source code: http://gs.fhtino.it/gdocbackup




.

lunedì, marzo 09, 2009

MySql e Typed Dataset: non ci siamo!

Stavo facendo un po' di esperimenti con MySql e Net 2.0 / VS2005 e ho scoperto che i problemi sono ancora tanti. Il Net Connector (MySql.Data.dll) è un buon prodotto se usato a basso livello ma ha ancora problemi se utilizzato con i vari wizard / utility di aiuto di visul studio. Andiamo con ordine.

La libreria funziona bene se si accetta di scrivere a mano il solito codice tedioso per l'accesso ai dati: creo una connessione, creo un command, gli imposto quello che serve, definisco e carico i parametri, apro la connessione, eseguo, leggo, ecc. ecc. ecc. Cose del tipo (esempio banale):

string dbConnString = Properties.Settings.Default.db1;
using (MySqlConnection dbConn = new MySqlConnection(dbConnString))
{
dbConn.Open();
using (MySqlCommand cmd = new MySqlCommand("select * from persone order by Cognome", dbConn))
{
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
Console.WriteLine("> " + reader["IDpersona"] + "\t " + reader["Cognome"] );
reader.Close();
}
dbConn.Close();
}

Ma quando uno si rompe le scatole di scrivere queste cose, prova ad usare ad esempio i Typed DataSet. In passato ne avevo già parlato: con sql 2005 funzionano bene anche se bisogna fare un po' di attenzione.
Oggi ho scoperto, con mio massimo dispiacere, che ci sono dei grossi problemi con MySql. Per ora la conclusione è: non funzionano! Troppi problemi e lacune. Provo a farne una lista:
  • non ho trovato un modo per far aggiornare i dati di una datatable dopo l'insert. Caso tipico: un campo ID autoincremento. Dopo l'insert vorrei che l'ID riflettesse il valore assegnato dal motore di database. Con Sql funziona, con MySql no! Boh... spero di trovare una soluzione...
  • le query autogenerate contengono sempre / spesso (?) il nome del database. Ad esempio invece di avere SELECT ID, Cognome, Nome FROM Persone c'è SELECT ID, Cognome, Nome FROM MyTestDB.Persone. Quel MyTestDB impedisce di "attaccare" un altro db con la stessa struttura ma nome diverso. Tipico: DBTest, DBProd, ecc. Bello vero? grrrr... Mi consola il fatto che sono bug noti (bug1) (bug2) . Speriamo...
  • i campi autoincremento... non vengono riconosciuti come tali! Vengono visti come normali interi. Peggio di così.... Soluzione: impostarli a mano come autoincremento.

UPDATE 10/03/2009: per il problema dell'update dei campi AutoInc dopo l'inserimento bisogna intervenire a mano sul TableAdapter autocreato da VisualStudio. E' necessario inserire la query di select per l'aggiornamento dei dati. Esempio:

INSERT INTO persone (Cognome, Nome, Eta, IDCitta) VALUES (@Cognome, @Nome, @Eta, @IDCitta);
SELECT IDPersona,Cognome,Nome,Eta,IDCitta FROM persone WHERE (IDPersona = LAST_INSERT_ID());

Stesso discorso per il nome del database: bisogna toglierlo a mano.
Attenzione: non modificare il TableAdapter con il suo wizard (tasto destro "Configure..."). Le query di Insert, Update e Delete verrebbero rigenerate con la conseguente perdita di tutte le modifiche fatte a mano.

 
UPDATE 13/03/2009:  soluzione al problema dei campi autoincremento non riconosciuti. Non è un problema del Net Connector ma di una caratteristica di documentata su MSDN del metodo DataAdapter.FillSchema(). In pratica il campo per essere mappato correttamente come autoincremento deve essere di tipo Signed Int. Nei test che ho fatto io, il campo sul database MySql era INT UNSIGNED. In queste condizioni il designer di Visual Studio non era in grado di impostare in modo corretto la proprietà di autoincremento. E' bastato modificare il database mysql togliendo unsigned al campo.

.

VmWare player rete lenta

[Post... a futura memoria]

Rete lenta fra sistema operativo host e guest? Decine di minuti per copiare qualche file via SMB/Samba? Il sistema host è un Windows? Soluzione: disabilitare il TCP Task Offloading. Per me ha funzionato.

Sembra che il problema sia presente anche in altri ambienti di virtualizzazione, come Virtual Server 2005. O meglio, non è un problema di VmWare o Virtual Server ma di Windows che non si comporta bene con i sistemi "ospiti".


Con Regedit aggiungere, se non presente, la entry DisableTaskOffload valorizzandola a 1 (dword).

1. Click Start, click Run, type regedit, and then click OK.
2. Locate and then click the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
3. Click Edit, point to New, and then click DWORD Value.
4. Type DisableTaskOffload as the entry name, and then press ENTER.
5. Right-click DisableTaskOffload, and then click Modify.
6. In the Value data box, type a value of 1, and then click OK.
7. Quit Registry Editor.
8. Restart your computer.

From: http://support.microsoft.com/kb/888750


.

venerdì, marzo 06, 2009

Google Documents List Data api e proxy

Stavo facendo un po' di prove con la nuova versione delle Google Documents List Data Api per .Net. Nella nuova versione è possibile anche scaricare i documenti da Google Docs in vari formati (Pdf, html, ecc.). Un bel  post sul blog ufficiale di Google fornisce anche i link al codice sorgente di esempio.

Ho scaricato il tutto e funziona perfettamente. Potrebbero però esserci dei problemi se c'è di mezzo un proxy. La libreria .NET di Google utilizza WebRequest e WebResponse del framework NET. Le 2 classi tendono ad utilizzare il proxy impostato in Internet Explorer.  Non ho però trovato il modo per accedere alle istanze di queste classi. Ma c'è un altro modo: passare attraverso la proprietà Proxy di GDataRequestFactory.

Ad esempio, se si vuole usare una connessione diretta, senza usare il proxy impostato in Internet Explorer basta aggiungere un paio di righe:


... SNIP ...

this.request = new DocumentsRequest(settings);
this.Text = "Successfully logged in";

GDataRequestFactory reqFact = this.request.Service.RequestFactory as GDataRequestFactory;
reqFact.Proxy = new WebProxy();

Feed<Document> feed = this.request.GetEverything();
// this takes care of paging the results in
foreach (Document entry in feed.Entries)
{
    all.Add(entry);
}
... SNIP ...
 
La classe Webproxy è quella del framework NET. Vedere MSDN per i dettagli su come usarla.

giovedì, marzo 05, 2009

SuseStudio prime impressioni

Qualche settimana fa ho scroperto per caso SuseStudio. Si tratta di un servizio di OpenSuse (by Novell) che permette di creare macchine virtuali Linux completamente online. Dopo averla configurata è possibile scaricarla come immagine raw per disco (anche usb) oppure immagine iso per cd live oppure come macchina virtuale VmWare.

Provato... funziona!   Ho messo quello che mi interessava, fatto build, scaricato uno zip di 500 MB con dentro una machine virtuale da 1 GB e run in VmWare Player. Tutto OK. Vabbè... per ora sono le prima prove... prima o poi salterà fuori qualcosa che non funziona.  Alla fine dei conti SuseStudio è un servizio ancora in Alpha.

Ultima nota: l'accesso non è immediato. Bisogna farne richiesta e dopo un po' di giorni dovrebbe arrivare il codice di invito. Buona fortuna.

Home page:



Scelta dei pacchetti da installare:





Creazione immagine (disco, cd live, vmware):


Wiki:




.

martedì, marzo 03, 2009

LAMA: Linux, Apache, MySql, Asp.Net

Questa sigla mi mancava: lo stack LAMA = Linux, Apache, MySql, Asp.Net. Conoscevo LAMP ma LAMA mi mancava.
Comunque confermo che funziona. Proprio in questi giorni sto facendo un po' di test con Mono ed effettivamente funziona molto bene. Per prova ho preso un'applicazione asp.net compilata e l'ho messa su Ubuntu con tutto il necessario (a parte Sql Express) e ha funzionato.
A questo punto mi rimane solo MySql.

Un paio di link interessanti:

giovedì, febbraio 26, 2009

Asp.net, Mono, Apache e Ubuntu

Primi test per far girare Asp.net su Ubuntu con Mono e Apache.

Pagina foo.aspx.   Risultato:




Html pagina:

<html>
<body>
CIAO<br>
<br>
DateTime: <%=DateTime.Now.ToString()%><br>
<br>
Environment.Version: <%=Environment.Version.ToString()%><br>
<br>
Environment.OSVersion: <%=System.Environment.OSVersion.ToString()%><br>
<br>
<%=Server.MapPath("~/")%><br>
<br>
<br>
</body>
</html>

giovedì, gennaio 29, 2009

Asp.Net - Login failed for user 'NT AUTHORITY\NETWORK SERVICE'

NT AUTHORITY\NETWORK SERVICE è l'utente di default usato da IIS6 per l'esecuzione degli Application Pool. Le pagine asp.net girano nel contesto di tale utente.
Quindi le connessioni verso sql server, se viene usata Integrated Secutiry, avvengono con le credenziali di NETWORK SERVICE.
Affinchè l'autenticazione vada a buon fine, l'utente NETWORK SERVICE deve essere riconosciuto da sql server e deve avere accesso al db in questione.


Paginetta di test abc.aspx:

<%@ Page Language="C#"  %>
<html>
<body>
Connection Test: <%=DateTime.Now.ToString()%><br><br>
<%
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("data source=localhost;integrated security=sspi;database=northwind");
conn.Open();
conn.Close();
%>
</body>
</html>


L'errore che normalmente si incontra è:
Login failed for user 'NT AUTHORITY\NETWORK SERVICE'

Significato: l'utente non è in grado di autenticarsi sul sql server (utente sconosciuto, password errata, ecc.).

E' necessario aggiungere l'utente a sql server in modo che possa essere riconosciuto.

SqlServer Management Studio
 - Security
    - Logins
      - New Login
         - Login Name --> Search - cercare 'NT AUTHORITY\NETWORK SERVICE' fra gli utenti locali

A questo punto l'utente è presenta nella lista dei login di Sql Server. Riprovando a connettersi dovrebbe apparire un messaggio di errore un po' diverso:
Cannot open database "northwind" requested by the login. The login failed.
Login failed for user 'NT AUTHORITY\NETWORK SERVICE'.

E' necessario abilitare l'utente NetworkService alla lettura e scrittura dei dati sul DB (nel nostro esempio northwind).

 - tasto destro su 'NT AUTHORITY\NETWORK SERVICE'
 - selezionare UserMapping
 - selezionare il DB (ad esempio NorthWind) nella tabella superiore
 - attivare db_datareader e db_datawriter nella tabella inferiore


A questo punto la connessione dovrebbe andare a buon fine e dovrebbe essere possibile eseguire le operazioni classiche su db (select,  update, delete, insert).  Se fosse necessario eseguire operazioni più di alto livello, tipo drop table e similari, sarà necessario assegnare all'utente privilegi più elevati.


Nota: 
Integrated Security=True oppure Integrated Security=SSPI ?
(AFAIK) Sembra che l'opzione true possa essere usata solo con NETSQLClient mentre non sia valida con OleDB. Boh... da quello che si legge in giro sembra che sia consigliato SSPI  (personalmente uso sempre SSPI).

venerdì, gennaio 23, 2009

Microsoft e Sun tagliano posti di lavoro

Ieri la notizia: Microsoft taglia 5000 posti di lavoro. Vari TG nazionali riportano la notizia.
E' invece passata più in sordina la notizia che anche Sun è sulla stessa strada: 1300 licenziamenti.
Se guardiamo ai numeri assoluti il taglio in  Microsoft è più consistente: 5000 contro 1300. Ma se guardiamo alle percentuali sul totale dei dipendenti, è messa peggio Sun: 20% contro il 5% di Microsoft.

TheRegister sostiene che il taglio in Sun è soprattutto nel settore open source.Vedremo che cosa vorrà dire per Java OpenJdk e soprattutto per OpenSolaris.
Sul fronte Microsoft sempre TheRegister sostiene che la versione ufficiale parla di tagli in aree di staff (marketing, sales, finance, legal, ecc.) ma sembra ci saranno taglia anche nell'area "online": Live, MSN, ecc.

mercoledì, gennaio 07, 2009

Segnalazione: MS Database Publishing Wizard

Piccola segnalazione, per chi non conoscesse questo tool: Microsoft Database Publishing Wizard
   http://www.codeplex.com/sqlhost/
Con pochissimi click di mouse è possibile creare uno script Sql con tutti o parte degli oggetti di un DB (tabelle, relazioni, indici, ecc.). Volendo si possono inserire in script anche i dati.
Con lo script sarò quindi possibile ricreare il DB, volendo anche con i dati. Molto utile.

Il tool è eseguibile anche alla riga di comando. Ad esempio:
  • SqlPubWiz.exe script -f -C "Data Source=.\sqlexpress;Initial Catalog=Tests;Integrated Security=True" -schemaonly c:\temp\out.sql
crea lo script con solo lo schema. Togliere -schemaonly per avere anche i dati.

Un'altra cosa molto utile: lo script contiene all'inizio anche le Drop Table per rimuovere le tabelle nel caso esistessero già sul DB target (ovviamente si può disabilitare la creazione delle Drop).