• ú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í
      ROMANICAK
      ROMANICAK --- ---
      KOC256:
      Jezis ja to zpackal, pardon:

      https://185.47.222.180

      grdw/grdw

      primej link na kamerku je pak po prihlaseni
      https://185.47.222.180/webcam
      KOC256
      KOC256 --- ---
      ROMANICAK:
      nejede
      ROMANICAK
      ROMANICAK --- ---
      ROMANICAK:
      Pardon...aby kamerka jela, musite se divat pres SSL
      https://185.47.222.180:2346/index.htm#/?z=H
      grdw/grdw

      prosim nic nemenit, dik.
      ROMANICAK
      ROMANICAK --- ---
      Ahoj, prenasim dotaz sem, nejsem schopnej se dohrabat vysledku...

      --jsem uplny amater a prosim o radu. Mam mjpeg stream a v prohlizec v PC to jede normalne - zobrazi se stranka a v ni video. V browseru v telefonu se me to ale misto zobrazeni videa pta na download...jak mam to html napsat, aby se me to neptalo a zobrazovalo to video? Kdyz udelam statickou html stranku s kodem niz, tak to jde. Ale ja to potrebuju nejak zakomponovat do Growduino kodu, coz je prave Angular...kdyz pomoci grunt vygeneruju kod a uploadnu na webserver, tak tam ta stranka proste neni (muzete se podivat asmi na http://185.47.222.180:2346 ).

      Telefon je windows - prohlizec edge

      Soucasnej kod na strance vypada*(https://github.com/romanicak/growduino-client):
      <html>
      <head>
      <title>GrowRoomCam</title>

      <script>
      var i=0;
      var url="../webcam";
      function jsUpdate() {document.image.src=url+"&"+(i++);}
      </script>

      </head>
      <body onLoad="jsUpdate()">
      <img name="image" onLoad="jsUpdate()">
      </body>
      </html>
      FEDY
      FEDY --- ---
      FEDY: ...a opet si odpovim (skoda , ze vcera nesel web te knihovny, vyresil bych behem 30sec jako dnes, kdy uz sel)

      VarBind objects

      value: The value, in decoded form. This will be an integer for integer, gauge, counter and timetick types, a string for an octet string value, an array for array or IP number types.

      valueHex: For octet string values, this is a hex string representation of the value. ---- tady je hodnota spravne
      FEDY
      FEDY --- ---
      tak zase ja :-D uz jsem zoufalej, tak znovu zkusim ...

      mam snmp-native knihovnu, ctu DateAndTime (octet string) , pricemz prvni dva bajty jsou rok, ovsem - dostavam blbou hodnotu - buffer ma obsah [7,253,.... , kdyz to prevedu na hexa, je to 07FD, coz je 2045 (spatne). kdyz provedu snmpwalk v koznoli linuxu, dostanu 07E2, coz je 2018 (spravne). cili konzolova verze snmpwalk by v bufferu mela [7,226... , rozdil hodnot tedy 253-226 cini 27. no neni to divne ?

      nevite nekdo v cem by mohl spocivat takovy problem ?
      FEDY
      FEDY --- ---
      FEDY:
      KOC256:

      tak jsem na to prisel - kazdy radek konfigurace (zapis) je potreba provadet separe kanalem - vzdy pockat na .on('done') , tam kanal uzavrit a pro dalsi radek konfigu otevrit novy... funguje jako vino ! hurraaaa :-D
      KOC256
      KOC256 --- ---
      FEDY:
      ja resil uplne neco jineho jen ve stejne technologii... ...to byl spise povzdech :)
      FEDY
      FEDY --- ---
      KOC256: hmm, to byl jiste nejaky PHPckar :-D (NO FLAME) me ta spojeni asi viset nezustavaji, v logu mikrotika vidim, ze "user logged out". je vsak divne, ze po tech nekolika uspesnych pripojeni a provedeni potrebneho to pak pise user logged out jiz treba po prvnim,druhem(,tretim) prikazu, prestoze jich valim treba 20. a jak jsi to vyresil ? telnet/ssh ? (to se mi kua nechce :-))
      KOC256
      KOC256 --- ---
      FEDY:
      principiálně jsem řešil to samé, že některé připojení mi zůstávají viset. Jediné chytré odpovědi, které se mi zde dostalo bylo: "protože NODE.JS"... :(
      FEDY
      FEDY --- ---
      tak mam jeste jednu a obavam se, ze na to si sam neodpovim...

      zatim velmi obecne - pouzival jste nekdy nekdo knihovnu mikronode ? (ovladani Mikrotik routeru pomoci jejich API) vse normalne funguje, az na to, ze po nekolikatem pripojeni a uspesnem provedeni vsech prikazu me zacne router vykopavat , aniz bych dokoncil vsechny prikazy... jakmile router otocim, vse zase funguje, jen se situace opakuje. vzdy uzavru "channel" a pote ukoncim "connection", jak bych asi spravne mel. jiste to nebude chyba node.js a mozna ani chyba knihovny, ale neco musim delat blbe...

      pripadne predem diky.
      FEDY
      FEDY --- ---
      FEDY: no parada, jeste staci na zacatku poslat "terminal length 0" a je to bez paging :-D ...kdyby se nekomu nekdy hodilo
      FEDY
      FEDY --- ---
      FEDY: a jsem zase u toho - jakmile sem napisu, vzapeti si sam odpovim.... ono je tam totiz strankovani a mam ocekavat "--More--" ... diky :-)
      FEDY
      FEDY --- ---
      ahoj,

      nedelate nekdo pomoci nodejs ovladani sitovych prvku skrze telnet/ssh ? zkousim expect-telnet, asi by to mohlo delat co potrebuju, ale nejak se mi nedari ziskat jakykoliv delsi vypis.

      
      var et = require("expect-telnet");
      
      et("host_IP:23", [
        {expect: "Username", send: "......\r"},
        {expect: "Password", send: "......\r"},
        {expect: ">"       , send: "enable\r" },
        {expect: "Password", send: "......\r"},
        {expect: "#"       , send: "show version\r"},
        {expect: "", out: function(output) { console.log(output); }, send: "exit\rexit\r"} ],
      
        { timeout: 5000 },
      
        function(err) {
          if (err) console.error(err);
        }
      );
      


      vysledek je "s" nebo "sh"... :-D pricemz tcpdumpem vidim, ze mi cely vypis prisel...
      KOC256
      KOC256 --- ---
      SUCZKER:
      No nejsem v tom expert, tak at se tu pak o to nekdo neopira jako o bernou minci...

      1/ zvedl jsem timeout... (cas neni mym nepritelem)

      2/ cele to obalil do try catch
      
      try {
      	await page.goto('https://.../?profile_name=' + nick + '&type[]=' + type +'&submit=Filter', {waitUntil: 'load'});
      	await page.waitForSelector('textarea:not(#support_body)');
      	const txt = await page.$eval('textarea:not(#support_body)', el => el.value);
      	...
      } catch (e) { ... }
      


      Obcas to neprojde, ale cele to nespadne a nacte se to proste jindy...
      SUCZKER
      SUCZKER --- ---
      KOC256: Da se vysvetlit, cos udelal jinak, kdyby se to treba nekdy nekomu hodilo ??
      KOC256
      KOC256 --- ---
      SUCZKER:
      No uz to mam "nejak" odladene. Zase to asi nestoji za to, aby se tim nekdo vice zabyval a i ta chyba je jen nekdy... Kdyby to blblo, tak si s tim jeste pohraju jak jsi psal...

      Diky!
      SUCZKER
      SUCZKER --- ---
      KOC256: Bylo by lepsi, kdybys napsal, co delas. Proste document.ready nebo ekvivalent ke vzdycky lepsi. Je stranka staticka, nebo je v ni JS, co ji na klidntovi vyrendruje? Tohle vse muze hrát roli? Kdyztak hod Vic info do posty, jestli to neni top secret project.

      Zkusit stranku po loadu ulozit a podivat se, jestli tam skutecne je Dom structural, ktera odpovedi tomu selectoru, neni od veci.

      Proc proste nevyzlousis jiny timeout eventy z toho page.goto a uvidis? A pak napis, pokud to nebudete fungovat.

      Ja nevim, co chces scrapovat, se pak tezko ladi, když neco nefacha.
      KOC256
      KOC256 --- ---
      SUCZKER:
      Jsi dost tajemný...

      Jaká je tedy nejlepší praxe na úpravu toho řádku, když waitUntil: 'load' není to pravé...:
      await page.goto('https://example.com/Tools/?name=' + nick + '&loop=' + loop + '&submit=Filter', {waitUntil: 'load'});

      Patří do parametru něco jiného?
      SUCZKER
      SUCZKER --- ---
      koukam, ze to "page.goto" ma jeste varianty "domcontentloaded" a "networkidle0", atd.. mozna zkus neco z nich.
      SUCZKER
      SUCZKER --- ---
      KOC256: To si zrejme load mysli. Nevim, co se snazis scrapovat, ale udalost "document.load" neni to samy, co udalost "document.ready", jen tak na okraj. Bylo by asi vhodny si dokument pote, co skonci load, nekam ulozit, aby bylo jisty, ze tam skutecne je to, co hledas.
      Kliknutím sem můžete změnit nastavení reklam