Programma da eseguire su ubuntu e su mac os

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
einstein1969
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 931
Iscrizione: mercoledì 7 dicembre 2005, 11:52

Programma da eseguire su ubuntu e su mac os

Messaggio da einstein1969 »

salve,

devo sviluppare un piccolo programma che poi deve essere eseguito su mac.

So che in Mac esiste bash quindi se possibile farlo in bash sarebbe meglio... altrimenti quale linguaggio usare?

Il programma deve fare una cosa del genere.

Dati due file di testo contenenti delle coordinate di oggetti generare un elenco in un file contenente gli oggetti che hanno una distanza, tra gli oggetti del primo file e gli oggetti del secondo file, minore di una data.

file 1:
id  x  y
-------
1 x1 y1
2 x2 y2
3 x3 y3

file 2:
id  x  y
--------
1 x1 y1
2 x2 y2
3 x3 y3
4 x4 y4

praticamente devo confrontare per ogni oggetto nel primo file , tutti gli oggetti del secondo e se la distanza e' minore di un tot devo segnare questo in un'altro file. Se ci sono piu' oggetti devo incrementare anche un contatore da inserire nel risultato.

(per i curiosi: Si tratta di due database di oggetti rilevati nello spazio da due satelliti diversi e devo individuare eventuali oggetti duplicati)
Avatar utente
Ipnorospo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3685
Iscrizione: venerdì 5 gennaio 2007, 1:57

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da Ipnorospo »

So che in Mac esiste bash quindi se possibile farlo in bash sarebbe meglio... altrimenti quale linguaggio usare?
ma dici bash perche lo conosci gia e quindi ti viene piu facile?Perche penso che un programma tipo quello che chiedi in pyhton dovrebbe essere abbastanza facile/corto da realizzare...
Altrimenti potresti scriverlo per esempio anche in C:dovresti poi compilarlo su mac os pero il codice non cambia..
They see me trollin
einstein1969
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 931
Iscrizione: mercoledì 7 dicembre 2005, 11:52

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da einstein1969 »

Ipnorospo ha scritto:
So che in Mac esiste bash quindi se possibile farlo in bash sarebbe meglio... altrimenti quale linguaggio usare?
ma dici bash perche lo conosci gia e quindi ti viene piu facile?Perche penso che un programma tipo quello che chiedi in pyhton dovrebbe essere abbastanza facile/corto da realizzare...
Altrimenti potresti scriverlo per esempio anche in C:dovresti poi compilarlo su mac os pero il codice non cambia..
python non lo conosco, il c sono un po' arrugginito... bash qualcosa ho gia' fatto , ma non sono un asso... :D
Bakuriu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1156
Iscrizione: venerdì 23 ottobre 2009, 23:43
Desktop: KDE4
Distribuzione: Kubuntu 12.04 LTS - x86_64

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da Bakuriu »

Io ti consiglio di farlo in python...

Ti faccio alcune domande:
1)Tu, per ogni linea di un file, hai dei dati che devi confrontare con tutte le linee di altri X file. Corretto?
2)I dati in che forma sono(sono numeri/interi/float/stringhe)?
3)Cosa esattamente ci devi fare?Hai detto che devi eliminare i duplicati, ma cosa significa esattamente...

Diciamo che uno scheletro di programma in python potrebbe essere:

Codice: Seleziona tutto


