Password management nel 21 secolo

Jan 22, 2010 - 0 comments - Archiviato in: #Link #Security

La nuova release di Firefox mi ha fatto imbestialire molto. Uno dei miei plugin preferiti non funziona più, buona parte delle nuove funzionalità le trovo totalmente inutili (Personas? come on…) e quindi mi sembrava ora di tornare ad usare Chrome-on-Scroogle.

L’unico motivo però che mi legava a Firefox era la compatibilità di questo con i vari plugin di password management offerti in bundle con i lettori di impronte digitali. Deciso a trovare una soluzione alternativa, mi son imbattuto in LastPass. Solo qualche mese fa avrei fatto una smorfia di disgusto: un password manager online mi sembrava una pessima idea, dopo aver letto recensioni entusiaste di un simile sito made in Italy (Clipperz.com). Poi però ho analizzato un attimo il workflow e valutato un po’ di pro e contro mentre nel “frattempo” penso ad una soluzione “ideale”, quella di hostare un password server per conto mio.

Mi sarei potuto accontentare di KeePass ma non sono riuscito a trovare una soluzione convincente che fosse compatibile con un clipboard manager come ClipX e compatibile al meglio con tutti i browser decenti. Mi dispiacerebbe se cambiando ancora idea sul mio browser di default mi costringesse a rivedere di nuovo questa scelta.

Un password manager online ha un grosso vantaggio rispetto a quelli offline: girando contestualmente nel browser potrebbe riempire automaticamente i form di login senza passare dalla clipboard. In più un password manager online offre la possibilità di accedere ovunque alle mie password in maniera estremamente sicura tramite l’uso di One Time Password. Sia Clipperz che LastPass da questo punto di vista offrono le stesse feature ma ho scelto il secondo per due motivi fondamentali: la disponibilità di plugin nativi per tutti i browser che mi interessano (IE, FF e Chrome) che si traduce in una comunicazione più sicura ed il supporto di multi-factor authentication via YubiKey un affarino USB moooolto interessante. L’offerta di 2 YubiKey con un anno gratis di LastPass Premium (che costa 1$ al mese ed è necessario per il supporto della YubiKey) poi sembra molto allettante… un pensierino ce lo sto facendo.

La soluzione ideale? Portare il server Clipperz in .Net e scrivere una piccola extension per i tre browser. Ma è il tempo che mi manca, bisognerebbe allungare le giornate, ecc. per cui per ora mi accontento di quello che già sembra un grosso passo avanti.

-quack

Tecniche ‘avanzate’ di BSOD debugging in pseudo-SQL

Jan 20, 2010 - 0 comments - Archiviato in: #Cazzate

  1. SET @bigBang = SELECT min(DATE) from BSODs
  2. SET @buggyAppName = SELECT appName FROM Applications WHERE versionUpdateDate= (SELECT MAX(versionUpdateDate) From Applications WHERE versionUpdateDate< @bigBang)
  3. DELETE FROM APPLICATIONS WHERE appName = @buggyAppName
  4. INSERT INTO APPLICATIONS
    (SELECT TOP 1 * FROM INTERNET_OLD_APPLICATIONS WHERE appName = @buggyAppName and versionUpdateDate < @bigBand ORDER BY versionUpdateDate DESC)

In linguaggio umano: usando il reliability monitor annotare la data del primo BSOD misterioso, cercare tra le applicazioni quella che è stata rilasciata più di recente ma prima di tale data, cercare in rete una versione precedente, de-installare-nuova/installare-vecchia.

La tecnica funziona in un buon 90% dei casi dovuti a software, persino quelli più insidiosi come:

BSOD_nuovo

(nel caso specifico l’applicazione fallata era Virtual CloneDrive, a cui sono arrivato tramite la tecnica “superiore” di installazione del debugger Zen e semplicemente osservando il famoso ATAPI.SYS in fondo allo stack)

Buona fortuna

-quack

Mitighescion

Jan 19, 2010 - 0 comments - Archiviato in: #Cazzate #Security

Ovvero per quale motivo al mondo il governo francese e quello tedesco hanno sconsigliato l’uso di Internet Explorer.

È semplice: il pianeta è pieno di malinformatici. Gente che, non conoscendo la differenza tra mitigazione ed eliminazione, pontifica a destra e sinistra su quale browser usare, quale sistema operativo usare, che marca di PC comprare.

La differenza per gentilezza la spiego io: si chiama defense in depth e parte dal presupposto che rilasciare prodotti perfetti è impossibile. Se il prodotto è “pericoloso” come lo è appunto un browser, significa perseguire una politica di limitazione del danno. E cioè se una pagina cattiva riesce a causare un odioso buffer over/underrun l’unica applicazione a sopperire è il browser stesso.

