Archivio per la Categoria “Informatica”

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

Tag:, , , , , ,

Comments Nessun Commento »

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… =)

Tag:, , , , , , , ,

Comments Nessun Commento »

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.

Tag:, , , , , , , , , , , ,

Comments Nessun Commento »

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!!!!! :D )

Tag:

Comments Nessun Commento »

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

Tag:

Comments Nessun Commento »

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

Tag:, , , , , , ,

Comments Nessun Commento »

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

Tag:

Comments 2 Commenti »

sì perchè ci sono delle cose che proprio mi piacciono, che mi danno quel senso di ubriachezza felice che ti fa voglia di averle o continuare a farle… mi sono spiegato?
no?
ok. mi spiego meglio: da qualche tempo ho sentito parlare di Ruby, un linguaggio interpretato, orientato agli oggetti, debolmente tipato, anzi Duck Typed, creato da un giapponese diversi anni fa. sembrava molto interessante, ma finchè non è stata pubblicata della documentazione in inglese, ruby è rimasto confinato nella terra del sole che sorge.
comunque la grande popolarità è arrivata quando un danese americano, David Hansson, ha scritto un framework con Ruby per gestire applicazioni web: Ruby On Rails.
fatto sta che l’ha fatto proprio bene. già si deve onorare Ruby per l’eleganza di alcune espressioni, che lo rendono un linguaggio molto di alto livello (sembra proprio di “parlare” in Ruby), e Rails aggiunge questa eleganza anche alla gestione dell’applicazione. RubyOnRails (detto RoR) unisce al modello MVC di base, una serie di best-practices, che rappresentano, tutto insieme, una sorta di stato dell’arte per lo sviluppo web. così esce da solo il paradigma convention over configuration che anima l’intero RoR: in pratica dice “se segui queste ottime convenzioni, scrivere l’applicazione sarà molto più facile”. e, devo dire, ha ragione.
la scimmia mi ha preso proprio perchè ho cominciato a studiare ruby e rails, prima guardando un po’ in giro sul web, poi prendendo un libro “Sviluppare applicazioni web con rails” (traduz. di “Agile web developement with rails”, dello stesso Hansson), e adesso con gli screencast. ce ne sono di bellissimi. me li guardo con vero gusto. e sto imparando molte cose.
vi consiglio quelli sul sito ufficiale di RoR, quelli su ScribeMedia, oppure da cercare su besttechvideos.
insomma adesso ho la scimmia e non riesco ad andare a dormire…

Tag:

Comments 1 Commento »