Skip to content
Archive of posts filed under the Misc category.

YQL, Yahoo! Query Language

Da sempre ho sostenuto che Yahoo! è una delle realtà più attive per quanto rigarda la creazione di tool potenti e di facile impiego per la presentazione e manipolazione delle informazioni null’universo di Internet. Basta pensare a Yahoo! Pipes, BOSS, le API del suo motore di ricerca e diverse altre cose.

A Londra ho conosciuto YQL, Yahoo! Query Language, uno strumento le cui potenzialità mi hanno davvero strabiliato! YQL, infatti, permette di interrogare un insieme di dati con una sintassi molto simile all’SQL (per i dotnettari, praticamente e’ come usare LINQ). Il bello e’ che gia’ pronti per queste ricerche ci sono una marea di fonti: Flickr, Upcoming, Yahoo! Messenger, Google, Facebook, Twitter, Friendfeed, Lastfm, WordPress e molte, molte altre.

Per usare YQL basta una semplice query REST in GET e i risultati possono essere ritornati sia in JSON che in XML. Ad esempio, per conoscere il mio ultimo status su Twitter, va usata una query con questa sintassi:

select * from twitter.user.status where id='rainbowbreeze'

che tradotta in una richiesta REST con output XML, torna questi dati qui. Assolutamente fantastico, basta una veloce botta di parsing e si ottengono in un attimo le informazioni ricercate.

Come e’ facile notare, non sono passato per le API di Twitter, e questo significa aver risparmiato un bel po’ di codice. Certo, non ho tutte le stesse funzionalità esposte dalle API, ma davvero ne ho sempre ed in ogni caso bisogno? Tempi di sviluppo tremendamente abbassati, con indubbi vantaggi per il porting multipiattaforma dei programmi per mobile.
Continue reading ‘YQL, Yahoo! Query Language’ »

Over the Air, il ritorno a casa

OverTheAir 09, SAY development processAnche stavolta l’Over the Air ha lasciato il segno, regalandomi 27 ore continuative e vissute tutte d’un fiato, completamente dedicate alle tecnologie mobili. Per la cronostoria di quanto accaduto c’e’ il flusso di tweet dell’evento, mentre di seguito i miei pensieri degni di nota.

Puntare il proprio telefonino verso il cielo e vedere quali sono i voli sopra la propria testa, oppure, in un porto, inquadrare una barca e ricevere informazioni sul suo carico con la possibilita’ di essere messi direttamente in contatto con la cabina di pilotaggio. Piena esplosione creativa e progettuale per l’augmented reality, sia a livello di possibili scenari futuri, sia per quanto rigarda modalità d’uso nel presente C’era da aspettarselo doputtutto, dato che gli smartphone odierni aggregano informazioni, contesto ed estrema portabilità. Layar e Wikitude hanno fatto da apripista in questo mondo, e grazie alle API di Wikitude si puo’ sperimentare a costo zero anche nel proprio “garage” domestico. C’era anche molto voglia di creare gruppi di appassionati / specialisti del settore per ragionare assieme sopra a questo tema. Se a qualcuno interessa, pingate sia Paul Foster che Mark A.M. Kramer. Penso che nei prossimi anni questo sara’ il campo dove maggiormente si spingera’ il piede dell’acceleratore per i device mobili.

Forte anche il tema dello sviluppo multipiattaforma, racchiuso sotto la parola widget, che grazie al solo utilizzo di tecnologie standard quali HTML, CSS, Javascript promettono molto bene. Purtroppo l’accesso alle peculiarita’ del dispositivo (gps, rubrica, calendario ecc) rimane ancora differenziata a seconda della piattaforma. Stesso discorso per il modello di sicurezza da adottare, per sapere quale applicazione puo’ accedere al mio calendario o trasmettere la mia posizione in giro per la Rete. Ci sono diverse proposte (BONDI) pero’ nessuna ha avuto ancora il sopravvento. La tecnologia dei widget, comunque, rimane ancora pionieristica e molto giovane: Opera li supporta ormai da un annetto, Windows Mobile dalla versione 6.5, Nokia dall’ultima versione di Symbian.

Continue reading ‘Over the Air, il ritorno a casa’ »

Chiamare una scalar-valued function da Visual Basic 6 con Ado 2.x

Mettiamo di avere nel nostro database una scalar-valued function cosi’ definita

CREATE FUNCTION [dbo].[fnFaiCoseConMessaggio]
(
-- Stringa da spezzare a meta’
@MsgDaProcessare varchar(255)
)
RETURNS float
AS
BEGIN
-- Declare the return variable here
DECLARE @Result varchar(255)

-- fa tutta una serie di cose con il messaggio iniziale
-- ….
SET @Result = @MsgDaProcessare
-- ….

-- ritorna il risultato dell’elaborazione
RETURN @Result
END

Di seguito il codice per poter chiamare la scaled function da Visual Basic 6, utilizzando ADO

Continue reading ‘Chiamare una scalar-valued function da Visual Basic 6 con Ado 2.x’ »

Scrolling con la mouse wheel in VB6

vb6.jpg
Se, alle soglie del web semantico e del Software As A Service, siete ancora alle prese con lo sviluppo in Visual Basic 6, allora avrete sicuramente un mouse con rotella di scorrimento che non vi funzionera’  all’interno dell’IDE (oltre che la necessita’ di fare un punto della situazione della vostra vita al piu’ presto).

Fortunatamente qualcuno ha avuto compassione di voi e ha realizzato un programmino che risolve il problema:
Dalla KB Microsoft: Mouse wheel events do not work in the Visual Basic 6.0 IDE
E dall’autore del programma: Scroll Wheel Fix for VB6

Vi sentite gia’ meglio, vero? Si, pero’ continuate a riflettere sul fatto che state ancora usando VB6. Oggi siamo nel 2009, VB6 si installava da dischetti, neanche tanti poi!

Continue reading ‘Scrolling con la mouse wheel in VB6’ »

Da float a stringhe binarie e viceversa con T-SQL

Potrebbe capitare l’esigenza di dover convertire dei float in stringa, ad esempio per memorizzare dei nuovi dati numerici nei campi stringa lasciati liberi in un db legacy, le cui tabelle non possono per nessun motivo essere estese o modificate.

La soluzione piu’ semplice e’ memorizzare i numeri all’interno del campo stringa nella loro rappresentazione numerica. Ad esempio, se devo memorizzare due numeri

123,4567 e 234,5678

e considerando almeno 10 caratteri per numero, la corrispondente stringa sarÃ

“  123,4567  234,5678″

Per la riconversione al valore originario, leggo la stringa a blocchi da 10 caratteri e la trasformo. Semplice, veloce e leggibile anche ad occhio nudo.

Ma questa non sempre non e’ la soluzione praticabile se lo spazio che si ha a disposizione e’ poco e se i valori dei numeri devono essere preservati nell’interezza del loro range di valori.

Prendiamo il caso  che debba memorizzare 30 quantita’ e 30 prezzi, con un dato di tipo float, per un articolo che ha una scala taglie, come una scarpa, un capo di abbigliamento o altro prodotto fashion.

Se usassi la rappresentazione numerica dei valori, e considerando almeno 16 cifre per ogni numero (virgola compresa), avrei bisogno di (30 + 30) * 16 = 960 byte. Memorizzando invece nella stringa la rappresentazione binaria di valori, necessiterei di (30 + 30) * 8 = 480 byte (il float occupa 8 byte). Certo, i dati avrebbero bisogno di una conversione apposita prima di essere trattati e sarebbero illeggibili “ad occhio nudo”, ma risparmierei la meta’ dello spazio!

