Ho scoperto una cosa curiosa: provate ad andare su Google, digitate "MS 70-315" e premete "Mi sento fortunato".

Indovinate un po' dove vi spara.

tags: - categories:

Vi propongo un piccolo sondaggio. Usate i commenti e ditemi come la pensate su questo spinoso dilemma. Sono interessato a chiarire una volta per tutte questa faccenda. Perchè scegliere un linguaggio piuttosto che un altro? Oppure perchè scegliere entrambi... nessun pregiudizio, nessun preconcetto, vi prego... tant'è che la mia opinione ve la darò solo fra un po'.

tags: - categories:

Quest'oggi ho affrontato la prima giornata di corso su "Documentum". Per chi non lo conoscesse, "Documentum" è il software di Content Management che attualmente ha il maggior credito nel mercato dei CMS. Si tratta di una piattaforma nata prima dell'avvento del web e giunta a tutt'oggi alla versione 5.2. "Documentum" è basato su Oracle 9.2 e Verity per l'indicizzazione full-text dei contenuti. Il software quindi si basa su due repository distinti per metadata e documenti, il primo è Oracle mentre il secondo è il filesystem. 

Documentum nell'affacciarsi al mondo web si è avvicinata alle tecnologie Java che sposavano sicuramente meglio l'approccio fortemente object-oriented che ha il content server stesso. Questa politica, è comprensibile però solo pensando al mondo informatico di alcuni anni fa nel quale dominavano un mondo object oriented come Java e uno COM oriented come Visual Basic 6.0.

Confesso che sono rimasto molto deluso dall'apprendere che attualmente il supporto che Documentum da a .NET è limitato ad "una serie di classi wrapper di oggetti COM che utilizzano a loro volta una libreria Java denominata DFC". Una follia in termini prestazionali.

Da alcune ricerche sul sito della Documentum pare di capire che l'azienda sia intenzionata a dare supporto a .NET. Sul sito si legge:

"With a significant portion of our customers favoring the Microsoft .NET environment, Documentum is committed to providing you with a rich set of tools, interfaces, and services."

Purtroppo questo non è un riferimento a futuri sviluppi, ma esclusivamente alla soluzione attuale. Se poi qualcuno mi viene a dire che .NET è una piattaforma poco performante, non rispondo delle mie azioni.


Per tutti voi che immagino siate impazienti di leggere i miei post, da oggi il mio blog offre un nuovo servizio (suggerito da Eric Gunnerson)

E adesso non vi precipitate tutti a sottoscrivere quello di Eric...


 

tags: - categories:

Mi sembra ieri che mi sono affacciato al "blogging", con un timido chi sono consapevole che l'onere che mi stavo assumendo era comunque sottovalutato, ed oggi, a distanza di alcuni mesi, 4 per l'esattezza, mi ritrovo a festeggiare il 100esimo post. Lo so, spesso e volentieri vi ho tediato con i miei sfoghi radicali, ma guardando ora nella console dello spendido tool che ci ha regalato l'ugi, mi rendo conto che comunque la maggioranza dei miei post sono dedicati a .NET.

Perciò, per festeggiare il numero 100, ho deciso di trovare qualcosa di succulento, che spero vi faccia piacere. Per tutta la giornata ho rinuciato a postare, per riservare questo numero a qualcosa che fosse un po' più che banale. E infine, spero di esserci riuscito, e vi ho preparato una classe che fa qualcosa di speciale, almeno a giudicare la fatica che ho dovuto fare a trovare la soluzione nella rete.

Dovete sapere che sto lavorando ad un software gestionale nel settore della sanità, che verrà utilizzato per mezzo di Terminal Server. Questo gestionale, oltre a profilare l'utente, necessita anche di riconoscere il terminale che è connesso, per adattare ad esso le proprie funzionalità. Il problema è che se provate a fare un po' di googling per cercare come si fa a conoscere anche solo l'indirizzo ip del client, presto vi renderete conto che se la soluzione esiste, di certo non sono in molti a conoscerla.

La classe che qui ho linkato ottiene questo risultato, per mezzo delle API esposte da wts32api.dll. Ho tentato in vari modi di ottenere quello che stavo cercando, (WMI è uno di questi) perfino qualche pazzoide suggeriva di usare netstat per conoscere l'ip della macchina collegata alla porta 3389, dimenticando che comunque non si sarebbe riusciti a sapere esattamente come fare corrispondere gli ip trovati alle varie sessioni... ed ecco il metodo che compie la magia:

private object GetSessionData( WtsInfoClass infoClass, Type type )
{
   // puntatore al buffer
   IntPtr ppBuffer = IntPtr.Zero;
   // numero di byte restituiti
   uint
pBytesReturned = 0;
   // eseguo la query
   if
( WTSQuerySessionInformation( IntPtr.Zero,
      unchecked( (uint
)WTS_CURRENT_SESSION ),
      infoClass,
      out
ppBuffer,
      out
pBytesReturned ) != 0 )
   {
      // converto il valore al tipo richiesto
      if ( type == typeof( string
) )
         return
Marshal.PtrToStringAuto( ppBuffer );
      else
         return
Marshal.PtrToStructure( ppBuffer, type );
   }
   // null se non trovo nulla
   return null
;
}

Si tratta di un metodo generico che richiede in input il dato che si deridera cercare. Tra quelli disponibili segnalo WTSClientName, WTSSessionId e WTSClientAddress. Questi tre vengono usati nella mia classe TerminalServerClient per ottenere rispettivamente il nome del client, l'id della sessione e l'indirizzo ip (tra i tre è questo il più difficile da trovare).

Se vi interessa, la classe completa la trovate qui. Si tratta di un singleton, perciò per usarla dovete fare così:

[STAThread]
static void Main(string
[] args)
{
   Console.WriteLine( TerminalServerClient.Current.SessionId );
   Console.WriteLine( TerminalServerClient.Current.Name );
   Console.WriteLine( TerminalServerClient.Current.IPAddress );
}

Infine una curiosità. se quello di cui avete bisogno è il nome della macchina, e tutto il resto non vi importa, allora basta una sola riga di codice per ottenerlo:

Console.WriteLine( Environment.GetEnvironmentVariable( "CLIENTNAME" ) );

Spero apprezziate il regalo di compleblog...


Sperando di farvi cosa gradita, ecco uno zippino che contiene tutte le emoticone che  ho preparato per il mio blog contenente anche un file HTML da cui fare copia e incolla direttamente dentro l'admin di .TEXT, ricordandosi di aggiungere l'url assoluto alla cartella dove copierete le immagini.

 

stralunato % - ) innamorato *: - ) piangente :" - ) arrabbiato : - (
appagato : - ) deluso : - / imbronciato : - [ abbattuto : - {
serio : - | allettato : - 9 sorrisone : - D fumato : - L
incredulo : - O complice : - P contraddetto : - S timido ; - )
incazzato > : - ( estivo 8 - ) risate 8 - D risate X - |

 

Le stringhe sono di mia interpretazione e non rispondono ad alcuno standard, ma alla necessità di essere facilmente memorizzabili.

A voi il compito di attribuirgli un significato.

tags: - categories: