Convertire un SID in stringa con Java

Un security identifier (SID) è un identificativo univoco, comunemente utilizzato dai sistemi Microsoft. Viene ad esempio utilizzato per identificare univocamente degli utenti all’interno di Windows, o ancora più in generale anche di un sistema come Active Directory.

Il SID è un valore binario, di lunghezza arbitraria, e può anche essere rappresentato in una versione alfanumerica. Tale conversione risiede in una particolare funzione chiamata ConvertSidToStringSid, della libreria Advapi32.dll, disponibile solamente per Windows.

Per chi avesse bisogno di questo tipo di conversione può procedere in due modi:

  • Utilizzare Advapi32 (solo in ambiente Windows)
  • Riscrivere la conversione
Molto utile è quindi avere a disposizione tale funzione di conversione in un particolare linguaggio (nel nostro caso Java), in modo da essere utilizzata ovunque. Ho potuto notare che le implementazioni di questa funzione che si trovano in giro su Internet sono pochissime e commettono anche degli errori, nonostante che funzionino bene in generale. Vi presenterò pertanto una mia particolare implementazione testata in maniera approfondita.

Continua a leggere

Integrare PeerSim con Eclipse

PeerSim, per chi non lo conoscesse, è un noto simulatore per reti P2P, scritto in Java. Potete trovare qui la pagina ufficiale di tale progetto.

Soprattutto quando si parla di Java sappiamo che è molto comodo utilizzare Eclipse. In questo articolo parlerò infatti di come poter configurare quest’ultimo per poter lavorare con PeerSim. Ho deciso di scriverlo dopo aver letto uno dei pochi post che tratta dell’argomento, e che risolve la cosa in un modo alquanto bizzarro.

Continua a leggere

Algoritmo del Ruzzle Solver

Con il successo di Ruzzle Solver, molti utenti mi hanno più volte richiesto di pubblicarne il codice sorgente, o semplicemente delle informazioni su come se ne potesse fare uno simile. Altri invece erano particolarmente interessati, visto che avrebbero dovuto fare un progetto simile per un esame universitario.

In questo post cercherò solamente di valutare brevemente alcuni metodi per poter realizzare un algoritmo di questo tipo. Sicuramente scriverò altri articoli che tratteranno di temi più specifici in futuro.

I test che vedrete in seguito sono stati eseguiti con algoritmi scritti in C, ed su un MacBook Pro con processore Intel Core i5 da 2.3 Ghz; altre implementazioni potranno quindi riportare risultati differenti, anche se mi aspetto che il rapporto tra di esse sia identico.

Continua a leggere

Intelligenza Artificiale: Markov Decision Process

In Intelligenza artificiale, in alcune situazioni, hai bisogno di una semplice sequenza di azioni per raggiungere in determinato obiettivo, partendo da uno stato noto; in tutti quegli ambienti dove invece le azioni non sono deterministiche (non deterministiche o stocastiche), questo non è più sufficiente: c’è bisogno di una policy, ovvero di una politica che ci dice qual’è l’azione giusta da fare in ogni stato.

Le Markov Decision Process sono una struttura matematica che ci aiuta a costruire queste policy in ambienti stocastici dove si conoscono le probabilità che si verifichino determinati risultati.

In questo post, io vi darò una brevissima introduzione e poi vi mostrerò le parti essenziali della mia implementazione, in python, dei più importanti algoritmi che vi possono aiutare per trovare le policy in ambienti stocastici. Potete trovare una più dettagliata descrizione delle Markov Decision Process nelle mie slide che ho preparato per un seminario nella mia università.

Continua a leggere

Flickr Photostream e Justified Gallery

Un problema comune, per le persone che creano siti, è infatti creare una galleria di immagini elegante che è in grado di gestire le varie dimensioni delle immagini. Flickr e Google+ affrontano queste situazioni in maniera eccellente, il mio proposito è proprio quello di offrire la potenza di queste soluzioni, con un efficiente algoritmo.

Pochi mesi fa, ho scritto un plugin per WordPress che mostrava il Photostream di Flickr in una griglia giustificata. Adesso, ho deciso di fare un plugin più astratto (jQuery) che potesse essere utilizzato ovunque!

Guarda tutta la documentazione nella sua pagina del progetto. O scaricalo da github.

Miro Rubix è tornato!

Ho rimesso online un gioco che ho fatto alcuni anni fa, chiamato Miro Rubix. Lo potete utilizzare sia per PC che per PSP! Un semplice puzzle, ispirato dal famoso gioco chiamato Rubik’s Cube. Il puzzle inizia con due figure iniziali dove solamente quella di sinistra è mescolata in vari quadranti. Muovendo solamente le colonne e le righe della figura di sinistra, bisogna riuscire a comporre la figura originale mostrata sulla destra. Il gioco ha a disposizione varie immagini per i puzzle, oppure si può giocare con i puzzle classici, questi ultimi sono immagini particolari che hanno solamente alcuni quadranti colorati. Inoltre potrete utilizzare le vostre immagini per creare i puzzle!

Continua a leggere

Flickr Photostream

Il mio primo plugin per WordPress!
Questo plugin per WordPress vi permette di mostrare il Photostream di Flickr nel vostro blog. Utilizzando Justified Gallery, questo vi permette una stupenda disposizione delle miniature delle immagini. Ci sono varie configurazioni per settare l’altezza delle righe e il comportamento dell’ultima riga. Puoi mostrare le foto utilizzando un lightbox, o aprendo le pagine direttamente con un link a Flickr. Potrete configurare il numero delle foto da mostrare in ogni pagina, e poi, navigare tra le varie pagine. Il plugin sceglie la giusta risoluzione delle immagini, utilizzando i suffissi di Flickr, in questo modo le miniature avranno sempre la massima risoluzione.

Guardalo meglio su pagina ufficiale.

Richiesta Network Time Protocol in C#

Di recente, ho scritto un’applicazione in C# che ha bisogno di conoscere se il sistema ha il tempo corretto. Ho perciò fatto una classe che recupera il tempo utilizzando i server NTP. La classe è scritta per fare in modo che non vengano richiamati sempre gli stessi server, utilizzando un semplice vettore circolare. Per i dati che vengono ritornati dal server, vi invito a leggere RFC-2030.

Continua a leggere