Torna indietro   Hardware Upgrade Forum > Software > Programmazione

KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo
KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo
KTC lancia il nuovo monitor gaming H27E6, un modello da 27 pollici che promette prestazioni estreme grazie al pannello Fast IPS con risoluzione 2K QHD (2560x1440). Il monitor si posiziona come una scelta cruciale per gli appassionati di eSport e i professionisti creativi, combinando una frequenza di aggiornamento di 300Hz e un tempo di risposta di 1ms con un'eccezionale fedeltà cromatica
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Realizzato da Lenovo e installato presso il Cineca di Casalecchio di Reno, Pitagora offre circa 44 PFlop/s di potenza di calcolo ed è dedicato alla simulazione della fisica del plasma e allo studio dei materiali avanzati per la fusione, integrandosi nell’ecosistema del Tecnopolo di Bologna come infrastruttura strategica finanziata da EUROfusion e gestita in collaborazione con ENEA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 15-06-2012, 16:33   #1
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
[OT][FUN] Indiana BOFH ed i Predatori del CED Perduto

Oggi non mi passa un cavolo, la sezione è un mortorio e quindi... e comunque non è spam al 100%, l'anedotto ha un valore didattico in quanto illustra un caso tipico di dipendenza circolare
---

Sembrava una giornata molto tranquilla, T e' a casa a cercare di sviluppare una applicazione (o meglio, ad adattare una applicazione) per un cliente, H e' ancora in 'recupero' dopo l'esplosione, Bart e' alla co-locazione. Il che sostanzialmente lascia ME... con licenza di cazzeggiare. E cazzeggio e' fino circa alle 11.30, poi arriva Wendy (la nostra segretaria) con il Problema.

W - Ha chiamato SL di $dittafancazzisti, hanno un guaio con un paio di macchine che vennero installate tempo addietro e di cui noi dovremmo occuparci.
IO - Ok, molla il foglio.
W - No, il fatto e' che quelle macchine sono per la LAN del loro ufficio, quindi qualcuno dovrebbe andare la a vedere...

Oh che bello. Cosi' vado a $dittafancazzisti, li' vengo accolto da UL, con l'altisonante titolo di Direttore dell'IT.

UL - ...quindi abbiamo avuto questo problema con l'ups e praticamente tutti i server si sono spenti...
IO - Ok, e perche' non li avete riaccesi?
UL - Non e' cosi' semplice, e' un sistema altamente integrato yada yada, processi concorrenti blah blah, massima ridondanza yada yada...
IO - ?? Come sarebbe a dire??
UL - Mah... il vostro collega H non vi ha spiegato?
IO - H e' momentaneamente in ferie, quindi no, non ha spiegato un tubo. Avete della documentazione su sta cosa?
UL - Ah si, c'e' un manuale...

E mi molla il malloppazzo. Ok, sti rimbamba hanno una manica di server, di cui uno, che sarebbe quello principale e che chiameremo A tanto per capirci, pare che abbia dei file di configurazione che sono su una partizione montata via NFS da un altro server, che chiameremo B, il quale a sua volta ha qualche accrocchio di middelware scoobydoobydo che richiede per avviarsi una autenticazione via server Radius che e' installato sul server C, il quale a sua volta richiede saildiavolocosa su server A...

He...hummmm... 'spetta 'n moment... allora, per avviare server A ti serve il server B, ma per avviare B ti serve C e C dipende da A... oh che bello!

IO - (rivolto ad UL) E chi sarebbe il Torquemada che si e' sognato sta cosa?

Si, perche' bisogna essere Himmler o Hannibal Lecter per mettere in piedi una roba del genere. Comunque, nella documentazione c'e' anche la "procedura per il riavvio del sistema", che e' una roba del genere:

1) Pregare Cthulhu che un asteroide distrugga l'edificio risolvendo il problema per voi (no, ok, questo punto non c'era, l'ho aggiunto io a matita...)
2) Avviare server B in single-user mode
3) Avviare server A in single-user mode
4) Mentre A si avvia e quando raggiunge il punto X, avviare su B il processo tal-de-tali
5) Avviare C in single-user mode
6) Avviare su A il processo tal-de-tali
7) su C fare un ping -c 10 -s 128 verso B
8) su A avviare il processo tal-de-tal-altro

E va avanti cosi' per un bel po'... in sostanza il sistema e' imbrogliare i 3 rottamoni facendogli credere che i vari servizi siano gia' su quando questi non lo sono. Sembra facile eh?

Quello che ancora non ho detto e' che i 3 cosi sono agli estremi opposti della sala macchine di $dittafancazzisti, separati da quello che potrebbe essere solo descritto come un percorso alla Indiana Jones con cavi di rete tesi in mezzo ai corridoi, mattonelle del pavimento pericolanti, racks proni al crollo e CL che sputano freccette avvelenate con le cerbottane (ok, no, quest'ultimo particolare non c'era, ma non mi sarei stupito piu' di tanto)

Ah, ed ovviamente in tutta la sala macchine c'e' UN solo monitor ed UNA sola tastiera.

Ok, indosso il mio cappellino da BOFH, la giacca da moto, faccio schioccare un cavo di rete a mo' di frusta e recupero dagli uffici attinenti 3 tastiere e 3 monitors con relativi cavi di alimentazione, dopo di che procedo a mettere in pratica cio' che dice la documentazione. Al terzo o al quarto tentativo imbrocco il tempo giusto ed i 3 magi sembrano riavviarsi.

Dopo essermi ripreso dall'immane faticata sono arrivato persino a suggerire ad UL di mettere in piedi un sistema diverso, o come minimo a mettere i 3 maledetti nello stesso rack e con un KVM, sono quasi pronto per ripartire.

UL - Ma in effetti stavamo pensando ad un sistema piu' robusto, distribuito su 2 datacenter con un load-balancer geografico e...

Un serpente velenoso! Voglio un serpente velenoso. Anzi no, 2! Che li metto in cluster!

---

(Autore: Davide Bianchi)
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 20-06-2012 alle 10:37.
banryu79 è offline  
Old 16-06-2012, 00:00   #2
DioBrando
Senior Member
 
Iscritto dal: Jan 2003
Città: Milano - Udine
Messaggi: 9418
Mi ricorda il sistema della doppia chiave nell'inizio di WarGames. Solo che stavolta è in due stanze separate.

Geniale
DioBrando è offline  
Old 19-06-2012, 16:37   #3
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ne aggiungo un'altra. Altra fonte.

Social Engineering:
Quote:
<Cthon98> hey, if you type in your pw, it will show as stars
<Cthon98> ********* see!
<AzureDiamond> hunter2
<AzureDiamond> doesnt look like stars to me
<Cthon98> <AzureDiamond> *******
<Cthon98> thats what I see
<AzureDiamond> oh, really?
<Cthon98> Absolutely
<AzureDiamond> you can go hunter2 my hunter2-ing hunter2
<AzureDiamond> haha, does that look funny to you?
<Cthon98> lol, yes. See, when YOU type hunter2, it shows to us as *******
<AzureDiamond> thats neat, I didnt know IRC did that
<Cthon98> yep, no matter how many times you type hunter2, it will show to us as *******
<AzureDiamond> awesome!
<AzureDiamond> wait, how do you know my pw?
<Cthon98> er, I just copy pasted YOUR ******'s and it appears to YOU as hunter2 cause its your pw
<AzureDiamond> oh, ok.
Un genio
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline  
Old 26-06-2012, 17:54   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Pare che ci sia in giro gente che non ha ben capito che cosa si intenda per codice 'parlante' o 'autodocumentato':
Codice:
public bool IsEligibleToSeeThisEvent(EventRegistrationInformation eventRegistrationInformation)
{
  if (ThisEventDoesNotRestrictRegistrantsBasedUponActivityType(eventRegistrationInformation))
      return TrueBecauseThisEventDoesNotRegistrictBasedUponActivityType();

  var activityTypes = GetTheActivityTypesAttachedToThisEvent(eventRegistrationInformation);

  if (NoActivityTypesAreAttachedToThisEvent(activityTypes))
      return TrueBecauseThereAreNoActivityTypesToFilterOnThisEvent();

  if (TheUserIsNotLoggedIn(eventRegistrationInformation))
      return FalseBecauseNoActivityTypesAreAvailableForUsersWhoAreNotLoggedIn();

  return ThereIsAtLeastOneSharedActivityTypeBetweenTheEventAndCurrentUser(
           eventRegistrationInformation, 
		   activityTypes);
}

private static bool TrueBecauseThisEventDoesNotRegistrictBasedUponActivityType()
{
  return true;
}

 private bool ThisEventDoesNotRestrictRegistrantsBasedUponActivityType(
    EventRegistrationInformation eventRegistrationInformation)
{
  return eventActivityTypeFilterRetriever
      .DoesThisEventHaveARestrictionBasedOnActivityTypes(
          eventRegistrationInformation.EventId) == false;
}

private bool ThereIsAtLeastOneSharedActivityTypeBetweenTheEventAndCurrentUser(
    EventRegistrationInformation eventRegistrationInformation, 
	IEnumerable<ActivityType> activityTypes)
{
  var currentActivities = registrantActivityRetriever
    .GetRegistrantActivityProductCode(eventRegistrationInformation.AccountId);

  return activityTypes.Any(x => currentActivities.Any(y => y.Id == x.Id));
}

private static bool FalseBecauseNoActivityTypesAreAvailableForUsersWhoAreNotLoggedIn()
{
  return false;
}

private static bool TheUserIsNotLoggedIn(EventRegistrationInformation eventRegistrationInformation)
{
  return eventRegistrationInformation.IsLoggedIn == false;
}

private static bool TrueBecauseThereAreNoActivityTypesToFilterOnThisEvent()
{
  return true;
}

private static bool NoActivityTypesAreAttachedToThisEvent(IEnumerable<ActivityType> activityTypes)
{
  return activityTypes.Any() == false;
}

private IEnumerable<ActivityType> GetTheActivityTypesAttachedToThisEvent(
    EventRegistrationInformation eventRegistrationInformation)
{
  return eventActivityTypeFilterRetriever.GetAll(eventRegistrationInformation.EventId);
}
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline  
Old 26-06-2012, 18:51   #5
DioBrando
Senior Member
 
Iscritto dal: Jan 2003
Città: Milano - Udine
Messaggi: 9418


Meno male che sono arrivati i Retina sul mercato, un bel po' di spazio in più per Visual Studio, XCode, Eclipse ecc.
DioBrando è offline  
Old 29-06-2012, 00:29   #6
biffuz
Senior Member
 
L'Avatar di biffuz
 
Iscritto dal: Jul 2001
Messaggi: 3488
Quote:
Originariamente inviato da DioBrando Guarda i messaggi


Meno male che sono arrivati i Retina sul mercato, un bel po' di spazio in più per Visual Studio, XCode, Eclipse ecc.
Certo, infatti il MegaDirettore ne comprerà subito uno!

Ai sottoposti toccheranno gli Acer da 1366*768.

Seriamente, ne ho conosciuti alcuni che per la disperazione si sono comprati un monitor di tasca loro...
__________________
www.biffuz.it | Thou shall not follow the NULL pointer, for chaos and madness await thee at its end.
Powered by: M1 @ Sonoma | 7600X @ W11 | C2Q @ XP | P!!! @ W98+BeOS | 286 @ W3.1 | C64 | iP16 | iPad8 | rPi4 | and more...
biffuz è offline  
Old 29-06-2012, 09:18   #7
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
è sempre bello e gratificante vedere che ci sta qualcuno messo peggio di te.

uan curiopsità...ma a voi capita di scrivere codice con commenti "per i posteri"???

l'altro giorno mi sono ritrovato a scriver eun commento che faceva più o meno così:
Quote:
Se qualcuno si troverà a leggere questo codice...in bocca al lupo. sono 3 giorni che provo a ricostruire come mi sia venuto in mente. L'unica cosa che sò è che funziona!!! se devi modificare attento che ho invertito i nomi di due variabili, quindi attento a quello che fai e in bocca al lupo
riflettendo dopo sul fatto che la variabile potevo semplicemente rinominarla.

P.S.: la variabile ancora non l'ho cambiata
__________________
My gaming placement
franksisca è offline  
Old 29-06-2012, 09:47   #8
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da franksisca Guarda i messaggi
uan curiopsità...ma a voi capita di scrivere codice con commenti "per i posteri"???
Sì, spesso.
Nei commenti ho: chiesto scusa in anticipo, bestemmiato, inveito contro chi ha deciso di implementare una cosa in un certo modo senza poi doverci mettere le mani, ammesso che la mia soluzione in questo o quel caso faceva cagare, scritto "hic sunt leones", e tanto altro ancora...

Con lo stress mi capita di usare i commenti come un diario. I miei colleghi ci ridono sopra, quindi per ora tutto ok!
shinya è offline  
Old 29-06-2012, 10:36   #9
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Cow-Location

Un'altra (dis)avventura di Davide Bianchi, la posto perchè è da antologia:
---

Dopo un certo numero di cappellate da parte del nostro co-location partner, abbiamo deciso che era il caso di cercare un'altra societa' presso la quale piazzare i nostri server. SL, dimostrando una incredibile rapidita', ha selezionato a tempo di record una societa' di co-locazione che promette faville.

Stabilito pertanto un contratto "di prova", si tratta di installare qualche server e vedere come funziona la cosa. Nel nostro contratto per altro e' specificato che noi vogliamo un rack per intero tutto per noi. Sistemate le cose, telefono al capoccia che promette di essere presso il centro dati all'ora giusta, io lo informo che voglio prima dare un'occhiata al rack e poi installarci i server e che (dato che i server pesucciano), mi portero' dietro due aiutanti. Lui si fa dare i nomi dei due (CB e AD), e mi assicura che e' tutto Ok.

Con i server nel bagagliaio della macchina ed il mio laptop al seguito ci avviamo percio' alla volta del centro dati, e la' giunti ci presentiamo alla Reception. Li' veniamo apostrofati da CL.

CL - Che volete?
IO - (alla faccia della gentilezza) Salve, sono DB di $societa, dobbiamo controllare il nostro rack ed installare i server.
CL - Io non so niente! Non ho ricevuto nessuna e-mail di autorizzazione!
IO - (mostrandogli il fax) Ecco, questa e' l'autorizzazione del vostro boss.
CL - Non mi interessa. Io devo avere una mail di autorizzazione direttamente dalla societa'.
IO - Questo qui' e' un fax dalla vostra societa'!
CL - Non me ne frega niente! Io devo avere una mail da voi che vi autorizza ad entrare!
IO - Una mail? Da me?
CL - Esattamente!
IO - ...Ok...

Tiro fuori il portatile, mi appoggio sul suo banco, attivo il modem GSM... cliccketi-clicckety-mail [email protected]kkety...

-*BING*- You've got mail...

CL - Ecco, adesso va bene...
IO - Ma.... te l'ho mandata da qui!!! Vedi???
CL - Non mi interessa! A me serve una mail...

Gia' le cose mi pare che non vadano troppo bene... guardo CB e AD che sembrano pensarla allo stesso modo. Ok, presentiamo i documenti e ci vengono forniti i tesserini di identificazione. Entriamo quindi e CL ci conduce al Rack... ed io osservo i 3 Dell con le lucine lampeggianti dentro...

CL - Ecco, questo qui' e' il vostro rack.
IO - ??? Hemmm... momento... non puo' essere il nostro rack! Ci sono tre server dentro!
CL - Questo qui' e' il vostro rack! C'e' scritto cosi' sul foglio!
IO - Ma noi abbiamo pagato per un rack vuoto. Questi di chi sono?
CL - (veramente incazzato) Questo qui' e' il vostro rack! E questi sono i vostri Server!
IO - Ma noi non li abbiamo ancora messi dentro i server! Questi non sono nostri!
CL - QUESTO E' IL VOSTRO F@77UT0 RACK E QUESTI SONO I VOSTRI F@77UT1 SERVER! SE NON SIETE CONTENTI NON SONO AFFARI MIEI!!!

A questo punto mi volto a guardare CB e AD...

IO - (rivolto a CB e AD) Voi avete sentito bene che questi sono i NOSTRI server giusto?
CB e AD - Hemmm... herr... si', ha detto proprio cosi'...
IO - (rivolto a CL) Allora... se questi sono nostri possiamo portarceli via giusto?
CL - PIANTATELA DI ROMPERMI I C@GL1@N1! POTETE FARCI QUELLO CHE VI PARE!!!
IO - Potrebbe controllare un'ultima volta che questo sia il NOSTRO Rack? Senza dubbio alcuno??
CL - QUESTO E' IL VOSTRO RACK!!! E' IL VOSTRO F@77U7@ RACK!!!
IO - Ok, allora...

Stacco uno dei server, lo smonto dal rack, lo metto in mano ad AD e (parlando italiano che AD lo capisce benissimo)

IO - (rivolto ad AD) Mettilo in macchina e porta qui' uno dei nostri.
AD - Hemmm.. 'spetta un momento... che hai in mente???
IO - Lo hai sentito no? Questi sono i nostri server!

Smonto tutti e tre ed installo i nostri, CL, molto incazzato, passa il tempo parlando al cellulare, da come cinguettava direi che stava parlando con la fidanzata. Mentre sto finendo di controllare che il tutto funzioni correttamente (con AD e CB piuttosto preouccupati dietro), Luser-Supervisor (LS) arriva al galoppo dalla receptions con un bel colorito da colpo apoplettico imminente...

