DEV 10% Challenge

# Are you a Dev?

Solo il 10% degli sviluppatori riesce a risolvere questo problema. Tu pensi di farcela?

Ciao! Siamo Competitoor.com

Raccogliamo ogni giorno decine di milioni di prezzi da eCommerce in tutto il mondo. Il nostro team è composto da developers che amano le sfide e spostano ogni giorno più in alto l’asticella dell’arte del coding.

Solo il 10% dei programmatori è in grado di risolvere la sfida che stiamo per proporti. Se pensi di potercela fare, continua a leggere!

// CHALLENGE TODO

Il tuo compito sarà quello di comprendere un piccolo snippet di codice, completarne le parti mancanti (todo) e risolvere gli eventuali bugs. Avrai bisogno di inventiva, logica e pensiero laterale. Nel caso in cui avessi una soluzione migliore da proporci, non esitare!

// REWARDS

Una volta effettuato il submit del form, i nostri sistemi processeranno la tua soluzione. Qualora riuscissi a superare la sfida, verrai ricontattato e riceverai un buono da 10€ da spendere su Amazon.it

// HALL OF FAME

Se riuscirai a completare la sfida avrai anche la possibilità di comparire, con il tuo nome, nella Hall of Fame di competitoor.com, disponibile nei prossimi giorni!

READY? GO!






La tua mail non verrà ceduta nè utilizzata per scopi pubblicitari!


Il nostro programmatore Giulio è scomparso. Si vociferia sia "occupato" a sorseggiare Mojito alle Hawaii. Prima della sua assenza stava cercando di consentire agli utenti lo scaricamento di alcune pagine web tramite dei proxies ad hoc. Purtroppo ci ha lasciati con una miriade di bugs da risolvere e, nostro malgrado, non riusciamo a capire il senso del suo codice. Potresti darci una mano?

Risolvi il problema e, solo dopo, premi il pulsante node 8 scrapepage.js


'use strict';

const main = async () => {

    // Todo: Try to replace /*CMP*/ with a reasonable value and to fix bugs

    // Warning: This is an asynchronous context

    errorCode;

    // Fetching user(s) data
    let usersData = /*CMP*/ asyncPromisedQuery({table: 'users', ids: '/*CMP*/'})
        .catch((error) => {
            __verbose && console.log(error.message);
            errorCode = '001';
        });

    // Checking data
    if(usersData === undefiened || usersData.resultStatus === '/*CMP*/')
    {
        console.log('Something bad happened. Closing process in 5 seconds');
        setTimeout(() => {
            process.close(errorCode);
        }, /*CMP*/);
    }

    let users = usersData.resultData;

    let names = [];

    // typeof users === 'object'
    if(users.length != 0)
    {
        for(user in users)
        {
            names.push(user.name);
        }
    }

    // Todo: what if no users?!

    let usersProxies = {};

    let enabledProxies = ['001', '002', '003', '004'];

    for (let i = 0; i < enabledProxies.length; i++) {

        // Fetching proxy authenticated URL, example: http://auth:password@127.0.0.2:8216
        const proxy = asyncPromisedFetchProxy(enabledProxies[i]);

        // Assigning a proxy to the user
        if(names[i] !== undefined)
        {
            i-- && usersProxies.push({name: names[j], proxy: proxy});
        }
        // Leaving if there are no more users
        else
        {
            break;
        }
    }

    // Printing users and proxies
    console.log(usersProxies);

    // Todo: Find the best way to download or open competitoor.com webpage through the proxy assigned to the user

    // GiulioDo: I Requested a mojito but it was a Nightmare :/

};

main();