Nel caso del baco di cui si è tanto parlato in questi giorni è la stessa differenza che c’è tra un baco sfruttabile facilmente ed uno che potrebbe essere limitato solo al mondo teorico.

Ovviamente è altrettanto chiaro che se una persona si ostina ad usare e consigliare Mac perché è sicuro non può sapere né capire quanto l’effetto di qualche mitighescion può essere fondamentale quando OSX è l’unico sistema operativo al mondo che scompatta ed esegue automaticamente file zippati.

Ma questa è la vie nell’era dei malinformatici.

-quack

P.S. Google non sta raccontando tutto quello che sa. Ed il mondo dovrebbe aprirsi al principio di reciprocità: se il governo cinese usa malware per rubare dati, tutto il software prodotto in occidente ed esportato in Cina dovrebbe essere dotato di backdoor. Così la vedo io….
(manco a farlo apposta ecco un baco spettacolare; venghino siòre e siòri)

Work in progress

Jan 13, 2010 - 0 comments - Archiviato in: #Seattle e dintorni

Breve descrizione sul quantitativo di manodopera necessario in U.S.A. per effettuare alcuni tipi di manutenzione stradale:

Registrazione di un bullone su un ponte
Un camionista per trasportare i coni necessari per proteggere 200 metri di corsia (100m per ogni direzione) più lo spazio davvero necessario (in genere 2m x 2m)
Due aiuto-camionisti per scaricare e piazzare i coni.
Un aiuto-aiuto-camionista per proteggere gli aiuto-camionisti dal traffico e far rallentare le auto in arrivo.
Un camionista per trasportare il tabellone elettrico da piazzare 500 metri prima dei lavori con una scritta “Lavori in corso”.
Un camionista per trasportare gli operai e gli attrezzi.
Un operaio (max. due) per registrare il bullone.

Manutenzione su un palo elettrico nei pressi di un incrocio
Più o meno come nel caso precedente, con l’aggiunta di 2 ausiliari traffico con palette STOP/SLOW per ogni ramo dell’incrocio, ovvero tipicamente 8.

Manutenzione di un semaforo
Come nel caso precedente ma con l’aggiunta di un poliziotto.

-quack

P.S. non sto scherzando/esagerando

Nexus: il bello il brutto il cattivo

Jan 12, 2010 - 0 comments - Archiviato in: #Cellulopoli

Bello:
Lo schermo 3.7” e la definizione 800x480; se si prende come termine di paragone l’iPhone siamo ad un altro livello (3.5” per 480x320). _TUTTI_ quelli che l’hanno visto dal vivo concordano.
La forza bruta: processore da 1Ghz e 512MB di RAM (iPhone: 600Mhz & 256MB)
I sensori: finalmente c’è un sensore di prossimità utile soprattutto durante le chiamate. Il microfono aggiuntivo non posso giudicarlo ma sembra un’ottima idea.
La fotocamera: il flash funziona decentemente, non mi posso lamentare; l’autofocus è mooolto più veloce.
La scheda di rete: WiFi-N e ho detto tutto. Sincronizzare via wireless è ancora più piacevole.
Il connettore per le cuffie, finalmòn!
La pseudo-trackball: molto più ergonomica di quella del G1.
Il software: l’integrazione con Facebook è carina, ma tante altre chicche.
Hacker friendly: questa volta Google ha esagerato con la bontà. Il bootloader è sbloccabile molto facilmente e da lì a installare ROM custom ci vuole veramente pochissimo.

Brutto:
La qualità del sensore della camera: mi sarei aspettato di meglio, ma può darsi che sono abituato mooolto bene.
L’assenza di alcuni tasti HW: mi sarebbe piaciuto un tasto HW per la fotocamera e un modo più veloce per accedere alle funzionalità telefoniche. Anche un doppio click della trackball sarebbe andato bene, spero che la cosa venga migliorata via software: era così anche nelle prime versioni di iPhone e mi meraviglio che nessuno ci abbia pensato.

Cattivo:
Lo stack bluetooth. Cribbio, vada per le canzoni random e tutto il resto ma è imperativo che se arriva una telefonata mentre sto guidando debba poter rispondere. Mi succede troppo spesso che l’audio diventa muto se collegato al bluetooth e tocca manovrare sullo schermo per dirottare la telefonata allo speakerino interno. Molto, molto male.
La scelta di usare il formato microUSB per la connessione: semplicemente molto stupida e l’impressione che ho avuto è che sia stata una scelta solo per motivi di design.

