• ú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

    Věříte, že nějaký webapp framwork postavený na node.js (Express?) bude v budoucnosti rozšířený podobně jako jsou nyní např. Django, CakePHP, Rails, Zend, atd..?

    55 hlasy od 55 respondentů

      Relativně nové server-side javascriptové API. Hlavní předností je, že je event-driven a neblokující. Již nyní obsahuje implementaci protokolů HTTP, TCP, DNS, rozhraní pro práci s procesy, soubory, atd..

      Instalace je velmi jednoduchá, jediná závislost je Python, potom node.js nainstalujete jako standardní program.

      Odkazy:


    • Oficiální web: http://nodejs.org

    • Přednáška od Ryana Dahla (autor node.js)

    • Git repozitář: http://github.com/ry/node
    • rozbalit záhlaví
      KEEPER
      KEEPER --- ---
      SUCZKER: Diky, to by taky asi slo. Kazdopadne jsem to vyresil tak, ze jsem to napsal v jinym jazyce a neni problem :) Jinak pokud jsem v tom scriptu pouzival HTTPS spojeni, tak to zralo cca o 100% vic pameti nez HTTP.
      SUCZKER
      SUCZKER --- ---
      KEEPER: Uz to asi neni aktualni, ale mozna bych na to zkusil nejakej spawn / fork a cist si to pomoci sprosty pajpy, to by ti melo zajistit, ze ten hlavni proces neporoste.
      ALMAD
      ALMAD --- ---
      UETOYO: Vsechno pisem v CS, v cistym JS je jenom to co musi (tzn. prakticky nic, pripadne forky).

      Konzistence FTW. Mozna se to zmeni s novym EC a hlavne pokud "se" prosadi promise-based vyvoj.
      KEEPER
      KEEPER --- ---
      ALMAD: Tak jsem to prepsal do eventu. Bohuzel je to stejny. Nechal jsem ten script par hodin bezet a nakonec se narust pameti teda zastavil. Zkousel jsem to monitorovat pres Nodetime, roste hlavne RSS, ale po pravde nevim, co presne to pro me znamena :) Kazdopadne stejnej script napsanej v Ruby zabere max 25MB pameti a vic ani tuk.
      ALMAD
      ALMAD --- ---
      KEEPER: Ted si vybavuju, ze kdyz sem neco takovyho resil posledne, tak jsem skoncil u toho, ze jsem to prepsal na event emittery...to zabralo, protoze tam stoprocentne kontext nedrzis. U nas se to pak zvrhlo a konci to takhle, ale u tebe by to melo zustat nekomplikovany, protoze kdyz neprojde podminka, tak das setTimeout(function(){ emitter.emit('resume'); }, time);, coz uz by kontext fakt drzet nemelo.
      KEEPER
      KEEPER --- ---
      ALMAD: Diky, presne to jsem zkousel. V ty else vetvi jsem mel: process.nextTick(run). Pokud jsi tohle mel na mysli? Mozna ze jenom node je zravy a nekde se to nakonec zastavi? Zatim teda, co jsem to nechal bezet, tak spotreba pameti neustale rostla a to me prekvapilo, proto patram, jestli nekde neni chyba v kodu. Chtel jsem takovych scriptu poustet vic na slabym VPSku s malo RAM a jeste u toho mit Redis, ale takhle to moc nevypada, ze by to bylo realizovatelny :)
      ALMAD
      ALMAD --- ---
      KEEPER: Jeste na to koukam, nic nebindujes, takze by to leakovat nemelo...zkus jenom odstranit tu primou rekurzi a dat tam nextTick (=~ to samy jako setTimeout(fn, 0)
      KEEPER
      KEEPER --- ---
      ALMAD: handle error a process res je jen pseudo kod, aby to tam neprekazelo :) na gist jsem uplne zapomnel, uz jsem to tam preklopil: https://gist.github.com/anonymous/8407413

      Poradil bys prosim, jak se zbavit tech closures, aby tam nezustavalo nic viset a nepolykalo to pamet? Diky.
      ALMAD
      ALMAD --- ---
      KEEPER: ...a taky kdyz chces upravy tak doporucuju davat spis na gist, at se to jde forkovat.
      ALMAD
      ALMAD --- ---
      KEEPER: Yup, potrebujes se zbavit tech closures.

      Co ma BTW delat "process run" a "handle error"? ;)
      KEEPER
      KEEPER --- ---
      Zdravim, potrebuju vytvorit script, ktery by nepretrzite stahoval data (json) z url, max vsak jednou za 2s, abych nezahltil server. Zjednodusene jsem si to predstavoval nejak takhle:

      [JavaScript] var https = require('https'); var limit = 2 * 1000; function fetch(cb) { - Pastebin.com
      http://pastebin.com/F27dyNir

      Pokud tenhle script ale spustim, s kazdym requestem se zvysi pamet node processu, coz moc nenahrava tomu, ze by to melo bezet nonstop :) Predpokladam, ze to neni uplne normalni a nekde mam chybu. Mam takovy podezreni, ze to bude zpusobovat ta rekurze, ale nevim, jak to provyst jinak. Node mam 0.10.24.

      Predem diky za radu.
      ALMAD
      ALMAD --- ---
      Jsme jeden z nejranejsich uzivatelu node v CR. Hledame nove kolegy.

      Nekteri mozna neskonci primo v node.js, ale vzdycky budete zatracene blizko.

      Apiary — Jobs
      http://apiary.io/jobs
      VANGUARD
      VANGUARD --- ---
      Ahoj, hledám node.js developera na různé jednorázové zakázky pro jeden projekt co rozbíhám. Ideálně pokud by měl zájem o herní vývoj.
      První by byla rozběhnutí a konfigurace https://github.com/nodejitsu/node-http-proxy na virtuálním serveru.
      3108
      3108 --- ---
      EGGH: Ahoj, toto forum je o server-side javascripte, na svoj request skus [ client side scripts (JavaScript) ]

      kazdopadne to co chces urobit je viacmenej blbost, niektore prehliadace nativne blokuju window.open , lebo je to user hijack/spam metoda.
      Nepotrebujes otvorit viac ako prave 1 okno, urobit prave 1 redirect adt. ak ano, mas to zrejme spatne premyslene.
      EGGH
      EGGH --- ---
      Ahoj, snad jsem tu správně. Pokouším se vytvořit odkaz, na který když kliknu, tak se mi v prohlížeči otevře více oken s více stránkami. Např. když kliknu na odkaz, tak se mi otevře stránka seznam.cz, google.com, ebay.com, aukro.cz atd. Našel jsem na návod tady ale vždy se mi otevřou max. 2 linky i když jich tam mám 15 - prohlížeč opera. V IE se otevře jen první. V čem je chyba?
      ALMAD
      ALMAD --- ---
      Ten trade-off hard disk space / dependency hell je jedna z veci, co v node.js celkem ocenuju.

      Kdo si neuzival s rvm/virtualenv, ten mozna nevi ;)
      GDY
      GDY --- ---
      ve výsledku to tedy pak vypadá, že jsou balíky duplicitní (a určitě jsou), ale častokrát jeden balíček potřebuje nějaký jiný v jedné verzi a druhý zase chce verzi úplně jinou
      GDY
      GDY --- ---
      MARASAN: každý balík si řeší závislosti samostatně a tedy si je i instaluje k sobě do podsložek, jde hlavně o to, že se tím reflektuje vcelku překotný vývoj všech balíčků a hlavně jejich novějších verzí, kdy jedna verze už nemusí být kompatibilní s tou předchozí, dost často jde i o kompatibilitu se samotným node. Doporučovaná praxe: vše, co souvisí s projektem cpát do lokálních node_modules, globálně pak instalovat opravdu jen takové, které mají obecnou využitelnost (například grunt)
      MARASAN
      MARASAN --- ---
      mam dotaz k npm: nainstaluju si nejaky packages (D3, Cube, ...) do ~/node_modules/ nacez v adresari package pustim npm install a nainstaluji se zavislosti do ~/node_modules/*/node_modules/. Proc? Mnozi se mi duplicitni baliky v ~/node_modules/*/node_modules/, muzu je proste kopirovat do ~/node_modules/ ?
      AREX
      AREX --- ---
      Bohužel nad tím jsem zatím moc nepřemýšlel, jak modelovat tu socketovou komunikaci. Spíš se tak nějak spoléhám, že to namodeluji právě pomocí BDD specifikace, která bude schopna ověřit, že vše funguje jak má. Chci to celé psát hodně modulárně, takže počítám z využitím socket namespace docela extenzivně.

      Asi jsem nepochopil, co myslíš tím spec up front a že to není zadarmo.

      Jak jsem psal, plánuju to tak, že veškeré mocky/stuby se budou injectovat pouze pro unit testy. Jakmile bude potřeba projet integrační testy, tak se tyhle simulace vyhodí a bude to (aspoň doufám), komunikovat proti živému zdroji.

      Docela velkou šanci také vidím v tom, že pro architekturu jsem zvolil ECS, takže vše bude dost na sobě nezavislé a bude se to dobře testovat. Testování DOM mě momentálně trápí skutečně nejmíň ze všeho. Jak jsem psal, UI nebude nijak extenzivní a rozsáhlé. Většina bude o backendu, který se naštěstí dobře testuje.
      ALMAD
      ALMAD --- ---
      AREX: Kdybys mel napady jak to vyresit, tak dej vedet -- jak vyresit realtime API / jak popsat message-based workflow resime uz nejakou dobu a furt nas nenapada nic dostatecne dobreho :/

      AREX: Na to BDD jenom pozor ze to je vlastne dost narocny spec up front. Nic proti tomu, jenom ze to neni zadarmo (jako nci).

      AREX: My projeli ruzna komba zombie/phantomjs/par jinych bazmeku, nicmene ve vsech ten server pod tim vzdycky bezel. IMHO to na *integracni* testy je potreba, jinak testujes v podstate jenom jednotkove...

      Nejvetsi problem techhle testu je stejne 1) fakt ze DOM je API na coz neni frontend uplne stavenej a je potreba, aby s tim byli vsichi srozumeni 2) rychlost.
      Kliknutím sem můžete změnit nastavení reklam