Hirdetés

2024. május 20., hétfő

Gyorskeresés

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2014-02-25 10:20:57

LOGOUT.hu

JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)

Összefoglaló kinyitása ▼

Hozzászólások

(#5951) Jim-Y


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 calls

Nem 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 :D)
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.

[ Szerkesztve ]

(#5952) martonx válasza Jim-Y (#5951) üzenetére


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.

Én kérek elnézést!

(#5953) Jim-Y válasza martonx (#5952) üzenetére


Jim-Y
veterán

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 nekem

Való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 :D És ha hiszitek ha nem, az, hogy leírtam már sokat segített, hogy tisztuljon a kép :P

(#5954) Karma válasza Jim-Y (#5953) üzenetére


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).

“All nothings are not equal.”

(#5955) Jim-Y válasza Karma (#5954) üzenetére


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);
}

};

[ Szerkesztve ]

(#5956) Karma válasza Jim-Y (#5955) üzenetére


Karma
félisten

Egyáltalán nem biztos, hogy az általam linkelt jobb vagy hatékonyabb :) Csak hogy kész.

Amúgy ilyet még nem is láttam, generátor alapú middleware?
Milyen frameworköt használsz?

“All nothings are not equal.”

(#5957) Jim-Y válasza Karma (#5956) üzenetére


Jim-Y
veterán

koa,

van koa-ratelimit middleware btw :D https://github.com/koajs/ratelimit

(#5958) Zedz válasza Jim-Y (#5957) üzenetére


Zedz
addikt

Miért épp koa? Csak kíváncsiságból kérdem.

(#5959) Jim-Y válasza Zedz (#5958) üzenetére


Jim-Y
veterán

Szia,

Nem én választottam, cégnél korábban erre esett a választás. Szerintem az ES6-os kompat. miatt esett erre a választás.

(#5960) DNReNTi


DNReNTi
őstag

Igaz még nagyon-nagyon odébb van de ngEurope-ra vagy Angular Connect-re megy valaki innen?

but without you, my life is incomplete, my days are absolutely gray

(#5961) PumpkinSeed válasza DNReNTi (#5960) üzenetére


PumpkinSeed
addikt

Hát az Angular Connect közel van, de én sokkalom érte az árát.

"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán

(#5962) DNReNTi válasza PumpkinSeed (#5961) üzenetére


DNReNTi
őstag

Én se saját kasszából szándékozok menni. :DDD

but without you, my life is incomplete, my days are absolutely gray

(#5963) Speeedfire


Speeedfire
nagyúr

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. :U

Példa illetve abban sem vagyok teljesen biztos, hogy ez így okés

[ Szerkesztve ]

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#5964) sztanozs válasza Speeedfire (#5963) üzenetére


sztanozs
veterán

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.

[ 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...

(#5965) Speeedfire válasza Speeedfire (#5963) üzenetére


Speeedfire
nagyúr

Jól sejtem, hogy valami ilyesmi lesz a megoldás? :U


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. :B

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.

[ Szerkesztve ]

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#5966) Jim-Y válasza Speeedfire (#5965) üzenetére


Jim-Y
veterán

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?

(#5967) sztanozs válasza Speeedfire (#5965) üzenetére


sztanozs
veterán

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%) :D
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();

[ 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...

(#5968) sztanozs válasza Speeedfire (#5965) üzenetére


sztanozs
veterán

Némileg minimalizálva

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...

(#5969) Speeedfire válasza Jim-Y (#5966) üzenetére


Speeedfire
nagyúr

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. :B

Szerk.: Köszi, bár nem tudom, hogy most akkor ez kell-e számomra vagy sem. :B

[ Szerkesztve ]

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#5970) sztanozs válasza Speeedfire (#5969) üzenetére


sztanozs
veterán

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ő).

[ 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...

(#5971) Jim-Y válasza Speeedfire (#5969) üzenetére


Jim-Y
veterán

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/

(#5972) Speeedfire válasza sztanozs (#5970) üzenetére


Speeedfire
nagyúr

Ez a megoldás elég szimpatikus. Megközelítőleg jó eredményt hoz. :K [link]
Köszi. :R


Jim-Y:
Neked is köszönöm, bár a sztanozs féle megoldás mellett döntöttem. Nem pontos, de egyszerű. :R

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#5973) sztanozs válasza Speeedfire (#5972) üzenetére


sztanozs
veterán

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?

[ 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...

(#5974) Speeedfire válasza sztanozs (#5973) üzenetére


Speeedfire
nagyúr

Fentebb is linkeltem. [link]
Nem pont 70/30 a végeredmény. De közelít hozzá, nekem pedig ez a lényeg. :K

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#5975) Jim-Y válasza Speeedfire (#5974) üzenetére


Jim-Y
veterán

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...

(#5976) Sk8erPeter válasza Speeedfire (#5969) üzenetére


Sk8erPeter
nagyúr

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 :D), 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. :D)

Sk8erPeter

(#5977) Speeedfire válasza Sk8erPeter (#5976) üzenetére


Speeedfire
nagyúr

Nem módosítom ezt a részt. :N

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#5978) Sk8erPeter válasza Speeedfire (#5977) üzenetére


Sk8erPeter
nagyúr

Mármint úgy érted, másnak a kódja, amibe nem nyúlhatsz bele? Vagy csak mert csak, jó az vidékre? :DDD

Sk8erPeter

(#5979) Speeedfire válasza Sk8erPeter (#5978) üzenetére


Speeedfire
nagyúr

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.

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#5980) Sk8erPeter válasza Speeedfire (#5979) üzenetére


Sk8erPeter
nagyúr

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. :)

Sk8erPeter

(#5982) tick


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)

Everything that has a beginning... has an end

(#5983) martonx válasza tick (#5982) üzenetére


martonx
veterán

Felteszel valami webes felületet (remélem van ilyen hozzá) ugyanarra a szerverre, ami onnan persze el fogja érni a mongoDB-t, és így a webes felületen keresztül te meg el tudod érni a mongoDB-t. Így szokták csinálni a mysql-el is PhpMyAdmin-nal.

Én kérek elnézést!

(#5984) tick válasza martonx (#5983) üzenetére


tick
aktív tag

Erre irányult volna a kérdés hogy ismertek-e ilyet. Én nem találtam sajna

Everything that has a beginning... has an end

(#5985) martonx válasza tick (#5984) üzenetére


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/

Én kérek elnézést!

(#5986) tick válasza martonx (#5985) üzenetére


tick
aktív tag

Köszönöm, mongo-express látszólag pont azt nyújtja amire szükségem van

Everything that has a beginning... has an end

(#5987) Aureal


Aureal
senior tag

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. :R

fiddle
result

(#5989) zeix


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!

[ Szerkesztve ]

(#5990) Speeedfire


Speeedfire
nagyúr

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? :U

Tudom, használjak es6-ot...meg babel-t....

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#5991) Jim-Y válasza Speeedfire (#5990) üzenetére


Jim-Y
veterán

ES6-hoz nem feltétlen kell babel, ott a node az támogatja már :D

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

https://jsfiddle.net/bbvp5kbx/1/

(#5992) Jim-Y válasza Jim-Y (#5991) üzenetére


Jim-Y
veterán

Na, de csak, hogy legyen ES6-os példa is :)

https://jsfiddle.net/153cqu0g/

(#5993) fordfairlane válasza Speeedfire (#5990) üzenetére


fordfairlane
veterán

kocsi.call(name, ajtok, urtartalom);

helyett

kocsi.call(this, name, ajtok, urtartalom);

vagy akár

kocsi.apply(this, arguments);

[ Szerkesztve ]

x gon' give it to ya

(#5994) Speeedfire válasza Jim-Y (#5991) üzenetére


Speeedfire
nagyúr

ES6-hoz nem feltétlen kell babel, ott a node az támogatja már
Sima html5 app lesz, nincs nodejs. :)

Köszi a példát, ez most nagyon sokat segített. :R


fordfairlane: Köszi neked is. :R

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#5995) Jim-Y válasza Speeedfire (#5994) üzenetére


Jim-Y
veterán

Amúgy mi a gond a babel-el?

(#5996) Speeedfire válasza Jim-Y (#5995) üzenetére


Speeedfire
nagyúr

Nincs semmi, de amíg ilyen kerülőmegoldás van, addig nem akarok es6-ozni.

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#5997) Jim-Y válasza Speeedfire (#5996) üzenetére


Jim-Y
veterán

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 ;)

(#5998) Speeedfire válasza Jim-Y (#5997) üzenetére


Speeedfire
nagyúr

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. :))

Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com

(#5999) -v-


-v-
addikt

Sziasztok,

JS-hez nálam jobban értő (ez kb. bárki :DDD ) 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 :D 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. :R

(#6000) Jim-Y válasza -v- (#5999) üzenetére


Jim-Y
veterán

DevConsole Chrome-ban, Network fül, megkeresed a requestet amit küld a form a backendnek és megnézed a contentet, hogy mit küld. Ha már ott sincs meg minden adat, akkor ott van gond, ami összegyűjti az adatokat. Ennél többet így látatlanban nem lehet segíteni :/

Copyright © 2000-2024 PROHARDVER Informatikai Kft.