LS - FEEEEERMIIIIIII!!! CHE CA$$@ STATE FACEEEENDOOOOOOO!!!!!!
IO - (il piu' calmo possibile) Sto' controllando i miei server.
LS - (fissando il rack) QUESTO NON E' IL VOSTRO RACK!!!!!!
IO - Si', lo e'. L'ho chiesto a lui (indicando CL) almeno sei volte. E lui ha confermato almeno 6 volte che questo e' il mio rack. Ed io ho pure due testimoni (indicando AD e CB). Quindi e' il mio rack.
LS - (fissa CL, poi guarda me) QUESTO NON E' IL VOSTRO RACK!!! E DOVE SONO I SERVER CHE ERANO DENTRO?????
IO - (sempre calmissimo) Li abbiamo buttati via.
LS - (arterie pulsanti, occhi fuori dalle orbite...) COOOOOOOOOSAAAAAAA????
IO - Lui (indicando CL) ha detto che erano i nostri server, pertanto li abbiamo eliminati.

A questo punto LS comincia ad ululare in direzione di CL, ed io mi godo la scena di CL il cui colore passa dal rosso al bianco e poi al verde. Non ho capito un gran che di quello che ha detto, ma ho sentito la parola "ontslagen" (licenziato) almeno 3 o 4 volte... poi LS si rivolge a me.

LS - (sull'orlo di un colpo apoplettico) Ditemi che state scherzando e che i server li avete ancora...
IO - Certo che li ho ancora. Non sono mica come lui (indicando CL).
LS - E se dimenticassimo tutta la faccenda e li rimettessimo dentro?
IO - No, non credo proprio... penso che io restero' qui ad aspettare che il legittimo poprietario di quei server venga a vedere che sta succedendo, cosi' potremmo avere una bella discussioncina riguardo il vostro cosiddetto "servizio"... Che ne dice?

Adesso ho una tesserina di plastica nel mio portafogli, che mi consente accesso illimitato, 24 ore su 24, al mio rack. No-question-asked.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline  
Old 04-07-2012, 13:03   #10
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
A proposito dei commenti nel codice...

... riporto alcuni stralci di commenti tratti dai sorgenti di Win2K.
E' ovviamente roba vecchia, ma sempre lollica

---

Some dissatisfaction with the compiler is expressed in private\shell\shell32\util.cpp:
Codice:
// the fucking alpha cpp compiler seems to fuck up the goddam type "LPITEMIDLIST", so to work
// around the fucking peice of shit compiler we pass the last param as an void *instead of a LPITEMIDLIST
Some insight into Microsoft's famous daily build process is given in private\windows\media\avi\verinfo.16\verinfo.h:
Codice:
     *       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     *       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     * !!!!!!!IF YOU CHANGE TABS TO SPACES, YOU WILL BE KILLED!!!!!!!
     *       !!!!!!!!!!!!!!DOING SO FUCKS THE BUILD PROCESS!!!!!!!!!!!!!!!!
     *       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     *       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
There are also various references to idiots and morons, some external, some within Microsoft. The file private\ntos\rtl\heap.c, which dates from 1989, tells us:
Codice:
    // The specific idiot in this case is Office95, which likes
    // to free a random pointer when you start Word95 from a desktop
    // shortcut.
The file private\ntos\w32\ntuser\kernel\swp.c from 11-Jul-1991 points at:
Codice:
    * for idiots like MS-Access 2.0 who SetWindowPos( SWP_BOZO
    * and blow away themselves on the shell, then lets
    * just ignore their plea to be removed from the tray
private\genx\shell\inc\prsht.w:
Codice:
// we are such morons. Wiz97 underwent a redesign between IE4 and IE5
private\shell\ext\ftp\ftpdrop.cpp:
Codice:
We have to do this only because Exchange is a moron.
private\shell\shdoc401\unicpp\desktop.cpp:
Codice:
// We are morons. We changed the IDeskTray interface between IE4
private\shell\browseui\itbar.cpp:
Codice:
// should be fixed in the apps themselves. Morons!
private\inet\mshtml\src\core\cdbase\baseprop.cxx:
Codice:
// HACK! HACK! HACK! (MohanB) In order to fix #64710 at this very late
private\inet\mshtml\src\core\cdutil\genutil.cxx:
Codice:
// HACK HACK HACK. REMOVE THIS ONCE MARLETT IS AROUND
private\inet\mshtml\src\other\moniker\resprot.cxx:
Codice:
// <HACK>
goto EndHack;
// </HACK>
private\inet\mshtml\src\site\layout\flowlyt.cxx:
Codice:
// God, I hate this hack ...
private\inet\wininet\urlcache\cachecfg.cxx:
Codice:
// Dumb hack for back compat. *sigh*
private\inet\wininet\urlcache\filemgr.cxx:
Codice:
// ACHTUNG!!! this is a special hack for IBM antivirus software
private\ispu\pkitrust\trustui\acuictl.cpp:
Codice:
// HACK ALERT, believe it or not there is no way to get the height of the current
// HACK ON TOP OF HACK ALERT,
private\ntos\udfs\devctrl.c:
Codice:
// Add the hack-o-ramma to fix formats.
private\shell\shdoc401\unicpp\sendto.cpp:
Codice:
// Mondo hackitude-o-rama.
private\ntos\w32\ntcon\server\link.c:
Codice:
// HUGE, HUGE hack-o-rama to get NTSD started on this process!
private\ntos\w32\ntuser\client\dlgmgr.c:
Codice:
// HACK OF DEATH:
private\shell\lib\util.cpp:
Codice:
// TERRIBLE HORRIBLE NO GOOD VERY BAD HACK
private\ntos\w32\ntuser\client\nt6\user.h:
Codice:
* The magnitude of this hack compares favorably with that of the national debt.
private\shell\ext\tweakui\genthunk.c:
Codice:
* CallProc32W is insane. It's a variadic function that uses
* the pascal calling convention. (It probably makes more sense
* when you're stoned.)
private\mvdm\wow32\wcntl32.c:
Codice:
// These undocumented messages are used by Excel 5.0
private\mvdm\wow32\wgdi31.c:
Codice:
// InquireVisRgn is an undocumented Win 3.1 API. This code has been
// suggested by ChuckWh. If this does not fix the s 2.0
// problem, then ChuckWh would be providing us with an private entry
// point.
private\mvdm\wow32\wgfont.c:
Codice:
* This thunk implements the undocumented Win3.0 and Win3.1 API
* GetCurLogFont (GDI.411). Symantec QA4.0 uses it.
* To implement this undocumented API we will use the NT undocumented API
private\ntos\w32\ntuser\kernel\mnpopup.c:
Codice:
// Set the GlobalPopupMenu variable so that EndMenu works for popupmenus so
// that WinWart II people can continue to abuse undocumented functions.
private\windows\shell\accesory\hypertrm\emu\minitel.c:
Codice:
// Guess what? Latent background color is always adopted for mosaics.
// This is a major undocumented find...
private\windows\shell\accesory\hypertrm\emu\minitelf.c:
Codice:
// Ah, the life of the undocumented. The documentation says
// that this guys does not validate, colors, act as a delimiter
// and fills with spaces. Wrong. It does validate the color.
// As such its a delimiter. If...
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline  
Old 04-07-2012, 13:18   #11
DioBrando
Senior Member
 
Iscritto dal: Jan 2003
Città: Milano - Udine
Messaggi: 9418
Un mio collega da un altro cliente ha twittato:
Sai che la giornata partirà già storta quando ti chiedono "che differenza c'è tra compila e funziona?"

Non benissimo
DioBrando è offline  
Old 04-07-2012, 13:40   #12
biffuz
Senior Member
 
L'Avatar di biffuz
 
Iscritto dal: Jul 2001
Messaggi: 3488
Personalmente, una volta stavo cercando di debuggare per l'ennesima volta una funzione da circa 1000 righe, scritta malissimo, con una serie di cicli innestati, senza uno straccio di spiegazione e piena di pezzi di codice commentati in anni e anni di debug, quando con una illuminazione divina ho capito a cosa serviva.
L'ho commentata tutta, ci ho scritto sopra "CHI E' QUELL'IDIOTA CHE SI E' INVENTATO QUESTA ROBA???" e l'ho sostituita con una nuova funzione da circa 50 righe che faceva la stessa cosa in tempo O(logn), che ho scritto nella spiegazione.

Il mio capo si è complimentato per la nuova funzione, ha esclamato "wow, non pensavo che quella roba di O(logn) si potesse usare davvero", però ha dovuto rimettere quella vecchia: "non ci pagano per scrivere nuove funzioni... e poi non sta bene dare dell'idiota al cliente"
__________________
www.biffuz.it | Thou shall not follow the NULL pointer, for chaos and madness await thee at its end.
Powered by: M1 @ Sonoma | 7600X @ W11 | C2Q @ XP | P!!! @ W98+BeOS | 286 @ W3.1 | C64 | iP16 | iPad8 | rPi4 | and more...
biffuz è offline  
Old 04-07-2012, 14:14   #13
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
shinya è offline  
Old 04-07-2012, 14:18   #14
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
@shinya: shit & crap in crescita esponenziale, mwawawawa!!

@biffuz: beato te che ancora ce le hai le "illuminazioni divine"
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline  
Old 12-07-2012, 09:20   #15
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Cosa puo' andare male?

Altra storiella di Davide Bianchi, questa ci racconta che tutto il mondo è paese quando si tratta di project managment et similia (le vicende di Davide Bianchi sono localizzate in Olanda)
---

Ritorniamo a parlare di $allupati, di cui avevo accennato in questa storia.

Allora, avevamo lasciato il branco a smazzarsi la loro server-farm composta da una dozzina di macchine per capire perche' la foxxuta applicascione e' cosi' lenta prima di andare in produzione.

Fedeli al modo standard di pianificare le cose, l'intero ambaradan e' andato in produzione prima che i problemi di cui sopra fossero corretti. Cosi' ci ritroviamo alla prima settimana di attivita'. Settimana che e' stata preceduta da un barrage pubblicitario inaudito per promuovere una qualche cosa che sta' gente vorrebbe vendere.

Il risultato e' che il primo giorno e' tutto calmo sul fronte occidentale, il secondo giorno cominciamo a vedere che dalle 11.30 circa il numero di richieste comincia ad aumentare e la webapplicascion comincia ad andare in panico. Ogni tanto qualche cosa si incatasta ed io mi ritrovo con Tomcat a palla con 300 thread attivi in stato di attesa e niente che arriva. Risultato: si riavvia tomcat.

Avendo questi 8 (otto) applicascionserver il gioco consiste nell'avere su uno schermo un computo dei thread attivi sui vari servers e quando uno dei servers comincia ad aumentare (20... 23.... 28.... 31... 38...) significa che e' andato in palla ed e' il momento di fare un restart. Il che va' avanti dalle 11.30 fino circa alle 14.00, poi la gente ritorna a lavorare (o far finta di) e tutto ritorna tranquillo fino al giorno dopo.

Solo che $allupati non gradisce di ricevere una fattura per 3 ore di lavoro extra ogni giorno, specialmente da quando io ho cominciato a chiamare tale attivita' "retarded craplication pick-and-spin-up" (cioe' dal primo giorno). Quindi oggi, verso le 10.30, ci becchiamo la telefonata dall'UL di turno del branco di mammalucchi che hanno scritto l'applicascion che fa' domande varie.

IO - ...e quindi penso che il problema non sia tanto in TomCat quanto nella connessione tra la vostra applicazione ed il backend che fornisce i dati.
UL - Ma il backend non lo abbiamo fatto noi.
IO - E mi sta bene. Ma tu mi hai chiesto che cosa ne penso, e questo e' quello che ne penso.
UL - Mi viene in mente... avete provato a fare una pulizia della cache del database?
IO - La cache di che cosa?
UL - La cache del database.

Pausa, mentre io e DB ci guardiamo pensando "di che ca$$o sta' parlando questo qui'?".

IO - No, noi manco sapevamo che ci fosse una roba del genere... dove sarebbe sta' cosa, come si fa' ed a che serve?

E qui' UL si e' lanciato in una spiegazione irta di buzzwords in cui specificava che nel database esistono una serie di tabelle che contengono le query che sono state eseguite precedentemente allo scopo di stilare delle classifiche e statistiche e tali tabelle vengono elaborate ogni ora e sarebbe opportuno ripulirle di tanto in tanto in modo da mantenerle il piu' possibile pulite.

Ora, sorvoliamo sulla logica della cosa e sul fatto che se non ce lo dici sara' dura che ce lo sogniamo di notte, ma la faccenda mi ha fatto venire un dubbio.

IO - 'momento... ma di database ce ne sono due e dovrebbero essere sincronizzati, quindi a che vi serve calcolare ste' statistiche?
UL - Ah no, i databases non sono sincronizzati. Ne usiamo solo uno.
IO - ??? Come sarebbe a dire ne usate solo uno? Tutto sto' popo' di front-end con 8 server ed avete UN SOLO database?
UL - Bhe', si', perche' altrimenti e' un casino e... Ma che cosa puo' andare male in ogni caso?
IO - Hu... che il database si incatasta e tutto smette di funzionare?
UL - Heee... Ma no, questo non succede. Comunquesia, io suggerisco di eseguire la pulizia delle statistiche.
IO - (guardando DB che sta' eseguendo un perfetto face-palm) Ok, lo possiamo schedulare per stanotte?
UL - No, no. Facciamolo subito!
IO - (guardando l'orologio) Ma sono gia' le 11. E fra mezz'ora comincia il momento di massimo carico. Forse e' meglio evitarlo.
UL - Ma no, la procedura e' rapida e dovrebbe risolvere il problema. Che cosa puo' andare male?

Cosi' dopo un rapido giro di mails, lanciamo sta' cosa e rimaniamo a guardare mentre il db server comincia a macinare ed il load average comincia a salire fino ad assestarsi intorno ad un 49 e rimane li'.

E di concerto gli otto servers cominciano ad incatastarsi uno dopo l'altro quando le loro richieste non ricevono risposta.

Verso le 12, DB che e' al telefono da una parte con $allupati e dall'altra parte con gli sviluppatori decide che e' il caso di tirare giu' tutti e 8 i servers, fare un bello shutdown del database e ripartire da capo.

Io do' lo shutdown al database e rimango ad aspettare mentre quello comincia il rollback di quella famosa procedura di pulizia, con il redo log che si riempie a ritmi allucinanti.

Dopo un quarto d'ora DB decide che forse e' il caso di mettere una pagina di "lavori in corso" sul sito.

Finalmente, alle 13.45, il database riesce a spegnersi, noi riavviamo tutto in sequenza e le cose ritornano in vita. A quel punto abbiamo schedulato la procedura di pulizia per mezzanotte e vedremo come vanno le cose.

Ed adesso ho visto che stamani c'era pure una mail da parte di SL di $allupati che voleva avere una misura della frequenza dei riavvii dei servers durante il "round-up". Be', per oggi e' facile, la frequenza e' UNO.

Quindi dei DUE database servers in realta' ne e' usato solo uno. Per la serie: che cosa puo' andare male?

Davide
07/02/2011 08:00
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline  
Old 14-07-2012, 15:16   #16
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Bisogna sempre stare attenti a quello che si scrive nei commenti... non si sa mai chi li legge.
Ma puo' andare anche peggio. Ad esempio una volta ci era capitato di dover sviluppare una interfaccia utente per un macchinario.
In caso di errore in uno dei componenti hardware, doveva apparire un popup a video e il classico "ping!" di errore.
Un giorno per fare uno scherzo qualcuno sostitui il .wav dell ping con qualcosa di piu' colorito (fate conto un qualcosa tipo un spezzone tratto da un video di Mosconi, o giu' di li').
Momento di grande ilarita', fatto salvo che il qualcuno si dimentico' di togliere il .wav "burlone", che rimase li' fino al giorno in cui il cliente venne a testare il macchinario.
E come sanno tutti, se c'e' un momento in cui un macchinario si rompe, e' proprio quando viene il cliente a testarlo.
Per fortuna era un burlone anche lui e si e' fatto solo quattro risate...
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline  
Old 16-07-2012, 10:01   #17
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Momento di grande ilarita', fatto salvo che il qualcuno si dimentico' di togliere il .wav "burlone", che rimase li' fino al giorno in cui il cliente venne a testare il macchinario.
Leggerezza imperdonabile
Per fortuna il cliente aveva il senso dell'umorismo...
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline  
Old 16-07-2012, 11:04   #18
DioBrando
Senior Member
 
Iscritto dal: Jan 2003
Città: Milano - Udine
Messaggi: 9418
Il fantastico mondo dell'integrazione

Discussione tipo con gli utenti di un call center dediti al data entry:

Utente: "Salve, non riusciamo a chiudere pratiche da Giovedì, ad es questa ticket numero 123456 di tipo X"
Io: "Controlliamo. Possiamo avere il tracciato utilizzato per verificare che sia corretto?"
Utente: "Sì certo, lo alleghiamo".
Io: "scusate ma nella segnalazione si parla di un ticket di tipo X numero 123456.
Ma il tracciato allegato è di tipo Y (che non c'entra una mazza aggiungo sommessamente). E' possibile avere quello utilizzato?"
Utente: "Esatto. Grazie. Saluti"



...




Poi uno non deve bestemmiare contro l'intelligenza da armadillo degli utenti.
DioBrando è offline  
Old 25-07-2012, 17:25   #19
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Talebano

Questa volta la storiella divertente illustra cosa succede nel mondo reale quando diventa "stardand" il non rispetto degli standard (RFC)

---

Premessa: questa qui' non e' propriamente una 'storia', ma mi e' stato fatto notare da piu' parti che ultimamente scrivo un po' troppi "commenti", ed e' abbastanza relativa, quindi la posto qui'.

Il termine talebani o talibani indica gli studenti delle scuole coraniche (incaricati della prima sommaria alfabetizzazione, basata esclusivamente su testi sacri islamici). Sono diventati famosi sugli organi di comunicazione di massa, che usa questo termine per indicare la popolazione fondamentalista presente in Afghanistan e nel confinante Pakistan (fonte: Wikipedia). Ed e' usato (aggiungo io) anche per indicare in generale chiunque assuma posizioni estremiste in una qualunque discussione o su qualunque argomento.

Che io sia tacciato di "talibanismo" non e' cosa anormale, in molti casi le mie opinioni su certe cose sono oramai un po' troppo "estremizzate" per poter essere definite "bilanciate" (cose come "php e' una chiavica", "tutti i phprogrammatroti dovrebbero essere sterminati" e "exchange != mail server" tanto per citarne alcune). Ma in molti casi capisco che un approccio del tipo "digitale", con solo due posizioni possibili (bianco e nero, giusto e sbagliato, si o no) e' piuttosto difficile da tenere ed alla lunga provoca piu' problemi che altro, in questo mondo complesso e differenziato e' sempre necessario mediare.

Allora, stamani mi arriva la telefonata del CL del giorno (CL per gli amici), che si lamenta che non riesce a ricevere la posta dall'altro CL del giorno (CL2 per gli amici) il quale sarebbe tanto interessato a diventare suo cliente (cliente di CL intendo) ma a quanto pare se non riescono a comunicare via e-mail non c'e' modo.

Il server di posta di CL fu' installato un po' di tempo fa' dal mio ex-collega (si', quello che tirava le tastiere dalla finestra), il quale era pure lui un talebano, ma fino ad ora ha funzionato regolarmente e, dato che pare che sia solo la mail di CL2 che non viene ricevuta, io comincio a sentire puzza di un grosso, peloso e fetente Exchange in giro.

IO - Quindi che errore ricevete?
CL - Noi non riceviamo nessun errore, e' la posta di CL2 che non riceviamo
IO - E CL2 non riceve nessun errore al riguardo?
CL - No nessun errore, solo la posta di CL2 che non arriva.
IO - Si', che la sua posta non vi arriva lo avevo capito, ma di solito quando la posta non viene consegnata viene consegnato un qualche tipo di messaggio di mancato recapito, con una indicazione del perche' non si e' potuto consegnare il messaggio. CL2 dovrebbe avere un qualche tipo di errore.
CL - No la posta di CL2 non ci arriva.

Grrr...

Dopo una rapida ricerca nel nostro database di configurazione scovo i dati di login sul server di posta di CL, mi loggo e scopro che il server e' QMail. Nel paese dei Talebani Dan Bernstein e' il supremo ed indiscusso imperatore. Ravano un po' nei log e mi becco questo frammento di balbuzie:

[ScanFlowStore] Mail error: The message could not be sent to the SMTP server. The transport error code was 0x800ccc6a. The server response was 451 See http://pobox.com/~djb/docs/smtplf.html.

E nella pagina specificata si legge: Your mailer is violating 822bis section 2.3, which specifically prohibits all bare LFs

Un rapido controllo sul server di posta di CL2 mi dice che si', loro usano Sexchange.

Venghino venghino siorre e siorri! Lo scontro del secolo! Il Talebano delle RFC contro "noipossediamolafottutainterneteglistandardlipossiamoignorare", l'Oggetto Inamovibile contro La Forza Irresistibile! Vecchi e bambini meta' prezzo.

Che sexchange abbia un approccio per cosi' dire "rilassato" nei confronti delle RFC e degli standard vari non e' che sia una cosa tanto nuova. D'altra parte le RFC stesse specificano che e' consigliabile tenere a mente che, si', esistono dei software bacati che non rispettano i dettami e sarebbe opportuno tentare di cooperare e non stigmatizzare questi cerebrolesi. Si potrebbe anche obiettare che porcoca$$o! Non e' che non abbiano i soldi, l'energia o le capacita' per scrivere una chiavica di mailer che rispetti quei quattro dettami che sono vecchi di vent'anni, e che se non vogliono rispettare gli standard possono anche andare a succhiare le dita dei piedi sporchi di una valkiria incazzosa (la Convenzione di Ginevra non copre le torture alle metafore vero? Phew...)

Purtroppo, in molti casi occorre anche sapersi destreggiare, perche' e' bello dire che bisogna essere interoperabili (che detto cosi' suona quasi una roba sconcia) ed essere aperti agli standard di scambio delle informazioni eccetera eccetera. Ma se vuoi lavorare in certi casi devi anche saperti adattare, quindi accettare documenti di Worp, Expel ed aspettarti il CL del caso che ti manda uno snapshot dello schermo incorporato in un documento di Word per spiegarti quale e' l'errore che riceve dalla famosa applicazione (404, pagina non trovata).

Comunquesia, io giro la cosa a CL, con spiegazione che sostanzialmente dice "finche' CL2 non invia una mail che risponde ai dettami di quello che una mail dovrebbe essere il mail server persistera' nel non accettarlo. Potrebbe essere che CL2 stia cercando di inviare un qualche file binario che non viene impacchettato come dovrebbe, potrebbe essere che hanno qualche casino, ma come e' come non e' il server si rifiuta di accettare la mail. E dato che si rifiuta di accettare solo la mail di CL2 non e' che il mail server e' rotto. E' quello di CL2 che e' rotto.

Ovviaemente la spiegazione non e' garbata a CL che ha cominciato con una filippica allucinante che loro stanno cercando di acquisire il cliente e che la comunicazione e' essenziale e blah blah blah yada yada yada. Per cui alla fine della lunghissimissima telefonata mi sono limitato a dirgli che se vuole cambiare la cosa dovremo installare un server di posta diverso e meno "stretto" nei confronti delle regole. E come accennato sopra, a volte per amore del quieto vivere e della busta paga a fine mese bisogna sapersi piegare a certi compromessi, percui QMail verra' presto sostituito da un bel Postfix.

Segnamo un altro punto a favore della corruzione degli standard.

Davide
07/03/2011 08:00
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline  
Old 25-07-2012, 17:45   #20
biffuz
Senior Member
 
L'Avatar di biffuz
 
Iscritto dal: Jul 2001
Messaggi: 3488
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Ovviaemente la spiegazione non e' garbata a CL che ha cominciato con una filippica allucinante che loro stanno cercando di acquisire il cliente e che la comunicazione e' essenziale e blah blah blah yada yada yada.
Vedi, hai sbagliato, non devi perderti in spiegazioni tecniche con i CL... dovevi solo dirgli che se vuole quel cliente allora dobbiamo spendere 25 k€ per sostituire il nostro sistema
__________________
www.biffuz.it | Thou shall not follow the NULL pointer, for chaos and madness await thee at its end.
Powered by: M1 @ Sonoma | 7600X @ W11 | C2Q @ XP | P!!! @ W98+BeOS | 286 @ W3.1 | C64 | iP16 | iPad8 | rPi4 | and more...
biffuz è offline  
 Discussione Chiusa


KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo KTC H27E6 a 300Hz e 1ms: come i rivali ma a met&...
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare Cineca inaugura Pitagora, il supercomputer Lenov...
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
Iliad porta le SIM Express in edicola: r...
Offerte Amazon sui TV Mini LED Hisense 2...
Il silenzio digitale che fa male: come i...
Il responsabile del programma Cybertruck...
Domanda alle stelle per SSD e RAM: in Gi...
Zuckerberg vuole eliminare tutte le mala...
Otto suicidi, un solo chatbot: si moltip...
'Windows fa schifo' perché ha dim...
Tesla aggiorna il camion Semi, e sposta ...
Come funziona la carta Klarna: tre livel...
I Funko Pop potrebbero sparire per sempr...
Windows 98 in crash davanti a migliaia d...
Samsung Smart TV 85'' Neo QLED Mini LED ...
TikTok rafforza la sicurezza degli acqui...
Samsung Galaxy S25 Ultra 256 GB a ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:33.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v