Altro:
Questione 3G/Edge: è chiaramente un problema SW, qualcuno ha trovato un work-around che funziona ed immagino che la pezza ufficiale arriverà molto presto. Per le mie modalità d’uso il problema non esiste neanche: in ufficio la rete 3G è abbastanza stabile, semmai ho problemi con il GPS ma sono del tutto irrilevanti fino a quando su Google Maps non comparirà la mappa dell’interno dei building del campus.
Questione assistenza: è incredibile che l’aggeggio sia stato messo sul mercato senza pensare a questo piccolo dettaglio, però mi sembra che tutte le storie che ho letto in giro ruotino intorno al 3G/Edge e all’aneddoto di un tipo che si lamentava di aver specificato l’indirizzo sbagliato per la spedizione e non aver nessun modo per contattare FedEx ecc.

Conclusioni:
Quando è uscito il G1 ero molto contento per aver trovato un aggeggio che fosse la sintesi di tutto quello che volevo portare con me e all’epoca se la giocava bene con l’iPhone 3G. Tutte le limitazioni son venute fuori quando ho installato un paio di applicazioni interessanti che su un processore da 400Mhz hanno ben poco di multi-tasking friendly. Apple ha scelto una non-soluzione (quella di non supportare le applicazioni in background), Google con il Nexus One si è finalmente redenta e pertanto a me l’iPhone envy è passata completamente.

-quack

Expression Tree

Jan 11, 2010 - 0 comments - Archiviato in: #Codice

Se c’è una attività lavorativa che mi piace più dello scrivere codice è quella di “rimuovere codice” extra. Ecco una nuova versione dei “metodi dinamici di delegazione” che ho scoperto mentre per lavoro mi documentavo sulla libreria degli ET della versione 4.0 del framework .net:

        private TypeConstruct constructor;

        delegate object TypeConstruct();

 

        private static TypeConstruct CreateConstructor(Type t)

        {

 

            NewExpression call = Expression.New(t);

 

 

            Expression<TypeConstruct> lambda = Expression.Lambda<TypeConstruct>(

              Expression.Convert(call, typeof(object)));

 

            return lambda.Compile();

        }

Il codice qui sopra a differenza del precedente è compatibile anche con i setting di sicurezza estremamente aggressivi del mio Web Hoster pur mantenendo lo stesso livello di performance. Devo ammettere però che ho molta difficoltà nell’afferrare tutti i dettagli di quanto succede sotto il cofano. Però funziona…

-quack

Segreti

Jan 7, 2010 - 0 comments - Archiviato in: #Cazzate

Quanto è successo in questi giorni ha reso chiaro un paio di cose.

In Google/HTC non sanno tenere segreti, vista l’abbondanza di informazioni disponibili sul Nexus One diverse settimane prima del lancio. Niente a che vedere con quelli di Cupertino. Se qualcosa trapela è studiata a tavolino; quelli che fanno trapelare realmente qualcosa vengono suicidati direttamente o indirettamente dalla Apple Gestapo. Qualcuno la chiama maturazione.

Anyway: per fortuna c’è il Nexus One, che a guardare le specifiche sembra molto meglio dell’iPhone ad una frazione del costo. La mossa astuta di creare pressione ai partner secondo me, per quanto controversa, alla fine pagherà. Qualcuno l’ha paragonata all’introduzione dello Zune/ZuneStore vs. PlaysForSure, ma c’è una differenza fondamentale: nel caso di Android i partner possono usufruire comunque della piattaforma cosa non possibile per i partner Zune data l’incompatibilità tra il formato Zune e PfS. Quindi mentre è molto probabile che in futuro Motorola/LG/Sony/Acer vengano invogliate ad immettere sul mercato prodotti decenti a prezzi ragionevoli (come on Sony, 800$ per un XPeria X10??), il marchio PfS è destinato all’oblio. E per fortuna un terzo incomodo (Amazon) ha salvato la situazione smerciando canzoni “libere” a prezzi finalmente competitivi…

…roba che vien da ringraziare il cielo che Steve Ballmer e Robbie Bach abbiano deciso di non presentarsi al CES quest’anno.

-quack

P.S. dopo tanto tentennamento ho ordinato il Nexus One anche io. Peccato per la scarsa dotazione di memoria Flash (cara Google davvero pensi che poco Flash significa più Web??), altrimenti sarebbe stato uno smartphone perfetto, quello che ancora non esiste.

Remade in Redmond

Jan 6, 2010 - 0 comments - Archiviato in: #Microsoft

Con tutto questo contare di fagioli, davvero non ci speravo più.

image