Tutto dipende dai casi, ma per quei vecchi db dove ci sono magari 500 caratteri a disposizione per le ulteriori personalizzazione utente, questo giochetto ha preservato la mia sanita’ mentale. ;)

Continue reading ‘Da float a stringhe binarie e viceversa con T-SQL’ »

Hacking facili facili grazie ai motori di ricerca

Partendo da un tweet di robconery che mostra quanto sia facile bucare database grazie alla sbadataggine di qualche sviluppatore, ho fatto un po’ di prove e ho esteso il concetto.

 

Ottenere la password di sa e tutti gli altri dati necessari per connettersi ad un db (molti risultati riportano db locali, ma basta spulciarseli per trovare gradite sorprese)

http://google.com/codesearch?q=sa+connectionstring+file%3Aweb.config
http://google.com/codesearch?q=sa+connectionstring+file:app.config

Se poi vi interessano username le password in generale:

http://google.com/codesearch?q=password+connectionstring+file%3Aweb.config
http://google.com/codesearch?q=password+connectionstring+file%3Aapp.config

 

Qualche phpMyAdmin aperto senza nessuna protezione, e con l’utente root configurato puo’ fare sempre comodo:

http://www.google.it/search?q="running+on+localhost+as+root"+intitle%3Aphpmyadmin

Se poi non si e’ interessati all’account di root ma solo ad un generico account, basta modificare la query. Magari anche altri accout hanno ottimi permessi di accesso:

http://www.google.it/search?q="running+on+localhost+as"+intitle%3Aphpmyadmin

Continue reading ‘Hacking facili facili grazie ai motori di ricerca’ »

Mozilla Prism, un alleato per la propria privacy online

Mozilla Prism
Ho provato Prism, il nuovo prodotto dei Mozilla Labs, che permette di “staccare” un sito dal proprio browser e eseguirlo come se fosse una vera e propria applicazione, in un contesto separato.

Devo dire che, nonostante il programma sia nella sua prima versione beta (anche se, con il Web 2.0, il concetto di beta e’ andato ormai perso), sono stato piacevolemente impressionato dalla facilita’ di configurazione e dai risultati ottenuti.

Uno degli utilizzi a mio avviso interessante di Prism e’ quello per la tutula della propria privacy online. Prendiamo il mio caso: al lavoro tengo aperta, nella prima scheda del browser, la mia casella email su GMail. In tutte le altre tab si svolge invece il mio quotidiano uso della rete: ricerca, navigazione, uso di servizi ecc.

Continue reading ‘Mozilla Prism, un alleato per la propria privacy online’ »

SourceForge, CodePlex, GoogleCode e GitHub: quale scegliere?

Stimolato da una recente conversazione con Lorenzo, ho iniziato seriamente a cercare un code repository dove appoggiare i progetti open-source che di tanto in tanto sviluppo.

Di alternative per l’SCM (Source Code Management) ce ne sono diverse, e quelle che ho preso in considerazione sono state: CodePlex, GoogleCode, SourceForge, GitHub.

Alla fine, per ospitare i miei progetti, ho scelto SourceForge, nonostante i pessimi diritti che si arroga sul codice che ospitero’ nei loro server e l’indecisione, fino all’ultimo, con GitHub. Motivazioni principali l’ottima molto orientata allo sviluppatore nei servizi offerti (l’rsync per fare il mirror del repository e’ fantastico), l’ampio numero di SCM e DSCM supportati, la grande disponibilita’ di client nei principali IDE per gestire Subversion  e nonostante abbia influito in maniera impercettibile, il fatto che e’ il suo nome e’ stato, da sempre, sinonimo per l’hosting per progetti open source.

Se dovessi fare pero’ qualcosa in azienda, non ci penserei due volte a metter su un server con Git e tutto il resto, interfacce web ai progetti comprese.

Di seguito riporto le mie considerazioni personali su ognuno dei servizi esaminati, magari potrebbero tornare utili a qualcuno.

