Pomoc s HTML

Odpovědět
daton
Příspěvky: 664
Registrován: 16 bře 2013, 16:12

Re: Pomoc s HTML

Příspěvek od daton »

Ahoj
no to je právě ono takhle tedy client.println jsem to měl před tím a mám to tak i v mém solar serveru. Ale tam se stránka obnovuje celá a tedy to při refreši blikne protože se překreslí celá. Zase přesně jak píšeš pomocí if then jsem tam měl udělané dvě barvy na zapnutí a vypnutí knoflíku.
V současnosti experimentuji se serverem, který stránku zná jako statickou a jen se tam mění parametry. Deklarace je nějak takto

Kód: Vybrat vše

      server.on ( "/", handleRoot );
      server.begin();
      Serial.println ( "HTTP server started" );
přičemž používám knihovnu
ESP8266WebServer.h.

U mého předchozího sereru jen na arduinu jsem měl

Kód: Vybrat vše


 EthernetClient client = server.available();
a používal jsem knihovnu
#include <Ethernet.h>
AlesH
Příspěvky: 323
Registrován: 25 úno 2013, 09:18

Re: Pomoc s HTML

Příspěvek od AlesH »

No, žiju v přesvědčení, že v klasickém HTML/CSS se při refreshi vždy překresluje celá stránka. Jestli to i "problikne" záleží na různých okolnostech (např. na použitém prohlížeči a na struktuře HTML kódu). Pokud se stránka nemá celá překreslovat, lze toho podle mne nejsnáze dosáhnout pomocí JavaScriptu, ale pak už to bývá docela složité a nepřehledné.

Jak jsi dospěl k tomu, že při předchozím řešení na Arduinu se stránka nepřekresluje? Z toho, že to neproblikávalo? Domnívám se, že pokud by to generovalo stejný HTML kód, chovalo by se to stejně i na ESP. Nebo je to jinak?
daton
Příspěvky: 664
Registrován: 16 bře 2013, 16:12

Re: Pomoc s HTML

Příspěvek od daton »

No nemohu to potvrdit a tak spíše hádám, ale je to tak že to co mám server na arduinu, tak to při refreši vždy znovu vykreslí celou stránku a tam je to jasně vidět jak znovu vykreslují tabulky a hodnoty. Kdežto u kodu, kdy jsou jen servírované hodnoty proměnných, tak jsem toto vykreslování nezaznamenal respektive změní se jen hodnoty, ale tabulky se nepřekreslují. Tedy nedochází k tomu probliknutí což asi není nejpřesnější výraz pro znovuvykreslení. Vysvětluji se to a ted asi laicky tak, že prohlížeč dostane stránku načte ji do cach a v okamžiku kdy mu jde nový kod provede jen změny v proměnných a nepřekresluje celou stránku. U client.println se to vše posílá zřejmě pomaleji a tak to prohlížeč bere jako novou stránku. Možná je to tou rychlostí kdy při tom vystavení stránky jako textu to z ESP dorazí rychleji ale to jsou jen spekulace ... a to mne :cry: štve, že přesně nevím jak to funguje. Nicméně výsledek je na monitoru patrný a tedy lze vyslovovat hypotézy.
DavidO
Příspěvky: 1133
Registrován: 01 kvě 2013, 21:27

Re: Pomoc s HTML

Příspěvek od DavidO »

Obávám se, že máš nepřesnou představu o "tom internetu", konkrétně když v prohlížeči něco vidíš, tak kdo/co/kdy/jak dělá. Je víc možností, jak nakonec způsobit, že z monitoru vyletí elektrony a píchnou tě do oka, ale to, jak píšeš okolo že se stránka nepřekresluje, když jsou jen "změny v proměnných", tak v čistém html není možné (a css stylů se to netýká vůbec). Lze to udělat pomocí JavaScriptu, ale ukázky v tomto vlákně se zatím týkaly jen html a jeho formátování, takže nemyslím, že to by byl tvůj případ.
Můžu na lednovém robodoupěti u tabule interaktivně načmárat jak to celé funguje a případně odpovědět na konkrétní otázky či problémy, ale nasucho to sem psát nebudu (notabene když nevím, co všechno se skrývá ve tvém kódu, dávkuješ nám to jako kdyby to bylo tajný :evil: ).
Nikoho plánovaně neurážím. Jestli se Vám nelíbí co píšu, tak to nečtěte. A ostatně, třeba za to nemůžu - Researchers believe that dark humor can be a significant symptom of dementia.
daton
Příspěvky: 664
Registrován: 16 bře 2013, 16:12

