• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    ANGEL333node.js - Evented I/O for V8 JavaScript
    SUK
    SUK --- ---
    KOC256: Jak pisou dva predrecnici, docker, pm2 nebo systemd a ja nad to cely hodim apache/nginx jakozto reverzni proxy (mimojine kvuli SSL a letsencrypt).

    A jelikoz byva nazor, ze vec v node by nemela sledovat jinou vec v node, tak asi ten systemd (pokud nepouzivas dockre)
    FEDY
    FEDY --- ---
    KOC256: v linuxu pomoci systemd - kdyz daemon spadne, znovu jej umi nahodit s urcenym delay
    B3DA
    B3DA --- ---
    KOC256: docker / pm2
    KOC256
    KOC256 --- ---
    Předesílám, že problematice vůbec nerozumím a moc ani nevím jak hledat, abych nedostal až moc lowlevel info... Chtěl bych to spíše tak nějak polouživatelsky...

    když mám v Node.js vytvořenou aplikaci "server.js" (var app = express();), tak ji spustím jako takto:
    cd /var/www/node/
    /usr/bin/npm start &
    To jsem někde okoukal v tutoriálu...

    Ale to mi přijde takové humpolácké. Jsem zvyklý na to jak to funguje na PHP hostinzích, kde neřeším žádné spouštění atd. Mám prostě přidělený nějaký prostor, kde když nahraju PHP soubory, tak se umí interpretovat.

    Chápu, že ten express je asi na úrovni Apache (ala PHP) ale i ten běhá jako služba, která si sama řeší svoje udržování při životě atd.
    V Node.js aplikaci se mi občas něco zasekne a pak to visí až do restartu, který cronem vynucuji 2x denně.

    Nevím zda je zřejmé na co se ptám, ale pokud jo, tak budu vděčný za odpověď či nasměrování...
    OODOOW
    OODOOW --- ---
    KOC256: z téhle https://m.facebook.com/pg/bambubarbirmingham/events/ stránky. Potřebuju stáhnout ten obrázek, je to nějaký CSS escapování. No, zatím jsem prostě dal replace a budu doufat, že se tam žádnej další znaky neobjeví, ale klidnější bych byl s nějakou knihovnou.
    KOC256
    KOC256 --- ---
    OODOOW:
    odkud je ten vrchní string?
    protože "=" se v url escapuje jako "%3D" ale ty tam máš "\3d ".

    To si leda pro těch pár znaků napsat...
    OODOOW
    OODOOW --- ---
    Zdravím, věděl by někdo o knihovně, co by dovedla převést tohle:

    https\3a //scontent-prg1-1.xx.fbcdn.net/v/t1.6435-9/fr/cp0/e15/q65/59692487_2178790175575066_6541625750364094464_n.jpg?_nc_cat\3d 111\26 ccb\3d 1-5\26 _nc_sid\3d ed5ff1\26 efg\3d eyJpIjoidCJ9\26 _nc_ohc\3d 1Ibooh7jC0sAX-zLQP0\26 _nc_ht\3d scontent-prg1-1.xx\26 oh\3d fb748bd94267f69cf842739b80adfd03\26 oe\3d 61CBA604


    na tohle:
    https://scontent-prg1-1.xx.fbcdn.net/v/t1.6435-9/fr/cp0/e15/q65/59692487_2178790175575066_6541625750364094464_n.jpg?_nc_cat=111&ccb=1-5&_nc_sid=ed5ff1&efg=eyJpIjoidCJ9&_nc_ohc=1Ibooh7jC0sAX-zLQP0&_nc_ht=scontent-prg1-1.xx&oh=fb748bd94267f69cf842739b80adfd03&oe=61CBA604


    Nějak nemůžu najít nic, co by dokázalo unescapovat ty znaky.
    GDY
    GDY --- ---
    FEDY: a máš pro používání tříd nějaký reálný opodstatnění, nebo se ti prostě jen líbí, jak se zapisují? :) Classy v JS totiž nejsou nic jinýho než "hezky" zapsaný funkce, V8 si to beztak interně převede na prototypy a pak je tedy vhodný si "našprtat" jak to s těma prototypama je. Osobně jsem od tříd úplně upustil, protože to kód imo akorát zbytečně komplikuje. OOP návrhový vzory se daj při troše snahy dělat i funkcionálně. Třídy montujou dohromady vrstvu datovou a vykonávající. S funkcionálním přístupem tohle odpadá - zbyde prostě jen čistě datový objekt a něco, co ho modifikuje, nic dalšího přeci není potřeba.
    FEDY
    FEDY --- ---
    SUK: arrow function je to co potrebuju ! :-) doposud jsem myslel, ze je to jen zkraceni syntaxe. closures uz jsem snad i nejednou cetl a nejak jsem to nepochopil - budu muset zkusit znovu :-D diky za rady a tipy ke studiu !!
    to celkem i vyresilo muj predchozi problem s "knihovnou" funkci. nevim jestli jde class xxx extends yyy take s funkcema, ale kdyz jsem si to prepsal na tridy a pouzil extends, splnilo to co jsem potreboval :-)
    SUK
    SUK --- ---
    FEDY: tady je toho vic. Doporucuju precist, jak funguje prototypovy a jak "standardni" OOP. Dale doporucuji ke studiu closures, ktere vysvetli ono "self" a pak na zaver to, co realne potrebujes, tedy arrow functions, ktere "zachovavaji" this u callbacku, tedy on("msg", (data) => { this.doSomethingWith(data); }); bude fungovat. Jo a vlastne jeste by se mohlo hodit bind v pripade, ze budes touzit pouzit neco jako on("msg", this.processMessage)
    FEDY
    FEDY --- ---
    ahoj,

    mel bych prosim jeste jednu - rad bych zacal definovat tridy jako class namisto function , ale nejak plavu ve scopech (jestli to nazyvam spravne). jak pristupovat k vlastnostem tridy z napr. on eventu ?

    ...zde je pri zprave od workeru vzdy this.file undefined (var self = this v constructoru, tak jako ve funkci nejde)
    class Service {
    
        constructor(file) {
            this.file = file;
            this.worker = null;
            console.log('new Service ('+file+') created');
        }
        start() {
            this.worker = ChildP.fork(this.file);
            this.worker.on('message', function(data) {
                console.log('received message from Service ('+this.file+')');
            })
        }
    }
    var service = new Service('worker');
    service.start();
    


    ovsem kdyz to napisu nasledovne, tak to funguje ....

    function Service(file) {
    
        this.file = file;
        this.worker = null;
        var self = this;
        console.log('new Service ('+file+') created');
    
        this.start = function() {
            this.worker = ChildP.fork(this.file);
            this.worker.on('message', function(data) {
                console.log('received message from Service ('+self.file+')');
            })
        }
    }
    var service = new Service('worker');
    service.start();
    
    FEDY
    FEDY --- ---
    SUK: asi jsem to spatne nazval. jsou to funkce ciste pro tu moji appku. mam core proces a u nej nekolik child procesu (workeru). ty childy maji shodne funkce za ucelem komunikace skrz core proces mezi sebou. a kdyz tu komunikacni funkci upravim, nechci ji udrzovat ve vsech childech.
    SUK
    SUK --- ---
    FEDY: knihovna s funkcema, ktera hybe vecma "nad" mi nezni zrovna jako knihovna s funkcema ale neco pomerne tesne navazany na zbytek appky. Knihovna s funkcema je neco, co presunes do jinyho projektu a dal to funguje - prave proto, ze to nepotrebuje hybat nicim jinym. Nevim ovsem, co presne zamyslis. Kazdopadne, mas nasledujici moznosti:

    1. predavat funkcim objekt a ten modifikovat
    2. pouzivat za timto ucelem callbacky
    3. IOC
    FEDY
    FEDY --- ---
    ahoj vsem,

    rad bych mel knihovnu s funkcema , kterou bych chtel pouzit ve vicero scriptech (child procesech). coz bych mohl pomoci modulu, ovsem potrebuju z modulu pristupovat k promennym a funkcim zpet nahoru z "parent" scriptu. jde to pomoci global, ale to se mi nejak nelibi. dokaze mi nekdo poradit ? (neni nutne to delat pomoci modulu a require, pokud je jina moznost)

    parent.js
    require("./module.js")();
    const promenna = "parent";
    
    test();      // test

    module.js
    module.exports = function() {
    
      this.test = function() {
        console.log('test'); 
      }
    
      console.log(promenna);     // undefined
    
    }

    Jak to udelat ?
    KOC256
    KOC256 --- ---
    AREX:
    ukládám si, zkusím díky...
    AREX
    AREX --- ---
    KOC256: Doporučuju spíš nez low-level http modul, tak vzít třeba superagent nebo axios, to ti minimálně usnadní práci s tím. A na postupne prochazeni asynchronniho pole mam takovou vlastni utilitu.

    export function asyncEach(
      input,
      mapper,
    ) {
      return input.reduce(async (promise, value) => {
        await promise
        await mapper(value).catch(err => {
          console.error(err)
        })
      }, Promise.resolve())
    }
    


    Použiješ jednoduše...

    asyncEach(urls.values, async url => {
      const response_data = await axios.get(url);
      parser.parseString(response_data)
      // etc...
    })
    
    KOC256
    KOC256 --- ---
    YORK:
    no me jde o to postupne zpracovani, coz by mi aktualne prislo nejjednodussi... Tim ze mi zbytek uz seriove funguje...

    Zbytek problemu by se pak ani nemusel resit (mixovani obsahu mezi requesty třeba...
    YORK
    YORK --- ---
    KOC256: Ten odkazovanej příklad je zrova případ, kdy chceš requesty zpracovávat postupně, ne paralelně. Tj. pošleš jeden request, až se vrátí odpověď, pošleš druhej, atd.

    Pokud chceš paralelně poslat N requestů, počkat, až na všechny dojde odpověď a pak udělat něco dalšího, potřebuješ něco jako Promise.all(), jak už tady někdo psal.

    Pokud ti stačí poslat paralelně N requestů a odpověď na každej z nich zpracovat (tj. nepotřebuješ něco dělat potom, co přijdou všechny odpovědi), stačej ti obyčejný callbacky - při vytváření každýho requestu mu předáš funkci, která se zavolá, až přijde odpověď.
    KOC256
    KOC256 --- ---
    Myslím, že vysvětlení by mohlo být skryto v tomto...

    node.js - How do I send requests in a for loop synchronously in nodejs? - Stack Overflow
    https://stackoverflow.com/...s/50668853/how-do-i-send-requests-in-a-for-loop-synchronously-in-nodejs

    jen prostě tomu pořád nerozumím... nevím jak to napasovat na ten svůj příklad...
    KOC256
    KOC256 --- ---
    AREX: No premyslim hodne PHPckovsky. Mam seznam url a na ne chci paralelne neco volat. Ten http mi dela to ze stahuje z URL XML a pak ba nem neco dela. Pro jednu URL to funguje, ale kdyz to obalim do cyklu tak se mi to splasi.

    A pokud te chapu, tak mohu 8x volat parametrizovany request, ale tomu jsem se chtel vyhnout...
    Kliknutím sem můžete změnit nastavení reklam