Hirdetés
- Akciófigyelő - Epic Store ajándékozás 7. nap: Control
- Akciófigyelő - Epic Store ajándékozás 6. nap: Dredge
- 2024 - Békés, boldog karácsonyt kívánunk minden olvasónknak!
- Akciófigyelő - Epic Store ajándékozás Dark and Darker: Legendary Status
- Jövőre érkezik az új Agatha Christie: Death on the Nile játék
-
GAMEPOD.hu
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
K1nG HuNp
őstag
Ha letiltod a javascriptet a bongeszodben akkor az SPA-k konkretan meghalnak mig a next es gatsby mukodik + nem index.html lesz az eredmeny, nezd meg a bongeszod network tabjen, egyenkent cachelheto kulonallo html fajljaid vannak, pont mintha kezzel irtad volna oket.
Tultargyaltuk
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
bandi0000
nagyúr
Nem tudtok ajánlani valami jó és egyszerű Text editort?
Kb annyi és olyan elem kellene mint itt a ph-n, viszont nem bootstrap alapú, mert Angular Materialt használom
Korábban martonx ajánlotta a CkEditor-t, de kicsit overkillnek érzem ehhez a projekthez,plusz elég sokat bogarászok mire megtalálom hogy kell 1-1 beállítást megcsinálni
[ Szerkesztve ]
Xbox One: bandymnc
-
K1nG HuNp
őstag
En azt tartom SPA-nak aminek egy index.js endpointja van es semmi mas A fentebb leirtaknak nem egy van.
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
Zedz
addikt
válasz K1nG HuNp #7794 üzenetére
lesz meno JS routered amiel weblap ujratoltes nelkul tudsz maszkalni az nem azt jelenit hogy SPA lenne az oldalad
Dehogynem, attol lesz SPA, hogy egy "shellben" folyamatosan csereled a tartalmat, dinamikusan, ujratoltes nelkul. Az, hogy ez a cucc most CSR vagy SSR, az mindegy. -
K1nG HuNp
őstag
Nem lesz SPA, az SPA-kban a routingot a React oldja meg, a Next.js es Gatsby eseteben kulon fajlod van minden pathodra.
Pl: SPAnal a weboldal.hu/asd eleresehez le kell jonnie a teljes hobelebancnak mire beroffen a router es atrak a /asdra.
Az gatsbynal van alapbol fajlod a /asd endpointra amit egybol tudsz lekuldeni, nextnel is same, esetleg ha SSR-t valasztottal akkor varni kell meg a szerver megcsinalja es lekuldi
Az hogy hidratalas utan lesz meno JS routered amiel weblap ujratoltes nelkul tudsz maszkalni az nem azt jelenit hogy SPA lenne az oldalad, az a React velejaroja
[ Szerkesztve ]
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
K1nG HuNp
őstag
Ezt miota hazakuldtek Pestrol korona miatt es szar a netem hatvanyozottan ateltem:
Egy weboldalnak nem kellene masodpercekig full page loadereket a kepedbe tolnia. Elkepesztoen rosszak a First Meaningful Paint es Time to Interactive szamok az osszes SPA-nal.
Szandekosan irtam, weboldalt, a webappoknak termeszetesen nagyon nincs mas lehetoseguk, ott szukseg van a teljes js bundlera elso megjelenites elott, bar a PWA ott is eleg jo megoldast kinal, lasd: twitter.
Maradva a CRA-nal: miert szednel le olyan JS kodot ami olyan aloldalhoz tartozik amit lehet sosem latogatsz meg, es teszed ezt minden oldallekeres soran?
A Gatsby es a Next is ezt ugy kuszoboli ki, hogy egyreszt aloldalankent code splittel, masreszt az alapvetes a statikus html kesobbi rehidratalasa reactel, azaz lemegy az usernek a skeleton, a time to first byte teljesen megegyezik azzal mintha semmi JS kod nem lenne az oldalon, majd amint vege a rehidratalasnak ott vagy egy teljes Reactel
tisztazva:
Server Side Rendering: http keresre a szerver on-demand legeneralja a html-t es lekuldni.
Static Site Generation: build idoben, azaz otthon a te gepeden lefut a react statikus html, js, css fajlokba exportalas es ezt te csak felrakod CDNre.Mindket esetben ugyan az a vegeredmeny, eloszor egy html filet kapsz jobb esetben beinjektalt critical css-el, ez valszeg ki is teszi az elso TCP kort, es csak kesobb kapod meg a JS kodod ami megint legelso korben rehidratal.
[ Szerkesztve ]
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
martonx
veterán
válasz K1nG HuNp #7789 üzenetére
"es volt valami elegancia abban hogy felpakolsz egy php filet ftpre es fut es atom gyors 123kB js nelkul is" - a PHP előnyei kb. itt meg is állnak
Amúgy meg a server side rendering mindig is nagyságrendekkel gyorsabb volt, nem véletlenül erőltetik majdnem mindenhol az SSR-t.Én kérek elnézést!
-
K1nG HuNp
őstag
én
let
-es vagyok, kevesebb karakter :pRemélem tetszenek kattingatni a Next.js-t, eleg durva dolgok jottek most
En most greenlightot kaptam cegnel, hogy osszedobjak egy alap projektet, amivel levaltanam a mostani korosodo boilerplatet ami meg jQuerys alapokon nyugszik mivel rajottunk, hogy mire behuzzuk a jQueryt es azt a par libet ami meg kell ugyan ott van a JS footprintunk mintha egy reactet tolnank, cserebe kezzel kell forditani a css-t es picit kaka a dev experience.
Annak nagyon orultem pl, hogy kezd leesni embereknek, hogy az SPA szar UX.
Kb jottunk egy teljes kort, en pl sosem irtam phpt de onboarding hetemen abban kellett site buildelnem, es volt valami elegancia abban hogy felpakolsz egy php filet ftpre es fut es atom gyors 123kB js nelkul isCRA-t pl mar ne hasznaljon senki, aki arra vetemedne, hogy mostanaban Reactozik, es mostmar a Gatsbyba is szerintem felesleges sok idot foccolni, tud mindent a Next 9.3 ota, kissebb bundlesizeval, kb 0 proprietary dologgal es tobb lehetoseggel.
[ Szerkesztve ]
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
disy68
aktív tag
Annyit hozzátennék, hogy az Object.freeze() is csak az adott object-re vonatkozik, ha van neki más object adattagja, ami mutable az az is marad. Teljes immutability-hez minden adattagon végig kell menni és az összes objectet freeze-elni.
Fiddle“Yeah, well, you know, that’s just, like, your opinion, man.” — The Dude
-
disy68
aktív tag
-
K1nG HuNp
őstag
visszaterve picit meg a let es const reszelgetesre: a constot is teljesen feleslegesen hasznaljak az emberek az egyetlen hely ahol azt fogja csinalni a const mint amire szamitasz mas nyelvekbol az a
const SOME_VALUE = 12;
aconst obj = {};
pontosan ugyan ugy modositgathato mint a let-es baratja, cserebe jo megteveszto[ Szerkesztve ]
(raw_item.get("pk").unwrap().as_s().unwrap().to_string()).split("#").collect::<Vec<&str>>()[1].to_string()
-
Aureal
senior tag
Egy [object HTMLEmbedElement] tartalmát hogy tudom js-ben lekérni, ha szöveget tartalmaz?
-
Tomi_78
aktív tag
válasz martonx #7773 üzenetére
Szia!
1. Ahogy én tudom (nem régóta és meglehet, rosszul), a különbség a let és a var között (e kettő alapján néztem utána) az, hogy a var egy blokkon belül érvényes, tehát ugyanolyan változó már nem lehet azon belül, míg a let esetében ilyen megkötés nincsen.
2. Megcsináltam most az általad ajánlott megoldás alapján; az én gépemen jól működik, tehát remélem, mindenhol így lesz. Csak azt nem értem, hogy a startTime változóra mi szükség van, hiszen azon kívül, hogy egyszer értéket kap, nem használatos?
Tehát itt a kód a játékomból:var fps, jateksebessege, startTime, most, akkor, eltelt;
// initialize the timer variables and start the animation
startAnimating(120);
function startAnimating(fps) {
jateksebessege = 1000 / fps;
akkor = Date.now();
startTime = akkor;
jatekciklus();
};
function jatekciklus() {
requestAnimationFrame(jatekciklus);
most = Date.now();
eltelt = most - akkor;
if (eltelt > jateksebessege) {
akkor = most - (eltelt % jateksebessege);
//...a program többi, rajzoló része...
-
martonx
veterán
válasz Tomi_78 #7772 üzenetére
Két dolog:
1. tanuljuk már meg végre, hogy mi a különbség a let és const között ez a halálom, amikor valaki a legalapabb dolgot is fogalmatlanul használja.
2. nekem ez a megoldás sokkal szimpatikusabb: https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe minden olyan megoldástól a hideg kiráz, ami animációval kapcsolatos és settimeout / setinterval van benne. Ezt a megoldás még kombinálnám annyival, hogy magát az animációt kiszervezném egy külön worker thread-be, mert ezekben az esetekben az a gond, hogy ha komplex az animáció / nagyon gyenge a futtató vas, akkor lehet, hogy több frame-et is át fogsz lépni, mint eredetileg tervezted.Én kérek elnézést!
-
Tomi_78
aktív tag
Sziasztok ismét!
Módosítottam a játékom kódján egy kicsit, hogy - elvileg - minden számítógépen azonos sebességgel fusson, bár ezt még most nem tudom leellenőrizni, mivel pillanatnyilag nem vagyok ama "gyorsabb de a játékot lassabban futtató" gép közelében.
Ezért közzétenném itt a kódom ezt végző részét, hogy megnézhessétek és meg tudjátok mondani, hogy jó-e , ahogy csináltam.
Szóval szerintetek jó ez így? Az én gépemen simán fut. Akkor elvileg minden képfrissítési frekvencián jól működne?let jateksebessege = 100;
function jatekciklus() {
setTimeout(function() {
requestAnimationFrame(jatekciklus);
//a játékom fő kódja a rajzolással, stb.
}, 1000 / jateksebessege);
};
requestAnimationFrame(jatekciklus);
Egyébként innen puskáztam ki:
https://www.kirupa.com/html5/animating_with_requestAnimationFrame.htm
és annyit kellett átalakítanom rajta, hogy fentebb az utolsó sorba is be kellett szúrnom a requestAnimationFrame()-et, mert különben csak nagy fehérséget mutatott valamiért.
-
bandi0000
nagyúr
válasz bandi0000 #7767 üzenetére
Na igazából rájöttem, maradjon itt az utókornak + nekemi is, ha elfelejtem
Tök jól meg van oldva, mert bármelyik componensből be lehet zárni a dialogot, csak el kell kérni a referenciáját a dialognak
private dialogRef: MatDialogRef<AccountModalComponent>
ürüm az ürümben, hogyha meghívom a dialofRef.close() metódust, akkor bármit vissza lehet adni benne, annak a komponensnek, amelyik megnyitotta a dialogot
Xbox One: bandymnc
-
petyus_
senior tag
válasz bandi0000 #7767 üzenetére
Ha az a cél, hogy a regisztrált felhasználó egyből be is legyen léptetve, akkor az API-d register action-je akár vissza is küldheti egyből a tokent (nem tudom, hogy oldod meg a logint, gondolom jwt-vel, azt visszaadhatja a register method is), de ez csak egy tipp így hirtelen, működni működik, de nem tudom hogy szokták ezt megoldani.
[ Szerkesztve ]
-
bandi0000
nagyúr
Szerintetek Angularba "komoly" appban mennyire állja meg a helyét az olyan megoldás, hogy egymásba ágyazom a regisztrációt és a beléptetést is
Ugye, úgy néz ki a dolog, hogy van egy dialog componemsem, abban pedig selectorral illesztem be a regisztráció vagy a bejelentkezés form komponensét
És most vettem észre, hogy visszafele nem tudok kommunikálni, tehát ha regisztrál a user, akkor se nem tudom átváltani a felületet login-re, és se nem tudok visszafele adni adatot
Így 1.0 verzióban azt csináltam, hogy egymásba ágyaztam a regisztrációnál a 2 service hívást, sikeres regisztráció után meghívja a beléptetést, de ez így elég hoki megoldásnak tűnik, pláne, hogy hibát se tudok kezelni, bár elvileg nem is lehetne, mert a regisztrációs adatokat használja beléptetésnél ism de akkor is
2.0 refatorba arra gondoltam, hogy akkor 1 dialog lenne és benne 2 divvel belerakva mindkét form, nyilván *ngIf-el elválasztva, és így talán normálisabban lehetne megoldani, de még ez se tűnik annyira jónak
Bocs a sok apró kérdésért, de végre egy viszonylag "normálisabb" dolgot akarok összerakni, és tapasztalat híján nem tudom mik a best practice-k
(#7766) petyus_ : Na akkor ezt majd megnézem egy kis refactorral köszönöm
[ Szerkesztve ]
Xbox One: bandymnc
-
petyus_
senior tag
válasz bandi0000 #7765 üzenetére
Ezeket a mat-error alapból figyeli, required-öt is pl csak akkor írja ki, ha rámész az input mezőre, és kijössz belőle, tehát ha rákattintasz, de még nem írtál bele, akkor ki sem írja, csak ha úgy hagyod el, hogy üresen hagytad, vagy írtál bele, de visszatörölted.
"Errors are hidden initially and will be displayed on invalid form fields after the user has interacted with the element" - ezért, ha csak egy error-message van a fieldhez, akkor nem is kell neked foglalkozni az ngIf-ekkel, csak ha több van, és akkor is elég, ha csak az adott error-t teszed az ngIf-be
[ Szerkesztve ]
-
petyus_
senior tag
válasz bandi0000 #7762 üzenetére
Kipróbáltam most a te validátorodat, és nekem jól működik.
Így néz ki a html:
<mat-form-field class="w-100">
<mat-label>Name</mat-label>
<input type="text" id="name" formControlName="name" matInput placeholder="Enter category name" />
<mat-error *ngIf="name.hasError('required')">Name is required.</mat-error>
<mat-error *ngIf="name.hasError('minlength')">Name must be at least 3 characters.</mat-error>
<mat-error *ngIf="name.hasError('containUpperCase')">Must conatin uppercase</mat-error>
</mat-form-field>
És a ts-ben annyit csináltam, hogy beleraktam a te functionödet, meg hozzáadtam a formcontrolhoz:
name: new FormControl('', [Validators.required, Validators.minLength(3), this.containUpperCase]),
Így üresen, és 3 karakter alatt csak a minlength hibát írja, containUpperCase-t meg utána (átneveztem containDigit-ről ).
A name az egy sima getter, vissza adja a 'this.form.control.name'-et, így átláthatódd a html.
[ Szerkesztve ]
-
bucihost
senior tag
válasz martonx #7760 üzenetére
Patika!
Annyi, hogy az image.style.display = ''; és image.style.display = 'none'; -t fel kellett cserélni, valamint .addEventListener('keyup', event => { helyett document.addEventListener('keyup', event => { lett, mert amugy beintegrálva Cannot read property 'addEventListener' of null hibát dobott. Már tökéletesen működik a chaten is. Köszönöm szépen
-
bandi0000
nagyúr
válasz petyus_ #7761 üzenetére
Az igazából ennyi:
export function containDigit(control: AbstractControl): { [key: string]: boolean } | null {
if(control.errors?.required || control.errors?.minlength || control.errors?.maxlength){return null; }
if (!/[A-Z]/.test(control.value) && environment.passwordContainDigit) {return {
'containUpperCase': true }
}
return null;}
Akkor ír ki 2 hibaüzenetet amikor belekattintottam a mezőbe, de nem írtam semmit, nyilván olyankor required-re is lő, meg erre is, ezért próbálkoztam az első if-ben, megnézni, hogyha van már a required-re hiba, akkor ne is nézze ezt
[ Szerkesztve ]
Xbox One: bandymnc
-
petyus_
senior tag
válasz bandi0000 #7759 üzenetére
Nemrég kezdtem el használni a materialt, tehát nem 100%, hogy én tudom jól, de "mat-error"-ból lehet több, abba kell belerakni az error-message-eket (szerkesztettem az előzőt, raktam be egy saját kódot).
Viszont itt most a ts file kéne, ahol megírtad a custom validatort.
Egyébként pl a minlength így van megírva:static minLength(minLength: number): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => {
if (isEmptyInputValue(control.value)) {
return null; // don't validate empty values to allow optional controls
}
const length: number = control.value ? control.value.length : 0;
return length < minLength ?
{'minlength': {'requiredLength': minLength, 'actualLength': length}} :
null;
};
}isEmpty ennyit csinál:
return value == null || value.length === 0;
-
martonx
veterán
-
bandi0000
nagyúr
válasz petyus_ #7758 üzenetére
Igazából [ennyi]
egyenlőre még hunglish de majd többnyelvűsítés a cél, igazából a gyári validatoroknál le van valahogy kezelve ez szerintem, mert pl egy üres mezőre nem írja ki, hogy kötelező, és email formátumnak meg kell felelnieDe akkor majd utánanézek, hogy lehet ezt normálisan kezelni
Xbox One: bandymnc
-
petyus_
senior tag
válasz bandi0000 #7747 üzenetére
Ha mutatsz kódot, kicsit könnyebb lenne. Írtad, hogy Materialt használsz, ott ha több hibaüzenet is van, akkor neked kell kezelned, hogy melyik mikor jelenjen meg, alapból csak annyit néz, hogy dirty || touched, és ha van hiba, akkor megjeleníti (ha több hiba van, akkor mindet). Neked megírnod mindegyik hibára, hogy melyik mikor jelenjen meg.
Illetve, ha már dirty || touched, és ezért mutatja a required hibát, akkor egyértelmű, hogy mutatja a "nincs e betű" hibát, mert ha üres, akkor nincs e betű .
Nekem pl van egy ilyenem:
<mat-form-field>
<mat-label>Name</mat-label>
<input type="text" id="name" formControlName="name" matInput />
<mat-error *ngIf="accountName.hasError('required')">Account name is required</mat-error>
<mat-error *ngIf="accountName.hasError('minlength')">Account name must be at least 3 characters</mat-error>
</mat-form-field>Itt a required akkor jelenik meg, ha dirty || touched, a minlength-es pedig akkor, ha 1 vagy 2 karakter van beírva, de ez a gyári minlength, itt megvan írva ez a viselkedés.
[ Szerkesztve ]
-
-
cattus
addikt
válasz bandi0000 #7753 üzenetére
FxLayout esetében van olyan, hogy megadod, hogy egyes méretekben hogy viselkedjen. Pl.
<div fxLayout="row" fxLayout.xs="column"></div>
esetén xs méret esetén column, felette row elrendezést használ. Így maradhat a 100% is. Van még gt-xs meg lt-xs is (meg persze a többi méretre is).Do the thing!
-
bandi0000
nagyúr
válasz bandi0000 #7747 üzenetére
+ egy kis Responsive ötlet is jól jönne
Szintén Angular material, + Angular Flex-Layout
Ötlet az az, hogy angularba nyitok egy dialogot a bejelentkezés és regisztrációhoz, viszont úgy szeretném megoldani a kettő közti váltást, hogy a dialogon belül 2 db gomb lenne, egymás mellett, amik egyenként elfoglalják a szélesség 50-50%-át, viszont a legkisebb állapotában minden vezérlő egymás alá kerülne
Nagyrészt ezek meg is vannak, csak az első fejtörést az okozza, hogy a dialognak kellene egyáltalán adni szélességet? mert ugye elvileg felveszi a tartalomnak a szélességét
A másik dolog, hogy ahogy összehúzom a böngészőt, a beviteli mezők szépen egymás alá kerülnek, viszont a gombok nem, ez azért lehet mert megadtam nekik, hogy 100% legyen a szélességük, ha viszont ezt kiveszem, akkor meg nem töltik ki a helyet
(beviteli mezők külön komponensben vannak, azokat alul szúrom be)<div fxLayout="column">
<div fxLayout="row" fxLayoutAlign="end">
<button mat-button (click)="closeDialog()">
<i class="material-icons">close</i>
</button>
</div>
<div fxLayout="row">
<div fxFlex="100">
<button mat-button (click)="isLoginActive= true"
[class.btn--disable]="isLoginActive"
class="full-width no-shape">Login</button>
<button mat-button (click)="isLoginActive= false"
[class.btn--disable]="!isLoginActive"
class="full-width no-shape">Registration</button>
</div>
</div>
</div>
<div *ngIf="isLoginActive">
<app-login></app-login>
</div>
<div *ngIf="!isLoginActive">
<app-registration></app-registration>
</div>
[ Szerkesztve ]
Xbox One: bandymnc
-
martonx
veterán
válasz bucihost #7751 üzenetére
Az a sor semmit nem csinál, picit megformázva: https://jsfiddle.net/8yvxuk6n/
[ Szerkesztve ]
Én kérek elnézést!
-
bucihost
senior tag
válasz martonx #7750 üzenetére
[link] itt a teljes neten lelt kód.
Van egy chat, ami js alapú. Annak a smiley listájába szeretném beintegrálni, de jelen formában nem nyeli be. Ott a chat agya egy 2000 soros JS file.
A fenti kódban amúgy 1 dolgot nem értek. $(".name").hide(); "name" class nem létezik, akkor mit rejtene el?
-
cattus
addikt
válasz bucihost #7748 üzenetére
Ilyen automatizált megoldás szerintem nincs, de itt le van írva pár dolog, meg ha 13 sor, szerintem ide is bedobhatod.
Amúgy csak egy megjegyzés, hogy a jQuery is JavaScript (pontosabban egy JS-ben írt library), gondolom itt te a DOM API-ra gondolsz, hogy ne kelljen a teljes jQuery-t behúzni.
[ Szerkesztve ]
Do the thing!
-
bucihost
senior tag
Sziasztok!
Létezik bármilyen konverter, amivel jQuery-ből JavaScript-et tudnék varázsolni?
Van egy 13soros jQuery, amit szeretnék használni JS-ben. -
bandi0000
nagyúr
Bekérdezek ide, hátha valaki találkozott hasonlóval
Angular 9
Reactive formot használok, meg materialt
Használok egy pár beépített validátort, meg egy sajátot a jelszóra
A gond ott van, hogy minden hibát egyszer ír ki, tehát először csak a required-re lő, aztán ha van benne valami, akkor kiírja, hogy rövid a jelszó stb, de ha használom a saját validátoromat , ami azt nézi, hogy van e benne nagybetű, akkor kiírja a hibát akkor is, amikor üres a beviteli mező, és akkor 2 hibát ír ki a required-re, meg a saját validációmra
Ezt nem tudom, hogyan kellene megoldani, azt próbáltam már, hogy a custom validatorba megvizsgálom, hogy van e benne hiba, és a hibák között nincs az, amire éppen létrahoztam a custom validatort, de ígyis ugyan ezt csinálta
Legrosszabb esetben használok pattern-t, de azért szebb lenne emígy megoldani
Xbox One: bandymnc
-
Rickeffe
aktív tag
válasz Tomi_78 #7745 üzenetére
https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
The number of callbacks is usually 60 times per second, but will generally match the display refresh rate in most web browsers as per W3C recommendation.Böngészőtöl függ.
Először végeznék egy mérést ami megadja az aktuális kb fps-t. Aztán ahhoz viszonyítanék.Rickeffe
-
martonx
veterán
válasz Tomi_78 #7741 üzenetére
a requestAnimation frame a képernyőfrissítéshez igazodik, nem a gép sebességéhez. Simán lehet, hogy a te gyengébb gépednek 120Hz-es kijelzője van, a másik erősebb gépnek meg 60Hz-es. Ebben az esetben nálad 120fps-t fog eredményezni a requestAnimationFrame, a másik gépen meg 60fps-t.
A SetInterval felejtős, teljesen megbízhatatlan.
requestAnimationframe-nél így tudod fixálni az fps-t, hogy mindenhol azonos sebességet adjon: https://stackoverflow.com/questions/19764018/controlling-fps-with-requestanimationframe
Nyilván fixálni csak lefelé tudod, azaz 60fps-től lefelé.Én kérek elnézést!
-
Rickeffe
aktív tag
válasz sztanozs #7742 üzenetére
Szerintem ez így ebben a formában nem teljesen igaz.
Ha egységnyi elmozdulás van framenként és a másik gépen a böngésző nem ugyanazt az fps-t adja akkor nem fog egyezni a "sebesség", viszont a tickekek pontosak. Az fps-t viszont a böngésző adja meg, de nem a ram mennyiség alapján ha jól tudom.
tomi_78
https://stackoverflow.com/questions/46852857/how-to-time-requestanimationframe-independent-of-refreshrates[ Szerkesztve ]
Rickeffe
-
sztanozs
veterán
válasz Tomi_78 #7741 üzenetére
Szia!
A requestAnimationFrame lényege, hogy mindenhol ugyanolyan sebességgel fusson. Az, hogy ott lassabban futott vsz csak valami lokális ok miatt lehetett (pl sok tab, máshol is használta valami aktívan a grafikus drivert, vagy valami egyéb). Az is lehet, hogy nem volt lassabb, csak voltak olyan dolgok, ami miatt más volt a limitáló és amiatt tűnt lassabbnak.
írasd ki a képernyő szélére az fps-t, és látni fogod, hogy tényleg lassabb-e.JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Tomi_78
aktív tag
Sziasztok!
Korábban már kérdezősködtem itt párszor, pl. a játékok sebességét illetően, és ajánlották itt nekem a SetInterval() helyett a requestAnimationFrame() függvény használatát.
Azóta használom is ezt, hiszen az én 4 GB RAM-mal és kb. 3 GHz-es CPU-val rendelkező számítógépemen jól és simán futnak a javascriptes játékaim.
Viszont most kipróbáltam egyiket egy, az enyémnél lényegesen erősebb és gyorsabb számítógépen (pl. 8 GB RAM van benne, tehát kétszerese az enyémnek) és elhűlve tapasztaltam, hogy a játékom lassabban fut, mint a saját gépemen. Pedig egy gagyi kis Pong-szerű, labdapattogtatós játékról van szó.
Miért van ilyen sebességbeli különbség, ráadásul a gyengébb gép javára? És hogyan lehetne megoldani, hogy mindenütt egyforma sebességgel fusson? -
Sziasztok,
Ehhez hasonló filterező scriptet tudtok ajánlani?tablefilter
A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
RedHarlow
aktív tag
Közben én is találtam rá megoldást: Link!
De köszönöm a segítséget!
-
Jim-Y
veterán
-
whYz
őstag
válasz RedHarlow #7735 üzenetére
Eleg gany modon jon az adatod, de ha jol ertem akkor valahogy igy kellene kineznie az eredeti adatnak. Ezzel mar tudsz valamit kezdeni...
-
RedHarlow
aktív tag
Sajnos nem férek hozzá az adatokhoz csak így ebben a formában, egy weboldalon mint felhasználó. A feladatom ezen adatok kimásolgatása egyesével, ezt szeretném gyorsítani egy chrome extensionnel, ami szépen kiszedi az adatokat nekem úgy ahogy nekem arra szükségem van mivel napi szintű feladat.
[ Szerkesztve ]
-
rikxjeee
tag
Lehet, hogy hülye kérdés, de ezek az adatok honnan jönnek? Miért így?
-
RedHarlow
aktív tag
Kész is: Link!
Szóval azt szeretném ha a permission tömböbe már csak a jogosultságok kerülnének, és úgy, hogy a telephely és azonosító sorokat összevonja.
var permissions = ['AAAA', 'Kiss Tamás', 'Jogosultság', 'Budapest', '40000'];
[ Szerkesztve ]
-
RedHarlow
aktív tag
válasz sztanozs #7729 üzenetére
0 = ID.
2 = Type.Az a lényeg, hogy a weboldalon a jogosultság igények 4 sort kapnak mivel az igénylés beadásakor 4 db speciális mezőt tölthet ki az igénylő. Ebből számomra minden esetben 2 mezőnyi adatra van szükségem, x-re és y-ra.
Példa:
A telefonszámra és mailre nincs szükségem.
Ezekből szeretnék 1 sort csinálni valahogy így:
result = [AAAA, Kiss Tamás, Jogosultság, Budapest, 40000]
[ Szerkesztve ]
-
sztanozs
veterán
válasz RedHarlow #7728 üzenetére
Ne haragudj, de nem értem mit szeretnél. Milyen 0-nak és 2-nek kell egyeznie?
Miért nem jó a második tömbben a 3. és 4. sor?
Mit jelent neked az, hogy 3 = x || y?JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
RedHarlow
aktív tag
Sziasztok,
A segítségetek szeretném kérni kiszedni egy 2 dimenziós tömbből pár adatot az alábbiak szerint egy új tömbbe..
original =
['AAAA','B','C','x','2'],
['AAAA','B','C','y','4'],
['AAAA','B','C','z','null'],
['AAAA','B','C','v','null'],
['BABA','D','W','S','null'],
['WWWW','S','A','Q','null'];0-nak és 2-nek egyeznie kell minden sorban, hogy használjuk a továbbiakban.
['AAAA','B','C','x','2'],
['AAAA','B','C','y','4'],
['AAAA','B','C','z','null'],
['AAAA','B','C','v','null'],Valójában azon két sor utolsó adatára van szükségünk ahol 3 = x || y.
result = ['AAAA','B','C','2','4'];
[ Szerkesztve ]
-
-
addikt
-
whYz
őstag
válasz instantwater #7722 üzenetére
Ja csakhogy az isMarkerInBounds_-t en is hasznalom es az nem oldja meg a problemat, mivel a legfelso zoom levelen igyis ugyis ki kell szamolni az osszes groupot es a tobbi level se sokkal jobb. Igazabol csak egy kis optimalizalas kellett, hogy tul tudjon lendulni az utolso par for loopon es az ossze is jott. Egyedul a meridiannal nem tokeletesek a groupok, de ez belefer. Egyebkent ujabban ezt hasznalom ugyanerre a celra es elkepeszto amit elasticcel ki lehet belole hozni.
-
whYz
őstag
Sikerult megoldani a problemat. Ha valakit erdekel akkor ugy csinaltam, hogy minden egyes groupot a hozza tartozo latitude/longitude racshoz rendelem, igy ha ellenorzunk egy uj pontot akkor csak az ahhoz tartozo racsban levo groupokat kell ellenoriznem az egesz terkep helyett. Ezzel az eddigi par napos terkep feldolgozasi ido lecsokkent masodpercekre. Erdekes, hogy a google-nal nem gondoltak valami ilyen megoldasra...
-
T J
tag
válasz bucihost #7716 üzenetére
css-es válasz:
a sticky-s elem csak addig marad a helyén, amíg az őt tartalmazó div határa el nem éri, mert az kitolja a képből.
És egyetlen parent div sem lehetoverflow:hidden
.
http://dinbror.dk/blog/help-css-position-sticky-doesnt-work-solved/ -
addikt
-
bucihost
senior tag
válasz instantwater #7717 üzenetére
Lehet félreérthető voltam. A kérdés afelé írányult volna, hogy css vonalon próbálkozzak vagy van valami JS-es okosság a megoldásra?
-
addikt
-
bucihost
senior tag
Sziasztok! Adott egy chat alkalmazás ami php, mysql, ajax, js en alapszik. Az "agya" egy 2000+ soros JS. Ezt a chatet már lassan 2 éve toldozgatom, foltozgatom, új funkciókat raktam bele. Viszont most elakadtam.
Adott ez a rész: https://pastebin.com/HphUVspj
Gombnyomásra ellenörzi, hogy létezik e az ablak. Ha nem akkor a 2.sor szerint megcsinálja, 6.sortól kezdődően pedig feltölti content-tel.
Működik is, minden tuti.
Viszont: A gombok divet hiába rakom sticky.-re nem marad az ablak tetején görgetéskor (<div id="gombok" class="gombok" style="position:-webkit-sticky; position:sticky; top:0;">
) Nem igazán foglalkozik vele. Minden más egyéb formázást benyel és kezel. Valamit rosszul csinálok, vagy engedjem el mert ilyet nem fogok tudni megvalosítani? Az a baj semennyire nem vagyok otthon JS-ben. Ezzel a chattel is csak hobbi szinten foglalkozok, a toldozás / foltozás megvalósítását is google barátom segítségével valósítom meg.
Kép: -
addikt
-
whYz
őstag
Szia
Koszi a valaszt, de ha jol latom a marker clustering pont ugyanazt a logikat hasznalja mint az en kodom, szoval nem sokat segit a helyzeten. A dolog mukodik kis mennyisegu ponttal, de en akkora mennyisegu adatot probalok feldolgozni, hogy azt mar nem birja.
A 2 for loop itt talalhato az 1114 es 1047-es soroknal.
-
Csepe
aktív tag
A Marker clustering nem jó erre, vagy nem erre gondolsz?
Nihil Novi Sub Sole /::\ https://bit.ly/2R7gwB2
-
whYz
őstag
Sziasztok
Szeretnem google maps segitsegevel a kozeli pontokat osszecsoportositani. Ehhez egy nested for loopot hasznalok. A gond ott kezdodik, hogy a masodik for loop folyamatosan novekszik es egy ido utan akkora mennyisegu lesz, hogy soha nem lesz vege, 1 szalon futtatom es 5+ gigabyte mennyisegu ramot eszik.
for(var pinKey in this.pinLocations)
{
for(var newPinKey in groupedLocations)
{
dist = this.getDistanceBetweenTwoLatLongs(this.pinLocations[pinKey].LL, groupedLocations[newPinKey].LL);
if(dist <= 3)
{
// A ket pont eleg kozel van, szoval hozzaadjuk a pint ehhez a grouphoz
groupedLocations[newPinKey].A = groupedLocations[newPinKey].A.concat(this.pinLocations[pinKey].A);
break;
}
}
if(dist > 3)
{
// A pin nem volt eleg kozel egyik grouphoz se, igy csinalunk egy uj groupot
groupedLocations[pinKey] = this.pinLocations[pinKey];
}
}Hogyan tudnam ezt a folyamatot leegyszerusiteni?
-
hefike
tag
Sziasztok!js-ben hogyan lehet megoldani a számrendszerek közötti átváltást?konkrétan 10-ből 16-ba szeretném egy text mező értékét kiolvasni majd átváltani 16-os ba.köszi.
-
I02S3F
addikt
Köszönöm szépen Nektek!
-
addikt
-
I02S3F
addikt
Sziasztok! Ha szeretném felülvizsgáltatni a kódom (html+css+js), azt hol tehetem meg? Kaptam a jó gyakorlat kialakítására útmutatót, de a mostani projektben nem lesz időm áttanulmányozni. Majd nyáron.
-
cattus
addikt
válasz hiperFizikus #7699 üzenetére
1. Elnavigálsz erre az oldalra: [link]
2. Beilleszted a kódot a megfelelő helyre.
3. Rányomsz a Save (Mentés) gombra.
4. Az URL-t kimásolod és beilleszted a hozzászólásodba.
5. ???
6. Profit.Angol nélkül meg
nagyon nehezenkb. sehogy sem fogsz előrébb jutni.[ Szerkesztve ]
Do the thing!
-
sztanozs
veterán
válasz hiperFizikus #7699 üzenetére
Angolul pedig tessék megtanulni. Anélkül programozni olyan, mint sajtreszelővel rejszolni. Enyhén szórakoztató, de leginkább fájdalmas.
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
rikxjeee
tag
Már miért kéne írni nekik? Ez egy eszköz, amit használsz ember... Mindegy, kiszálltam én is, tégy amit akarsz.
Új hozzászólás Aktív témák
Hirdetés
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest