Post di servizio - Dicembre 2014

Chiedo venia per il post Out Of Band.

Mi piacerebbe sapere, tra i lettori che seguono via RSS feed, quale reader online/offline usate.

Grazie per la cortesia.

-quack

Pubblicato lunedì 1 dicembre 2014 alle 11:59 PM - 30 commenti so far
Archiviato in: Blog-Tech

Il forum

Finalmente ho messo su un mezzo forum che rimpiazza per sempre la pagina Off Topo. Non ho il tempo materiale per scrivere un plugin e allora ho recuperato qualcosa di già pronto. In futuro vorrei migrarne i contenuti o chissà… anche se penso che non ci sia niente di più permanente di una soluzione temporanea. Vabbù?

foro

Le regole del forum sono le stesse di tutti i commenti: cerchiamo di non offenderci a vicenda e per il resto tutto fa brodo.

Possibilmente non usate i messaggi privati. Li leggerò in barba alla legge sulla privacy del comune di Paperopoli (di cui sono sindaco, sapevate?) e li cancellerò in quanto mi sembrano inutili e ridondanti.

-quack

Pubblicato giovedì 29 aprile 2010 alle 8:55 PM - 47 commenti so far
Archiviato in: Blog-Tech

Comunicascion of service

Piccola comunicazione di servizio. È cambiato il link al feed RSS. Il nuovo feed RSS è qui.

Alcuni link utili per la migrazione:

Subscribe with BloglinesAdd to Googleaddtomyyahoo4rss-iconOffline/desktop reader

Scappo via da feedburner/google come avevo promesso qualche giorno fa. Il vecchio feed funzionerà ancora per un po’ con l’aggiunta di un promemoria più o meno evidente.

Vedasi quest’immagine:

feed

-quack

P.S. FeedBurner potrebbe metterci un po’ a propagare la ‘modifica’; il feed dei commenti sarà spostato la prossima settimana.

Pubblicato venerdì 12 febbraio 2010 alle 11:37 PM - 2 commenti so far
Archiviato in: Blog-Tech

Tor exit node lookup in ASP.Net

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.

Pubblicato giovedì 10 dicembre 2009 alle 8:46 PM - 18 commenti so far
Archiviato in: Blog-Tech, Codice

Graceful Degradation

Qualche giorno fa, a causa di problemi sul server di hosting, lo sfortunato avventore s’è beccato qualche schermata di errore del tipo:

YSODconosciuta anche con il nome di ASP.Net YSOD (Yellow Screen of Death). In un paio di occasioni questo è capitato per una mancata risposta del backend SQL, magari beccato durante un riavvio di manutenzione, altre volte per problemi un po’ più seri come la carenza di spazio libero quando in realtà avevo teoricamente a disposizione più di 99GB rimanenti.

La YSOD è praticamente una schermata di debug utile per lo sviluppatore: nel caso in questione però saranno ormai diversi mesi che non vedo uno YSOD causato da problemi di codice, quindi ho deciso di disabilitarne l’uso in favore di una schermata più simpatica. Per imparare qualcosa ho cercato di fare le cose per bene, perché quando mi prende va a finire che anche per le puttanate son capace di spendere ore ed ore. Il risultato lo si può ammirare in questa pagina:

Gracefully degradeLa cosa più antipatica da realizzare è stato il centraggio della box in primo piano, cosa rivelatasi impossibile tramite CSS e basta. Un po’ di JavaScript + JQuery e la paura e passata; col senno di poi però arrivare a scrivere codice JS per una pagina statica di errore mi sembra pura follia…

-quack

Pubblicato giovedì 24 settembre 2009 alle 12:17 AM - 39 commenti so far
Archiviato in: Blog-Tech