A Ovest Di Paperino

Welcome to the dark side.

  • Lunedì quiz 8

    Input: un numero intero non tanto grande.

    Output: un array contenente i nodi foglia di un albero binario inverso completamente bilanciato di profondità pari al valore in input.

    Per albero binario inverso intendo un albero in cui ogni nodo ha un puntantore al nodo “padre”.

    BinaryTree

    È responsabilità dell’algoritmo allocare un numero necessario e sufficiente di nodi (il campo “data” non è necessario da inizializzare).

    -quack

  • HD7 e WP7: il buono, il brutto e il cattivo

    Recensione “ufficiale” del telefono, partendo dal verdetto finale: troppi difetti di gioventù, se quelle teste di cippa lippa del team di sviluppo avessero fatto provare il dispositivo a qualche vetusto di smartphone come me, molti di questi difetti non sarebbero neanche esistiti.

    Il buono:

    1. Lo schermo. Sarà che sto invecchiando, ma anche se ci vedo bene la grandezza sembra “giusta”. La qualità del touchscreen mi sembra superiore, nonostante la pellicola di protezione, a quella del Nexus One. Forse la pellicola è l’unico accessorio decente venduto a corredo nei negozi T-Mobile. Uno schermo grande vuol dire anche una tastiera virtuale più grande e quindi migliore digitazione
    2. L’interfaccia. Non parlo di bellezza ma di praticità. Ad una settimana mi sembra se non migliore per lo meno alla pari
    3. Zune software: il pensiero che ci voglia una applicazione per fare l’upload delle canzoni mi fa venire il mal di pancia. Però devo dire che Zune Software è un ottimo digestivo: avevo avuto qualche noia con un filmato pescato in rete (non per piratare ma mi serviva Biancaneve in italiano); Zune non ha riconosciuto il codec (GSpot riporta DIVX3) e si è rifiutato di farne l’upload; il Nexus One si beve tutto ma alla fine il filmato non si vede. Tra i due approcci insomma, meglio quello guidato soprattutto visto che, a differenza di iTunes, il telefono è utilizzabile out-of-the box senza problemi, audio/video a parte.HTC-HD7-from-T-Mobile-1-e1286806131609[1]
    4. Wi-Fi Sync. Se si collega il telefono all’alimentatore e si è in presenza di una Wi-Fi casalinga, dal punto di vista del PC risulta collegato come se fosse in USB, con lo stesso segnale audio tipico di quando si inserisce una pennetta USB. Non ho ancora esplorato tutte le possibilità ma me gusta mucho
    5. Zune Pass. Non sono abbonato, probabilmente non mi interessa ma mi fa piacere che l’optional esiste
    6. Integrazione con XBOX Live: sono un utente XBOX live, ci giocavo a Fifa 20xx. Fatta bene
    7. Facebook: piacevole anche se passibile di miglioramenti
    8. Il pulsante dedicato per le foto. Torna utile per scatti semi-improvvisati.
    9. La radio Fm, ora posso tornare in palestra…. (se!)
    10. Il piccolo cavalletto, davvero una genialata.
    11. Sapere che posso scrivere applicazioni .Net/XNA mi fa godere come un riccio anche se non ne scriverò mai una
    12. L’integrazione con Exchange: perfetta, perfetta, perfetta. Solo questo vale il “prezzo” della piattaforma. Tutti i miei colleghi con iPhone sono ultrafelici per come tutti gli scenari end-to-end siano stati “inchiodati” al primo colpo
    13. Metro: la qualità visiva è sorprendente. Il rapporto tra la grandezza dei font, gli elementi della UI e il layout è da 10 e lode. In questo Android è molto indietro
    14. Overall Experience: curata meglio di Android nonostante qualche feature in meno. Meno frammentazione, più guidelines = risultati superiori alla media
    15. Netflix: adesso che finalmente si son decisi a proporre un piano streaming only sapere di poter guardare qualche episodio/film durante qualche attesa noiosa mi alletta parecchio

    Il brutto

    1. Non c’è la meravigliosa possibilità di poter cambiare al volo la lingua della tastiera virtuale e dell’annesso dizionario. Questo diventa insopportabile visto il punto successivo
    2. Il sistema dei suggerimenti è molto anni novanta. In Android la parola “sbagliata” è comunque la prima scelta possibile, quindi anche se la tastiera fosse impostata sul linguaggio sbagliato, il dolore è davvero minimo. In WP7 alcuni suggerimenti vengono automaticamente accettati. Siccome tendo a guardare la tastiera mentre scrivo e mi aspetto che se ci azzecco non devo correggere, quando lo sguardo volge a quello che è stato effettivamente scritto rabbrividisco
    3. Tastiera: mi sarebbe piaciuto un feedback tattile
    4. Client Twitter: decisamente non ci siamo. Quasi al livello di “cattivo”
    5. Assenza di power widget e in generale un sistema di notifica su cosa sia attivo: con Android è facilissimo attivare/disattivare/monitorare tutti i circuiti radio. Non ho capito infatti perché un paio di volte il blutooth si è spento.
    6. L’algoritmo di messa a fuoco: peggio della Coolpix che è scritto da tabaccai
    7. La mancanza di un sistema sostitutivo al copia ed incolla. Mi sarebbe piaciuto ad esempio un qualcosa che da una mail crei un contatto completo. Il sistema riconosce i numeri di telefono, perché non fare un piccolo sforzo
    8. Durata della batteria: sicuramente legata alla grandezza dello schermo. Non ci siamo
    9. Avrei adorato se ci fosse stata la possibilità di avere una applicazione GPS vera e propria. C’è TeleNav ma è ad abbonamento mensile/giornaliero ed il prezzo davvero non giustifica il navigatore casual come me.
    10. Il costo delle applicazioni è verso l’altro a differenza di Android. Spero che la qualità giustifichi
    11. La prima versione del market andrebbe bocciata: non ci sono suggerimenti, le ricerche sembrano funzionare solo sul nome e vengono automaticamente estese al mondo audio/video. Impossibile poi trovare qualcosa se lo spelling non è corretto al 100%: cercavo un client foursquare ma ho trovato solo canzoni. Quasi “cattivo”, si salva solo in virtù del fatto che le applicazioni sono poche e si trovano comunque in fretta.

    Il cattivo

    1. Il browser è perverso. Sinceramente imbarazzante. Perché non posso digitare l’indirizzo o aprire i preferiti in modalità landscape che mi permette una goduriosa tastiera virtuale extralarge?? Qualitativamente non arriva neanche alla sufficienza per quanto è penoso. Spero che sia la prima cosa a cui mettano mani nel prossimo upgrade vociferato per Gennaio

    Il pessimo

    1. Per far riconoscere il dispositivo correttamente sempre più spesso sono costretto a riavviarlo. Ovvero il telefono prende a caricarsi ma niente connessione USB.

    Tutto sommato il telefono è usabile nonostante i difetti di gioventù. Le pecche non sono “bachi” veri e propri come lo schifo di stack blutooth di Android, sono più che altro difetti di design. Dal punto di vista di qualità (come funziona quello che funziona) mi sembra decisamente un passo avanti alla concorrenza.

    Tutto quello che in positivo o negativo manca in questa recensione è dovuto a due motivi principali: mi è sfuggito oppure non è rilevante per l’uso che io faccio del telefono.

    -quack

  • Spin doctor

    La settimana scorsa sono stato un paio di giorni a Bellevue Square, un centro commerciale abbastanza grande e up-scale (si riconoscono dal fatto che non ci sono i piccoli booth che vendono corsi di lingue, occhiali da sole, sali del mar morto o custodie per cellulari). Mi ha fatto molto impressione vedere due cose:

    • il Microsoft Store: grande ad occhio dalle quattro alle sei volte quello di Apple a pochi metri di distanza; fila immensa per entrare immagino più per la novità che per la possibilità di comprare prodotti disponibili altrove
    • la fila per la Kinect, un grandissimo successo che farà la XBOX 360 il regalo dell’anno anche per le famiglie di solito propense verso la Wii

    Son contento così non se con un po’ di rammarico che si poteva fare meglio e prima. Apple intanto diventa sempre più antipatica: una vetrina in larga parte occupata dalla gigantografia dei Beatles. Alla fine ce l’ha fatta Steve Jobs ma se ci penso, mi chiedo: ce l’ha fatta a far che? A portare su iTunes la sua band preferita? E quindi? Sicuramente non è persona che non può permettersi di comprare la discografia del quartetto in tutte le edizioni più esclusive. Altrettanto sicuramente non è mecenatismo allo scopo di far conoscere al mondo, dietro lauto compenso, i propri beniamini, soprattutto quando non se li è filati davvero nessuno. Vendetta nei confronti dell’etichetta discografica più volte ostica per motivi di copyright? Dubito. Credo che sia invece soddisfazione del desiderio di onnipotenza che si può provare nel far soldi coi propri miti: “quand’ero giovane mettevo i soldi da parte per comprare i dischi dei Beatles, ora sono i Beatles che lavorano per me”. Anyway… al centro dei miei pensieri di oggi c’è la cosiddetta SIM universale, secondo me un’idea malvagia e perversa figlia della mania di controllo di Jobs. Leggendo i soliti siti pro-Apple sono rimasto sorpreso che anche su tale questione c’è un modo per far sembrare il progetto come vantaggioso per i clienti anche quando le cose violano palesemente i principi economici di base come una mela che cade verso l’alto viola i principi della fisica.

    Faccio un esempio: il successo del sistema GSM è dovuto al fatto che si può scegliere telefono in maniera indipendente dall’operatore. Finora, sussidi per l’acquisto a parte che reputo tendenzialmente giusti se tengono in conto tutti i fattori in gioco, le cose sono andate più o meno bene. Con l’iPhone però questo è cambiato: in America è impossibile comprare il telefono ed usarlo con T-Mobile, non solo a causa di difficoltà tecniche inventabili solo in USA, ma anche a causa di tutti i lucchetti imposti dagli accordi tra Apple e AT&T. Nonostante AT&T causa contratti capestro che fa firmare ai suoi utenti non abbia nessun incentivo a bloccare tecnicamente il telefono, il telefono è comunque bloccato. Ciononostante chiunque può sfilare la SIM AT&T e infilarci quello che vuole facendo decadere la garanzia, magari per usare il telefono in giro per il mondo senza le necessarie donazioni di organo per finanziare il roaming.

    Come si può girare la notizia è farla sembrare un’innovazione benvenuta agli utenti? Un paio di perle:

    In questo contesto, ogni utente iPhone o iPad diventerebbe di fatto un utente in roaming su qualunque network reale, ma senza le complicazioni del caso. Per esempio, si potrebbe acquistare un pacchetto ore, un giorno, una settimana o un mese di connettività in Europa senza doversi preoccupare di SIM, gestori o tariffe di roaming.

    spindoctorGeniale. Non vedo l’ora che Apple diventi un concessionario di auto virtuale. Apro il portafogli, tiro fuori la moneta, ed Apple sceglierà per me l’auto che va bene senza che mi debba preoccupare di avere a che fare con gli antipaticissimi agenti del punto vendita.

    Se un utente dovesse riscontrare difficoltà a connettersi (scarsa copertura, problemi di rete, lentezza, etc.), potrebbe chiedere ad Apple di intervenire, e grazie agli accordi siglati con multipli operatori, potrebbe effettuare istantaneamente il passaggio verso un network più performante.

    Questo in un mondo perfetto in cui tutti gli operatori del mondo sono felici di dare una percentuale dei loro introiti ad Apple sapendo che Apple potrebbe decidere, senza penali, senza vincoli o altro di passare il cliente ad un gestore della concorrenza.

    Ma secondo me il fondo lo si tocca con questa frase:

    Diciamo così perché se da una parte l’idea appare davvero rivoluzionaria, dall’altra l’esistenza di un “grande intermediario e consigliere degli acquisti dei clienti” per musica, video, software e connettività fa un po’ paura. Anche se ha la mela sopra.

    Grande fratello incute sempre timore. Soprattutto se ha la mela sopra!

    -quack

    P.S. è triste vedere i post di gente che sta passando con gioia e gaudio da iPhone a WP7. Qualcuno è rimasto cliente Apple nonostante passasse più tempo ad avere a che fare con i bachi di Exchange o il sensore di prossimità, che ad usare il telefono come tale. Potevano per lo meno sforzarsi di provare Android, per ora la piattaforma migliore anche se con un margine molto piccolo.

  • Lunedì quiz - 7

    Scrivere un algoritmo super performante in grado di analizzare il risultato di partite tic-tac-toe e dichiarare se c’è il vincitore per ogni partita. Si assume che le partite abbiano risultati validi quindi la risposta è limitata ad 1, X o 2.

    image

    -quack

  • Incentivi

    Il sottotesto dei due libri dedicati alla Freakonomia è abbastanza elementare: azzeccare gli incentivi giusti è un processo sperimentale non privo di errori; facilmente evidenziabili a posteriori ma alcune volte quasi impossibili da pronosticare a priori.

    La questione è rimbalzata nei miei pensieri leggendo uno degli ultimi post di Raymond Chen, intitolato If you measure something, people will change their behavior to address the measurement and not the thing the measurement is intended to measure. Nel post lui fa riferimento ad aneddoti molto ben conosciuti nell’ambiente. Partendo dal manager che misurava la produttività utilizzando il numero di checkin come metrica, passando per gli operatori di Amazon che riattaccano il telefono in maniera brusca e per finire al mercato nero dei bachi. Una storia quest’ultima abbastanza “recente” se si guarda la data di pubblicazione. A quanto pare la famosa vignetta di Dilbert che ha da poco compiuto quindici anni non è molto conosciuta negli ambienti del management:

    image

    In Microsoft esiste una pratica molto simile e serve ad incoraggiare l’individuazione di bachi al di fuori del processo formale di testing; si chiama Bug Bashing, si invita tutto il team a cercare quanti più bachi possibili nel prodotto e vince che raccoglie più punti in base alla qualità e alla quantità dei bachi trovati. L’effetto collaterale è che, non appena viene annunciato un Bug Bash, il test team smette di “lavorare” e documentare i bachi ed ogni elemento del team si crea una piccola riserva di bachi pronta all’uso. I developer poi finiscono per documentare bachi molto oscuri lasciando trasparire la conoscenza conscia di difetti persino molto gravi. Il trucco sta nel giusto equilibrio nel scegliere la data dell’annuncio con l’obiettivo di dare a tutti la possibilità di partecipare attivamente avvertendo con abbastanza anticipo ma al tempo stesso ridurre al minimo le riserve dei tester. Più che una scienza è un arte.

    -quack

    P.S. vado a scrivermi una Ferrari.

  • Lunedì quiz - 6

    Creare un iteratore che riceva un altro iteratore in input e rimuova i duplicati consecutivi dall’iterazione; evitare possibilmente le facility di iterazione del C# 2.0. La lista di input è fatta di interi (positivi e negativi) marcata da 0 come elemento finale.

    Esempio:

    input: 1,2,2,2,2,2,5,2,3,1,1,1,6,0; output: 1,2,5,2,3,1,6,0.

    Domanda bonus:

    Si possiedono due uova identiche che si rompono se lanciate da una specifica altezza. Stabilire da quale piano di un grattacielo di 100 piani le uova si rompono minimizzando per il caso peggiore.

    -quack

  • Stipa-link #2

    1. L’astronauta che fa causa a Dido per la foto sull’album.
    2. Come creare una meridiana personalizzata basata sulla posizione geografica. Interessante
    3. ZFS, benchmark interessantissimo.
    4. Alcune ipotesi su Stuxnet
    5. L’arte della titolazione cinematografica nella storia
    6. La guida alla codifica video per tutti i cellulari
    7. Il mercato azionario analizzato come una complicatissima macchina multitasking
    8. Come nascondere una chiavetta USB in un mouse.
    9. Gli hard disk da 3TB arrivano sul mercato. Purtroppo il mercato non è pronto (nota a margine, WHS non supporta le partizioni GPT in modalità drive extender)
    10. Non esiste un piano B per la migrazione a IPv6
    11. Sempre a proposito di HD, la recensione del RevoDrive X2. Caro Babbo Natale…

    -quack

  • Risorse per il programmatore .Net

    Raccolta di link a tool, librerie e progetti interessanti per chi programma in .Net.

    1. EmailVerify.Net: scritta da Efran Cobisi (*), autore della consigliatissima e autorevolis-sima “PowerShell 2.0 – Guida Completa”, MVP blogger, amministratore dell’altrettanto autorevole sito PowerShell.it e tante altre cose (quasi più cariche di un politico italiano ); trattasi di una libreria utile alla validazione sintattica e semantica degli indirizzi email: per semantica intendo che supporta la possibilità di controllare che una mailbox esista veramente; che non sia un indirizzo usa e getta e tanti altri controlli simili. Utile per quei siti in cui sia critico validare l’indirizzo email come nei casi di chi distribuisce trialware-shareware, comunità online “serie”, ecc. È una libreria commerciale trialware utilissima nei casi specifici come valida alternativa al processo antipatico di “ti mando una mail con un link da cliccare per confermare la tua casella”
    2. EasyHook - The reinvention of Windows API Hooking; utilissima per i programmatori più smaliziati che vogliono dirottare una API di Windows e creare il proprio FileMon/RegMon/DiskMon/NetMon/MonMon stile Russinovich senza doversi districare tra i bit e i byte in C++; opensource codeplex approved!
    3. SSH.NET Library: libreria per utilizzare le funzionalità SSH all’interno delle proprie applicazioni e magari scrivere un client super affidabile come il mio con quattro righe di codice, così poche che mi vergognerei di pubblicare…
    4. Pex and Moles: Lascio al lettore il gusto di scoprire di cosa si tratta.

    -quack

    (*) recensita dietro gentile richiesta dell’autore

  • Americo gravinese

    Piccole e grandi coincidenze tra la lingua americana e il dialetto gravinese, valide in un intorno con un raggio di 10km massimo.

    Stingy (sting’): tirchio
    Droopy (drupè): in inglese maldestro, in gravinese “cadere”
    Damage (dammagge): stesso significato

    Bonus: mouse (mauus). Verso di richiamo per gatti, non sto scherzando. Sinceramente non ho nessuna teoria a riguardo.

    -quack

  • Lunedì quiz - 5

    Data una struttura che rappresenta un nodo “persona” con due puntatori ai nodi “genitori” (padre e madre); dati due nodi di partenza, scrivere una funziona che determini se i due nodi hanno un antenato in comune.

    -quack

  • Offsite backup–parte 4: finale?

    I pezzi del puzzle e gli appuntamenti precedenti:

    1. la prima parte era dedicata ai requirement generali
    2. la seconda parte, dedicata ai punti fondamentali e ad una analisi delle possibili soluzioni
    3. la terza parte a come ho risolto il problema del criptaggio dei dati
    4. un intermezzo dedicato ad un piccolo problema con SSH

    Questo post finale è dedicato al mettere insieme i vari pezzi che compongono la mia soluzione.

    Hardware: un HD esterno Seagate con dock. Il vantaggio di tale soluzione è che ci sono dei dock con micro-Linux che potrebbero funzionare stand-alone ad un costo irrisorio per le funzionalità offerte. Ad ogni modo mi sono limitato ad usarlo come unità esterna collegata al PC offsite.

    Software:

    • OpenSSH, da installare in versione server sul server casalingo. Ovviamente va aperta l’apposita porta (22) sul firewall. Discusso in dettaglio al punto 3 di cui sopra.
    • Un client SSH fatto a mano: non è pronto per il mondo in quanto c’è ancora qualche baco da sistemare, ma l’idea è di creare un client inossidabile. Gli altri client che ho provato hanno il difetto di disconnettersi senza avvertire.
    • DeltaCopy, una versione grafica di RSync. Da installare lato client sul server casalingo e lato server sul PC offsite. Ho provato tante GUI ma questa seppur spartana ha tutte le feature che interessano: task scheduler integrato con quello di sistema e client SMTP che alla fine di ogni backup invia una mail dettagliata
    • PeoneFS, vedasi punto due di cui sopra

    Praticamente il PC offsite si collega via SSH al server casalingo. Nel collegarsi crea un tunnel-rovesciato sulla porta di RSync (873). Questo significa che la porta 873 sul server di casa sarà un tonnel alla stessa porta del server RSync sul PC offsite. Sul server casalingo ci gira il client RSync e PeoneFS; il client è configurato per fare il backup dal drive PeoneFS al server RSync ad una certa ora specifica di ogni giorno.

    Sperando che un diagramma valga più di cento parole:

    OffsiteDiagram

    Possibili miglioramenti: rsync, per quanto sia molto efficiente nel trasferire spezzoni di file, non mi sembra sia altrettanto efficiente nel caso di confronto di directory molto ampie. Quando ci sono tantissimi file in ballo come nel mio caso un backup dura almeno un’ora. Sto pensando ad un modo di utilizzare il Remote Differential Protocol in combinazione con il Sync Framework per ottenere il migliore dei mondi possibili. Ma questo è un progetto per più di un weekend.

    -quack

  • Lunedì quiz - 4

    Data una matrice di caratteri NxM ed un array di stringhe che definisce un vocabolario, trovare tutte i vocaboli contenuti nella griglia usando le regole del paroliere. Ovvero: si può partire da qualsiasi lettera e muoversi in ciascuna delle otto direzioni (incluse le diagonali) passando per una determinata lettera solo una volta. Esempio la parola ROZZA nella griglia qui sotto:

    image

    La griglia ha dimensioni conosciute ma non determinate a priori (ovvero non si può ottimizzare su dimensioni specifiche).

    -quack

  • Weekend coding

    Uno degli spezzoni più topici di “Office Space” è il momento in cui il protagonista chiede al vicino di casa che cosa farebbe se avesse un conto in banca multi milionario: spiega che il modo in cui una persona risponde da indicazioni sulle proprie inclinazioni e trovare un lavoro che risponda a tali inclinazioni è fonte di quotidiana serenità. Il vicino di casa per la verità un po’ rustico risponde che con un tal conto in banca farebbe un mini Bunga Bunga party (two chicks at the same time, man!). Il tutto mi ha fatto riflettere su come ho speso una piccola parte del mio weekend scorso…

    lawrence-office-space

    Eravamo rimasti che con MyMovies ho avuto l’opportunità per utilizzare al meglio le quintalate di byte non utilizzate. Ho pensato perciò al modo più pratico di rippare i neo-classici senza sbattermi tanto. Ho creato una piccola applicazione che non fa altro che aspettare l’inserimento di un DVD, copiarne il contenuto e sputarlo fuori. L’unica operazione manuale rimanente è quella di sfilare un DVD e infilarne un altro. Mi è sembrato opportuno fare girare l’applicazione sul server che di suo è sempre online, ma ci voleva un sistema per notificare che tutto andasse per il verso giusto o meno senza dover tenere gli occhi incollati ad uno schermo. Ho deciso per una notifica audio con tre wav distinti: uno “accessing data” per indicare che il DVD video è stato riconosciuto come tale e due suoni distinti per indicare l’esito del ripping con o senza errori. A questo punto, forte dell’esperienza di PeoneFS, ho deciso di convertire l’applicazione in un servizio (demone) in modo tale da essere resiliente al reboot e non richiedere un’utenza loggata per il tutto. Ovviamente sviluppo su Windows 7 e con dei brevi esperimenti non sono riuscito a trovare il modo per far proferire neppure un sibilo dal servizio tirato su alla meno peggio; mi son meravigliato della cosa e cercando su Google ho trovato le teorie più assurde: all’atto pratico però l’audio era perfettamente funzionante su XP/Win2k3. Ho deciso di chiedere delucidazioni interne e…

    …sorpresa! Il problema è dovuto ad un baco introdotto in Windows Vista dovuto al fatto che la sessione in cui girano i servizi non è più la stessa di quella in cui gira il desktop. Un mio collega mi ha ringraziato per la scoperta ma dubito che il baco verrà sistemato con i prossimi SP. Io mi son tranquillizzato, seguirà un po’ di fit&finish e vai con un bel ripping di massa.

    -quack

  • My Movies

    Disclaimer: i creatori di questa applicazione WorkWare promettono una licenza in regalo per chi fa una recensione. Io però non ho ancora visto niente e comunque la “recensione” la faccio volentieri lo stesso.

    Ho un serverozzo che ha ormai due slot da 3.5” liberi; ho un paio di HD impolverati da qualche tera e una prateria di byte disponibili in diminuzione costante ma non tragica. Ho pensato di utilizzare piccole lande di byte per rippare i film più neo-classici della filmografia italiana quando ho scoperto l’esistenza di “my movies”. Un plugin per Windows Media Center e Windows Home Server che permette di gestire la libreria virtuale.

    L’applicazione – accoppiata con un WebService favoloso – è una bomba in quanto fa da:

    1. gestione della collezione con tanto di meta-dati (attori, anno di produzione, copertine) sincronizzabili automaticamente con il WS04
    2. plugin per mediacenter che permette di usufruire della libreria senza sbattere tanto la testa. Scorrendo i film per copertina ed avendo accesso a tutte le funzionalità di un DVD virtuale
    3. ripping engine per Windows Home Server; configurato in una certa maniera può automaticamente rippare i dischi ed aggiungerli alla libreria automagicamente
      01 - Music Disc Copier.png

    Funzionalità a parte, che sono esattamente quello che uno vorrebbe vedere in un prodotto simile, la fattura dell’applicazione è decente seppur con qualche noia di troppo. Ad esempio, se riconosce un DVD, compare un riquadro sullo schermo del mediacenter (una specie di finestra di dialogo) che richiede l’uso del telecomando per mandarla via. Stessa cosa per l’avviso di un upgrade. Probabilmente da qualche parte c’è l’opzioncina adatta, ma mi aspetterei che di default le finestre di dialogo siano visibili per non più di qualche secondo. Un’altra noia è il modo un po’ arzigogolato con cui si devono “registrare” film non riconosciuti, come è tipico di alcuni DVD prodotti con i piedi (la maggior parte di quelli italiani, diciamolo!).

    La nota dolente è la parte dell’upgrade. My Movies infatti ha un database centralizzato basato su SQL che una volta sì e una volta pure viene aggiornato con una nuova versione del client che rende gli altri client incompatibili. Questo significa che se per sbaglio si accetta l’upgrade, lo si deve accettare su tutti gli altri PC, incluso l’Home Server. Poi mi aspetterei che lo schema di un database alla versione 3.passa non debba aver bisogno di essere aggiornato così spesso, ma come Chrome insegna ognuno conta le versioni a modo suo, non c’è nessuna regola scritta.

    L’applicazione ha alcune feature di base gratuite ed altre a pagamento sotto forma di punti (in vendita anche in cambio di moneta contante). Ci sono feature da 500 punti, da 1250 punti, ecc. però non sono mutualmente esclusive. Ovvero se compro 500 punti, sblocco tutte le feature che ne richiedono non più di 500. Se ne comprassi altri 500, sbloccherei le feature che ne richiedono mille e così via. Le feature più costose (il ripping automatico) costano in tutto 2500 equivalenti a circa 100$ che non è male. Ma la cosa più interessante è che si può acquistare punti contribuendo all’arricchimento del webservice, ovvero provvedendo i dati per i film non presenti nel loro archivio. Ogni film, in base a cosa si contribuisce, elargisce fino ad una cinquantina di punti.

    Il tutto mi ha spinto a scrivere un ripping engine per WHS molto più spartano ma anche molto più efficiente: i particolari seguiranno, è un’altra storia interessante.

    Il download e le funzionalità di base, che poi tanto di base non sono, di MyMovies sono completamente gratuite incluso l’uso del webservice, per tanto il consiglio è il solito: accattatavillo!

    -quack

  • Lunedì quiz - 3

    Mi porto un po’ avanti con un quiz molto facile rispetto ai soliti. La difficoltà più grossa è descrivere un tale algoritmo per telefono.

    Dato un albero binario di nodi contenenti due valori per ogni nodo (X, Y) e ordinato per X, trovare e stampare tutti i nodi che hanno entrambi i valori più grandi di un nodo di riferimento.

    In poche parole, implementare: PrintNodes(node root, node referenceNode)

    -quack

    (*)ordinato per X: tutti i nodi a sx di un determinato nodo K hanno X <= X(K)

  • Mac Security Features

    AppleSloppy

    [cit.]

    Per i miracoli, si stanno ancora attrezzando…

  • Offsite Backup–intervallo

    Avevo promesso un post dedicato all’assemblaggio dei vari pezzi ma mi son scontrato con qualche difficoltà con OpenSSH a cui penso valga la pena dedicare questo post. La modalità SSH che mi interessa è quella senza password e cioè basata su keyfile per fare in modo che il client installato sul mio PC di test si collegasse automaticamente al server. Il keyfile in pratica sostituisce l’uso della password tramite una chiave privata RSA.

    È stato un bagno di sangue ma ce l’ho fatta. In sintesi quello che ho scoperto. Ci sono due versioni di SSHWindows:

    1. quella ‘ufficiale’ 3.81p-1 datata 9 Luglio 2004
    2. quella derivata, 4.2p2-2, qualche anno più nuova

    La prima ha un baco molto antipatico: non riconosce i permessi per Windows e si rifiuta, nonostante sia considerato un “warning” e non un errore, di caricare un keyfile senza i permessi settati correttamente; la cosa buffa è che settarli correttamente è impossibile. Il problema si scavalca installando la ‘nuova’ versione ma non è finita.

    Sul lato server l’installazione di SSHWindows crea un servizio con permessi di LocalSystem. Questo previene la possibilità di impersonare l’utente desiderato usando il keyfile restituendo un errore di tipo “public key auth seteuid fails”. Cercando su Google e passando per tipi misteriosi che dichiarano che Windows 2003 non è un sistema multi user e blah blah blah mi son ficcato solo in vicoli ciechi. Ho provato invece a far girare il servizio OpenSSH con le credenziali di destinazione sperando che funzionasse al primo colpo. Un ulteriore intoppo, i permessi sbagliati nella cartella dei log, facilmente sistemabile.

    Riassumendo i passi correttivi:

    1. installare sshwindows in versione “derivata” su entrambi i lati della connessione
    2. seguire il tutorial indicato in questa pagina per generare la chiave RSA
    3. cambiare i permessi con cui gira il servizio OpenSSH
    4. aggiungere l’utente desiderato al folder di log

    Et voilà il gioco è fatto. Visto che sono riuscito a procurarmi ben due librerie diverse per .Net che consentono la connessione SSH, spero di trovare un ritaglio di tempo per creare un client customizzato da fare girare come un servizio alla stregua di PeoneFS. Nella prossima puntata metto tutti i pezzi insieme, ma garantisco che non sarà l’ultima. Ho in mente una versione due dell’accrocchio che… ssst…

    -quack

  • Lunedì quiz - 2

    Mentre il nonno termina la stesura dell’algoritmo precedente, il resto della tribù può focalizzarsi sul nuovo quiz.

    Input: Array di interi positivi con cardinalità N; ogni elemento appartiene al range 1…N-1; trovare un elemento duplicato (ce ne potrebbe essere più di uno). L’array è sconquassabile a piacere. Fonte interna.

  • Melazioni

    Non so in quanti l’avranno notato, ma sulla sx di questo blog c’è un nuovo gadget, un salvadanaio che rappresenta la resa finanziaria dell’acquisto di azioni Apple che ho fatto tra qualche mese fa ed oggi. Davvero niente male, considerando le piccole cifre dell’investimento iniziale e come dicevo su twitter spero che entro la Holiday season 2010 possano permettere a Babbo Natale di:

    • Comprare una Kinect in bundle con una xbox nuovo tipo (indeciso tra la 4GB e la 250GB) da installare sul retro dell’LCD casalingo
    • La steering wheel per giocare a F1 2010, con il quale non mi divertivo dai tempi di Crammond’s GP4 o del Sega’s F355 (con Alexis e il nonno navigatori in sottofondo: cen’cinquanta, cento, cinquanta!)
    • un seggiolotto come questo da tenere in ufficio con l’armamentario di cui sopra, fatta eccezione per la Kinect ad uso famigliare, per le lunghe pause di compilazione

    Non c’è nella lista un fonino WP7. Ci hanno detto che ne avrebbero ‘offerto’ uno ad ogni employee, ma il regalo si è rivelata una grossa presa per i fondelli. Infatti se vogliamo il regalo dovremmo

    • comprare l’oggetto del desiderio a nostre spese (subsidized o meno)
    • compilare moduli in triplice copia per avere il rimborso del prezzo subsidized
    • pagare di tasca nostra piano telefonico e piano dati
    • lasciare il diritto di proprietà all’azienda: non possiamo rivenderlo o regalarlo
    • per finire l’uso personale viene definito “ok”. Cioè, la casa madre potrebbe usare il mio telefono ad esempio spiandomi o chiamandomi a mie spese (visto che qui in america l’abbonato paga sempre l’air time) mentre io dovrei chiedere quasi umilmente il permesso per usare banda dati e banda voce che dovrei pagare di tasca mia.

    Ci è mancato poco che all’autore di tale genialata non gli scrivessi una mail con semplicemente “ma un grosso vaffanMulo, no??”. Quindi per principio, se le cose non cambiano con ulteriori delucidazioni e chiarimenti di fraintendimenti, sicuramente non approfitterò di siffatta vantaggiosa offerta. Certo si fa per risparmiare, ma sempre per risparmiare non si potrebbe evitare di mandare in giro grande capo aggratis (visto che il suo stipendio all’azienda costa svariati centoni al minuto) a parlare di informatica agli universitari visto che sembrerebbe come mandare un rivenditore di auto a parlare di Fisica e Aereodinamica alla scuola Normale di Pisa? Le azioni stagnano, meglio rivendere e trasformarle in melazioni…

    Bah!

  • Offsite Backup–parte 3: PeoneFS

    Dove eravamo rimasti? Una buona alternativa all’encryption di RsyncCrypto, unico tool “compatibile” con l’algoritmo di Rsync, doveva essere farina del mio sacco. Ecco al mondo la versione “stabile” di PeoneFS.

    Innanzitutto un po’ di teoria. Ci sono tanti algoritmi crittografici con svariati livelli di sicurezza. Per un backup offsite casalingo un algoritmo superveloce anche se poco sicuro è la migliore soluzione. Una classificazione piuttosto grossolana divide tali algoritmi in due macro-classi: crittografia a blocchi e crittografia a stream (non ho l’equivalente italiano a portata di mano). Questi ultimi si basano di solito sulla simmetria delle operazioni di XOR e sul fatto che un algoritmo XOR perfetto è impenetrabile (Vernam cipher) come dimostrato da Shannon in altri tempi: quest’ultimo si basa sul concetto di “password” infinita che però non ha nessuna implementazione pratica. Algoritmi più pratici come l’RC4 si basano su una password “infinita” pseudo-casuale genata da una normale chiave di testo o sequenza di byte. Come approssimazione è abbastanza buona, anche se comunque attaccabile: questo non è un problema per l’uso che di questo algoritmo ne va fatto. Io ho fatto una piccola ulteriore modifica personale per ottenere una maggiore velocità in cambio di un’ulteriore debolezza: la chiave invece di essere infinita ha un periodo di 64MB, che sono abbastanza per la tipologia di file interessata. Un’ulteriore debolezza intrinseca è il fatto che per tutti i file viene usata praticamente la stessa chiave; con l’RC4 è infatti consigliato l’uso di un nonce che però davvero non saprei per ora come implementare e se ne valga davvero la pena. L’obiettivo è di scoraggiare il ladro occasionale dallo sbirciare le foto del mio album di famiglia e – secondo la mia modesta opinione – l’obiettivo dovrebbe essere più che centrato (centratissimo?).

    Lato pratico ho voluto creare un EXE portabilissimo anche se richiede l’uso di .Net 4. Si può lanciarlo in modalità di test o previo opportuno parametro chiederne l’installazione/disinstallazione come servizio. Nel primo caso non c’è bisogno di privilegi amministrativi, nel secondo l’eseguibile provvederà a richiedere un prompt UAC, autorilanciarsi/installare/eseguire/ritornare senza colpo ferire. Questa parte tecnica è risultata essere molto interessante in quanto sono riuscito a mantenere l’illusione che ad eseguire il compito è lo stesso processo mentre in realtà viene creato un processo figlio elevato e non-visibile che comunica con il padre via named-pipe ricreando l’output nel terminale del processo di partenza. Forse parlo arabo, ma ciò nonostante la cosa si è rivelata alquanto interessante. Tutta la configurazione infine avviene tramite un banale file di configurazione con cui è possibile “montare” più folder criptati. Il download è disponibile nell’apposita pagina.

    Update. Dettaglio importante: oltre a criptare il contenuto dei file, il nome dei file e dei folder viene pesantemente offuscato sempre in maniera simmetrica. Ciò significa che se si copia un file dal folder criptato al folder originario lo stesso file apparirà in chiaro.

    Nel prossimo (ultimo?) appuntamento racconterò come tutti i pezzi del puzzle si incastrano per creare l’offsite backup casalingo più spensierato che ci sia.

    -quack