Re: Pomoc s HTML

Příspěvek od daton »

Ano tvé obavy jsou na místě, skutečně nemám hlubší představu, vzlášt když dnes jsou ty prohlížeče stále chytřejší a cach je opravdu zákeřná věc při refreši stránky i když je vynucovaná. Nejsem si totiž jist tím že v případě že stránka je uplně stejná k překreslení dojde. Pokud ti Davide vadí že se ptám takto po kouscích na věci co mne zajímají tak se nezlob, na celkový obraz funkce to zde ve foru asi skutečně není a vzhoedem k tomu že moje pracovní neschopnost pokračuje se bohužel do Prahy ještě dost dlouho nepodívám.
Celkový obraz toho kodů tí dát stejně ješttě nemohu protože vše je vy vývoji. Nevím jak řešíš vývoj třeba robota ty ale předdpokládám že taky nenapíšeš hned celý kod pro všechny ovládací funkce a pak doladuješ jednotlivé části nebo jo? Já na to jdu obráceně nejprve si chci odladit a odzkoušet jednotlivé části programu jak to funguje a odladit bloky a pak to spojit s dalšími bloky v propojovací kostře programu. Tedy je logické že celý kod o který hovoříš ještě nemám protože jsem chtěl nejprve odladit html kod stránky a pak ho zabudovat do serveru, který nebude při refreši překreslovat stránku tak,že se půl sekundy bude překreslovat v prohlížeči, pak půl sekundy vydrží a překreslí se znovu což mi dělal právě při použití toho client.println. Pokud použiji string page (kod)page+= (kod) page +=..... tak to překrteslování nedělá nebo není patrně a stránka je sestavena bez postřehnutelného překreslení a tedy tato cesta je pro mne schudnější. Nyní ještě musím dopsat kod pro ovládání rele a elektronických spínačů a dál pro snímámí napětí a teploty. No a pak možná dojde k doladování celku.
Tak tot vše, ale dík všem za rady :-)
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Pomoc s HTML

Příspěvek od gilhad »

No, nevim jak David, ale ja vetsinou resim vyvoj tak, ze
  • udelam adresar pro novy projekt,
  • do nej dam soubor README, ktery obsahuje asi tak jednu vetu o cem to bude
  • zalozim gitovy repozitar a hrde tam ten README commitnu
pak napisu bud naznak struktury s tim, ze jednotlive funkce povetsinou jen vypisou svuj nazev (kdyz jdu zrovna shora dolu), nebo naopak zacnu psat nejakou zajimavejsi cast kodu zevnitr a udelam nejaky minimalisticky programek (tedy takovy, ze to s nim uz jde aspon zkusit prelozit) test_fce_xyz, ktery tomu podstrci vsechny parametry a pripadne vstupy a vypise promenne, ktere se tvari zajimave.

Jakmile mam aspon nejaky kousek, ktery se tvari ze by mohl davat smysl a nehaze pri prehladu prilis mnoho chyb, tak ho zase commitnu a pisu dal.
Samozrejme komituju, kdyz od toho na delsi dobu odchazim (treba vecer, kdyz jdu spat, nebo kdyz jdu na obed ven), celkem bez ohledu na to, zda to vubec jde prelozit. A rozhodne commituju nez se pustim do nejake opravy slozitejsi nez preklepy, chybejici stredniky a nesparovane zavorky a pote, co se mi tu opravu podari nejak odladit.

Asi tak kolem 10 commitu uz to povetsinou je ve stavu, kdy to "fakt skoro jako neco dela" - tedy napriklad u tebe to na serial vypise kod HTML stranky, ktery neni na prvni pohled zcela blbe.

kolem tak 20-30 commitu uz to "neco dela doopravdy", i kdyz treba ne zdaleka vsechno a spravne, ma to v sobe nekde cislo verze ("0.0.1-rc28 from 2017.12.19 22:42") a je pomalu cast to zacit brat vazne jako projekt, ktery ma sanci na to nekdy fungovat.

Takze oznacim vrcholek jako feature branch, nebo tak neco, hlavni branch vratim na to uvodni README a squasnu do nej cely ten vyvoj jako jeden krok s tim, ze zvednu verzi na "0.0.2" a rovnou udelam dalsi feature branch, ve kterem zase vrsim jednotlive mensi kroky, ze kdyby se neco rozbilo, nebo jsem neco omylem smazal, tak se k tomu snadno muzu vratit.

Po nekolika dalsich podobnych iteracich se teprve dostanu k necemu jako 0.1.0, co uz "celkem funguje" (akorat tomu zadrhava refresovani stranek a neumi to zaporne teploty, nebo tak neco, ale uz se to celkem da pouzivat).

Kdyz se nejaka verze doopravdy osvedci, tak neni problem ten verzovaci system procistit, vyhazet vsechny pomocne vetve (a treba to i prohnat garbage colectorem, nebo proste prekopirovat do noveho repozitare jako juvodni a jediny commit a odriznout tak celou tu rozvrkocenou historii).

Klavesnice s STM, kterou jsem na minulem robodoupeti predvadel byla commit cislo 74 v hlavni rade a jeste porad neumela emulovat USB klavesnici, vybrat ovladac jinak nez cyklicky dokola a jednotlive funkce proste padly, pokud se stalo neco necekaneho na I2C sbernici. Ale uz jezdila robotkem (Zumo), a psala dvema zpusoby na tri ruzne periferie (serial, I2C display a jine arduino).

Cili rekneme, ze uz se blizim te tvoji urovni, kde ti to v prohlizeci celkem spolehlive (i kdyz s blikanim) refresuje stranky a v nich jsou nove hodnoty, ktere nejak odpovidaji jakymsi vstupum.

Proste a jednoduse verzovaci systemy jsou tu hlavne pro obdobi prekotneho vyvoje a mohutnych oprav chyb jak v provedeni, tak v koncepci, kdyz uz to cele funguje spravne a dela vsechno co ma, tak uz verzovaci system neprinasi tolik uzitku jako na samem zacatku (i kdyz pro opravy chyb a dalsi vylepseni je potreba porad).

Kdyz vyvyjime neco se synoveckem, tak klidne jsou nove commity treba co deset minut, aby se nam to moc nerozesynchronizovalo - a to sedime u jednoho stolu.

Takze IMHO fakt nejlip udelas, kdyz to do toho verzovaciho systemu vrznes "jak to lezi a bezi" i kdyz je to ho jen kousek a jeste treba ti nedela toco chces, protoze pak si kdokoli jiny muze ten existujici kus stahnout, kouknout na to jak to "zrovna ted" vypada a nemusi tu z tebe pacit, co a proc a jak. A navic si na tom muze udelat i vlastni pokusy a pouzit na to vlastni nastroje (at uz osciloskop, logickou sondu, stahovat ty stranky wgetem a ukladat kazdy refresh do jinak ocislovaneho souboru, nebo si treba projit jak je vlastne implementovany ten print/println v tom tvojem knihovnim objektu a tedy jakym zpusobem to nejlip uchopit (jestli a proc je vhodnejsi tu stranku poslat jako jeden dlouhy retezec, nebo jako par velkych kusu a par promennych, nebo kvuli bufferu to naopak posilat radeji po jednotlivych radcich, ale na konstatni retezce pouzivat radeji write, nez print, protoze (treba) ty retezce nezkousi zbytecne nejak konvetovat a porcovat na mensi casti).

Ze to cele neni hotove a ma to problemy je jasne, jinak by ses tu prece neptal na rady, tim nikoho neurazis, kdyz to priznas, ze to je treba jen fragment taky nevadi, naopak tam treba nekdo objevi nejake vyrazne neobratnosti a zbytek uz budes psat jinym zpusobem, snaz a rychleji. V open source komunite je jedna velice uzitecna zasada "release early, release often", diky ktere se na vyvoji muze podilet rada lidi s ruzne velkym nasazenim a cele to jde rychle kupredu (a proto se take rozeznavaji vyvojove vetve, release-kandidati, releasy, revize a opravy chyb), na rozdil od katedraly, ktera by nejradeji prisla s finalnim produktem jednou za 5 let a mezi tim nic, vsechno drzet pod poklickou az do slavnostniho predstaveni noveho produktu na vhodnem veletrhu.

Ten "cely kod", o kterem David mluvi neni "cela finalni verze s kompletnim ovladanim a dokumentaci", ale naopak "vsechno co zatim mas, at uz je toho jakkoli malo a je to jakkoli kuse" (cili v mem pripade bych zacal tim, ze bych hodil odkaz na repozitar, kde je README a petiradkovy fragment kodu, ktery vypise <HTML><BODY>Maybe it just works</BODY></HTML> a poznamka, ze se mi z nejakeho duvodu nezobrazuje jmeno stranky v liste ve firefoxu a ze jeste musim dopsat zobrazeni promennych :)
daton
Příspěvky: 664
Registrován: 16 bře 2013, 16:12

Re: Pomoc s HTML

Příspěvek od daton »

Ahoj
to je opravdu poučné čtení o přístupu k vývoji programů. Zjevně je daleko více možností vývoje a jeho publikování což je dobře. Zajímavá je ale i cesta vývoje. V příspěvku je naznačeno, že postupuješ od zárodku (jakoby od semínka) dál po jednotlivých větvích a slepé pak rušíš či osekáváš. To je pozoruhodný přístup a umožnuje mít ne zcela přesné určení finálního produktu protože právě při vývoji může dojít ke změně (tím nechci říci že začneš vyvíjet soft pro pračku a skončíš softem pro kavovar) ale je zde variabilita která je výhodná. Naproti tomu já jsem se doposud snažil zastávat koncepci kterou do mne lili na VSB tedy vývojový diagram s nejprve popisem a celým návrhem až ke kodu. A proto že kostra je daná právě ve vývojáku pak největším problémem bývají právě ty výkonné větve které jsem zatím samostatně ověřoval a asi ještě budu. Tento způsob programování tam zastávali do roku 2010 kdy jsem tam skončil a tak se třeba něco změnilo za ty roky to už nevím. Mimochodem taky jsem tam pracoval s open source ale to bylo jen tak mimochodem GIT asi ještě neexistoval a tak nám stačil disk vlastního PC kde se ukládali postuně verze 0.0 až....
Tento postup je méně veřejný to přiznávám a taky nahrává mě (víceméně amatérskému rádobyprogramátorovi) kdy spoustu toho z hlavy prostě napsat neumím. A tak stahnu tamten kod tenhle kod a ještě jiný kod co dělá zhruba to co potřebuji a zkusím ho rozpitvat. Když zjistím jak funguje pak už můžu svoji verzi napsat tak že třeba vyberu ze všech tří to co se mi nejvíce hodí a čemu rozumím jak funguje a tak vznikne větev. No jo už slyším Davida jak si brouká něco o barbarech a i další ale ne všichni mají to programování dané od přírody a nebo ze školy :D . Tímto způsobem se i učím nové věci a třeba o těch serverech je toho dost málo co se týče teorie, která by byla srozumitelná, pochopitelná a hlavně detailní protože ten hrubý popis bývá obvykle všude ale s měnícími se technologiemi se mohou měnit i postupy zpracování i když výsledek je stejný a pro laika neměnný.
No to jen na okraj :-)
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1519
Registrován: 16 úno 2013, 14:26

Re: Pomoc s HTML

Příspěvek od Dex »

