Categorie
Blog MTB

metamorfosi

ebbene sì, la metamorfosi è cominciata… cosa sta cambiando? la mia bicicletta!
ahiahiahi, passo dalle ruote grasse alle semi slick da cicloturismo. motivo: viaggetto in francia del sud (Costa azzurra, Provenza, Camargue), stile “va’ dove ti porta il naso”.
ora sto cercando ancora un po’ di attrezzatura: ho preso già il portapacchi e la borsetta anteriore (comodissima in città), l’antennina satelliltare bluetooth per il cellulare (per non perdermi o per perdermi senza farmi trovare), un po’ di abbigliamento.
mi mancano ancora le borse posteriori laterali, che è una mezza lotta trovare come le voglio io. se tutto va bene, vi scriverò man mano un po’ di info sul viaggio. e magari metto anche le traccie gps.
come diceva il saggio Michele a circa 10 anni “tutto serve nella vita…”

Categorie
Informatica

spread the code

che cos’è un numero? a chi appartiene? cosa ci puoi fare? protezione anticopia? di cosa?
liberiamo i numeri!
spread the code

Categorie
Blog Informatica

nuovo hosting

ciao a tutti. il sito è hostato su un nuovo hosting: www.dreamhost.com. supporta tutto, php, mysql, rubyonrails, ssh, insomma tuttotutto
vi saprò dire come va… =)

Categorie
Informatica

come chiudersi fuori da soli…

stamattina ho fatto il mio primo danno. sto lavorando sul mio schema di database in un’istanza di oracle. il mio user ha grant di administer database trigger perchè ho bisogno di creare un logon trigger del tipo

create or replace trigger user_logon_trigger 
    after logon on database
begin
  my_package.do_something();
end;

Insomma ricreo lo schema (trigger compreso), faccio logout-login. Non va, non riesco ad entrare.
Nel frattempo non si collegano nemmeno i miei tre colleghi, che aspettano di lavorare su altri schemi sulla stessa istanza. Il trigger sembra invalido, e caccia fuori tutti gli utenti.
Non vi dico i casini per recuperare il DBA, che non riusciva nemmeno lui a loggarsi, e alla fine fare un reboot della macchina.
Stavolta, il DBA fa riavviare il db modificando in init.ora la variabile

_system_trig_enabled = false

che permette di far partire il db senza trigger. bon. riabilitiamo il trigger e vediamo se tutto gira. Sì, gira tutto.
Tempo 5 minuti ed è di nuovo tutto TFU (Totally Fucked Up come dice il mio omonimo).
Alla fine si svela l’arcano: nel pacchetto my_package ho lasciato un dbms_pipe.send_message() che mi serviva per debug. Questa simpatica utility va a scrivere in un buffer i messaggi. Ma se il buffer non viene “svuotato” leggendolo, il buffer si riempie. E riempie la memoria dell’istanza oracle. Non sapete quanto… finchè implode tutto e non si riesce nemmeno a collegarsi…
Quindi, oggi ho imparato che: si può escludere l’attivazione di un trigger per un determinato utente:

create or replace trigger user_logon trigger
  after logon on database when user not in ('sys', 'system', 'pippo')
begin
  ...
end;  

Poi ho imparato che è meglio tenersi amico il DBA.
e che le cose di debug si fanno sull’istanza di debug.
e che dbms_pipe è una mer@a.

Categorie
Politica

l’agevolata – 2

un paio di settimane fa ho scritto un post sull’agevolata. ho ricevuto oggi un commento su quel post, con l’invito a partecipare a un appello per un progetto di mobilità sostenibile invece di continuare a richiedere proroghe per la benzina agevolata.
io sottoscrivo convinto, e invito anche voi a leggere con attenzione la proposta e a partecipare all’appello, cliccando qui: Appello benzina agevolata
buone pedalate…
P.S.: ovviamente nella lista dei sottoscrittori ho già visto che conosco un bel po’ di gente…

Categorie
Blog

ho fatto due etti e mezzo… lascio?

voi forse pensavate che “non tutto ha un prezzo…”
a parte la dimostrazione della famosa carta di credito “500 euri con MisterCard”, io credevo che solo Manzoni avesse avuto il coraggio e l’idea di “prezzolare” la pupù.
e invece, tornando a casa stasera, dopo allenamento, a una ventina di metri da casa, mi sono trovato davanti un’opera new-pop.
Titolo: “ho fatto due etti e mezzo, lascio?”

prezzi

Categorie
Informatica

backup & utilities – 2

sto usando da qualche tempo, un ottimo script php, phpmysqlautobackup, per fare il backup del database dei siti che gestisco.
questo script esporta, zippa e spedisce a un indirizzo email configurato, il contenuto del database. poi basta aggiungere un piccolo cronjob per attivarlo e il backup è fatto. ottimo!
un piccolo problema è che nella sua versione originale
lo script gestisce il backup solo se il database gira su “localhost”.
allora ho dato un occhio al codice e ho preparato una piccola patch per aggiungere il supporto al backup di un server diverso.
in run.php aggiungete

  $mysql_hostip = "numero.ip.del.server.database";   

e in /files/config.inc.php

  $cfg['servers'][$i]['host'] = $mysql_hostip;

così sarà risolto il problema.
lo sviluppatore ha inserito questa mia proposta nel forum di sviluppo: Backup a remote database – how to set the ip address. e forse la includerà nelle prossime versioni del progetto. clap clap! bravo DaVe! (anche lui si chiama Dave!!!!! 😀 )

Categorie
Informatica

memoria condivisa

da quando ho cominciato lavorare a tempo pieno con eclipse, pl/sql Developer e tomcat con 3 o 4 webapps caricate contemporaneamente, il computer ha cominciato a soffocare, con solo 512Mb di Ram. allora via con l’upgrade!
il mio capufficio chiama il servizio sistemistico e richiede ancora 512Mb per la mia macchina. passa quasi un mese e si presenta l’ometto. purtroppo ha disponibile solo un banco da 256Mb, e bon, che si monti lo stesso. piuttosto che niente, meglio piuttosto.
il computer comincia a respirare e io a lavorare senza crash continui.
la richiesta del mezzo giga è ancora attiva. passa un’altro mese, anzi quasi due, e si presenta un’altro ometto: “di chi è il computer HDS43X?” “mio!” “devo installare un banco di Ram” “Aleeeeee!”. si sentono suonare le trombe, sventolano le bandiere, la gente in piazza fa festa.
ora vediamo in uno pseudocodice Java come si è svolta questa operazione di alta tecnologia:

Memoria memoriaVecchia, memoriaNuova;
Tecnico ometto = new Tecnico();
ometto.smontaMemoria(memoriaVecchia);
int quantaMemoriaVecchia = memoriaVecchia.getMegaByte(); 
  // è 256Mb!
int quantaMemoriaNuova = memoriaNuova.getMegaByte(); 
  // è 512Mb!
if (quantaMemoriaVecchia < quantaMemoriaNuova) {
  try {
    ometto.montaMemoria(memoriaNuova);
  } catch (TipoMemoriaNonSupportato t){
    if (memoriaVecchia instanceof DDRAM &&
        memoriaNuova instanceof SDRAM) {
          Divinita dio = God.getInstance();
          // Dio è un singleton Ahahahahaahahaaaa! =) 
          throw new Bestemmia(dio);           
    }
  } finally {
    ometto.rimonta(memoriaVecchia);
    ometto.exit(fromOffice);
  }
}

e così aspetterò ancora un altro mese...