Nuova piccola applicazione

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
metrofox
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: gio 7 ago 2008, 12:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)
Località: London

Re: Nuova piccola applicazione

Messaggio da metrofox »

j0kers ha scritto:Uno legge e prova.Leggere soltanto senza provare non serve a nulla :D
Ma il risultato dovrebbe essere una degna soluzione di ciò che hai letto... :D

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Nuova piccola applicazione

Messaggio da ZeroUno »

Io non sono un programmatore C (lo so giusto quanto basta per leggere del codice già scritto o fargli qualche piccola modifica), ma al di là di tutti gli errori o non errori di programmazione, perchè usare il grep -f invece del grep -e?
ps|grep -v -e riga1 -e riga2 -e riga3 ...
vs.
ps|grep -v -f proc

tra l'altro state tenendo in considerazione eventuali errori di buffer overflow &co se uno scrive una riga più lunga di 128 caratteri o quello che sia, ma se uno ci mette uno spazio dentro al file non risponde con segmentation fault ma con un errore di grep.
ps|grep -v -e riga1 -e ri ga2 -e riga3

e ancora..
se devo fare un programma che fa chiamate a comandi di sistema, allora faccio un programma in bash. ancora meglio:
alias ps2="ps -ef|grep -f proc"

se invece lo faccio in C, perchè non utilizzare le syscall proprie di C per interrogare il sistema e le funzioni proprie di C per escludere delle stringhe da una lista?
non so in che librerie si trovino le une e in quale le altre.
Magari basta patchare pgrep per aggiungergli una piccola funzioncina (in fondo l'esclusione già ce l'ha di suo.. vedi pgrep -v).

Ciao
01
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

metrofox
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: gio 7 ago 2008, 12:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)
Località: London

Re: Nuova piccola applicazione

Messaggio da metrofox »

se devo fare un programma che fa chiamate a comandi di sistema, allora faccio un programma in bash. ancora meglio:
alias ps2="ps -ef|grep -f proc"
Giustissimo.
(consiglio Deitel&Deitel e K&R, il primo è più didattico ma molto dispersivo, il secondo è meno dispersivo ma meno didattico)
Ho acquistato un anno fa il manuale dei Deitel&Deitel, è vero sono molto dispersivi nello spiegare(si intrufolano in situazioni in cui non ce n'è bisogno, troppe cose complesse a volte), anticipano cose 8 capitoli prima e poi le spiegano in profondità... Nel frattempo l'utente non capisce un granché fino a quando non legge tutto il libro.

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Nuova piccola applicazione

Messaggio da Mario Vanoni »

Aspettando di testare la tua prossima quarta versione,
un piccolo trucco ereditato dalla AT&T Toolchest di Londra (1988):

nel codice sorgente includi
#define SYSTEM(s) (fflush(stdout), system(s))
il suo pregio e` che ti libera stdout prima di chiamare system(3)

invece di system(...); devi chiamare SYSTEM(...);

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6629
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Nuova piccola applicazione

Messaggio da targzeta »

@jokers
Guarda che in tutti i libri una delle prime cose che si impara sono le stringhe e il caratteri di fine stringa, e poi ci sono gli esercizi lasciati al lettore, magari è meglio cominciare da quelli. Inoltre reallocare continuamente un buffer raddioppiandolo di dimensioni non è un errore da poco, io ho avuto l'impressione che tu abbia copiato la mia idea senza capirla. Se ci pensi un attimo 2^17 sono 128 Kb e se nel file "proc" hai 20 righe il tuo buffer diventa di 2^27 che sono 128 Mb, non so se hai idea di quello che significa (tra l'altro la reallocazione la fai subito quindi dovrebbero essere 2^18 e 2^28).

@ZeroUno
Vabbé si giudicava la progettazione/programmazione non il resto. A nessuno verrebbe in mente di scrivere un programma così se non fosse a scopo didattico....o almeno spero :lol:

Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
j0kers
Linux 2.x
Linux 2.x
Messaggi: 418
Iscritto il: dom 22 lug 2007, 1:31
Slackware: 13
Kernel: 2.6.32
Desktop: xfce4

Re: Nuova piccola applicazione

Messaggio da j0kers »

@Zerouno

Codice: Seleziona tutto

ps|grep -v -f proc
A sto punto lo facevo direttamente in bash e risparmiavo tempo. Se l'ho fatto in C è per smanettarci un pò cn questo
linguaggio :D
Vabbé si giudicava la progettazione/programmazione non il resto. A nessuno verrebbe in mente di scrivere un programma così se non fosse a scopo didattico....o almeno spero :lol:
Avevo quasi intensione di metterlo su sourceforge.net :D:D:D

Avatar utente
ZeroUno
Staff
Staff
Messaggi: 5441
Iscritto il: ven 2 giu 2006, 14:52
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current
Località: Roma / Castelli
Contatta:

Re: Nuova piccola applicazione

Messaggio da ZeroUno »

Quello che intendevo dire io non è che se comincio a programmare in bash allora comincio ad impararmi bene i comandi base ed a giostrarmi le pipe tra grep sed awk, le read ecc ecc, se comincio a programmare in php allora comincio ad impararmi bene i comandi base e quello che serve per tirare fuori pagine html ed interfacciarmi col webserver.
Se devo imparare la bash, non faccio un programmino che mi genera una pagina html e si interfacci col webserver,
né che per imparare il php mi metto a fare programmi che interagiscano con i comandi shell.

che poi il mio programmino bash generi anche sporadicamente come output un file .html può essere utile per l'export di qualche dato, e che il mio programmino php faccia un df sporadico sulla macchina per tirar fuori come report l'uso del sistema da remoto, ben vengano. Ma non si scrive un codice, anche didattico, che si basa in todo su un comando esterno.

Nel nostro caso specifico, ok ad utilizzare ps per tirar fuori la lista dei processi (ho visto il sorgente di ps e non è banale), ma se si vogliono imparare le stringhe, io salterei tutta la parte che riguarda la grep, la quale la farei ciclando con un qualche stringcompare, del tipo:
1) metti proc in un array (A)
2) metti output di ps in un altro array (B)
3) per ogni riga di B:
a) cicla A per vedere se matcha.
b) se non matcha stampa la riga di B, altrimenti salta alla successiva riga di B

secondo me è più didattico, e credo che ne guadagni pure in performance

Ciao
01
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg

Codice: Seleziona tutto

1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Re: Nuova piccola applicazione

Messaggio da masalapianta »

metrofox ha scritto: stdlib.h gli serve in caso dovesse usare gli exit
si ma fintanto che non li usa non ha molto senso includere il relativo header file
Comunque dai, siate duri ma non troppo col ragazzo, magari ha veramente cominciato a programmare da poco e senza metodo, gliel'avete fatto notare ma mi sa che nonostante ciò che gli avete detto(e non 1 volta, ma 100) gli stiate facendo anche passare la voglia.
non sono d'accordo, quando si comincia a programmare in C, senza procedere di pari passo con la teoria, è bene ricevere quante più bastonate possibile, in quanto spesso si viene da linguaggi ad alto livello ove si è imparato a procedere alla membro di segugio e si pensa che anche in linguaggi a basso livello si possa procedere senza un metodo preciso; in tal modo con linguaggi come il C non si arriva nessuna parte, quindi se le bastonate scoraggiano non si perde nulla, viceversa se le pigli in maniera costruttiva cambi metodo ed hai finalmente la possibilità di imparare.

metrofox
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: gio 7 ago 2008, 12:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)
Località: London

Re: Nuova piccola applicazione

Messaggio da metrofox »

Guarda che mica a me cambia niente o meno se lo "bastonate"... Però per un programma così poco serio ci sono già 3
pagine di discussione per un programma inutile come questo.

Avatar utente
masalapianta
Iper Master
Iper Master
Messaggi: 2775
Iscritto il: lun 25 lug 2005, 0:00
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian
Località: Roma
Contatta:

Re: Nuova piccola applicazione

Messaggio da masalapianta »

j0kers ha scritto:Uno legge e prova.Leggere soltanto senza provare non serve a nulla :D
evidentemente (stando a tutto il codice che hai postato) o leggi le cose sbagliate oppure non capisci quel che leggi; in ogni caso se pensi di poter approcciare al C come hai approcciato al VB non andrai da nessuna parte, ma non è un mio problema, quindi personalmente la chiudo qui.

Avatar utente
j0kers
Linux 2.x
Linux 2.x
Messaggi: 418
Iscritto il: dom 22 lug 2007, 1:31
Slackware: 13
Kernel: 2.6.32
Desktop: xfce4

Re: Nuova piccola applicazione

Messaggio da j0kers »

Guarda non credevo di alzare un polverone con questo piccolo programmino. Ho fatto un guaio?
@masalapianta
mi spiace ma sono daccordo con metrofox, non è possibile che un programma del genere ha creato
tutto questo scompiglio, io l'ho postato proprio per capire le idee altrui visto che ero consapevole
che era una falla vivente!...Il problema che al posto di postare "codici adattabili" o altre cose
non è meglio postare direttamente una possibile soluzione? Io ho cercato di fare cio' con le
versioni successive, ma credo che un utente viene su un forum per cercare "soluzioni" non
cose adattabili...O sbaglio? comunque chiedo agli admin di chiudere qui questo thread perchè
veramente non credevo di alzare tutto sto polverone.
Per quanto riguarda le bastonate fate bene, ma fino ad un certo punto anche perchè dietro
al pc non credere che mi metta a piangere :D
Buona giornata a tutti.

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Nuova piccola applicazione

Messaggio da d4z_c0nf »

Offtopic: E' vero che ci sono stati commenti duri, ma erano giusti? Credo di sì, e allora ben vengano, anche perchè ogni cosa ha la sua importanza e se un errore di progettazione grave lo commenti con indulgenza si rischia di sottovalutarlo.
Per l'importanza del programma e la lunghezza del topic, invece di lamentarci per il "polverone" bisognerebbe apprezzare che sia questo tipo di argomento, una volta ogni tanto, a calamitare le attenzioni, invece che i soliti flame su MS o quant'è bella la nostra slackware, chi ce l'ha più lungo Stallman o Torvalds... e via discorrendo.
Poi, tutto questo polverone non l'ho visto, ma questa è solo la mia opinione..

Avatar utente
j0kers
Linux 2.x
Linux 2.x
Messaggi: 418
Iscritto il: dom 22 lug 2007, 1:31
Slackware: 13
Kernel: 2.6.32
Desktop: xfce4

Re: Nuova piccola applicazione

Messaggio da j0kers »

Beh io non mi sono lamentato per niente anzi, ho accettato tutto quello che mi è stato detto
di polverone hanno parlato altri utenti, io ho solo fatto un'affermazione dicendo che
non avrei mai pensato di creare tutto questo scompiglio.Ti ripeto io le bastonate le accetto
ma è inutile ripeterle ripeterle e ripeterle (questo intendeva metrofox), per il resto sono problemi
miei di come affrontare l'approccio al C più che seguire i consigli non so che fare. 8)

Avatar utente
d4z_c0nf
Packager
Packager
Messaggi: 1296
Iscritto il: mar 14 mar 2006, 18:07
Nome Cognome: Rocco Aliberti
Slackware: 14.2-current64
Kernel: 4.14.73
Desktop: awesomeWM
Località: Pinerolo

Re: Nuova piccola applicazione

Messaggio da d4z_c0nf »

j0kers ha scritto:Beh io non mi sono lamentato per niente anzi, ho accettato tutto quello che mi è stato detto
di polverone hanno parlato altri utenti, io ho solo fatto un'affermazione dicendo che
non avrei mai pensato di creare tutto questo scompiglio.Ti ripeto io le bastonate le accetto
ma è inutile ripeterle ripeterle e ripeterle (questo intendeva metrofox), per il resto sono problemi
miei di come affrontare l'approccio al C più che seguire i consigli non so che fare. 8)
Ma devo fare come a scuola?
j0kers ha scritto: Guarda non credevo di alzare un polverone con questo piccolo programmino. Ho fatto un guaio?
Ti attacchi a una parola, che tra l'altro hai anche detto.
Per il lamentarsi mi riferivo a:
j0kers ha scritto: Il problema che al posto di postare "codici adattabili" o altre cose
non è meglio postare direttamente una possibile soluzione? Io ho cercato di fare cio' con le
versioni successive, ma credo che un utente viene su un forum per cercare "soluzioni" non
cose adattabili...O sbaglio?
E penso che NO non sia meglio postarti la possibile soluzione bella e pronta, Spina ti voleva far capire delle cose perciò ti ha dato una versione adattabile, per evidenziare gli strumenti e il metodo, non il risultato in sé. Il risultato in fondo l'avevi ottenuto anche tu, visto che a te funzionava e non andava in segfault, quindi se il prodotto era destinato a te solo, non c'era bisogno di correggerlo, ma nemmeno di postarlo.
Il concetto che cercavo di esprimere è che finalmente si parlava di qualcosa di istruttivo. Poi non credo che sia inutile ripetere e ripetere le bastonate: tu hai postato un programma, hai ricevuto una prima bastonata, ne hai postato un altro hai ricevuto una seconda bastonata, ma perchè c'erano degli errori, cosa dovevano fare gl'altri ? Fare finta che non ci fossero solo perchè già ti avevano bastonato? Io credo che ti volessero aiutare a capire gli errori e il metodo da seguire, tu rispondi che sono problemi tuoi di come affrontare l'approccio al C, allora se erano problemi tuoi che non volevi condividere non capisco il senso del topic.

Avatar utente
j0kers
Linux 2.x
Linux 2.x
Messaggi: 418
Iscritto il: dom 22 lug 2007, 1:31
Slackware: 13
Kernel: 2.6.32
Desktop: xfce4

Re: Nuova piccola applicazione

Messaggio da j0kers »

Problemi miei mi riferivo a leggere il manuale o esercitarmi praticamente, era questo il significato della parola e poi leggiti bene i post non ho alzato
mica io il polverone io fino a prova contraria non mi sono attaccato con nessuno ho semplicemente detto che siccome su questo forum
gira tanta di quella gente in cerca di soluzioni, non è meglio postare "soluzioni" al posto di "cose adattabili" ??? Era questo tutto qui.
Se questo post fosse stato rivolto solo a ME allora sono daccordo con l'adattabilità, per farmi capire una possibile soluzione.
Non so se ho resto l'idea. Per il resto ti ripeto potete bastonare quando volete, non è quello che mi condiziona la giornata.

Rispondi