Sicuramente più appagante della precedente.

-quack

Fedex vs. UPS

Jan 5, 2010 - 0 comments - Archiviato in: #Cazzate

Tempo fa newegg è passata da Fedex a UPS come standard di spedizione gratuito su alcuni articoli. Nonostante entrambi i servizi sono pubblicizzati come “3 giorni garantiti” la differenza tra Fedex e UPS è abissale.

  1. per Fedex 3 giorni garantiti sono proporzionali alla distanza. Se un pacco dalla Florida a Seattle ci metterebbe 3 giorni, un pacco dalla California ce ne mette poco meno di due. Per UPS 3 giorni sono sempre tre giorni, anche se il pacco arriva da dietro l’angolo: magari lo tengono fermo un paio di giorni a destinazione pur di consegnarlo in tre giorni esatti (non sto scherzando)
  2. per Fedex il sabato è considerato giorno di consegna, per UPS no. Questo significa che se si ordina martedì 29 dicembre, si è sicuri di riceverlo entro sabato 2 gennaio. Per UPS i giorni festivi creano una massa gravitazionale che altera la durata del tempo per cui i “tre giorni” scadono il 5 gennaio (non sto scherzando)
  3. per Fedex le spedizioni in 3 giorni vengono chiamate “Express Saver”; per UPS invece si tratta di “UPS Ground”. Questo ha importanti implicazioni sul routing della posta in MS: la posta “ground” ha priorità bassissima e questo significa riceverla quasi sicuramente il giorno dopo, e se si tratta di un venerdì questo diventa automaticamente il lunedì successivo

In molti hanno protestato ma è servito a ben poco, che vuol dire che il volume di vendita di newegg, tra i più convenienti geek-store online, non abbia avuto nessun calo significativo a seguito della protesta. Dalle mie parti, guardando i prezzi qui sotto, si direbbe che si mangia sempre per quanto si spende:

image

-quack

Scorrelazioni

Dec 30, 2009 - 0 comments - Archiviato in:

Se la correlazione di qualche giorno fa era puramente speculativa, quella tra il numero di poliziotti di Redmond/Bellevue/Kirkland in tenuta multa da pignolo e l’appropinquarsi della fine del mese e dell’anno è certa.

Ieri ho incontrato 4 pattuglie con il laser puntato in meno di 15 minuti di tragitto. Oggi ne ho incontrate due a meno di un Km di distanza.

Si consideri che dal punto di vista criminoso l’area in questione è praticamente pulita e tra le più grosse preoccupazioni della polizia di Bellevue sia l’impedire la sostituzione di qualche semaforo con rotonde per l’eventuale riduzione di multe.

E si consideri che in altre zone i poliziotti vengono ammazzati come mosche con un infame record di sei poliziotti uccisi in meno di due mesi (fonte)

crime map (fonte)

Spero vivamente che nel 2010 la metà dei fondi destinati alle forze di polizia dei quartieri più “sereni” venga dirottata altrove, con buona pace di chi ne ha ben donde le siffatte ciufole di ricevere qualche reprimenda per motivi incredibilmente futili. Resterà un sogno e nel frattempo buon duemiladieci a tutti.

-quack

Santa Fanc*lo

Dec 29, 2009 - 0 comments - Archiviato in: #Cazzate

Quest'anno l'auto-babbo-natale aveva deciso Angry Santadi fare un piccolo upgrade alla workstation nell'ottica di ridurre caos di fili e periferiche sulla scrivania a spazio estremamente limitato. Il monitor ideale avrebbe dovuto essere illuminato a LED, costare decentemente ed essere dotato di speaker e hub USB. Assodato che tale monitor oggi non esiste, son dovuto scendere a qualche compromesso. Ho trovato un AOC V22 con speaker, webcam e microfono integrati che in offerta aveva un prezzo davvero goloso. Unico appunto, oltre alla mancanza dell'hub USB, il fatto che tale modello non è provvisto di porta DVI ma solo HDMI. L'esperienza con il precedente in modalità HDMI non ml piaceva (a computer spento il monitor restava acceso con una bella scritta NO SIGNAL molto luminosa) e ho tentato la fortuna avendo come assicurazione le ottime policy di restituzione dei negozi locali ammerigani. E da quel punto di vista sono stato fortunato in quanto a differenza del precedente il nuovo monitor non presenta questo fastidioso difetto; pero questo era il peggio che ml aspettavo ed invece...

