Installare TFS in configurazione Dual Server

Già in passato TFS mi aveva dato parecchi guai; dopo l'esperienza di questi giorni in cui dovevo procedere con un'installazione in configurazione Dual Server (AT=Application Tier di TFS su una macchina e il DT=Data Tier - Sql Server - su un'altra) posso confermare che il setup "user friendly" non è il suo forte.

Il problema piú grosso sembrano essere i Reporting Services che di default lui vorrebbe mettere sull'AT; con questa configurazione io non sono riuscito a completare l'installazione e ho per forza dovuto tenere i Reporting Services sul DT, ovvero quelli che avevo già installato insieme a Sql Server e ad Analysis Services. La mia intenzione era anche quella di sfruttare un MOSS (Sharepoint) esistente, ma anche lì dopo criptici errori ho rinunciato e ho installato i WSS locali sull'AT.

Riassumendo, questi sono i passi che ho seguito per avere TFS e SQL separati.

  • Il setup iniziale di TFS sull'AT si blocca quasi subito se non avete questi prerequisiti  (ma perchè non ci pensa lui ??):
    • IIS (6.0 nel mio caso di un Win 2003 R2)
    • .Net framework 2.0
    • QFE KB933579 per MSXML 6.0 Parser
  • Vi dico subito che questo non basta: quando infatti specificate il nome del Server che ospita SQL lui tenta di contattarlo, ma non ci riesce...(probabilmente perchè gli manca la parte di sql client ??); io ho risolto installando i Reporting Services (che poi non userò) ma che almeno installano la parte di connectivity che gli serve per dialogare con sql
  • I servizi di Analisys Services io li avevo spenti (e in Manual) perchè sono installati ma al momento non li uso... il setup li vuole per forza accesi.
  • A questo punto facendo ripartire il setup si installa .net framework 3.5 e WSS (se non si è così arditi da tentare la soluzione di usare un WSS o un MOSS remoto)... ma come dicevo verso la fine a me si impiantava con errori vari (29112, 29106 e altri) che analizzando i log erano tutti imputabili ai RS.
  • La soluzione, come dicevo all'inizio, è quella di forzare l'uso dei Reporting Services remoti e questo si fa editando il file msiproperty.ini della directory AT (quindi dimenticatevi l'installazione da DVD e copiatevi il contenuto su disco) e cambiando queste righe (<nomeserver> nel mio caso coincideva con quello del Sql)

    VSTF_RS_SERVER=<nomeserver>
    VSTF_RS_REPORTS_URI=http://<nomeserver>/Reports
    VSTF_RS_REPORTSERVER_URI=http://<nomeserver>/ReportServer

Fatto questo, ho visto la magica parola "install successfully" che ormai stavo disperando di vedere !!

Posted 11 agosto 2008 03.39 by Sandro | no comments
Filed under: ,
Mettere in bolla col cellulare

Se anni fa qualcuno avesse detto che col cellulare avremmo fotografato, ascoltato musica, trovato la strada giusta e visto filmati, già saremmo stati increduli. Ma penso che nessuno avesse mai immaginato che tramite i sempre più diffusi tilt sensor sarebbe potuto diventare una livella a bolla !! :-)

 

Posted 17 luglio 2008 06.28 by Sandro | no comments
Filed under: ,
L'importanza degli standards

Se compraste una macchina e vi accorgeste che hanno scambiato la posizione del freno con quella della frizione, oppure che hanno messo la leva del tergicristallo vicino al freno a mano, non vi incazzereste ?? E non tirereste una maledizione ai progettisti ogni volta che sbagliate un'operazione a causa di quegli spostamenti ?

E' quello che succede a me quotidianamente con una nuova tastiera wireless (una Microsoft 700) in cui i 6 tasti Home/End, PgUp/PgDn e Ins/Canc sono posizionati con un layout 2x3 (2 colonne, 3 righe) invece che il classico 3x2.

Usando molto il tasto End per andare a fine riga durante la digitazione di codice in Visual Studio, la mano dopo anni di abitudine cade sempre in posti sbagliati. Capisco la volontà di risparmiare qualche centimetro di spazio, ma i progettisti dovrebbero veramente pensarci su 2000 volte prima di cambiare un layout che ormai fa appunto parte di uno "standard" e per questo dovrebbe essere mantenuto.

Microsoft comunque è in buona compagnia: le tastiere Logitech dei miei colleghi hanno lo stesso problema (evidenziato maggiormente dal fatto che il tasto Canc ha una dimensione doppia ed è molto vicino al Return), e ancor peggio ha fatto Lenovo con i suoi portatili scambiando il Control con il Fn (come ha fatto notare un ex MVP che ha risolto in modo drastico...)

Microsoft Wireless Keyboard 700

Posted 23 giugno 2008 11.07 by Sandro | no comments
Filed under: ,
Database naming conventions: addio a tab, vw, sp

Ieri ho preso una drastica decisione: ho deciso di cambiare la naming convention che da tempo usavo per i database sql, eliminando tutti i prefissi che usavo per le tabelle, viste, e stored procedure (che dall'avvento di Linq comunque uso molto piú raramente).

I motivi che mi hanno fatto cambiare idea sono stati due. Il primo è che comunque si tratta di una sorta di notazione "ungherese" che ormai in un mondo tutto typed e pieno di intellisense (per Sql2005 uso SqlPrompt, Sql2008 lo avrà di suo) non ha piú senso.

Inoltre, rinunciando ai prefissi, non devo più rinominare le N classi che ottengo dal designer di Linq to Sql di Vs2008, e soprattutto non mi espongo a strani "comportamenti" come questo:

Supponiamo di avere una tabella tabEmployees di impiegati (con chiave primaria idEmployee) che ha una Foreign Key idManager su se stessa. Se faccio drag 'n drop della tabella e rinomino dal designer la classe chiamandola Employee (ovvero togliendo il "tab") lui NON rinomina l'EntityRef attraverso la quale accedo ai dati del manager (resta "tabEmployees1" anche se comunque posso modificarla dalle properties dell'association). Più subdolo il caso in cui abbia un'altra tabella (es. una tabella Richiesta Ferie) che ha due Foreign Key sulla prima: idEmployeeRequester e idEmployeeApproval (il richiedente e l'approvatore).

In questo caso sempre se ho rinominato la classe tabEmployee in Employee, nella classe VacationRequest mi trovo l'EntityRef "Employee" che si riferisce alle seconda FK che trova (in questo caso l'approvatore), mentre la prima entityref restava nominata "tabEmployees".

Non so se ci avete capito qualcosa... io ci ho perso un po' per trovare un baco in una mia applicazione, scoperto il quale ho preso Visio e ho rasato via tutti i "tab" di qualche decina di tabelle. Occhio solo che oltre al rename delle tabelle, dovete aggiornare anche i riferimenti dentro viste, stored e trigger. 

Posted 12 giugno 2008 08.55 by Sandro | 1 comment(s)
Filed under:
Left outer Join in LINQ con due condizioni

Non ho trovato molti esempi su come impostare una query Linq2Sql che abbia una Left Outer join con due (o più) condizioni all'interno della join; mi segno quindi qui come penso sia corretto fare:

Supponiamo di avere una tabella Employees (impiegati), una Groups (gruppi) e una JoinEmployeesGroups che mi tenga la relazione molti a molti. Voglio tirare fuori tutti i gruppi, ovvero idGroup e GroupName e una terza colonna che mi indichi se un determinato impiegato è associato a quel gruppo (il classico caso di binding ad una checkboxlist ad esempio).

In Sql, per ottenere ad esempio i gruppi a cui è associato l'impiegato 12, farei:
SELECT  g.idGroup,
        g.GroupName,
        ( CASE
          WHEN j.idEmployee IS NOT NULL THEN 1
          ELSE 0
          END ) AS Selected
FROM    Groups AS g
LEFT OUTER JOIN JoinEmployeesGroups AS j ON ( g.idGroup = j.idGroup ) AND ( j.idEmployee = 12 )
ORDER BY GroupName

ottenendo

idGroup    GroupName       Selected
---------- --------------- -----------
MAG        Magazzino       0
MGMT       Management      1
MANUF      Manufacturing   0
PROC       Procurement     0
HWDEV      Progettisti HW  0
SWDEV      Progettisti SW  1

Come tradurla in Linq to Sql ?

var qgroup =   from g in db.Groups
               join j in db.JoinEmployeesGroups.Where( p => p.idEmployee == 12) on g.idGroup equals j.idGroup  into jg
               from x in jg.DefaultIfEmpty()
               orderby g.GroupName
               select new { g.idGroup, g.GroupName, Selected = (x.idEmployee != null) };

La parte blu è quella "tricky" (parola grossa, era ovvio che si facesse così)... Ma dove metterla ? Alla fine non cambia praticamente niente se la mettiamo nella parte della join o nella seconda from (verificato con la query sql che genera)

var qgroup =   from g in db.Groups
               join j in db.JoinEmployeesGroups on g.idGroup equals j.idGroup  into jg
               from x in jg.Where( p => p.idEmployee == 12).DefaultIfEmpty()
               orderby g.GroupName
               select new { g.idGroup, g.GroupName, Selected = (x.idEmployee != null) };

Come bindare alla checkboxlist e selezionare gli item giusti è poi banale 

cblGroups.DataSource = qgroup;
cblGroups.DataTextField = "GroupName";
cblGroups.DataValueField = "idGroup";
cblGroups.DataBind();
foreach (var gr in qgroup)
{
    ListItem li = cblGroups.Items.FindByValue(gr.idGroup);
    li.Selected = gr.Selected;
}

Ogni giorno mi innamoro sempre di più di LINQ... :-)

Posted 11 giugno 2008 05.11 by Sandro | 1 comment(s)
Filed under:
Camicie azzurre e geek

L'altro giorno ho visto questo divertentissimo video (Another Bubble) dove al minuto 1.40 si prende in giro il "nostro" (geek, IT manager, smanettoni, web_2.0_men, ecc) modo di vestire dicendo che portiamo sempre camicie azzurre (e pantaloni khaki)... Boh, mi sono detto, non ci ho fatto mai caso...

Oggi guardando l'intervista (high res - low res) che Paolo e Marco hanno fatto al Tech Ed di Orlando mi sono ricreduto :-)

Posted 08 giugno 2008 11.59 by Sandro | 1 comment(s)
Filed under: ,
HTC Touch Pro: il mio prossimo telefono

E' qualche settimana che sto rimuginando su quale telefono comprarmi, visto che la "cabina telefonica" JasJar/Qtek9000 è rimasta nel vecchio posto di lavoro: aspettare l'Iphone italiano ?? nooo... "troppo da fighetti" come dice Silvano :-); andare sul sicuro con un classico Nokia ?? sarebbe l'n-esimo e con Symbian e Java non ho un buon rapporto...

Visto che probabilmente dovrò ancora scrivere un po' di codice col .Net Compact Framework un telefono con Windows Mobile sarà d'obbligo e la scelta stava per cadere sul nuovo HTC Touch Diamond anche se io sono molto legato alla tastiera Qwerty e so già che ne avrei sentito la mancanza (non per niente tutt'oggi uso ancora il mio vecchio Nokia 6800).

E invece è stato da poco annunciato l'HTC Touch Pro, in pratica un Diamond che con 7 mm di spessore e 50 gr in più aggiunge una vera tastiera Qwerty...l'attesa (fine estate ?) sarà lunga !

Posted 06 giugno 2008 10.18 by Sandro | 1 comment(s)
Filed under:
Devcon 2008

Anche quest'anno ho avuto il piacere di partecipare a DevCon, evento tenuto dagli amici di Devleap. L'anno scorso avevo plaudito la scelta di trattare argomenti "presenti" e in RTM e quest'anno il trend è stato molto simile. All'inizio (la prima giornata di tutorial e le prime sessioni di Linq) ho avuto quasi il timore che avessero esagerato ad affrontare argomenti che a me parevano "ovvi e facili", ma forse sono io che sto "maturando" e il tempo che passo a leggere blog e a guardare webcast di oltreoceano non è vano e a qualcosa serve.

Già comunque da metà della seconda giornata le cose sono cambiate e molte sessioni sono state di ottimo livello. Ottime la Wcf Webcentric e la Linq &N-Tier Architecture. Le due Bonus Session inoltre hanno stuzzicato non pochi interrogativi; avete mai pensato che un algoritmo che oggi ci mette 10 secondi, tra 2 o 3 anni ci metterà sempre lo stesso tempo (visto che il clock difficilmente aumenterà) ? e che se non iniziamo seriamente a pensare alla programmazione parallela che sfrutta i nostri dual/quad core non andiamo molto avanti ?

Sulla scommessa di Rob e Luka sul futuro del web sono molto curioso: loro consigliano di buttarsi su Silverlight, di usare Ajax ragionevolmente e in piccola misura, e anche "meno browser, più Wpf Client che sfruttano il Web" (per esempio per una intranet). In questi 10 anni che li conosco difficilmente hanno sbagliato, andremo a rileggere questo post tra un paio di anni...

Qui l'agenda che ho seguito e che quest'anno ha un incomparabile plus: tutte le sessioni sono state registrate e tra poco saranno disponibili agli iscritti. Basta rammarichi o dubbi atroci su quale sessione scegliere tra due contemporanee. A rivederci alla Sql e/o Sharepoint Conference di Ottobre.

Posted 31 maggio 2008 09.12 by Sandro | no comments
Filed under:
I campioni siamo ANCORA noi !

L'anno scorso avevo commentato dicendo che senza Juve e col Milan penalizzato, la soddisfazione non poteva essere totale. Quest'anno però non ci sono scuse: se le loro campagne acquisti non sono state all'altezza non è colpa nostra e non è certo a causa di mancanza di fondi.

Pur con una sofferenza esagerata (e razionalmente ingiustificata... ma si può soffrire così per un gioco ??!) possiamo gridare e cantare "SIAMO NOI, SIAMO NOI, I CAMPIONI DELL'ITALIA SIAMO NOI !"

Onore alla Roma che ha espresso un bellissimo calcio e soprattutto non ha mai mollato.

Posted 18 maggio 2008 05.10 by Sandro | 1 comment(s)
Filed under:
Disponibile Worldwide Telescope

Come avevo preannunciato, Microsoft Research ha sviluppato un favoloso programma per gli astrofili per avere "il cielo nel desktop". Ora è finalmente disponibile (qui il download e i requisiti per farlo girare).

Settimana prossima sarò per lavoro a Garching presso la sede dell'ESO (European Organisation for Astronomical Research in the Southern Hemisphere); magari trovo qualcuno che mi dia qualche dritta su dove puntare il mio telescopio mouse, per vedere qualcosa di interessante :-)

Posted 16 maggio 2008 11.47 by Sandro | no comments
Filed under: ,
Donazioni Unicef pro Birmania: falso phishing

Oggi mi è arrivata una email dall'Unicef (attraverso TicketOne) che mi invitava a compiere una donazione a favore dei bambini birmani colpiti dal tifone Nargis. Già ero preallarmato da una news che avevo letto ieri, e poi il mega alert di Outlook che mi diceva trattarsi di un phishing unito ad un po' di esperienza mi aveva subito convinto che al mondo esistono dei bastardi che lucrano su disgrazie altrui. Dopo aver cestinato la mail, ho però voluto controllare meglio e andando sul sito dell'Unicef ho scoperto che per questa volta non si tratta di frode, ma solo di "ignoranza" informatica di chi ha preparato la newsletter:

Ovvio che anche il più banale dei controlli automatici lo segnali come pericoloso... Peccato perché rischiano di perdere occasioni per tirare su dei fondi che in questo momento servono come il pane. Essendo stato in Birmania l'anno scorso, non posso che dispiacermi per l'immane tragedia che quel meraviglioso popolo sta passando: già stremato dalla dittatura e dalla povertà, ora anche la natura si accanisce... mah, veramente ancora una volta di più viene da pensare che siamo fortunati...

PS alla fine la donazione l'ho fatta... sapere che con il costo di una cena al ristorante (70 euro) compri 1000 (MILLE) kit di sali reidratanti per curare dissenteria e altre patologie, ti fa un po' vergognare. Se con questo post sono riuscito a convincere qualcuno a fare altrettanto, ne sarò molto felice.

Posted 13 maggio 2008 09.07 by Sandro | no comments
Filed under:
Capita anche ai migliori :-)

Che cosa ? di cadere sugli sci purtroppo. Come spesso accade concludo la stagione sciistica a Solda all'Ortles intorno al primo maggio. Ieri giornata fantastica, con ancora un sacco di neve, sole e cielo azzurro e temperature adeguate (pochi gradi sopra lo zero).

Purtroppo una buca di una porta in cui sono entrato un po' troppo veloce, mi ha fatto aprire l'attacco e dopo qualche virtuosismo su uno sci solo, sono volato per qualche centinaio di metri. Fortuna (o coscienza) vuole che da anni metta sempre il casco e che da quest'anno abbia iniziato anche ad usare il paraschiena "a tartaruga" tipico degli snowboarder e derivato dal motociclismo: mai scelta fu più saggia. Lo sci è uno sport che è cambiato, si viaggia a velocità molto più elevate di un tempo e spesso la neve ha la consistenza dell'asfalto. Così come i motociclisti in calzoni corti e sandali sono ormai una rarità, anche per lo sci è finito il tempo di capelli al vento e occhiali rayban; o almeno chi scia in quel modo deve essere conscio che sta rischiando. A me è andata bene (microfrattura dello scafoide, distorsione del legamento del pollice e qualche giorno di gesso) ma senza protezioni poteva andare peggio !

Un plauso al Pronto Soccorso dell'Ospedale di Bolzano: accettazione, prima visita, radiografie, seconda visita dell'ortopedico, ingessatura, dimissioni, tutto in 55 minuti. E' vero, da noi si pagano 15 euro di ticket, ma se questo riduce l'affollamento di chi prendeva il P.S. per il medico di famiglia, sono contento di pagarli.

Anche se l'incidente è capitato la mattina presto, ho continuato a sciare lo stesso tutto il giorno facendo qualche ripresa (la videocamera in tasca si era salvata dalla botta) e facendomi riprendere dall'amico Giampaolo; se notate che uso male il bastoncino sinistro sapete il motivo :-)


