Categorie
Informatica Politica

ancora numeri

ma stavolta è una cosa grossa: il numero della BBBBestia!
[Vulvia mode ON]Lo sapevate? sui tutti codici a barre europei, c’è scritto il numero 666. non l’avete visto? ah, perchè è scritto in binario… ah, non starete mica pensando che il Satanasso non capisce il binario, vero? Sapevàtelo, su Rieducational Channel![Vulvia Mode OFF]
Insomma, i codici a barre hanno tre barre (appunto) di controllo, all’inizio, a metà e alla fine. servono per delimitare la lettura, ovviamente. la sequenza di controllo è | | (Barra-Spazio-Barra): se Barra=1 e Spazio=0 sta cosa si legge 101 che in base 2 vale 6.
[EDIT]:e bon che sono un informatico… 101, come mi segnala un utente e non la mia mente bacata, in binario è 5, non 6! in realtà leggono BarraBarraSpazio->110->6
Ora, visto che ce ne sono tre di sequenze di controllo, si può leggere addirittura 101 101 101 [EDIT] come sopra 110 110 110
. aiuto! orrore! raccapriccio! è il numero 6 6 6!!! anzi no, perchè il numero 101101101, se proprio vogliamo, in decimale è 365 [EDIT]438. bon. a parte l’evidenze stronzata, un consigliere svizzero sta facendo una denuncia penale per vietare l’uso dei codici a barre siffatti perchè

“in particolare, [il numero] offende o può offendere la sensibilità religiosa di cattolici, evangelici-riformati, ortodossi e dei fedeli di tutte le altre confessioni cristiane minori.”

cosa ne penso io: ma andate a cagare…[EDIT] e quasi quasi ci vado anch’io che non so fare i conti…

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
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...

Categorie
Informatica

stefano e guglielmo

Stefano Lavori e Guglielmo Cancelli, chi sono?
vediamo cosa ci racconta la bbc…

per la cronaca si sta parlando di Steve Jobs e Bill Gates…

Categorie
Informatica

cache

inteso sia nel senso francese che in quello triestino. =)
scena ufficio: c’è F., collega con vent’anni di esperienza su pl/sql, alle prese con una procedura oracle che va e non va.
cioè sembra andare ma su internet exploder la pagina con i dati non è aggiornata.
allora F. chiama il capufficio C. dicendo “guarda ci deve essere qualche problema, la procedura blabla, il commit funziona blabla… e i dati sono errati”. il capufficio C. guarda la procedura, ok, guarda il codice java, ok, guarda il browers, no ok!
Strumenti -> opzioni internet -> file temporanei -> elimina. reload. dati corretti!
C.: È un problema della cache. hai capito perchè non uscivano i dati giusti?
F.: no, cioè…
C.: ho cancellato la cache di internet exploder e quindi…
F.: quindi la procedura…
C.: no, che procedura! internet exploder!
F.: sì, perchè tiene in memoria…
C.: cosa tiene in memoria secondo te?
F.: eh… i parametri del calcolo… (e sempre più fantozzianamente)… i risultati della procedura…
C.: sicuro? tiene in memoria i parametri?
io, da dietro le spalle di C., come se fossimo a scuola durante l’interrogazione, faccio sventolare un foglio di carta suggerendo “pagine, pagine”.
C. mi vede riflesso nel vetro dell’anta dell’armadio e io smetto…
F.: beh, così se devi riaggiornare… forse tiene la SGA! ecco, c’è la SGA nella cache e allora (sta per affondare nella sedia)…
C.: ah, secondo te exploder ha la SGA di Oracle nella cache…
F.: forse…
C.: exploder tiene memoria delle pagine html! le pagine generate dal server! se ce le ha già in memoria non le richiede di nuovo al server, quindi tu vedi i dati vecchi. cancellata la cache il browser va a richiedere la pagina al server che gliela dà con i dati aggiornati. chiaro?
F.: beh, sì, non avevo capito.
C.: bene.
C. esce. dieci secondi e torna.
C.: potresti telefonare a Larry Ellison e Bill Gates e suggerirgli di fare in modo che tutti i client scambino col server la SGA di Oracle, sarebbe leggero e veloce e tutti potrebbero accedere ai dati senza problemi… (riesce sghignazzando…)
umorismo informatico. io ho riso. poi mi sono scusato con F., ma proprio non ce la facevo a resistere… fantastico =)
per la cronaca e per chi non lavora con oracle, la SGA, System Global Area, è una porzione di memoria _grande_ che il server Oracle usa condividendola sulle varie istanze di database. _grande_ nel senso che nel nostro caso sarà qualcosa tipo dai 2 ai 4 GigaByte. condividerla con il mondo è un’idea alquanto balzana