Já, jako programátor amatér, se držím strategie "rozděl a panuj". Nejprve si načrtnu, co má být cíl (může se v průběhu i změnit ;)), někdy mi to stačí v hlavě, někdy na papíře, někdy v úvodním komentáři. To pak rozsekám na zdánlivě jednoduché části, které mohu samostatně testovat a ty odladím samostatně. Když jich už mám víc, zkusím je spojit dohromady dle původně načrtnutého cíle. Pochopitelně také držím více verzí, ale o to se mi stará jak domácí Synology, tak fakt, že občas prostě celý adresář zkopíruju a původní nechám být.
Pokud to jde, tak se snažím psát ty menší části tak, abych je mohl v budoucích projektech znovu použít. Kód mám vlastní, cizí a cizovlastní ;)

A pochopitelně komentáře - často udělám jen "obálku" funkce s komentářem, co vlastně bude dělat. Stejně tak si do komentářů schovávám popis konektorů, toho co mám kde zapojené atp.

V neposlední řadě se snažím pojmenovávat vše tak, aby to dávalo smysl. Názvy jako "a", "b" atp. opravdu nemusím.

Tohle ale myslím není nic objevného, spíše naopak.

Proč tě tlačíme do Gitu nebo čehokoliv podobného? Protože pokud máme radit a netrávit fůru času tím, že budeme zjišťovat jak jsi to asi myslel a jak to asi máš, musíme vidět to, co už máš jako celek. Rád poradím, ale nemůžu trávit hodinu zjišťováním toho, co by mělo být jasné na první nebo druhý pohled...

Takže asi tak :)
"all your robots are belong to us"
robodoupe.cz
Uživatelský avatar
gilhad
Příspěvky: 262
Registrován: 29 kvě 2015, 00:36
Kontaktovat uživatele:

Re: Pomoc s HTML

Příspěvek od gilhad »

Me taky ucili strukturovane diagramy a dalsi veci - hrozne fajn, kdyz existuje kompletni a finalni dokumentace a specifikace co ma cely vyrobek delat a jak. Je to hrozne prima, akorat to sezere prisernou spoustu casu a prace, nez se vubec zacne neco delat a vysledek mnohdy neodpovida skutecnym potrebam, ale puvodnimu zadani.

Na druhou stranu kdyz je neco potreba rychle vetsinou nastupuje pruzkum bojem - posbiraji se casti, ktere by mohly pri reseni pomoct a zacnou se skladt do vetsich celku, pricemz se za pochodu resi nejhorsi vzajemne nekompatibility - takzvany fast prototyping - a kdyz to konecne chodi, tak se zjisti jak asi a pokud je cast (a penize a duvod), tak se na zaklade toho vypracuje dokumentace, z ni vyplyne specifikace a pak se to cele postupne ucesava, aby to na ne sedelo, pricemz se v (idealne v kazdem kroku, nebo aspon obcas) delaji testy, zda se opravene reseni chova podle specifikace a zaroven funguje aspon skoro stejne dobre jako puvodni chaoticke. Vyhodou je, ze je tu rychle neco co aspon nejak funguje, rychle se zapracovavaji opominute veci a casem treba dojde i na dokumentaci a mozna i na cisty a udrzovatelny kod, ktery nebude za uplnku vrazdit akvarijni rybicky a pri rovnodennosti explodovat a chyby v nem bude mozno eventualne i opravit a casem jejich vyskyt snizit na unosne mnozstvi.

V praxi se stejne tak nejak laviruje mezi obema pristupy.

Vyhodou GITu je, ze mu je to uplne fuk, on jen uchovava verze toho, co clovek udelal a vztahy mezi nima.

Takze neni problem jit zdola, zkusit nejakou cestu, kdyz se neosvedci, tak se vratit a zkusit jinou, nebo rovnou jit nekolika cestami naraz a casem z nich vybrat to nejlepsi, nebo aspon pouzitelne.

Stejne tak neni problem jit zhora, nejdriv vypracovat ramcovou, pak dilci, pak podrobnou specifikaci a nasledne vytvaret jednotlive moduly a testovat na shodu se zadanim.

Nebo cokoli mezi tim.