def main():
    import sys
    fnames = sys.argv[1:]  #gli argomenti da linea di comando sono
                                 #i nomi dei file da analizzare.
    if len(fnames) < 2:
        print 'Usage: %s main_file other_filenames' % sys.argv[0]
        sys.exit(0)

    try:
        main_file = open(fnames[0])
        other_files = [open(fnames[i] for i in range(1, len(fnames))]
    except (IOError,OSError),e:
        sys.exit(str(e))

    check_files(main_file,other_files)

def check_files(main_file, other_files):
    out_file = open('out.txt','w+t')
    for line in main_file:
        data = get_data(line)
        for fil in other_files:
             fil.seek(0)
             for other_line in fil:
                 other_data = get_data(other_line)
                 if are_equal(data, other_data):
                     out_file.write('Doppione: %s\n' % data)

def get_data(line):
    #codice per parsare una linea del file
    return data

def are_equal(data1,data2):
    #controlla se i due oggetti sono considerati uguali
    return True/False

main()
Oppure potresti usare un po' di OOP e creare un oggetto al posto di usare due funzioni...
comunque non dovrebbe essere complicato.
einstein1969
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 931
Iscrizione: mercoledì 7 dicembre 2005, 11:52

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da einstein1969 »

Grazie per la risposta!

Ho due files di testo (sono due cataloghi di oggetti rilevati nello spazio da due satelliti diversi)
Ci sono tre informazioni per ogni record. Un codice di catalogo e due coordinate in float pointing ma rappresentate come testo. Separati da spazi (la virgola puo' essere il punto o la virgola...)

esempio
catalogo 1:
codice x y
----------------
A340T  270.45678 65.3456787
B341E  230.4045   45.34567
....


catalogo 2:
codice x y
----------------
J340S   270.45668 65.3456783
H234T  270.45268 65.3416380
K360J   230.4142   45.34731
....

Devo confrontare ogni oggetto del primo file con ogni oggetto del secondo file. In realta' devo calcolare la distanza tramite una formula e se mi viene minore di un tot devo segnarmi i codici dei due oggetti (uno su un catalogo e uno sull'altro) in un file. Sono oggetti scovati nell'infrarosso quindi....

esempio:

Ho l'oggetto A340T del primo catalogo che e' "near" l'oggetto J340S del secondo catalogo. Se si scrivo I due codici nel file di testo risultante. Se ho piu' di un oggetto "near" devo appendere sulla stessa riga.

avro' un file di testo risultante:

result.txt

A340T near J340S, H234T, ....
B341E near K360J
......
Ultima modifica di einstein1969 il martedì 15 giugno 2010, 20:44, modificato 1 volta in totale.
check
Prode Principiante
Messaggi: 83
Iscrizione: venerdì 11 luglio 2008, 14:25

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da check »

Ti conviene andare di python, gcc non è installato di default e dovresti scaricarti Xcode(che sono 2gb circa).

O semmai se ti va te lo compilo io  :)
einstein1969
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 931
Iscrizione: mercoledì 7 dicembre 2005, 11:52

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da einstein1969 »

ciao check

gcc non e' installato di default su ubuntu o su mac? Che e' Xcode?
Avatar utente
Ipnorospo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3685
Iscrizione: venerdì 5 gennaio 2007, 1:57

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da Ipnorospo »

einstein1969 ha scritto: ciao check

gcc non e' installato di default su ubuntu o su mac? Che e' Xcode?

gcc non e installato di default su mac os. Diciamo che Xcode e l'insieme degli strumenti necessari per programmare su mac os.
Cmq credo che sia meglio che tu decida il linguaggio in cui scrivere il programmino(visto che sai meglio come verra usato) e si parte da li... ;)
They see me trollin
check
Prode Principiante
Messaggi: 83
Iscrizione: venerdì 11 luglio 2008, 14:25

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da check »

Installando Xcode ti ritrovi un po' di strumenti che altrimenti non avresti, tra cui gcc.
L'interprete python però credo sia installato di default, però non sono sicuro.

Su Linux dovresti avere già tutto bello pronto
einstein1969
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 931
Iscrizione: mercoledì 7 dicembre 2005, 11:52

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da einstein1969 »

ok vada per python o bash... (penso che java, nonostante la portabilita', sia da escludere visto che nessuno lo ha preso in considerazione? )
Avatar utente
siscia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 689
Iscrizione: martedì 14 aprile 2009, 21:21

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da siscia »

anch'io (per quanto possa valere) ti consiglio il python...mi chiedo però come hai intenzione di procedere....
Bob
Avatar utente
crx
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1341
Iscrizione: martedì 2 settembre 2008, 18:31
Desktop: Cinnamon
Distribuzione: ArchLinux 64bit
Località: Piombino

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da crx »

Se è per questo io ti consiglierei pascal: lazarus c'è per tutti i sistemi.
Scrivi dove vuoi (linux, win, mac), poi compili su mac e hai il programma bello e pronto.
S = k ln W
Il mio nome è Bond. Valence Bond. - Se non fai parte della soluzione, fai parte del precipitato.
Non c'è peggior sordo di chi non sente.
einstein1969
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 931
Iscrizione: mercoledì 7 dicembre 2005, 11:52

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da einstein1969 »

L'ho fatta in bash ora vediamo se su mac funge...
Avatar utente
crx
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1341
Iscrizione: martedì 2 settembre 2008, 18:31
Desktop: Cinnamon
Distribuzione: ArchLinux 64bit
Località: Piombino

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da crx »

Per curiosità: quanto sono grandi questi file (10, 100, 1000 linee)? E quanto tempo impiega il tuo script per elaborarli?
S = k ln W
Il mio nome è Bond. Valence Bond. - Se non fai parte della soluzione, fai parte del precipitato.
Non c'è peggior sordo di chi non sente.
einstein1969
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 931
Iscrizione: mercoledì 7 dicembre 2005, 11:52

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da einstein1969 »

circa 200-300 a file...
ci impiega circa 20 minuti
check
Prode Principiante
Messaggi: 83
Iscrizione: venerdì 11 luglio 2008, 14:25

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da check »

Un po' lento o no?  :P
einstein1969
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 931
Iscrizione: mercoledì 7 dicembre 2005, 11:52

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da einstein1969 »

Ora, lo sto ottimizzando... vediamo cosa riesco a fare...
in bash purtroppo la gestione dei numeri float non c'e'... credo che il grosso del tempo sia li...
check
Prode Principiante
Messaggi: 83
Iscrizione: venerdì 11 luglio 2008, 14:25

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da check »

Mi sono accorto che ho già una app in cocoa che fa quasi quello che serve, se posti i file(anche il risultato che non mi è chiaro) la modifico e te la mando, però sarebbe solo per mac os.
A proposito, che versione è? 10.5 o 10.6?
einstein1969
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 931
Iscrizione: mercoledì 7 dicembre 2005, 11:52

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da einstein1969 »

Ti mando un pezzo dei file... sono in gradi e decimi di grado.
La distanza va calcolata con questa formula :
d = arccos(sin(y1)sin(y2)+cos(y1)cos(y2)cos(x1-x2))

Che cosa e' cocoa?

file 1:
-------
1 1.5986 83.7717
2 184.2875 83.8158
3 191.0637 85.3724
4 201.7507 83.2895
5 232.836 85.0443
6 347.6762 86.3815
7 54.1536 82.5904
8 85.4562 83.2836
9 124.7673 80.2561

file 2:
------
1 1.669365 83.765945
2 184.91566 83.76547
3 190.4857 85.30325
4 201.61098 83.29309
5 232.48483 84.959274
6 349.08652 86.3443
7 55.10367 82.57801
8 85.63064 83.310646
9 124.71011 80.00996
10 133.09158 80.50861
11 188.89348 82.03509
12 255.02696 81.62999
13 199.43828 78.34923

bisogna fare il match tra il primo file e il secondo file. Cioe' calcolare se la distanza e' minore di un tot (0.1 .. 1 in gradi)

con il bash sono ancora in alto mare per quanto riguarda le funzioni matematiche... sto usando bc ma credo che non vada poi tanto bene....
Ultima modifica di einstein1969 il domenica 20 giugno 2010, 12:26, modificato 1 volta in totale.
check
Prode Principiante
Messaggi: 83
Iscrizione: venerdì 11 luglio 2008, 14:25

Re: Programma da eseguire su ubuntu e su mac os

Messaggio da check »

Cocoa non è altro che il framework per scrivere applicazioni per osx/iphone/ipad

Se ti interessa mi basta modificare la formula per la distanza(la mia app era per distanza tra due punti) e poi è pronta, però non gira su linux mi spiace  :(
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Sargonsei e 7 ospiti