E’ arrivato il momento di andare in Pensione!

Il mio Smart Band 5, compagno di alcune migliaia di chilometri in piscina, è proprio malandato… è cominciato tutto qualche giorno fa, lentamente, in modo subdolo: prima per qualche millimetro di lunghezza, poi l’altro giorno su tutto il perimetro, probabilmente a causa del caldo estremo e della guarnizione secca, l’acqua è penetrata sotto al display, bloccandolo per qualche ora.

Il giorno successivo, con un semplice colpetto, si è aperto!!

Dopo quasi tre anni è arrivato quindi il momento della dismissione. Per l’utilizzo che mi serviva, tutto sommato questo MI Smart Band 5 ha avuto un ottimo rapporto qualità/prezzo/durata.

Ho deciso di rimanere fedele al marchio Xiaomi: è in arrivo il fratello maggiore MI Smart Band 7, leggermente più grande e con più funzioni e decisamente più visibile sott’acqua.

Il re è morto, lunga vita al re!

Pubblicato in Pensieri | Lascia un commento

Visualizzare i metadati degli allegati delle liste sharepoint

In Sharepoint, mentre le document library sono “documento-centriche” (un documento con eventuali metadati), le liste sono “metadati-centriche“, ovvero aggregazioni di metadati con uno o più eventuali allegati.

Gli allegati nelle liste in Sharepoint 2007 non hanno la stessa dignità di quelli delle document library: non sono versionabili versionamento e non hanno attributi, venendo esposti nel dettaglio di un Item dopo i metadati e solo come elenco di titoli con collegamento ipertestuale.

In un progetto che sto seguendo, un obiettivo è quello di ordinare e visualizzare gli allegati di un ListItem insieme alla loro data di caricamento/modifica, utilizzando solo semplici personalizzazioni del frontend e quindi senza scrivere bytecode. Devono quindi essere recuperati gli attributi/metadati degli allegati (per es. data e ora di creazione, data e ora di modifica).

Purtroppo tramite

  • interfaccia standard
  • personalizzazione delle webpart con Sharepoint Designer (SPD)
  • utilizzo dei web services di sharepoint (per es. lists.aspx con SPServices) in logica lato client (javascript)

non c’è possibilità di reperire tali metadati, anche se questi esistono: per esempio vengono visualizzati in Explorer usando la funzione “Apri con Esplora Risorse” e dai vari applicativi MS Office integrabili con Sharepoint.

Queste funzioni e questi applicativi usano il protocollo standard WEBDAV, implementato anche da Sharepoint, e quindi l’idea è quella di utilizzare tale protocollo dal browser tramite javascript per leggere questi dati.

Esistono molte librerie javascript, ma ho preferito spendere qualche minuto per fare un po’ di reverse-engineering del protocollo (utilizzando Wireshark) implementando così una funzione ad hoc, e acquisendo poi ulteriore know how.

In sisntesi WebDAV è un’estensione del protocollo HTTP, poiché aggiunge alcuni nuovi metodi come PROPFIND, MOVE, DELETE in aggiunta ai canonici  GET, POST, PUT.

Per i miei scopi ho analizzato solo il metodo PROPFIND, che permette di leggere (anche a più livelli) gli attributi delle risorse partendo da una data URI, in particolare vengono restituite in un Blob XML le seguenti informazioni:

  • l’url
  • il displayname
  • la data di creazione (UTC)
  • la data di modifica (UTC)
  • la dimensione in byte
  • l’autore dell’ultima modifica
  • la tipologia della risorsa (file o folder)

Per ottenere la risposta XML basta effettuare una chiamata jquery del tipo:

$.ajax({ 
 url: davurl,
 method: "PROPFIND",
 async: false,
 headers: { Depth: 1 } /* 0 = only the url-resource, 1 = the folder and the resources contained , undefined = recurse subfolders */
 }).done(function(data){ 
    var x = data.xml;
   // here analize the xml response
 });

I parametri sono l’url della risorsa (file o cartella) e  il numero di livelli  da analizzare (Depth ), che viene invece passato in un apposito campo nell’header della richiesta HTTP.

Per leggere la risposta usiamo sempre jquery (o meglio l’estensione xpath) per navigare l’XML:

