Programmi “de menare”

Ascolto sempre 610 dove c’è un personaggio, Ernest del Montecastagna, che fa le recensioni del “cinema di menare”.
da oggi io propongo anche i “programmi de menare”:
mi telefona un tipo di roma, per assistenza su un nostro programma.
“me s’è ‘ncantato tutto, nun riesco a ‘ffà gniente, al colega mio je funziona, a ‘mme no!”
rispondo: “ho ucciso il processo che era in esecuzione, insomma gliel’ho buttato giù…”
e lui: “ah, gliele hai date?… bisogna menaje a ‘sti conpiuter!

the monkey strikes back

povero Steve! a quanto pare “el paron” della apple sta abbastanza male.
nonostante ciò, mi sono preso una bella scimmia e mi sono comperato un iPod Touch da 32Gb. e sto scrivendo questo post dalla tastiera virtuale di questo fichissimo aggeggio. collegato wireless a internet in un bar di trieste. ah, cosa sarebbe la tecnologia, senza le scimmie…

Anche i SAP sbagliano

quando si timbra il cartellino elettronico, i dati sono raccolti dalla “macchinetta” e spediti a SAP, noto ERP. Bene, secondo voi, se sbagliate “verso di strisciatura” tra ingresso e uscita, cosa può succedere? si scombinano le ore di ingresso e uscita, e vengono fuori le cose più incredibili.
tipo questa: (clicca sull’immagine)
errori sap
risulta che merc. 21 ho lavorato dalle 17:59 alle 08:56 e poi dalle 32:56 (SIC!) alle 12:42, per un totale di 4 minuti di flessibilità, 4 ore di extra-orario e 14:42 ore di notturno!!!
In compenso giovedì mattina devo giustificare perché dopo la nottolata non sono venuto al lavoro…

Slickr Plugin 0.6 patch

I just installed slickr wordpress plugin, on two sites of mine. One of the two is this one, and the plugin worked like a charm.
on the other, it appeared a strange warning
Warning: Missing argument 1 for HTTP_Request::HTTP_Request(), called in /**removed**/plugins/slickr-gallery/slickr/phpFlickr/phpFlickr.php on line 91 and defined in /usr/local/web13/php-5.2.4/lib/pear/HTTP/Request.php on line 183, also seen on others websites.
so I just edited phpFlickr.php by substituting line 91 and 92

$this->req =& new HTTP_Request();
$this->req->setMethod(HTTP_REQUEST_METHOD_POST);

with

$this->req =& new HTTP_Request("",array('method'=>HTTP_REQUEST_METHOD_POST));

its’all about HTTP_Request() constructor that needs the $params array explicitly.
So I hope that this little patch will be committed to the source of Slickr Plugin, so that all user can deploy the plugin easier.
Check davidaola’s photos with patch applied and davethewave’s photos without patch (no need because of different pear library).
hope this help you, bye DaVeTheWaVe

Singleton Pattern per C#

Singleton Pattern per C#

piccolo esempio di pattern singleton thread safe per C#. dal momento che lo uso molto spesso e che devo copiarmelo di qua e di là, ho deciso di scriverlo sul sito, che almeno so sempre dove trovarlo =D
ciao

public class Oggetto 
{
   #region Singleton
   //singleton pattern
   private static bool _isInit;
   private static Exception _error;
   private static volatile Oggetto _instance = null;
   private static object _syncObj = new object();

   /// 
   /// Get the Oggetto Instance
   /// 
   public static Oggetto Instance
   {
      get
        {
           if (_instance == null)
           {
              lock (_syncObj)
	      {
                 if (_instance == null)
                    _instance = new Oggetto();
              }
           }
           if (_isInit)
              return _instance;
           else
              throw new Exception(
                 "Error initializing Oggetto", _error);
        }
   }

   private Oggetto()
   {
      try
      {
         InitData();
         _isInit = true;
      }
      catch (Exception ex)
      {
         _isInit = false;
	 _error = ex;
      }
   }
   #endregion

   private void InitData()
   {
      // qua ci va l'inizializzazione
   }

   // comodo per reinizializzare tutto, se serve
   internal void RefreshCache()
   {
      this.InitData();
   }
}

c#, dotnet, lavoro, pattern, singleton, best practices

regression test best practices ovvero come testare per bene le applicazioni

È inutile dire, spiegare, ribattere sul perché fare i test del software è utile ed importante: e se ne possono fare di molti tipi. Il semplice test su un caso d’uso, il test di integrazione (per le nuove funzionalità), il test di usabilità, molti altri poi, ma non ultimo test di regressione. Cioè quel test che serve a controllare che la nuova versione del programma faccia ancora le cose che faceva prima.
Sembra una scemenza, ma a volte le nuove funzioni possono interferire con le vecchie. E ovviamente non deve accadere.
Ora vediamo un caso di test egregiamente svolto.
Il server SQL che ospita i database di tutti i nostri programmi aveva bisogno di una bella rinfrescata al sistema operativo. Visto che aggiornare il S.O. (nel caso windows server 2003) è un’operazione di qualche ora, si è stabilito di fermare un pomeriggio tutte le attività e di lasciare agli amministratori il tempo di lavorarci su. Ieri era il giorno fatidico e le 12.00 l’ora X.

  • Ore 11 il capufficio ufficio CU ri-segnala ai nostri utenti che un’ora dopo il database sarebbe stato spento.
  • Ore 11.20 il dirigente dei nostri utenti (che chiameremo DU) ci scrive una email: “il programma DB_Uploader ha qualcosa a che fare con il database?” – quest’applicazione prende effettivamente dei dati e li carica sul database, e il suo gruppo lo usa quotidianamente
  • Ore 11.25 leggiamo l’email e decidiamo di rispondere: “Sì, come già scritto nelle email di lunedì e giovedì scorso”
  • Ore 11.35 DU risponde scrivendo a noi e ai suoi sottoposti: “Bene. Visto il fermo macchina del server sarebbe il caso di fare un test dell’applicazione DB_Uploader.” e conclude dicendo ad un utente (che chiamerò UT) “UT pensaci tu.”
  • Ore 11.36 io e CU ci guardiamo sbalorditi e diciamo: “Cosa vuole fare?”
  • Ore 11.37 io e CU rileggiamo l’email di DU
  • Ore 11.37 e 30 secondi io e CU, ancora più sbalorditi, ci chiediamo: “Cosa si aspetta da questo test? Il database è spento quindi l’applicazione non funzionerà!”. Ridiamo e decidiamo di non rispondere
  • Ore 12 come preventivato gli amministratori spengono il database e cominciano a lavorare
  • Ore 12.20 UT risponde: “Adesso non riesco a provare, perché sono molto occupato. Appena torno da pranzo lo farò subito”. Io e CU pensiamo “UT, mangia pure tranquillo…”
  • Ore 13.30 UT ritorna dal pranzo, e anche noi.
  • Ore 13.37 UT scrive un’email a tutti: “Ho provato più volte il DB_Uploader e non vuole saperne di partire. Vi allego una schermata… Dice che non riesce a collegarsi al database… “
  • Ore 13.37 e 1 secondo io e CU leggiamo l’email e in coro diciamo “MA VA’?”. Anche stavolta decidiamo di non rispondere…

Morale della storia

Quando prevedi di fare un test, devi più o meno immaginarti quale può essere il risultato.

Morale della storia 2

Se il capo ti chiede di fare un test scemo, devi più o meno immaginarti quale può essere il risultato. Il risultato può essere che passa per scemo solo il capo, solo tu, o tutti e due insieme…
PS: l’aggiornamento del server è andato a buon fine