...fatti tutti i collegamenti, scopro che l'audio non ne vuole sapere di andare. Non volendo credere di essere davvero cosi sfortunato ho pensato a qualche setting del menga o a problemi di cavo. Patti tutti i test propedeutici, ho cominciato a pensare che la questione avesse a che fare con l'HDMI che supporta anche l'audio; alcuni monitor tra cui il mio danno all'audio digitale via HDMI una priorità più alta di quello più tradizionale analogico. E cosi era: ho trovato un setting della scheda NVidia che una volta disabilitato restituiva il controllo all’ingresso audio giusto, ma li è cominciato il calvario. Il setting viene apparentemente ignorato ad ogni riavvio e risveglio; decisamente insopportabile. Ho pensato di circumnavigare il problema usando un convertitore DVI->HDMI ma a quanto pare non è servito. Allora ho pensato che ci doveva essere un modo di portare l'audio sulla scheda grafica e incanalarlo via HDMI: detto fatto, ho aperto il computer (e mai avrei pensato che per installare un nuovo monitor sarei arrivato a tanto), installato cavettino in dotazione alla scheda madre, riavviato, riconfigurato e testato. Tutto funzionava, ma con una pseudo-latenza di qualche secondo sul volume del suono, ovvero se parte una canzone il volume va da zero a X in qualche secondo. Questo vuol dire che tutti i suoni più brevi di qualche secondo (notifiche di messenger, email, ecc.) sono destinati ad essere completamente muti.

Intanto aperto il PC ho scoperto che la ventola più rumorosa era quella della scheda grafica, di gran lunga più assordante delle altre tre o quattro perennemente in funzione. Ho pensato a questo punto di installare la 7600GS raffreddata passivamente che tenevo di scorta da qualche parte e non credevo alle mie orecchie: purtroppo, seppur hackintosh compatibile, la scheda è stata “disabilitata” dall’ultimo aggiornamento di Snow Leopard e causa un Kernel Panic subito dopo il logon.

A questo punto mi si son presentate davanti a me tre alternative, elencate in ordine di preferenza:

  1. sistemare il KP in Snow Leopard, ma non è stata trippa per gatti come me.
  2. trovare una soluzione per ridurre il delay audio via spdif. Purtroppo trovare qualcosa a riguardo è stato impossibile
  3. trovare un modo migliore per disabilitare definitivamente l’audio via HDMI

La terza è stata quella che ha funzionato meglio. Ho trovato un tool ufficiale NVidia “garantito” ma non funzionante; alla fine sono finito in un forum che spiega come modificare una chiave del registro e far credere alla scheda grafica che il monitor non è dotato di HDMI ma solo di DVI. Ha funzionato!

Prima della modifica:

hdmi_before

Dopo la modifica:

AOCV22

Unico aspetto negativo, il rumore della ventola. In cerca di una soluzione ho scoperto l’esistenza di schede el cheapo 8400GS raffreddate passivamente e coincidenza astrale avevo una 8400GS 1x con ventola come scheda di scorta in ufficio: giusto quello che mi serviva per testare la compatibilità e procedere con l’acquisto.

Ovviamente Murphy da lassù ha fatto in modo che neanche il downgrade più semplice del mondo filasse liscio: la chiave di registro interessata, dopo la reinstallazione dei driver, è finita in un “folder” diverso, ma è bastata una mezz’oretta per individuarla e portare a casa capra e cavoli.

Ricapitolando: un tizio compra un monitor e si trova a dover manovrare con tool di origine sconosciuta e modifiche nel registry, tutto questo per la non curanza di NVidia nel scrivere driver che funzionano. Come da titolo!

-quack

P.S. l’avventura è risultata estremamente educativa e mi ha permesso di ricablare l’uscita audio analogica anche sul mediacenter, cosa che desideravo fare da ere geologiche ma che mai avrei avuto così tanto tempo da dedicarci!

Correlazioni

Dec 28, 2009 - 0 comments - Archiviato in: #Cazzate

Senza fare dietrologia o cospirazionismo, secondo voi c’è correlazione tra gli episodi pseudo-terroristici di questi ultimi giorni e questo interessante articolo pubblicato l’anno scorso sull’Atlantic?

Tra l’altro – posso garantire personalmente – che partire per gli USA da Amsterdam è una tremenda rottura di zebedei di security.

Teoria cospirazionistica: qualcuno potrebbe avere interesse a vendere body scanner da un milione di dollari a pezzo e l’immagine del terrorista imbranato che si fa saltare i genitali mi sembra più comica che tragica. Un po’ come quella barzelletta che girava per email non molto tempo fa.

-quack

Buone feste 2009

Dec 24, 2009 - 0 comments - Archiviato in: #Cazzate

path4948 Lettura consigliata se proprio qualcuno non si ritrova niente da fare…….

Rock, Paper, Scissors: Game Theory in Everyday Life

-quack

Scherzi da perfidus

Dec 21, 2009 - 0 comments - Archiviato in: #Cazzate

Puntate precedenti: scherzi da cracher e scherzi da accher.

Da quando ho cambiato capo non è più come prima. Lo stile da carogna mi manca un po’ e non ci ho pensato due volte quando ho visto questa chiavetta USB recensita da qualche parte:

perfidus

Trattasi di una Phantom Keystroker 2. Interessante l’avvertenza d’uso sul sito:

The Phantom Keystroker never hits the return key and it never clicks the mouse button. However you should not use it on anyone's system who is doing critical work where disruption could cause serious consequences. The Phantom Keystroker is a joke, like any joke you need to use prudence and judgement when executing it. You have been warned!

Non so se il lavoro del mio ex-capo possa essere considerato critico, ma spero che la dongle mi arrivi prima del 2010 o prima che Ballmer venga licenziato. Girano certe voci

-quack

L’Heisenbug perfetto

Dec 16, 2009 - 0 comments - Archiviato in: #Codice

Pochi giorni fa mi sono riscontrato nel cosidetto Heisenbug perfetto. Di solito gli Heisenbug hanno a che fare con il multi-threading circostanza per cui aggiungere qualche breakpoint al codice sfasa il timing dell’applicazione e per tanto potrebbe causare la scomparsa di un baco sotto osservazione. Nel mio caso non c’era nessun multithreading, ma bastava semplicemente “osservare” il comportamento dell’oggetto misterioso per deviarne il flusso di esecuzione. Ridotto al minimo l’Heisenbug è descritto qui sotto:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace Heisenbug

{

    class MyClass

    {

        bool here;

        public override string ToString()

        {

            string result = here.ToString();

            this.here = true;

            return result;

        }

 

        public MyClass()

        {

            this.here = false;

            // put a breakpoint on the following line

            // and add 'this' to the watch window and

            // then execute

            Console.WriteLine(this.ToString());

        }

    }

 

    class Program

    {

        static void Main(string[] args)

        {

            MyClass c = new MyClass();

            Console.WriteLine(c.ToString());

        }

    }

}

Normalmente l’applicazione scrive False-True sulla console. Se invece si aggiunge un breakpoint nella riga del costruttore indicata e si osserva appunto l’oggetto appena instanziato il risultato diventa True-True. La cosa non è stata banale da individuare perché il tutto era offuscato da qualche altro centinaio di righe di codice e parlandone con il collega pazzo con la capigliatura più caotica della mia ne è nata una questione filosofica: ma il debugger può permettersi davvero di invocare metodi mentre un oggetto è ancora in costruzione? Girerò la domanda a quelli del team di Visual Studio per sapere se il comportamento è documentato (prescritto) da qualche parte.

-quack

Update:

image

Dalla regia mi suggeriscono che questo comportamento può essere disabilitato ed il valore di default in effetti makes sense.

VS – Developer 1-0 e palla al centro

Fryday

Dec 11, 2009 - 0 comments - Archiviato in: #Cazzate

Il Venerdì è considerato il giorno di Fry’s (vedasi) in quanto il negozio in questione pubblica sul giornale locale 4 pagine di offerte in genere tra il mediocre e l’eccezionale. Un esempio di offerta eccezionale era l’SSD Patriot da 32GB a 89$ con 30$ di rebates (in pratica 70$); oltre a questo gli annunci del Venerdì hanno un’altra interessante peculiarità e cioé che sono validi per un’intera settimana a differenza delle 24-48-72h delle inserzioni “normali”.

La cosa buffa è che il giornale locale, dopo un esperimento durato pochi mesi, ha deciso di togliere le inserzioni pubblicitarie dalle pagine online nascondendosi dietro l’idiozia di voler vendere più abbonamenti. Nessuno ha mai capito chi è stato il genio dietro tale trovata, ma questo non ha mai fermato l’opera di uno stuolo di volontari che dietro compenso di Google Ads scannerizza, classifica e pubblica le pagine del Venerdì su un sito dedicato chiamato appunto Fry’s Electronic Ads.

Un evento con probabilità non nulla è quello di scoprire che abbiano deciso di mettere in offerta un prodotto in vendita il Venerdì precedente a prezzo pieno, nel qual caso si è in presenza di un Black Fryday. Data la mia proverbiale sfiga, nomen omen, questa settimana tra rebate e sconto alla cassa hanno deciso di dimezzare il prezzo dello stesso switch KVM che ho comprato domenica scorsa. Teoricamente, data la loro politica, potrei restituire il prodotto e ricomprarlo o semplicemente presentarmi alla cassa per ricevere indietro almeno la quantità di sconto esclusa di rebate. Praticamente in alcuni casi come il mio non ne vale assolutamente la pena. A meno che…

