Orario: 22-05-2013, 4:24 Benvenuto ospite! (Log inRegistrati)


Rispondi 
Cosa stai codando ADESSO?
Autore Messaggio
Gabriele
Posting Freak

Messaggi: 4,377
Registrato: Oct 2010
Offline Offline
#1321 RE: Cosa stai codando ADESSO?
0
sto cercando di capire perché la printf e perror sotto mac os x mi funzionano
mentre std::cout e std::stringstream no

e se faccio printf( "Log:%s\n", string_stream_out_macosx.str().str_c())
mi stampa SOLO "Log :", e si è una cosa stupida ma che non so fare in xcode Linguaccia

Gabriele Di Bari
Account G+
Account bitbucket
Account GITHUB
E ricordate: ((VMJava*)(NULL))->~VMJava();
(Questo messaggio è stato modificato l'ultima volta il: 06-06-2012 12:57 da Gabriele.)
06-06-2012 12:56
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
player931402
gg I won alone

Messaggi: 949
Registrato: Jul 2011
Offline Offline
#1322 RE: Cosa stai codando ADESSO?
0
(06-06-2012 12:56)Gabriele ha scritto:  sto cercando di capire perché la printf e perror sotto mac os x mi funzionano
mentre std::cout e std::stringstream no

l'hai inclusa <iostream> ? xD

Matteo Galeotti
06-06-2012 13:35
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Gabriele
Posting Freak

Messaggi: 4,377
Registrato: Oct 2010
Offline Offline
#1323 RE: Cosa stai codando ADESSO?
0
ce l'ho fatta, e ce l'ho fatta anche a fare il porting su cocoa, certo è che obj-c mi sta facendo impazzire XD

[Immagine: Schermata%2006-2456085%20alle%2015.06.13.png]

(06-06-2012 13:35)player931402 ha scritto:  
(06-06-2012 12:56)Gabriele ha scritto:  sto cercando di capire perché la printf e perror sotto mac os x mi funzionano
mentre std::cout e std::stringstream no

l'hai inclusa <iostream> ? xD
ovviamente non era quello il problema, semplicemente con l'ultima versione di xcode non è piu' supportato lo stream...

Gabriele Di Bari
Account G+
Account bitbucket
Account GITHUB
E ricordate: ((VMJava*)(NULL))->~VMJava();
(Questo messaggio è stato modificato l'ultima volta il: 06-06-2012 14:09 da Gabriele.)
06-06-2012 14:08
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
player931402
gg I won alone

Messaggi: 949
Registrato: Jul 2011
Offline Offline
#1324 RE: Cosa stai codando ADESSO?
0
Ho appena finito di scrivermi una classe che prenda le immagini, le converta in binario e le salvi in un file.dat ( Ovviamente anche con procedimento inverso ! )
Cosi ora i miei futuri giochi avranno le immagini non visibili e/o modificabili ai giocatori!

Ho anche fatto un completo review alla mia classe "animazione" che ora contiene un utilissimo std::vector<sprite> molto piu maneggievole ed ho pure aggiunto il tempo tra i frame modificabile !


lol, la cosa piu brutta è che questa sera alle 20:04 mi son detto "ora mi studio ben bene le directX".. Fattostà che è mezzanotte ed ho fatto tutt'altro ! xD


Edit: Ho perso pure mezzora per cercare di capire se era fattibile creare un programma che mandasse e input ad un'altro programma in esecuzione in quel momento !.. Per ora la risposta è no ! xD

Matteo Galeotti
(Questo messaggio è stato modificato l'ultima volta il: 10-06-2012 23:32 da player931402.)
10-06-2012 23:05
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
_tommo_
Mod nerdcore

Messaggi: 5,889
Registrato: Nov 2008
Offline Offline
#1325 RE: Cosa stai codando ADESSO?
0
Spero che il dat non contenga una raw bitmap Fermofumo
Fai caso alla dimensione del file, potresti avere spiacevoli sorprese... magari dacci una mano di zlib prima di salvarle!

Comunque sono contrario all'offuscamento, per la semplice ragione che non serve a niente. Nessuno ti ruberà mai le immagini, e in quel caso se è importante hai lo "strumento" legale. E se fare causa non vale la pena, probabilmente non vale nemmeno la pena di arrabbiarsi.
Pensa, magari te le ruba bethesda e ti prendi una royalty sul prossimo TES Asd

Tommaso Checchi
< devlog | twitter | Dojo, a C++ game framework >
(Questo messaggio è stato modificato l'ultima volta il: 11-06-2012 0:40 da _tommo_.)
11-06-2012 0:39
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
fatto
T_T

Messaggi: 991
Registrato: May 2009
Offline Offline
#1326 RE: Cosa stai codando ADESSO?
0
ho deciso, per il mio motore userò ppm come formato per le immagini....
ascii FTW!!! Rox

Marco Fattorel ╯°□°)╯ ︵ ┻━┻
11-06-2012 1:00
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
hjeldin
bananarama operative

Messaggi: 684
Registrato: Jan 2011
Offline Offline
#1327 RE: Cosa stai codando ADESSO?
0
se non altro hai una buona percentuale di compressione Sorriso

Riccardo Arena
Actionscripttaro da 3.0 soldi e winner di contest Microsoft come unico partecipante Asd


dev/whatever blog

portfolio
11-06-2012 1:00
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
player931402
gg I won alone

Messaggi: 949
Registrato: Jul 2011
Offline Offline
#1328 RE: Cosa stai codando ADESSO?
0
per "lavoro" ho creato un piccolo programmino che prende svariati MB di file di testo ( circa 20 ) e linea per linea li deve modificare secondo alcuni accorgimenti e salvarli dentro un nuovo file di testo


processa 6 MB in 4 secondi oh yeahh

Matteo Galeotti
(Questo messaggio è stato modificato l'ultima volta il: 14-06-2012 13:28 da player931402.)
14-06-2012 13:27
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
_tommo_
Mod nerdcore

Messaggi: 5,889
Registrato: Nov 2008
Offline Offline
#1329 RE: Cosa stai codando ADESSO?
0
Se ti interessa il tempo di esecuzione, puoi provare a non usare std (che per le operazioni sui file è abbastanza lento) se non per la lettura / scrittura batch, e fare tutto il resto in un buffer in memoria.
Se non devi aggiungere o togliere caratteri ne puoi usare anche uno solo, tipo così (non compilato)

Codice:
int main()
{
    unsigned int nLines=0;

    std::ifstream oldFile;
    std::fstream correctFile;
    clock_t start, end;
    std::string nomeFile;

    std::cout<<"Nome del File ? ( con estensione ) :  ";
    std::cin>>nomeFile;

    oldFile.open( nomeFile, std::ios_base::binary  | std::ios_base::ate );

    if (!oldFile.good() )
    {
        std::cout<<"Errore apertura file\n";
        return 1;
    }
    else
        std::cout<<"File riconosciuto ( Dimensioni : Circa  "<<size/(1024*1024))<<" MB )\nInizio conversione dati in ' Nuovo"<<nomeFile<<" '\n";
    
    start = clock();

    // calcolo size file
    long size = oldFile.tellg();
    oldFile.seekg (0, std::ios::beg);

    char* buf = malloc( size );
    char* ptr = buf;
    char* end = ptr + size;

    oldFile.read( buf, size );
    oldFile.close();

        while( ptr < end )
    {
        //trova la fine della linea
        char* lineEnd = ptr;
        for( ; *lineEnd != '\n' && lineEnd < end; ++lineEnd );

        int lineLength = lineEnd - ptr;

        if( !(lineLength == 0 || (lineLength == 1 && *ptr == ' ')) )
        {
            /* magheggi sulla linea corrente nel buffer in memoria
            ...
            ...
            ...    */            
        }

        ptr += lineLength+1;
    }

//write to file
    correctFile.open("Nuovo" + nomeFile, std::ios_base::out | std::ios_base::ate | std::ios_base::binary );
    correctFile.write( buf, size );
    correctFile.close();

    free( buf );
    
    end = clock();

    getElapsedTime(start,end);

    return 0;
}

sennò ti basta creare un secondo buffer più grande a cui man mano appendi caratteri alla fine.
La prima volta che scrissi un PNY loader il caricamento di una mesh da 13 mb è passato da 1 minuto a 3 secondi Asd

Tommaso Checchi
< devlog | twitter | Dojo, a C++ game framework >
(Questo messaggio è stato modificato l'ultima volta il: 14-06-2012 14:31 da _tommo_.)
14-06-2012 14:23
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
player931402
gg I won alone

Messaggi: 949
Registrato: Jul 2011
Offline Offline
#1330 RE: Cosa stai codando ADESSO?
0
(14-06-2012 14:23)_tommo_ ha scritto:  Se ti interessa il tempo di esecuzione, puoi provare a non usare std (che per le operazioni sui file è abbastanza lento) se non per la lettura / scrittura batch, e fare tutto il resto in un buffer in memoria.
Se non devi aggiungere o togliere caratteri ne puoi usare anche uno solo, tipo così (non compilato)

Codice:
int main()
{
    unsigned int nLines=0;

    std::ifstream oldFile;
    std::fstream correctFile;
    clock_t start, end;
    std::string nomeFile;

    std::cout<<"Nome del File ? ( con estensione ) :  ";
    std::cin>>nomeFile;

    oldFile.open( nomeFile, std::ios_base::binary  | std::ios_base::ate );

    if (!oldFile.good() )
    {
        std::cout<<"Errore apertura file\n";
        return 1;
    }
    else
        std::cout<<"File riconosciuto ( Dimensioni : Circa  "<<size/(1024*1024))<<" MB )\nInizio conversione dati in ' Nuovo"<<nomeFile<<" '\n";
    
    start = clock();

    // calcolo size file
    long size = oldFile.tellg();
    oldFile.seekg (0, std::ios::beg);

    char* buf = malloc( size );
    char* ptr = buf;
    char* end = ptr + size;

    oldFile.read( buf, size );
    oldFile.close();

        while( ptr < end )
    {
        //trova la fine della linea
        char* lineEnd = ptr;
        for( ; *lineEnd != '\n' && lineEnd < end; ++lineEnd );

        int lineLength = lineEnd - ptr;

        if( !(lineLength == 0 || (lineLength == 1 && *ptr == ' ')) )
        {
            /* magheggi sulla linea corrente nel buffer in memoria
            ...
            ...
            ...    */            
        }

        ptr += lineLength+1;
    }

//write to file
    correctFile.open("Nuovo" + nomeFile, std::ios_base::out | std::ios_base::ate | std::ios_base::binary );
    correctFile.write( buf, size );
    correctFile.close();

    free( buf );
    
    end = clock();

    getElapsedTime(start,end);

    return 0;
}

sennò ti basta creare un secondo buffer più grande a cui man mano appendi caratteri alla fine.
La prima volta che scrissi un PNY loader il caricamento di una mesh da 13 mb è passato da 1 minuto a 3 secondi Asd



ahah, se ? Molto interessante ! Domani lo provo sicuramente Zizi



P.s.: Comunque per il post prima dell'altra volta : No, il dat non contiene una raw bitmap !

Matteo Galeotti
14-06-2012 22:37
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Gabriele
Posting Freak

Messaggi: 4,377
Registrato: Oct 2010
Offline Offline
#1331 RE: Cosa stai codando ADESSO?
0
io personalmente uso lib standard IO del C Asd

Gabriele Di Bari
Account G+
Account bitbucket
Account GITHUB
E ricordate: ((VMJava*)(NULL))->~VMJava();
(Questo messaggio è stato modificato l'ultima volta il: 14-06-2012 22:54 da Gabriele.)
14-06-2012 22:54
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
_tommo_
Mod nerdcore

Messaggi: 5,889
Registrato: Nov 2008
Offline Offline
#1332 RE: Cosa stai codando ADESSO?
0
Si ma non cambia granchè, lo speedup viene un pò dal non usare std::iostream che è lentissimo di suo, ma sopratutto dall'accedere tutto insieme al file evitandosi migliaia di attese sull'IO, praticamente lavorando invece in cache.
Il codice di player931402 scomoda il disco almeno due volte per linea (dipende da quanti caratteri legge insieme iostream, probabilmente 1 solo, quindi unsacco di volte per linea), il che è lentissimo Sisi

Tommaso Checchi
< devlog | twitter | Dojo, a C++ game framework >
(Questo messaggio è stato modificato l'ultima volta il: 15-06-2012 0:00 da _tommo_.)
14-06-2012 23:59
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
CiroContinisio
That guy

Messaggi: 6,078
Registrato: Oct 2009
Offline Offline
#1333 RE: Cosa stai codando ADESSO?
0
Tommo perché non mi crei una tecnologia delle tue?? Mi servi... (e sai perché)

Ciro Continisio
Tiny Colossus

[Immagine: fxTQO] [Immagine: facebook.png] [Immagine: youtube.png] [Immagine: indiedb.png] [Immagine: greenlight.png]
15-06-2012 0:01
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
fatto
T_T

Messaggi: 991
Registrato: May 2009
Offline Offline
#1334 RE: Cosa stai codando ADESSO?
0
ma qualcosa tipo: Look
Codice:
    std::ifstream t( filename );
    std::string* str;
    
    t.seekg( 0, std::ios::end );
    str = new std::string( t.tellg(), ' ' );
    t.seekg( 0, std::ios::beg );
    
    str->assign( ( std::istreambuf_iterator<char>( t ) ), std::istreambuf_iterator<char>() );

in ogni caso sul codice di tommo manca
Codice:
oldFile.seekg (0, std::ios::end);
prima di leggere la size Fifi

Marco Fattorel ╯°□°)╯ ︵ ┻━┻
15-06-2012 0:16
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
_tommo_
Mod nerdcore

Messaggi: 5,889
Registrato: Nov 2008
Offline Offline
#1335 RE: Cosa stai codando ADESSO?
0
sono un pro e ho usato ios_base::ate che apre lo stream alla fine. Prendi e porta a casa Asd

Comunque interessante quello, se preferisci usare iostream è carino Sisi

Tommaso Checchi
< devlog | twitter | Dojo, a C++ game framework >
15-06-2012 0:18
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Rispondi 


Vai al forum: