$30 off During Our Annual Pro Sale. View Details »

Node.js sucks (for VilniusPHP)

Node.js sucks (for VilniusPHP)

Ne viskas node.js pasaulyje yra tobula

Dominykas Blyžė

May 02, 2013
Tweet

More Decks by Dominykas Blyžė

Other Decks in Programming

Transcript

  1. node.js sucks
    Autorius ( ), 2013-05-02
    Dominykas Blyžė @dymonaz

    View Slide

  2. node.js sucks
    node.js yra puiku, BET reklama ne visai atitinka realybę
    - jūs GARANTUOTAI turėsite didelių problemų,
    GARANTUOTAI žaisite veidrankinį, GARANTUOTAI
    jausitės apgauti ir GARANTUOTAI padidės jūsų noras
    nebegyventi.

    View Slide

  3. Klausimai?
    ,
    @dymonaz +Dominykas Blyžė

    View Slide

  4. Ar node čiulpia, nes JS
    čiulpia?
    WAT:
    [
    ]
    +
    [
    ]
    > "
    "
    [
    ]
    +
    {
    }
    > "
    [
    o
    b
    j
    e
    c
    t O
    b
    j
    e
    c
    t
    ]
    "
    {
    }
    +
    [
    ]
    > 0
    {
    }
    +
    {
    }
    > N
    a
    N
    https://www.destroyallsoftware.com/talks/wat

    View Slide

  5. WAT?
    http://stackoverflow.com/questions/9032856/what-is-the-explanation-for-these-bizarre-
    javascript-behaviours-mentioned-in-the

    View Slide

  6. + operatorius
    +
    n
    e
    w D
    a
    t
    e
    (
    ) tai niekam netrukdo...
    Nes "\" namespace'am tikrai geriau...

    View Slide

  7. HA HA!
    © Nathan Smith, http://www.flickr.com/photos/nathansmith/4704268314/

    View Slide

  8. HA HA?
    F
    a
    t
    a
    l e
    r
    r
    o
    r
    : E
    x
    c
    e
    p
    t
    i
    o
    n t
    h
    r
    o
    w
    n w
    i
    t
    h
    o
    u
    t a s
    t
    a
    c
    k f
    r
    a
    m
    e i
    n U
    n
    k
    n
    o
    w
    n o
    n l
    i
    n
    e 0
    http://phpsadness.com/sad/16

    View Slide

  9. Kaip dažnai tai yra
    problema?

    View Slide

  10. Kame node.js nečiulpia?

    View Slide

  11. Greitis
    V8 ir neblokuojanti I/O

    View Slide

  12. Greitis
    Greitai užsikrauna
    Greitai įvykdo
    Greitai perduoda
    Greitai nulūžta

    View Slide

  13. Kame, įvairiomis
    nuomonėmis, node.js
    čiulpia?

    View Slide

  14. Daug CPU
    reikalaujančios operacijos
    Single-threaded nėra didelė bėda
    Su lėktuvu į darbą neskrendam

    View Slide

  15. Nestabilus API
    Pačio node core API yra stebuklingai stabilus, o kai
    keičiasi - tik į gerąją pusę
    m
    y
    F
    u
    n
    c
    (
    .
    .
    .
    , c
    a
    l
    l
    b
    a
    c
    k
    ) { .
    .
    . }
    c
    a
    l
    l
    b
    a
    c
    k
    (
    e
    r
    r
    o
    r
    , .
    .
    .
    ) { .
    .
    . }

    View Slide

  16. Callback hell!
    Naudokit promisus.

    View Slide

  17. Tai, dėl ko node.js iš tikro
    čiulpia

    View Slide

  18. 29k+ modulių

    View Slide

  19. Sturgeon's Law
    “ ninety percent of everything is crap ”

    View Slide

  20. View Slide

  21. memcache
    https://npmjs.org/package/memcache
    https://npmjs.org/package/memcached
    #22: Incorrect detection of the record "END"
    #45: data that contains "\r\nEND\r\n" gets
    uncorrect result

    View Slide

  22. Maži moduliai ir mažos
    aplikacijos
    Gyvenimas nėra mažas, verslo problemos nėra mažos
    Per daug mažų problemų - reikia ieškoti balanso

    View Slide

  23. Native (kompiliuojami)
    moduliai

    View Slide

  24. Išspręsta versijų
    problema?
    Modulis A @ v1
    Modulis B @ v1
    Modulis A @ v2
    Modulis C @ v3
    Modulis B @ v2
    Modulis A @ v666

    View Slide

  25. Kaip dažnai atsinaujinti?
    Kas rytą. O likusią dienos dalį - taisyti bug'us.

    View Slide

  26. One language to rule
    them all

    View Slide

  27. Pattern'ai skirtingi
    What is absolutely bad is that if node.js won't be
    minimally aligned with the rest of the code in the
    browsers out there our life as "one language
    everywhere" will become harder than ever.
    ,
    @WebReflection http://webreflection.blogspot.de/2012/01/on-eventemitter-in-nodejs.html

    View Slide

  28. "Async"
    Vien todėl, kad yra callback'as, kodas nėra
    "asinchroniškas".
    Q bibliotekos promisai visada asinchroniški

    View Slide

  29. "Single-thread"
    @horse_js,

    single-threaded, but you still get race
    conditions, how is this possible

    https://twitter.com/horse_js/status/325982187772071937

    View Slide

  30. Unagi

    View Slide

  31. Kultūra

    View Slide

  32. Kam reikia TDD?
    “battle-tested with billions of requests”

    View Slide

  33. Kam reikia
    dokumentacijos?
    Kodas už save kalba

    View Slide

  34. Nevisapusiškas
    evangelism'as
    Callbacks vs promises
    AMD
    Phantom

    View Slide

  35. Istorijos ignoravimas
    Promisai - nuo 197x
    AMD - browseryje
    Phantom - ne node ir ne browseris!

    View Slide

  36. Galioja visiems
    džiavaskriptams
    https://github.com/rwldrn/idiomatic.js/
    http://www.youtube.com/watch?v=_EANG8ZZbRs -
    Douglas Crockford: Programming Style & Your Brain

    View Slide

  37. JIFASNIF
    JavaScript is fun so node.js is fun
    Jeigu tik galėtume vien žaisti...

    View Slide

  38. Trūksta įsipareigojimų
    Griaunamas pasitikėjimas

    View Slide

  39. Šviesuliai sako "daryk
    kaip tau patinka"
    Ar norisi gyventi su Bitcoin svyravimais?

    View Slide

  40. Nepaaiškinti trade-off'ai
    Nesusiformavusios geriausios praktikos

    View Slide

  41. Ar node.js jau tinka
    produkcijai?
    eBay ( )
    LinkedIn ( )
    Microsoft ( )
    Yahoo! ( , )
    ql.io
    mobilios aplikacijos API
    Azure
    YUI Mojito
    Trello
    Walmart

    View Slide

  42. Ar node.js ekosistema jau
    subrendusi?
    Ne. Jai vis dar ankstyva paauglystė.

    View Slide

  43. Nenaudokite node.js.

    View Slide

  44. Kur aš statau savo
    pinigus?

    View Slide


  45. Ačiū. JIFASNIF.
    Skaidrės:
    ,
    ;
    http://dominykas.net/13
    @dymonaz +Dominykas Blyžė

    View Slide