-quack

Tor exit node lookup in ASP.Net

Dec 10, 2009 - 0 comments - Archiviato in: #Blog-Tech #Codice

Potrebbe tornare utile a qualcun altro:

using System.Web;

using System.Net;

 

namespace TorHelper

{

    public class TorHelper

    {

        const string TOR_EXIT_IP = "127.0.0.2";

 

        private static string ResolveName(string name)

        {

            string ip = (string) HttpContext.Current.Cache[name];

            if (ip == null)

            {

                ip = ResolveDNS(name);

                HttpContext.Current.Cache[name] = ip;

            }

            return ip;

        }

 

        private static string ResolveDNS(string name)

        {

            try

            {

                IPHostEntry host = Dns.GetHostEntry(name);

                if (host.AddressList.Length == 0)

                {

                    // this should never happen

                    // but throwing an exception is expensive.

                    return null;

                }

                return host.AddressList[0].ToString();

            }

            catch(SocketException)

            {

                // this can happen when the DNS doesn't get resolve

                // and it actually happens for all IP addresses
                // that are
not part of the TOR exit list

                return String.Empty;

            }

        }

 

        public static bool IsTorExitNode(string ipAddress)

        {

 

            try

            {

                string torExitEntry = String.Format(

                   "{0}.{1}.{2}.ip-port.exitlist.torproject.org",

                    ReverseIPOctet(ipAddress),

                   "80",

                    // Domain name is the running

                    // ASP.Net webSite

                    ReverseIPOctet(ResolveName(DomainName)) );

 

                if (ResolveName(torExitEntry) == TOR_EXIT_IP)

                {

                    return true;

                }

            }

            catch (Exception e)

            {

                // log the error

            }

 

            return false;

        }

 

        private static string ReverseIPOctet(string ipAddress)

        {

            string[] octets = ipAddress.Split('.');

            return String.Format("{3}.{2}.{1}.{0}",

               octets[0],
               octets[1],
               octets[2],
               octets[3]);

        }

 

    }

}

Su questo blog i commenti lasciati via Tor finiscono in coda di moderazione insieme a quelli che partono da una subnet ban list. Ed ora il giochino si fa più interessante.

-quack

P.S. il pezzo di codice di cui sopra è rilasciato al pubblico dominio con la licenza SQLite:

May you do good and not evil
May you find forgiveness for yourself and forgive others
May you share freely, never taking more than you give.

Licenze

Dec 10, 2009 - 0 comments - Archiviato in: #Software

Non pensavo mi sarebbe mai capitato di imbattermi in una licenza peggiore di quella GPL3 (*) ma invece...

Parto dal presupposto che una possibile suddivisione del software sia quella di software per sviluppo vs. software per “utenti finali”, ove per software di sviluppo si intende tutta quella caterva di applicazioni che servono a generare altro software.

Il software per “utenti finali” di solito ha licenze normali: nessuno si sognerebbe di non consentire all’utente di un Word Processor di stampare o di salvare i file (eccezione: il software shareware/trialware).

Nel mondo dei programmatori invece esiste il concetto di “licenza per sviluppatore” anziché utente: la differenza è subdola ma in alcuni casi diabolica. Supponiamo che il tool sia un compilatore a riga di comando: se Pinco e Pallino scrivono codice, ma è solo Pallino ad usare il tool per compilare, Pinco potrebbe violare la licenza di [non]-uso. Sembra un paradosso ma mi sono imbattuto in una libreria (which shall remain nameless) “royalties free” ma licenziata “per sviluppatore” e che per sviluppatore si intendeva chiunque modificasse l’applicazione. Alla mia richiesta di delucidazioni su cosa significasse “sviluppatore di applicazione” nel contesto royalties free mi hanno risposto seccati chiedendomi se stessi cercando di circumnavigare la licenza; ho chiarito che non mi interessava circumnavigarla ma capire se fosse possibile che “non-sviluppatori” della mia applicazione potessero scriverne template o plugin o se invece tali interventi facessero figurare gli utenti finali come “sviluppatori della mia applicazione”.

La risposta: il silenzio. Contenti loro…

licenza

(l’immagine è rubata da un post a tema di Coding Horror)

-duh

(*) ovviamente il metro di paragone è basato sul mio gusto personale.

Chiavetta USB multi boot per Windows

Dec 1, 2009 - 0 comments - Archiviato in: #Cazzate #Hardware

Antefatto: ho deciso di fare l’upgrade a Windows 7 del mediacenter allettato dalla possibilità di installare un sintonizzatore CableCard e guardare anche qualche canale criptato. Avevo preso in considerazione anche di sostituire l’architettura attuale con un Atom per il surriscaldamento estivo e conseguente rumore di ventolame, ma poi ho pensato che i canali criptati hanno bisogno di una CPU robusta per poter essere fruibili normalmente. Ho deciso di visitare Fry’s per approfittare di due offerte “1 day only”: un sistema di raffreddamento liquido Corsair dal prezzo contenuto (56$) e con ottime review e un HD SSD da 32GB grande abbastanza per Windows 7 senza fronzoli ad un prezzo altrettanto decente (50$ dopo rebate), interessante non tanto per le prestazioni ma per il minor apporto di energia cinetica/termica/sonora nel sistema.

L’HD è risultato probabilmente difettoso, in quanto è scomparso completamente dal radar nel mezzo dell’installazione dell’OS; il sistema di raffreddamento invece era abbastanza ingombrante per il case living room friendly della terza versione del mediacenter. È dovuto scattare il cosiddetto pellegrinaggio di ritorno per la restituzione del radiatorone e la sostituzione dell’HD. Ho approfittato per cercare una chiavetta da 4GB da rendere bootabile e verificare alcune teorie sulla lentezza di installazione di Windows su certi sistemi, ma quel giorno era in offerta irrifiutabile venticinquedollaripiùtasse una chiavetta da 16GB. Ho pensato: qualcuno si sarà già posto il problema di creare una chiavetta multiboot (x86, AMD64, se rver, client, ecc.) e che sarebbe tornata molto comoda al posto delle solite 3-4 chiavette per tutti gli OS. Per il raffreddamento ho trovato una soluzione molto più pratica e decisamente meno costosa.

Tornando in topic: è stato un bagno di sangue ma alla fine ce l’ho fatta. In sintesi: bisogna creare più di una partizione usando uno di quei tool che flippa il “removable bit” e ingegnarsi con qualche bootloader abbastanza avanzato da starci nel Master Boot Record ed essere al tempo stesso in grado di giocare al gioco delle tre carte con le partizioni create.

In dettaglio, anche per mia futura memoria, i passi seguiti.

Ingredienti:

Passi, da seguire in ordine religioso:

  1. Installare GRUB sull’MBR della chiavetta usando il GUI installer; la procedura è indicata in dettaglio nella sezione uno di questa guida (in inglese).
  2. Flippare il media bit usando il tool della Lexar (funziona anche su chiavette di marca diversa); rimuovere e reinserire la chiavetta
    Lexar-Flip-Removable-Bit
  3. Creare due o più partizioni a seconda del numero di OS da rendere installabili; nel mio caso 3 (WHS, Win7 x86/64) più una per i dati. La prima partizione va formattata come FAT o FAT32 mentre per le altre si può scegliere anche NTFS
  4. copiare il contenuto dei dischi di installazione su ogni partizione
  5. creare un file di testo con il “nome” della partizione in ogni partizione (es.: WHS.txt; Win7x86.txt; ecc.)
  6. copiare il file grldr nel root folder della prima partizione
  7. creare un file di testo con il nome di menu.lst nel root folder della prima partizione e editarlo usando questo template:

title Windows Home Server
find --set-root /win7x86.txt
hide()
[…]
find --set-root /WHS.txt
unhide ()
chainloader /bootmgr

title Windows 7 x86
find --set-root /WHS.txt
hide ()
[…]
find --set-root /win7x86.txt
unhide ()
chainloader /bootmgr

In pratica: ogni voce di menu si occupa di nascondere tutte le partizioni non interessanti usando i tag file nel punto 5. e di rendere disponibile solo quella da cui fare il boot, che viene settato con il comando chainloader.

L’installazione è stata avviata con successo per tutti i tre OS sul mio laptop e perciò, come sempre in questi casi è garantita:

works-on-my-machine-starburst

-quack

Tic-tac tic-tac…

Nov 24, 2009 - 0 comments - Archiviato in: #Cazzate

Come disse il Sinofsky, tic-tacuna volta che si “annuncia” una data, si è già in ritardo.

Siòre e siòri, Windows 8 sarà “rilasciato” nel 2012. E se ritarda di più di qualche mese, chissenefrega, Giacobbo ha detto che la fine del mondo è prevista per Dicembre dello stesso anno.

Esempio bonus tratto da “The Old New Thing” blog.

La roadmap è pubblicata.

Tic tac tic tac tic tac…

-quack