Adresare netreba kopirovat, protoze o to se stara GIT pomoci vetvi (branchu) a umoznuje se snadno vratit v case a vyrazit jinudy a nasledne vsechny tyto odbocky celkem prehledne zobrazit.

Navic (diky bisekci) velice elegantne resi to, kdyz se najednou zjisti, ze neco co kdysi fungovalo ted nefunguje. Na par prikazu postupne predhazuje jednotlive varianty, clovek to prelozi a zkusi, zda chyba je, ci neni a vysledek mu rekne. Pulenim intervalu velice rychle najdeme misto, pred kterym to naposled fungovalo a po kterem uz to nefunguje a prislusnou sadu zmen, ktera nejak tu nefunkcnost zpusobila. Nacez se ta sada da opravit tak, aby to zas fungovalo a bud to zpetne zpropagovat (predstirat, ze jsme tehdy tu chybu neudelali), nebo opravit jen vysledek (pokud je to davna historie a prilis mnoho zmen a oprava by stejne mela byt delana jinak).

A hlavne umoznuje toto delat nezavisle vic lidem naraz a pripadne reseni predlozit zase ve tvaru zmen, ktere se daji aplikovat na puvodni kod (Pull Reguest), at uz plne, nebo z nich vybrat jen nektere, nebo se tim jen nechat inspirovat a udelat to jeste jinak a lip.

Takze kdyz sve chaoticke polo-reseni nahrnes do pristupneho verzovaciho systemu, tak ostatni to muzou pomoct opravit snadno a hlavne si samio dohledat, co je kde a jak a nemuset se spolehat na tvuj odhad, jak tazatel myslel otazku a cekat az odpovis tim, co si ty myslis, ze by tazatele mohlo zajimat.

A tazatel si muze se svou variantou pohraty, zkusit, co to udela, kdyz. A az je s ni spokojeny, tak ti ji predlozi k posouzeni a ty si sam vyberes zajimava mista (nebo prevezmes vse) a hlavne si muzes jeho variantu snadno zkusit, aniz by sis rozbil svuj kod, ktery se mezi tim zacal ubirat nekam jinam.


Takze ty si klidne budes postupovat od sveho navrhu a zkouseni jednotlivych cizich casti kodu, zda ti do nej pasuji a jak a ktere jsou nejlepsi a ja zatim muzu vzit co zrovna mas (a nefunguje), kouknout na par veci, odstranit tu jednu chybu a nabidnout ti ke stazeni kus kodu, ktery uz pouziva tebou zavedena jmena a struktury, nejspis resi prave ten jeden problem, ktery zrovna mas a dobre do tve skladacky zapadne. Rozhodne lip, nez neco stazeneho buhvi odkud, co resi neco vdalene podobneho tvemu problemu za zcela jinych okrajovych podminek a pro zcela jinou pocatecni analyzu.

Protoze aby to pro tebe melo cenu odnekud stahovat, tak to musi byt svym zpusobem uceleny program/funce/modul, ktery si uz dela vse po svem, zatimco pri tomto zpusobu spoluprace vlastne stahujes jen modul, ktery uz tam mas, az na to, ze (treba) v 10 radcich pouziva ten print trosku jinym zpusobem, ale jinak v nem nic prepisovat nemusis, i jmena promennych a kod stranky ti jsou velice dobre povedome, protoze pochazeji od tebe.
Uživatelský avatar
Dex
Administrátor
Příspěvky: 1519
Registrován: 16 úno 2013, 14:26

Re: Pomoc s HTML

Příspěvek od Dex »

S Gitem může být jediný problém, že pro začátečníka může být trochu složitý a nepřehledný. O tom to ale není respektive nemělo by být ;)

Taky je fakt, že každý máme trochu jiný styl práce (obecně), který nám sedí. Já jsem vyloženě takový ten opatrný analyticky prozkoumávající typ, který dlouho plánuje, ale pak o něco rychleji realizuje. Skoro jako dvakrát měř, jednou řež/š :D
"all your robots are belong to us"
robodoupe.cz
Odpovědět