Continue reading ‘SourceForge, CodePlex, GoogleCode e GitHub: quale scegliere?’ »

Backup di file sotto Windows con robocopy

Sebbene non abbia ancora trovato sotto Windows un programma potente e flessibile come rsync, ci sono comunque delle alternative che si prestano abbastanza bene per fare il backup dei dati in maniera “amministrativa”, cioe’ attraverso script configurabili e dove e’ richiesta una minima, se non nulla, interazione da parte dell’utente.

Ad esempio, mi sono trovato molto bene con robocopy, un’utility gratuita rilasciata da Microsoft e inclusa nel Resource Kit per Windows XP e Window Server.

Le potenzialita’ di questo programma sono ampie, basta guardare tutti gli switch a disposizione da riga di comando: si va dalla copia dei file conservando ACL, copia ricorsiva di un percorso totale oppure fino a n livelli, esclusione di certi file o directory, copia a partire da una certa data, supporto ai percorsi UNC e molto altro.

Io, per esempio, per fare un semplice backup dei miei progetti sul server principale, ho creato questo semplice file batch:

@ECHO OFF

ECHO Starting %0 (press a key to confirm, CTRL+C to abort)?

PAUSE > NUL

SET BackupPath=\\backupserver\d\Wingroup\ProgettiNET\
SET LogFile=%temp%\BackupLog.txt
SET CommandFile=Robocopy.exe
SET CommandOptions=/E /R:2 /W:1 /TBD /NP /PURGE

REM ----------------------------------------------------
REM Programmi su disco D:

SET BasePath=D:\Documenti\Develope\
SET ProgramToCopy=PPC - Avanzamento

ECHO Backup %BasePath%%ProgramToCopy%...
"%CommandFile%" "%BasePath%%ProgramToCopy%" "%BackupPath%%ProgramToCopy%" %CommandOptions% > "%LogFile%"

SET ProgramToCopy=PPC - TrasferimentoColli
ECHO Backup %BasePath%%ProgramToCopy%...

"%CommandFile%" "%BasePath%%ProgramToCopy%" "%BackupPath%%ProgramToCopy%" %CommandOptions% >> "%LogFile%"

[....]

NOTEPAD "%LogFile%"
DEL "%LogFile%"

Continue reading ‘Backup di file sotto Windows con robocopy’ »

Ottimizzare il consumo di RAM di VMWare Server disabilitando webAccess

Sulla mia linuxbox nuova fiammante, ho installato VMware Server 2.0 a 64 bit e ho notato che, rispetto alla precedente versione 1.x che usavo, il consumo di RAM e’ aumentato di parecchio.

Infatti, ad un primo utilizzo della nuova console web, la RAM occupata complessivamente da VMware sale a più di 500 Mib. Un’esagerazione! Andando ad indagare sul perche’, ho notato che la maggior responsabilita’ di questa crescita e’ da imputare a webAcess, la web management console di VMWare Server, posizionata nel percorso /usr/lib/vmware/webAccess/java/jre1.5.0_15/bin/webAccess. Considerato il suo sporadico utilizzo, solo per creare o modificare le macchine virtuali, si puo’ tranquillamente disabilitare.

Sotto Linux, ci sono degli script che provvedono all’avvio dei servizi: /etc/init.d/vmware-autostart, /etc/init.d/vmware-core, /etc/init.d/vmware-mgmt, che sono tutti link simbolici a /etc/init.d/vmware. In quest’ultimo file occorre modificare la parte

case $1 in
start)
service_vmware "$1"
service_vmware_mgmt "$1"
service_vmware_autostart "$1"
;;

e farla diventare

case $1 in
start)
service_vmware "$1"
#service_vmware_mgmt "$1"
vmware_start_hostd
service_vmware_autostart "$1"
;;

Continue reading ‘Ottimizzare il consumo di RAM di VMWare Server disabilitando webAccess’ »