L'ultima sciata del 2008 a Solda - Ortles

Posted 03 maggio 2008 05.18 by Sandro | 4 comment(s)
Filed under:
Moleskine: Ritorno alla carta

Penso lo sappiate: sono un "homo technologicus", amo tutti i gadget elettronici di questo mondo, quando i miei o Silvia mi chiedevano che cosa volevo come regalo io rispondevo sempre "qualsiasi cosa che abbia un libretto di istruzioni" (che poi ovviamente non leggevo: RTFM!).

Ogni regola però ha una sua eccezione. Iniziando da pochi gioni un nuovo lavoro, avevo e ho la necessita di prendere parecchi appunti (molte riunioni, molta formazione, molte idee che vengono all'improvviso e che vanno subito segnate, ecc.). "Con che strumento li prendo ?" mi sono chiesto... Ho usato spesso con molta soddisfazione OneNote, ho avuto tra le mani svariati PDA (dagli Ipaq al JasJar), i moderni cellulari (iPhone in primis) lo consentirebbero senza nessun problema, ma alla fine la mia scelta è caduta su... la cara e vecchia CARTA :-)

Per puro caso parlando con il collega Fede, ho chiesto che formato di blocco appunti usasse lui (A4, A5, ad anelli, a strappo, rilegato...) e mi ha fatto scoprire la Moleskine.

Cito dal sito: La Moleskine è l'erede del leggendario taccuino degli artisti e intellettuali degli ultimi due secoli, da Vincent Van Gogh a Pablo Picasso, da Ernest Hemingway a Bruce Chatwin. E' un semplice rettangolo nero, gli angoli arrotondati, i risguardi trattenuti da un elastico, la tasca interna. Ed in effetti molto altro di più non è: un quaderno con una giusta misura, con un'ottima carta, ben rilegato e che sta "bene" in mano e nella borsa. 

Probabilmente è solo la suggestione di sapere che è stata usata da insigni pittori e scrittori a farmi essere così fiero e contento del mio nuovo "notebook", ma devo dire che non sono il solo, in quanto se cercate su google o su flickr trovate un sacco di persone che dall'organizer elettronico sono tornati a quello cartaceo (si parla adirittura di un movimento "Back to Paper").

Ed è proprio da questo post su flickr che ho adottato un nuovo modo di prendere appunti, che nel mio caso si riducono molto spesso ad essere una serie di "task" che devo compiere. Ecco quindi che un quadratino stile bullet ne indica uno da compiere, la classica spunta o X se è stato portato a termine o eliminato, un puntino dentro indica la priorità, una riga diagonale che è stato rimandato a tempi futuri ecc. Ci si abitua subito e diventa molto comodo. Se qualcuno ha altri metodi standardizzati per prendere appunti me lo faccia sapere, sono curioso.

I miei due notebooks: Moleskine e Dell Latitude D830

Posted 26 aprile 2008 07.26 by Sandro | 1 comment(s)
Filed under:
Download di MSSX difficoltoso

Chi tentasse oggi (spero che domani sarà corretto il bug) di scaricare Microsoft Search Server Express 2008, si beccherebbe un bell'errore javascript sul submit del bottone di Invio. E visto che su MSDN Downloads non l'hanno messo, l'unica è "arrangiarsi":

Salvarsi la pagina html sul proprio disco (salvare come "web page complete"), editare il file .htm e alla riga 675 corregere:

if (document.getElementById('selectCounty').options[document.getElementById('selectCountry')

in

if (document.getElementById('selectCountry').options[document.getElementById('selectCountry')

(manca la R di countRy)

Usare la propria pagina per fare postback, et voilá...

Posted 25 aprile 2008 12.52 by Sandro | no comments
Filed under:
Alcune issue con IIS 7

Alcuni problemi con IIS 7 che mi segno per il futuro (ricordo che c'ero già cascato nel passato)...

1) Setup della mia intranet con autenticazione NTML con un host header name di sviluppo ( "intranet.rizzetto.local" settato nel file hosts e rediretto su 127.0.0.1).
Il sito continua a rispondere con un bel 401.1 (Unauthorized: Logon Failed) come se la password fosse sbagliata o l'utente non avesse i diritti necessari. Dopo aver provato di tutto (stavo dando a Everyone il Full Control del mondo !!) la soluzione non era proprio prevedibile:

Su Vista, XP Sp2 e Win2003 SP1 esiste un controllo di sicurezza sul loopback per evitare attacchi di "reflection"; se quindi il FQDN non corrisponde al nome macchina non funziona un tubo. Morale: creare questa chiave di registro DWORD e fare IISReset (non serve riavviare come
suggerito qui)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck = 1

2) Applicazione Classic ASP che va in errore e non stampa a video il messaggio di errore dettagliato ma solo il messaggio standard "An error occurred on the server when processing the URL. Please contact the system administrator"
Workaround: lanciare %windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:true

Magari servirà a qualcuno che sta passando a Windows 2008...

Posted 16 aprile 2008 10.57 by Sandro | no comments
Filed under:
More Posts Next page »

Search

Go

This Blog

Add to Technorati Favorites

Syndication