$(x).xpath("//D:response",resolver).each(function(){ 
 
 var url = $(this).xpath("D:href",resolver).text();
 var displayname = $(this).xpath("D:propstat/D:prop/D:displayname",resolver).text();
 var creationdate =$(this).xpath("D:propstat/D:prop/D:creationdate",resolver).text();
 var size =$(this).xpath("D:propstat/D:prop/D:getcontentlength",resolver).text();

});

dove

resolver = function(prefix){
   return "http://www.w3.org/1999/xhtml"; 
}

Per renderne più agevole l’utilizzo, ho incapsulato il “codice WebDav” in una classe javascript “DavResource” (cfr. allegato all’articolo), che ha come prerequisiti le seguenti librerie:

  • JQuery (jquery.js >= 1.9.1)
  • Xpath (jquery.xpath.js)
  • MomentJs (moment.min.js)

In Sharepoint basta quindi personalizzare la pagina contenente il dettaglio del ListItem di interesse, ovvero DispForm.aspx, inserendo una Webpart Editor Contenuto collegata ad uno script HTML precedentemente caricato in Sharepoint stesso, contenente i riferimenti  agli script e la seguente sezione di codice:

<script type="text/javascript">

$(function() {
 $("#idAttachmentsTable").find("a").each(function(){
  var lnk = $(this).attr("href");
  var dav = DavResource.getDAVResource(lnk.replace(/ /ig,"%20"));
  $(this).after("&nbsp;"+ dav.lastmodified); 
 });
} 
 
</script>

Tale codice individua la tabella degli attachment e per ogni attachment recupera ed espone i relativi metadati (qui viene esposta solo la data di ultima modifica)

Metadati allegati sharepoint

Metadati allegati sharepoint

Note

I 2 metodi statici getDAVResource/getDAVResources della classe DavResource ritornano oggetti (rispettivamente un singolo ed un array) della classe stessa, aventi i seguenti attributi:

  • url
  • displayname
  • creationdate (formato ISO in Localtime)
  • lastmodified  (formato ISO in Localtime)
  • isfolder
  • contentlength
  • modifiedby

Download

Scarica la classe javascript DavResourcejquery.DavResource.js.zip (1KB), che non vuole essere sicuramente un progetto finito, ma un punto di partenza per uno nuovo.

Alcuni riferimenti

WebDAV Resources http://www.webdav.org/

WebDav for dummies http://blog.coralbits.com/2011/07/webdav-protocol-for-dummies.html

 

 


Pubblicato in Sharepoint, Software | Contrassegnato , | Lascia un commento

Anno nuovo, sito nuovo

Era da qualche qualche anno che avevo in cantiere di farlo, negli ultimi mesi l’avevo creato e rivisto più volte per la solita mania di perfezione….

Alla fine mi sono deciso e l’ho pubblicato, così com’era, anche se non è perfetto come me lo immaginavo: il sito per la pubblicazione delle mie fotografie, dalla grafica semplice, per dare maggior risalto all’immagine e dalla navigazione veloce a soli 2 livelli.

Ho pubblicato subito un set limitato di immagini, ma molto presto ne aggiungerò tante altre…

Mauro Dalfreddo Photography

Mauro Dalfreddo Photography

In questo sito desidero presentare i miei lavori come fotografo amatore, voglio esporre alcune foto scattate nei viaggi e negli itinerari percorsi,  soprattutto quei paesaggi e quei particolari che mi hanno particolarmente colpito. 
Solitamente utilizzo la post-elaborazione digitale, non per modificare radicalmente la foto,  ma per far si che l’immagine rispecchi quello che i miei occhi e i miei sensi hanno percepito al momento dello scatto:  voglio quindi tentare di comunicare le emozioni provate in quegli istanti.

Possiedo una Canon EOS 600D con ottiche Tamron 18-270 e Sigma 8-16 e cerco di coltivare la mia passione per la fotografia,  scatti e postproduzione, mediando tra i numerosi impegni professionali e familiari.

In fondo è vero, non è sempre l’attrezzatura che fa la foto: è la mente, il cuore e … un pizzico di fortuna!

Riferimenti

Mauro Dalfreddo Photography:  http://www.dalfreddo.it/ o http://www.dalfreddo.it/photo/

 

 

 


Pubblicato in Fotografia, Pensieri | Contrassegnato , , | Lascia un commento