- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Mr Dini: Mindent a StreamSharkról!
- gban: Ingyen kellene, de tegnapra
- sh4d0w: Csak a profit - emberélet nem számít
- Klaus Duran: 2025 dude
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- laskr99: Újrakezdem a processzor és videókártya szilícium magok fotózását
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
-
LOGOUT
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
-
Jim-Y
veterán
-
-v-
addikt
Sziasztok,
JS-hez nálam jobban értő (ez kb. bárki
) véleménye érdekelne: adott egy oldal, jsp és sok sok gány és tré JS kód ... submitnál gond van, JS-ből van a submit, ott fut minden, és egy elég reprodukálhatatlan hiba van. Jól töltődnek ki a mező adatok, amikor beviszi az ember, submitnál meg hol jól menti el, hol nem, van amikor csak 1 szar, van amikor több (ez egy nagy táblázat, child row-k meg minden van). Backendre már a szar adat megy, szóval UI oldalon van a gond. Az ilyen reprodukálhatatlan hol jó hol nem jó dolog mindig valami konkurens issue, az a baj kevéssé értek én ehhez a JS-hez, ráadásul bőséges és gány kód van itt
esetleg valakinek mond ez valamit rögtön, hogy valami tipikus hiba? Vagy mit nézzek, hogy lehet ezt jól reprodukálni, kidebugolni? Jó lenne nem nagyon sok időt eltöltenem vele, mielőbb fixálni kellene.
-
Speeedfire
félisten
Az őszi webconf-on még azt mondták, hogy prod-ba nem igazán érdemes használni, max előre forgatva.
Hát a fene tudja, ez a projekt szerintem már kifut így, max a következő.Nem vagyok nagy js-es, időről időre mindig próbálok valamit magamra szedni. Viszont most a játék fejlesztés miatt nagyon kellett ez az extends. Viszont frankón megy.
-
Jim-Y
veterán
válasz
Speeedfire #5996 üzenetére
Pedig mire a vendorok is támogatnák teljes körűen addigra te is megszoknád a használatát. Szerintem a babel az production ready ugyhogy ha ilyesmitől félsz akkor ne tedd
-
Jim-Y
veterán
válasz
Speeedfire #5994 üzenetére
Amúgy mi a gond a babel-el?
-
fordfairlane
veterán
válasz
Speeedfire #5990 üzenetére
kocsi.call(name, ajtok, urtartalom);
helyett
kocsi.call(this, name, ajtok, urtartalom);
vagy akár
kocsi.apply(this, arguments);
-
Jim-Y
veterán
Na, de csak, hogy legyen ES6-os példa is
-
Jim-Y
veterán
válasz
Speeedfire #5990 üzenetére
ES6-hoz nem feltétlen kell babel, ott a node az támogatja már
Egyébként a setNameUrtartalom egy példány metódus amit egy példányon tudsz meghívni, a konstruktorban még nincs példányod így nem is tudod azt meghívni, meg hát értelme sincs. Inkább már ott setteld be normálisan.
+ használj nagy kezdőbetűt a classokhoz
+ a setterek igazodjanak a konvenciokhoz tehát legyen bemeneti argumentum és azt settelje be -
Speeedfire
félisten
Próbálok kicsit játszadozni az osztályokkal, de valami nem kerek. [link]
var kocsi = function(name, ajtok, urtartalom) {
this.name = name;
this.ajtok = ajtok;
this.urtartalom = urtartalom;
this.nameUrtartalom = null;
this.setNameUrtartalom();
};
kocsi.prototype.setNameUrtartalom = function(){
this.nameUrtartalom = this.name + '-' + this.urtartalom;
};
kocsi.prototype.getNameUrtartalom = function(){
return this.nameUrtartalom;
};
kocsi.prototype.getAjtok = function() {
return this.ajtok;
};
kocsi.prototype.getName = function() {
return this.name;
};
kocsi.prototype.geturtartalom = function() {
return this.urtartalom;
};
var cabrio = function(name, ajtok, urtartalom, teto) {
kocsi.call(name, ajtok, urtartalom);
this.teto = teto;
};
cabrio.prototype = Object.create(kocsi.prototype);
cabrio.prototype.constructor = cabrio;
cabrio.prototype.getTeto = function() {
return this.teto;
};
var honda = new cabrio('S2000', 2, 1997, 'puha');
alert(honda.getName());
alert(honda.getNameUrtartalom());
alert(honda.getTeto());Ha nincs set metódus, akkor minden frankón megy. Ellenben ha a szülőben egy set metódust csinálok, akkor gyerek hibával elszáll. Jelen esetben a setNameUrtartalom-ra azt írja, hogy nem funkció. Mit rontok?
Tudom, használjak es6-ot...meg babel-t....
-
zeix
senior tag
Sziasztok!
Lenne egy kis problémám a Javascript-tel.
Van egy egyszerű kódom:
<script type="text/javascript">
function chk1()
{
var name=document.getElementById('name').value;
var date=document.getElementById('date').value;
var dataString='name='+ name +'&date=' + date;
$.ajax({
type: 'post',
url: 'script.php',
data: dataString,
cache: false,
success: function (html) {
$('#msg1').html(html);
}
});
return false;
}</script>html:
<div id="msg1"><form>
<input type="hidden" id="name" value="0">
<input type="hidden" id="date" value="1">
<a class="btn btn-sq btn-primary" onclick="return chk1()" value="Submit">
<br>qwertt</a></form></div>php:
$name = $_POST['name'];
$date = $_POST['date'];
if($name == '1')
{
echo '<form>
<input type="hidden" id="name" value="0">
<input type="hidden" id="date" value="'.$date.'">
<a class="btn btn-sq btn-primary" onclick="return chk1()" value="Submit">
<br>'.$date.'</a></form>
';
}
else {
echo '<form>
<input type="hidden" id="name" value="1">
<input type="hidden" id="date" value="'.$date.'">
<a class="btn btn-sq btn-primary" onclick="return chk1()" value="Submit">
<br>'.$date.'</a></form>';
}
A kérdésem az lenne, hogy hogyan kellene átírni a javascriptet, hogy a html rész (<form>) egy ciklusban íródna ki az oldalra.Köszi!
-
Aureal
őstag
Olyan kérdésem volna, hogy ezen oldal player része alá meg lehetne oldani egy másik m3u8 stream tartalom linkjének befűzését?
Úgy is kérdezhetném, hogy az oldal playerét így online fel tudnám-e használni egy másik csatorna (M3) online streameléséhez?
Végeredményként egy saját html oldal a cél (meg is van), amihez csak ezzel a módosított m3u8 linkel való player beágyazás hiányzik...Sorry hogy bonyolult lett, rövidebben érthetőbben nem tudtam másképp előre hogyan feltenni a kérdést.
-
martonx
veterán
Hát én nem tudom, te hogy néztél egyáltalán szét ez ügyben, mert akár csak a saját dokumentációjukban is felsorolnak egy rakás példát: https://docs.mongodb.org/ecosystem/tools/administration-interfaces/
-
-
tick
aktív tag
Nem teljesen tartozik ide, de hátha. Adott egy csodás cloud környezet ahol a nodejs-t elérem másolni és package-eket feltenni tudok, viszont kívülről a hozzá tartozó mongodb nem érhető el tűzfal miatt. (pl mongo shell-ből) Van esetleg valami npm amivel meg lehet kerülni? Webes mongo shell vagy valami tunneling megoldás? (ssh nem megy sajna)
-
Jim-Y
veterán
Vannak itt angularjs guruk? http://stackoverflow.com/questions/36473502/uibmodal-call-scope-function-from-windowtemplate
-
Sk8erPeter
nagyúr
válasz
Speeedfire #5979 üzenetére
Egyszerűbbnek biztos nem egyszerűbb, mivel így még a fejlesztőkörnyezet autocomplete-je és refaktorálási képességei sem használhatóak ki, ráadásul még hibalehetőséget is visz a kódba, szóval igazából minden szempontból rosszabb, mint ha ezeket a stringeket EGYSZER eltárolnád egy konstansba, aztán onnantól kezdve azokat használnád.
Pl. itt mennyivel értelmesebb és szebb lenne úgy használni a kódban, hogy helperTypes.gun vagy helperTypes.health, mint odahákolni minden alkalommal egy stringet a switch-ekbe. Vagy ha ragaszkodsz az indexeléshez, akkor magukat az indexeket is lehetne tárolni, és pl. helperTypes[GUN] módon felhasználni. De te tudod. -
Speeedfire
félisten
válasz
Sk8erPeter #5978 üzenetére
Vagy csak mert csak, jó az vidékre?
Valami ilyesmi!
Sok json van, és inkább keycatalog szerű kulcsokkal dolgozok. Egyszerűbb és ritkán változik. Ha pedig mégis, akkor gyorsan át tudom ütni a key-eket a forrásban. -
Sk8erPeter
nagyúr
válasz
Speeedfire #5977 üzenetére
Mármint úgy érted, másnak a kódja, amibe nem nyúlhatsz bele? Vagy csak mert csak, jó az vidékre?
-
Speeedfire
félisten
válasz
Sk8erPeter #5976 üzenetére
Nem módosítom ezt a részt.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #5969 üzenetére
Azt még azért mindenképp szépíteni kellene a kódon, hogy ne stringek legyenek ilyen esetben a switch-ben, meg a helperTypes tömbben sem, hanem konstansok (mármint most ez nem keverendő a string konstansokkal, sszóval érted
), hiszen ha mindenhol stringeket használsz fel, az törékennyé teszi a kódot. (Pl. ha később rájössz, hogy azt nem "healt"-nek, hanem "health"-nek kellene írni, és egyik helyen így használod, másik helyen úgy.
)
-
Jim-Y
veterán
válasz
Speeedfire #5974 üzenetére
Az csak azért van mert túl kicsi a minta, minél nagyobb a minta annál jobban kilapolódik. Írd át 100-ról 1000-re, onnan 10.000-re stb. Szépen kilapolódik 70, 30-ra...
-
sztanozs
veterán
válasz
Speeedfire #5972 üzenetére
Miért nem pontos? Pont 70/30 arányban vág, ahogy kérted.
The Math.random() function returns a floating-point, pseudo-random number in the range [0, 1) that is, from 0 (inclusive) up to but not including 1 (exclusive), which you can then scale to your desired range.
Jim-Y Miért kell shuffle, ha amúgy is random elemet választasz ki?
-
Jim-Y
veterán
válasz
Speeedfire #5969 üzenetére
Szerintem teljesen jó, hogy van egy tömbböd, amiben benne vannak a lehetséges itemek, majd összekevered a tömböt, és random választasz belőle.
Valami ilyesmit tudnék elképzelni bétának
https://jsfiddle.net/3421sjs2/
-
sztanozs
veterán
válasz
Speeedfire #5969 üzenetére
function getTypeValue() {
var result = Math.random();
if(result < 0.7) return 0; //fegyver
else return 1; //heal
}
this.helperTypes = [
'gun', 'healt'
];
addHelper: function () {
if (this.game.time.now > this.nextHelper) {
this.nextHelper = this.game.time.now + this.helperRate;
var type = getTypeValue();
this.helpers.push(new Helper(this.countHelper, game, this.player, this.helperTypes[type]));
this.countHelper++;
}
},Btw, amúgy heal (gyógyít/gyógyítás) vagy health (életerő).
-
Speeedfire
félisten
Egy kis html5 játékon dolgozok phaser motorral. A játékban x időközönként feljönnek ikonok amiket ha felvesz a játékos akkor plusz élet vagy fegyvert kap (legalábbis jelenleg, de ezt bővíteném). Fegyverből is van 11 féle.
A lényeg az lenne, hogy amikor egy ilyen ikont feldobok, akkor 30% valószínűséggel legyen élet, a maradék 70%-ban pedig fegyver. Jelenleg csak kiveszem a helperTypes tömbből az egyik elemet és abból lesz az ikon. Vagy fegyver vagy élet. Ezt a Helper osztály konstruktora tovább dolgozza. Kb ennyi lenne a lényeg. De nem tudom a 30/70-et hogy tudnám megoldani.this.helperTypes = [
'gun', 'healt'
];
------------------------------------
addHelper: function () {
if (this.game.time.now > this.nextHelper) {
this.nextHelper = this.game.time.now + this.helperRate;
var type = game.rnd.integerInRange(0,this.helperTypes.length);
this.helpers.push(new Helper(this.countHelper, game, this.player, this.helperTypes[type]));
this.countHelper++;
}
},
------------------------------------
var Helper = function (index, game, player, type) {
var x = game.rnd.integerInRange(game.width/2,game.width-50);
var y = game.rnd.integerInRange(50,game.height-50);
this.game = game;
this.player = player;
this.type = type;
this.helper = game.add.sprite(x, y, type);
this.helper.anchor.set(0.5);
this.helper.name = index.toString();
game.physics.enable(this.helper, Phaser.Physics.ARCADE);
this.helper.scale.setTo(0.25, 0.25);
this.helper.outOfBoundsKill = true;
this.helper.checkWorldBounds = true;
this.helper.body.immovable = false;
game.physics.arcade.velocityFromRotation(this.helper.rotation, -100, this.helper.body.velocity);
};
Helper.prototype = Object.create(Phaser.Sprite.prototype);
Helper.prototype.constructor = Helper;
Helper.prototype.update = function () {
//todo
};
Helper.prototype.useIt = function(gameObj) {
switch(this.type) {
case 'gun':
var index = this.game.rnd.integerInRange(1,9);
gameObj.setWeapon(index);
break;
case 'healt':
var index = this.game.rnd.integerInRange(1,5);
gameObj.healt += index * 10;
break;
default:
//todo
break;
}
};
sztanozs:
Csak gyors összedobtam a példákat, nem figyeltem, hogy pontosan jó-e.Szerk.: Köszi, bár nem tudom, hogy most akkor ez kell-e számomra vagy sem.
-
sztanozs
veterán
válasz
Speeedfire #5965 üzenetére
Némileg minimalizálva
-
sztanozs
veterán
válasz
Speeedfire #5965 üzenetére
Csak egy apróság - ha már az erőforrásigény érdekel. Az aláhúzott rész felesleges:
function getValue() {
var result = Math.floor(Math.random() * 10) + 1;
if(result<=3) {
return 1;
} else if(result>3 && result<=7) {
return 2;
} else {
return 3;
}
}document.getElementById('result').value = getValue();
Amúgy a Math.floor, meg a +1 is felesleges. Ja és nem 7, hanem 8 (30% + 50% = 80%)
function getValue() {
var result = Math.random();
if(result<0.3) {
return 1;
} else if(result<0.8) {
return 2;
} else {
return 3;
}
}document.getElementById('result').value = getValue();
-
Jim-Y
veterán
válasz
Speeedfire #5965 üzenetére
Két külön dolgot csinálsz először, majd most. Az első példában X (100) darab elemből 30 darab egyest, 40db 2-t maradék 3-ast adsz vissza, tehát 1-esből 30% kettesből 40, stb darabod lesz. Ahogy csináltad az nem tartom túl erőforrásigényesnek mert O(n)-es a műveletigény. A második példában generálsz véletlen számokat 10-ig majd a véletlen szám függvényében adsz vissza valamit. Itt nem tudod garantálni hogy melyik milyen arányban legyen mert pszeudorandom lesz a szám. Nem akarod leírni hogy mit akarsz így megoldani hátha van rá jobb/más megoldás?
-
Speeedfire
félisten
válasz
Speeedfire #5963 üzenetére
Jól sejtem, hogy valami ilyesmi lesz a megoldás?
sztanozs:
az x db elem és az x 30%-al jöjjön vissza között van valami korreláció, vagy csak véletlenül használtad ugyanazt a 'változót' két külön dologra?
Véletlen volt.Példa:
Van egy zsák, amiben van körte, alma és szilva. Ha belenyúlok a zsákba, akkor véletlenszerűen kapok egy gyümölcsöt. Én azt szeretném, ha belenyúlok, akkor 30% valószínűséggel legyen alma, 50% valószínűséggel körte és 20% valószínűséggel legyen szilva.
Emiatt gondoltam, hogy felöltöm előre a zsákot és akkor elvileg ezt kapom meg.Utólag gondoltam, hogy lehet nem kellene feltölteni. Hanem kérek egy random számot, ez lenne a százalék és ebből adom meg, hogy az alma, szilva vagy körte. Kicsit fordított logika, de a kód sokkal rövidebb lett.
-
sztanozs
veterán
válasz
Speeedfire #5963 üzenetére
az x db elem és az x 30%-al jöjjön vissza között van valami korreláció, vagy csak véletlenül használtad ugyanazt a 'változót' két külön dologra? Írnál egy Móricka példát esetleg? A JSfiddle számomra nem sikerült túl egyértelműre.
-
Speeedfire
félisten
Sziasztok!
Olyat szeretnék csinálni, hogy adott x db elem, ezek közül akarok visszanyerni egyet. De úgy, hogy pl x 30%-al jöjjön vissza, míg y 50%, a maradék 20%-ban pedig a z.
Erre írtam egy elég "erőforrás" igényes dolgok, de nem tudom lehet-e ezt egyszerűsíteni, avagy sem.
Példa illetve abban sem vagyok teljesen biztos, hogy ez így okés
-
DNReNTi
őstag
válasz
PumpkinSeed #5961 üzenetére
Én se saját kasszából szándékozok menni.
-
DNReNTi
őstag
Igaz még nagyon-nagyon odébb van de ngEurope-ra vagy Angular Connect-re megy valaki innen?
-
Jim-Y
veterán
Köszi,
Hát ezt egy kicsit későn láttam meg, közben előálltam egy béta verzióval saját kútfőből, de le fogom cserélni az általad linkelt elegánsabb megoldásra.
Azért, mert tudom, hogy így illik, a megoldás:
const { AuthError, LoginError } = require('blabla');
const THRESHOLD_OF_TRIES = 3; // 3 tries until drop
const DEFAULT_TIMEOUT = 300000; // 5mins in milliseconds
const cache = {};
module.exports = function * rateLimiter(next) {
const user = this.request.body.email;
if (cache[user] != null && cache[user].tries >= THRESHOLD_OF_TRIES && Date.now() < cache[user].dropUntil) {
this.throw(423); // Locked for 5 mins
}
else if (cache[user] != null && cache[user].tries >= THRESHOLD_OF_TRIES && Date.now() > cache[user].dropUntil) {
delete cache[user];
}
try {
yield next;
}
catch (err) {
if (err instanceof AuthError || err instanceof LoginError) {
if (!cache[user]) {
cache[user] = {
tries: 1,
dropUntil: null
};
}
else {
cache[user].tries++;
if (cache[user].tries >= THRESHOLD_OF_TRIES) {
cache[user].dropUntil = Date.now() + DEFAULT_TIMEOUT;
}
}
this.throw(err);
}
console.error(err);
}
}; -
Karma
félisten
Elég jó kulcsszavakkal kerestél szerintem, nem tudom miért nem találtad meg a kulcsrakész megoldást ("Brute Force Protection" szakasz).
-
Jim-Y
veterán
válasz
martonx #5952 üzenetére
Inkább utóbbi, de kliens oldalon semmit sem elég lekezelni. Közben rájöttem, hogy tényleg kevertem kicsit a szezont a fazonnal, vagy legalábbis két külön dologról van szó.
1: throttling, hány request mehet egyidejűleg - böngészőnek van beépített defaultja -> nem érdekel most engem
2: ddos - ne lehessen floodolni a szervert -> ehhez tűzfal vagy proxyszerver kell, van rá out-of-the-box megoldás -> nem érdekel most
3: "rate limiter" - a user megpróbál belépni, nem megy, megpróbál mégegyszer, nem megy, harmadik próba előtt már várnia kelljen 5 másodpercet -> ez kell nekemValószínűleg nincs erre kész megoldás, meg csinálni magamnak, de nem tűnik vészesnek, így, hogy már rendbe tettem a fejemben a dolgokat
És ha hiszitek ha nem, az, hogy leírtam már sokat segített, hogy tisztuljon a kép
-
martonx
veterán
Kérdés, hogy ez mire kell neked? Ha DDoS elleni védelemnek, akkor arra léteznek speciális tűzfalak, amik kenik-vágják a request limiteket.
Ha csak hülye user elleni védelemnek, akkor elég böngészőben js oldalon lekezelni, hogy fizikailag ne tudjon X-szer rányomni a gombra. -
Jim-Y
veterán
Sziasztok.
Elakadtam és nem tudom, hogy a "problémára" milyen buzzworddel tudnék keresni a neten :/
Rate limitinget szeretnék csinálni nodejs alatt. Például authentikáció -> a user próbálkozik, meghívja az API endpointot de nem sikerült az authentikáció (pl login) ezért újrapróbálkozik. Amit szeretnék hogy pl 3 próba után kelljen várni 5 másodpercet, 5 sikertelen próba után 15mp-et stb..
Magyarán az egy user által kiadott lehetséges requestek számát szeretném limitálni. Vagy backenden csak minden x-ediket feldolgozni, vagy.. hát pont ezaz, hogy nem tudom, hogy ezt hogy szokták csinálni, vagy hogy merre induljak el. Egyáltalán hogy tudnék erre rákeresni?
Próbáltam:
nodejs rate limiting
nodejs request limitation
nodejs limit the number of http request callsNem igazán jártam sikerrel :/
megj: koca módszerrel valami olyasmit csinálnék hogy írok egy middleware-t amiben van egy hashtable, valahogy azonosítom a requesteket, és ha ugyanazon usertől jön threshold + 1 request X mp-n belül (vagy más logika alapján, pl sikertelen login) akkor utána eldobom a többi requestet X mp-ig.
megj2: mintha a throttling lenne a jó buzzword erre, rákeresek...
megj3: most hogy így gondolkozom, lehet ez két külön probléma.
ad1: throttle - limitálni az adott időn belül kiadható requestek számát (jó lehet nekem valamire
)
ad2: login esetén számon kéne tartani a próbálkozások számát, ehhez jó lehet egy middleware, de valahogy azonosítani kéne a user-t. Namost kérdés, hogy a requestet kell-e azonosítani vagy a user-t.
Új hozzászólás Aktív témák
- OHH! Dell Precision 7560 Tervező Vágó Laptop -70% 15,6" i7-11850H 32/1TB NVIDIA A3000 6GB FHD
- Asztali PC , i7 6700K , 1080 Ti 11GB , 32GB DDR4 , 500GB NVME , 500GB HDD
- Asztali PC , R5 8400F , RTX 3070 , 32GB DDR5 , 500GB NVME , 2TB HDD
- Legion Go 1TB
- Lenovo LOQ 15IRX9 - i5 13450HX, 16GB, RTX 4060 8G, 1TB M.2 (Gari: 2027.03.11.)
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 16/32/64GB RAM RX 7700XT 12GB GAMER PC termékbeszámítással
- billentyűzetek - kiárusítás - Logitech, Corsair, ASUS
- Nike Airmax 720 43-as sneaker eladó
- BESZÁMÍTÁS! Dell Latitude 5550 üzleti notebook - Intel Ultra 7 165U 16GB DDR5 RAM 1TB SSD WIN11
- BESZÁMÍTÁS! Samsung Odyssey G9 OLED 240Hz Dual QHD 0,03ms monitor garanciával hibátlan működéssel
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest