Caro collega,
stavolta lo scrivo qui: ieri ti ho odiato, per l’ennesima volta!
Quando il nostro collega DBA indiano e’ venuto da me chiedendomi:
«Angelo, come faccio ad inserire una stringa “NAME” su un file “tmp.log” da 1 GB tra la quarta e la quinta colonna con VI/VIM?»
Tu hai sentito… ti sei voluto alzare… con quell’aria da saccente… *dovevi* intrometterti… il tuo istinto da “nerdone-primo-della-classe-so-tutto-io” ti ha fatto venire alla mia scrivania mentre io scrivevo il one-liner perl necessario alla magia, consigliandomi di poterlo fare cosi’ e coli’… con sed piuttosto che con awk, e blabla…
Non e’ stato sufficiente che ti dicessi di farti i cazzi tuoi… dovevi gareggiare… dovevi farti sputtanare… e dopo 2 minuti hai avuto anche la sfacciataggine di mandare una email al collega col subject “sed version”, scrivendo questa zozzeria:
$ cat tmp.log | sed 's/^\(\W*\w\+\W\+\w\+\W\+\W*\w\+\)/\1 fff/g'
Ma ti ho punito con la eleganza del Perl:
$ perl -lpne 's/^((\w+\W+){3})/$1NAME /;' tmp.log
Sei old! OLD! Mettitelo in testa. Guarda quella linea, e’ ILLEGGIBILE. Con tutte quelle sequenze di escape!
Peccato che il DBA abbia scelto il tuo sed. In questo mondo non c’e’ giustizia.
Cazzo, bellissimo questo post, mi hai fatto morire, davvero il top.
Comunque nella nostra azienda ad una domanda come quella (“come faccio ad inserire una stringa “NAME†su un file “tmp.log†da 1 GB tra la quarta e la quinta colonna con VI/VIM?”), a parte che a nessuno verrebbe in mente di farla, le risposte possibili sarebbero state:
* fattelo da te
* fallo a mano
* non si puo’ fare
* mettilo nella schedule
* non c’e’ un altro sistema? Cioe’ ti serve proprio, non si puo’ evitare?
* manda una mail a tutti e vedi se qualcuno ti sa aiutare
* (il nostro capo) “questo e’ un problema di struttura del processo” (non c’entra un cazzo, ma lui dice queste cose no-sense)
Scherzo, eh 😉
P.s.: a Vodafone dov’eri? Non e’ che a Vodafone son proprio delle cime, probabilmente dipende dai reparti …
quello che ha scritto antonio, per quanto diretto, e’ la pure verita’ 😀
su linux si fa cosi’: RTFM
http://www.samba.org/samba/docs/
ma sto attendendo ancora la risposta su come si fa sta cosa in linux eh 🙂
Io sono scarso e chiedo a voi esperti linari
mio dio, il giocatore, samba su windows! ma sei scarsissimo.
Perche’ non ti leggi un manuale di windows e chiedi su microsoft.com? Pallo non usa windows, l’ha gia’ detto.
@pallotron
samba va installato su tutti i pc? E’ una rete di peer la vostra? se due pc vogliono scambiarsi un file?
Come si risolverebbe il problema che ho scritto sopra con samba?
Cioe’ filtrare le cartelle in base ai gruppi…
Credo che samba sia installabile anche su windows, se risolvo il problema metto samba sul mio pc windows e’ fatta
@ilgiocatore
1. intanto i sorgenti non si condividono con “condivisioni file o cartelle” ma con un sistema di versioning tipo git (che e’ il bene). Io ho un git personale e non posso farne a meno.
2. con linux devi usare samba server, ed usando utente e permessi.
@pallotron
allora in linux come si farebbe? avete tutti i pc con linux?!?! la vostra rete come e’ fatta?
non so piu’ niente di windows. mi spiace.
Pallo, ho una domanda da nerds.
Ho una rete windows workgroup, circa 30 pc (win 98, win 2000, xp pro e 1 vista)
Ogni pc ha in condivisione un certo numero di cartelle.
Io ho in condivisione “C:\network” con alias “!network”, lettura per tutti (doc pubblici) e scrittura per tutti (zona di scambio file, se uno mi vuole passare un file lo mette li), poi ho un’altra cartella “sorgenti”, che voglio sia visibile solo agli utenti Pippo, Pluto (o meglio al gruppo “developers”).
Come si fa?
In pratica attualmente ogni PC in rete windows vede TUTTE le risorse degli altri, salvo poi avere o meno autorizzazioni e permessi.
Non ha senso che un pc di un utente diverso da Pippo e Pluto veda una cartella “Sorgenti” nel mio PC.
Il PC che si connette deve fornire le sue credenziali (user-pwd) al PC che accetta la connessione, quindi in teoria il PC che mostra le risorse condivise e’ in grado di “filtrare” per utenti/gruppi…. o no?
grazie
saluti
Ognuno odia il proprio “nerdone-primo-della-classe-so-tutto-ioâ€, ma dobbiamo conviverci. ciaoooo kysucix P.S. Io avrei usato awk 😀
Cmq. al di la del come fare, il problema vero, e per il quale e’ nato sto post, penso, sia il comportamento INDEGNO del tuo collega (non il DBA…), dico se al limite voleva giocare con sed awk java c fortran o altro, poteva prendere quel problema come spunto e poi mandare A TE la soluzione alternativa chiedendoti magari cosa ne pensassi…
Ma si sa ci sono quelli che si prendono il merito di altri, quelli che non si fanno i caxxi loro, quelli che non sanno stare al loro posto…
e tutti tentano di luccicare, “Pain in their fucking ass!!” ahahah
Pallotron, premetto che non capisco una mazza di tutto quanto avete scritto ma la tua riga di comando e’ molto piu’ ordinata e leggibile. 🙂
@kimso
e’ perche’ \W matcha tutti i caratteri NON alfabetici
\w Match a “word” character (alphanumeric plus “_”)
\W Match a non-“word” character
cmq per il caso specifico andava bene perche’ era SQL.
Ma nooo che posto la versione,
non voleva essere un confronto, anche perche’ non e’ oneline…
e cmq. cme dice Antonio awk e’incluso in perl quindi…
“9. Why would anyone still use awk instead of perl?
clear perl code is better than unclear awk code; but NOTHING comes close to unclear perl code…”AHAHAHAH
cmq. riguardo al funzionamento guarda qui:
awk out
return from NAME the rquest …
Response: HTTP/1.1 NAME 200 OK
Server: Apache-Coyote/1.1
perl out
return from NAME the rquest …
Response: HTTP/NAME 1.1 200 OK
Server: Apache-NAME Coyote/1.1
Cheeers
@kimso
si volevo dire colonna. ho corretto.
la posti la tua versione awk please? 😀
kimso perl fa quello che il manuale documenta, leggiti il manuale e avrai spiegazioni sia per awk che per perl.
Ma forse volevi dire colonna??
che cacchio ci vuole ad inserire una qualunque cosa alla 5 riga??
ahi ahi sti sysadmin… eheheh
cmq. io avrei usato awk, solo perche’… ci sto giocando… ahahah
ovviamente dipende dal file…
Ma provando la tua con un file random ho visto che sostituisce parole tipo “http://sito” in “http://NAME sito” in pratica sballa il contaggio delle colonne..
awk No … ahahah
@pallotron
Dho! Scusa è la febbre… Comunque il consiglio è sempre valido 😉
@pallotron
si lo so, ci sono anche volumi dedicati all’uso del perl per funzioni sistemistiche, è solo colpa mia che non ci ho mai capito un cazzo 🙂
sono mentalmente legato alle strutture estese e prolisse tipiche dei linguaggi ad alto livello.
@Beppe
DBA? DBA e’ quello che mi ha chiesto il consiglio! aahahha. minchia NON LEGGETE.
Fossi stato nella tua posizione sarei andato dal DBA a dirgli “ti ringrazio per l’aiuto non richiesto, la prossima volta fatti i fatti tuoi, poi amici(?) come prima. Anzi mi offri un caffè così discutiamo delle due soluzioni?”.
La chiarezza (ed il caffè) prima di tutto!
PS ci sono sempre i colleghi saccenti in qualunque campo
perl rulez
il perl e’ un linguaggio di programmazione *anche* per sistemisti 🙂
non ho nulla contro le sequenze di comandi, io sono pure in grado di fare sequenze muostruose, ma quando so che ho bisogno di velocita’ uso perl.
cmq per tornare all’esempio dell’articolo, trovo + leggibile perl di sed in questo caso.
Per fare cose del genere, i programmatori tendono a usare linguaggi di programmazione, mentre i sistemisti tendono a usare sequenze di comandi.
Io quando devo fare operazioni sulle stringhe uso sempre cose tipo: “cat pippo.txt | cut -f. -d 3 | grep -v fuffa > /tmp/pippo1.txt” piuttosto che una cosa in perl dato che non ci ho mai capito niente del perl 😀
🙂
vabe’ non mi meraviglio.
quando ero a milano in vodafone per fare una cosa, c’era uno affianco a me che aveva problemi a “installare” jboss. ahhaha
Provato mai a farlo con notepad?
In Accenture andava molto di moda… :/
vim (non vi) e’ ok per aprire file da 1 GB 🙂
basta disattivare lo swap file, l’undo, e fare un po’ di tuning sulla dimensione dei buffer, tutto in ~/.vimrc 🙂
Vabbe’, ma che il DBA abbia scelto la soluzione piu’ inefficace era scontato.
Gia’ uno che vuole aprire un file di 1GB con VI…
beh il tipo in questione e’ anche lui immigrato!
“Ma che cazzo ne vuoi sapere tu che sei pure immigrato” non te l’hanno detto? 🙂
attenzione. RILASCIO I BENCHMARK:
Perl vince, 4.79 secondi contro 36.